var Binaryen = function(Module) {
  Module = Module || {};

var Module;
if (!Module) Module = (typeof Binaryen !== "undefined" ? Binaryen : null) || {};
var moduleOverrides = {};
for (var key in Module) {
 if (Module.hasOwnProperty(key)) {
  moduleOverrides[key] = Module[key];
 }
}
var ENVIRONMENT_IS_WEB = false;
var ENVIRONMENT_IS_WORKER = false;
var ENVIRONMENT_IS_NODE = false;
var ENVIRONMENT_IS_SHELL = false;
if (Module["ENVIRONMENT"]) {
 if (Module["ENVIRONMENT"] === "WEB") {
  ENVIRONMENT_IS_WEB = true;
 } else if (Module["ENVIRONMENT"] === "WORKER") {
  ENVIRONMENT_IS_WORKER = true;
 } else if (Module["ENVIRONMENT"] === "NODE") {
  ENVIRONMENT_IS_NODE = true;
 } else if (Module["ENVIRONMENT"] === "SHELL") {
  ENVIRONMENT_IS_SHELL = true;
 } else {
  throw new Error("The provided Module['ENVIRONMENT'] value is not valid. It must be one of: WEB|WORKER|NODE|SHELL.");
 }
} else {
 ENVIRONMENT_IS_WEB = typeof window === "object";
 ENVIRONMENT_IS_WORKER = typeof importScripts === "function";
 ENVIRONMENT_IS_NODE = typeof process === "object" && typeof require === "function" && !ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_WORKER;
 ENVIRONMENT_IS_SHELL = !ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_NODE && !ENVIRONMENT_IS_WORKER;
}
if (ENVIRONMENT_IS_NODE) {
 if (!Module["print"]) Module["print"] = console.log;
 if (!Module["printErr"]) Module["printErr"] = console.warn;
 var nodeFS;
 var nodePath;
 Module["read"] = function read(filename, binary) {
  if (!nodeFS) nodeFS = require("fs");
  if (!nodePath) nodePath = require("path");
  filename = nodePath["normalize"](filename);
  var ret = nodeFS["readFileSync"](filename);
  return binary ? ret : ret.toString();
 };
 Module["readBinary"] = function readBinary(filename) {
  var ret = Module["read"](filename, true);
  if (!ret.buffer) {
   ret = new Uint8Array(ret);
  }
  assert(ret.buffer);
  return ret;
 };
 Module["load"] = function load(f) {
  globalEval(read(f));
 };
 if (!Module["thisProgram"]) {
  if (process["argv"].length > 1) {
   Module["thisProgram"] = process["argv"][1].replace(/\\/g, "/");
  } else {
   Module["thisProgram"] = "unknown-program";
  }
 }
 Module["arguments"] = process["argv"].slice(2);
 if (typeof module !== "undefined") {
  module["exports"] = Module;
 }
 process["on"]("uncaughtException", (function(ex) {
  if (!(ex instanceof ExitStatus)) {
   throw ex;
  }
 }));
 Module["inspect"] = (function() {
  return "[Emscripten Module object]";
 });
} else if (ENVIRONMENT_IS_SHELL) {
 if (!Module["print"]) Module["print"] = print;
 if (typeof printErr != "undefined") Module["printErr"] = printErr;
 if (typeof read != "undefined") {
  Module["read"] = read;
 } else {
  Module["read"] = function read() {
   throw "no read() available (jsc?)";
  };
 }
 Module["readBinary"] = function readBinary(f) {
  if (typeof readbuffer === "function") {
   return new Uint8Array(readbuffer(f));
  }
  var data = read(f, "binary");
  assert(typeof data === "object");
  return data;
 };
 if (typeof scriptArgs != "undefined") {
  Module["arguments"] = scriptArgs;
 } else if (typeof arguments != "undefined") {
  Module["arguments"] = arguments;
 }
} else if (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) {
 Module["read"] = function read(url) {
  var xhr = new XMLHttpRequest;
  xhr.open("GET", url, false);
  xhr.send(null);
  return xhr.responseText;
 };
 Module["readAsync"] = function readAsync(url, onload, onerror) {
  var xhr = new XMLHttpRequest;
  xhr.open("GET", url, true);
  xhr.responseType = "arraybuffer";
  xhr.onload = function xhr_onload() {
   if (xhr.status == 200 || xhr.status == 0 && xhr.response) {
    onload(xhr.response);
   } else {
    onerror();
   }
  };
  xhr.onerror = onerror;
  xhr.send(null);
 };
 if (typeof arguments != "undefined") {
  Module["arguments"] = arguments;
 }
 if (typeof console !== "undefined") {
  if (!Module["print"]) Module["print"] = function print(x) {
   console.log(x);
  };
  if (!Module["printErr"]) Module["printErr"] = function printErr(x) {
   console.warn(x);
  };
 } else {
  var TRY_USE_DUMP = false;
  if (!Module["print"]) Module["print"] = TRY_USE_DUMP && typeof dump !== "undefined" ? (function(x) {
   dump(x);
  }) : (function(x) {});
 }
 if (ENVIRONMENT_IS_WORKER) {
  Module["load"] = importScripts;
 }
 if (typeof Module["setWindowTitle"] === "undefined") {
  Module["setWindowTitle"] = (function(title) {
   document.title = title;
  });
 }
} else {
 throw "Unknown runtime environment. Where are we?";
}
function globalEval(x) {
 eval.call(null, x);
}
if (!Module["load"] && Module["read"]) {
 Module["load"] = function load(f) {
  globalEval(Module["read"](f));
 };
}
if (!Module["print"]) {
 Module["print"] = (function() {});
}
if (!Module["printErr"]) {
 Module["printErr"] = Module["print"];
}
if (!Module["arguments"]) {
 Module["arguments"] = [];
}
if (!Module["thisProgram"]) {
 Module["thisProgram"] = "./this.program";
}
Module.print = Module["print"];
Module.printErr = Module["printErr"];
Module["preRun"] = [];
Module["postRun"] = [];
for (var key in moduleOverrides) {
 if (moduleOverrides.hasOwnProperty(key)) {
  Module[key] = moduleOverrides[key];
 }
}
moduleOverrides = undefined;
var Runtime = {
 setTempRet0: (function(value) {
  tempRet0 = value;
 }),
 getTempRet0: (function() {
  return tempRet0;
 }),
 stackSave: (function() {
  return STACKTOP;
 }),
 stackRestore: (function(stackTop) {
  STACKTOP = stackTop;
 }),
 getNativeTypeSize: (function(type) {
  switch (type) {
  case "i1":
  case "i8":
   return 1;
  case "i16":
   return 2;
  case "i32":
   return 4;
  case "i64":
   return 8;
  case "float":
   return 4;
  case "double":
   return 8;
  default:
   {
    if (type[type.length - 1] === "*") {
     return Runtime.QUANTUM_SIZE;
    } else if (type[0] === "i") {
     var bits = parseInt(type.substr(1));
     assert(bits % 8 === 0);
     return bits / 8;
    } else {
     return 0;
    }
   }
  }
 }),
 getNativeFieldSize: (function(type) {
  return Math.max(Runtime.getNativeTypeSize(type), Runtime.QUANTUM_SIZE);
 }),
 STACK_ALIGN: 16,
 prepVararg: (function(ptr, type) {
  if (type === "double" || type === "i64") {
   if (ptr & 7) {
    assert((ptr & 7) === 4);
    ptr += 4;
   }
  } else {
   assert((ptr & 3) === 0);
  }
  return ptr;
 }),
 getAlignSize: (function(type, size, vararg) {
  if (!vararg && (type == "i64" || type == "double")) return 8;
  if (!type) return Math.min(size, 8);
  return Math.min(size || (type ? Runtime.getNativeFieldSize(type) : 0), Runtime.QUANTUM_SIZE);
 }),
 dynCall: (function(sig, ptr, args) {
  if (args && args.length) {
   return Module["dynCall_" + sig].apply(null, [ ptr ].concat(args));
  } else {
   return Module["dynCall_" + sig].call(null, ptr);
  }
 }),
 functionPointers: [],
 addFunction: (function(func) {
  for (var i = 0; i < Runtime.functionPointers.length; i++) {
   if (!Runtime.functionPointers[i]) {
    Runtime.functionPointers[i] = func;
    return 2 * (1 + i);
   }
  }
  throw "Finished up all reserved function pointers. Use a higher value for RESERVED_FUNCTION_POINTERS.";
 }),
 removeFunction: (function(index) {
  Runtime.functionPointers[(index - 2) / 2] = null;
 }),
 warnOnce: (function(text) {
  if (!Runtime.warnOnce.shown) Runtime.warnOnce.shown = {};
  if (!Runtime.warnOnce.shown[text]) {
   Runtime.warnOnce.shown[text] = 1;
   Module.printErr(text);
  }
 }),
 funcWrappers: {},
 getFuncWrapper: (function(func, sig) {
  assert(sig);
  if (!Runtime.funcWrappers[sig]) {
   Runtime.funcWrappers[sig] = {};
  }
  var sigCache = Runtime.funcWrappers[sig];
  if (!sigCache[func]) {
   if (sig.length === 1) {
    sigCache[func] = function dynCall_wrapper() {
     return Runtime.dynCall(sig, func);
    };
   } else if (sig.length === 2) {
    sigCache[func] = function dynCall_wrapper(arg) {
     return Runtime.dynCall(sig, func, [ arg ]);
    };
   } else {
    sigCache[func] = function dynCall_wrapper() {
     return Runtime.dynCall(sig, func, Array.prototype.slice.call(arguments));
    };
   }
  }
  return sigCache[func];
 }),
 getCompilerSetting: (function(name) {
  throw "You must build with -s RETAIN_COMPILER_SETTINGS=1 for Runtime.getCompilerSetting or emscripten_get_compiler_setting to work";
 }),
 stackAlloc: (function(size) {
  var ret = STACKTOP;
  STACKTOP = STACKTOP + size | 0;
  STACKTOP = STACKTOP + 15 & -16;
  return ret;
 }),
 staticAlloc: (function(size) {
  var ret = STATICTOP;
  STATICTOP = STATICTOP + size | 0;
  STATICTOP = STATICTOP + 15 & -16;
  return ret;
 }),
 dynamicAlloc: (function(size) {
  var ret = DYNAMICTOP;
  DYNAMICTOP = DYNAMICTOP + size | 0;
  DYNAMICTOP = DYNAMICTOP + 15 & -16;
  if (DYNAMICTOP >= TOTAL_MEMORY) {
   var success = enlargeMemory();
   if (!success) {
    DYNAMICTOP = ret;
    return 0;
   }
  }
  return ret;
 }),
 alignMemory: (function(size, quantum) {
  var ret = size = Math.ceil(size / (quantum ? quantum : 16)) * (quantum ? quantum : 16);
  return ret;
 }),
 makeBigInt: (function(low, high, unsigned) {
  var ret = unsigned ? +(low >>> 0) + +(high >>> 0) * +4294967296 : +(low >>> 0) + +(high | 0) * +4294967296;
  return ret;
 }),
 GLOBAL_BASE: 8,
 QUANTUM_SIZE: 4,
 __dummy__: 0
};
Module["Runtime"] = Runtime;
var ABORT = false;
var EXITSTATUS = 0;
function assert(condition, text) {
 if (!condition) {
  abort("Assertion failed: " + text);
 }
}
function getCFunc(ident) {
 var func = Module["_" + ident];
 if (!func) {
  try {
   func = eval("_" + ident);
  } catch (e) {}
 }
 assert(func, "Cannot call unknown function " + ident + " (perhaps LLVM optimizations or closure removed it?)");
 return func;
}
var cwrap, ccall;
((function() {
 var JSfuncs = {
  "stackSave": (function() {
   Runtime.stackSave();
  }),
  "stackRestore": (function() {
   Runtime.stackRestore();
  }),
  "arrayToC": (function(arr) {
   var ret = Runtime.stackAlloc(arr.length);
   writeArrayToMemory(arr, ret);
   return ret;
  }),
  "stringToC": (function(str) {
   var ret = 0;
   if (str !== null && str !== undefined && str !== 0) {
    ret = Runtime.stackAlloc((str.length << 2) + 1);
    writeStringToMemory(str, ret);
   }
   return ret;
  })
 };
 var toC = {
  "string": JSfuncs["stringToC"],
  "array": JSfuncs["arrayToC"]
 };
 ccall = function ccallFunc(ident, returnType, argTypes, args, opts) {
  var func = getCFunc(ident);
  var cArgs = [];
  var stack = 0;
  if (args) {
   for (var i = 0; i < args.length; i++) {
    var converter = toC[argTypes[i]];
    if (converter) {
     if (stack === 0) stack = Runtime.stackSave();
     cArgs[i] = converter(args[i]);
    } else {
     cArgs[i] = args[i];
    }
   }
  }
  var ret = func.apply(null, cArgs);
  if (returnType === "string") ret = Pointer_stringify(ret);
  if (stack !== 0) {
   if (opts && opts.async) {
    EmterpreterAsync.asyncFinalizers.push((function() {
     Runtime.stackRestore(stack);
    }));
    return;
   }
   Runtime.stackRestore(stack);
  }
  return ret;
 };
 var sourceRegex = /^function\s*[a-zA-Z$_0-9]*\s*\(([^)]*)\)\s*{\s*([^*]*?)[\s;]*(?:return\s*(.*?)[;\s]*)?}$/;
 function parseJSFunc(jsfunc) {
  var parsed = jsfunc.toString().match(sourceRegex).slice(1);
  return {
   arguments: parsed[0],
   body: parsed[1],
   returnValue: parsed[2]
  };
 }
 var JSsource = null;
 function ensureJSsource() {
  if (!JSsource) {
   JSsource = {};
   for (var fun in JSfuncs) {
    if (JSfuncs.hasOwnProperty(fun)) {
     JSsource[fun] = parseJSFunc(JSfuncs[fun]);
    }
   }
  }
 }
 cwrap = function cwrap(ident, returnType, argTypes) {
  argTypes = argTypes || [];
  var cfunc = getCFunc(ident);
  var numericArgs = argTypes.every((function(type) {
   return type === "number";
  }));
  var numericRet = returnType !== "string";
  if (numericRet && numericArgs) {
   return cfunc;
  }
  var argNames = argTypes.map((function(x, i) {
   return "$" + i;
  }));
  var funcstr = "(function(" + argNames.join(",") + ") {";
  var nargs = argTypes.length;
  if (!numericArgs) {
   ensureJSsource();
   funcstr += "var stack = " + JSsource["stackSave"].body + ";";
   for (var i = 0; i < nargs; i++) {
    var arg = argNames[i], type = argTypes[i];
    if (type === "number") continue;
    var convertCode = JSsource[type + "ToC"];
    funcstr += "var " + convertCode.arguments + " = " + arg + ";";
    funcstr += convertCode.body + ";";
    funcstr += arg + "=(" + convertCode.returnValue + ");";
   }
  }
  var cfuncname = parseJSFunc((function() {
   return cfunc;
  })).returnValue;
  funcstr += "var ret = " + cfuncname + "(" + argNames.join(",") + ");";
  if (!numericRet) {
   var strgfy = parseJSFunc((function() {
    return Pointer_stringify;
   })).returnValue;
   funcstr += "ret = " + strgfy + "(ret);";
  }
  if (!numericArgs) {
   ensureJSsource();
   funcstr += JSsource["stackRestore"].body.replace("()", "(stack)") + ";";
  }
  funcstr += "return ret})";
  return eval(funcstr);
 };
}))();
Module["ccall"] = ccall;
Module["cwrap"] = cwrap;
function setValue(ptr, value, type, noSafe) {
 type = type || "i8";
 if (type.charAt(type.length - 1) === "*") type = "i32";
 switch (type) {
 case "i1":
  HEAP8[ptr >> 0] = value;
  break;
 case "i8":
  HEAP8[ptr >> 0] = value;
  break;
 case "i16":
  HEAP16[ptr >> 1] = value;
  break;
 case "i32":
  HEAP32[ptr >> 2] = value;
  break;
 case "i64":
  tempI64 = [ value >>> 0, (tempDouble = value, +Math_abs(tempDouble) >= +1 ? tempDouble > +0 ? (Math_min(+Math_floor(tempDouble / +4294967296), +4294967295) | 0) >>> 0 : ~~+Math_ceil((tempDouble - +(~~tempDouble >>> 0)) / +4294967296) >>> 0 : 0) ], HEAP32[ptr >> 2] = tempI64[0], HEAP32[ptr + 4 >> 2] = tempI64[1];
  break;
 case "float":
  HEAPF32[ptr >> 2] = value;
  break;
 case "double":
  HEAPF64[ptr >> 3] = value;
  break;
 default:
  abort("invalid type for setValue: " + type);
 }
}
Module["setValue"] = setValue;
function getValue(ptr, type, noSafe) {
 type = type || "i8";
 if (type.charAt(type.length - 1) === "*") type = "i32";
 switch (type) {
 case "i1":
  return HEAP8[ptr >> 0];
 case "i8":
  return HEAP8[ptr >> 0];
 case "i16":
  return HEAP16[ptr >> 1];
 case "i32":
  return HEAP32[ptr >> 2];
 case "i64":
  return HEAP32[ptr >> 2];
 case "float":
  return HEAPF32[ptr >> 2];
 case "double":
  return HEAPF64[ptr >> 3];
 default:
  abort("invalid type for setValue: " + type);
 }
 return null;
}
Module["getValue"] = getValue;
var ALLOC_NORMAL = 0;
var ALLOC_STACK = 1;
var ALLOC_STATIC = 2;
var ALLOC_DYNAMIC = 3;
var ALLOC_NONE = 4;
Module["ALLOC_NORMAL"] = ALLOC_NORMAL;
Module["ALLOC_STACK"] = ALLOC_STACK;
Module["ALLOC_STATIC"] = ALLOC_STATIC;
Module["ALLOC_DYNAMIC"] = ALLOC_DYNAMIC;
Module["ALLOC_NONE"] = ALLOC_NONE;
function allocate(slab, types, allocator, ptr) {
 var zeroinit, size;
 if (typeof slab === "number") {
  zeroinit = true;
  size = slab;
 } else {
  zeroinit = false;
  size = slab.length;
 }
 var singleType = typeof types === "string" ? types : null;
 var ret;
 if (allocator == ALLOC_NONE) {
  ret = ptr;
 } else {
  ret = [ typeof _malloc === "function" ? _malloc : Runtime.staticAlloc, Runtime.stackAlloc, Runtime.staticAlloc, Runtime.dynamicAlloc ][allocator === undefined ? ALLOC_STATIC : allocator](Math.max(size, singleType ? 1 : types.length));
 }
 if (zeroinit) {
  var ptr = ret, stop;
  assert((ret & 3) == 0);
  stop = ret + (size & ~3);
  for (; ptr < stop; ptr += 4) {
   HEAP32[ptr >> 2] = 0;
  }
  stop = ret + size;
  while (ptr < stop) {
   HEAP8[ptr++ >> 0] = 0;
  }
  return ret;
 }
 if (singleType === "i8") {
  if (slab.subarray || slab.slice) {
   HEAPU8.set(slab, ret);
  } else {
   HEAPU8.set(new Uint8Array(slab), ret);
  }
  return ret;
 }
 var i = 0, type, typeSize, previousType;
 while (i < size) {
  var curr = slab[i];
  if (typeof curr === "function") {
   curr = Runtime.getFunctionIndex(curr);
  }
  type = singleType || types[i];
  if (type === 0) {
   i++;
   continue;
  }
  if (type == "i64") type = "i32";
  setValue(ret + i, curr, type);
  if (previousType !== type) {
   typeSize = Runtime.getNativeTypeSize(type);
   previousType = type;
  }
  i += typeSize;
 }
 return ret;
}
Module["allocate"] = allocate;
function getMemory(size) {
 if (!staticSealed) return Runtime.staticAlloc(size);
 if (typeof _sbrk !== "undefined" && !_sbrk.called || !runtimeInitialized) return Runtime.dynamicAlloc(size);
 return _malloc(size);
}
Module["getMemory"] = getMemory;
function Pointer_stringify(ptr, length) {
 if (length === 0 || !ptr) return "";
 var hasUtf = 0;
 var t;
 var i = 0;
 while (1) {
  t = HEAPU8[ptr + i >> 0];
  hasUtf |= t;
  if (t == 0 && !length) break;
  i++;
  if (length && i == length) break;
 }
 if (!length) length = i;
 var ret = "";
 if (hasUtf < 128) {
  var MAX_CHUNK = 1024;
  var curr;
  while (length > 0) {
   curr = String.fromCharCode.apply(String, HEAPU8.subarray(ptr, ptr + Math.min(length, MAX_CHUNK)));
   ret = ret ? ret + curr : curr;
   ptr += MAX_CHUNK;
   length -= MAX_CHUNK;
  }
  return ret;
 }
 return Module["UTF8ToString"](ptr);
}
Module["Pointer_stringify"] = Pointer_stringify;
function AsciiToString(ptr) {
 var str = "";
 while (1) {
  var ch = HEAP8[ptr++ >> 0];
  if (!ch) return str;
  str += String.fromCharCode(ch);
 }
}
Module["AsciiToString"] = AsciiToString;
function stringToAscii(str, outPtr) {
 return writeAsciiToMemory(str, outPtr, false);
}
Module["stringToAscii"] = stringToAscii;
function UTF8ArrayToString(u8Array, idx) {
 var u0, u1, u2, u3, u4, u5;
 var str = "";
 while (1) {
  u0 = u8Array[idx++];
  if (!u0) return str;
  if (!(u0 & 128)) {
   str += String.fromCharCode(u0);
   continue;
  }
  u1 = u8Array[idx++] & 63;
  if ((u0 & 224) == 192) {
   str += String.fromCharCode((u0 & 31) << 6 | u1);
   continue;
  }
  u2 = u8Array[idx++] & 63;
  if ((u0 & 240) == 224) {
   u0 = (u0 & 15) << 12 | u1 << 6 | u2;
  } else {
   u3 = u8Array[idx++] & 63;
   if ((u0 & 248) == 240) {
    u0 = (u0 & 7) << 18 | u1 << 12 | u2 << 6 | u3;
   } else {
    u4 = u8Array[idx++] & 63;
    if ((u0 & 252) == 248) {
     u0 = (u0 & 3) << 24 | u1 << 18 | u2 << 12 | u3 << 6 | u4;
    } else {
     u5 = u8Array[idx++] & 63;
     u0 = (u0 & 1) << 30 | u1 << 24 | u2 << 18 | u3 << 12 | u4 << 6 | u5;
    }
   }
  }
  if (u0 < 65536) {
   str += String.fromCharCode(u0);
  } else {
   var ch = u0 - 65536;
   str += String.fromCharCode(55296 | ch >> 10, 56320 | ch & 1023);
  }
 }
}
Module["UTF8ArrayToString"] = UTF8ArrayToString;
function UTF8ToString(ptr) {
 return UTF8ArrayToString(HEAPU8, ptr);
}
Module["UTF8ToString"] = UTF8ToString;
function stringToUTF8Array(str, outU8Array, outIdx, maxBytesToWrite) {
 if (!(maxBytesToWrite > 0)) return 0;
 var startIdx = outIdx;
 var endIdx = outIdx + maxBytesToWrite - 1;
 for (var i = 0; i < str.length; ++i) {
  var u = str.charCodeAt(i);
  if (u >= 55296 && u <= 57343) u = 65536 + ((u & 1023) << 10) | str.charCodeAt(++i) & 1023;
  if (u <= 127) {
   if (outIdx >= endIdx) break;
   outU8Array[outIdx++] = u;
  } else if (u <= 2047) {
   if (outIdx + 1 >= endIdx) break;
   outU8Array[outIdx++] = 192 | u >> 6;
   outU8Array[outIdx++] = 128 | u & 63;
  } else if (u <= 65535) {
   if (outIdx + 2 >= endIdx) break;
   outU8Array[outIdx++] = 224 | u >> 12;
   outU8Array[outIdx++] = 128 | u >> 6 & 63;
   outU8Array[outIdx++] = 128 | u & 63;
  } else if (u <= 2097151) {
   if (outIdx + 3 >= endIdx) break;
   outU8Array[outIdx++] = 240 | u >> 18;
   outU8Array[outIdx++] = 128 | u >> 12 & 63;
   outU8Array[outIdx++] = 128 | u >> 6 & 63;
   outU8Array[outIdx++] = 128 | u & 63;
  } else if (u <= 67108863) {
   if (outIdx + 4 >= endIdx) break;
   outU8Array[outIdx++] = 248 | u >> 24;
   outU8Array[outIdx++] = 128 | u >> 18 & 63;
   outU8Array[outIdx++] = 128 | u >> 12 & 63;
   outU8Array[outIdx++] = 128 | u >> 6 & 63;
   outU8Array[outIdx++] = 128 | u & 63;
  } else {
   if (outIdx + 5 >= endIdx) break;
   outU8Array[outIdx++] = 252 | u >> 30;
   outU8Array[outIdx++] = 128 | u >> 24 & 63;
   outU8Array[outIdx++] = 128 | u >> 18 & 63;
   outU8Array[outIdx++] = 128 | u >> 12 & 63;
   outU8Array[outIdx++] = 128 | u >> 6 & 63;
   outU8Array[outIdx++] = 128 | u & 63;
  }
 }
 outU8Array[outIdx] = 0;
 return outIdx - startIdx;
}
Module["stringToUTF8Array"] = stringToUTF8Array;
function stringToUTF8(str, outPtr, maxBytesToWrite) {
 return stringToUTF8Array(str, HEAPU8, outPtr, maxBytesToWrite);
}
Module["stringToUTF8"] = stringToUTF8;
function lengthBytesUTF8(str) {
 var len = 0;
 for (var i = 0; i < str.length; ++i) {
  var u = str.charCodeAt(i);
  if (u >= 55296 && u <= 57343) u = 65536 + ((u & 1023) << 10) | str.charCodeAt(++i) & 1023;
  if (u <= 127) {
   ++len;
  } else if (u <= 2047) {
   len += 2;
  } else if (u <= 65535) {
   len += 3;
  } else if (u <= 2097151) {
   len += 4;
  } else if (u <= 67108863) {
   len += 5;
  } else {
   len += 6;
  }
 }
 return len;
}
Module["lengthBytesUTF8"] = lengthBytesUTF8;
function demangle(func) {
 var hasLibcxxabi = !!Module["___cxa_demangle"];
 if (hasLibcxxabi) {
  try {
   var buf = _malloc(func.length);
   writeStringToMemory(func.substr(1), buf);
   var status = _malloc(4);
   var ret = Module["___cxa_demangle"](buf, 0, 0, status);
   if (getValue(status, "i32") === 0 && ret) {
    return Pointer_stringify(ret);
   }
  } catch (e) {} finally {
   if (buf) _free(buf);
   if (status) _free(status);
   if (ret) _free(ret);
  }
  return func;
 }
 Runtime.warnOnce("warning: build with  -s DEMANGLE_SUPPORT=1  to link in libcxxabi demangling");
 return func;
}
function demangleAll(text) {
 return text.replace(/__Z[\w\d_]+/g, (function(x) {
  var y = demangle(x);
  return x === y ? x : x + " [" + y + "]";
 }));
}
function jsStackTrace() {
 var err = new Error;
 if (!err.stack) {
  try {
   throw new Error(0);
  } catch (e) {
   err = e;
  }
  if (!err.stack) {
   return "(no stack trace available)";
  }
 }
 return err.stack.toString();
}
function stackTrace() {
 var js = jsStackTrace();
 if (Module["extraStackTrace"]) js += "\n" + Module["extraStackTrace"]();
 return demangleAll(js);
}
Module["stackTrace"] = stackTrace;
var PAGE_SIZE = 4096;
function alignMemoryPage(x) {
 if (x % 4096 > 0) {
  x += 4096 - x % 4096;
 }
 return x;
}
var HEAP;
var buffer;
var HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64;
function updateGlobalBuffer(buf) {
 Module["buffer"] = buffer = buf;
}
function updateGlobalBufferViews() {
 Module["HEAP8"] = HEAP8 = new Int8Array(buffer);
 Module["HEAP16"] = HEAP16 = new Int16Array(buffer);
 Module["HEAP32"] = HEAP32 = new Int32Array(buffer);
 Module["HEAPU8"] = HEAPU8 = new Uint8Array(buffer);
 Module["HEAPU16"] = HEAPU16 = new Uint16Array(buffer);
 Module["HEAPU32"] = HEAPU32 = new Uint32Array(buffer);
 Module["HEAPF32"] = HEAPF32 = new Float32Array(buffer);
 Module["HEAPF64"] = HEAPF64 = new Float64Array(buffer);
}
var STATIC_BASE = 0, STATICTOP = 0, staticSealed = false;
var STACK_BASE = 0, STACKTOP = 0, STACK_MAX = 0;
var DYNAMIC_BASE = 0, DYNAMICTOP = 0;
if (!Module["reallocBuffer"]) Module["reallocBuffer"] = (function(size) {
 var ret;
 try {
  if (ArrayBuffer.transfer) {
   ret = ArrayBuffer.transfer(buffer, size);
  } else {
   var oldHEAP8 = HEAP8;
   ret = new ArrayBuffer(size);
   var temp = new Int8Array(ret);
   temp.set(oldHEAP8);
  }
 } catch (e) {
  return false;
 }
 var success = _emscripten_replace_memory(ret);
 if (!success) return false;
 return ret;
});
function enlargeMemory() {
 var LIMIT = Math.pow(2, 31);
 if (DYNAMICTOP >= LIMIT) return false;
 while (TOTAL_MEMORY <= DYNAMICTOP) {
  if (TOTAL_MEMORY < LIMIT / 2) {
   TOTAL_MEMORY = alignMemoryPage(2 * TOTAL_MEMORY);
  } else {
   var last = TOTAL_MEMORY;
   TOTAL_MEMORY = alignMemoryPage((3 * TOTAL_MEMORY + LIMIT) / 4);
   if (TOTAL_MEMORY <= last) return false;
  }
 }
 TOTAL_MEMORY = Math.max(TOTAL_MEMORY, 16 * 1024 * 1024);
 if (TOTAL_MEMORY >= LIMIT) return false;
 var replacement = Module["reallocBuffer"](TOTAL_MEMORY);
 if (!replacement) return false;
 updateGlobalBuffer(replacement);
 updateGlobalBufferViews();
 return true;
}
var byteLength;
try {
 byteLength = Function.prototype.call.bind(Object.getOwnPropertyDescriptor(ArrayBuffer.prototype, "byteLength").get);
 byteLength(new ArrayBuffer(4));
} catch (e) {
 byteLength = (function(buffer) {
  return buffer.byteLength;
 });
}
var TOTAL_STACK = Module["TOTAL_STACK"] || 5242880;
var TOTAL_MEMORY = Module["TOTAL_MEMORY"] || 16777216;
var totalMemory = 64 * 1024;
while (totalMemory < TOTAL_MEMORY || totalMemory < 2 * TOTAL_STACK) {
 if (totalMemory < 16 * 1024 * 1024) {
  totalMemory *= 2;
 } else {
  totalMemory += 16 * 1024 * 1024;
 }
}
totalMemory = Math.max(totalMemory, 16 * 1024 * 1024);
if (totalMemory !== TOTAL_MEMORY) {
 TOTAL_MEMORY = totalMemory;
}
if (Module["buffer"]) {
 buffer = Module["buffer"];
} else {
 buffer = new ArrayBuffer(TOTAL_MEMORY);
}
updateGlobalBufferViews();
HEAP32[0] = 255;
if (HEAPU8[0] !== 255 || HEAPU8[3] !== 0) throw "Typed arrays 2 must be run on a little-endian system";
Module["HEAP"] = HEAP;
Module["buffer"] = buffer;
Module["HEAP8"] = HEAP8;
Module["HEAP16"] = HEAP16;
Module["HEAP32"] = HEAP32;
Module["HEAPU8"] = HEAPU8;
Module["HEAPU16"] = HEAPU16;
Module["HEAPU32"] = HEAPU32;
Module["HEAPF32"] = HEAPF32;
Module["HEAPF64"] = HEAPF64;
function callRuntimeCallbacks(callbacks) {
 while (callbacks.length > 0) {
  var callback = callbacks.shift();
  if (typeof callback == "function") {
   callback();
   continue;
  }
  var func = callback.func;
  if (typeof func === "number") {
   if (callback.arg === undefined) {
    Runtime.dynCall("v", func);
   } else {
    Runtime.dynCall("vi", func, [ callback.arg ]);
   }
  } else {
   func(callback.arg === undefined ? null : callback.arg);
  }
 }
}
var __ATPRERUN__ = [];
var __ATINIT__ = [];
var __ATMAIN__ = [];
var __ATEXIT__ = [];
var __ATPOSTRUN__ = [];
var runtimeInitialized = false;
var runtimeExited = false;
function preRun() {
 if (Module["preRun"]) {
  if (typeof Module["preRun"] == "function") Module["preRun"] = [ Module["preRun"] ];
  while (Module["preRun"].length) {
   addOnPreRun(Module["preRun"].shift());
  }
 }
 callRuntimeCallbacks(__ATPRERUN__);
}
function ensureInitRuntime() {
 if (runtimeInitialized) return;
 runtimeInitialized = true;
 callRuntimeCallbacks(__ATINIT__);
}
function preMain() {
 callRuntimeCallbacks(__ATMAIN__);
}
function exitRuntime() {
 callRuntimeCallbacks(__ATEXIT__);
 runtimeExited = true;
}
function postRun() {
 if (Module["postRun"]) {
  if (typeof Module["postRun"] == "function") Module["postRun"] = [ Module["postRun"] ];
  while (Module["postRun"].length) {
   addOnPostRun(Module["postRun"].shift());
  }
 }
 callRuntimeCallbacks(__ATPOSTRUN__);
}
function addOnPreRun(cb) {
 __ATPRERUN__.unshift(cb);
}
Module["addOnPreRun"] = addOnPreRun;
function addOnInit(cb) {
 __ATINIT__.unshift(cb);
}
Module["addOnInit"] = addOnInit;
function addOnPreMain(cb) {
 __ATMAIN__.unshift(cb);
}
Module["addOnPreMain"] = addOnPreMain;
function addOnExit(cb) {
 __ATEXIT__.unshift(cb);
}
Module["addOnExit"] = addOnExit;
function addOnPostRun(cb) {
 __ATPOSTRUN__.unshift(cb);
}
Module["addOnPostRun"] = addOnPostRun;
function intArrayFromString(stringy, dontAddNull, length) {
 var len = length > 0 ? length : lengthBytesUTF8(stringy) + 1;
 var u8array = new Array(len);
 var numBytesWritten = stringToUTF8Array(stringy, u8array, 0, u8array.length);
 if (dontAddNull) u8array.length = numBytesWritten;
 return u8array;
}
Module["intArrayFromString"] = intArrayFromString;
function intArrayToString(array) {
 var ret = [];
 for (var i = 0; i < array.length; i++) {
  var chr = array[i];
  if (chr > 255) {
   chr &= 255;
  }
  ret.push(String.fromCharCode(chr));
 }
 return ret.join("");
}
Module["intArrayToString"] = intArrayToString;
function writeStringToMemory(string, buffer, dontAddNull) {
 var array = intArrayFromString(string, dontAddNull);
 var i = 0;
 while (i < array.length) {
  var chr = array[i];
  HEAP8[buffer + i >> 0] = chr;
  i = i + 1;
 }
}
Module["writeStringToMemory"] = writeStringToMemory;
function writeArrayToMemory(array, buffer) {
 for (var i = 0; i < array.length; i++) {
  HEAP8[buffer++ >> 0] = array[i];
 }
}
Module["writeArrayToMemory"] = writeArrayToMemory;
function writeAsciiToMemory(str, buffer, dontAddNull) {
 for (var i = 0; i < str.length; ++i) {
  HEAP8[buffer++ >> 0] = str.charCodeAt(i);
 }
 if (!dontAddNull) HEAP8[buffer >> 0] = 0;
}
Module["writeAsciiToMemory"] = writeAsciiToMemory;
if (!Math["imul"] || Math["imul"](4294967295, 5) !== -5) Math["imul"] = function imul(a, b) {
 var ah = a >>> 16;
 var al = a & 65535;
 var bh = b >>> 16;
 var bl = b & 65535;
 return al * bl + (ah * bl + al * bh << 16) | 0;
};
Math.imul = Math["imul"];
if (!Math["clz32"]) Math["clz32"] = (function(x) {
 x = x >>> 0;
 for (var i = 0; i < 32; i++) {
  if (x & 1 << 31 - i) return i;
 }
 return 32;
});
Math.clz32 = Math["clz32"];
if (!Math["trunc"]) Math["trunc"] = (function(x) {
 return x < 0 ? Math.ceil(x) : Math.floor(x);
});
Math.trunc = Math["trunc"];
var Math_abs = Math.abs;
var Math_cos = Math.cos;
var Math_sin = Math.sin;
var Math_tan = Math.tan;
var Math_acos = Math.acos;
var Math_asin = Math.asin;
var Math_atan = Math.atan;
var Math_atan2 = Math.atan2;
var Math_exp = Math.exp;
var Math_log = Math.log;
var Math_sqrt = Math.sqrt;
var Math_ceil = Math.ceil;
var Math_floor = Math.floor;
var Math_pow = Math.pow;
var Math_imul = Math.imul;
var Math_fround = Math.fround;
var Math_min = Math.min;
var Math_clz32 = Math.clz32;
var Math_trunc = Math.trunc;
var runDependencies = 0;
var runDependencyWatcher = null;
var dependenciesFulfilled = null;
function getUniqueRunDependency(id) {
 return id;
}
function addRunDependency(id) {
 runDependencies++;
 if (Module["monitorRunDependencies"]) {
  Module["monitorRunDependencies"](runDependencies);
 }
}
Module["addRunDependency"] = addRunDependency;
function removeRunDependency(id) {
 runDependencies--;
 if (Module["monitorRunDependencies"]) {
  Module["monitorRunDependencies"](runDependencies);
 }
 if (runDependencies == 0) {
  if (runDependencyWatcher !== null) {
   clearInterval(runDependencyWatcher);
   runDependencyWatcher = null;
  }
  if (dependenciesFulfilled) {
   var callback = dependenciesFulfilled;
   dependenciesFulfilled = null;
   callback();
  }
 }
}
Module["removeRunDependency"] = removeRunDependency;
Module["preloadedImages"] = {};
Module["preloadedAudios"] = {};
var ASM_CONSTS = [];
STATIC_BASE = 8;
STATICTOP = STATIC_BASE + 44320;
__ATINIT__.push({
 func: (function() {
  __GLOBAL__I_000101();
 })
}, {
 func: (function() {
  __GLOBAL__sub_I_binaryen_js_cpp();
 })
}, {
 func: (function() {
  __GLOBAL__sub_I_MergeBlocks_cpp();
 })
}, {
 func: (function() {
  __GLOBAL__sub_I_Print_cpp();
 })
}, {
 func: (function() {
  __GLOBAL__sub_I_RemoveUnusedBrs_cpp();
 })
}, {
 func: (function() {
  __GLOBAL__sub_I_RemoveUnusedNames_cpp();
 })
}, {
 func: (function() {
  __GLOBAL__sub_I_PostEmscripten_cpp();
 })
}, {
 func: (function() {
  __GLOBAL__sub_I_SimplifyLocals_cpp();
 })
}, {
 func: (function() {
  __GLOBAL__sub_I_ReorderLocals_cpp();
 })
}, {
 func: (function() {
  __GLOBAL__sub_I_Vacuum_cpp();
 })
}, {
 func: (function() {
  __GLOBAL__sub_I_parser_cpp();
 })
}, {
 func: (function() {
  __GLOBAL__sub_I_simple_ast_cpp();
 })
}, {
 func: (function() {
  __GLOBAL__sub_I_optimizer_shared_cpp();
 })
}, {
 func: (function() {
  __GLOBAL__sub_I_threads_cpp();
 })
}, {
 func: (function() {
  __GLOBAL__sub_I_iostream_cpp();
 })
});
allocate([ 92, 48, 0, 0, 241, 54, 0, 0, 16, 6, 0, 0, 0, 0, 0, 0, 92, 48, 0, 0, 55, 55, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 52, 48, 0, 0, 175, 56, 0, 0, 92, 48, 0, 0, 55, 56, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 52, 48, 0, 0, 209, 56, 0, 0, 92, 48, 0, 0, 97, 57, 0, 0, 248, 10, 0, 0, 0, 0, 0, 0, 52, 48, 0, 0, 196, 59, 0, 0, 52, 48, 0, 0, 241, 59, 0, 0, 92, 48, 0, 0, 209, 59, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 52, 48, 0, 0, 142, 60, 0, 0, 52, 48, 0, 0, 121, 61, 0, 0, 92, 48, 0, 0, 196, 63, 0, 0, 112, 6, 0, 0, 0, 0, 0, 0, 92, 48, 0, 0, 122, 67, 0, 0, 168, 0, 0, 0, 0, 0, 0, 0, 52, 48, 0, 0, 241, 67, 0, 0, 196, 48, 0, 0, 31, 68, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 88, 0, 0, 0, 2, 0, 0, 0, 208, 0, 0, 0, 2, 16, 0, 0, 92, 48, 0, 0, 106, 68, 0, 0, 224, 0, 0, 0, 0, 0, 0, 0, 92, 48, 0, 0, 163, 68, 0, 0, 240, 0, 0, 0, 0, 0, 0, 0, 52, 48, 0, 0, 215, 68, 0, 0, 92, 48, 0, 0, 251, 68, 0, 0, 176, 0, 0, 0, 0, 0, 0, 0, 92, 48, 0, 0, 16, 69, 0, 0, 24, 1, 0, 0, 0, 0, 0, 0, 52, 48, 0, 0, 173, 69, 0, 0, 52, 48, 0, 0, 230, 69, 0, 0, 52, 48, 0, 0, 55, 70, 0, 0, 92, 48, 0, 0, 111, 70, 0, 0, 88, 0, 0, 0, 0, 0, 0, 0, 92, 48, 0, 0, 227, 73, 0, 0, 168, 0, 0, 0, 0, 0, 0, 0, 52, 48, 0, 0, 85, 74, 0, 0, 92, 48, 0, 0, 189, 74, 0, 0, 168, 0, 0, 0, 0, 0, 0, 0, 92, 48, 0, 0, 56, 75, 0, 0, 48, 1, 0, 0, 0, 0, 0, 0, 52, 48, 0, 0, 81, 75, 0, 0, 92, 48, 0, 0, 186, 75, 0, 0, 168, 0, 0, 0, 0, 0, 0, 0, 92, 48, 0, 0, 49, 76, 0, 0, 48, 1, 0, 0, 0, 0, 0, 0, 52, 48, 0, 0, 70, 76, 0, 0, 92, 48, 0, 0, 194, 76, 0, 0, 168, 0, 0, 0, 0, 0, 0, 0, 196, 48, 0, 0, 61, 77, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 88, 0, 0, 0, 2, 0, 0, 0, 216, 1, 0, 0, 2, 16, 0, 0, 92, 48, 0, 0, 140, 77, 0, 0, 232, 1, 0, 0, 0, 0, 0, 0, 92, 48, 0, 0, 201, 77, 0, 0, 248, 1, 0, 0, 0, 0, 0, 0, 52, 48, 0, 0, 1, 78, 0, 0, 92, 48, 0, 0, 41, 78, 0, 0, 24, 1, 0, 0, 0, 0, 0, 0, 52, 48, 0, 0, 41, 79, 0, 0, 92, 48, 0, 0, 126, 79, 0, 0, 184, 1, 0, 0, 0, 0, 0, 0, 52, 48, 0, 0, 151, 79, 0, 0, 92, 48, 0, 0, 31, 80, 0, 0, 168, 0, 0, 0, 0, 0, 0, 0, 196, 48, 0, 0, 156, 80, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 88, 0, 0, 0, 2, 0, 0, 0, 96, 2, 0, 0, 2, 16, 0, 0, 92, 48, 0, 0, 237, 80, 0, 0, 112, 2, 0, 0, 0, 0, 0, 0, 92, 48, 0, 0, 44, 81, 0, 0, 128, 2, 0, 0, 0, 0, 0, 0, 52, 48, 0, 0, 102, 81, 0, 0, 92, 48, 0, 0, 144, 81, 0, 0, 24, 1, 0, 0, 0, 0, 0, 0, 52, 48, 0, 0, 51, 82, 0, 0, 92, 48, 0, 0, 138, 82, 0, 0, 64, 2, 0, 0, 0, 0, 0, 0, 52, 48, 0, 0, 165, 82, 0, 0, 92, 48, 0, 0, 45, 83, 0, 0, 168, 0, 0, 0, 0, 0, 0, 0, 196, 48, 0, 0, 167, 83, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 88, 0, 0, 0, 2, 0, 0, 0, 232, 2, 0, 0, 2, 16, 0, 0, 92, 48, 0, 0, 245, 83, 0, 0, 248, 2, 0, 0, 0, 0, 0, 0, 92, 48, 0, 0, 49, 84, 0, 0, 8, 3, 0, 0, 0, 0, 0, 0, 52, 48, 0, 0, 104, 84, 0, 0, 92, 48, 0, 0, 143, 84, 0, 0, 200, 2, 0, 0, 0, 0, 0, 0, 92, 48, 0, 0, 167, 84, 0, 0, 24, 1, 0, 0, 0, 0, 0, 0, 52, 48, 0, 0, 132, 85, 0, 0, 52, 48, 0, 0, 216, 85, 0, 0, 92, 48, 0, 0, 78, 86, 0, 0, 168, 0, 0, 0, 0, 0, 0, 0, 196, 48, 0, 0, 200, 86, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 88, 0, 0, 0, 2, 0, 0, 0, 112, 3, 0, 0, 2, 16, 0, 0, 92, 48, 0, 0, 33, 87, 0, 0, 128, 3, 0, 0, 0, 0, 0, 0, 92, 48, 0, 0, 104, 87, 0, 0, 144, 3, 0, 0, 0, 0, 0, 0, 92, 48, 0, 0, 164, 87, 0, 0, 160, 3, 0, 0, 0, 0, 0, 0, 52, 48, 0, 0, 219, 87, 0, 0, 92, 48, 0, 0, 2, 88, 0, 0, 24, 1, 0, 0, 0, 0, 0, 0, 196, 48, 0, 0, 216, 90, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 88, 0, 0, 0, 2, 0, 0, 0, 216, 3, 0, 0, 2, 16, 0, 0, 92, 48, 0, 0, 39, 91, 0, 0, 232, 3, 0, 0, 0, 0, 0, 0, 92, 48, 0, 0, 100, 91, 0, 0, 248, 3, 0, 0, 0, 0, 0, 0, 52, 48, 0, 0, 156, 91, 0, 0, 92, 48, 0, 0, 196, 91, 0, 0, 184, 3, 0, 0, 0, 0, 0, 0, 196, 48, 0, 0, 221, 91, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 88, 0, 0, 0, 2, 0, 0, 0, 48, 4, 0, 0, 2, 16, 0, 0, 92, 48, 0, 0, 44, 92, 0, 0, 64, 4, 0, 0, 0, 0, 0, 0, 92, 48, 0, 0, 105, 92, 0, 0, 80, 4, 0, 0, 0, 0, 0, 0, 52, 48, 0, 0, 161, 92, 0, 0, 92, 48, 0, 0, 201, 92, 0, 0, 16, 4, 0, 0, 0, 0, 0, 0, 52, 48, 0, 0, 226, 92, 0, 0, 92, 48, 0, 0, 54, 93, 0, 0, 80, 3, 0, 0, 0, 0, 0, 0, 52, 48, 0, 0, 78, 93, 0, 0, 92, 48, 0, 0, 185, 93, 0, 0, 168, 0, 0, 0, 0, 0, 0, 0, 196, 48, 0, 0, 50, 94, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 88, 0, 0, 0, 2, 0, 0, 0, 184, 4, 0, 0, 2, 16, 0, 0, 92, 48, 0, 0, 127, 94, 0, 0, 200, 4, 0, 0, 0, 0, 0, 0, 92, 48, 0, 0, 186, 94, 0, 0, 216, 4, 0, 0, 0, 0, 0, 0, 52, 48, 0, 0, 240, 94, 0, 0, 92, 48, 0, 0, 22, 95, 0, 0, 24, 1, 0, 0, 0, 0, 0, 0, 52, 48, 0, 0, 2, 96, 0, 0, 92, 48, 0, 0, 85, 96, 0, 0, 152, 4, 0, 0, 0, 0, 0, 0, 52, 48, 0, 0, 108, 96, 0, 0, 92, 48, 0, 0, 205, 96, 0, 0, 168, 0, 0, 0, 0, 0, 0, 0, 196, 48, 0, 0, 62, 97, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 88, 0, 0, 0, 2, 0, 0, 0, 64, 5, 0, 0, 2, 16, 0, 0, 92, 48, 0, 0, 131, 97, 0, 0, 80, 5, 0, 0, 0, 0, 0, 0, 92, 48, 0, 0, 182, 97, 0, 0, 96, 5, 0, 0, 0, 0, 0, 0, 52, 48, 0, 0, 228, 97, 0, 0, 92, 48, 0, 0, 2, 98, 0, 0, 32, 5, 0, 0, 0, 0, 0, 0, 92, 48, 0, 0, 17, 98, 0, 0, 24, 1, 0, 0, 0, 0, 0, 0, 52, 48, 0, 0, 224, 98, 0, 0, 52, 48, 0, 0, 43, 99, 0, 0, 92, 48, 0, 0, 119, 114, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 92, 48, 0, 0, 181, 114, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 92, 48, 0, 0, 206, 114, 0, 0, 8, 6, 0, 0, 0, 0, 0, 0, 92, 48, 0, 0, 230, 114, 0, 0, 8, 6, 0, 0, 0, 0, 0, 0, 92, 48, 0, 0, 139, 116, 0, 0, 232, 5, 0, 0, 0, 0, 0, 0, 52, 48, 0, 0, 181, 116, 0, 0, 92, 48, 0, 0, 199, 116, 0, 0, 232, 5, 0, 0, 0, 0, 0, 0, 52, 48, 0, 0, 241, 116, 0, 0, 52, 48, 0, 0, 34, 117, 0, 0, 196, 48, 0, 0, 83, 117, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 216, 5, 0, 0, 3, 244, 255, 255, 196, 48, 0, 0, 130, 117, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 240, 5, 0, 0, 3, 244, 255, 255, 196, 48, 0, 0, 177, 117, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 216, 5, 0, 0, 3, 244, 255, 255, 196, 48, 0, 0, 224, 117, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 240, 5, 0, 0, 3, 244, 255, 255, 196, 48, 0, 0, 15, 118, 0, 0, 3, 0, 0, 0, 2, 0, 0, 0, 16, 6, 0, 0, 2, 0, 0, 0, 64, 6, 0, 0, 2, 8, 0, 0, 92, 48, 0, 0, 63, 118, 0, 0, 160, 6, 0, 0, 0, 0, 0, 0, 92, 48, 0, 0, 83, 118, 0, 0, 240, 10, 0, 0, 0, 0, 0, 0, 92, 48, 0, 0, 105, 118, 0, 0, 160, 6, 0, 0, 0, 0, 0, 0, 196, 48, 0, 0, 125, 118, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 160, 6, 0, 0, 2, 0, 0, 0, 224, 6, 0, 0, 0, 0, 0, 0, 196, 48, 0, 0, 193, 118, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 248, 6, 0, 0, 0, 0, 0, 0, 52, 48, 0, 0, 215, 118, 0, 0, 196, 48, 0, 0, 22, 119, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 160, 6, 0, 0, 2, 0, 0, 0, 32, 7, 0, 0, 0, 0, 0, 0, 196, 48, 0, 0, 90, 119, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 248, 6, 0, 0, 0, 0, 0, 0, 196, 48, 0, 0, 112, 119, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 160, 6, 0, 0, 2, 0, 0, 0, 88, 7, 0, 0, 0, 0, 0, 0, 196, 48, 0, 0, 180, 119, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 112, 7, 0, 0, 0, 0, 0, 0, 52, 48, 0, 0, 202, 119, 0, 0, 196, 48, 0, 0, 241, 119, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 160, 6, 0, 0, 2, 0, 0, 0, 152, 7, 0, 0, 0, 0, 0, 0, 196, 48, 0, 0, 53, 120, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 112, 7, 0, 0, 0, 0, 0, 0, 196, 48, 0, 0, 75, 120, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 160, 6, 0, 0, 2, 0, 0, 0, 216, 7, 0, 0, 2, 0, 0, 0, 224, 7, 0, 0, 0, 8, 0, 0, 52, 48, 0, 0, 144, 120, 0, 0, 52, 48, 0, 0, 163, 120, 0, 0, 196, 48, 0, 0, 5, 122, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 160, 6, 0, 0, 2, 0, 0, 0, 216, 7, 0, 0, 2, 0, 0, 0, 16, 8, 0, 0, 0, 8, 0, 0, 52, 48, 0, 0, 74, 122, 0, 0, 196, 48, 0, 0, 108, 122, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 160, 6, 0, 0, 2, 0, 0, 0, 56, 8, 0, 0, 0, 8, 0, 0, 52, 48, 0, 0, 177, 122, 0, 0, 196, 48, 0, 0, 198, 122, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 160, 6, 0, 0, 2, 0, 0, 0, 56, 8, 0, 0, 0, 8, 0, 0, 196, 48, 0, 0, 11, 123, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 160, 6, 0, 0, 2, 0, 0, 0, 128, 8, 0, 0, 2, 0, 0, 0, 52, 48, 0, 0, 39, 123, 0, 0, 196, 48, 0, 0, 60, 123, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 160, 6, 0, 0, 2, 0, 0, 0, 128, 8, 0, 0, 2, 0, 0, 0, 196, 48, 0, 0, 88, 123, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 160, 6, 0, 0, 2, 0, 0, 0, 128, 8, 0, 0, 2, 0, 0, 0, 196, 48, 0, 0, 116, 123, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 160, 6, 0, 0, 2, 0, 0, 0, 128, 8, 0, 0, 2, 0, 0, 0, 196, 48, 0, 0, 144, 123, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 160, 6, 0, 0, 2, 0, 0, 0, 8, 9, 0, 0, 0, 0, 0, 0, 52, 48, 0, 0, 214, 123, 0, 0, 196, 48, 0, 0, 254, 123, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 160, 6, 0, 0, 2, 0, 0, 0, 48, 9, 0, 0, 0, 0, 0, 0, 52, 48, 0, 0, 68, 124, 0, 0, 196, 48, 0, 0, 104, 124, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 160, 6, 0, 0, 2, 0, 0, 0, 88, 9, 0, 0, 0, 0, 0, 0, 52, 48, 0, 0, 174, 124, 0, 0, 196, 48, 0, 0, 205, 124, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 160, 6, 0, 0, 2, 0, 0, 0, 128, 9, 0, 0, 0, 0, 0, 0, 52, 48, 0, 0, 19, 125, 0, 0, 196, 48, 0, 0, 44, 125, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 160, 6, 0, 0, 2, 0, 0, 0, 168, 9, 0, 0, 2, 0, 0, 0, 52, 48, 0, 0, 65, 125, 0, 0, 196, 48, 0, 0, 89, 125, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 160, 6, 0, 0, 2, 0, 0, 0, 168, 9, 0, 0, 2, 0, 0, 0, 92, 48, 0, 0, 110, 125, 0, 0, 224, 9, 0, 0, 0, 0, 0, 0, 196, 48, 0, 0, 144, 125, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 160, 6, 0, 0, 2, 0, 0, 0, 0, 10, 0, 0, 2, 0, 0, 0, 52, 48, 0, 0, 179, 125, 0, 0, 92, 48, 0, 0, 202, 125, 0, 0, 224, 9, 0, 0, 0, 0, 0, 0, 196, 48, 0, 0, 237, 125, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 160, 6, 0, 0, 2, 0, 0, 0, 0, 10, 0, 0, 2, 0, 0, 0, 196, 48, 0, 0, 15, 126, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 160, 6, 0, 0, 2, 0, 0, 0, 0, 10, 0, 0, 2, 0, 0, 0, 196, 48, 0, 0, 49, 126, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 160, 6, 0, 0, 2, 0, 0, 0, 0, 10, 0, 0, 2, 0, 0, 0, 92, 48, 0, 0, 84, 126, 0, 0, 160, 6, 0, 0, 0, 0, 0, 0, 196, 48, 0, 0, 106, 126, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 160, 6, 0, 0, 2, 0, 0, 0, 168, 10, 0, 0, 2, 0, 0, 0, 52, 48, 0, 0, 124, 126, 0, 0, 196, 48, 0, 0, 145, 126, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 160, 6, 0, 0, 2, 0, 0, 0, 168, 10, 0, 0, 2, 0, 0, 0, 92, 48, 0, 0, 163, 126, 0, 0, 160, 6, 0, 0, 0, 0, 0, 0, 92, 48, 0, 0, 184, 126, 0, 0, 160, 6, 0, 0, 0, 0, 0, 0, 52, 48, 0, 0, 81, 127, 0, 0, 52, 48, 0, 0, 119, 128, 0, 0, 92, 48, 0, 0, 85, 128, 0, 0, 32, 11, 0, 0, 0, 0, 0, 0, 92, 48, 0, 0, 2, 128, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 92, 48, 0, 0, 39, 128, 0, 0, 48, 11, 0, 0, 0, 0, 0, 0, 52, 48, 0, 0, 72, 128, 0, 0, 92, 48, 0, 0, 61, 129, 0, 0, 248, 10, 0, 0, 0, 0, 0, 0, 92, 48, 0, 0, 104, 129, 0, 0, 248, 10, 0, 0, 0, 0, 0, 0, 92, 48, 0, 0, 120, 129, 0, 0, 72, 11, 0, 0, 0, 0, 0, 0, 92, 48, 0, 0, 173, 129, 0, 0, 32, 11, 0, 0, 0, 0, 0, 0, 92, 48, 0, 0, 137, 129, 0, 0, 104, 11, 0, 0, 0, 0, 0, 0, 92, 48, 0, 0, 207, 129, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 60, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 196, 255, 255, 255, 196, 255, 255, 255, 8, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 164, 11, 0, 0, 220, 11, 0, 0, 240, 11, 0, 0, 184, 11, 0, 0, 60, 0, 0, 0, 0, 0, 0, 0, 16, 6, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 196, 255, 255, 255, 196, 255, 255, 255, 16, 6, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 11, 0, 0, 0, 12, 0, 0, 0, 5, 0, 0, 0, 2, 0, 0, 0, 13, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 3, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 16, 0, 0, 0, 17, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 88, 0, 0, 0, 18, 0, 0, 0, 19, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 104, 0, 0, 0, 3, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 37, 157, 0, 0, 13, 161, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 136, 0, 0, 0, 20, 0, 0, 0, 21, 0, 0, 0, 56, 0, 0, 0, 248, 255, 255, 255, 136, 0, 0, 0, 22, 0, 0, 0, 23, 0, 0, 0, 192, 255, 255, 255, 192, 255, 255, 255, 136, 0, 0, 0, 24, 0, 0, 0, 25, 0, 0, 0, 200, 12, 0, 0, 44, 13, 0, 0, 104, 13, 0, 0, 124, 13, 0, 0, 144, 13, 0, 0, 164, 13, 0, 0, 84, 13, 0, 0, 64, 13, 0, 0, 240, 12, 0, 0, 220, 12, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 112, 6, 0, 0, 26, 0, 0, 0, 27, 0, 0, 0, 56, 0, 0, 0, 248, 255, 255, 255, 112, 6, 0, 0, 28, 0, 0, 0, 29, 0, 0, 0, 192, 255, 255, 255, 192, 255, 255, 255, 112, 6, 0, 0, 30, 0, 0, 0, 31, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 16, 6, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 192, 255, 255, 255, 192, 255, 255, 255, 16, 6, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 64, 6, 0, 0, 32, 0, 0, 0, 33, 0, 0, 0, 200, 255, 255, 255, 200, 255, 255, 255, 64, 6, 0, 0, 34, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 152, 0, 0, 0, 36, 0, 0, 0, 37, 0, 0, 0, 8, 0, 0, 0, 5, 0, 0, 0, 38, 0, 0, 0, 39, 0, 0, 0, 9, 0, 0, 0, 4, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 176, 0, 0, 0, 40, 0, 0, 0, 41, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 248, 0, 0, 0, 40, 0, 0, 0, 42, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 8, 1, 0, 0, 43, 0, 0, 0, 44, 0, 0, 0, 11, 0, 0, 0, 6, 0, 0, 0, 45, 0, 0, 0, 46, 0, 0, 0, 12, 0, 0, 0, 5, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 48, 1, 0, 0, 18, 0, 0, 0, 47, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 64, 1, 0, 0, 36, 0, 0, 0, 48, 0, 0, 0, 14, 0, 0, 0, 7, 0, 0, 0, 49, 0, 0, 0, 50, 0, 0, 0, 15, 0, 0, 0, 6, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 88, 1, 0, 0, 36, 0, 0, 0, 51, 0, 0, 0, 17, 0, 0, 0, 8, 0, 0, 0, 52, 0, 0, 0, 53, 0, 0, 0, 18, 0, 0, 0, 7, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 104, 1, 0, 0, 18, 0, 0, 0, 54, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 128, 1, 0, 0, 36, 0, 0, 0, 55, 0, 0, 0, 20, 0, 0, 0, 9, 0, 0, 0, 56, 0, 0, 0, 57, 0, 0, 0, 21, 0, 0, 0, 8, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 144, 1, 0, 0, 18, 0, 0, 0, 58, 0, 0, 0, 1, 0, 0, 0, 7, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 168, 1, 0, 0, 36, 0, 0, 0, 59, 0, 0, 0, 23, 0, 0, 0, 10, 0, 0, 0, 60, 0, 0, 0, 61, 0, 0, 0, 24, 0, 0, 0, 9, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 184, 1, 0, 0, 62, 0, 0, 0, 63, 0, 0, 0, 1, 0, 0, 0, 8, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 43, 0, 0, 0, 64, 0, 0, 0, 26, 0, 0, 0, 11, 0, 0, 0, 65, 0, 0, 0, 66, 0, 0, 0, 27, 0, 0, 0, 10, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 24, 2, 0, 0, 67, 0, 0, 0, 68, 0, 0, 0, 1, 0, 0, 0, 8, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 48, 2, 0, 0, 36, 0, 0, 0, 69, 0, 0, 0, 29, 0, 0, 0, 12, 0, 0, 0, 70, 0, 0, 0, 71, 0, 0, 0, 30, 0, 0, 0, 11, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 64, 2, 0, 0, 72, 0, 0, 0, 73, 0, 0, 0, 1, 0, 0, 0, 9, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 136, 2, 0, 0, 43, 0, 0, 0, 74, 0, 0, 0, 32, 0, 0, 0, 13, 0, 0, 0, 75, 0, 0, 0, 76, 0, 0, 0, 33, 0, 0, 0, 12, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 160, 2, 0, 0, 77, 0, 0, 0, 78, 0, 0, 0, 1, 0, 0, 0, 9, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 184, 2, 0, 0, 36, 0, 0, 0, 79, 0, 0, 0, 35, 0, 0, 0, 14, 0, 0, 0, 80, 0, 0, 0, 81, 0, 0, 0, 36, 0, 0, 0, 13, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 200, 2, 0, 0, 82, 0, 0, 0, 83, 0, 0, 0, 1, 0, 0, 0, 10, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 16, 3, 0, 0, 82, 0, 0, 0, 84, 0, 0, 0, 1, 0, 0, 0, 10, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 32, 3, 0, 0, 43, 0, 0, 0, 85, 0, 0, 0, 38, 0, 0, 0, 15, 0, 0, 0, 86, 0, 0, 0, 87, 0, 0, 0, 39, 0, 0, 0, 14, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 64, 3, 0, 0, 36, 0, 0, 0, 88, 0, 0, 0, 41, 0, 0, 0, 16, 0, 0, 0, 89, 0, 0, 0, 90, 0, 0, 0, 42, 0, 0, 0, 15, 0, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 80, 3, 0, 0, 91, 0, 0, 0, 92, 0, 0, 0, 1, 0, 0, 0, 11, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 168, 3, 0, 0, 43, 0, 0, 0, 93, 0, 0, 0, 44, 0, 0, 0, 17, 0, 0, 0, 94, 0, 0, 0, 95, 0, 0, 0, 45, 0, 0, 0, 16, 0, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 184, 3, 0, 0, 96, 0, 0, 0, 97, 0, 0, 0, 1, 0, 0, 0, 12, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 96, 0, 0, 0, 98, 0, 0, 0, 1, 0, 0, 0, 12, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 16, 4, 0, 0, 99, 0, 0, 0, 100, 0, 0, 0, 1, 0, 0, 0, 13, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 88, 4, 0, 0, 99, 0, 0, 0, 101, 0, 0, 0, 1, 0, 0, 0, 13, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 112, 4, 0, 0, 102, 0, 0, 0, 103, 0, 0, 0, 1, 0, 0, 0, 11, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 136, 4, 0, 0, 36, 0, 0, 0, 104, 0, 0, 0, 47, 0, 0, 0, 18, 0, 0, 0, 105, 0, 0, 0, 106, 0, 0, 0, 48, 0, 0, 0, 17, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 152, 4, 0, 0, 107, 0, 0, 0, 108, 0, 0, 0, 1, 0, 0, 0, 14, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 224, 4, 0, 0, 43, 0, 0, 0, 109, 0, 0, 0, 50, 0, 0, 0, 19, 0, 0, 0, 110, 0, 0, 0, 111, 0, 0, 0, 51, 0, 0, 0, 18, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 248, 4, 0, 0, 112, 0, 0, 0, 113, 0, 0, 0, 1, 0, 0, 0, 14, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 16, 5, 0, 0, 36, 0, 0, 0, 114, 0, 0, 0, 53, 0, 0, 0, 20, 0, 0, 0, 115, 0, 0, 0, 116, 0, 0, 0, 54, 0, 0, 0, 19, 0, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 32, 5, 0, 0, 117, 0, 0, 0, 118, 0, 0, 0, 1, 0, 0, 0, 15, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 104, 5, 0, 0, 117, 0, 0, 0, 119, 0, 0, 0, 1, 0, 0, 0, 15, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 120, 5, 0, 0, 43, 0, 0, 0, 120, 0, 0, 0, 56, 0, 0, 0, 21, 0, 0, 0, 121, 0, 0, 0, 122, 0, 0, 0, 57, 0, 0, 0, 20, 0, 0, 0, 58, 0, 0, 0, 2, 0, 0, 192, 3, 0, 0, 192, 4, 0, 0, 192, 5, 0, 0, 192, 6, 0, 0, 192, 7, 0, 0, 192, 8, 0, 0, 192, 9, 0, 0, 192, 10, 0, 0, 192, 11, 0, 0, 192, 12, 0, 0, 192, 13, 0, 0, 192, 14, 0, 0, 192, 15, 0, 0, 192, 16, 0, 0, 192, 17, 0, 0, 192, 18, 0, 0, 192, 19, 0, 0, 192, 20, 0, 0, 192, 21, 0, 0, 192, 22, 0, 0, 192, 23, 0, 0, 192, 24, 0, 0, 192, 25, 0, 0, 192, 26, 0, 0, 192, 27, 0, 0, 192, 28, 0, 0, 192, 29, 0, 0, 192, 30, 0, 0, 192, 31, 0, 0, 192, 0, 0, 0, 179, 1, 0, 0, 195, 2, 0, 0, 195, 3, 0, 0, 195, 4, 0, 0, 195, 5, 0, 0, 195, 6, 0, 0, 195, 7, 0, 0, 195, 8, 0, 0, 195, 9, 0, 0, 195, 10, 0, 0, 195, 11, 0, 0, 195, 12, 0, 0, 195, 13, 0, 0, 211, 14, 0, 0, 195, 15, 0, 0, 195, 0, 0, 12, 187, 1, 0, 12, 195, 2, 0, 12, 195, 3, 0, 12, 195, 4, 0, 12, 211, 180, 19, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 13, 165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 20, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 21, 165, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 156, 20, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 5, 0, 0, 0, 29, 169, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 156, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, 49, 0, 0, 136, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 21, 0, 0, 0, 22, 0, 0, 0, 23, 0, 0, 0, 24, 0, 0, 0, 25, 0, 0, 0, 26, 0, 0, 0, 27, 0, 0, 0, 28, 0, 0, 0, 29, 0, 0, 0, 30, 0, 0, 0, 31, 0, 0, 0, 32, 0, 0, 0, 33, 0, 0, 0, 34, 0, 0, 0, 35, 0, 0, 0, 36, 0, 0, 0, 37, 0, 0, 0, 38, 0, 0, 0, 39, 0, 0, 0, 40, 0, 0, 0, 41, 0, 0, 0, 42, 0, 0, 0, 43, 0, 0, 0, 44, 0, 0, 0, 45, 0, 0, 0, 46, 0, 0, 0, 47, 0, 0, 0, 48, 0, 0, 0, 49, 0, 0, 0, 50, 0, 0, 0, 51, 0, 0, 0, 52, 0, 0, 0, 53, 0, 0, 0, 54, 0, 0, 0, 55, 0, 0, 0, 56, 0, 0, 0, 57, 0, 0, 0, 58, 0, 0, 0, 59, 0, 0, 0, 60, 0, 0, 0, 61, 0, 0, 0, 62, 0, 0, 0, 63, 0, 0, 0, 64, 0, 0, 0, 97, 0, 0, 0, 98, 0, 0, 0, 99, 0, 0, 0, 100, 0, 0, 0, 101, 0, 0, 0, 102, 0, 0, 0, 103, 0, 0, 0, 104, 0, 0, 0, 105, 0, 0, 0, 106, 0, 0, 0, 107, 0, 0, 0, 108, 0, 0, 0, 109, 0, 0, 0, 110, 0, 0, 0, 111, 0, 0, 0, 112, 0, 0, 0, 113, 0, 0, 0, 114, 0, 0, 0, 115, 0, 0, 0, 116, 0, 0, 0, 117, 0, 0, 0, 118, 0, 0, 0, 119, 0, 0, 0, 120, 0, 0, 0, 121, 0, 0, 0, 122, 0, 0, 0, 91, 0, 0, 0, 92, 0, 0, 0, 93, 0, 0, 0, 94, 0, 0, 0, 95, 0, 0, 0, 96, 0, 0, 0, 97, 0, 0, 0, 98, 0, 0, 0, 99, 0, 0, 0, 100, 0, 0, 0, 101, 0, 0, 0, 102, 0, 0, 0, 103, 0, 0, 0, 104, 0, 0, 0, 105, 0, 0, 0, 106, 0, 0, 0, 107, 0, 0, 0, 108, 0, 0, 0, 109, 0, 0, 0, 110, 0, 0, 0, 111, 0, 0, 0, 112, 0, 0, 0, 113, 0, 0, 0, 114, 0, 0, 0, 115, 0, 0, 0, 116, 0, 0, 0, 117, 0, 0, 0, 118, 0, 0, 0, 119, 0, 0, 0, 120, 0, 0, 0, 121, 0, 0, 0, 122, 0, 0, 0, 123, 0, 0, 0, 124, 0, 0, 0, 125, 0, 0, 0, 126, 0, 0, 0, 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 140, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 21, 0, 0, 0, 22, 0, 0, 0, 23, 0, 0, 0, 24, 0, 0, 0, 25, 0, 0, 0, 26, 0, 0, 0, 27, 0, 0, 0, 28, 0, 0, 0, 29, 0, 0, 0, 30, 0, 0, 0, 31, 0, 0, 0, 32, 0, 0, 0, 33, 0, 0, 0, 34, 0, 0, 0, 35, 0, 0, 0, 36, 0, 0, 0, 37, 0, 0, 0, 38, 0, 0, 0, 39, 0, 0, 0, 40, 0, 0, 0, 41, 0, 0, 0, 42, 0, 0, 0, 43, 0, 0, 0, 44, 0, 0, 0, 45, 0, 0, 0, 46, 0, 0, 0, 47, 0, 0, 0, 48, 0, 0, 0, 49, 0, 0, 0, 50, 0, 0, 0, 51, 0, 0, 0, 52, 0, 0, 0, 53, 0, 0, 0, 54, 0, 0, 0, 55, 0, 0, 0, 56, 0, 0, 0, 57, 0, 0, 0, 58, 0, 0, 0, 59, 0, 0, 0, 60, 0, 0, 0, 61, 0, 0, 0, 62, 0, 0, 0, 63, 0, 0, 0, 64, 0, 0, 0, 65, 0, 0, 0, 66, 0, 0, 0, 67, 0, 0, 0, 68, 0, 0, 0, 69, 0, 0, 0, 70, 0, 0, 0, 71, 0, 0, 0, 72, 0, 0, 0, 73, 0, 0, 0, 74, 0, 0, 0, 75, 0, 0, 0, 76, 0, 0, 0, 77, 0, 0, 0, 78, 0, 0, 0, 79, 0, 0, 0, 80, 0, 0, 0, 81, 0, 0, 0, 82, 0, 0, 0, 83, 0, 0, 0, 84, 0, 0, 0, 85, 0, 0, 0, 86, 0, 0, 0, 87, 0, 0, 0, 88, 0, 0, 0, 89, 0, 0, 0, 90, 0, 0, 0, 91, 0, 0, 0, 92, 0, 0, 0, 93, 0, 0, 0, 94, 0, 0, 0, 95, 0, 0, 0, 96, 0, 0, 0, 65, 0, 0, 0, 66, 0, 0, 0, 67, 0, 0, 0, 68, 0, 0, 0, 69, 0, 0, 0, 70, 0, 0, 0, 71, 0, 0, 0, 72, 0, 0, 0, 73, 0, 0, 0, 74, 0, 0, 0, 75, 0, 0, 0, 76, 0, 0, 0, 77, 0, 0, 0, 78, 0, 0, 0, 79, 0, 0, 0, 80, 0, 0, 0, 81, 0, 0, 0, 82, 0, 0, 0, 83, 0, 0, 0, 84, 0, 0, 0, 85, 0, 0, 0, 86, 0, 0, 0, 87, 0, 0, 0, 88, 0, 0, 0, 89, 0, 0, 0, 90, 0, 0, 0, 123, 0, 0, 0, 124, 0, 0, 0, 125, 0, 0, 0, 126, 0, 0, 0, 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 100, 0, 0, 0, 232, 3, 0, 0, 16, 39, 0, 0, 160, 134, 1, 0, 64, 66, 15, 0, 128, 150, 152, 0, 0, 225, 245, 5, 0, 0, 0, 0, 152, 5, 0, 0, 123, 0, 0, 0, 124, 0, 0, 0, 22, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 5, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 60, 0, 0, 0, 61, 0, 0, 0, 21, 0, 0, 0, 3, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 168, 5, 0, 0, 123, 0, 0, 0, 125, 0, 0, 0, 23, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 5, 0, 0, 0, 62, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 63, 0, 0, 0, 4, 0, 0, 0, 23, 0, 0, 0, 9, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 184, 5, 0, 0, 126, 0, 0, 0, 127, 0, 0, 0, 24, 0, 0, 0, 10, 0, 0, 0, 3, 0, 0, 0, 6, 0, 0, 0, 64, 0, 0, 0, 65, 0, 0, 0, 11, 0, 0, 0, 66, 0, 0, 0, 67, 0, 0, 0, 25, 0, 0, 0, 12, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 200, 5, 0, 0, 126, 0, 0, 0, 128, 0, 0, 0, 25, 0, 0, 0, 10, 0, 0, 0, 3, 0, 0, 0, 6, 0, 0, 0, 68, 0, 0, 0, 65, 0, 0, 0, 11, 0, 0, 0, 69, 0, 0, 0, 70, 0, 0, 0, 27, 0, 0, 0, 13, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 5, 0, 0, 0, 7, 0, 0, 0, 11, 0, 0, 0, 13, 0, 0, 0, 17, 0, 0, 0, 19, 0, 0, 0, 23, 0, 0, 0, 29, 0, 0, 0, 31, 0, 0, 0, 37, 0, 0, 0, 41, 0, 0, 0, 43, 0, 0, 0, 47, 0, 0, 0, 53, 0, 0, 0, 59, 0, 0, 0, 61, 0, 0, 0, 67, 0, 0, 0, 71, 0, 0, 0, 73, 0, 0, 0, 79, 0, 0, 0, 83, 0, 0, 0, 89, 0, 0, 0, 97, 0, 0, 0, 101, 0, 0, 0, 103, 0, 0, 0, 107, 0, 0, 0, 109, 0, 0, 0, 113, 0, 0, 0, 127, 0, 0, 0, 131, 0, 0, 0, 137, 0, 0, 0, 139, 0, 0, 0, 149, 0, 0, 0, 151, 0, 0, 0, 157, 0, 0, 0, 163, 0, 0, 0, 167, 0, 0, 0, 173, 0, 0, 0, 179, 0, 0, 0, 181, 0, 0, 0, 191, 0, 0, 0, 193, 0, 0, 0, 197, 0, 0, 0, 199, 0, 0, 0, 211, 0, 0, 0, 1, 0, 0, 0, 11, 0, 0, 0, 13, 0, 0, 0, 17, 0, 0, 0, 19, 0, 0, 0, 23, 0, 0, 0, 29, 0, 0, 0, 31, 0, 0, 0, 37, 0, 0, 0, 41, 0, 0, 0, 43, 0, 0, 0, 47, 0, 0, 0, 53, 0, 0, 0, 59, 0, 0, 0, 61, 0, 0, 0, 67, 0, 0, 0, 71, 0, 0, 0, 73, 0, 0, 0, 79, 0, 0, 0, 83, 0, 0, 0, 89, 0, 0, 0, 97, 0, 0, 0, 101, 0, 0, 0, 103, 0, 0, 0, 107, 0, 0, 0, 109, 0, 0, 0, 113, 0, 0, 0, 121, 0, 0, 0, 127, 0, 0, 0, 131, 0, 0, 0, 137, 0, 0, 0, 139, 0, 0, 0, 143, 0, 0, 0, 149, 0, 0, 0, 151, 0, 0, 0, 157, 0, 0, 0, 163, 0, 0, 0, 167, 0, 0, 0, 169, 0, 0, 0, 173, 0, 0, 0, 179, 0, 0, 0, 181, 0, 0, 0, 187, 0, 0, 0, 191, 0, 0, 0, 193, 0, 0, 0, 197, 0, 0, 0, 199, 0, 0, 0, 209, 0, 0, 0, 0, 0, 0, 0, 232, 5, 0, 0, 129, 0, 0, 0, 130, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 123, 0, 0, 0, 131, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 5, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 63, 0, 0, 0, 4, 0, 0, 0, 23, 0, 0, 0, 3, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 8, 6, 0, 0, 126, 0, 0, 0, 132, 0, 0, 0, 26, 0, 0, 0, 10, 0, 0, 0, 3, 0, 0, 0, 6, 0, 0, 0, 64, 0, 0, 0, 65, 0, 0, 0, 11, 0, 0, 0, 69, 0, 0, 0, 70, 0, 0, 0, 27, 0, 0, 0, 12, 0, 0, 0, 26, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 16, 6, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 248, 255, 255, 255, 248, 255, 255, 255, 16, 6, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 40, 6, 0, 0, 133, 0, 0, 0, 134, 0, 0, 0, 248, 255, 255, 255, 248, 255, 255, 255, 40, 6, 0, 0, 135, 0, 0, 0, 136, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 64, 6, 0, 0, 32, 0, 0, 0, 33, 0, 0, 0, 252, 255, 255, 255, 252, 255, 255, 255, 64, 6, 0, 0, 34, 0, 0, 0, 35, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 88, 6, 0, 0, 137, 0, 0, 0, 138, 0, 0, 0, 252, 255, 255, 255, 252, 255, 255, 255, 88, 6, 0, 0, 139, 0, 0, 0, 140, 0, 0, 0, 0, 0, 0, 0, 144, 6, 0, 0, 141, 0, 0, 0, 142, 0, 0, 0, 143, 0, 0, 0, 1, 0, 0, 0, 7, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 176, 6, 0, 0, 144, 0, 0, 0, 145, 0, 0, 0, 143, 0, 0, 0, 2, 0, 0, 0, 8, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 192, 6, 0, 0, 146, 0, 0, 0, 147, 0, 0, 0, 143, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 148, 0, 0, 0, 149, 0, 0, 0, 143, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 21, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 56, 7, 0, 0, 150, 0, 0, 0, 151, 0, 0, 0, 143, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 23, 0, 0, 0, 5, 0, 0, 0, 24, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 120, 7, 0, 0, 152, 0, 0, 0, 153, 0, 0, 0, 143, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 25, 0, 0, 0, 9, 0, 0, 0, 26, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 176, 7, 0, 0, 154, 0, 0, 0, 155, 0, 0, 0, 143, 0, 0, 0, 71, 0, 0, 0, 27, 0, 0, 0, 28, 0, 0, 0, 29, 0, 0, 0, 30, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0, 248, 255, 255, 255, 176, 7, 0, 0, 72, 0, 0, 0, 73, 0, 0, 0, 74, 0, 0, 0, 75, 0, 0, 0, 76, 0, 0, 0, 77, 0, 0, 0, 78, 0, 0, 0, 0, 0, 0, 0, 232, 7, 0, 0, 156, 0, 0, 0, 157, 0, 0, 0, 143, 0, 0, 0, 79, 0, 0, 0, 32, 0, 0, 0, 33, 0, 0, 0, 34, 0, 0, 0, 35, 0, 0, 0, 36, 0, 0, 0, 2, 0, 0, 0, 248, 255, 255, 255, 232, 7, 0, 0, 80, 0, 0, 0, 81, 0, 0, 0, 82, 0, 0, 0, 83, 0, 0, 0, 84, 0, 0, 0, 85, 0, 0, 0, 86, 0, 0, 0, 37, 0, 0, 0, 72, 0, 0, 0, 58, 0, 0, 0, 37, 0, 0, 0, 77, 0, 0, 0, 58, 0, 0, 0, 37, 0, 0, 0, 83, 0, 0, 0, 37, 0, 0, 0, 109, 0, 0, 0, 47, 0, 0, 0, 37, 0, 0, 0, 100, 0, 0, 0, 47, 0, 0, 0, 37, 0, 0, 0, 121, 0, 0, 0, 37, 0, 0, 0, 89, 0, 0, 0, 45, 0, 0, 0, 37, 0, 0, 0, 109, 0, 0, 0, 45, 0, 0, 0, 37, 0, 0, 0, 100, 0, 0, 0, 37, 0, 0, 0, 73, 0, 0, 0, 58, 0, 0, 0, 37, 0, 0, 0, 77, 0, 0, 0, 58, 0, 0, 0, 37, 0, 0, 0, 83, 0, 0, 0, 32, 0, 0, 0, 37, 0, 0, 0, 112, 0, 0, 0, 37, 0, 0, 0, 72, 0, 0, 0, 58, 0, 0, 0, 37, 0, 0, 0, 77, 0, 0, 0, 37, 0, 0, 0, 72, 0, 0, 0, 58, 0, 0, 0, 37, 0, 0, 0, 77, 0, 0, 0, 58, 0, 0, 0, 37, 0, 0, 0, 83, 0, 0, 0, 83, 0, 0, 0, 117, 0, 0, 0, 110, 0, 0, 0, 100, 0, 0, 0, 97, 0, 0, 0, 121 ], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE);
allocate([ 77, 0, 0, 0, 111, 0, 0, 0, 110, 0, 0, 0, 100, 0, 0, 0, 97, 0, 0, 0, 121, 0, 0, 0, 0, 0, 0, 0, 84, 0, 0, 0, 117, 0, 0, 0, 101, 0, 0, 0, 115, 0, 0, 0, 100, 0, 0, 0, 97, 0, 0, 0, 121, 0, 0, 0, 0, 0, 0, 0, 87, 0, 0, 0, 101, 0, 0, 0, 100, 0, 0, 0, 110, 0, 0, 0, 101, 0, 0, 0, 115, 0, 0, 0, 100, 0, 0, 0, 97, 0, 0, 0, 121, 0, 0, 0, 0, 0, 0, 0, 84, 0, 0, 0, 104, 0, 0, 0, 117, 0, 0, 0, 114, 0, 0, 0, 115, 0, 0, 0, 100, 0, 0, 0, 97, 0, 0, 0, 121, 0, 0, 0, 0, 0, 0, 0, 70, 0, 0, 0, 114, 0, 0, 0, 105, 0, 0, 0, 100, 0, 0, 0, 97, 0, 0, 0, 121, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 97, 0, 0, 0, 116, 0, 0, 0, 117, 0, 0, 0, 114, 0, 0, 0, 100, 0, 0, 0, 97, 0, 0, 0, 121, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 117, 0, 0, 0, 110, 0, 0, 0, 0, 0, 0, 0, 77, 0, 0, 0, 111, 0, 0, 0, 110, 0, 0, 0, 0, 0, 0, 0, 84, 0, 0, 0, 117, 0, 0, 0, 101, 0, 0, 0, 0, 0, 0, 0, 87, 0, 0, 0, 101, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 84, 0, 0, 0, 104, 0, 0, 0, 117, 0, 0, 0, 0, 0, 0, 0, 70, 0, 0, 0, 114, 0, 0, 0, 105, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 97, 0, 0, 0, 116, 0, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 97, 0, 0, 0, 110, 0, 0, 0, 117, 0, 0, 0, 97, 0, 0, 0, 114, 0, 0, 0, 121, 0, 0, 0, 0, 0, 0, 0, 70, 0, 0, 0, 101, 0, 0, 0, 98, 0, 0, 0, 114, 0, 0, 0, 117, 0, 0, 0, 97, 0, 0, 0, 114, 0, 0, 0, 121, 0, 0, 0, 0, 0, 0, 0, 77, 0, 0, 0, 97, 0, 0, 0, 114, 0, 0, 0, 99, 0, 0, 0, 104, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 112, 0, 0, 0, 114, 0, 0, 0, 105, 0, 0, 0, 108, 0, 0, 0, 0, 0, 0, 0, 77, 0, 0, 0, 97, 0, 0, 0, 121, 0, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 117, 0, 0, 0, 110, 0, 0, 0, 101, 0, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 117, 0, 0, 0, 108, 0, 0, 0, 121, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 117, 0, 0, 0, 103, 0, 0, 0, 117, 0, 0, 0, 115, 0, 0, 0, 116, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 101, 0, 0, 0, 112, 0, 0, 0, 116, 0, 0, 0, 101, 0, 0, 0, 109, 0, 0, 0, 98, 0, 0, 0, 101, 0, 0, 0, 114, 0, 0, 0, 0, 0, 0, 0, 79, 0, 0, 0, 99, 0, 0, 0, 116, 0, 0, 0, 111, 0, 0, 0, 98, 0, 0, 0, 101, 0, 0, 0, 114, 0, 0, 0, 0, 0, 0, 0, 78, 0, 0, 0, 111, 0, 0, 0, 118, 0, 0, 0, 101, 0, 0, 0, 109, 0, 0, 0, 98, 0, 0, 0, 101, 0, 0, 0, 114, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 101, 0, 0, 0, 99, 0, 0, 0, 101, 0, 0, 0, 109, 0, 0, 0, 98, 0, 0, 0, 101, 0, 0, 0, 114, 0, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 97, 0, 0, 0, 110, 0, 0, 0, 0, 0, 0, 0, 70, 0, 0, 0, 101, 0, 0, 0, 98, 0, 0, 0, 0, 0, 0, 0, 77, 0, 0, 0, 97, 0, 0, 0, 114, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 112, 0, 0, 0, 114, 0, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 117, 0, 0, 0, 110, 0, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 117, 0, 0, 0, 108, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 117, 0, 0, 0, 103, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 101, 0, 0, 0, 112, 0, 0, 0, 0, 0, 0, 0, 79, 0, 0, 0, 99, 0, 0, 0, 116, 0, 0, 0, 0, 0, 0, 0, 78, 0, 0, 0, 111, 0, 0, 0, 118, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 101, 0, 0, 0, 99, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 77, 0, 0, 0, 0, 0, 0, 0, 80, 0, 0, 0, 77, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 97, 0, 0, 0, 32, 0, 0, 0, 37, 0, 0, 0, 98, 0, 0, 0, 32, 0, 0, 0, 37, 0, 0, 0, 100, 0, 0, 0, 32, 0, 0, 0, 37, 0, 0, 0, 72, 0, 0, 0, 58, 0, 0, 0, 37, 0, 0, 0, 77, 0, 0, 0, 58, 0, 0, 0, 37, 0, 0, 0, 83, 0, 0, 0, 32, 0, 0, 0, 37, 0, 0, 0, 89, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 73, 0, 0, 0, 58, 0, 0, 0, 37, 0, 0, 0, 77, 0, 0, 0, 58, 0, 0, 0, 37, 0, 0, 0, 83, 0, 0, 0, 32, 0, 0, 0, 37, 0, 0, 0, 112, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 109, 0, 0, 0, 47, 0, 0, 0, 37, 0, 0, 0, 100, 0, 0, 0, 47, 0, 0, 0, 37, 0, 0, 0, 121, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 72, 0, 0, 0, 58, 0, 0, 0, 37, 0, 0, 0, 77, 0, 0, 0, 58, 0, 0, 0, 37, 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 8, 0, 0, 158, 0, 0, 0, 159, 0, 0, 0, 143, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 64, 8, 0, 0, 160, 0, 0, 0, 161, 0, 0, 0, 143, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 96, 8, 0, 0, 162, 0, 0, 0, 163, 0, 0, 0, 143, 0, 0, 0, 87, 0, 0, 0, 88, 0, 0, 0, 27, 0, 0, 0, 28, 0, 0, 0, 29, 0, 0, 0, 30, 0, 0, 0, 89, 0, 0, 0, 31, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 136, 8, 0, 0, 164, 0, 0, 0, 165, 0, 0, 0, 143, 0, 0, 0, 90, 0, 0, 0, 91, 0, 0, 0, 33, 0, 0, 0, 34, 0, 0, 0, 35, 0, 0, 0, 36, 0, 0, 0, 92, 0, 0, 0, 37, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 168, 8, 0, 0, 166, 0, 0, 0, 167, 0, 0, 0, 143, 0, 0, 0, 93, 0, 0, 0, 94, 0, 0, 0, 39, 0, 0, 0, 40, 0, 0, 0, 41, 0, 0, 0, 42, 0, 0, 0, 95, 0, 0, 0, 43, 0, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 200, 8, 0, 0, 168, 0, 0, 0, 169, 0, 0, 0, 143, 0, 0, 0, 96, 0, 0, 0, 97, 0, 0, 0, 45, 0, 0, 0, 46, 0, 0, 0, 47, 0, 0, 0, 48, 0, 0, 0, 98, 0, 0, 0, 49, 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 232, 8, 0, 0, 170, 0, 0, 0, 171, 0, 0, 0, 143, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 16, 9, 0, 0, 172, 0, 0, 0, 173, 0, 0, 0, 143, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 56, 9, 0, 0, 174, 0, 0, 0, 175, 0, 0, 0, 143, 0, 0, 0, 1, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 96, 9, 0, 0, 176, 0, 0, 0, 177, 0, 0, 0, 143, 0, 0, 0, 2, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 136, 9, 0, 0, 178, 0, 0, 0, 179, 0, 0, 0, 143, 0, 0, 0, 16, 0, 0, 0, 4, 0, 0, 0, 51, 0, 0, 0, 0, 0, 0, 0, 176, 9, 0, 0, 180, 0, 0, 0, 181, 0, 0, 0, 143, 0, 0, 0, 17, 0, 0, 0, 5, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 208, 9, 0, 0, 182, 0, 0, 0, 183, 0, 0, 0, 143, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 11, 0, 0, 0, 99, 0, 0, 0, 100, 0, 0, 0, 12, 0, 0, 0, 101, 0, 0, 0, 0, 0, 0, 0, 8, 10, 0, 0, 182, 0, 0, 0, 184, 0, 0, 0, 143, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 11, 0, 0, 0, 99, 0, 0, 0, 100, 0, 0, 0, 12, 0, 0, 0, 101, 0, 0, 0, 0, 0, 0, 0, 56, 10, 0, 0, 185, 0, 0, 0, 186, 0, 0, 0, 143, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 13, 0, 0, 0, 102, 0, 0, 0, 103, 0, 0, 0, 14, 0, 0, 0, 104, 0, 0, 0, 0, 0, 0, 0, 120, 10, 0, 0, 187, 0, 0, 0, 188, 0, 0, 0, 143, 0, 0, 0, 0, 0, 0, 0, 136, 10, 0, 0, 189, 0, 0, 0, 190, 0, 0, 0, 143, 0, 0, 0, 29, 0, 0, 0, 18, 0, 0, 0, 30, 0, 0, 0, 19, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0, 20, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 208, 10, 0, 0, 191, 0, 0, 0, 192, 0, 0, 0, 143, 0, 0, 0, 105, 0, 0, 0, 106, 0, 0, 0, 53, 0, 0, 0, 54, 0, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 224, 10, 0, 0, 193, 0, 0, 0, 194, 0, 0, 0, 143, 0, 0, 0, 107, 0, 0, 0, 108, 0, 0, 0, 56, 0, 0, 0, 57, 0, 0, 0, 58, 0, 0, 0, 116, 0, 0, 0, 114, 0, 0, 0, 117, 0, 0, 0, 101, 0, 0, 0, 0, 0, 0, 0, 102, 0, 0, 0, 97, 0, 0, 0, 108, 0, 0, 0, 115, 0, 0, 0, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 160, 6, 0, 0, 182, 0, 0, 0, 195, 0, 0, 0, 143, 0, 0, 0, 0, 0, 0, 0, 176, 10, 0, 0, 182, 0, 0, 0, 196, 0, 0, 0, 143, 0, 0, 0, 21, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 32, 0, 0, 0, 22, 0, 0, 0, 33, 0, 0, 0, 23, 0, 0, 0, 34, 0, 0, 0, 5, 0, 0, 0, 24, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 24, 10, 0, 0, 182, 0, 0, 0, 197, 0, 0, 0, 143, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 17, 0, 0, 0, 109, 0, 0, 0, 110, 0, 0, 0, 18, 0, 0, 0, 111, 0, 0, 0, 0, 0, 0, 0, 88, 10, 0, 0, 182, 0, 0, 0, 198, 0, 0, 0, 143, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 19, 0, 0, 0, 112, 0, 0, 0, 113, 0, 0, 0, 20, 0, 0, 0, 114, 0, 0, 0, 0, 0, 0, 0, 224, 9, 0, 0, 182, 0, 0, 0, 199, 0, 0, 0, 143, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 11, 0, 0, 0, 99, 0, 0, 0, 100, 0, 0, 0, 12, 0, 0, 0, 101, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 200, 0, 0, 0, 201, 0, 0, 0, 202, 0, 0, 0, 203, 0, 0, 0, 25, 0, 0, 0, 6, 0, 0, 0, 1, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 16, 11, 0, 0, 200, 0, 0, 0, 204, 0, 0, 0, 202, 0, 0, 0, 203, 0, 0, 0, 25, 0, 0, 0, 7, 0, 0, 0, 2, 0, 0, 0, 10, 0, 0, 0, 132, 128, 0, 0, 0, 0, 0, 0, 56, 11, 0, 0, 205, 0, 0, 0, 206, 0, 0, 0, 115, 0, 0, 0, 0, 0, 0, 0, 72, 11, 0, 0, 207, 0, 0, 0, 208, 0, 0, 0, 116, 0, 0, 0, 0, 0, 0, 0, 88, 11, 0, 0, 207, 0, 0, 0, 209, 0, 0, 0, 116, 0, 0, 0, 0, 0, 0, 0, 136, 11, 0, 0, 200, 0, 0, 0, 210, 0, 0, 0, 202, 0, 0, 0, 203, 0, 0, 0, 25, 0, 0, 0, 8, 0, 0, 0, 3, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 3, 32, 2, 32, 2, 32, 2, 32, 2, 32, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 1, 96, 4, 192, 4, 192, 4, 192, 4, 192, 4, 192, 4, 192, 4, 192, 4, 192, 4, 192, 4, 192, 4, 192, 4, 192, 4, 192, 4, 192, 4, 192, 8, 216, 8, 216, 8, 216, 8, 216, 8, 216, 8, 216, 8, 216, 8, 216, 8, 216, 8, 216, 4, 192, 4, 192, 4, 192, 4, 192, 4, 192, 4, 192, 4, 192, 8, 213, 8, 213, 8, 213, 8, 213, 8, 213, 8, 213, 8, 197, 8, 197, 8, 197, 8, 197, 8, 197, 8, 197, 8, 197, 8, 197, 8, 197, 8, 197, 8, 197, 8, 197, 8, 197, 8, 197, 8, 197, 8, 197, 8, 197, 8, 197, 8, 197, 8, 197, 4, 192, 4, 192, 4, 192, 4, 192, 4, 192, 4, 192, 8, 214, 8, 214, 8, 214, 8, 214, 8, 214, 8, 214, 8, 198, 8, 198, 8, 198, 8, 198, 8, 198, 8, 198, 8, 198, 8, 198, 8, 198, 8, 198, 8, 198, 8, 198, 8, 198, 8, 198, 8, 198, 8, 198, 8, 198, 8, 198, 8, 198, 8, 198, 4, 192, 4, 192, 4, 192, 4, 192, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 103, 108, 111, 98, 97, 108, 0, 78, 97, 78, 0, 73, 110, 102, 105, 110, 105, 116, 121, 0, 116, 111, 112, 109, 111, 115, 116, 0, 73, 110, 116, 56, 65, 114, 114, 97, 121, 0, 73, 110, 116, 49, 54, 65, 114, 114, 97, 121, 0, 73, 110, 116, 51, 50, 65, 114, 114, 97, 121, 0, 85, 105, 110, 116, 56, 65, 114, 114, 97, 121, 0, 85, 105, 110, 116, 49, 54, 65, 114, 114, 97, 121, 0, 85, 105, 110, 116, 51, 50, 65, 114, 114, 97, 121, 0, 70, 108, 111, 97, 116, 51, 50, 65, 114, 114, 97, 121, 0, 70, 108, 111, 97, 116, 54, 52, 65, 114, 114, 97, 121, 0, 105, 109, 112, 111, 115, 115, 105, 98, 108, 101, 45, 99, 111, 110, 116, 105, 110, 117, 101, 0, 77, 97, 116, 104, 0, 105, 109, 117, 108, 0, 99, 108, 122, 51, 50, 0, 102, 114, 111, 117, 110, 100, 0, 97, 115, 109, 50, 119, 97, 115, 109, 0, 102, 54, 52, 45, 114, 101, 109, 0, 102, 54, 52, 45, 116, 111, 45, 105, 110, 116, 0, 103, 108, 111, 98, 97, 108, 46, 77, 97, 116, 104, 0, 97, 115, 109, 50, 119, 97, 115, 109, 95, 105, 51, 50, 95, 116, 101, 109, 112, 0, 100, 101, 98, 117, 103, 103, 101, 114, 0, 95, 95, 103, 114, 111, 119, 87, 97, 115, 109, 77, 101, 109, 111, 114, 121, 0, 110, 101, 119, 83, 105, 122, 101, 0, 102, 117, 110, 99, 0, 114, 101, 115, 117, 108, 116, 0, 115, 101, 103, 109, 101, 110, 116, 0, 101, 120, 112, 111, 114, 116, 0, 105, 109, 112, 111, 114, 116, 0, 108, 111, 99, 97, 108, 0, 99, 97, 108, 108, 95, 105, 109, 112, 111, 114, 116, 0, 99, 97, 108, 108, 95, 105, 110, 100, 105, 114, 101, 99, 116, 0, 98, 114, 95, 105, 102, 0, 116, 104, 101, 110, 0, 45, 105, 110, 102, 105, 110, 105, 116, 121, 0, 45, 110, 97, 110, 0, 98, 114, 0, 117, 115, 101, 32, 97, 115, 109, 0, 98, 117, 102, 102, 101, 114, 0, 101, 110, 118, 0, 102, 97, 107, 101, 95, 114, 101, 116, 117, 114, 110, 95, 119, 97, 107, 97, 49, 50, 51, 0, 77, 97, 116, 104, 95, 105, 109, 117, 108, 0, 77, 97, 116, 104, 95, 99, 108, 122, 51, 50, 0, 77, 97, 116, 104, 95, 99, 116, 122, 51, 50, 0, 77, 97, 116, 104, 95, 112, 111, 112, 99, 110, 116, 51, 50, 0, 77, 97, 116, 104, 95, 97, 98, 115, 0, 77, 97, 116, 104, 95, 99, 101, 105, 108, 0, 77, 97, 116, 104, 95, 102, 108, 111, 111, 114, 0, 77, 97, 116, 104, 95, 116, 114, 117, 110, 99, 0, 77, 97, 116, 104, 95, 78, 69, 65, 82, 69, 83, 84, 0, 77, 97, 116, 104, 95, 115, 113, 114, 116, 0, 77, 97, 116, 104, 95, 109, 97, 120, 0, 77, 97, 116, 104, 95, 109, 105, 110, 0, 97, 115, 115, 101, 114, 116, 95, 114, 101, 116, 117, 114, 110, 0, 97, 115, 115, 101, 114, 116, 95, 116, 114, 97, 112, 0, 97, 115, 115, 101, 114, 116, 95, 105, 110, 118, 97, 108, 105, 100, 0, 115, 112, 101, 99, 116, 101, 115, 116, 0, 105, 110, 118, 111, 107, 101, 0, 101, 120, 105, 116, 0, 119, 97, 115, 109, 0, 42, 114, 101, 116, 117, 114, 110, 58, 41, 42, 0, 109, 111, 100, 105, 102, 105, 101, 114, 32, 63, 32, 112, 111, 115, 105, 116, 105, 118, 101, 91, 52, 93, 32, 61, 61, 32, 39, 48, 39, 32, 38, 38, 32, 112, 111, 115, 105, 116, 105, 118, 101, 91, 53, 93, 32, 61, 61, 32, 39, 120, 39, 32, 58, 32, 49, 0, 115, 114, 99, 47, 112, 97, 114, 115, 105, 110, 103, 46, 104, 0, 112, 97, 114, 115, 101, 67, 111, 110, 115, 116, 0, 114, 101, 116, 45, 62, 118, 97, 108, 117, 101, 46, 116, 121, 112, 101, 32, 61, 61, 32, 116, 121, 112, 101, 0, 115, 0, 115, 114, 99, 47, 101, 109, 115, 99, 114, 105, 112, 116, 101, 110, 45, 111, 112, 116, 105, 109, 105, 122, 101, 114, 47, 105, 115, 116, 114, 105, 110, 103, 46, 104, 0, 73, 83, 116, 114, 105, 110, 103, 0, 33, 119, 97, 115, 109, 58, 58, 84, 104, 114, 101, 97, 100, 80, 111, 111, 108, 58, 58, 105, 115, 82, 117, 110, 110, 105, 110, 103, 40, 41, 0, 115, 101, 116, 0, 78, 83, 116, 51, 95, 95, 49, 49, 57, 98, 97, 115, 105, 99, 95, 105, 115, 116, 114, 105, 110, 103, 115, 116, 114, 101, 97, 109, 73, 99, 78, 83, 95, 49, 49, 99, 104, 97, 114, 95, 116, 114, 97, 105, 116, 115, 73, 99, 69, 69, 78, 83, 95, 57, 97, 108, 108, 111, 99, 97, 116, 111, 114, 73, 99, 69, 69, 69, 69, 0, 78, 83, 116, 51, 95, 95, 49, 49, 53, 98, 97, 115, 105, 99, 95, 115, 116, 114, 105, 110, 103, 98, 117, 102, 73, 99, 78, 83, 95, 49, 49, 99, 104, 97, 114, 95, 116, 114, 97, 105, 116, 115, 73, 99, 69, 69, 78, 83, 95, 57, 97, 108, 108, 111, 99, 97, 116, 111, 114, 73, 99, 69, 69, 69, 69, 0, 116, 121, 112, 101, 32, 61, 61, 32, 87, 97, 115, 109, 84, 121, 112, 101, 58, 58, 105, 51, 50, 0, 115, 114, 99, 47, 119, 97, 115, 109, 46, 104, 0, 99, 97, 115, 116, 84, 111, 70, 51, 50, 0, 116, 121, 112, 101, 32, 61, 61, 32, 87, 97, 115, 109, 84, 121, 112, 101, 58, 58, 105, 54, 52, 0, 99, 97, 115, 116, 84, 111, 70, 54, 52, 0, 100, 117, 109, 112, 105, 110, 103, 32, 0, 32, 58, 32, 0, 46, 10, 0, 32, 41, 0, 105, 115, 76, 105, 115, 116, 95, 0, 115, 114, 99, 47, 119, 97, 115, 109, 45, 115, 45, 112, 97, 114, 115, 101, 114, 46, 104, 0, 108, 105, 115, 116, 0, 33, 105, 115, 76, 105, 115, 116, 95, 0, 99, 95, 115, 116, 114, 0, 115, 116, 97, 99, 107, 46, 115, 105, 122, 101, 40, 41, 0, 112, 97, 114, 115, 101, 0, 116, 121, 112, 101, 32, 61, 61, 32, 87, 97, 115, 109, 84, 121, 112, 101, 58, 58, 102, 54, 52, 0, 103, 101, 116, 102, 54, 52, 0, 78, 83, 116, 51, 95, 95, 49, 49, 48, 95, 95, 102, 117, 110, 99, 116, 105, 111, 110, 54, 95, 95, 102, 117, 110, 99, 73, 90, 78, 52, 119, 97, 115, 109, 50, 50, 83, 69, 120, 112, 114, 101, 115, 115, 105, 111, 110, 87, 97, 115, 109, 66, 117, 105, 108, 100, 101, 114, 67, 49, 69, 82, 78, 83, 50, 95, 54, 77, 111, 100, 117, 108, 101, 69, 82, 78, 83, 50, 95, 55, 69, 108, 101, 109, 101, 110, 116, 69, 69, 85, 108, 118, 69, 95, 78, 83, 95, 57, 97, 108, 108, 111, 99, 97, 116, 111, 114, 73, 83, 56, 95, 69, 69, 70, 118, 118, 69, 69, 69, 0, 78, 83, 116, 51, 95, 95, 49, 49, 48, 95, 95, 102, 117, 110, 99, 116, 105, 111, 110, 54, 95, 95, 98, 97, 115, 101, 73, 70, 118, 118, 69, 69, 69, 0, 90, 78, 52, 119, 97, 115, 109, 50, 50, 83, 69, 120, 112, 114, 101, 115, 115, 105, 111, 110, 87, 97, 115, 109, 66, 117, 105, 108, 100, 101, 114, 67, 49, 69, 82, 78, 83, 95, 54, 77, 111, 100, 117, 108, 101, 69, 82, 78, 83, 95, 55, 69, 108, 101, 109, 101, 110, 116, 69, 69, 85, 108, 118, 69, 95, 0, 109, 111, 100, 117, 108, 101, 91, 48, 93, 45, 62, 115, 116, 114, 40, 41, 32, 61, 61, 32, 77, 79, 68, 85, 76, 69, 0, 83, 69, 120, 112, 114, 101, 115, 115, 105, 111, 110, 87, 97, 115, 109, 66, 117, 105, 108, 100, 101, 114, 0, 115, 116, 114, 0, 102, 117, 110, 99, 46, 105, 115, 76, 105, 115, 116, 40, 41, 0, 112, 97, 114, 115, 101, 84, 121, 112, 101, 0, 78, 83, 116, 51, 95, 95, 49, 49, 55, 98, 97, 100, 95, 102, 117, 110, 99, 116, 105, 111, 110, 95, 99, 97, 108, 108, 69, 0, 102, 117, 110, 99, 116, 105, 111, 110, 84, 121, 112, 101, 115, 77, 97, 112, 91, 110, 97, 109, 101, 93, 0, 103, 101, 116, 70, 117, 110, 99, 116, 105, 111, 110, 84, 121, 112, 101, 0, 114, 101, 115, 117, 108, 116, 91, 48, 93, 45, 62, 115, 116, 114, 40, 41, 32, 61, 61, 32, 82, 69, 83, 85, 76, 84, 0, 112, 97, 114, 115, 101, 73, 109, 112, 111, 114, 116, 0, 98, 97, 100, 32, 109, 111, 100, 117, 108, 101, 32, 101, 108, 101, 109, 101, 110, 116, 32, 0, 99, 117, 114, 114, 70, 117, 110, 99, 116, 105, 111, 110, 45, 62, 114, 101, 115, 117, 108, 116, 32, 61, 61, 32, 114, 101, 115, 117, 108, 116, 0, 112, 97, 114, 115, 101, 70, 117, 110, 99, 116, 105, 111, 110, 0, 97, 98, 111, 114, 116, 105, 110, 103, 32, 111, 110, 32, 0, 108, 101, 102, 116, 45, 62, 116, 121, 112, 101, 32, 33, 61, 32, 117, 110, 114, 101, 97, 99, 104, 97, 98, 108, 101, 32, 38, 38, 32, 114, 105, 103, 104, 116, 45, 62, 116, 121, 112, 101, 32, 33, 61, 32, 117, 110, 114, 101, 97, 99, 104, 97, 98, 108, 101, 32, 63, 32, 108, 101, 102, 116, 45, 62, 116, 121, 112, 101, 32, 61, 61, 32, 114, 105, 103, 104, 116, 45, 62, 116, 121, 112, 101, 32, 58, 32, 116, 114, 117, 101, 0, 102, 105, 110, 97, 108, 105, 122, 101, 0, 101, 120, 116, 114, 97, 91, 49, 93, 32, 61, 61, 32, 39, 54, 39, 0, 109, 97, 107, 101, 76, 111, 97, 100, 0, 101, 120, 116, 114, 97, 91, 49, 93, 32, 61, 61, 32, 39, 50, 39, 0, 109, 97, 107, 101, 83, 116, 111, 114, 101, 0, 108, 97, 98, 101, 108, 83, 116, 97, 99, 107, 46, 98, 97, 99, 107, 40, 41, 32, 61, 61, 32, 99, 117, 114, 114, 45, 62, 110, 97, 109, 101, 0, 109, 97, 107, 101, 66, 108, 111, 99, 107, 0, 105, 110, 118, 97, 108, 105, 100, 0, 105, 109, 112, 111, 114, 116, 115, 77, 97, 112, 91, 110, 97, 109, 101, 93, 0, 103, 101, 116, 73, 109, 112, 111, 114, 116, 0, 114, 101, 116, 45, 62, 102, 117, 108, 108, 84, 121, 112, 101, 0, 109, 97, 107, 101, 67, 97, 108, 108, 73, 110, 100, 105, 114, 101, 99, 116, 0, 108, 111, 99, 97, 108, 73, 110, 100, 105, 99, 101, 115, 46, 99, 111, 117, 110, 116, 40, 110, 97, 109, 101, 41, 32, 62, 32, 48, 0, 103, 101, 116, 76, 111, 99, 97, 108, 73, 110, 100, 101, 120, 0, 105, 102, 45, 116, 114, 117, 101, 0, 105, 102, 45, 101, 108, 115, 101, 0, 95, 105, 100, 32, 61, 61, 32, 84, 40, 41, 46, 95, 105, 100, 0, 99, 97, 115, 116, 0, 108, 111, 111, 112, 45, 111, 117, 116, 0, 108, 111, 111, 112, 45, 105, 110, 0, 99, 117, 114, 114, 91, 48, 93, 45, 62, 115, 116, 114, 40, 41, 32, 61, 61, 32, 83, 69, 71, 77, 69, 78, 84, 0, 112, 97, 114, 115, 101, 77, 101, 109, 111, 114, 121, 0, 115, 91, 50, 93, 45, 62, 115, 116, 114, 40, 41, 32, 61, 61, 32, 77, 69, 77, 79, 82, 89, 0, 112, 97, 114, 115, 101, 69, 120, 112, 111, 114, 116, 0, 78, 52, 119, 97, 115, 109, 52, 80, 97, 115, 115, 69, 0, 78, 52, 119, 97, 115, 109, 50, 50, 83, 104, 101, 108, 108, 69, 120, 116, 101, 114, 110, 97, 108, 73, 110, 116, 101, 114, 102, 97, 99, 101, 69, 0, 78, 52, 119, 97, 115, 109, 49, 52, 77, 111, 100, 117, 108, 101, 73, 110, 115, 116, 97, 110, 99, 101, 49, 55, 69, 120, 116, 101, 114, 110, 97, 108, 73, 110, 116, 101, 114, 102, 97, 99, 101, 69, 0, 115, 101, 103, 109, 101, 110, 116, 46, 111, 102, 102, 115, 101, 116, 32, 43, 32, 115, 101, 103, 109, 101, 110, 116, 46, 115, 105, 122, 101, 32, 60, 61, 32, 119, 97, 115, 109, 46, 109, 101, 109, 111, 114, 121, 46, 105, 110, 105, 116, 105, 97, 108, 32, 42, 32, 119, 97, 115, 109, 58, 58, 77, 101, 109, 111, 114, 121, 58, 58, 107, 80, 97, 103, 101, 83, 105, 122, 101, 0, 115, 114, 99, 47, 115, 104, 101, 108, 108, 45, 105, 110, 116, 101, 114, 102, 97, 99, 101, 46, 104, 0, 105, 110, 105, 116, 0, 101, 120, 105, 116, 40, 41, 10, 0, 78, 52, 119, 97, 115, 109, 49, 51, 69, 120, 105, 116, 69, 120, 99, 101, 112, 116, 105, 111, 110, 69, 0, 99, 97, 108, 108, 73, 109, 112, 111, 114, 116, 32, 0, 46, 99, 111, 110, 115, 116, 32, 0, 110, 111, 110, 101, 0, 58, 48, 120, 0, 116, 121, 112, 101, 32, 61, 61, 32, 87, 97, 115, 109, 84, 121, 112, 101, 58, 58, 102, 51, 50, 0, 103, 101, 116, 102, 51, 50, 0, 45, 48, 0, 37, 108, 102, 0, 100, 32, 62, 61, 32, 48, 0, 115, 114, 99, 47, 101, 109, 115, 99, 114, 105, 112, 116, 101, 110, 45, 111, 112, 116, 105, 109, 105, 122, 101, 114, 47, 115, 105, 109, 112, 108, 101, 95, 97, 115, 116, 46, 104, 0, 110, 117, 109, 84, 111, 83, 116, 114, 105, 110, 103, 0, 48, 120, 37, 108, 108, 120, 0, 37, 108, 108, 117, 0, 37, 108, 108, 120, 0, 37, 101, 0, 37, 46, 48, 102, 0, 110, 117, 109, 32, 60, 32, 49, 48, 48, 48, 0, 103, 101, 116, 105, 51, 50, 0, 103, 101, 116, 105, 54, 52, 0, 114, 101, 105, 110, 116, 101, 114, 112, 114, 101, 116, 105, 51, 50, 0, 114, 101, 105, 110, 116, 101, 114, 112, 114, 101, 116, 105, 54, 52, 0, 91, 116, 114, 97, 112, 32, 0, 93, 10, 0, 78, 52, 119, 97, 115, 109, 49, 51, 84, 114, 97, 112, 69, 120, 99, 101, 112, 116, 105, 111, 110, 69, 0, 115, 116, 97, 99, 107, 32, 108, 105, 109, 105, 116, 0, 115, 114, 99, 47, 119, 97, 115, 109, 45, 105, 110, 116, 101, 114, 112, 114, 101, 116, 101, 114, 46, 104, 0, 99, 97, 108, 108, 70, 117, 110, 99, 116, 105, 111, 110, 0, 33, 102, 108, 111, 119, 46, 98, 114, 101, 97, 107, 105, 110, 103, 40, 41, 32, 124, 124, 32, 102, 108, 111, 119, 46, 98, 114, 101, 97, 107, 84, 111, 32, 61, 61, 32, 82, 69, 84, 85, 82, 78, 95, 70, 76, 79, 87, 0, 102, 117, 110, 99, 116, 105, 111, 110, 45, 62, 114, 101, 115, 117, 108, 116, 32, 61, 61, 32, 114, 101, 116, 46, 116, 121, 112, 101, 0, 102, 117, 110, 99, 116, 105, 111, 110, 83, 116, 97, 99, 107, 46, 98, 97, 99, 107, 40, 41, 32, 61, 61, 32, 110, 97, 109, 101, 0, 102, 117, 110, 99, 116, 105, 111, 110, 115, 77, 97, 112, 91, 110, 97, 109, 101, 93, 0, 103, 101, 116, 70, 117, 110, 99, 116, 105, 111, 110, 0, 70, 117, 110, 99, 116, 105, 111, 110, 32, 96, 0, 96, 32, 101, 120, 112, 101, 99, 116, 115, 32, 0, 32, 112, 97, 114, 97, 109, 101, 116, 101, 114, 115, 44, 32, 103, 111, 116, 32, 0, 32, 97, 114, 103, 117, 109, 101, 110, 116, 115, 46, 0, 102, 117, 110, 99, 116, 105, 111, 110, 45, 62, 105, 115, 80, 97, 114, 97, 109, 40, 105, 41, 0, 70, 117, 110, 99, 116, 105, 111, 110, 83, 99, 111, 112, 101, 0, 96, 32, 101, 120, 112, 101, 99, 116, 115, 32, 116, 121, 112, 101, 32, 0, 32, 102, 111, 114, 32, 112, 97, 114, 97, 109, 101, 116, 101, 114, 32, 0, 44, 32, 103, 111, 116, 32, 0, 102, 117, 110, 99, 116, 105, 111, 110, 45, 62, 105, 115, 86, 97, 114, 40, 105, 41, 0, 110, 97, 109, 101, 46, 115, 116, 114, 0, 105, 110, 100, 101, 120, 32, 60, 32, 108, 111, 99, 97, 108, 78, 97, 109, 101, 115, 46, 115, 105, 122, 101, 40, 41, 32, 38, 38, 32, 108, 111, 99, 97, 108, 78, 97, 109, 101, 115, 91, 105, 110, 100, 101, 120, 93, 46, 105, 115, 40, 41, 0, 103, 101, 116, 76, 111, 99, 97, 108, 78, 97, 109, 101, 0, 99, 97, 108, 108, 73, 110, 100, 105, 114, 101, 99, 116, 58, 32, 111, 118, 101, 114, 102, 108, 111, 119, 0, 99, 97, 108, 108, 73, 110, 100, 105, 114, 101, 99, 116, 58, 32, 98, 97, 100, 32, 116, 121, 112, 101, 0, 102, 108, 111, 119, 46, 118, 97, 108, 117, 101, 46, 116, 121, 112, 101, 32, 61, 61, 32, 99, 117, 114, 114, 45, 62, 116, 121, 112, 101, 0, 118, 105, 115, 105, 116, 83, 101, 116, 76, 111, 99, 97, 108, 0, 111, 102, 102, 115, 101, 116, 32, 62, 32, 109, 101, 109, 111, 114, 121, 0, 102, 105, 110, 97, 108, 32, 62, 32, 109, 101, 109, 111, 114, 121, 0, 98, 121, 116, 101, 115, 32, 62, 32, 109, 101, 109, 111, 114, 121, 0, 104, 105, 103, 104, 101, 115, 116, 32, 62, 32, 109, 101, 109, 111, 114, 121, 0, 58, 32, 0, 32, 62, 32, 0, 78, 83, 116, 51, 95, 95, 49, 49, 56, 98, 97, 115, 105, 99, 95, 115, 116, 114, 105, 110, 103, 115, 116, 114, 101, 97, 109, 73, 99, 78, 83, 95, 49, 49, 99, 104, 97, 114, 95, 116, 114, 97, 105, 116, 115, 73, 99, 69, 69, 78, 83, 95, 57, 97, 108, 108, 111, 99, 97, 116, 111, 114, 73, 99, 69, 69, 69, 69, 0, 101, 120, 116, 101, 110, 100, 84, 111, 83, 73, 54, 52, 0, 101, 120, 116, 101, 110, 100, 84, 111, 85, 73, 54, 52, 0, 116, 114, 117, 110, 99, 97, 116, 101, 84, 111, 73, 51, 50, 0, 116, 114, 117, 110, 99, 83, 70, 108, 111, 97, 116, 32, 111, 102, 32, 110, 97, 110, 0, 105, 51, 50, 46, 116, 114, 117, 110, 99, 83, 70, 108, 111, 97, 116, 32, 111, 118, 101, 114, 102, 108, 111, 119, 0, 105, 54, 52, 46, 116, 114, 117, 110, 99, 83, 70, 108, 111, 97, 116, 32, 111, 118, 101, 114, 102, 108, 111, 119, 0, 116, 114, 117, 110, 99, 85, 70, 108, 111, 97, 116, 32, 111, 102, 32, 110, 97, 110, 0, 105, 51, 50, 46, 116, 114, 117, 110, 99, 85, 70, 108, 111, 97, 116, 32, 111, 118, 101, 114, 102, 108, 111, 119, 0, 105, 54, 52, 46, 116, 114, 117, 110, 99, 85, 70, 108, 111, 97, 116, 32, 111, 118, 101, 114, 102, 108, 111, 119, 0, 99, 97, 115, 116, 84, 111, 73, 51, 50, 0, 101, 120, 116, 101, 110, 100, 84, 111, 70, 54, 52, 0, 99, 97, 115, 116, 84, 111, 73, 54, 52, 0, 116, 114, 117, 110, 99, 97, 116, 101, 84, 111, 70, 51, 50, 0, 105, 115, 67, 111, 110, 99, 114, 101, 116, 101, 87, 97, 115, 109, 84, 121, 112, 101, 40, 99, 117, 114, 114, 45, 62, 108, 101, 102, 116, 45, 62, 116, 121, 112, 101, 41, 32, 63, 32, 108, 101, 102, 116, 46, 116, 121, 112, 101, 32, 61, 61, 32, 99, 117, 114, 114, 45, 62, 108, 101, 102, 116, 45, 62, 116, 121, 112, 101, 32, 58, 32, 116, 114, 117, 101, 0, 118, 105, 115, 105, 116, 66, 105, 110, 97, 114, 121, 0, 105, 115, 67, 111, 110, 99, 114, 101, 116, 101, 87, 97, 115, 109, 84, 121, 112, 101, 40, 99, 117, 114, 114, 45, 62, 114, 105, 103, 104, 116, 45, 62, 116, 121, 112, 101, 41, 32, 63, 32, 114, 105, 103, 104, 116, 46, 116, 121, 112, 101, 32, 61, 61, 32, 99, 117, 114, 114, 45, 62, 114, 105, 103, 104, 116, 45, 62, 116, 121, 112, 101, 32, 58, 32, 116, 114, 117, 101, 0, 105, 51, 50, 46, 100, 105, 118, 95, 115, 32, 98, 121, 32, 48, 0, 105, 51, 50, 46, 100, 105, 118, 95, 115, 32, 111, 118, 101, 114, 102, 108, 111, 119, 0, 105, 51, 50, 46, 100, 105, 118, 95, 117, 32, 98, 121, 32, 48, 0, 105, 51, 50, 46, 114, 101, 109, 95, 115, 32, 98, 121, 32, 48, 0, 105, 51, 50, 46, 114, 101, 109, 95, 117, 32, 98, 121, 32, 48, 0, 105, 54, 52, 46, 100, 105, 118, 95, 115, 32, 98, 121, 32, 48, 0, 105, 54, 52, 46, 100, 105, 118, 95, 115, 32, 111, 118, 101, 114, 102, 108, 111, 119, 0, 105, 54, 52, 46, 100, 105, 118, 95, 117, 32, 98, 121, 32, 48, 0, 105, 54, 52, 46, 114, 101, 109, 95, 115, 32, 98, 121, 32, 48, 0, 105, 54, 52, 46, 114, 101, 109, 95, 117, 32, 98, 121, 32, 48, 0, 103, 114, 111, 119, 77, 101, 109, 111, 114, 121, 58, 32, 100, 101, 108, 116, 97, 32, 114, 101, 108, 97, 116, 105, 118, 101, 108, 121, 32, 116, 111, 111, 32, 98, 105, 103, 0, 103, 114, 111, 119, 77, 101, 109, 111, 114, 121, 58, 32, 100, 101, 108, 116, 97, 32, 111, 98, 106, 101, 99, 116, 105, 118, 101, 108, 121, 32, 116, 111, 111, 32, 98, 105, 103, 0, 103, 114, 111, 119, 77, 101, 109, 111, 114, 121, 58, 32, 101, 120, 99, 101, 101, 100, 115, 32, 109, 97, 120, 0, 99, 97, 108, 108, 69, 120, 112, 111, 114, 116, 32, 110, 111, 116, 32, 102, 111, 117, 110, 100, 0, 112, 97, 115, 115, 73, 110, 102, 111, 115, 46, 102, 105, 110, 100, 40, 110, 97, 109, 101, 41, 32, 61, 61, 32, 112, 97, 115, 115, 73, 110, 102, 111, 115, 46, 101, 110, 100, 40, 41, 0, 115, 114, 99, 47, 112, 97, 115, 115, 46, 99, 112, 112, 0, 114, 101, 103, 105, 115, 116, 101, 114, 80, 97, 115, 115, 0, 91, 80, 97, 115, 115, 82, 117, 110, 110, 101, 114, 93, 32, 114, 117, 110, 110, 105, 110, 103, 32, 112, 97, 115, 115, 101, 115, 46, 46, 46, 0, 91, 80, 97, 115, 115, 82, 117, 110, 110, 101, 114, 93, 32, 32, 32, 114, 117, 110, 110, 105, 110, 103, 32, 112, 97, 115, 115, 58, 32, 0, 46, 46, 46, 32, 0, 32, 115, 101, 99, 111, 110, 100, 115, 46, 0, 91, 80, 97, 115, 115, 82, 117, 110, 110, 101, 114, 93, 32, 112, 97, 115, 115, 101, 115, 32, 116, 111, 111, 107, 32, 0, 109, 101, 114, 103, 101, 45, 98, 108, 111, 99, 107, 115, 0, 109, 101, 114, 103, 101, 115, 32, 98, 108, 111, 99, 107, 115, 32, 116, 111, 32, 116, 104, 101, 105, 114, 32, 112, 97, 114, 101, 110, 116, 115, 0, 78, 83, 116, 51, 95, 95, 49, 49, 48, 95, 95, 102, 117, 110, 99, 116, 105, 111, 110, 54, 95, 95, 102, 117, 110, 99, 73, 90, 78, 52, 119, 97, 115, 109, 49, 50, 82, 101, 103, 105, 115, 116, 101, 114, 80, 97, 115, 115, 73, 78, 83, 50, 95, 49, 49, 77, 101, 114, 103, 101, 66, 108, 111, 99, 107, 115, 69, 69, 67, 49, 69, 80, 75, 99, 83, 55, 95, 69, 85, 108, 118, 69, 95, 78, 83, 95, 57, 97, 108, 108, 111, 99, 97, 116, 111, 114, 73, 83, 56, 95, 69, 69, 70, 80, 78, 83, 50, 95, 52, 80, 97, 115, 115, 69, 118, 69, 69, 69, 0, 78, 83, 116, 51, 95, 95, 49, 49, 48, 95, 95, 102, 117, 110, 99, 116, 105, 111, 110, 54, 95, 95, 98, 97, 115, 101, 73, 70, 80, 78, 52, 119, 97, 115, 109, 52, 80, 97, 115, 115, 69, 118, 69, 69, 69, 0, 78, 52, 119, 97, 115, 109, 49, 48, 87, 97, 108, 107, 101, 114, 80, 97, 115, 115, 73, 78, 83, 95, 49, 48, 80, 111, 115, 116, 87, 97, 108, 107, 101, 114, 73, 78, 83, 95, 49, 49, 77, 101, 114, 103, 101, 66, 108, 111, 99, 107, 115, 69, 78, 83, 95, 55, 86, 105, 115, 105, 116, 111, 114, 73, 83, 50, 95, 118, 69, 69, 69, 69, 69, 69, 0, 78, 52, 119, 97, 115, 109, 49, 48, 80, 111, 115, 116, 87, 97, 108, 107, 101, 114, 73, 78, 83, 95, 49, 49, 77, 101, 114, 103, 101, 66, 108, 111, 99, 107, 115, 69, 78, 83, 95, 55, 86, 105, 115, 105, 116, 111, 114, 73, 83, 49, 95, 118, 69, 69, 69, 69, 0, 78, 52, 119, 97, 115, 109, 54, 87, 97, 108, 107, 101, 114, 73, 78, 83, 95, 49, 49, 77, 101, 114, 103, 101, 66, 108, 111, 99, 107, 115, 69, 78, 83, 95, 55, 86, 105, 115, 105, 116, 111, 114, 73, 83, 49, 95, 118, 69, 69, 69, 69, 0, 78, 52, 119, 97, 115, 109, 55, 86, 105, 115, 105, 116, 111, 114, 73, 78, 83, 95, 49, 49, 77, 101, 114, 103, 101, 66, 108, 111, 99, 107, 115, 69, 118, 69, 69, 0, 78, 52, 119, 97, 115, 109, 49, 49, 77, 101, 114, 103, 101, 66, 108, 111, 99, 107, 115, 69, 0, 78, 83, 116, 51, 95, 95, 49, 49, 48, 95, 95, 102, 117, 110, 99, 116, 105, 111, 110, 54, 95, 95, 102, 117, 110, 99, 73, 90, 78, 52, 119, 97, 115, 109, 54, 87, 97, 108, 107, 101, 114, 73, 78, 83, 50, 95, 49, 49, 77, 101, 114, 103, 101, 66, 108, 111, 99, 107, 115, 69, 78, 83, 50, 95, 55, 86, 105, 115, 105, 116, 111, 114, 73, 83, 52, 95, 118, 69, 69, 69, 57, 115, 116, 97, 114, 116, 87, 97, 108, 107, 69, 80, 78, 83, 50, 95, 54, 77, 111, 100, 117, 108, 101, 69, 69, 85, 108, 118, 69, 95, 78, 83, 95, 57, 97, 108, 108, 111, 99, 97, 116, 111, 114, 73, 83, 65, 95, 69, 69, 70, 78, 83, 50, 95, 49, 53, 84, 104, 114, 101, 97, 100, 87, 111, 114, 107, 83, 116, 97, 116, 101, 69, 118, 69, 69, 69, 0, 78, 83, 116, 51, 95, 95, 49, 49, 48, 95, 95, 102, 117, 110, 99, 116, 105, 111, 110, 54, 95, 95, 98, 97, 115, 101, 73, 70, 78, 52, 119, 97, 115, 109, 49, 53, 84, 104, 114, 101, 97, 100, 87, 111, 114, 107, 83, 116, 97, 116, 101, 69, 118, 69, 69, 69, 0, 90, 78, 52, 119, 97, 115, 109, 54, 87, 97, 108, 107, 101, 114, 73, 78, 83, 95, 49, 49, 77, 101, 114, 103, 101, 66, 108, 111, 99, 107, 115, 69, 78, 83, 95, 55, 86, 105, 115, 105, 116, 111, 114, 73, 83, 49, 95, 118, 69, 69, 69, 57, 115, 116, 97, 114, 116, 87, 97, 108, 107, 69, 80, 78, 83, 95, 54, 77, 111, 100, 117, 108, 101, 69, 69, 85, 108, 118, 69, 95, 0, 90, 78, 52, 119, 97, 115, 109, 49, 50, 82, 101, 103, 105, 115, 116, 101, 114, 80, 97, 115, 115, 73, 78, 83, 95, 49, 49, 77, 101, 114, 103, 101, 66, 108, 111, 99, 107, 115, 69, 69, 67, 49, 69, 80, 75, 99, 83, 52, 95, 69, 85, 108, 118, 69, 95, 0, 78, 52, 119, 97, 115, 109, 55, 80, 114, 105, 110, 116, 101, 114, 69, 0, 10, 0, 109, 111, 100, 117, 108, 101, 0, 27, 91, 51, 49, 109, 0, 27, 91, 49, 109, 0, 27, 91, 51, 53, 109, 0, 27, 91, 48, 109, 0, 32, 32, 0, 109, 101, 109, 111, 114, 121, 0, 32, 32, 32, 32, 0, 40, 115, 101, 103, 109, 101, 110, 116, 32, 0, 32, 34, 0, 34, 41, 0, 92, 110, 0, 92, 48, 100, 0, 92, 116, 0, 92, 48, 99, 0, 92, 48, 56, 0, 92, 92, 0, 92, 34, 0, 92, 39, 0, 10, 32, 32, 0, 101, 120, 112, 111, 114, 116, 32, 0, 27, 91, 51, 50, 109, 0, 32, 109, 101, 109, 111, 114, 121, 41, 0, 115, 116, 97, 114, 116, 0, 116, 121, 112, 101, 0, 32, 40, 102, 117, 110, 99, 0, 112, 97, 114, 97, 109, 0, 27, 91, 51, 51, 109, 0, 114, 101, 115, 117, 108, 116, 32, 0, 41, 41, 0, 105, 109, 112, 111, 114, 116, 32, 0, 116, 97, 98, 108, 101, 0, 102, 117, 110, 99, 32, 0, 40, 116, 121, 112, 101, 32, 0, 112, 97, 114, 97, 109, 32, 0, 108, 111, 99, 97, 108, 32, 0, 108, 111, 111, 112, 0, 99, 117, 114, 114, 45, 62, 105, 110, 46, 105, 115, 40, 41, 0, 115, 114, 99, 47, 112, 97, 115, 115, 101, 115, 47, 80, 114, 105, 110, 116, 46, 99, 112, 112, 0, 118, 105, 115, 105, 116, 76, 111, 111, 112, 0, 98, 114, 95, 105, 102, 32, 0, 98, 114, 32, 0, 98, 114, 95, 116, 97, 98, 108, 101, 0, 99, 97, 108, 108, 32, 0, 99, 97, 108, 108, 95, 105, 109, 112, 111, 114, 116, 32, 0, 99, 97, 108, 108, 95, 105, 110, 100, 105, 114, 101, 99, 116, 32, 0, 103, 101, 116, 95, 108, 111, 99, 97, 108, 32, 0, 115, 101, 116, 95, 108, 111, 99, 97, 108, 32, 0, 46, 108, 111, 97, 100, 0, 49, 54, 0, 51, 50, 0, 95, 115, 0, 95, 117, 0, 32, 111, 102, 102, 115, 101, 116, 61, 0, 32, 97, 108, 105, 103, 110, 61, 0, 46, 115, 116, 111, 114, 101, 0, 99, 108, 122, 0, 99, 116, 122, 0, 112, 111, 112, 99, 110, 116, 0, 101, 113, 122, 0, 110, 101, 103, 0, 97, 98, 115, 0, 99, 101, 105, 108, 0, 102, 108, 111, 111, 114, 0, 116, 114, 117, 110, 99, 0, 110, 101, 97, 114, 101, 115, 116, 0, 115, 113, 114, 116, 0, 101, 120, 116, 101, 110, 100, 95, 115, 47, 105, 51, 50, 0, 101, 120, 116, 101, 110, 100, 95, 117, 47, 105, 51, 50, 0, 119, 114, 97, 112, 47, 105, 54, 52, 0, 116, 114, 117, 110, 99, 95, 115, 47, 102, 51, 50, 0, 116, 114, 117, 110, 99, 95, 117, 47, 102, 51, 50, 0, 116, 114, 117, 110, 99, 95, 115, 47, 102, 54, 52, 0, 116, 114, 117, 110, 99, 95, 117, 47, 102, 54, 52, 0, 114, 101, 105, 110, 116, 101, 114, 112, 114, 101, 116, 47, 0, 102, 54, 52, 0, 102, 51, 50, 0, 99, 111, 110, 118, 101, 114, 116, 95, 117, 47, 105, 51, 50, 0, 99, 111, 110, 118, 101, 114, 116, 95, 115, 47, 105, 51, 50, 0, 99, 111, 110, 118, 101, 114, 116, 95, 117, 47, 105, 54, 52, 0, 99, 111, 110, 118, 101, 114, 116, 95, 115, 47, 105, 54, 52, 0, 112, 114, 111, 109, 111, 116, 101, 47, 102, 51, 50, 0, 100, 101, 109, 111, 116, 101, 47, 102, 54, 52, 0, 105, 54, 52, 0, 105, 51, 50, 0, 97, 100, 100, 0, 109, 117, 108, 0, 100, 105, 118, 95, 115, 0, 100, 105, 118, 95, 117, 0, 114, 101, 109, 95, 115, 0, 114, 101, 109, 95, 117, 0, 97, 110, 100, 0, 111, 114, 0, 120, 111, 114, 0, 115, 104, 108, 0, 115, 104, 114, 95, 117, 0, 115, 104, 114, 95, 115, 0, 114, 111, 116, 108, 0, 114, 111, 116, 114, 0, 100, 105, 118, 0, 99, 111, 112, 121, 115, 105, 103, 110, 0, 109, 105, 110, 0, 109, 97, 120, 0, 101, 113, 0, 110, 101, 0, 108, 116, 95, 115, 0, 108, 116, 95, 117, 0, 108, 101, 95, 115, 0, 108, 101, 95, 117, 0, 103, 116, 95, 115, 0, 103, 116, 95, 117, 0, 103, 101, 95, 115, 0, 103, 101, 95, 117, 0, 108, 116, 0, 108, 101, 0, 103, 116, 0, 103, 101, 0, 115, 101, 108, 101, 99, 116, 0, 112, 97, 103, 101, 115, 105, 122, 101, 0, 99, 117, 114, 114, 101, 110, 116, 95, 109, 101, 109, 111, 114, 121, 0, 103, 114, 111, 119, 95, 109, 101, 109, 111, 114, 121, 0, 104, 97, 115, 102, 101, 97, 116, 117, 114, 101, 32, 0, 110, 111, 112, 0, 117, 110, 114, 101, 97, 99, 104, 97, 98, 108, 101, 0, 112, 114, 105, 110, 116, 0, 112, 114, 105, 110, 116, 32, 105, 110, 32, 115, 45, 101, 120, 112, 114, 101, 115, 115, 105, 111, 110, 32, 102, 111, 114, 109, 97, 116, 0, 78, 83, 116, 51, 95, 95, 49, 49, 48, 95, 95, 102, 117, 110, 99, 116, 105, 111, 110, 54, 95, 95, 102, 117, 110, 99, 73, 90, 78, 52, 119, 97, 115, 109, 49, 50, 82, 101, 103, 105, 115, 116, 101, 114, 80, 97, 115, 115, 73, 78, 83, 50, 95, 55, 80, 114, 105, 110, 116, 101, 114, 69, 69, 67, 49, 69, 80, 75, 99, 83, 55, 95, 69, 85, 108, 118, 69, 95, 78, 83, 95, 57, 97, 108, 108, 111, 99, 97, 116, 111, 114, 73, 83, 56, 95, 69, 69, 70, 80, 78, 83, 50, 95, 52, 80, 97, 115, 115, 69, 118, 69, 69, 69, 0, 90, 78, 52, 119, 97, 115, 109, 49, 50, 82, 101, 103, 105, 115, 116, 101, 114, 80, 97, 115, 115, 73, 78, 83, 95, 55, 80, 114, 105, 110, 116, 101, 114, 69, 69, 67, 49, 69, 80, 75, 99, 83, 52, 95, 69, 85, 108, 118, 69, 95, 0, 112, 114, 105, 110, 116, 45, 109, 105, 110, 105, 102, 105, 101, 100, 0, 112, 114, 105, 110, 116, 32, 105, 110, 32, 109, 105, 110, 105, 102, 105, 101, 100, 32, 115, 45, 101, 120, 112, 114, 101, 115, 115, 105, 111, 110, 32, 102, 111, 114, 109, 97, 116, 0, 78, 83, 116, 51, 95, 95, 49, 49, 48, 95, 95, 102, 117, 110, 99, 116, 105, 111, 110, 54, 95, 95, 102, 117, 110, 99, 73, 90, 78, 52, 119, 97, 115, 109, 49, 50, 82, 101, 103, 105, 115, 116, 101, 114, 80, 97, 115, 115, 73, 78, 83, 50, 95, 49, 53, 77, 105, 110, 105, 102, 105, 101, 100, 80, 114, 105, 110, 116, 101, 114, 69, 69, 67, 49, 69, 80, 75, 99, 83, 55, 95, 69, 85, 108, 118, 69, 95, 78, 83, 95, 57, 97, 108, 108, 111, 99, 97, 116, 111, 114, 73, 83, 56, 95, 69, 69, 70, 80, 78, 83, 50, 95, 52, 80, 97, 115, 115, 69, 118, 69, 69, 69, 0, 78, 52, 119, 97, 115, 109, 49, 53, 77, 105, 110, 105, 102, 105, 101, 100, 80, 114, 105, 110, 116, 101, 114, 69, 0, 90, 78, 52, 119, 97, 115, 109, 49, 50, 82, 101, 103, 105, 115, 116, 101, 114, 80, 97, 115, 115, 73, 78, 83, 95, 49, 53, 77, 105, 110, 105, 102, 105, 101, 100, 80, 114, 105, 110, 116, 101, 114, 69, 69, 67, 49, 69, 80, 75, 99, 83, 52, 95, 69, 85, 108, 118, 69, 95, 0, 112, 114, 105, 110, 116, 45, 102, 117, 108, 108, 0, 112, 114, 105, 110, 116, 32, 105, 110, 32, 102, 117, 108, 108, 32, 115, 45, 101, 120, 112, 114, 101, 115, 115, 105, 111, 110, 32, 102, 111, 114, 109, 97, 116, 0, 78, 83, 116, 51, 95, 95, 49, 49, 48, 95, 95, 102, 117, 110, 99, 116, 105, 111, 110, 54, 95, 95, 102, 117, 110, 99, 73, 90, 78, 52, 119, 97, 115, 109, 49, 50, 82, 101, 103, 105, 115, 116, 101, 114, 80, 97, 115, 115, 73, 78, 83, 50, 95, 49, 49, 70, 117, 108, 108, 80, 114, 105, 110, 116, 101, 114, 69, 69, 67, 49, 69, 80, 75, 99, 83, 55, 95, 69, 85, 108, 118, 69, 95, 78, 83, 95, 57, 97, 108, 108, 111, 99, 97, 116, 111, 114, 73, 83, 56, 95, 69, 69, 70, 80, 78, 83, 50, 95, 52, 80, 97, 115, 115, 69, 118, 69, 69, 69, 0, 78, 52, 119, 97, 115, 109, 49, 49, 70, 117, 108, 108, 80, 114, 105, 110, 116, 101, 114, 69, 0, 90, 78, 52, 119, 97, 115, 109, 49, 50, 82, 101, 103, 105, 115, 116, 101, 114, 80, 97, 115, 115, 73, 78, 83, 95, 49, 49, 70, 117, 108, 108, 80, 114, 105, 110, 116, 101, 114, 69, 69, 67, 49, 69, 80, 75, 99, 83, 52, 95, 69, 85, 108, 118, 69, 95, 0, 114, 101, 109, 111, 118, 101, 45, 117, 110, 117, 115, 101, 100, 45, 98, 114, 115, 0, 114, 101, 109, 111, 118, 101, 115, 32, 98, 114, 101, 97, 107, 115, 32, 102, 114, 111, 109, 32, 108, 111, 99, 97, 116, 105, 111, 110, 115, 32, 116, 104, 97, 116, 32, 97, 114, 101, 32, 110, 111, 116, 32, 110, 101, 101, 100, 101, 100, 0, 78, 83, 116, 51, 95, 95, 49, 49, 48, 95, 95, 102, 117, 110, 99, 116, 105, 111, 110, 54, 95, 95, 102, 117, 110, 99, 73, 90, 78, 52, 119, 97, 115, 109, 49, 50, 82, 101, 103, 105, 115, 116, 101, 114, 80, 97, 115, 115, 73, 78, 83, 50, 95, 49, 53, 82, 101, 109, 111, 118, 101, 85, 110, 117, 115, 101, 100, 66, 114, 115, 69, 69, 67, 49, 69, 80, 75, 99, 83, 55, 95, 69, 85, 108, 118, 69, 95, 78, 83, 95, 57, 97, 108, 108, 111, 99, 97, 116, 111, 114, 73, 83, 56, 95, 69, 69, 70, 80, 78, 83, 50, 95, 52, 80, 97, 115, 115, 69, 118, 69, 69, 69, 0, 78, 52, 119, 97, 115, 109, 49, 48, 87, 97, 108, 107, 101, 114, 80, 97, 115, 115, 73, 78, 83, 95, 49, 48, 80, 111, 115, 116, 87, 97, 108, 107, 101, 114, 73, 78, 83, 95, 49, 53, 82, 101, 109, 111, 118, 101, 85, 110, 117, 115, 101, 100, 66, 114, 115, 69, 78, 83, 95, 55, 86, 105, 115, 105, 116, 111, 114, 73, 83, 50, 95, 118, 69, 69, 69, 69, 69, 69, 0, 78, 52, 119, 97, 115, 109, 49, 48, 80, 111, 115, 116, 87, 97, 108, 107, 101, 114, 73, 78, 83, 95, 49, 53, 82, 101, 109, 111, 118, 101, 85, 110, 117, 115, 101, 100, 66, 114, 115, 69, 78, 83, 95, 55, 86, 105, 115, 105, 116, 111, 114, 73, 83, 49, 95, 118, 69, 69, 69, 69, 0, 78, 52, 119, 97, 115, 109, 54, 87, 97, 108, 107, 101, 114, 73, 78, 83, 95, 49, 53, 82, 101, 109, 111, 118, 101, 85, 110, 117, 115, 101, 100, 66, 114, 115, 69, 78, 83, 95, 55, 86, 105, 115, 105, 116, 111, 114, 73, 83, 49, 95, 118, 69, 69, 69, 69, 0, 78, 52, 119, 97, 115, 109, 55, 86, 105, 115, 105, 116, 111, 114, 73, 78, 83, 95, 49, 53, 82, 101, 109, 111, 118, 101, 85, 110, 117, 115, 101, 100, 66, 114, 115, 69, 118, 69, 69, 0, 78, 83, 116, 51, 95, 95, 49, 49, 48, 95, 95, 102, 117, 110, 99, 116, 105, 111, 110, 54, 95, 95, 102, 117, 110, 99, 73, 90, 78, 52, 119, 97, 115, 109, 54, 87, 97, 108, 107, 101, 114, 73, 78, 83, 50, 95, 49, 53, 82, 101, 109, 111, 118, 101, 85, 110, 117, 115, 101, 100, 66, 114, 115, 69, 78, 83, 50, 95, 55, 86, 105, 115, 105, 116, 111, 114, 73, 83, 52, 95, 118, 69, 69, 69, 57, 115, 116, 97, 114, 116, 87, 97, 108, 107, 69, 80, 78, 83, 50, 95, 54, 77, 111, 100, 117, 108, 101, 69, 69, 85, 108, 118, 69, 95, 78, 83, 95, 57, 97, 108, 108, 111, 99, 97, 116, 111, 114, 73, 83, 65, 95, 69, 69, 70, 78, 83, 50, 95, 49, 53, 84, 104, 114, 101, 97, 100, 87, 111, 114, 107, 83, 116, 97, 116, 101, 69, 118, 69, 69, 69, 0, 115, 101, 108, 102, 45, 62, 105, 102, 83, 116, 97, 99, 107, 46, 115, 105, 122, 101, 40, 41, 32, 62, 32, 48, 0, 115, 114, 99, 47, 112, 97, 115, 115, 101, 115, 47, 82, 101, 109, 111, 118, 101, 85, 110, 117, 115, 101, 100, 66, 114, 115, 46, 99, 112, 112, 0, 118, 105, 115, 105, 116, 65, 110, 121, 0, 105, 102, 83, 116, 97, 99, 107, 46, 101, 109, 112, 116, 121, 40, 41, 0, 102, 108, 111, 119, 115, 46, 101, 109, 112, 116, 121, 40, 41, 0, 90, 78, 52, 119, 97, 115, 109, 54, 87, 97, 108, 107, 101, 114, 73, 78, 83, 95, 49, 53, 82, 101, 109, 111, 118, 101, 85, 110, 117, 115, 101, 100, 66, 114, 115, 69, 78, 83, 95, 55, 86, 105, 115, 105, 116, 111, 114, 73, 83, 49, 95, 118, 69, 69, 69, 57, 115, 116, 97, 114, 116, 87, 97, 108, 107, 69, 80, 78, 83, 95, 54, 77, 111, 100, 117, 108, 101, 69, 69, 85, 108, 118, 69, 95, 0, 78, 52, 119, 97, 115, 109, 49, 53, 82, 101, 109, 111, 118, 101, 85, 110, 117, 115, 101, 100, 66, 114, 115, 69, 0, 90, 78, 52, 119, 97, 115, 109, 49, 50, 82, 101, 103, 105, 115, 116, 101, 114, 80, 97, 115, 115, 73, 78, 83, 95, 49, 53, 82, 101, 109, 111, 118, 101, 85, 110, 117, 115, 101, 100, 66, 114, 115, 69, 69, 67, 49, 69, 80, 75, 99, 83, 52, 95, 69, 85, 108, 118, 69, 95, 0, 114, 101, 109, 111, 118, 101, 45, 117, 110, 117, 115, 101, 100, 45, 110, 97, 109, 101, 115, 0, 114, 101, 109, 111, 118, 101, 115, 32, 110, 97, 109, 101, 115, 32, 102, 114, 111, 109, 32, 108, 111, 99, 97, 116, 105, 111, 110, 115, 32, 116, 104, 97, 116 ], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE + 10240);
allocate([ 32, 97, 114, 101, 32, 110, 101, 118, 101, 114, 32, 98, 114, 97, 110, 99, 104, 101, 100, 32, 116, 111, 0, 78, 83, 116, 51, 95, 95, 49, 49, 48, 95, 95, 102, 117, 110, 99, 116, 105, 111, 110, 54, 95, 95, 102, 117, 110, 99, 73, 90, 78, 52, 119, 97, 115, 109, 49, 50, 82, 101, 103, 105, 115, 116, 101, 114, 80, 97, 115, 115, 73, 78, 83, 50, 95, 49, 55, 82, 101, 109, 111, 118, 101, 85, 110, 117, 115, 101, 100, 78, 97, 109, 101, 115, 69, 69, 67, 49, 69, 80, 75, 99, 83, 55, 95, 69, 85, 108, 118, 69, 95, 78, 83, 95, 57, 97, 108, 108, 111, 99, 97, 116, 111, 114, 73, 83, 56, 95, 69, 69, 70, 80, 78, 83, 50, 95, 52, 80, 97, 115, 115, 69, 118, 69, 69, 69, 0, 78, 52, 119, 97, 115, 109, 49, 48, 87, 97, 108, 107, 101, 114, 80, 97, 115, 115, 73, 78, 83, 95, 49, 48, 80, 111, 115, 116, 87, 97, 108, 107, 101, 114, 73, 78, 83, 95, 49, 55, 82, 101, 109, 111, 118, 101, 85, 110, 117, 115, 101, 100, 78, 97, 109, 101, 115, 69, 78, 83, 95, 55, 86, 105, 115, 105, 116, 111, 114, 73, 83, 50, 95, 118, 69, 69, 69, 69, 69, 69, 0, 78, 52, 119, 97, 115, 109, 49, 48, 80, 111, 115, 116, 87, 97, 108, 107, 101, 114, 73, 78, 83, 95, 49, 55, 82, 101, 109, 111, 118, 101, 85, 110, 117, 115, 101, 100, 78, 97, 109, 101, 115, 69, 78, 83, 95, 55, 86, 105, 115, 105, 116, 111, 114, 73, 83, 49, 95, 118, 69, 69, 69, 69, 0, 78, 52, 119, 97, 115, 109, 54, 87, 97, 108, 107, 101, 114, 73, 78, 83, 95, 49, 55, 82, 101, 109, 111, 118, 101, 85, 110, 117, 115, 101, 100, 78, 97, 109, 101, 115, 69, 78, 83, 95, 55, 86, 105, 115, 105, 116, 111, 114, 73, 83, 49, 95, 118, 69, 69, 69, 69, 0, 78, 52, 119, 97, 115, 109, 55, 86, 105, 115, 105, 116, 111, 114, 73, 78, 83, 95, 49, 55, 82, 101, 109, 111, 118, 101, 85, 110, 117, 115, 101, 100, 78, 97, 109, 101, 115, 69, 118, 69, 69, 0, 78, 83, 116, 51, 95, 95, 49, 49, 48, 95, 95, 102, 117, 110, 99, 116, 105, 111, 110, 54, 95, 95, 102, 117, 110, 99, 73, 90, 78, 52, 119, 97, 115, 109, 54, 87, 97, 108, 107, 101, 114, 73, 78, 83, 50, 95, 49, 55, 82, 101, 109, 111, 118, 101, 85, 110, 117, 115, 101, 100, 78, 97, 109, 101, 115, 69, 78, 83, 50, 95, 55, 86, 105, 115, 105, 116, 111, 114, 73, 83, 52, 95, 118, 69, 69, 69, 57, 115, 116, 97, 114, 116, 87, 97, 108, 107, 69, 80, 78, 83, 50, 95, 54, 77, 111, 100, 117, 108, 101, 69, 69, 85, 108, 118, 69, 95, 78, 83, 95, 57, 97, 108, 108, 111, 99, 97, 116, 111, 114, 73, 83, 65, 95, 69, 69, 70, 78, 83, 50, 95, 49, 53, 84, 104, 114, 101, 97, 100, 87, 111, 114, 107, 83, 116, 97, 116, 101, 69, 118, 69, 69, 69, 0, 90, 78, 52, 119, 97, 115, 109, 54, 87, 97, 108, 107, 101, 114, 73, 78, 83, 95, 49, 55, 82, 101, 109, 111, 118, 101, 85, 110, 117, 115, 101, 100, 78, 97, 109, 101, 115, 69, 78, 83, 95, 55, 86, 105, 115, 105, 116, 111, 114, 73, 83, 49, 95, 118, 69, 69, 69, 57, 115, 116, 97, 114, 116, 87, 97, 108, 107, 69, 80, 78, 83, 95, 54, 77, 111, 100, 117, 108, 101, 69, 69, 85, 108, 118, 69, 95, 0, 78, 52, 119, 97, 115, 109, 49, 55, 82, 101, 109, 111, 118, 101, 85, 110, 117, 115, 101, 100, 78, 97, 109, 101, 115, 69, 0, 90, 78, 52, 119, 97, 115, 109, 49, 50, 82, 101, 103, 105, 115, 116, 101, 114, 80, 97, 115, 115, 73, 78, 83, 95, 49, 55, 82, 101, 109, 111, 118, 101, 85, 110, 117, 115, 101, 100, 78, 97, 109, 101, 115, 69, 69, 67, 49, 69, 80, 75, 99, 83, 52, 95, 69, 85, 108, 118, 69, 95, 0, 112, 111, 115, 116, 45, 101, 109, 115, 99, 114, 105, 112, 116, 101, 110, 0, 109, 105, 115, 99, 101, 108, 108, 97, 110, 101, 111, 117, 115, 32, 111, 112, 116, 105, 109, 105, 122, 97, 116, 105, 111, 110, 115, 32, 102, 111, 114, 32, 69, 109, 115, 99, 114, 105, 112, 116, 101, 110, 45, 103, 101, 110, 101, 114, 97, 116, 101, 100, 32, 99, 111, 100, 101, 0, 78, 83, 116, 51, 95, 95, 49, 49, 48, 95, 95, 102, 117, 110, 99, 116, 105, 111, 110, 54, 95, 95, 102, 117, 110, 99, 73, 90, 78, 52, 119, 97, 115, 109, 49, 50, 82, 101, 103, 105, 115, 116, 101, 114, 80, 97, 115, 115, 73, 78, 83, 50, 95, 49, 52, 80, 111, 115, 116, 69, 109, 115, 99, 114, 105, 112, 116, 101, 110, 69, 69, 67, 49, 69, 80, 75, 99, 83, 55, 95, 69, 85, 108, 118, 69, 95, 78, 83, 95, 57, 97, 108, 108, 111, 99, 97, 116, 111, 114, 73, 83, 56, 95, 69, 69, 70, 80, 78, 83, 50, 95, 52, 80, 97, 115, 115, 69, 118, 69, 69, 69, 0, 78, 52, 119, 97, 115, 109, 49, 48, 87, 97, 108, 107, 101, 114, 80, 97, 115, 115, 73, 78, 83, 95, 49, 48, 80, 111, 115, 116, 87, 97, 108, 107, 101, 114, 73, 78, 83, 95, 49, 52, 80, 111, 115, 116, 69, 109, 115, 99, 114, 105, 112, 116, 101, 110, 69, 78, 83, 95, 55, 86, 105, 115, 105, 116, 111, 114, 73, 83, 50, 95, 118, 69, 69, 69, 69, 69, 69, 0, 78, 52, 119, 97, 115, 109, 49, 48, 80, 111, 115, 116, 87, 97, 108, 107, 101, 114, 73, 78, 83, 95, 49, 52, 80, 111, 115, 116, 69, 109, 115, 99, 114, 105, 112, 116, 101, 110, 69, 78, 83, 95, 55, 86, 105, 115, 105, 116, 111, 114, 73, 83, 49, 95, 118, 69, 69, 69, 69, 0, 78, 52, 119, 97, 115, 109, 54, 87, 97, 108, 107, 101, 114, 73, 78, 83, 95, 49, 52, 80, 111, 115, 116, 69, 109, 115, 99, 114, 105, 112, 116, 101, 110, 69, 78, 83, 95, 55, 86, 105, 115, 105, 116, 111, 114, 73, 83, 49, 95, 118, 69, 69, 69, 69, 0, 78, 52, 119, 97, 115, 109, 55, 86, 105, 115, 105, 116, 111, 114, 73, 78, 83, 95, 49, 52, 80, 111, 115, 116, 69, 109, 115, 99, 114, 105, 112, 116, 101, 110, 69, 118, 69, 69, 0, 78, 52, 119, 97, 115, 109, 49, 52, 80, 111, 115, 116, 69, 109, 115, 99, 114, 105, 112, 116, 101, 110, 69, 0, 78, 83, 116, 51, 95, 95, 49, 49, 48, 95, 95, 102, 117, 110, 99, 116, 105, 111, 110, 54, 95, 95, 102, 117, 110, 99, 73, 90, 78, 52, 119, 97, 115, 109, 54, 87, 97, 108, 107, 101, 114, 73, 78, 83, 50, 95, 49, 52, 80, 111, 115, 116, 69, 109, 115, 99, 114, 105, 112, 116, 101, 110, 69, 78, 83, 50, 95, 55, 86, 105, 115, 105, 116, 111, 114, 73, 83, 52, 95, 118, 69, 69, 69, 57, 115, 116, 97, 114, 116, 87, 97, 108, 107, 69, 80, 78, 83, 50, 95, 54, 77, 111, 100, 117, 108, 101, 69, 69, 85, 108, 118, 69, 95, 78, 83, 95, 57, 97, 108, 108, 111, 99, 97, 116, 111, 114, 73, 83, 65, 95, 69, 69, 70, 78, 83, 50, 95, 49, 53, 84, 104, 114, 101, 97, 100, 87, 111, 114, 107, 83, 116, 97, 116, 101, 69, 118, 69, 69, 69, 0, 97, 100, 100, 45, 62, 116, 121, 112, 101, 32, 61, 61, 32, 105, 51, 50, 0, 115, 114, 99, 47, 112, 97, 115, 115, 101, 115, 47, 80, 111, 115, 116, 69, 109, 115, 99, 114, 105, 112, 116, 101, 110, 46, 99, 112, 112, 0, 118, 105, 115, 105, 116, 77, 101, 109, 111, 114, 121, 79, 112, 0, 90, 78, 52, 119, 97, 115, 109, 54, 87, 97, 108, 107, 101, 114, 73, 78, 83, 95, 49, 52, 80, 111, 115, 116, 69, 109, 115, 99, 114, 105, 112, 116, 101, 110, 69, 78, 83, 95, 55, 86, 105, 115, 105, 116, 111, 114, 73, 83, 49, 95, 118, 69, 69, 69, 57, 115, 116, 97, 114, 116, 87, 97, 108, 107, 69, 80, 78, 83, 95, 54, 77, 111, 100, 117, 108, 101, 69, 69, 85, 108, 118, 69, 95, 0, 90, 78, 52, 119, 97, 115, 109, 49, 50, 82, 101, 103, 105, 115, 116, 101, 114, 80, 97, 115, 115, 73, 78, 83, 95, 49, 52, 80, 111, 115, 116, 69, 109, 115, 99, 114, 105, 112, 116, 101, 110, 69, 69, 67, 49, 69, 80, 75, 99, 83, 52, 95, 69, 85, 108, 118, 69, 95, 0, 115, 105, 109, 112, 108, 105, 102, 121, 45, 108, 111, 99, 97, 108, 115, 0, 109, 105, 115, 99, 101, 108, 108, 97, 110, 101, 111, 117, 115, 32, 108, 111, 99, 97, 108, 115, 45, 114, 101, 108, 97, 116, 101, 100, 32, 111, 112, 116, 105, 109, 105, 122, 97, 116, 105, 111, 110, 115, 0, 78, 83, 116, 51, 95, 95, 49, 49, 48, 95, 95, 102, 117, 110, 99, 116, 105, 111, 110, 54, 95, 95, 102, 117, 110, 99, 73, 90, 78, 52, 119, 97, 115, 109, 49, 50, 82, 101, 103, 105, 115, 116, 101, 114, 80, 97, 115, 115, 73, 78, 83, 50, 95, 49, 52, 83, 105, 109, 112, 108, 105, 102, 121, 76, 111, 99, 97, 108, 115, 69, 69, 67, 49, 69, 80, 75, 99, 83, 55, 95, 69, 85, 108, 118, 69, 95, 78, 83, 95, 57, 97, 108, 108, 111, 99, 97, 116, 111, 114, 73, 83, 56, 95, 69, 69, 70, 80, 78, 83, 50, 95, 52, 80, 97, 115, 115, 69, 118, 69, 69, 69, 0, 78, 52, 119, 97, 115, 109, 49, 48, 87, 97, 108, 107, 101, 114, 80, 97, 115, 115, 73, 78, 83, 95, 50, 49, 76, 105, 110, 101, 97, 114, 69, 120, 101, 99, 117, 116, 105, 111, 110, 87, 97, 108, 107, 101, 114, 73, 78, 83, 95, 49, 52, 83, 105, 109, 112, 108, 105, 102, 121, 76, 111, 99, 97, 108, 115, 69, 78, 83, 95, 55, 86, 105, 115, 105, 116, 111, 114, 73, 83, 50, 95, 118, 69, 69, 69, 69, 69, 69, 0, 78, 52, 119, 97, 115, 109, 50, 49, 76, 105, 110, 101, 97, 114, 69, 120, 101, 99, 117, 116, 105, 111, 110, 87, 97, 108, 107, 101, 114, 73, 78, 83, 95, 49, 52, 83, 105, 109, 112, 108, 105, 102, 121, 76, 111, 99, 97, 108, 115, 69, 78, 83, 95, 55, 86, 105, 115, 105, 116, 111, 114, 73, 83, 49, 95, 118, 69, 69, 69, 69, 0, 78, 52, 119, 97, 115, 109, 49, 48, 80, 111, 115, 116, 87, 97, 108, 107, 101, 114, 73, 78, 83, 95, 49, 52, 83, 105, 109, 112, 108, 105, 102, 121, 76, 111, 99, 97, 108, 115, 69, 78, 83, 95, 55, 86, 105, 115, 105, 116, 111, 114, 73, 83, 49, 95, 118, 69, 69, 69, 69, 0, 78, 52, 119, 97, 115, 109, 54, 87, 97, 108, 107, 101, 114, 73, 78, 83, 95, 49, 52, 83, 105, 109, 112, 108, 105, 102, 121, 76, 111, 99, 97, 108, 115, 69, 78, 83, 95, 55, 86, 105, 115, 105, 116, 111, 114, 73, 83, 49, 95, 118, 69, 69, 69, 69, 0, 78, 52, 119, 97, 115, 109, 55, 86, 105, 115, 105, 116, 111, 114, 73, 78, 83, 95, 49, 52, 83, 105, 109, 112, 108, 105, 102, 121, 76, 111, 99, 97, 108, 115, 69, 118, 69, 69, 0, 78, 83, 116, 51, 95, 95, 49, 49, 48, 95, 95, 102, 117, 110, 99, 116, 105, 111, 110, 54, 95, 95, 102, 117, 110, 99, 73, 90, 78, 52, 119, 97, 115, 109, 54, 87, 97, 108, 107, 101, 114, 73, 78, 83, 50, 95, 49, 52, 83, 105, 109, 112, 108, 105, 102, 121, 76, 111, 99, 97, 108, 115, 69, 78, 83, 50, 95, 55, 86, 105, 115, 105, 116, 111, 114, 73, 83, 52, 95, 118, 69, 69, 69, 57, 115, 116, 97, 114, 116, 87, 97, 108, 107, 69, 80, 78, 83, 50, 95, 54, 77, 111, 100, 117, 108, 101, 69, 69, 85, 108, 118, 69, 95, 78, 83, 95, 57, 97, 108, 108, 111, 99, 97, 116, 111, 114, 73, 83, 65, 95, 69, 69, 70, 78, 83, 50, 95, 49, 53, 84, 104, 114, 101, 97, 100, 87, 111, 114, 107, 83, 116, 97, 116, 101, 69, 118, 69, 69, 69, 0, 99, 117, 114, 114, 0, 118, 105, 115, 105, 116, 0, 108, 111, 99, 97, 108, 115, 87, 114, 105, 116, 116, 101, 110, 46, 115, 105, 122, 101, 40, 41, 32, 43, 32, 108, 111, 99, 97, 108, 115, 82, 101, 97, 100, 46, 115, 105, 122, 101, 40, 41, 32, 60, 61, 32, 49, 0, 115, 114, 99, 47, 97, 115, 116, 95, 117, 116, 105, 108, 115, 46, 104, 0, 105, 110, 118, 97, 108, 105, 100, 97, 116, 101, 115, 0, 98, 108, 111, 99, 107, 45, 62, 108, 105, 115, 116, 46, 98, 97, 99, 107, 40, 41, 32, 61, 61, 32, 97, 98, 111, 118, 101, 0, 105, 115, 82, 101, 115, 117, 108, 116, 85, 115, 101, 100, 0, 97, 98, 111, 118, 101, 32, 61, 61, 32, 105, 102, 102, 45, 62, 105, 102, 84, 114, 117, 101, 32, 124, 124, 32, 97, 98, 111, 118, 101, 32, 61, 61, 32, 105, 102, 102, 45, 62, 105, 102, 70, 97, 108, 115, 101, 0, 115, 101, 108, 102, 45, 62, 115, 105, 110, 107, 97, 98, 108, 101, 115, 46, 99, 111, 117, 110, 116, 40, 105, 110, 100, 101, 120, 41, 32, 61, 61, 32, 48, 0, 115, 114, 99, 47, 112, 97, 115, 115, 101, 115, 47, 83, 105, 109, 112, 108, 105, 102, 121, 76, 111, 99, 97, 108, 115, 46, 99, 112, 112, 0, 118, 105, 115, 105, 116, 80, 111, 115, 116, 0, 105, 102, 102, 45, 62, 105, 102, 70, 97, 108, 115, 101, 0, 100, 111, 78, 111, 116, 101, 73, 102, 69, 108, 115, 101, 70, 97, 108, 115, 101, 0, 111, 112, 116, 105, 109, 105, 122, 101, 73, 102, 82, 101, 116, 117, 114, 110, 0, 101, 120, 112, 114, 101, 115, 115, 105, 111, 110, 83, 116, 97, 99, 107, 46, 98, 97, 99, 107, 40, 41, 32, 61, 61, 32, 105, 102, 102, 0, 109, 97, 112, 58, 58, 97, 116, 58, 32, 32, 107, 101, 121, 32, 110, 111, 116, 32, 102, 111, 117, 110, 100, 0, 105, 102, 84, 114, 117, 101, 66, 108, 111, 99, 107, 45, 62, 116, 121, 112, 101, 32, 33, 61, 32, 110, 111, 110, 101, 0, 105, 102, 102, 45, 62, 116, 121, 112, 101, 32, 33, 61, 32, 110, 111, 110, 101, 0, 40, 42, 99, 117, 114, 114, 112, 41, 45, 62, 99, 97, 115, 116, 60, 73, 102, 62, 40, 41, 45, 62, 105, 102, 70, 97, 108, 115, 101, 0, 100, 111, 78, 111, 116, 101, 73, 102, 69, 108, 115, 101, 84, 114, 117, 101, 0, 100, 111, 78, 111, 116, 101, 73, 102, 69, 108, 115, 101, 67, 111, 110, 100, 105, 116, 105, 111, 110, 0, 33, 98, 114, 101, 97, 107, 115, 91, 48, 93, 46, 98, 114, 45, 62, 118, 97, 108, 117, 101, 0, 111, 112, 116, 105, 109, 105, 122, 101, 66, 108, 111, 99, 107, 82, 101, 116, 117, 114, 110, 0, 33, 98, 114, 101, 97, 107, 115, 91, 106, 93, 46, 98, 114, 45, 62, 118, 97, 108, 117, 101, 0, 33, 99, 117, 114, 114, 45, 62, 99, 97, 115, 116, 60, 73, 102, 62, 40, 41, 45, 62, 105, 102, 70, 97, 108, 115, 101, 0, 100, 111, 78, 111, 116, 101, 78, 111, 110, 76, 105, 110, 101, 97, 114, 0, 78, 52, 119, 97, 115, 109, 49, 48, 87, 97, 108, 107, 101, 114, 80, 97, 115, 115, 73, 78, 83, 95, 49, 48, 80, 111, 115, 116, 87, 97, 108, 107, 101, 114, 73, 78, 83, 95, 49, 53, 71, 101, 116, 76, 111, 99, 97, 108, 67, 111, 117, 110, 116, 101, 114, 69, 78, 83, 95, 55, 86, 105, 115, 105, 116, 111, 114, 73, 83, 50, 95, 118, 69, 69, 69, 69, 69, 69, 0, 78, 52, 119, 97, 115, 109, 49, 48, 80, 111, 115, 116, 87, 97, 108, 107, 101, 114, 73, 78, 83, 95, 49, 53, 71, 101, 116, 76, 111, 99, 97, 108, 67, 111, 117, 110, 116, 101, 114, 69, 78, 83, 95, 55, 86, 105, 115, 105, 116, 111, 114, 73, 83, 49, 95, 118, 69, 69, 69, 69, 0, 78, 52, 119, 97, 115, 109, 54, 87, 97, 108, 107, 101, 114, 73, 78, 83, 95, 49, 53, 71, 101, 116, 76, 111, 99, 97, 108, 67, 111, 117, 110, 116, 101, 114, 69, 78, 83, 95, 55, 86, 105, 115, 105, 116, 111, 114, 73, 83, 49, 95, 118, 69, 69, 69, 69, 0, 78, 52, 119, 97, 115, 109, 55, 86, 105, 115, 105, 116, 111, 114, 73, 78, 83, 95, 49, 53, 71, 101, 116, 76, 111, 99, 97, 108, 67, 111, 117, 110, 116, 101, 114, 69, 118, 69, 69, 0, 78, 52, 119, 97, 115, 109, 49, 53, 71, 101, 116, 76, 111, 99, 97, 108, 67, 111, 117, 110, 116, 101, 114, 69, 0, 78, 52, 119, 97, 115, 109, 49, 48, 87, 97, 108, 107, 101, 114, 80, 97, 115, 115, 73, 78, 83, 95, 49, 48, 80, 111, 115, 116, 87, 97, 108, 107, 101, 114, 73, 78, 83, 95, 49, 53, 83, 101, 116, 76, 111, 99, 97, 108, 82, 101, 109, 111, 118, 101, 114, 69, 78, 83, 95, 55, 86, 105, 115, 105, 116, 111, 114, 73, 83, 50, 95, 118, 69, 69, 69, 69, 69, 69, 0, 78, 52, 119, 97, 115, 109, 49, 48, 80, 111, 115, 116, 87, 97, 108, 107, 101, 114, 73, 78, 83, 95, 49, 53, 83, 101, 116, 76, 111, 99, 97, 108, 82, 101, 109, 111, 118, 101, 114, 69, 78, 83, 95, 55, 86, 105, 115, 105, 116, 111, 114, 73, 83, 49, 95, 118, 69, 69, 69, 69, 0, 78, 52, 119, 97, 115, 109, 54, 87, 97, 108, 107, 101, 114, 73, 78, 83, 95, 49, 53, 83, 101, 116, 76, 111, 99, 97, 108, 82, 101, 109, 111, 118, 101, 114, 69, 78, 83, 95, 55, 86, 105, 115, 105, 116, 111, 114, 73, 83, 49, 95, 118, 69, 69, 69, 69, 0, 78, 52, 119, 97, 115, 109, 55, 86, 105, 115, 105, 116, 111, 114, 73, 78, 83, 95, 49, 53, 83, 101, 116, 76, 111, 99, 97, 108, 82, 101, 109, 111, 118, 101, 114, 69, 118, 69, 69, 0, 78, 52, 119, 97, 115, 109, 49, 53, 83, 101, 116, 76, 111, 99, 97, 108, 82, 101, 109, 111, 118, 101, 114, 69, 0, 90, 78, 52, 119, 97, 115, 109, 54, 87, 97, 108, 107, 101, 114, 73, 78, 83, 95, 49, 52, 83, 105, 109, 112, 108, 105, 102, 121, 76, 111, 99, 97, 108, 115, 69, 78, 83, 95, 55, 86, 105, 115, 105, 116, 111, 114, 73, 83, 49, 95, 118, 69, 69, 69, 57, 115, 116, 97, 114, 116, 87, 97, 108, 107, 69, 80, 78, 83, 95, 54, 77, 111, 100, 117, 108, 101, 69, 69, 85, 108, 118, 69, 95, 0, 78, 52, 119, 97, 115, 109, 49, 52, 83, 105, 109, 112, 108, 105, 102, 121, 76, 111, 99, 97, 108, 115, 69, 0, 90, 78, 52, 119, 97, 115, 109, 49, 50, 82, 101, 103, 105, 115, 116, 101, 114, 80, 97, 115, 115, 73, 78, 83, 95, 49, 52, 83, 105, 109, 112, 108, 105, 102, 121, 76, 111, 99, 97, 108, 115, 69, 69, 67, 49, 69, 80, 75, 99, 83, 52, 95, 69, 85, 108, 118, 69, 95, 0, 114, 101, 111, 114, 100, 101, 114, 45, 108, 111, 99, 97, 108, 115, 0, 115, 111, 114, 116, 115, 32, 108, 111, 99, 97, 108, 115, 32, 98, 121, 32, 97, 99, 99, 101, 115, 115, 32, 102, 114, 101, 113, 117, 101, 110, 99, 121, 0, 78, 83, 116, 51, 95, 95, 49, 49, 48, 95, 95, 102, 117, 110, 99, 116, 105, 111, 110, 54, 95, 95, 102, 117, 110, 99, 73, 90, 78, 52, 119, 97, 115, 109, 49, 50, 82, 101, 103, 105, 115, 116, 101, 114, 80, 97, 115, 115, 73, 78, 83, 50, 95, 49, 51, 82, 101, 111, 114, 100, 101, 114, 76, 111, 99, 97, 108, 115, 69, 69, 67, 49, 69, 80, 75, 99, 83, 55, 95, 69, 85, 108, 118, 69, 95, 78, 83, 95, 57, 97, 108, 108, 111, 99, 97, 116, 111, 114, 73, 83, 56, 95, 69, 69, 70, 80, 78, 83, 50, 95, 52, 80, 97, 115, 115, 69, 118, 69, 69, 69, 0, 78, 52, 119, 97, 115, 109, 49, 48, 87, 97, 108, 107, 101, 114, 80, 97, 115, 115, 73, 78, 83, 95, 49, 48, 80, 111, 115, 116, 87, 97, 108, 107, 101, 114, 73, 78, 83, 95, 49, 51, 82, 101, 111, 114, 100, 101, 114, 76, 111, 99, 97, 108, 115, 69, 78, 83, 95, 55, 86, 105, 115, 105, 116, 111, 114, 73, 83, 50, 95, 118, 69, 69, 69, 69, 69, 69, 0, 78, 52, 119, 97, 115, 109, 49, 48, 80, 111, 115, 116, 87, 97, 108, 107, 101, 114, 73, 78, 83, 95, 49, 51, 82, 101, 111, 114, 100, 101, 114, 76, 111, 99, 97, 108, 115, 69, 78, 83, 95, 55, 86, 105, 115, 105, 116, 111, 114, 73, 83, 49, 95, 118, 69, 69, 69, 69, 0, 78, 52, 119, 97, 115, 109, 54, 87, 97, 108, 107, 101, 114, 73, 78, 83, 95, 49, 51, 82, 101, 111, 114, 100, 101, 114, 76, 111, 99, 97, 108, 115, 69, 78, 83, 95, 55, 86, 105, 115, 105, 116, 111, 114, 73, 83, 49, 95, 118, 69, 69, 69, 69, 0, 78, 52, 119, 97, 115, 109, 55, 86, 105, 115, 105, 116, 111, 114, 73, 78, 83, 95, 49, 51, 82, 101, 111, 114, 100, 101, 114, 76, 111, 99, 97, 108, 115, 69, 118, 69, 69, 0, 78, 83, 116, 51, 95, 95, 49, 49, 48, 95, 95, 102, 117, 110, 99, 116, 105, 111, 110, 54, 95, 95, 102, 117, 110, 99, 73, 90, 78, 52, 119, 97, 115, 109, 54, 87, 97, 108, 107, 101, 114, 73, 78, 83, 50, 95, 49, 51, 82, 101, 111, 114, 100, 101, 114, 76, 111, 99, 97, 108, 115, 69, 78, 83, 50, 95, 55, 86, 105, 115, 105, 116, 111, 114, 73, 83, 52, 95, 118, 69, 69, 69, 57, 115, 116, 97, 114, 116, 87, 97, 108, 107, 69, 80, 78, 83, 50, 95, 54, 77, 111, 100, 117, 108, 101, 69, 69, 85, 108, 118, 69, 95, 78, 83, 95, 57, 97, 108, 108, 111, 99, 97, 116, 111, 114, 73, 83, 65, 95, 69, 69, 70, 78, 83, 50, 95, 49, 53, 84, 104, 114, 101, 97, 100, 87, 111, 114, 107, 83, 116, 97, 116, 101, 69, 118, 69, 69, 69, 0, 110, 101, 119, 84, 111, 79, 108, 100, 91, 105, 93, 32, 60, 32, 99, 117, 114, 114, 45, 62, 112, 97, 114, 97, 109, 115, 46, 115, 105, 122, 101, 40, 41, 0, 115, 114, 99, 47, 112, 97, 115, 115, 101, 115, 47, 82, 101, 111, 114, 100, 101, 114, 76, 111, 99, 97, 108, 115, 46, 99, 112, 112, 0, 118, 105, 115, 105, 116, 70, 117, 110, 99, 116, 105, 111, 110, 0, 90, 78, 52, 119, 97, 115, 109, 54, 87, 97, 108, 107, 101, 114, 73, 78, 83, 95, 49, 51, 82, 101, 111, 114, 100, 101, 114, 76, 111, 99, 97, 108, 115, 69, 78, 83, 95, 55, 86, 105, 115, 105, 116, 111, 114, 73, 83, 49, 95, 118, 69, 69, 69, 57, 115, 116, 97, 114, 116, 87, 97, 108, 107, 69, 80, 78, 83, 95, 54, 77, 111, 100, 117, 108, 101, 69, 69, 85, 108, 118, 69, 95, 0, 78, 52, 119, 97, 115, 109, 49, 51, 82, 101, 111, 114, 100, 101, 114, 76, 111, 99, 97, 108, 115, 69, 0, 90, 78, 52, 119, 97, 115, 109, 49, 50, 82, 101, 103, 105, 115, 116, 101, 114, 80, 97, 115, 115, 73, 78, 83, 95, 49, 51, 82, 101, 111, 114, 100, 101, 114, 76, 111, 99, 97, 108, 115, 69, 69, 67, 49, 69, 80, 75, 99, 83, 52, 95, 69, 85, 108, 118, 69, 95, 0, 118, 97, 99, 117, 117, 109, 0, 114, 101, 109, 111, 118, 101, 115, 32, 111, 98, 118, 105, 111, 117, 115, 108, 121, 32, 117, 110, 110, 101, 101, 100, 101, 100, 32, 99, 111, 100, 101, 0, 78, 83, 116, 51, 95, 95, 49, 49, 48, 95, 95, 102, 117, 110, 99, 116, 105, 111, 110, 54, 95, 95, 102, 117, 110, 99, 73, 90, 78, 52, 119, 97, 115, 109, 49, 50, 82, 101, 103, 105, 115, 116, 101, 114, 80, 97, 115, 115, 73, 78, 83, 50, 95, 54, 86, 97, 99, 117, 117, 109, 69, 69, 67, 49, 69, 80, 75, 99, 83, 55, 95, 69, 85, 108, 118, 69, 95, 78, 83, 95, 57, 97, 108, 108, 111, 99, 97, 116, 111, 114, 73, 83, 56, 95, 69, 69, 70, 80, 78, 83, 50, 95, 52, 80, 97, 115, 115, 69, 118, 69, 69, 69, 0, 78, 52, 119, 97, 115, 109, 49, 48, 87, 97, 108, 107, 101, 114, 80, 97, 115, 115, 73, 78, 83, 95, 49, 48, 80, 111, 115, 116, 87, 97, 108, 107, 101, 114, 73, 78, 83, 95, 54, 86, 97, 99, 117, 117, 109, 69, 78, 83, 95, 55, 86, 105, 115, 105, 116, 111, 114, 73, 83, 50, 95, 118, 69, 69, 69, 69, 69, 69, 0, 78, 52, 119, 97, 115, 109, 49, 48, 80, 111, 115, 116, 87, 97, 108, 107, 101, 114, 73, 78, 83, 95, 54, 86, 97, 99, 117, 117, 109, 69, 78, 83, 95, 55, 86, 105, 115, 105, 116, 111, 114, 73, 83, 49, 95, 118, 69, 69, 69, 69, 0, 78, 52, 119, 97, 115, 109, 54, 87, 97, 108, 107, 101, 114, 73, 78, 83, 95, 54, 86, 97, 99, 117, 117, 109, 69, 78, 83, 95, 55, 86, 105, 115, 105, 116, 111, 114, 73, 83, 49, 95, 118, 69, 69, 69, 69, 0, 78, 52, 119, 97, 115, 109, 55, 86, 105, 115, 105, 116, 111, 114, 73, 78, 83, 95, 54, 86, 97, 99, 117, 117, 109, 69, 118, 69, 69, 0, 78, 52, 119, 97, 115, 109, 54, 86, 97, 99, 117, 117, 109, 69, 0, 78, 83, 116, 51, 95, 95, 49, 49, 48, 95, 95, 102, 117, 110, 99, 116, 105, 111, 110, 54, 95, 95, 102, 117, 110, 99, 73, 90, 78, 52, 119, 97, 115, 109, 54, 87, 97, 108, 107, 101, 114, 73, 78, 83, 50, 95, 54, 86, 97, 99, 117, 117, 109, 69, 78, 83, 50, 95, 55, 86, 105, 115, 105, 116, 111, 114, 73, 83, 52, 95, 118, 69, 69, 69, 57, 115, 116, 97, 114, 116, 87, 97, 108, 107, 69, 80, 78, 83, 50, 95, 54, 77, 111, 100, 117, 108, 101, 69, 69, 85, 108, 118, 69, 95, 78, 83, 95, 57, 97, 108, 108, 111, 99, 97, 116, 111, 114, 73, 83, 65, 95, 69, 69, 70, 78, 83, 50, 95, 49, 53, 84, 104, 114, 101, 97, 100, 87, 111, 114, 107, 83, 116, 97, 116, 101, 69, 118, 69, 69, 69, 0, 115, 116, 97, 99, 107, 46, 115, 105, 122, 101, 40, 41, 32, 61, 61, 32, 48, 0, 115, 114, 99, 47, 119, 97, 115, 109, 45, 116, 114, 97, 118, 101, 114, 115, 97, 108, 46, 104, 0, 119, 97, 108, 107, 0, 42, 116, 97, 115, 107, 46, 99, 117, 114, 114, 112, 0, 90, 78, 52, 119, 97, 115, 109, 54, 87, 97, 108, 107, 101, 114, 73, 78, 83, 95, 54, 86, 97, 99, 117, 117, 109, 69, 78, 83, 95, 55, 86, 105, 115, 105, 116, 111, 114, 73, 83, 49, 95, 118, 69, 69, 69, 57, 115, 116, 97, 114, 116, 87, 97, 108, 107, 69, 80, 78, 83, 95, 54, 77, 111, 100, 117, 108, 101, 69, 69, 85, 108, 118, 69, 95, 0, 90, 78, 52, 119, 97, 115, 109, 49, 50, 82, 101, 103, 105, 115, 116, 101, 114, 80, 97, 115, 115, 73, 78, 83, 95, 54, 86, 97, 99, 117, 117, 109, 69, 69, 67, 49, 69, 80, 75, 99, 83, 52, 95, 69, 85, 108, 118, 69, 95, 0, 116, 111, 112, 108, 101, 118, 101, 108, 0, 100, 101, 102, 117, 110, 0, 98, 108, 111, 99, 107, 0, 115, 116, 97, 116, 0, 97, 115, 115, 105, 103, 110, 0, 110, 97, 109, 101, 0, 118, 97, 114, 0, 99, 111, 110, 115, 116, 0, 99, 111, 110, 100, 105, 116, 105, 111, 110, 97, 108, 0, 98, 105, 110, 97, 114, 121, 0, 114, 101, 116, 117, 114, 110, 0, 105, 102, 0, 101, 108, 115, 101, 0, 119, 104, 105, 108, 101, 0, 100, 111, 0, 102, 111, 114, 0, 115, 101, 113, 0, 115, 117, 98, 0, 99, 97, 108, 108, 0, 110, 117, 109, 0, 108, 97, 98, 101, 108, 0, 98, 114, 101, 97, 107, 0, 99, 111, 110, 116, 105, 110, 117, 101, 0, 115, 119, 105, 116, 99, 104, 0, 115, 116, 114, 105, 110, 103, 0, 116, 101, 109, 112, 82, 101, 116, 48, 0, 103, 101, 116, 84, 101, 109, 112, 82, 101, 116, 48, 0, 95, 108, 108, 118, 109, 95, 99, 116, 116, 122, 95, 105, 51, 50, 0, 95, 95, 95, 117, 100, 105, 118, 109, 111, 100, 100, 105, 52, 0, 117, 110, 97, 114, 121, 45, 112, 114, 101, 102, 105, 120, 0, 117, 110, 97, 114, 121, 45, 112, 111, 115, 116, 102, 105, 120, 0, 77, 97, 116, 104, 95, 102, 114, 111, 117, 110, 100, 0, 83, 73, 77, 68, 95, 70, 108, 111, 97, 116, 51, 50, 120, 52, 0, 83, 73, 77, 68, 95, 70, 108, 111, 97, 116, 54, 52, 120, 50, 0, 83, 73, 77, 68, 95, 73, 110, 116, 56, 120, 49, 54, 0, 83, 73, 77, 68, 95, 73, 110, 116, 49, 54, 120, 56, 0, 83, 73, 77, 68, 95, 73, 110, 116, 51, 50, 120, 52, 0, 62, 62, 62, 0, 116, 101, 109, 112, 68, 111, 117, 98, 108, 101, 80, 116, 114, 0, 72, 69, 65, 80, 56, 0, 72, 69, 65, 80, 49, 54, 0, 72, 69, 65, 80, 51, 50, 0, 72, 69, 65, 80, 70, 51, 50, 0, 72, 69, 65, 80, 85, 56, 0, 72, 69, 65, 80, 85, 49, 54, 0, 72, 69, 65, 80, 85, 51, 50, 0, 72, 69, 65, 80, 70, 54, 52, 0, 102, 48, 0, 102, 117, 110, 99, 116, 105, 111, 110, 0, 91, 0, 123, 0, 125, 0, 63, 0, 58, 0, 99, 97, 115, 101, 0, 100, 101, 102, 97, 117, 108, 116, 0, 100, 111, 116, 0, 110, 101, 119, 0, 97, 114, 114, 97, 121, 0, 111, 98, 106, 101, 99, 116, 0, 118, 97, 114, 32, 99, 111, 110, 115, 116, 32, 102, 117, 110, 99, 116, 105, 111, 110, 32, 105, 102, 32, 101, 108, 115, 101, 32, 100, 111, 32, 119, 104, 105, 108, 101, 32, 102, 111, 114, 32, 98, 114, 101, 97, 107, 32, 99, 111, 110, 116, 105, 110, 117, 101, 32, 114, 101, 116, 117, 114, 110, 32, 115, 119, 105, 116, 99, 104, 32, 99, 97, 115, 101, 32, 100, 101, 102, 97, 117, 108, 116, 32, 116, 104, 114, 111, 119, 32, 116, 114, 121, 32, 99, 97, 116, 99, 104, 32, 102, 105, 110, 97, 108, 108, 121, 32, 116, 114, 117, 101, 32, 102, 97, 108, 115, 101, 32, 110, 117, 108, 108, 32, 110, 101, 119, 0, 33, 32, 126, 32, 43, 32, 45, 0, 42, 32, 47, 32, 37, 0, 43, 32, 45, 0, 60, 60, 32, 62, 62, 32, 62, 62, 62, 0, 60, 32, 60, 61, 32, 62, 32, 62, 61, 0, 61, 61, 32, 33, 61, 0, 63, 32, 58, 0, 97, 115, 115, 105, 103, 110, 32, 99, 97, 108, 108, 32, 98, 105, 110, 97, 114, 121, 32, 117, 110, 97, 114, 121, 45, 112, 114, 101, 102, 105, 120, 32, 110, 97, 109, 101, 32, 110, 117, 109, 32, 99, 111, 110, 100, 105, 116, 105, 111, 110, 97, 108, 32, 100, 111, 116, 32, 110, 101, 119, 32, 115, 117, 98, 32, 115, 101, 113, 32, 115, 116, 114, 105, 110, 103, 32, 111, 98, 106, 101, 99, 116, 32, 97, 114, 114, 97, 121, 0, 83, 73, 77, 68, 95, 73, 110, 116, 56, 120, 49, 54, 95, 99, 104, 101, 99, 107, 0, 83, 73, 77, 68, 95, 73, 110, 116, 49, 54, 120, 56, 95, 99, 104, 101, 99, 107, 0, 83, 73, 77, 68, 95, 73, 110, 116, 51, 50, 120, 52, 95, 99, 104, 101, 99, 107, 0, 83, 73, 77, 68, 95, 70, 108, 111, 97, 116, 51, 50, 120, 52, 95, 99, 104, 101, 99, 107, 0, 83, 73, 77, 68, 95, 70, 108, 111, 97, 116, 54, 52, 120, 50, 95, 99, 104, 101, 99, 107, 0, 0, 1, 28, 2, 29, 14, 24, 3, 30, 22, 20, 15, 25, 17, 4, 8, 31, 27, 13, 23, 21, 19, 16, 7, 26, 12, 18, 6, 11, 5, 10, 9, 31, 22, 30, 21, 18, 10, 29, 2, 20, 17, 15, 13, 9, 6, 28, 1, 23, 19, 11, 3, 16, 14, 7, 24, 12, 4, 8, 25, 5, 26, 27, 0, 66, 73, 78, 65, 82, 89, 69, 78, 95, 67, 79, 82, 69, 83, 0, 111, 108, 100, 32, 61, 61, 32, 116, 104, 114, 101, 97, 100, 115, 46, 115, 105, 122, 101, 40, 41, 0, 115, 114, 99, 47, 115, 117, 112, 112, 111, 114, 116, 47, 116, 104, 114, 101, 97, 100, 115, 46, 99, 112, 112, 0, 114, 101, 115, 101, 116, 84, 104, 114, 101, 97, 100, 115, 65, 114, 101, 82, 101, 97, 100, 121, 0, 33, 84, 104, 114, 101, 97, 100, 80, 111, 111, 108, 58, 58, 103, 101, 116, 40, 41, 45, 62, 105, 115, 82, 117, 110, 110, 105, 110, 103, 40, 41, 0, 84, 104, 114, 101, 97, 100, 0, 116, 104, 114, 101, 97, 100, 32, 99, 111, 110, 115, 116, 114, 117, 99, 116, 111, 114, 32, 102, 97, 105, 108, 101, 100, 0, 126, 84, 104, 114, 101, 97, 100, 0, 100, 111, 87, 111, 114, 107, 101, 114, 115, 46, 115, 105, 122, 101, 40, 41, 32, 62, 32, 48, 0, 119, 111, 114, 107, 0, 100, 111, 87, 111, 114, 107, 101, 114, 115, 46, 115, 105, 122, 101, 40, 41, 32, 61, 61, 32, 110, 117, 109, 0, 33, 114, 117, 110, 110, 105, 110, 103, 0, 70, 85, 78, 67, 83, 73, 71, 36, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 255, 255, 255, 255, 255, 255, 255, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 255, 255, 255, 255, 255, 255, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 1, 2, 4, 7, 3, 6, 5, 0, 17, 0, 10, 0, 17, 17, 17, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 15, 10, 17, 17, 17, 3, 10, 7, 0, 1, 19, 9, 11, 11, 0, 0, 9, 6, 11, 0, 0, 11, 0, 6, 17, 0, 0, 0, 17, 17, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 10, 10, 17, 17, 17, 0, 10, 0, 0, 2, 0, 9, 11, 0, 0, 0, 9, 0, 11, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 12, 0, 0, 0, 0, 9, 12, 0, 0, 0, 0, 0, 12, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 4, 13, 0, 0, 0, 0, 9, 14, 0, 0, 0, 0, 0, 14, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 15, 0, 0, 0, 0, 9, 16, 0, 0, 0, 0, 0, 16, 0, 0, 16, 0, 0, 18, 0, 0, 0, 18, 18, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 18, 18, 18, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 10, 0, 0, 0, 0, 9, 11, 0, 0, 0, 0, 0, 11, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 12, 0, 0, 0, 0, 9, 12, 0, 0, 0, 0, 0, 12, 0, 0, 12, 0, 0, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 65, 66, 67, 68, 69, 70, 45, 43, 32, 32, 32, 48, 88, 48, 120, 0, 84, 33, 34, 25, 13, 1, 2, 3, 17, 75, 28, 12, 16, 4, 11, 29, 18, 30, 39, 104, 110, 111, 112, 113, 98, 32, 5, 6, 15, 19, 20, 21, 26, 8, 22, 7, 40, 36, 23, 24, 9, 10, 14, 27, 31, 37, 35, 131, 130, 125, 38, 42, 43, 60, 61, 62, 63, 67, 71, 74, 77, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 99, 100, 101, 102, 103, 105, 106, 107, 108, 114, 115, 116, 121, 122, 123, 124, 0, 73, 108, 108, 101, 103, 97, 108, 32, 98, 121, 116, 101, 32, 115, 101, 113, 117, 101, 110, 99, 101, 0, 68, 111, 109, 97, 105, 110, 32, 101, 114, 114, 111, 114, 0, 82, 101, 115, 117, 108, 116, 32, 110, 111, 116, 32, 114, 101, 112, 114, 101, 115, 101, 110, 116, 97, 98, 108, 101, 0, 78, 111, 116, 32, 97, 32, 116, 116, 121, 0, 80, 101, 114, 109, 105, 115, 115, 105, 111, 110, 32, 100, 101, 110, 105, 101, 100, 0, 79, 112, 101, 114, 97, 116, 105, 111, 110, 32, 110, 111, 116, 32, 112, 101, 114, 109, 105, 116, 116, 101, 100, 0, 78, 111, 32, 115, 117, 99, 104, 32, 102, 105, 108, 101, 32, 111, 114, 32, 100, 105, 114, 101, 99, 116, 111, 114, 121, 0, 78, 111, 32, 115, 117, 99, 104, 32, 112, 114, 111, 99, 101, 115, 115, 0, 70, 105, 108, 101, 32, 101, 120, 105, 115, 116, 115, 0, 86, 97, 108, 117, 101, 32, 116, 111, 111, 32, 108, 97, 114, 103, 101, 32, 102, 111, 114, 32, 100, 97, 116, 97, 32, 116, 121, 112, 101, 0, 78, 111, 32, 115, 112, 97, 99, 101, 32, 108, 101, 102, 116, 32, 111, 110, 32, 100, 101, 118, 105, 99, 101, 0, 79, 117, 116, 32, 111, 102, 32, 109, 101, 109, 111, 114, 121, 0, 82, 101, 115, 111, 117, 114, 99, 101, 32, 98, 117, 115, 121, 0, 73, 110, 116, 101, 114, 114, 117, 112, 116, 101, 100, 32, 115, 121, 115, 116, 101, 109, 32, 99, 97, 108, 108, 0, 82, 101, 115, 111, 117, 114, 99, 101, 32, 116, 101, 109, 112, 111, 114, 97, 114, 105, 108, 121, 32, 117, 110, 97, 118, 97, 105, 108, 97, 98, 108, 101, 0, 73, 110, 118, 97, 108, 105, 100, 32, 115, 101, 101, 107, 0, 67, 114, 111, 115, 115, 45, 100, 101, 118, 105, 99, 101, 32, 108, 105, 110, 107, 0, 82, 101, 97, 100, 45, 111, 110, 108, 121, 32, 102, 105, 108, 101, 32, 115, 121, 115, 116, 101, 109, 0, 68, 105, 114, 101, 99, 116, 111, 114, 121, 32, 110, 111, 116, 32, 101, 109, 112, 116, 121, 0, 67, 111, 110, 110, 101, 99, 116, 105, 111, 110, 32, 114, 101, 115, 101, 116, 32, 98, 121, 32, 112, 101, 101, 114, 0, 79, 112, 101, 114, 97, 116, 105, 111, 110, 32, 116, 105, 109, 101, 100, 32, 111, 117, 116, 0, 67, 111, 110, 110, 101, 99, 116, 105, 111, 110, 32, 114, 101, 102, 117, 115, 101, 100, 0, 72, 111, 115, 116, 32, 105, 115, 32, 100, 111, 119, 110, 0, 72, 111, 115, 116, 32, 105, 115, 32, 117, 110, 114, 101, 97, 99, 104, 97, 98, 108, 101, 0, 65, 100, 100, 114, 101, 115, 115, 32, 105, 110, 32, 117, 115, 101, 0, 66, 114, 111, 107, 101, 110, 32, 112, 105, 112, 101, 0, 73, 47, 79, 32, 101, 114, 114, 111, 114, 0, 78, 111, 32, 115, 117, 99, 104, 32, 100, 101, 118, 105, 99, 101, 32, 111, 114, 32, 97, 100, 100, 114, 101, 115, 115, 0, 66, 108, 111, 99, 107, 32, 100, 101, 118, 105, 99, 101, 32, 114, 101, 113, 117, 105, 114, 101, 100, 0, 78, 111, 32, 115, 117, 99, 104, 32, 100, 101, 118, 105, 99, 101, 0, 78, 111, 116, 32, 97, 32, 100, 105, 114, 101, 99, 116, 111, 114, 121, 0, 73, 115, 32, 97, 32, 100, 105, 114, 101, 99, 116, 111, 114, 121, 0, 84, 101, 120, 116, 32, 102, 105, 108, 101, 32, 98, 117, 115, 121, 0, 69, 120, 101, 99, 32, 102, 111, 114, 109, 97, 116, 32, 101, 114, 114, 111, 114, 0, 73, 110, 118, 97, 108, 105, 100, 32, 97, 114, 103, 117, 109, 101, 110, 116, 0, 65, 114, 103, 117, 109, 101, 110, 116, 32, 108, 105, 115, 116, 32, 116, 111, 111, 32, 108, 111, 110, 103, 0, 83, 121, 109, 98, 111, 108, 105, 99, 32, 108, 105, 110, 107, 32, 108, 111, 111, 112, 0, 70, 105, 108, 101, 110, 97, 109, 101, 32, 116, 111, 111, 32, 108, 111, 110, 103, 0, 84, 111, 111, 32, 109, 97, 110, 121, 32, 111, 112, 101, 110, 32, 102, 105, 108, 101, 115, 32, 105, 110, 32, 115, 121, 115, 116, 101, 109, 0, 78, 111, 32, 102, 105, 108, 101, 32, 100, 101, 115, 99, 114, 105, 112, 116, 111, 114, 115, 32, 97, 118, 97, 105, 108, 97, 98, 108, 101, 0, 66, 97, 100, 32, 102, 105, 108, 101, 32, 100, 101, 115, 99, 114, 105, 112, 116, 111, 114, 0, 78, 111, 32, 99, 104, 105, 108, 100, 32, 112, 114, 111, 99, 101, 115, 115, 0, 66, 97, 100, 32, 97, 100, 100, 114, 101, 115, 115, 0, 70, 105, 108, 101, 32, 116, 111, 111, 32, 108, 97, 114, 103, 101, 0, 84, 111, 111, 32, 109, 97, 110, 121, 32, 108, 105, 110, 107, 115, 0, 78, 111, 32, 108, 111, 99, 107, 115, 32, 97, 118, 97, 105, 108, 97, 98, 108, 101, 0, 82, 101, 115, 111, 117, 114, 99, 101, 32, 100, 101, 97, 100, 108, 111, 99, 107, 32, 119, 111, 117, 108, 100, 32, 111, 99, 99, 117, 114, 0, 83, 116, 97, 116, 101, 32, 110, 111, 116, 32, 114, 101, 99, 111, 118, 101, 114, 97, 98, 108, 101, 0, 80, 114, 101, 118, 105, 111, 117, 115, 32, 111, 119, 110, 101, 114, 32, 100, 105, 101, 100, 0, 79, 112, 101, 114, 97, 116, 105, 111, 110, 32, 99, 97, 110, 99, 101, 108, 101, 100, 0, 70, 117, 110, 99, 116, 105, 111, 110, 32, 110, 111, 116, 32, 105, 109, 112, 108, 101, 109, 101, 110, 116, 101, 100, 0, 78, 111, 32, 109, 101, 115, 115, 97, 103, 101, 32, 111, 102, 32, 100, 101, 115, 105, 114, 101, 100, 32, 116, 121, 112, 101, 0, 73, 100, 101, 110, 116, 105, 102, 105, 101, 114, 32, 114, 101, 109, 111, 118, 101, 100, 0, 68, 101, 118, 105, 99, 101, 32, 110, 111, 116, 32, 97, 32, 115, 116, 114, 101, 97, 109, 0, 78, 111, 32, 100, 97, 116, 97, 32, 97, 118, 97, 105, 108, 97, 98, 108, 101, 0, 68, 101, 118, 105, 99, 101, 32, 116, 105, 109, 101, 111, 117, 116, 0, 79, 117, 116, 32, 111, 102, 32, 115, 116, 114, 101, 97, 109, 115, 32, 114, 101, 115, 111, 117, 114, 99, 101, 115, 0, 76, 105, 110, 107, 32, 104, 97, 115, 32, 98, 101, 101, 110, 32, 115, 101, 118, 101, 114, 101, 100, 0, 80, 114, 111, 116, 111, 99, 111, 108, 32, 101, 114, 114, 111, 114, 0, 66, 97, 100, 32, 109, 101, 115, 115, 97, 103, 101, 0, 70, 105, 108, 101, 32, 100, 101, 115, 99, 114, 105, 112, 116, 111, 114, 32, 105, 110, 32, 98, 97, 100, 32, 115, 116, 97, 116, 101, 0, 78, 111, 116, 32, 97, 32, 115, 111, 99, 107, 101, 116, 0, 68, 101, 115, 116, 105, 110, 97, 116, 105, 111, 110, 32, 97, 100, 100, 114, 101, 115, 115, 32, 114, 101, 113, 117, 105, 114, 101, 100, 0, 77, 101, 115, 115, 97, 103, 101, 32, 116, 111, 111, 32, 108, 97, 114, 103, 101, 0, 80, 114, 111, 116, 111, 99, 111, 108, 32, 119, 114, 111, 110, 103, 32, 116, 121, 112, 101, 32, 102, 111, 114, 32, 115, 111, 99, 107, 101, 116, 0, 80, 114, 111, 116, 111, 99, 111, 108, 32, 110, 111, 116, 32, 97, 118, 97, 105, 108, 97, 98, 108, 101, 0, 80, 114, 111, 116, 111, 99, 111, 108, 32, 110, 111, 116, 32, 115, 117, 112, 112, 111, 114, 116, 101, 100, 0, 83, 111, 99, 107, 101, 116, 32, 116, 121, 112, 101, 32, 110, 111, 116, 32, 115, 117, 112, 112, 111, 114, 116, 101, 100, 0, 78, 111, 116, 32, 115, 117, 112, 112, 111, 114, 116, 101, 100, 0, 80, 114, 111, 116, 111, 99, 111, 108, 32, 102, 97, 109, 105, 108, 121, 32, 110, 111, 116, 32, 115, 117, 112, 112, 111, 114, 116, 101, 100, 0, 65, 100, 100, 114, 101, 115, 115, 32, 102, 97, 109, 105, 108, 121, 32, 110, 111, 116, 32, 115, 117, 112, 112, 111, 114, 116, 101, 100, 32, 98, 121, 32, 112, 114, 111, 116, 111, 99, 111, 108, 0, 65, 100, 100, 114, 101, 115, 115, 32, 110, 111, 116, 32, 97, 118, 97, 105, 108, 97, 98, 108, 101, 0, 78, 101, 116, 119, 111, 114, 107, 32, 105, 115, 32, 100, 111, 119, 110, 0, 78, 101, 116, 119, 111, 114, 107, 32, 117, 110, 114, 101, 97, 99, 104, 97, 98, 108, 101, 0, 67, 111, 110, 110, 101, 99, 116, 105, 111, 110, 32, 114, 101, 115, 101, 116, 32, 98, 121, 32, 110, 101, 116, 119, 111, 114, 107, 0, 67, 111, 110, 110, 101, 99, 116, 105, 111, 110, 32, 97, 98, 111, 114, 116, 101, 100, 0, 78, 111, 32, 98, 117, 102, 102, 101, 114, 32, 115, 112, 97, 99, 101, 32, 97, 118, 97, 105, 108, 97, 98, 108, 101, 0, 83, 111, 99, 107, 101, 116, 32, 105, 115, 32, 99, 111, 110, 110, 101, 99, 116, 101, 100, 0, 83, 111, 99, 107, 101, 116, 32, 110, 111, 116, 32, 99, 111, 110, 110, 101, 99, 116, 101, 100, 0, 67, 97, 110, 110, 111, 116, 32, 115, 101, 110, 100, 32, 97, 102, 116, 101, 114, 32, 115, 111, 99, 107, 101, 116, 32, 115, 104, 117, 116, 100, 111, 119, 110, 0, 79, 112, 101, 114, 97, 116, 105, 111, 110, 32, 97, 108, 114, 101, 97, 100, 121, 32, 105, 110, 32, 112, 114, 111, 103, 114, 101, 115, 115, 0, 79, 112, 101, 114, 97, 116, 105, 111, 110, 32, 105, 110, 32, 112, 114, 111, 103, 114, 101, 115, 115, 0, 83, 116, 97, 108, 101, 32, 102, 105, 108, 101, 32, 104, 97, 110, 100, 108, 101, 0, 82, 101, 109, 111, 116, 101, 32, 73, 47, 79, 32, 101, 114, 114, 111, 114, 0, 81, 117, 111, 116, 97, 32, 101, 120, 99, 101, 101, 100, 101, 100, 0, 78, 111, 32, 109, 101, 100, 105, 117, 109, 32, 102, 111, 117, 110, 100, 0, 87, 114, 111, 110, 103, 32, 109, 101, 100, 105, 117, 109, 32, 116, 121, 112, 101, 0, 78, 111, 32, 101, 114, 114, 111, 114, 32, 105, 110, 102, 111, 114, 109, 97, 116, 105, 111, 110, 0, 0, 40, 110, 117, 108, 108, 41, 0, 45, 48, 88, 43, 48, 88, 32, 48, 88, 45, 48, 120, 43, 48, 120, 32, 48, 120, 0, 105, 110, 102, 0, 73, 78, 70, 0, 78, 65, 78, 0, 105, 110, 102, 105, 110, 105, 116, 121, 0, 110, 97, 110, 0, 80, 79, 83, 73, 88, 0, 99, 111, 110, 100, 105, 116, 105, 111, 110, 95, 118, 97, 114, 105, 97, 98, 108, 101, 58, 58, 119, 97, 105, 116, 58, 32, 109, 117, 116, 101, 120, 32, 110, 111, 116, 32, 108, 111, 99, 107, 101, 100, 0, 99, 111, 110, 100, 105, 116, 105, 111, 110, 95, 118, 97, 114, 105, 97, 98, 108, 101, 32, 119, 97, 105, 116, 32, 102, 97, 105, 108, 101, 100, 0, 78, 83, 116, 51, 95, 95, 49, 49, 48, 95, 95, 115, 116, 100, 105, 110, 98, 117, 102, 73, 99, 69, 69, 0, 117, 110, 115, 117, 112, 112, 111, 114, 116, 101, 100, 32, 108, 111, 99, 97, 108, 101, 32, 102, 111, 114, 32, 115, 116, 97, 110, 100, 97, 114, 100, 32, 105, 110, 112, 117, 116, 0, 78, 83, 116, 51, 95, 95, 49, 49, 49, 95, 95, 115, 116, 100, 111, 117, 116, 98, 117, 102, 73, 99, 69, 69, 0, 78, 83, 116, 51, 95, 95, 49, 49, 48, 95, 95, 115, 116, 100, 105, 110, 98, 117, 102, 73, 119, 69, 69, 0, 78, 83, 116, 51, 95, 95, 49, 49, 49, 95, 95, 115, 116, 100, 111, 117, 116, 98, 117, 102, 73, 119, 69, 69, 0, 109, 117, 116, 101, 120, 32, 108, 111, 99, 107, 32, 102, 97, 105, 108, 101, 100, 0, 101, 99, 32, 61, 61, 32, 48, 0, 47, 86, 111, 108, 117, 109, 101, 115, 47, 68, 97, 116, 97, 47, 85, 115, 101, 114, 115, 47, 106, 97, 110, 47, 101, 109, 115, 100, 107, 95, 112, 111, 114, 116, 97, 98, 108, 101, 47, 101, 109, 115, 99, 114, 105, 112, 116, 101, 110, 47, 105, 110, 99, 111, 109, 105, 110, 103, 47, 115, 121, 115, 116, 101, 109, 47, 108, 105, 98, 47, 108, 105, 98, 99, 120, 120, 47, 109, 117, 116, 101, 120, 46, 99, 112, 112, 0, 117, 110, 108, 111, 99, 107, 0, 117, 110, 105, 113, 117, 101, 95, 108, 111, 99, 107, 58, 58, 117, 110, 108, 111, 99, 107, 58, 32, 110, 111, 116, 32, 108, 111, 99, 107, 101, 100, 0, 33, 34, 98, 97, 115, 105, 99, 95, 115, 116, 114, 105, 110, 103, 32, 108, 101, 110, 103, 116, 104, 95, 101, 114, 114, 111, 114, 34, 0, 47, 86, 111, 108, 117, 109, 101, 115, 47, 68, 97, 116, 97, 47, 85, 115, 101, 114, 115, 47, 106, 97, 110, 47, 101, 109, 115, 100, 107, 95, 112, 111, 114, 116, 97, 98, 108, 101, 47, 101, 109, 115, 99, 114, 105, 112, 116, 101, 110, 47, 105, 110, 99, 111, 109, 105, 110, 103, 47, 115, 121, 115, 116, 101, 109, 47, 105, 110, 99, 108, 117, 100, 101, 47, 108, 105, 98, 99, 120, 120, 47, 115, 116, 114, 105, 110, 103, 0, 33, 34, 98, 97, 115, 105, 99, 95, 115, 116, 114, 105, 110, 103, 32, 111, 117, 116, 95, 111, 102, 95, 114, 97, 110, 103, 101, 34, 0, 95, 95, 116, 104, 114, 111, 119, 95, 111, 117, 116, 95, 111, 102, 95, 114, 97, 110, 103, 101, 0, 115, 116, 111, 105, 0, 58, 32, 111, 117, 116, 32, 111, 102, 32, 114, 97, 110, 103, 101, 0, 58, 32, 110, 111, 32, 99, 111, 110, 118, 101, 114, 115, 105, 111, 110, 0, 37, 117, 0, 99, 108, 111, 99, 107, 95, 103, 101, 116, 116, 105, 109, 101, 40, 67, 76, 79, 67, 75, 95, 77, 79, 78, 79, 84, 79, 78, 73, 67, 41, 32, 102, 97, 105, 108, 101, 100, 0, 78, 83, 116, 51, 95, 95, 49, 57, 98, 97, 115, 105, 99, 95, 105, 111, 115, 73, 99, 78, 83, 95, 49, 49, 99, 104, 97, 114, 95, 116, 114, 97, 105, 116, 115, 73, 99, 69, 69, 69, 69, 0, 78, 83, 116, 51, 95, 95, 49, 56, 105, 111, 115, 95, 98, 97, 115, 101, 69, 0, 78, 83, 116, 51, 95, 95, 49, 57, 98, 97, 115, 105, 99, 95, 105, 111, 115, 73, 119, 78, 83, 95, 49, 49, 99, 104, 97, 114, 95, 116, 114, 97, 105, 116, 115, 73, 119, 69, 69, 69, 69, 0, 78, 83, 116, 51, 95, 95, 49, 49, 53, 98, 97, 115, 105, 99, 95, 115, 116, 114, 101, 97, 109, 98, 117, 102, 73, 99, 78, 83, 95, 49, 49, 99, 104, 97, 114, 95, 116, 114, 97, 105, 116, 115, 73, 99, 69, 69, 69, 69, 0, 78, 83, 116, 51, 95, 95, 49, 49, 53, 98, 97, 115, 105, 99, 95, 115, 116, 114, 101, 97, 109, 98, 117, 102, 73, 119, 78, 83, 95, 49, 49, 99, 104, 97, 114, 95, 116, 114, 97, 105, 116, 115, 73, 119, 69, 69, 69, 69, 0, 78, 83, 116, 51, 95, 95, 49, 49, 51, 98, 97, 115, 105, 99, 95, 105, 115, 116, 114, 101, 97, 109, 73, 99, 78, 83, 95, 49, 49, 99, 104, 97, 114, 95, 116, 114, 97, 105, 116, 115, 73, 99, 69, 69, 69, 69, 0, 78, 83, 116, 51, 95, 95, 49, 49, 51, 98, 97, 115, 105, 99, 95, 105, 115, 116, 114, 101, 97, 109, 73, 119, 78, 83, 95, 49, 49, 99, 104, 97, 114, 95, 116, 114, 97, 105, 116, 115, 73, 119, 69, 69, 69, 69, 0, 78, 83, 116, 51, 95, 95, 49, 49, 51, 98, 97, 115, 105, 99, 95, 111, 115, 116, 114, 101, 97, 109, 73, 99, 78, 83, 95, 49, 49, 99, 104, 97, 114, 95, 116, 114, 97, 105, 116, 115, 73, 99, 69, 69, 69, 69, 0, 78, 83, 116, 51, 95, 95, 49, 49, 51, 98, 97, 115, 105, 99, 95, 111, 115, 116, 114, 101, 97, 109, 73, 119, 78, 83, 95, 49, 49, 99, 104, 97, 114, 95, 116, 114, 97, 105, 116, 115, 73, 119, 69, 69, 69, 69, 0, 78, 83, 116, 51, 95, 95, 49, 49, 52, 98, 97, 115, 105, 99, 95, 105, 111, 115, 116, 114, 101, 97, 109, 73, 99, 78, 83, 95, 49, 49, 99, 104, 97, 114, 95, 116, 114, 97, 105, 116, 115, 73, 99, 69, 69, 69, 69, 0, 78, 83, 116, 51, 95, 95, 49, 55, 99, 111, 108, 108, 97, 116, 101, 73, 99, 69, 69, 0, 78, 83, 116, 51, 95, 95, 49, 54, 108, 111, 99, 97, 108, 101, 53, 102, 97, 99, 101, 116, 69, 0, 78, 83, 116, 51, 95, 95, 49, 55, 99, 111, 108, 108, 97, 116, 101, 73, 119, 69, 69, 0, 78, 83, 116, 51, 95, 95, 49, 55, 110, 117, 109, 95, 103, 101, 116, 73, 99, 78, 83, 95, 49, 57, 105, 115, 116, 114, 101, 97, 109, 98, 117, 102, 95, 105, 116, 101, 114, 97, 116, 111, 114, 73, 99, 78, 83, 95, 49, 49, 99, 104, 97, 114, 95, 116, 114, 97, 105, 116, 115, 73, 99, 69, 69, 69, 69, 69, 69, 0, 78, 83, 116, 51, 95, 95, 49, 57, 95, 95, 110, 117, 109, 95, 103, 101, 116, 73, 99, 69, 69, 0, 78, 83, 116, 51, 95, 95, 49, 49, 52, 95, 95, 110, 117, 109, 95, 103, 101, 116, 95, 98, 97, 115, 101, 69, 0, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 97, 98, 99, 100, 101, 102, 65, 66, 67, 68, 69, 70, 120, 88, 43, 45, 112, 80, 105, 73, 110, 78, 0, 67, 0, 37, 112, 0, 78, 83, 116, 51, 95, 95, 49, 55, 110, 117, 109, 95, 103, 101, 116, 73, 119, 78, 83, 95, 49, 57, 105, 115, 116, 114, 101, 97, 109, 98, 117, 102, 95, 105, 116, 101, 114, 97, 116, 111, 114, 73, 119, 78, 83, 95, 49, 49, 99, 104, 97, 114, 95, 116, 114, 97, 105, 116, 115, 73, 119, 69, 69, 69, 69, 69, 69, 0, 78, 83, 116, 51, 95, 95, 49, 57, 95, 95, 110, 117, 109, 95, 103, 101, 116, 73, 119, 69, 69, 0, 78, 83, 116, 51, 95, 95, 49, 55, 110, 117, 109, 95, 112, 117, 116, 73, 99, 78, 83, 95, 49, 57, 111, 115, 116, 114, 101, 97, 109, 98, 117, 102, 95, 105, 116, 101, 114, 97, 116, 111, 114, 73, 99, 78, 83, 95, 49, 49, 99, 104, 97, 114, 95, 116, 114, 97, 105, 116, 115, 73, 99, 69, 69, 69, 69, 69, 69, 0, 78, 83, 116, 51, 95, 95, 49, 57, 95, 95, 110, 117, 109, 95, 112, 117, 116, 73, 99, 69, 69, 0, 78, 83, 116, 51, 95, 95, 49, 49, 52, 95, 95, 110, 117, 109, 95, 112, 117, 116, 95, 98, 97, 115, 101, 69, 0, 37, 0, 0, 0, 0, 0, 76, 0, 37, 112, 0, 0, 0, 0, 78, 83, 116, 51, 95, 95, 49, 55, 110, 117, 109, 95, 112, 117, 116, 73, 119, 78, 83, 95, 49, 57, 111 ], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE + 20480);
allocate([ 115, 116, 114, 101, 97, 109, 98, 117, 102, 95, 105, 116, 101, 114, 97, 116, 111, 114, 73, 119, 78, 83, 95, 49, 49, 99, 104, 97, 114, 95, 116, 114, 97, 105, 116, 115, 73, 119, 69, 69, 69, 69, 69, 69, 0, 78, 83, 116, 51, 95, 95, 49, 57, 95, 95, 110, 117, 109, 95, 112, 117, 116, 73, 119, 69, 69, 0, 78, 83, 116, 51, 95, 95, 49, 56, 116, 105, 109, 101, 95, 103, 101, 116, 73, 99, 78, 83, 95, 49, 57, 105, 115, 116, 114, 101, 97, 109, 98, 117, 102, 95, 105, 116, 101, 114, 97, 116, 111, 114, 73, 99, 78, 83, 95, 49, 49, 99, 104, 97, 114, 95, 116, 114, 97, 105, 116, 115, 73, 99, 69, 69, 69, 69, 69, 69, 0, 78, 83, 116, 51, 95, 95, 49, 57, 116, 105, 109, 101, 95, 98, 97, 115, 101, 69, 0, 78, 83, 116, 51, 95, 95, 49, 50, 48, 95, 95, 116, 105, 109, 101, 95, 103, 101, 116, 95, 99, 95, 115, 116, 111, 114, 97, 103, 101, 73, 99, 69, 69, 0, 37, 72, 58, 37, 77, 58, 37, 83, 37, 109, 47, 37, 100, 47, 37, 121, 37, 89, 45, 37, 109, 45, 37, 100, 37, 73, 58, 37, 77, 58, 37, 83, 32, 37, 112, 37, 72, 58, 37, 77, 37, 72, 58, 37, 77, 58, 37, 83, 83, 117, 110, 100, 97, 121, 0, 77, 111, 110, 100, 97, 121, 0, 84, 117, 101, 115, 100, 97, 121, 0, 87, 101, 100, 110, 101, 115, 100, 97, 121, 0, 84, 104, 117, 114, 115, 100, 97, 121, 0, 70, 114, 105, 100, 97, 121, 0, 83, 97, 116, 117, 114, 100, 97, 121, 0, 83, 117, 110, 0, 77, 111, 110, 0, 84, 117, 101, 0, 87, 101, 100, 0, 84, 104, 117, 0, 70, 114, 105, 0, 83, 97, 116, 0, 74, 97, 110, 117, 97, 114, 121, 0, 70, 101, 98, 114, 117, 97, 114, 121, 0, 77, 97, 114, 99, 104, 0, 65, 112, 114, 105, 108, 0, 77, 97, 121, 0, 74, 117, 110, 101, 0, 74, 117, 108, 121, 0, 65, 117, 103, 117, 115, 116, 0, 83, 101, 112, 116, 101, 109, 98, 101, 114, 0, 79, 99, 116, 111, 98, 101, 114, 0, 78, 111, 118, 101, 109, 98, 101, 114, 0, 68, 101, 99, 101, 109, 98, 101, 114, 0, 74, 97, 110, 0, 70, 101, 98, 0, 77, 97, 114, 0, 65, 112, 114, 0, 74, 117, 110, 0, 74, 117, 108, 0, 65, 117, 103, 0, 83, 101, 112, 0, 79, 99, 116, 0, 78, 111, 118, 0, 68, 101, 99, 0, 65, 77, 0, 80, 77, 0, 37, 97, 32, 37, 98, 32, 37, 100, 32, 37, 72, 58, 37, 77, 58, 37, 83, 32, 37, 89, 0, 37, 73, 58, 37, 77, 58, 37, 83, 32, 37, 112, 0, 37, 109, 47, 37, 100, 47, 37, 121, 0, 37, 72, 58, 37, 77, 58, 37, 83, 0, 78, 83, 116, 51, 95, 95, 49, 56, 116, 105, 109, 101, 95, 103, 101, 116, 73, 119, 78, 83, 95, 49, 57, 105, 115, 116, 114, 101, 97, 109, 98, 117, 102, 95, 105, 116, 101, 114, 97, 116, 111, 114, 73, 119, 78, 83, 95, 49, 49, 99, 104, 97, 114, 95, 116, 114, 97, 105, 116, 115, 73, 119, 69, 69, 69, 69, 69, 69, 0, 78, 83, 116, 51, 95, 95, 49, 50, 48, 95, 95, 116, 105, 109, 101, 95, 103, 101, 116, 95, 99, 95, 115, 116, 111, 114, 97, 103, 101, 73, 119, 69, 69, 0, 78, 83, 116, 51, 95, 95, 49, 56, 116, 105, 109, 101, 95, 112, 117, 116, 73, 99, 78, 83, 95, 49, 57, 111, 115, 116, 114, 101, 97, 109, 98, 117, 102, 95, 105, 116, 101, 114, 97, 116, 111, 114, 73, 99, 78, 83, 95, 49, 49, 99, 104, 97, 114, 95, 116, 114, 97, 105, 116, 115, 73, 99, 69, 69, 69, 69, 69, 69, 0, 78, 83, 116, 51, 95, 95, 49, 49, 48, 95, 95, 116, 105, 109, 101, 95, 112, 117, 116, 69, 0, 78, 83, 116, 51, 95, 95, 49, 56, 116, 105, 109, 101, 95, 112, 117, 116, 73, 119, 78, 83, 95, 49, 57, 111, 115, 116, 114, 101, 97, 109, 98, 117, 102, 95, 105, 116, 101, 114, 97, 116, 111, 114, 73, 119, 78, 83, 95, 49, 49, 99, 104, 97, 114, 95, 116, 114, 97, 105, 116, 115, 73, 119, 69, 69, 69, 69, 69, 69, 0, 78, 83, 116, 51, 95, 95, 49, 49, 48, 109, 111, 110, 101, 121, 112, 117, 110, 99, 116, 73, 99, 76, 98, 48, 69, 69, 69, 0, 78, 83, 116, 51, 95, 95, 49, 49, 48, 109, 111, 110, 101, 121, 95, 98, 97, 115, 101, 69, 0, 78, 83, 116, 51, 95, 95, 49, 49, 48, 109, 111, 110, 101, 121, 112, 117, 110, 99, 116, 73, 99, 76, 98, 49, 69, 69, 69, 0, 78, 83, 116, 51, 95, 95, 49, 49, 48, 109, 111, 110, 101, 121, 112, 117, 110, 99, 116, 73, 119, 76, 98, 48, 69, 69, 69, 0, 78, 83, 116, 51, 95, 95, 49, 49, 48, 109, 111, 110, 101, 121, 112, 117, 110, 99, 116, 73, 119, 76, 98, 49, 69, 69, 69, 0, 78, 83, 116, 51, 95, 95, 49, 57, 109, 111, 110, 101, 121, 95, 103, 101, 116, 73, 99, 78, 83, 95, 49, 57, 105, 115, 116, 114, 101, 97, 109, 98, 117, 102, 95, 105, 116, 101, 114, 97, 116, 111, 114, 73, 99, 78, 83, 95, 49, 49, 99, 104, 97, 114, 95, 116, 114, 97, 105, 116, 115, 73, 99, 69, 69, 69, 69, 69, 69, 0, 78, 83, 116, 51, 95, 95, 49, 49, 49, 95, 95, 109, 111, 110, 101, 121, 95, 103, 101, 116, 73, 99, 69, 69, 0, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 0, 37, 76, 102, 0, 78, 83, 116, 51, 95, 95, 49, 57, 109, 111, 110, 101, 121, 95, 103, 101, 116, 73, 119, 78, 83, 95, 49, 57, 105, 115, 116, 114, 101, 97, 109, 98, 117, 102, 95, 105, 116, 101, 114, 97, 116, 111, 114, 73, 119, 78, 83, 95, 49, 49, 99, 104, 97, 114, 95, 116, 114, 97, 105, 116, 115, 73, 119, 69, 69, 69, 69, 69, 69, 0, 78, 83, 116, 51, 95, 95, 49, 49, 49, 95, 95, 109, 111, 110, 101, 121, 95, 103, 101, 116, 73, 119, 69, 69, 0, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 0, 78, 83, 116, 51, 95, 95, 49, 57, 109, 111, 110, 101, 121, 95, 112, 117, 116, 73, 99, 78, 83, 95, 49, 57, 111, 115, 116, 114, 101, 97, 109, 98, 117, 102, 95, 105, 116, 101, 114, 97, 116, 111, 114, 73, 99, 78, 83, 95, 49, 49, 99, 104, 97, 114, 95, 116, 114, 97, 105, 116, 115, 73, 99, 69, 69, 69, 69, 69, 69, 0, 78, 83, 116, 51, 95, 95, 49, 49, 49, 95, 95, 109, 111, 110, 101, 121, 95, 112, 117, 116, 73, 99, 69, 69, 0, 37, 46, 48, 76, 102, 0, 78, 83, 116, 51, 95, 95, 49, 57, 109, 111, 110, 101, 121, 95, 112, 117, 116, 73, 119, 78, 83, 95, 49, 57, 111, 115, 116, 114, 101, 97, 109, 98, 117, 102, 95, 105, 116, 101, 114, 97, 116, 111, 114, 73, 119, 78, 83, 95, 49, 49, 99, 104, 97, 114, 95, 116, 114, 97, 105, 116, 115, 73, 119, 69, 69, 69, 69, 69, 69, 0, 78, 83, 116, 51, 95, 95, 49, 49, 49, 95, 95, 109, 111, 110, 101, 121, 95, 112, 117, 116, 73, 119, 69, 69, 0, 78, 83, 116, 51, 95, 95, 49, 56, 109, 101, 115, 115, 97, 103, 101, 115, 73, 99, 69, 69, 0, 78, 83, 116, 51, 95, 95, 49, 49, 51, 109, 101, 115, 115, 97, 103, 101, 115, 95, 98, 97, 115, 101, 69, 0, 78, 83, 116, 51, 95, 95, 49, 56, 109, 101, 115, 115, 97, 103, 101, 115, 73, 119, 69, 69, 0, 78, 83, 116, 51, 95, 95, 49, 49, 54, 95, 95, 110, 97, 114, 114, 111, 119, 95, 116, 111, 95, 117, 116, 102, 56, 73, 76, 106, 51, 50, 69, 69, 69, 0, 78, 83, 116, 51, 95, 95, 49, 55, 99, 111, 100, 101, 99, 118, 116, 73, 68, 105, 99, 49, 49, 95, 95, 109, 98, 115, 116, 97, 116, 101, 95, 116, 69, 69, 0, 78, 83, 116, 51, 95, 95, 49, 49, 50, 99, 111, 100, 101, 99, 118, 116, 95, 98, 97, 115, 101, 69, 0, 78, 83, 116, 51, 95, 95, 49, 49, 55, 95, 95, 119, 105, 100, 101, 110, 95, 102, 114, 111, 109, 95, 117, 116, 102, 56, 73, 76, 106, 51, 50, 69, 69, 69, 0, 78, 83, 116, 51, 95, 95, 49, 55, 99, 111, 100, 101, 99, 118, 116, 73, 99, 99, 49, 49, 95, 95, 109, 98, 115, 116, 97, 116, 101, 95, 116, 69, 69, 0, 78, 83, 116, 51, 95, 95, 49, 55, 99, 111, 100, 101, 99, 118, 116, 73, 119, 99, 49, 49, 95, 95, 109, 98, 115, 116, 97, 116, 101, 95, 116, 69, 69, 0, 78, 83, 116, 51, 95, 95, 49, 55, 99, 111, 100, 101, 99, 118, 116, 73, 68, 115, 99, 49, 49, 95, 95, 109, 98, 115, 116, 97, 116, 101, 95, 116, 69, 69, 0, 78, 83, 116, 51, 95, 95, 49, 54, 108, 111, 99, 97, 108, 101, 53, 95, 95, 105, 109, 112, 69, 0, 78, 83, 116, 51, 95, 95, 49, 53, 99, 116, 121, 112, 101, 73, 99, 69, 69, 0, 78, 83, 116, 51, 95, 95, 49, 49, 48, 99, 116, 121, 112, 101, 95, 98, 97, 115, 101, 69, 0, 78, 83, 116, 51, 95, 95, 49, 53, 99, 116, 121, 112, 101, 73, 119, 69, 69, 0, 78, 83, 116, 51, 95, 95, 49, 56, 110, 117, 109, 112, 117, 110, 99, 116, 73, 99, 69, 69, 0, 78, 83, 116, 51, 95, 95, 49, 56, 110, 117, 109, 112, 117, 110, 99, 116, 73, 119, 69, 69, 0, 33, 34, 118, 101, 99, 116, 111, 114, 32, 108, 101, 110, 103, 116, 104, 95, 101, 114, 114, 111, 114, 34, 0, 47, 86, 111, 108, 117, 109, 101, 115, 47, 68, 97, 116, 97, 47, 85, 115, 101, 114, 115, 47, 106, 97, 110, 47, 101, 109, 115, 100, 107, 95, 112, 111, 114, 116, 97, 98, 108, 101, 47, 101, 109, 115, 99, 114, 105, 112, 116, 101, 110, 47, 105, 110, 99, 111, 109, 105, 110, 103, 47, 115, 121, 115, 116, 101, 109, 47, 105, 110, 99, 108, 117, 100, 101, 47, 108, 105, 98, 99, 120, 120, 47, 118, 101, 99, 116, 111, 114, 0, 95, 95, 116, 104, 114, 111, 119, 95, 108, 101, 110, 103, 116, 104, 95, 101, 114, 114, 111, 114, 0, 78, 83, 116, 51, 95, 95, 49, 49, 52, 95, 95, 115, 104, 97, 114, 101, 100, 95, 99, 111, 117, 110, 116, 69, 0, 99, 97, 110, 110, 111, 116, 32, 122, 101, 114, 111, 32, 111, 117, 116, 32, 116, 104, 114, 101, 97, 100, 32, 118, 97, 108, 117, 101, 32, 102, 111, 114, 32, 95, 95, 99, 120, 97, 95, 103, 101, 116, 95, 103, 108, 111, 98, 97, 108, 115, 40, 41, 0, 99, 97, 110, 110, 111, 116, 32, 99, 114, 101, 97, 116, 101, 32, 112, 116, 104, 114, 101, 97, 100, 32, 107, 101, 121, 32, 102, 111, 114, 32, 95, 95, 99, 120, 97, 95, 103, 101, 116, 95, 103, 108, 111, 98, 97, 108, 115, 40, 41, 0, 112, 116, 104, 114, 101, 97, 100, 95, 111, 110, 99, 101, 32, 102, 97, 105, 108, 117, 114, 101, 32, 105, 110, 32, 95, 95, 99, 120, 97, 95, 103, 101, 116, 95, 103, 108, 111, 98, 97, 108, 115, 95, 102, 97, 115, 116, 40, 41, 0, 78, 49, 48, 95, 95, 99, 120, 120, 97, 98, 105, 118, 49, 50, 48, 95, 95, 115, 105, 95, 99, 108, 97, 115, 115, 95, 116, 121, 112, 101, 95, 105, 110, 102, 111, 69, 0, 78, 49, 48, 95, 95, 99, 120, 120, 97, 98, 105, 118, 49, 49, 54, 95, 95, 115, 104, 105, 109, 95, 116, 121, 112, 101, 95, 105, 110, 102, 111, 69, 0, 83, 116, 57, 116, 121, 112, 101, 95, 105, 110, 102, 111, 0, 78, 49, 48, 95, 95, 99, 120, 120, 97, 98, 105, 118, 49, 49, 55, 95, 95, 99, 108, 97, 115, 115, 95, 116, 121, 112, 101, 95, 105, 110, 102, 111, 69, 0, 83, 116, 57, 101, 120, 99, 101, 112, 116, 105, 111, 110, 0, 117, 110, 99, 97, 117, 103, 104, 116, 0, 116, 101, 114, 109, 105, 110, 97, 116, 105, 110, 103, 32, 119, 105, 116, 104, 32, 37, 115, 32, 101, 120, 99, 101, 112, 116, 105, 111, 110, 32, 111, 102, 32, 116, 121, 112, 101, 32, 37, 115, 58, 32, 37, 115, 0, 116, 101, 114, 109, 105, 110, 97, 116, 105, 110, 103, 32, 119, 105, 116, 104, 32, 37, 115, 32, 101, 120, 99, 101, 112, 116, 105, 111, 110, 32, 111, 102, 32, 116, 121, 112, 101, 32, 37, 115, 0, 116, 101, 114, 109, 105, 110, 97, 116, 105, 110, 103, 32, 119, 105, 116, 104, 32, 37, 115, 32, 102, 111, 114, 101, 105, 103, 110, 32, 101, 120, 99, 101, 112, 116, 105, 111, 110, 0, 116, 101, 114, 109, 105, 110, 97, 116, 105, 110, 103, 0, 116, 101, 114, 109, 105, 110, 97, 116, 101, 95, 104, 97, 110, 100, 108, 101, 114, 32, 117, 110, 101, 120, 112, 101, 99, 116, 101, 100, 108, 121, 32, 114, 101, 116, 117, 114, 110, 101, 100, 0, 83, 116, 57, 98, 97, 100, 95, 97, 108, 108, 111, 99, 0, 115, 116, 100, 58, 58, 98, 97, 100, 95, 97, 108, 108, 111, 99, 0, 115, 116, 100, 58, 58, 101, 120, 99, 101, 112, 116, 105, 111, 110, 0, 83, 116, 49, 49, 108, 111, 103, 105, 99, 95, 101, 114, 114, 111, 114, 0, 83, 116, 49, 50, 111, 117, 116, 95, 111, 102, 95, 114, 97, 110, 103, 101, 0, 78, 49, 48, 95, 95, 99, 120, 120, 97, 98, 105, 118, 49, 49, 57, 95, 95, 112, 111, 105, 110, 116, 101, 114, 95, 116, 121, 112, 101, 95, 105, 110, 102, 111, 69, 0, 78, 49, 48, 95, 95, 99, 120, 120, 97, 98, 105, 118, 49, 49, 55, 95, 95, 112, 98, 97, 115, 101, 95, 116, 121, 112, 101, 95, 105, 110, 102, 111, 69, 0, 78, 49, 48, 95, 95, 99, 120, 120, 97, 98, 105, 118, 49, 50, 49, 95, 95, 118, 109, 105, 95, 99, 108, 97, 115, 115, 95, 116, 121, 112, 101, 95, 105, 110, 102, 111, 69, 0, 32, 99, 111, 110, 115, 116, 0, 32, 118, 111, 108, 97, 116, 105, 108, 101, 0, 32, 114, 101, 115, 116, 114, 105, 99, 116, 0, 118, 111, 105, 100, 0, 119, 99, 104, 97, 114, 95, 116, 0, 98, 111, 111, 108, 0, 99, 104, 97, 114, 0, 115, 105, 103, 110, 101, 100, 32, 99, 104, 97, 114, 0, 117, 110, 115, 105, 103, 110, 101, 100, 32, 99, 104, 97, 114, 0, 115, 104, 111, 114, 116, 0, 117, 110, 115, 105, 103, 110, 101, 100, 32, 115, 104, 111, 114, 116, 0, 105, 110, 116, 0, 117, 110, 115, 105, 103, 110, 101, 100, 32, 105, 110, 116, 0, 108, 111, 110, 103, 0, 117, 110, 115, 105, 103, 110, 101, 100, 32, 108, 111, 110, 103, 0, 108, 111, 110, 103, 32, 108, 111, 110, 103, 0, 117, 110, 115, 105, 103, 110, 101, 100, 32, 108, 111, 110, 103, 32, 108, 111, 110, 103, 0, 95, 95, 105, 110, 116, 49, 50, 56, 0, 117, 110, 115, 105, 103, 110, 101, 100, 32, 95, 95, 105, 110, 116, 49, 50, 56, 0, 102, 108, 111, 97, 116, 0, 100, 111, 117, 98, 108, 101, 0, 108, 111, 110, 103, 32, 100, 111, 117, 98, 108, 101, 0, 95, 95, 102, 108, 111, 97, 116, 49, 50, 56, 0, 46, 46, 46, 0, 95, 71, 76, 79, 66, 65, 76, 95, 95, 78, 0, 40, 97, 110, 111, 110, 121, 109, 111, 117, 115, 32, 110, 97, 109, 101, 115, 112, 97, 99, 101, 41, 0, 100, 101, 99, 105, 109, 97, 108, 54, 52, 0, 100, 101, 99, 105, 109, 97, 108, 49, 50, 56, 0, 100, 101, 99, 105, 109, 97, 108, 51, 50, 0, 100, 101, 99, 105, 109, 97, 108, 49, 54, 0, 99, 104, 97, 114, 51, 50, 95, 116, 0, 99, 104, 97, 114, 49, 54, 95, 116, 0, 97, 117, 116, 111, 0, 115, 116, 100, 58, 58, 110, 117, 108, 108, 112, 116, 114, 95, 116, 0, 32, 91, 0, 32, 91, 93, 0, 93, 0, 40, 0, 41, 0, 102, 97, 108, 115, 101, 0, 116, 114, 117, 101, 0, 117, 0, 108, 0, 117, 108, 0, 108, 108, 0, 117, 108, 108, 0, 37, 97, 102, 0, 37, 97, 0, 37, 76, 97, 76, 0, 102, 112, 0, 38, 38, 0, 62, 0, 41, 32, 0, 32, 40, 0, 38, 0, 38, 61, 0, 61, 0, 97, 108, 105, 103, 110, 111, 102, 32, 40, 0, 99, 111, 110, 115, 116, 95, 99, 97, 115, 116, 60, 0, 62, 40, 0, 44, 0, 126, 0, 41, 40, 0, 58, 58, 0, 100, 101, 108, 101, 116, 101, 91, 93, 32, 0, 100, 121, 110, 97, 109, 105, 99, 95, 99, 97, 115, 116, 60, 0, 42, 0, 100, 101, 108, 101, 116, 101, 32, 0, 111, 112, 101, 114, 97, 116, 111, 114, 38, 38, 0, 111, 112, 101, 114, 97, 116, 111, 114, 38, 0, 111, 112, 101, 114, 97, 116, 111, 114, 38, 61, 0, 111, 112, 101, 114, 97, 116, 111, 114, 61, 0, 111, 112, 101, 114, 97, 116, 111, 114, 40, 41, 0, 111, 112, 101, 114, 97, 116, 111, 114, 44, 0, 111, 112, 101, 114, 97, 116, 111, 114, 126, 0, 111, 112, 101, 114, 97, 116, 111, 114, 32, 0, 111, 112, 101, 114, 97, 116, 111, 114, 32, 100, 101, 108, 101, 116, 101, 91, 93, 0, 111, 112, 101, 114, 97, 116, 111, 114, 42, 0, 111, 112, 101, 114, 97, 116, 111, 114, 32, 100, 101, 108, 101, 116, 101, 0, 111, 112, 101, 114, 97, 116, 111, 114, 47, 0, 111, 112, 101, 114, 97, 116, 111, 114, 47, 61, 0, 111, 112, 101, 114, 97, 116, 111, 114, 94, 0, 111, 112, 101, 114, 97, 116, 111, 114, 94, 61, 0, 111, 112, 101, 114, 97, 116, 111, 114, 61, 61, 0, 111, 112, 101, 114, 97, 116, 111, 114, 62, 61, 0, 111, 112, 101, 114, 97, 116, 111, 114, 62, 0, 111, 112, 101, 114, 97, 116, 111, 114, 91, 93, 0, 111, 112, 101, 114, 97, 116, 111, 114, 60, 61, 0, 111, 112, 101, 114, 97, 116, 111, 114, 34, 34, 32, 0, 111, 112, 101, 114, 97, 116, 111, 114, 60, 60, 0, 111, 112, 101, 114, 97, 116, 111, 114, 60, 60, 61, 0, 111, 112, 101, 114, 97, 116, 111, 114, 60, 0, 111, 112, 101, 114, 97, 116, 111, 114, 45, 0, 111, 112, 101, 114, 97, 116, 111, 114, 45, 61, 0, 111, 112, 101, 114, 97, 116, 111, 114, 42, 61, 0, 111, 112, 101, 114, 97, 116, 111, 114, 45, 45, 0, 111, 112, 101, 114, 97, 116, 111, 114, 32, 110, 101, 119, 91, 93, 0, 111, 112, 101, 114, 97, 116, 111, 114, 33, 61, 0, 111, 112, 101, 114, 97, 116, 111, 114, 33, 0, 111, 112, 101, 114, 97, 116, 111, 114, 32, 110, 101, 119, 0, 111, 112, 101, 114, 97, 116, 111, 114, 124, 124, 0, 111, 112, 101, 114, 97, 116, 111, 114, 124, 0, 111, 112, 101, 114, 97, 116, 111, 114, 124, 61, 0, 111, 112, 101, 114, 97, 116, 111, 114, 45, 62, 42, 0, 111, 112, 101, 114, 97, 116, 111, 114, 43, 0, 111, 112, 101, 114, 97, 116, 111, 114, 43, 61, 0, 111, 112, 101, 114, 97, 116, 111, 114, 43, 43, 0, 111, 112, 101, 114, 97, 116, 111, 114, 45, 62, 0, 111, 112, 101, 114, 97, 116, 111, 114, 63, 0, 111, 112, 101, 114, 97, 116, 111, 114, 37, 0, 111, 112, 101, 114, 97, 116, 111, 114, 37, 61, 0, 111, 112, 101, 114, 97, 116, 111, 114, 62, 62, 0, 111, 112, 101, 114, 97, 116, 111, 114, 62, 62, 61, 0, 60, 0, 44, 32, 0, 32, 62, 0, 100, 101, 99, 108, 116, 121, 112, 101, 40, 0, 115, 116, 100, 58, 58, 97, 108, 108, 111, 99, 97, 116, 111, 114, 0, 115, 116, 100, 58, 58, 98, 97, 115, 105, 99, 95, 115, 116, 114, 105, 110, 103, 0, 115, 116, 100, 58, 58, 115, 116, 114, 105, 110, 103, 0, 115, 116, 100, 58, 58, 105, 115, 116, 114, 101, 97, 109, 0, 115, 116, 100, 58, 58, 111, 115, 116, 114, 101, 97, 109, 0, 115, 116, 100, 58, 58, 105, 111, 115, 116, 114, 101, 97, 109, 0, 115, 116, 100, 58, 58, 98, 97, 115, 105, 99, 95, 115, 116, 114, 105, 110, 103, 60, 99, 104, 97, 114, 44, 32, 115, 116, 100, 58, 58, 99, 104, 97, 114, 95, 116, 114, 97, 105, 116, 115, 60, 99, 104, 97, 114, 62, 44, 32, 115, 116, 100, 58, 58, 97, 108, 108, 111, 99, 97, 116, 111, 114, 60, 99, 104, 97, 114, 62, 32, 62, 0, 98, 97, 115, 105, 99, 95, 115, 116, 114, 105, 110, 103, 0, 115, 116, 100, 58, 58, 98, 97, 115, 105, 99, 95, 105, 115, 116, 114, 101, 97, 109, 60, 99, 104, 97, 114, 44, 32, 115, 116, 100, 58, 58, 99, 104, 97, 114, 95, 116, 114, 97, 105, 116, 115, 60, 99, 104, 97, 114, 62, 32, 62, 0, 98, 97, 115, 105, 99, 95, 105, 115, 116, 114, 101, 97, 109, 0, 115, 116, 100, 58, 58, 98, 97, 115, 105, 99, 95, 111, 115, 116, 114, 101, 97, 109, 60, 99, 104, 97, 114, 44, 32, 115, 116, 100, 58, 58, 99, 104, 97, 114, 95, 116, 114, 97, 105, 116, 115, 60, 99, 104, 97, 114, 62, 32, 62, 0, 98, 97, 115, 105, 99, 95, 111, 115, 116, 114, 101, 97, 109, 0, 115, 116, 100, 58, 58, 98, 97, 115, 105, 99, 95, 105, 111, 115, 116, 114, 101, 97, 109, 60, 99, 104, 97, 114, 44, 32, 115, 116, 100, 58, 58, 99, 104, 97, 114, 95, 116, 114, 97, 105, 116, 115, 60, 99, 104, 97, 114, 62, 32, 62, 0, 98, 97, 115, 105, 99, 95, 105, 111, 115, 116, 114, 101, 97, 109, 0, 39, 117, 110, 110, 97, 109, 101, 100, 0, 39, 108, 97, 109, 98, 100, 97, 39, 40, 0, 115, 116, 100, 58, 58, 0, 46, 42, 0, 46, 0, 47, 0, 47, 61, 0, 94, 0, 94, 61, 0, 61, 61, 0, 62, 61, 0, 41, 91, 0, 60, 61, 0, 60, 60, 0, 60, 60, 61, 0, 45, 0, 45, 61, 0, 42, 61, 0, 45, 45, 0, 41, 45, 45, 0, 91, 93, 32, 0, 32, 0, 33, 61, 0, 33, 0, 110, 111, 101, 120, 99, 101, 112, 116, 32, 40, 0, 124, 124, 0, 124, 0, 124, 61, 0, 45, 62, 42, 0, 43, 0, 43, 61, 0, 43, 43, 0, 41, 43, 43, 0, 45, 62, 0, 41, 32, 63, 32, 40, 0, 41, 32, 58, 32, 40, 0, 114, 101, 105, 110, 116, 101, 114, 112, 114, 101, 116, 95, 99, 97, 115, 116, 60, 0, 37, 0, 37, 61, 0, 62, 62, 0, 62, 62, 61, 0, 115, 116, 97, 116, 105, 99, 95, 99, 97, 115, 116, 60, 0, 115, 105, 122, 101, 111, 102, 32, 40, 0, 115, 105, 122, 101, 111, 102, 46, 46, 46, 40, 0, 116, 121, 112, 101, 105, 100, 40, 0, 116, 104, 114, 111, 119, 0, 116, 104, 114, 111, 119, 32, 0, 32, 99, 111, 109, 112, 108, 101, 120, 0, 32, 38, 0, 32, 38, 38, 0, 32, 105, 109, 97, 103, 105, 110, 97, 114, 121, 0, 58, 58, 42, 0, 111, 98, 106, 99, 95, 111, 98, 106, 101, 99, 116, 60, 0, 105, 100, 0, 111, 98, 106, 99, 112, 114, 111, 116, 111, 0, 115, 116, 100, 0, 58, 58, 115, 116, 114, 105, 110, 103, 32, 108, 105, 116, 101, 114, 97, 108, 0, 32, 118, 101, 99, 116, 111, 114, 91, 0, 112, 105, 120, 101, 108, 32, 118, 101, 99, 116, 111, 114, 91, 0, 118, 116, 97, 98, 108, 101, 32, 102, 111, 114, 32, 0, 86, 84, 84, 32, 102, 111, 114, 32, 0, 116, 121, 112, 101, 105, 110, 102, 111, 32, 102, 111, 114, 32, 0, 116, 121, 112, 101, 105, 110, 102, 111, 32, 110, 97, 109, 101, 32, 102, 111, 114, 32, 0, 99, 111, 118, 97, 114, 105, 97, 110, 116, 32, 114, 101, 116, 117, 114, 110, 32, 116, 104, 117, 110, 107, 32, 116, 111, 32, 0, 99, 111, 110, 115, 116, 114, 117, 99, 116, 105, 111, 110, 32, 118, 116, 97, 98, 108, 101, 32, 102, 111, 114, 32, 0, 45, 105, 110, 45, 0, 118, 105, 114, 116, 117, 97, 108, 32, 116, 104, 117, 110, 107, 32, 116, 111, 32, 0, 110, 111, 110, 45, 118, 105, 114, 116, 117, 97, 108, 32, 116, 104, 117, 110, 107, 32, 116, 111, 32, 0, 103, 117, 97, 114, 100, 32, 118, 97, 114, 105, 97, 98, 108, 101, 32, 102, 111, 114, 32, 0, 114, 101, 102, 101, 114, 101, 110, 99, 101, 32, 116, 101, 109, 112, 111, 114, 97, 114, 121, 32, 102, 111, 114, 32, 0, 95, 98, 108, 111, 99, 107, 95, 105, 110, 118, 111, 107, 101, 0, 105, 110, 118, 111, 99, 97, 116, 105, 111, 110, 32, 102, 117, 110, 99, 116, 105, 111, 110, 32, 102, 111, 114, 32, 98, 108, 111, 99, 107, 32, 105, 110, 32, 0 ], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE + 30720);
var tempDoublePtr = STATICTOP;
STATICTOP += 16;
function _atexit(func, arg) {
 __ATEXIT__.unshift({
  func: func,
  arg: arg
 });
}
function ___cxa_atexit() {
 return _atexit.apply(null, arguments);
}
function _emscripten_get_now() {
 abort();
}
function _emscripten_get_now_is_monotonic() {
 return ENVIRONMENT_IS_NODE || typeof dateNow !== "undefined" || (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) && self["performance"] && self["performance"]["now"];
}
var ERRNO_CODES = {
 EPERM: 1,
 ENOENT: 2,
 ESRCH: 3,
 EINTR: 4,
 EIO: 5,
 ENXIO: 6,
 E2BIG: 7,
 ENOEXEC: 8,
 EBADF: 9,
 ECHILD: 10,
 EAGAIN: 11,
 EWOULDBLOCK: 11,
 ENOMEM: 12,
 EACCES: 13,
 EFAULT: 14,
 ENOTBLK: 15,
 EBUSY: 16,
 EEXIST: 17,
 EXDEV: 18,
 ENODEV: 19,
 ENOTDIR: 20,
 EISDIR: 21,
 EINVAL: 22,
 ENFILE: 23,
 EMFILE: 24,
 ENOTTY: 25,
 ETXTBSY: 26,
 EFBIG: 27,
 ENOSPC: 28,
 ESPIPE: 29,
 EROFS: 30,
 EMLINK: 31,
 EPIPE: 32,
 EDOM: 33,
 ERANGE: 34,
 ENOMSG: 42,
 EIDRM: 43,
 ECHRNG: 44,
 EL2NSYNC: 45,
 EL3HLT: 46,
 EL3RST: 47,
 ELNRNG: 48,
 EUNATCH: 49,
 ENOCSI: 50,
 EL2HLT: 51,
 EDEADLK: 35,
 ENOLCK: 37,
 EBADE: 52,
 EBADR: 53,
 EXFULL: 54,
 ENOANO: 55,
 EBADRQC: 56,
 EBADSLT: 57,
 EDEADLOCK: 35,
 EBFONT: 59,
 ENOSTR: 60,
 ENODATA: 61,
 ETIME: 62,
 ENOSR: 63,
 ENONET: 64,
 ENOPKG: 65,
 EREMOTE: 66,
 ENOLINK: 67,
 EADV: 68,
 ESRMNT: 69,
 ECOMM: 70,
 EPROTO: 71,
 EMULTIHOP: 72,
 EDOTDOT: 73,
 EBADMSG: 74,
 ENOTUNIQ: 76,
 EBADFD: 77,
 EREMCHG: 78,
 ELIBACC: 79,
 ELIBBAD: 80,
 ELIBSCN: 81,
 ELIBMAX: 82,
 ELIBEXEC: 83,
 ENOSYS: 38,
 ENOTEMPTY: 39,
 ENAMETOOLONG: 36,
 ELOOP: 40,
 EOPNOTSUPP: 95,
 EPFNOSUPPORT: 96,
 ECONNRESET: 104,
 ENOBUFS: 105,
 EAFNOSUPPORT: 97,
 EPROTOTYPE: 91,
 ENOTSOCK: 88,
 ENOPROTOOPT: 92,
 ESHUTDOWN: 108,
 ECONNREFUSED: 111,
 EADDRINUSE: 98,
 ECONNABORTED: 103,
 ENETUNREACH: 101,
 ENETDOWN: 100,
 ETIMEDOUT: 110,
 EHOSTDOWN: 112,
 EHOSTUNREACH: 113,
 EINPROGRESS: 115,
 EALREADY: 114,
 EDESTADDRREQ: 89,
 EMSGSIZE: 90,
 EPROTONOSUPPORT: 93,
 ESOCKTNOSUPPORT: 94,
 EADDRNOTAVAIL: 99,
 ENETRESET: 102,
 EISCONN: 106,
 ENOTCONN: 107,
 ETOOMANYREFS: 109,
 EUSERS: 87,
 EDQUOT: 122,
 ESTALE: 116,
 ENOTSUP: 95,
 ENOMEDIUM: 123,
 EILSEQ: 84,
 EOVERFLOW: 75,
 ECANCELED: 125,
 ENOTRECOVERABLE: 131,
 EOWNERDEAD: 130,
 ESTRPIPE: 86
};
function ___setErrNo(value) {
 if (Module["___errno_location"]) HEAP32[Module["___errno_location"]() >> 2] = value;
 return value;
}
function _clock_gettime(clk_id, tp) {
 var now;
 if (clk_id === 0) {
  now = Date.now();
 } else if (clk_id === 1 && _emscripten_get_now_is_monotonic()) {
  now = _emscripten_get_now();
 } else {
  ___setErrNo(ERRNO_CODES.EINVAL);
  return -1;
 }
 HEAP32[tp >> 2] = now / 1e3 | 0;
 HEAP32[tp + 4 >> 2] = now % 1e3 * 1e3 * 1e3 | 0;
 return 0;
}
Module["_i64Subtract"] = _i64Subtract;
function ___assert_fail(condition, filename, line, func) {
 ABORT = true;
 throw "Assertion failed: " + Pointer_stringify(condition) + ", at: " + [ filename ? Pointer_stringify(filename) : "unknown filename", line, func ? Pointer_stringify(func) : "unknown function" ] + " at " + stackTrace();
}
function __ZSt18uncaught_exceptionv() {
 return !!__ZSt18uncaught_exceptionv.uncaught_exception;
}
var EXCEPTIONS = {
 last: 0,
 caught: [],
 infos: {},
 deAdjust: (function(adjusted) {
  if (!adjusted || EXCEPTIONS.infos[adjusted]) return adjusted;
  for (var ptr in EXCEPTIONS.infos) {
   var info = EXCEPTIONS.infos[ptr];
   if (info.adjusted === adjusted) {
    return ptr;
   }
  }
  return adjusted;
 }),
 addRef: (function(ptr) {
  if (!ptr) return;
  var info = EXCEPTIONS.infos[ptr];
  info.refcount++;
 }),
 decRef: (function(ptr) {
  if (!ptr) return;
  var info = EXCEPTIONS.infos[ptr];
  assert(info.refcount > 0);
  info.refcount--;
  if (info.refcount === 0) {
   if (info.destructor) {
    Runtime.dynCall("vi", info.destructor, [ ptr ]);
   }
   delete EXCEPTIONS.infos[ptr];
   ___cxa_free_exception(ptr);
  }
 }),
 clearRef: (function(ptr) {
  if (!ptr) return;
  var info = EXCEPTIONS.infos[ptr];
  info.refcount = 0;
 })
};
function ___resumeException(ptr) {
 if (!EXCEPTIONS.last) {
  EXCEPTIONS.last = ptr;
 }
 EXCEPTIONS.clearRef(EXCEPTIONS.deAdjust(ptr));
 throw ptr + " - Exception catching is disabled, this exception cannot be caught. Compile with -s DISABLE_EXCEPTION_CATCHING=0 or DISABLE_EXCEPTION_CATCHING=2 to catch.";
}
function ___cxa_find_matching_catch() {
 var thrown = EXCEPTIONS.last;
 if (!thrown) {
  return (asm["setTempRet0"](0), 0) | 0;
 }
 var info = EXCEPTIONS.infos[thrown];
 var throwntype = info.type;
 if (!throwntype) {
  return (asm["setTempRet0"](0), thrown) | 0;
 }
 var typeArray = Array.prototype.slice.call(arguments);
 var pointer = Module["___cxa_is_pointer_type"](throwntype);
 if (!___cxa_find_matching_catch.buffer) ___cxa_find_matching_catch.buffer = _malloc(4);
 HEAP32[___cxa_find_matching_catch.buffer >> 2] = thrown;
 thrown = ___cxa_find_matching_catch.buffer;
 for (var i = 0; i < typeArray.length; i++) {
  if (typeArray[i] && Module["___cxa_can_catch"](typeArray[i], throwntype, thrown)) {
   thrown = HEAP32[thrown >> 2];
   info.adjusted = thrown;
   return (asm["setTempRet0"](typeArray[i]), thrown) | 0;
  }
 }
 thrown = HEAP32[thrown >> 2];
 return (asm["setTempRet0"](throwntype), thrown) | 0;
}
function ___cxa_throw(ptr, type, destructor) {
 EXCEPTIONS.infos[ptr] = {
  ptr: ptr,
  adjusted: ptr,
  type: type,
  destructor: destructor,
  refcount: 0
 };
 EXCEPTIONS.last = ptr;
 if (!("uncaught_exception" in __ZSt18uncaught_exceptionv)) {
  __ZSt18uncaught_exceptionv.uncaught_exception = 1;
 } else {
  __ZSt18uncaught_exceptionv.uncaught_exception++;
 }
 throw ptr + " - Exception catching is disabled, this exception cannot be caught. Compile with -s DISABLE_EXCEPTION_CATCHING=0 or DISABLE_EXCEPTION_CATCHING=2 to catch.";
}
Module["_memset"] = _memset;
Module["_pthread_mutex_lock"] = _pthread_mutex_lock;
function _pthread_cond_signal() {
 return 0;
}
function _abort() {
 Module["abort"]();
}
function _pthread_cond_destroy() {
 return 0;
}
function _pthread_mutex_destroy() {}
function _pthread_create() {
 return 11;
}
function _pthread_once(ptr, func) {
 if (!_pthread_once.seen) _pthread_once.seen = {};
 if (ptr in _pthread_once.seen) return;
 Runtime.dynCall("v", func);
 _pthread_once.seen[ptr] = 1;
}
Module["_i64Add"] = _i64Add;
var cttz_i8 = allocate([ 8, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 6, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 7, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 6, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0 ], "i8", ALLOC_STATIC);
Module["_llvm_cttz_i32"] = _llvm_cttz_i32;
Module["___udivmoddi4"] = ___udivmoddi4;
Module["___divdi3"] = ___divdi3;
function ___lock() {}
function ___unlock() {}
var PTHREAD_SPECIFIC = {};
function _pthread_getspecific(key) {
 return PTHREAD_SPECIFIC[key] || 0;
}
var _llvm_fabs_f64 = Math_abs;
function _sysconf(name) {
 switch (name) {
 case 30:
  return PAGE_SIZE;
 case 85:
  return totalMemory / PAGE_SIZE;
 case 132:
 case 133:
 case 12:
 case 137:
 case 138:
 case 15:
 case 235:
 case 16:
 case 17:
 case 18:
 case 19:
 case 20:
 case 149:
 case 13:
 case 10:
 case 236:
 case 153:
 case 9:
 case 21:
 case 22:
 case 159:
 case 154:
 case 14:
 case 77:
 case 78:
 case 139:
 case 80:
 case 81:
 case 82:
 case 68:
 case 67:
 case 164:
 case 11:
 case 29:
 case 47:
 case 48:
 case 95:
 case 52:
 case 51:
 case 46:
  return 200809;
 case 79:
  return 0;
 case 27:
 case 246:
 case 127:
 case 128:
 case 23:
 case 24:
 case 160:
 case 161:
 case 181:
 case 182:
 case 242:
 case 183:
 case 184:
 case 243:
 case 244:
 case 245:
 case 165:
 case 178:
 case 179:
 case 49:
 case 50:
 case 168:
 case 169:
 case 175:
 case 170:
 case 171:
 case 172:
 case 97:
 case 76:
 case 32:
 case 173:
 case 35:
  return -1;
 case 176:
 case 177:
 case 7:
 case 155:
 case 8:
 case 157:
 case 125:
 case 126:
 case 92:
 case 93:
 case 129:
 case 130:
 case 131:
 case 94:
 case 91:
  return 1;
 case 74:
 case 60:
 case 69:
 case 70:
 case 4:
  return 1024;
 case 31:
 case 42:
 case 72:
  return 32;
 case 87:
 case 26:
 case 33:
  return 2147483647;
 case 34:
 case 1:
  return 47839;
 case 38:
 case 36:
  return 99;
 case 43:
 case 37:
  return 2048;
 case 0:
  return 2097152;
 case 3:
  return 65536;
 case 28:
  return 32768;
 case 44:
  return 32767;
 case 75:
  return 16384;
 case 39:
  return 1e3;
 case 89:
  return 700;
 case 71:
  return 256;
 case 40:
  return 255;
 case 2:
  return 100;
 case 180:
  return 64;
 case 25:
  return 20;
 case 5:
  return 16;
 case 6:
  return 6;
 case 73:
  return 4;
 case 84:
  {
   if (typeof navigator === "object") return navigator["hardwareConcurrency"] || 1;
   return 1;
  }
 }
 ___setErrNo(ERRNO_CODES.EINVAL);
 return -1;
}
var PTHREAD_SPECIFIC_NEXT_KEY = 1;
function _pthread_key_create(key, destructor) {
 if (key == 0) {
  return ERRNO_CODES.EINVAL;
 }
 HEAP32[key >> 2] = PTHREAD_SPECIFIC_NEXT_KEY;
 PTHREAD_SPECIFIC[PTHREAD_SPECIFIC_NEXT_KEY] = 0;
 PTHREAD_SPECIFIC_NEXT_KEY++;
 return 0;
}
function _pthread_key_delete(key) {
 if (key in PTHREAD_SPECIFIC) {
  delete PTHREAD_SPECIFIC[key];
  return 0;
 }
 return ERRNO_CODES.EINVAL;
}
function _emscripten_memcpy_big(dest, src, num) {
 HEAPU8.set(HEAPU8.subarray(src, src + num), dest);
 return dest;
}
Module["_memcpy"] = _memcpy;
Module["_memmove"] = _memmove;
function _pthread_setspecific(key, value) {
 if (!(key in PTHREAD_SPECIFIC)) {
  return ERRNO_CODES.EINVAL;
 }
 PTHREAD_SPECIFIC[key] = value;
 return 0;
}
function _malloc(bytes) {
 var ptr = Runtime.dynamicAlloc(bytes + 8);
 return ptr + 8 & 4294967288;
}
Module["_malloc"] = _malloc;
function ___cxa_allocate_exception(size) {
 return _malloc(size);
}
var ERRNO_MESSAGES = {
 0: "Success",
 1: "Not super-user",
 2: "No such file or directory",
 3: "No such process",
 4: "Interrupted system call",
 5: "I/O error",
 6: "No such device or address",
 7: "Arg list too long",
 8: "Exec format error",
 9: "Bad file number",
 10: "No children",
 11: "No more processes",
 12: "Not enough core",
 13: "Permission denied",
 14: "Bad address",
 15: "Block device required",
 16: "Mount device busy",
 17: "File exists",
 18: "Cross-device link",
 19: "No such device",
 20: "Not a directory",
 21: "Is a directory",
 22: "Invalid argument",
 23: "Too many open files in system",
 24: "Too many open files",
 25: "Not a typewriter",
 26: "Text file busy",
 27: "File too large",
 28: "No space left on device",
 29: "Illegal seek",
 30: "Read only file system",
 31: "Too many links",
 32: "Broken pipe",
 33: "Math arg out of domain of func",
 34: "Math result not representable",
 35: "File locking deadlock error",
 36: "File or path name too long",
 37: "No record locks available",
 38: "Function not implemented",
 39: "Directory not empty",
 40: "Too many symbolic links",
 42: "No message of desired type",
 43: "Identifier removed",
 44: "Channel number out of range",
 45: "Level 2 not synchronized",
 46: "Level 3 halted",
 47: "Level 3 reset",
 48: "Link number out of range",
 49: "Protocol driver not attached",
 50: "No CSI structure available",
 51: "Level 2 halted",
 52: "Invalid exchange",
 53: "Invalid request descriptor",
 54: "Exchange full",
 55: "No anode",
 56: "Invalid request code",
 57: "Invalid slot",
 59: "Bad font file fmt",
 60: "Device not a stream",
 61: "No data (for no delay io)",
 62: "Timer expired",
 63: "Out of streams resources",
 64: "Machine is not on the network",
 65: "Package not installed",
 66: "The object is remote",
 67: "The link has been severed",
 68: "Advertise error",
 69: "Srmount error",
 70: "Communication error on send",
 71: "Protocol error",
 72: "Multihop attempted",
 73: "Cross mount point (not really error)",
 74: "Trying to read unreadable message",
 75: "Value too large for defined data type",
 76: "Given log. name not unique",
 77: "f.d. invalid for this operation",
 78: "Remote address changed",
 79: "Can   access a needed shared lib",
 80: "Accessing a corrupted shared lib",
 81: ".lib section in a.out corrupted",
 82: "Attempting to link in too many libs",
 83: "Attempting to exec a shared library",
 84: "Illegal byte sequence",
 86: "Streams pipe error",
 87: "Too many users",
 88: "Socket operation on non-socket",
 89: "Destination address required",
 90: "Message too long",
 91: "Protocol wrong type for socket",
 92: "Protocol not available",
 93: "Unknown protocol",
 94: "Socket type not supported",
 95: "Not supported",
 96: "Protocol family not supported",
 97: "Address family not supported by protocol family",
 98: "Address already in use",
 99: "Address not available",
 100: "Network interface is not configured",
 101: "Network is unreachable",
 102: "Connection reset by network",
 103: "Connection aborted",
 104: "Connection reset by peer",
 105: "No buffer space available",
 106: "Socket is already connected",
 107: "Socket is not connected",
 108: "Can't send after socket shutdown",
 109: "Too many references",
 110: "Connection timed out",
 111: "Connection refused",
 112: "Host is down",
 113: "Host is unreachable",
 114: "Socket already connected",
 115: "Connection already in progress",
 116: "Stale file handle",
 122: "Quota exceeded",
 123: "No medium (in tape drive)",
 125: "Operation canceled",
 130: "Previous owner died",
 131: "State not recoverable"
};
var PATH = {
 splitPath: (function(filename) {
  var splitPathRe = /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;
  return splitPathRe.exec(filename).slice(1);
 }),
 normalizeArray: (function(parts, allowAboveRoot) {
  var up = 0;
  for (var i = parts.length - 1; i >= 0; i--) {
   var last = parts[i];
   if (last === ".") {
    parts.splice(i, 1);
   } else if (last === "..") {
    parts.splice(i, 1);
    up++;
   } else if (up) {
    parts.splice(i, 1);
    up--;
   }
  }
  if (allowAboveRoot) {
   for (; up--; up) {
    parts.unshift("..");
   }
  }
  return parts;
 }),
 normalize: (function(path) {
  var isAbsolute = path.charAt(0) === "/", trailingSlash = path.substr(-1) === "/";
  path = PATH.normalizeArray(path.split("/").filter((function(p) {
   return !!p;
  })), !isAbsolute).join("/");
  if (!path && !isAbsolute) {
   path = ".";
  }
  if (path && trailingSlash) {
   path += "/";
  }
  return (isAbsolute ? "/" : "") + path;
 }),
 dirname: (function(path) {
  var result = PATH.splitPath(path), root = result[0], dir = result[1];
  if (!root && !dir) {
   return ".";
  }
  if (dir) {
   dir = dir.substr(0, dir.length - 1);
  }
  return root + dir;
 }),
 basename: (function(path) {
  if (path === "/") return "/";
  var lastSlash = path.lastIndexOf("/");
  if (lastSlash === -1) return path;
  return path.substr(lastSlash + 1);
 }),
 extname: (function(path) {
  return PATH.splitPath(path)[3];
 }),
 join: (function() {
  var paths = Array.prototype.slice.call(arguments, 0);
  return PATH.normalize(paths.join("/"));
 }),
 join2: (function(l, r) {
  return PATH.normalize(l + "/" + r);
 }),
 resolve: (function() {
  var resolvedPath = "", resolvedAbsolute = false;
  for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {
   var path = i >= 0 ? arguments[i] : FS.cwd();
   if (typeof path !== "string") {
    throw new TypeError("Arguments to path.resolve must be strings");
   } else if (!path) {
    return "";
   }
   resolvedPath = path + "/" + resolvedPath;
   resolvedAbsolute = path.charAt(0) === "/";
  }
  resolvedPath = PATH.normalizeArray(resolvedPath.split("/").filter((function(p) {
   return !!p;
  })), !resolvedAbsolute).join("/");
  return (resolvedAbsolute ? "/" : "") + resolvedPath || ".";
 }),
 relative: (function(from, to) {
  from = PATH.resolve(from).substr(1);
  to = PATH.resolve(to).substr(1);
  function trim(arr) {
   var start = 0;
   for (; start < arr.length; start++) {
    if (arr[start] !== "") break;
   }
   var end = arr.length - 1;
   for (; end >= 0; end--) {
    if (arr[end] !== "") break;
   }
   if (start > end) return [];
   return arr.slice(start, end - start + 1);
  }
  var fromParts = trim(from.split("/"));
  var toParts = trim(to.split("/"));
  var length = Math.min(fromParts.length, toParts.length);
  var samePartsLength = length;
  for (var i = 0; i < length; i++) {
   if (fromParts[i] !== toParts[i]) {
    samePartsLength = i;
    break;
   }
  }
  var outputParts = [];
  for (var i = samePartsLength; i < fromParts.length; i++) {
   outputParts.push("..");
  }
  outputParts = outputParts.concat(toParts.slice(samePartsLength));
  return outputParts.join("/");
 })
};
var TTY = {
 ttys: [],
 init: (function() {}),
 shutdown: (function() {}),
 register: (function(dev, ops) {
  TTY.ttys[dev] = {
   input: [],
   output: [],
   ops: ops
  };
  FS.registerDevice(dev, TTY.stream_ops);
 }),
 stream_ops: {
  open: (function(stream) {
   var tty = TTY.ttys[stream.node.rdev];
   if (!tty) {
    throw new FS.ErrnoError(ERRNO_CODES.ENODEV);
   }
   stream.tty = tty;
   stream.seekable = false;
  }),
  close: (function(stream) {
   stream.tty.ops.flush(stream.tty);
  }),
  flush: (function(stream) {
   stream.tty.ops.flush(stream.tty);
  }),
  read: (function(stream, buffer, offset, length, pos) {
   if (!stream.tty || !stream.tty.ops.get_char) {
    throw new FS.ErrnoError(ERRNO_CODES.ENXIO);
   }
   var bytesRead = 0;
   for (var i = 0; i < length; i++) {
    var result;
    try {
     result = stream.tty.ops.get_char(stream.tty);
    } catch (e) {
     throw new FS.ErrnoError(ERRNO_CODES.EIO);
    }
    if (result === undefined && bytesRead === 0) {
     throw new FS.ErrnoError(ERRNO_CODES.EAGAIN);
    }
    if (result === null || result === undefined) break;
    bytesRead++;
    buffer[offset + i] = result;
   }
   if (bytesRead) {
    stream.node.timestamp = Date.now();
   }
   return bytesRead;
  }),
  write: (function(stream, buffer, offset, length, pos) {
   if (!stream.tty || !stream.tty.ops.put_char) {
    throw new FS.ErrnoError(ERRNO_CODES.ENXIO);
   }
   for (var i = 0; i < length; i++) {
    try {
     stream.tty.ops.put_char(stream.tty, buffer[offset + i]);
    } catch (e) {
     throw new FS.ErrnoError(ERRNO_CODES.EIO);
    }
   }
   if (length) {
    stream.node.timestamp = Date.now();
   }
   return i;
  })
 },
 default_tty_ops: {
  get_char: (function(tty) {
   if (!tty.input.length) {
    var result = null;
    if (ENVIRONMENT_IS_NODE) {
     var BUFSIZE = 256;
     var buf = new Buffer(BUFSIZE);
     var bytesRead = 0;
     var fd = process.stdin.fd;
     var usingDevice = false;
     try {
      fd = fs.openSync("/dev/stdin", "r");
      usingDevice = true;
     } catch (e) {}
     bytesRead = fs.readSync(fd, buf, 0, BUFSIZE, null);
     if (usingDevice) {
      fs.closeSync(fd);
     }
     if (bytesRead > 0) {
      result = buf.slice(0, bytesRead).toString("utf-8");
     } else {
      result = null;
     }
    } else if (typeof window != "undefined" && typeof window.prompt == "function") {
     result = window.prompt("Input: ");
     if (result !== null) {
      result += "\n";
     }
    } else if (typeof readline == "function") {
     result = readline();
     if (result !== null) {
      result += "\n";
     }
    }
    if (!result) {
     return null;
    }
    tty.input = intArrayFromString(result, true);
   }
   return tty.input.shift();
  }),
  put_char: (function(tty, val) {
   if (val === null || val === 10) {
    Module["print"](UTF8ArrayToString(tty.output, 0));
    tty.output = [];
   } else {
    if (val != 0) tty.output.push(val);
   }
  }),
  flush: (function(tty) {
   if (tty.output && tty.output.length > 0) {
    Module["print"](UTF8ArrayToString(tty.output, 0));
    tty.output = [];
   }
  })
 },
 default_tty1_ops: {
  put_char: (function(tty, val) {
   if (val === null || val === 10) {
    Module["printErr"](UTF8ArrayToString(tty.output, 0));
    tty.output = [];
   } else {
    if (val != 0) tty.output.push(val);
   }
  }),
  flush: (function(tty) {
   if (tty.output && tty.output.length > 0) {
    Module["printErr"](UTF8ArrayToString(tty.output, 0));
    tty.output = [];
   }
  })
 }
};
var MEMFS = {
 ops_table: null,
 mount: (function(mount) {
  return MEMFS.createNode(null, "/", 16384 | 511, 0);
 }),
 createNode: (function(parent, name, mode, dev) {
  if (FS.isBlkdev(mode) || FS.isFIFO(mode)) {
   throw new FS.ErrnoError(ERRNO_CODES.EPERM);
  }
  if (!MEMFS.ops_table) {
   MEMFS.ops_table = {
    dir: {
     node: {
      getattr: MEMFS.node_ops.getattr,
      setattr: MEMFS.node_ops.setattr,
      lookup: MEMFS.node_ops.lookup,
      mknod: MEMFS.node_ops.mknod,
      rename: MEMFS.node_ops.rename,
      unlink: MEMFS.node_ops.unlink,
      rmdir: MEMFS.node_ops.rmdir,
      readdir: MEMFS.node_ops.readdir,
      symlink: MEMFS.node_ops.symlink
     },
     stream: {
      llseek: MEMFS.stream_ops.llseek
     }
    },
    file: {
     node: {
      getattr: MEMFS.node_ops.getattr,
      setattr: MEMFS.node_ops.setattr
     },
     stream: {
      llseek: MEMFS.stream_ops.llseek,
      read: MEMFS.stream_ops.read,
      write: MEMFS.stream_ops.write,
      allocate: MEMFS.stream_ops.allocate,
      mmap: MEMFS.stream_ops.mmap,
      msync: MEMFS.stream_ops.msync
     }
    },
    link: {
     node: {
      getattr: MEMFS.node_ops.getattr,
      setattr: MEMFS.node_ops.setattr,
      readlink: MEMFS.node_ops.readlink
     },
     stream: {}
    },
    chrdev: {
     node: {
      getattr: MEMFS.node_ops.getattr,
      setattr: MEMFS.node_ops.setattr
     },
     stream: FS.chrdev_stream_ops
    }
   };
  }
  var node = FS.createNode(parent, name, mode, dev);
  if (FS.isDir(node.mode)) {
   node.node_ops = MEMFS.ops_table.dir.node;
   node.stream_ops = MEMFS.ops_table.dir.stream;
   node.contents = {};
  } else if (FS.isFile(node.mode)) {
   node.node_ops = MEMFS.ops_table.file.node;
   node.stream_ops = MEMFS.ops_table.file.stream;
   node.usedBytes = 0;
   node.contents = null;
  } else if (FS.isLink(node.mode)) {
   node.node_ops = MEMFS.ops_table.link.node;
   node.stream_ops = MEMFS.ops_table.link.stream;
  } else if (FS.isChrdev(node.mode)) {
   node.node_ops = MEMFS.ops_table.chrdev.node;
   node.stream_ops = MEMFS.ops_table.chrdev.stream;
  }
  node.timestamp = Date.now();
  if (parent) {
   parent.contents[name] = node;
  }
  return node;
 }),
 getFileDataAsRegularArray: (function(node) {
  if (node.contents && node.contents.subarray) {
   var arr = [];
   for (var i = 0; i < node.usedBytes; ++i) arr.push(node.contents[i]);
   return arr;
  }
  return node.contents;
 }),
 getFileDataAsTypedArray: (function(node) {
  if (!node.contents) return new Uint8Array;
  if (node.contents.subarray) return node.contents.subarray(0, node.usedBytes);
  return new Uint8Array(node.contents);
 }),
 expandFileStorage: (function(node, newCapacity) {
  if (node.contents && node.contents.subarray && newCapacity > node.contents.length) {
   node.contents = MEMFS.getFileDataAsRegularArray(node);
   node.usedBytes = node.contents.length;
  }
  if (!node.contents || node.contents.subarray) {
   var prevCapacity = node.contents ? node.contents.buffer.byteLength : 0;
   if (prevCapacity >= newCapacity) return;
   var CAPACITY_DOUBLING_MAX = 1024 * 1024;
   newCapacity = Math.max(newCapacity, prevCapacity * (prevCapacity < CAPACITY_DOUBLING_MAX ? 2 : 1.125) | 0);
   if (prevCapacity != 0) newCapacity = Math.max(newCapacity, 256);
   var oldContents = node.contents;
   node.contents = new Uint8Array(newCapacity);
   if (node.usedBytes > 0) node.contents.set(oldContents.subarray(0, node.usedBytes), 0);
   return;
  }
  if (!node.contents && newCapacity > 0) node.contents = [];
  while (node.contents.length < newCapacity) node.contents.push(0);
 }),
 resizeFileStorage: (function(node, newSize) {
  if (node.usedBytes == newSize) return;
  if (newSize == 0) {
   node.contents = null;
   node.usedBytes = 0;
   return;
  }
  if (!node.contents || node.contents.subarray) {
   var oldContents = node.contents;
   node.contents = new Uint8Array(new ArrayBuffer(newSize));
   if (oldContents) {
    node.contents.set(oldContents.subarray(0, Math.min(newSize, node.usedBytes)));
   }
   node.usedBytes = newSize;
   return;
  }
  if (!node.contents) node.contents = [];
  if (node.contents.length > newSize) node.contents.length = newSize; else while (node.contents.length < newSize) node.contents.push(0);
  node.usedBytes = newSize;
 }),
 node_ops: {
  getattr: (function(node) {
   var attr = {};
   attr.dev = FS.isChrdev(node.mode) ? node.id : 1;
   attr.ino = node.id;
   attr.mode = node.mode;
   attr.nlink = 1;
   attr.uid = 0;
   attr.gid = 0;
   attr.rdev = node.rdev;
   if (FS.isDir(node.mode)) {
    attr.size = 4096;
   } else if (FS.isFile(node.mode)) {
    attr.size = node.usedBytes;
   } else if (FS.isLink(node.mode)) {
    attr.size = node.link.length;
   } else {
    attr.size = 0;
   }
   attr.atime = new Date(node.timestamp);
   attr.mtime = new Date(node.timestamp);
   attr.ctime = new Date(node.timestamp);
   attr.blksize = 4096;
   attr.blocks = Math.ceil(attr.size / attr.blksize);
   return attr;
  }),
  setattr: (function(node, attr) {
   if (attr.mode !== undefined) {
    node.mode = attr.mode;
   }
   if (attr.timestamp !== undefined) {
    node.timestamp = attr.timestamp;
   }
   if (attr.size !== undefined) {
    MEMFS.resizeFileStorage(node, attr.size);
   }
  }),
  lookup: (function(parent, name) {
   throw FS.genericErrors[ERRNO_CODES.ENOENT];
  }),
  mknod: (function(parent, name, mode, dev) {
   return MEMFS.createNode(parent, name, mode, dev);
  }),
  rename: (function(old_node, new_dir, new_name) {
   if (FS.isDir(old_node.mode)) {
    var new_node;
    try {
     new_node = FS.lookupNode(new_dir, new_name);
    } catch (e) {}
    if (new_node) {
     for (var i in new_node.contents) {
      throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY);
     }
    }
   }
   delete old_node.parent.contents[old_node.name];
   old_node.name = new_name;
   new_dir.contents[new_name] = old_node;
   old_node.parent = new_dir;
  }),
  unlink: (function(parent, name) {
   delete parent.contents[name];
  }),
  rmdir: (function(parent, name) {
   var node = FS.lookupNode(parent, name);
   for (var i in node.contents) {
    throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY);
   }
   delete parent.contents[name];
  }),
  readdir: (function(node) {
   var entries = [ ".", ".." ];
   for (var key in node.contents) {
    if (!node.contents.hasOwnProperty(key)) {
     continue;
    }
    entries.push(key);
   }
   return entries;
  }),
  symlink: (function(parent, newname, oldpath) {
   var node = MEMFS.createNode(parent, newname, 511 | 40960, 0);
   node.link = oldpath;
   return node;
  }),
  readlink: (function(node) {
   if (!FS.isLink(node.mode)) {
    throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
   }
   return node.link;
  })
 },
 stream_ops: {
  read: (function(stream, buffer, offset, length, position) {
   var contents = stream.node.contents;
   if (position >= stream.node.usedBytes) return 0;
   var size = Math.min(stream.node.usedBytes - position, length);
   assert(size >= 0);
   if (size > 8 && contents.subarray) {
    buffer.set(contents.subarray(position, position + size), offset);
   } else {
    for (var i = 0; i < size; i++) buffer[offset + i] = contents[position + i];
   }
   return size;
  }),
  write: (function(stream, buffer, offset, length, position, canOwn) {
   if (!length) return 0;
   var node = stream.node;
   node.timestamp = Date.now();
   if (buffer.subarray && (!node.contents || node.contents.subarray)) {
    if (canOwn) {
     node.contents = buffer.subarray(offset, offset + length);
     node.usedBytes = length;
     return length;
    } else if (node.usedBytes === 0 && position === 0) {
     node.contents = new Uint8Array(buffer.subarray(offset, offset + length));
     node.usedBytes = length;
     return length;
    } else if (position + length <= node.usedBytes) {
     node.contents.set(buffer.subarray(offset, offset + length), position);
     return length;
    }
   }
   MEMFS.expandFileStorage(node, position + length);
   if (node.contents.subarray && buffer.subarray) node.contents.set(buffer.subarray(offset, offset + length), position); else {
    for (var i = 0; i < length; i++) {
     node.contents[position + i] = buffer[offset + i];
    }
   }
   node.usedBytes = Math.max(node.usedBytes, position + length);
   return length;
  }),
  llseek: (function(stream, offset, whence) {
   var position = offset;
   if (whence === 1) {
    position += stream.position;
   } else if (whence === 2) {
    if (FS.isFile(stream.node.mode)) {
     position += stream.node.usedBytes;
    }
   }
   if (position < 0) {
    throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
   }
   return position;
  }),
  allocate: (function(stream, offset, length) {
   MEMFS.expandFileStorage(stream.node, offset + length);
   stream.node.usedBytes = Math.max(stream.node.usedBytes, offset + length);
  }),
  mmap: (function(stream, buffer, offset, length, position, prot, flags) {
   if (!FS.isFile(stream.node.mode)) {
    throw new FS.ErrnoError(ERRNO_CODES.ENODEV);
   }
   var ptr;
   var allocated;
   var contents = stream.node.contents;
   if (!(flags & 2) && (contents.buffer === buffer || contents.buffer === buffer.buffer)) {
    allocated = false;
    ptr = contents.byteOffset;
   } else {
    if (position > 0 || position + length < stream.node.usedBytes) {
     if (contents.subarray) {
      contents = contents.subarray(position, position + length);
     } else {
      contents = Array.prototype.slice.call(contents, position, position + length);
     }
    }
    allocated = true;
    ptr = _malloc(length);
    if (!ptr) {
     throw new FS.ErrnoError(ERRNO_CODES.ENOMEM);
    }
    buffer.set(contents, ptr);
   }
   return {
    ptr: ptr,
    allocated: allocated
   };
  }),
  msync: (function(stream, buffer, offset, length, mmapFlags) {
   if (!FS.isFile(stream.node.mode)) {
    throw new FS.ErrnoError(ERRNO_CODES.ENODEV);
   }
   if (mmapFlags & 2) {
    return 0;
   }
   var bytesWritten = MEMFS.stream_ops.write(stream, buffer, 0, length, offset, false);
   return 0;
  })
 }
};
var IDBFS = {
 dbs: {},
 indexedDB: (function() {
  if (typeof indexedDB !== "undefined") return indexedDB;
  var ret = null;
  if (typeof window === "object") ret = window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB;
  assert(ret, "IDBFS used, but indexedDB not supported");
  return ret;
 }),
 DB_VERSION: 21,
 DB_STORE_NAME: "FILE_DATA",
 mount: (function(mount) {
  return MEMFS.mount.apply(null, arguments);
 }),
 syncfs: (function(mount, populate, callback) {
  IDBFS.getLocalSet(mount, (function(err, local) {
   if (err) return callback(err);
   IDBFS.getRemoteSet(mount, (function(err, remote) {
    if (err) return callback(err);
    var src = populate ? remote : local;
    var dst = populate ? local : remote;
    IDBFS.reconcile(src, dst, callback);
   }));
  }));
 }),
 getDB: (function(name, callback) {
  var db = IDBFS.dbs[name];
  if (db) {
   return callback(null, db);
  }
  var req;
  try {
   req = IDBFS.indexedDB().open(name, IDBFS.DB_VERSION);
  } catch (e) {
   return callback(e);
  }
  req.onupgradeneeded = (function(e) {
   var db = e.target.result;
   var transaction = e.target.transaction;
   var fileStore;
   if (db.objectStoreNames.contains(IDBFS.DB_STORE_NAME)) {
    fileStore = transaction.objectStore(IDBFS.DB_STORE_NAME);
   } else {
    fileStore = db.createObjectStore(IDBFS.DB_STORE_NAME);
   }
   if (!fileStore.indexNames.contains("timestamp")) {
    fileStore.createIndex("timestamp", "timestamp", {
     unique: false
    });
   }
  });
  req.onsuccess = (function() {
   db = req.result;
   IDBFS.dbs[name] = db;
   callback(null, db);
  });
  req.onerror = (function(e) {
   callback(this.error);
   e.preventDefault();
  });
 }),
 getLocalSet: (function(mount, callback) {
  var entries = {};
  function isRealDir(p) {
   return p !== "." && p !== "..";
  }
  function toAbsolute(root) {
   return (function(p) {
    return PATH.join2(root, p);
   });
  }
  var check = FS.readdir(mount.mountpoint).filter(isRealDir).map(toAbsolute(mount.mountpoint));
  while (check.length) {
   var path = check.pop();
   var stat;
   try {
    stat = FS.stat(path);
   } catch (e) {
    return callback(e);
   }
   if (FS.isDir(stat.mode)) {
    check.push.apply(check, FS.readdir(path).filter(isRealDir).map(toAbsolute(path)));
   }
   entries[path] = {
    timestamp: stat.mtime
   };
  }
  return callback(null, {
   type: "local",
   entries: entries
  });
 }),
 getRemoteSet: (function(mount, callback) {
  var entries = {};
  IDBFS.getDB(mount.mountpoint, (function(err, db) {
   if (err) return callback(err);
   var transaction = db.transaction([ IDBFS.DB_STORE_NAME ], "readonly");
   transaction.onerror = (function(e) {
    callback(this.error);
    e.preventDefault();
   });
   var store = transaction.objectStore(IDBFS.DB_STORE_NAME);
   var index = store.index("timestamp");
   index.openKeyCursor().onsuccess = (function(event) {
    var cursor = event.target.result;
    if (!cursor) {
     return callback(null, {
      type: "remote",
      db: db,
      entries: entries
     });
    }
    entries[cursor.primaryKey] = {
     timestamp: cursor.key
    };
    cursor.continue();
   });
  }));
 }),
 loadLocalEntry: (function(path, callback) {
  var stat, node;
  try {
   var lookup = FS.lookupPath(path);
   node = lookup.node;
   stat = FS.stat(path);
  } catch (e) {
   return callback(e);
  }
  if (FS.isDir(stat.mode)) {
   return callback(null, {
    timestamp: stat.mtime,
    mode: stat.mode
   });
  } else if (FS.isFile(stat.mode)) {
   node.contents = MEMFS.getFileDataAsTypedArray(node);
   return callback(null, {
    timestamp: stat.mtime,
    mode: stat.mode,
    contents: node.contents
   });
  } else {
   return callback(new Error("node type not supported"));
  }
 }),
 storeLocalEntry: (function(path, entry, callback) {
  try {
   if (FS.isDir(entry.mode)) {
    FS.mkdir(path, entry.mode);
   } else if (FS.isFile(entry.mode)) {
    FS.writeFile(path, entry.contents, {
     encoding: "binary",
     canOwn: true
    });
   } else {
    return callback(new Error("node type not supported"));
   }
   FS.chmod(path, entry.mode);
   FS.utime(path, entry.timestamp, entry.timestamp);
  } catch (e) {
   return callback(e);
  }
  callback(null);
 }),
 removeLocalEntry: (function(path, callback) {
  try {
   var lookup = FS.lookupPath(path);
   var stat = FS.stat(path);
   if (FS.isDir(stat.mode)) {
    FS.rmdir(path);
   } else if (FS.isFile(stat.mode)) {
    FS.unlink(path);
   }
  } catch (e) {
   return callback(e);
  }
  callback(null);
 }),
 loadRemoteEntry: (function(store, path, callback) {
  var req = store.get(path);
  req.onsuccess = (function(event) {
   callback(null, event.target.result);
  });
  req.onerror = (function(e) {
   callback(this.error);
   e.preventDefault();
  });
 }),
 storeRemoteEntry: (function(store, path, entry, callback) {
  var req = store.put(entry, path);
  req.onsuccess = (function() {
   callback(null);
  });
  req.onerror = (function(e) {
   callback(this.error);
   e.preventDefault();
  });
 }),
 removeRemoteEntry: (function(store, path, callback) {
  var req = store.delete(path);
  req.onsuccess = (function() {
   callback(null);
  });
  req.onerror = (function(e) {
   callback(this.error);
   e.preventDefault();
  });
 }),
 reconcile: (function(src, dst, callback) {
  var total = 0;
  var create = [];
  Object.keys(src.entries).forEach((function(key) {
   var e = src.entries[key];
   var e2 = dst.entries[key];
   if (!e2 || e.timestamp > e2.timestamp) {
    create.push(key);
    total++;
   }
  }));
  var remove = [];
  Object.keys(dst.entries).forEach((function(key) {
   var e = dst.entries[key];
   var e2 = src.entries[key];
   if (!e2) {
    remove.push(key);
    total++;
   }
  }));
  if (!total) {
   return callback(null);
  }
  var completed = 0;
  var db = src.type === "remote" ? src.db : dst.db;
  var transaction = db.transaction([ IDBFS.DB_STORE_NAME ], "readwrite");
  var store = transaction.objectStore(IDBFS.DB_STORE_NAME);
  function done(err) {
   if (err) {
    if (!done.errored) {
     done.errored = true;
     return callback(err);
    }
    return;
   }
   if (++completed >= total) {
    return callback(null);
   }
  }
  transaction.onerror = (function(e) {
   done(this.error);
   e.preventDefault();
  });
  create.sort().forEach((function(path) {
   if (dst.type === "local") {
    IDBFS.loadRemoteEntry(store, path, (function(err, entry) {
     if (err) return done(err);
     IDBFS.storeLocalEntry(path, entry, done);
    }));
   } else {
    IDBFS.loadLocalEntry(path, (function(err, entry) {
     if (err) return done(err);
     IDBFS.storeRemoteEntry(store, path, entry, done);
    }));
   }
  }));
  remove.sort().reverse().forEach((function(path) {
   if (dst.type === "local") {
    IDBFS.removeLocalEntry(path, done);
   } else {
    IDBFS.removeRemoteEntry(store, path, done);
   }
  }));
 })
};
var NODEFS = {
 isWindows: false,
 staticInit: (function() {
  NODEFS.isWindows = !!process.platform.match(/^win/);
 }),
 mount: (function(mount) {
  assert(ENVIRONMENT_IS_NODE);
  return NODEFS.createNode(null, "/", NODEFS.getMode(mount.opts.root), 0);
 }),
 createNode: (function(parent, name, mode, dev) {
  if (!FS.isDir(mode) && !FS.isFile(mode) && !FS.isLink(mode)) {
   throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
  }
  var node = FS.createNode(parent, name, mode);
  node.node_ops = NODEFS.node_ops;
  node.stream_ops = NODEFS.stream_ops;
  return node;
 }),
 getMode: (function(path) {
  var stat;
  try {
   stat = fs.lstatSync(path);
   if (NODEFS.isWindows) {
    stat.mode = stat.mode | (stat.mode & 146) >> 1;
   }
  } catch (e) {
   if (!e.code) throw e;
   throw new FS.ErrnoError(ERRNO_CODES[e.code]);
  }
  return stat.mode;
 }),
 realPath: (function(node) {
  var parts = [];
  while (node.parent !== node) {
   parts.push(node.name);
   node = node.parent;
  }
  parts.push(node.mount.opts.root);
  parts.reverse();
  return PATH.join.apply(null, parts);
 }),
 flagsToPermissionStringMap: {
  0: "r",
  1: "r+",
  2: "r+",
  64: "r",
  65: "r+",
  66: "r+",
  129: "rx+",
  193: "rx+",
  514: "w+",
  577: "w",
  578: "w+",
  705: "wx",
  706: "wx+",
  1024: "a",
  1025: "a",
  1026: "a+",
  1089: "a",
  1090: "a+",
  1153: "ax",
  1154: "ax+",
  1217: "ax",
  1218: "ax+",
  4096: "rs",
  4098: "rs+"
 },
 flagsToPermissionString: (function(flags) {
  flags &= ~32768;
  flags &= ~524288;
  if (flags in NODEFS.flagsToPermissionStringMap) {
   return NODEFS.flagsToPermissionStringMap[flags];
  } else {
   throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
  }
 }),
 node_ops: {
  getattr: (function(node) {
   var path = NODEFS.realPath(node);
   var stat;
   try {
    stat = fs.lstatSync(path);
   } catch (e) {
    if (!e.code) throw e;
    throw new FS.ErrnoError(ERRNO_CODES[e.code]);
   }
   if (NODEFS.isWindows && !stat.blksize) {
    stat.blksize = 4096;
   }
   if (NODEFS.isWindows && !stat.blocks) {
    stat.blocks = (stat.size + stat.blksize - 1) / stat.blksize | 0;
   }
   return {
    dev: stat.dev,
    ino: stat.ino,
    mode: stat.mode,
    nlink: stat.nlink,
    uid: stat.uid,
    gid: stat.gid,
    rdev: stat.rdev,
    size: stat.size,
    atime: stat.atime,
    mtime: stat.mtime,
    ctime: stat.ctime,
    blksize: stat.blksize,
    blocks: stat.blocks
   };
  }),
  setattr: (function(node, attr) {
   var path = NODEFS.realPath(node);
   try {
    if (attr.mode !== undefined) {
     fs.chmodSync(path, attr.mode);
     node.mode = attr.mode;
    }
    if (attr.timestamp !== undefined) {
     var date = new Date(attr.timestamp);
     fs.utimesSync(path, date, date);
    }
    if (attr.size !== undefined) {
     fs.truncateSync(path, attr.size);
    }
   } catch (e) {
    if (!e.code) throw e;
    throw new FS.ErrnoError(ERRNO_CODES[e.code]);
   }
  }),
  lookup: (function(parent, name) {
   var path = PATH.join2(NODEFS.realPath(parent), name);
   var mode = NODEFS.getMode(path);
   return NODEFS.createNode(parent, name, mode);
  }),
  mknod: (function(parent, name, mode, dev) {
   var node = NODEFS.createNode(parent, name, mode, dev);
   var path = NODEFS.realPath(node);
   try {
    if (FS.isDir(node.mode)) {
     fs.mkdirSync(path, node.mode);
    } else {
     fs.writeFileSync(path, "", {
      mode: node.mode
     });
    }
   } catch (e) {
    if (!e.code) throw e;
    throw new FS.ErrnoError(ERRNO_CODES[e.code]);
   }
   return node;
  }),
  rename: (function(oldNode, newDir, newName) {
   var oldPath = NODEFS.realPath(oldNode);
   var newPath = PATH.join2(NODEFS.realPath(newDir), newName);
   try {
    fs.renameSync(oldPath, newPath);
   } catch (e) {
    if (!e.code) throw e;
    throw new FS.ErrnoError(ERRNO_CODES[e.code]);
   }
  }),
  unlink: (function(parent, name) {
   var path = PATH.join2(NODEFS.realPath(parent), name);
   try {
    fs.unlinkSync(path);
   } catch (e) {
    if (!e.code) throw e;
    throw new FS.ErrnoError(ERRNO_CODES[e.code]);
   }
  }),
  rmdir: (function(parent, name) {
   var path = PATH.join2(NODEFS.realPath(parent), name);
   try {
    fs.rmdirSync(path);
   } catch (e) {
    if (!e.code) throw e;
    throw new FS.ErrnoError(ERRNO_CODES[e.code]);
   }
  }),
  readdir: (function(node) {
   var path = NODEFS.realPath(node);
   try {
    return fs.readdirSync(path);
   } catch (e) {
    if (!e.code) throw e;
    throw new FS.ErrnoError(ERRNO_CODES[e.code]);
   }
  }),
  symlink: (function(parent, newName, oldPath) {
   var newPath = PATH.join2(NODEFS.realPath(parent), newName);
   try {
    fs.symlinkSync(oldPath, newPath);
   } catch (e) {
    if (!e.code) throw e;
    throw new FS.ErrnoError(ERRNO_CODES[e.code]);
   }
  }),
  readlink: (function(node) {
   var path = NODEFS.realPath(node);
   try {
    path = fs.readlinkSync(path);
    path = NODEJS_PATH.relative(NODEJS_PATH.resolve(node.mount.opts.root), path);
    return path;
   } catch (e) {
    if (!e.code) throw e;
    throw new FS.ErrnoError(ERRNO_CODES[e.code]);
   }
  })
 },
 stream_ops: {
  open: (function(stream) {
   var path = NODEFS.realPath(stream.node);
   try {
    if (FS.isFile(stream.node.mode)) {
     stream.nfd = fs.openSync(path, NODEFS.flagsToPermissionString(stream.flags));
    }
   } catch (e) {
    if (!e.code) throw e;
    throw new FS.ErrnoError(ERRNO_CODES[e.code]);
   }
  }),
  close: (function(stream) {
   try {
    if (FS.isFile(stream.node.mode) && stream.nfd) {
     fs.closeSync(stream.nfd);
    }
   } catch (e) {
    if (!e.code) throw e;
    throw new FS.ErrnoError(ERRNO_CODES[e.code]);
   }
  }),
  read: (function(stream, buffer, offset, length, position) {
   if (length === 0) return 0;
   var nbuffer = new Buffer(length);
   var res;
   try {
    res = fs.readSync(stream.nfd, nbuffer, 0, length, position);
   } catch (e) {
    throw new FS.ErrnoError(ERRNO_CODES[e.code]);
   }
   if (res > 0) {
    for (var i = 0; i < res; i++) {
     buffer[offset + i] = nbuffer[i];
    }
   }
   return res;
  }),
  write: (function(stream, buffer, offset, length, position) {
   var nbuffer = new Buffer(buffer.subarray(offset, offset + length));
   var res;
   try {
    res = fs.writeSync(stream.nfd, nbuffer, 0, length, position);
   } catch (e) {
    throw new FS.ErrnoError(ERRNO_CODES[e.code]);
   }
   return res;
  }),
  llseek: (function(stream, offset, whence) {
   var position = offset;
   if (whence === 1) {
    position += stream.position;
   } else if (whence === 2) {
    if (FS.isFile(stream.node.mode)) {
     try {
      var stat = fs.fstatSync(stream.nfd);
      position += stat.size;
     } catch (e) {
      throw new FS.ErrnoError(ERRNO_CODES[e.code]);
     }
    }
   }
   if (position < 0) {
    throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
   }
   return position;
  })
 }
};
var WORKERFS = {
 DIR_MODE: 16895,
 FILE_MODE: 33279,
 reader: null,
 mount: (function(mount) {
  assert(ENVIRONMENT_IS_WORKER);
  if (!WORKERFS.reader) WORKERFS.reader = new FileReaderSync;
  var root = WORKERFS.createNode(null, "/", WORKERFS.DIR_MODE, 0);
  var createdParents = {};
  function ensureParent(path) {
   var parts = path.split("/");
   var parent = root;
   for (var i = 0; i < parts.length - 1; i++) {
    var curr = parts.slice(0, i + 1).join("/");
    if (!createdParents[curr]) {
     createdParents[curr] = WORKERFS.createNode(parent, curr, WORKERFS.DIR_MODE, 0);
    }
    parent = createdParents[curr];
   }
   return parent;
  }
  function base(path) {
   var parts = path.split("/");
   return parts[parts.length - 1];
  }
  Array.prototype.forEach.call(mount.opts["files"] || [], (function(file) {
   WORKERFS.createNode(ensureParent(file.name), base(file.name), WORKERFS.FILE_MODE, 0, file, file.lastModifiedDate);
  }));
  (mount.opts["blobs"] || []).forEach((function(obj) {
   WORKERFS.createNode(ensureParent(obj["name"]), base(obj["name"]), WORKERFS.FILE_MODE, 0, obj["data"]);
  }));
  (mount.opts["packages"] || []).forEach((function(pack) {
   pack["metadata"].files.forEach((function(file) {
    var name = file.filename.substr(1);
    WORKERFS.createNode(ensureParent(name), base(name), WORKERFS.FILE_MODE, 0, pack["blob"].slice(file.start, file.end));
   }));
  }));
  return root;
 }),
 createNode: (function(parent, name, mode, dev, contents, mtime) {
  var node = FS.createNode(parent, name, mode);
  node.mode = mode;
  node.node_ops = WORKERFS.node_ops;
  node.stream_ops = WORKERFS.stream_ops;
  node.timestamp = (mtime || new Date).getTime();
  assert(WORKERFS.FILE_MODE !== WORKERFS.DIR_MODE);
  if (mode === WORKERFS.FILE_MODE) {
   node.size = contents.size;
   node.contents = contents;
  } else {
   node.size = 4096;
   node.contents = {};
  }
  if (parent) {
   parent.contents[name] = node;
  }
  return node;
 }),
 node_ops: {
  getattr: (function(node) {
   return {
    dev: 1,
    ino: undefined,
    mode: node.mode,
    nlink: 1,
    uid: 0,
    gid: 0,
    rdev: undefined,
    size: node.size,
    atime: new Date(node.timestamp),
    mtime: new Date(node.timestamp),
    ctime: new Date(node.timestamp),
    blksize: 4096,
    blocks: Math.ceil(node.size / 4096)
   };
  }),
  setattr: (function(node, attr) {
   if (attr.mode !== undefined) {
    node.mode = attr.mode;
   }
   if (attr.timestamp !== undefined) {
    node.timestamp = attr.timestamp;
   }
  }),
  lookup: (function(parent, name) {
   throw new FS.ErrnoError(ERRNO_CODES.ENOENT);
  }),
  mknod: (function(parent, name, mode, dev) {
   throw new FS.ErrnoError(ERRNO_CODES.EPERM);
  }),
  rename: (function(oldNode, newDir, newName) {
   throw new FS.ErrnoError(ERRNO_CODES.EPERM);
  }),
  unlink: (function(parent, name) {
   throw new FS.ErrnoError(ERRNO_CODES.EPERM);
  }),
  rmdir: (function(parent, name) {
   throw new FS.ErrnoError(ERRNO_CODES.EPERM);
  }),
  readdir: (function(node) {
   throw new FS.ErrnoError(ERRNO_CODES.EPERM);
  }),
  symlink: (function(parent, newName, oldPath) {
   throw new FS.ErrnoError(ERRNO_CODES.EPERM);
  }),
  readlink: (function(node) {
   throw new FS.ErrnoError(ERRNO_CODES.EPERM);
  })
 },
 stream_ops: {
  read: (function(stream, buffer, offset, length, position) {
   if (position >= stream.node.size) return 0;
   var chunk = stream.node.contents.slice(position, position + length);
   var ab = WORKERFS.reader.readAsArrayBuffer(chunk);
   buffer.set(new Uint8Array(ab), offset);
   return chunk.size;
  }),
  write: (function(stream, buffer, offset, length, position) {
   throw new FS.ErrnoError(ERRNO_CODES.EIO);
  }),
  llseek: (function(stream, offset, whence) {
   var position = offset;
   if (whence === 1) {
    position += stream.position;
   } else if (whence === 2) {
    if (FS.isFile(stream.node.mode)) {
     position += stream.node.size;
    }
   }
   if (position < 0) {
    throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
   }
   return position;
  })
 }
};
STATICTOP += 16;
STATICTOP += 16;
STATICTOP += 16;
var FS = {
 root: null,
 mounts: [],
 devices: [ null ],
 streams: [],
 nextInode: 1,
 nameTable: null,
 currentPath: "/",
 initialized: false,
 ignorePermissions: true,
 trackingDelegate: {},
 tracking: {
  openFlags: {
   READ: 1,
   WRITE: 2
  }
 },
 ErrnoError: null,
 genericErrors: {},
 filesystems: null,
 syncFSRequests: 0,
 handleFSError: (function(e) {
  if (!(e instanceof FS.ErrnoError)) throw e + " : " + stackTrace();
  return ___setErrNo(e.errno);
 }),
 lookupPath: (function(path, opts) {
  path = PATH.resolve(FS.cwd(), path);
  opts = opts || {};
  if (!path) return {
   path: "",
   node: null
  };
  var defaults = {
   follow_mount: true,
   recurse_count: 0
  };
  for (var key in defaults) {
   if (opts[key] === undefined) {
    opts[key] = defaults[key];
   }
  }
  if (opts.recurse_count > 8) {
   throw new FS.ErrnoError(ERRNO_CODES.ELOOP);
  }
  var parts = PATH.normalizeArray(path.split("/").filter((function(p) {
   return !!p;
  })), false);
  var current = FS.root;
  var current_path = "/";
  for (var i = 0; i < parts.length; i++) {
   var islast = i === parts.length - 1;
   if (islast && opts.parent) {
    break;
   }
   current = FS.lookupNode(current, parts[i]);
   current_path = PATH.join2(current_path, parts[i]);
   if (FS.isMountpoint(current)) {
    if (!islast || islast && opts.follow_mount) {
     current = current.mounted.root;
    }
   }
   if (!islast || opts.follow) {
    var count = 0;
    while (FS.isLink(current.mode)) {
     var link = FS.readlink(current_path);
     current_path = PATH.resolve(PATH.dirname(current_path), link);
     var lookup = FS.lookupPath(current_path, {
      recurse_count: opts.recurse_count
     });
     current = lookup.node;
     if (count++ > 40) {
      throw new FS.ErrnoError(ERRNO_CODES.ELOOP);
     }
    }
   }
  }
  return {
   path: current_path,
   node: current
  };
 }),
 getPath: (function(node) {
  var path;
  while (true) {
   if (FS.isRoot(node)) {
    var mount = node.mount.mountpoint;
    if (!path) return mount;
    return mount[mount.length - 1] !== "/" ? mount + "/" + path : mount + path;
   }
   path = path ? node.name + "/" + path : node.name;
   node = node.parent;
  }
 }),
 hashName: (function(parentid, name) {
  var hash = 0;
  for (var i = 0; i < name.length; i++) {
   hash = (hash << 5) - hash + name.charCodeAt(i) | 0;
  }
  return (parentid + hash >>> 0) % FS.nameTable.length;
 }),
 hashAddNode: (function(node) {
  var hash = FS.hashName(node.parent.id, node.name);
  node.name_next = FS.nameTable[hash];
  FS.nameTable[hash] = node;
 }),
 hashRemoveNode: (function(node) {
  var hash = FS.hashName(node.parent.id, node.name);
  if (FS.nameTable[hash] === node) {
   FS.nameTable[hash] = node.name_next;
  } else {
   var current = FS.nameTable[hash];
   while (current) {
    if (current.name_next === node) {
     current.name_next = node.name_next;
     break;
    }
    current = current.name_next;
   }
  }
 }),
 lookupNode: (function(parent, name) {
  var err = FS.mayLookup(parent);
  if (err) {
   throw new FS.ErrnoError(err, parent);
  }
  var hash = FS.hashName(parent.id, name);
  for (var node = FS.nameTable[hash]; node; node = node.name_next) {
   var nodeName = node.name;
   if (node.parent.id === parent.id && nodeName === name) {
    return node;
   }
  }
  return FS.lookup(parent, name);
 }),
 createNode: (function(parent, name, mode, rdev) {
  if (!FS.FSNode) {
   FS.FSNode = (function(parent, name, mode, rdev) {
    if (!parent) {
     parent = this;
    }
    this.parent = parent;
    this.mount = parent.mount;
    this.mounted = null;
    this.id = FS.nextInode++;
    this.name = name;
    this.mode = mode;
    this.node_ops = {};
    this.stream_ops = {};
    this.rdev = rdev;
   });
   FS.FSNode.prototype = {};
   var readMode = 292 | 73;
   var writeMode = 146;
   Object.defineProperties(FS.FSNode.prototype, {
    read: {
     get: (function() {
      return (this.mode & readMode) === readMode;
     }),
     set: (function(val) {
      val ? this.mode |= readMode : this.mode &= ~readMode;
     })
    },
    write: {
     get: (function() {
      return (this.mode & writeMode) === writeMode;
     }),
     set: (function(val) {
      val ? this.mode |= writeMode : this.mode &= ~writeMode;
     })
    },
    isFolder: {
     get: (function() {
      return FS.isDir(this.mode);
     })
    },
    isDevice: {
     get: (function() {
      return FS.isChrdev(this.mode);
     })
    }
   });
  }
  var node = new FS.FSNode(parent, name, mode, rdev);
  FS.hashAddNode(node);
  return node;
 }),
 destroyNode: (function(node) {
  FS.hashRemoveNode(node);
 }),
 isRoot: (function(node) {
  return node === node.parent;
 }),
 isMountpoint: (function(node) {
  return !!node.mounted;
 }),
 isFile: (function(mode) {
  return (mode & 61440) === 32768;
 }),
 isDir: (function(mode) {
  return (mode & 61440) === 16384;
 }),
 isLink: (function(mode) {
  return (mode & 61440) === 40960;
 }),
 isChrdev: (function(mode) {
  return (mode & 61440) === 8192;
 }),
 isBlkdev: (function(mode) {
  return (mode & 61440) === 24576;
 }),
 isFIFO: (function(mode) {
  return (mode & 61440) === 4096;
 }),
 isSocket: (function(mode) {
  return (mode & 49152) === 49152;
 }),
 flagModes: {
  "r": 0,
  "rs": 1052672,
  "r+": 2,
  "w": 577,
  "wx": 705,
  "xw": 705,
  "w+": 578,
  "wx+": 706,
  "xw+": 706,
  "a": 1089,
  "ax": 1217,
  "xa": 1217,
  "a+": 1090,
  "ax+": 1218,
  "xa+": 1218
 },
 modeStringToFlags: (function(str) {
  var flags = FS.flagModes[str];
  if (typeof flags === "undefined") {
   throw new Error("Unknown file open mode: " + str);
  }
  return flags;
 }),
 flagsToPermissionString: (function(flag) {
  var perms = [ "r", "w", "rw" ][flag & 3];
  if (flag & 512) {
   perms += "w";
  }
  return perms;
 }),
 nodePermissions: (function(node, perms) {
  if (FS.ignorePermissions) {
   return 0;
  }
  if (perms.indexOf("r") !== -1 && !(node.mode & 292)) {
   return ERRNO_CODES.EACCES;
  } else if (perms.indexOf("w") !== -1 && !(node.mode & 146)) {
   return ERRNO_CODES.EACCES;
  } else if (perms.indexOf("x") !== -1 && !(node.mode & 73)) {
   return ERRNO_CODES.EACCES;
  }
  return 0;
 }),
 mayLookup: (function(dir) {
  var err = FS.nodePermissions(dir, "x");
  if (err) return err;
  if (!dir.node_ops.lookup) return ERRNO_CODES.EACCES;
  return 0;
 }),
 mayCreate: (function(dir, name) {
  try {
   var node = FS.lookupNode(dir, name);
   return ERRNO_CODES.EEXIST;
  } catch (e) {}
  return FS.nodePermissions(dir, "wx");
 }),
 mayDelete: (function(dir, name, isdir) {
  var node;
  try {
   node = FS.lookupNode(dir, name);
  } catch (e) {
   return e.errno;
  }
  var err = FS.nodePermissions(dir, "wx");
  if (err) {
   return err;
  }
  if (isdir) {
   if (!FS.isDir(node.mode)) {
    return ERRNO_CODES.ENOTDIR;
   }
   if (FS.isRoot(node) || FS.getPath(node) === FS.cwd()) {
    return ERRNO_CODES.EBUSY;
   }
  } else {
   if (FS.isDir(node.mode)) {
    return ERRNO_CODES.EISDIR;
   }
  }
  return 0;
 }),
 mayOpen: (function(node, flags) {
  if (!node) {
   return ERRNO_CODES.ENOENT;
  }
  if (FS.isLink(node.mode)) {
   return ERRNO_CODES.ELOOP;
  } else if (FS.isDir(node.mode)) {
   if (FS.flagsToPermissionString(flags) !== "r" || flags & 512) {
    return ERRNO_CODES.EISDIR;
   }
  }
  return FS.nodePermissions(node, FS.flagsToPermissionString(flags));
 }),
 MAX_OPEN_FDS: 4096,
 nextfd: (function(fd_start, fd_end) {
  fd_start = fd_start || 0;
  fd_end = fd_end || FS.MAX_OPEN_FDS;
  for (var fd = fd_start; fd <= fd_end; fd++) {
   if (!FS.streams[fd]) {
    return fd;
   }
  }
  throw new FS.ErrnoError(ERRNO_CODES.EMFILE);
 }),
 getStream: (function(fd) {
  return FS.streams[fd];
 }),
 createStream: (function(stream, fd_start, fd_end) {
  if (!FS.FSStream) {
   FS.FSStream = (function() {});
   FS.FSStream.prototype = {};
   Object.defineProperties(FS.FSStream.prototype, {
    object: {
     get: (function() {
      return this.node;
     }),
     set: (function(val) {
      this.node = val;
     })
    },
    isRead: {
     get: (function() {
      return (this.flags & 2097155) !== 1;
     })
    },
    isWrite: {
     get: (function() {
      return (this.flags & 2097155) !== 0;
     })
    },
    isAppend: {
     get: (function() {
      return this.flags & 1024;
     })
    }
   });
  }
  var newStream = new FS.FSStream;
  for (var p in stream) {
   newStream[p] = stream[p];
  }
  stream = newStream;
  var fd = FS.nextfd(fd_start, fd_end);
  stream.fd = fd;
  FS.streams[fd] = stream;
  return stream;
 }),
 closeStream: (function(fd) {
  FS.streams[fd] = null;
 }),
 chrdev_stream_ops: {
  open: (function(stream) {
   var device = FS.getDevice(stream.node.rdev);
   stream.stream_ops = device.stream_ops;
   if (stream.stream_ops.open) {
    stream.stream_ops.open(stream);
   }
  }),
  llseek: (function() {
   throw new FS.ErrnoError(ERRNO_CODES.ESPIPE);
  })
 },
 major: (function(dev) {
  return dev >> 8;
 }),
 minor: (function(dev) {
  return dev & 255;
 }),
 makedev: (function(ma, mi) {
  return ma << 8 | mi;
 }),
 registerDevice: (function(dev, ops) {
  FS.devices[dev] = {
   stream_ops: ops
  };
 }),
 getDevice: (function(dev) {
  return FS.devices[dev];
 }),
 getMounts: (function(mount) {
  var mounts = [];
  var check = [ mount ];
  while (check.length) {
   var m = check.pop();
   mounts.push(m);
   check.push.apply(check, m.mounts);
  }
  return mounts;
 }),
 syncfs: (function(populate, callback) {
  if (typeof populate === "function") {
   callback = populate;
   populate = false;
  }
  FS.syncFSRequests++;
  if (FS.syncFSRequests > 1) {
   console.log("warning: " + FS.syncFSRequests + " FS.syncfs operations in flight at once, probably just doing extra work");
  }
  var mounts = FS.getMounts(FS.root.mount);
  var completed = 0;
  function doCallback(err) {
   assert(FS.syncFSRequests > 0);
   FS.syncFSRequests--;
   return callback(err);
  }
  function done(err) {
   if (err) {
    if (!done.errored) {
     done.errored = true;
     return doCallback(err);
    }
    return;
   }
   if (++completed >= mounts.length) {
    doCallback(null);
   }
  }
  mounts.forEach((function(mount) {
   if (!mount.type.syncfs) {
    return done(null);
   }
   mount.type.syncfs(mount, populate, done);
  }));
 }),
 mount: (function(type, opts, mountpoint) {
  var root = mountpoint === "/";
  var pseudo = !mountpoint;
  var node;
  if (root && FS.root) {
   throw new FS.ErrnoError(ERRNO_CODES.EBUSY);
  } else if (!root && !pseudo) {
   var lookup = FS.lookupPath(mountpoint, {
    follow_mount: false
   });
   mountpoint = lookup.path;
   node = lookup.node;
   if (FS.isMountpoint(node)) {
    throw new FS.ErrnoError(ERRNO_CODES.EBUSY);
   }
   if (!FS.isDir(node.mode)) {
    throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR);
   }
  }
  var mount = {
   type: type,
   opts: opts,
   mountpoint: mountpoint,
   mounts: []
  };
  var mountRoot = type.mount(mount);
  mountRoot.mount = mount;
  mount.root = mountRoot;
  if (root) {
   FS.root = mountRoot;
  } else if (node) {
   node.mounted = mount;
   if (node.mount) {
    node.mount.mounts.push(mount);
   }
  }
  return mountRoot;
 }),
 unmount: (function(mountpoint) {
  var lookup = FS.lookupPath(mountpoint, {
   follow_mount: false
  });
  if (!FS.isMountpoint(lookup.node)) {
   throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
  }
  var node = lookup.node;
  var mount = node.mounted;
  var mounts = FS.getMounts(mount);
  Object.keys(FS.nameTable).forEach((function(hash) {
   var current = FS.nameTable[hash];
   while (current) {
    var next = current.name_next;
    if (mounts.indexOf(current.mount) !== -1) {
     FS.destroyNode(current);
    }
    current = next;
   }
  }));
  node.mounted = null;
  var idx = node.mount.mounts.indexOf(mount);
  assert(idx !== -1);
  node.mount.mounts.splice(idx, 1);
 }),
 lookup: (function(parent, name) {
  return parent.node_ops.lookup(parent, name);
 }),
 mknod: (function(path, mode, dev) {
  var lookup = FS.lookupPath(path, {
   parent: true
  });
  var parent = lookup.node;
  var name = PATH.basename(path);
  if (!name || name === "." || name === "..") {
   throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
  }
  var err = FS.mayCreate(parent, name);
  if (err) {
   throw new FS.ErrnoError(err);
  }
  if (!parent.node_ops.mknod) {
   throw new FS.ErrnoError(ERRNO_CODES.EPERM);
  }
  return parent.node_ops.mknod(parent, name, mode, dev);
 }),
 create: (function(path, mode) {
  mode = mode !== undefined ? mode : 438;
  mode &= 4095;
  mode |= 32768;
  return FS.mknod(path, mode, 0);
 }),
 mkdir: (function(path, mode) {
  mode = mode !== undefined ? mode : 511;
  mode &= 511 | 512;
  mode |= 16384;
  return FS.mknod(path, mode, 0);
 }),
 mkdev: (function(path, mode, dev) {
  if (typeof dev === "undefined") {
   dev = mode;
   mode = 438;
  }
  mode |= 8192;
  return FS.mknod(path, mode, dev);
 }),
 symlink: (function(oldpath, newpath) {
  if (!PATH.resolve(oldpath)) {
   throw new FS.ErrnoError(ERRNO_CODES.ENOENT);
  }
  var lookup = FS.lookupPath(newpath, {
   parent: true
  });
  var parent = lookup.node;
  if (!parent) {
   throw new FS.ErrnoError(ERRNO_CODES.ENOENT);
  }
  var newname = PATH.basename(newpath);
  var err = FS.mayCreate(parent, newname);
  if (err) {
   throw new FS.ErrnoError(err);
  }
  if (!parent.node_ops.symlink) {
   throw new FS.ErrnoError(ERRNO_CODES.EPERM);
  }
  return parent.node_ops.symlink(parent, newname, oldpath);
 }),
 rename: (function(old_path, new_path) {
  var old_dirname = PATH.dirname(old_path);
  var new_dirname = PATH.dirname(new_path);
  var old_name = PATH.basename(old_path);
  var new_name = PATH.basename(new_path);
  var lookup, old_dir, new_dir;
  try {
   lookup = FS.lookupPath(old_path, {
    parent: true
   });
   old_dir = lookup.node;
   lookup = FS.lookupPath(new_path, {
    parent: true
   });
   new_dir = lookup.node;
  } catch (e) {
   throw new FS.ErrnoError(ERRNO_CODES.EBUSY);
  }
  if (!old_dir || !new_dir) throw new FS.ErrnoError(ERRNO_CODES.ENOENT);
  if (old_dir.mount !== new_dir.mount) {
   throw new FS.ErrnoError(ERRNO_CODES.EXDEV);
  }
  var old_node = FS.lookupNode(old_dir, old_name);
  var relative = PATH.relative(old_path, new_dirname);
  if (relative.charAt(0) !== ".") {
   throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
  }
  relative = PATH.relative(new_path, old_dirname);
  if (relative.charAt(0) !== ".") {
   throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY);
  }
  var new_node;
  try {
   new_node = FS.lookupNode(new_dir, new_name);
  } catch (e) {}
  if (old_node === new_node) {
   return;
  }
  var isdir = FS.isDir(old_node.mode);
  var err = FS.mayDelete(old_dir, old_name, isdir);
  if (err) {
   throw new FS.ErrnoError(err);
  }
  err = new_node ? FS.mayDelete(new_dir, new_name, isdir) : FS.mayCreate(new_dir, new_name);
  if (err) {
   throw new FS.ErrnoError(err);
  }
  if (!old_dir.node_ops.rename) {
   throw new FS.ErrnoError(ERRNO_CODES.EPERM);
  }
  if (FS.isMountpoint(old_node) || new_node && FS.isMountpoint(new_node)) {
   throw new FS.ErrnoError(ERRNO_CODES.EBUSY);
  }
  if (new_dir !== old_dir) {
   err = FS.nodePermissions(old_dir, "w");
   if (err) {
    throw new FS.ErrnoError(err);
   }
  }
  try {
   if (FS.trackingDelegate["willMovePath"]) {
    FS.trackingDelegate["willMovePath"](old_path, new_path);
   }
  } catch (e) {
   console.log("FS.trackingDelegate['willMovePath']('" + old_path + "', '" + new_path + "') threw an exception: " + e.message);
  }
  FS.hashRemoveNode(old_node);
  try {
   old_dir.node_ops.rename(old_node, new_dir, new_name);
  } catch (e) {
   throw e;
  } finally {
   FS.hashAddNode(old_node);
  }
  try {
   if (FS.trackingDelegate["onMovePath"]) FS.trackingDelegate["onMovePath"](old_path, new_path);
  } catch (e) {
   console.log("FS.trackingDelegate['onMovePath']('" + old_path + "', '" + new_path + "') threw an exception: " + e.message);
  }
 }),
 rmdir: (function(path) {
  var lookup = FS.lookupPath(path, {
   parent: true
  });
  var parent = lookup.node;
  var name = PATH.basename(path);
  var node = FS.lookupNode(parent, name);
  var err = FS.mayDelete(parent, name, true);
  if (err) {
   throw new FS.ErrnoError(err);
  }
  if (!parent.node_ops.rmdir) {
   throw new FS.ErrnoError(ERRNO_CODES.EPERM);
  }
  if (FS.isMountpoint(node)) {
   throw new FS.ErrnoError(ERRNO_CODES.EBUSY);
  }
  try {
   if (FS.trackingDelegate["willDeletePath"]) {
    FS.trackingDelegate["willDeletePath"](path);
   }
  } catch (e) {
   console.log("FS.trackingDelegate['willDeletePath']('" + path + "') threw an exception: " + e.message);
  }
  parent.node_ops.rmdir(parent, name);
  FS.destroyNode(node);
  try {
   if (FS.trackingDelegate["onDeletePath"]) FS.trackingDelegate["onDeletePath"](path);
  } catch (e) {
   console.log("FS.trackingDelegate['onDeletePath']('" + path + "') threw an exception: " + e.message);
  }
 }),
 readdir: (function(path) {
  var lookup = FS.lookupPath(path, {
   follow: true
  });
  var node = lookup.node;
  if (!node.node_ops.readdir) {
   throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR);
  }
  return node.node_ops.readdir(node);
 }),
 unlink: (function(path) {
  var lookup = FS.lookupPath(path, {
   parent: true
  });
  var parent = lookup.node;
  var name = PATH.basename(path);
  var node = FS.lookupNode(parent, name);
  var err = FS.mayDelete(parent, name, false);
  if (err) {
   if (err === ERRNO_CODES.EISDIR) err = ERRNO_CODES.EPERM;
   throw new FS.ErrnoError(err);
  }
  if (!parent.node_ops.unlink) {
   throw new FS.ErrnoError(ERRNO_CODES.EPERM);
  }
  if (FS.isMountpoint(node)) {
   throw new FS.ErrnoError(ERRNO_CODES.EBUSY);
  }
  try {
   if (FS.trackingDelegate["willDeletePath"]) {
    FS.trackingDelegate["willDeletePath"](path);
   }
  } catch (e) {
   console.log("FS.trackingDelegate['willDeletePath']('" + path + "') threw an exception: " + e.message);
  }
  parent.node_ops.unlink(parent, name);
  FS.destroyNode(node);
  try {
   if (FS.trackingDelegate["onDeletePath"]) FS.trackingDelegate["onDeletePath"](path);
  } catch (e) {
   console.log("FS.trackingDelegate['onDeletePath']('" + path + "') threw an exception: " + e.message);
  }
 }),
 readlink: (function(path) {
  var lookup = FS.lookupPath(path);
  var link = lookup.node;
  if (!link) {
   throw new FS.ErrnoError(ERRNO_CODES.ENOENT);
  }
  if (!link.node_ops.readlink) {
   throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
  }
  return PATH.resolve(FS.getPath(link.parent), link.node_ops.readlink(link));
 }),
 stat: (function(path, dontFollow) {
  var lookup = FS.lookupPath(path, {
   follow: !dontFollow
  });
  var node = lookup.node;
  if (!node) {
   throw new FS.ErrnoError(ERRNO_CODES.ENOENT);
  }
  if (!node.node_ops.getattr) {
   throw new FS.ErrnoError(ERRNO_CODES.EPERM);
  }
  return node.node_ops.getattr(node);
 }),
 lstat: (function(path) {
  return FS.stat(path, true);
 }),
 chmod: (function(path, mode, dontFollow) {
  var node;
  if (typeof path === "string") {
   var lookup = FS.lookupPath(path, {
    follow: !dontFollow
   });
   node = lookup.node;
  } else {
   node = path;
  }
  if (!node.node_ops.setattr) {
   throw new FS.ErrnoError(ERRNO_CODES.EPERM);
  }
  node.node_ops.setattr(node, {
   mode: mode & 4095 | node.mode & ~4095,
   timestamp: Date.now()
  });
 }),
 lchmod: (function(path, mode) {
  FS.chmod(path, mode, true);
 }),
 fchmod: (function(fd, mode) {
  var stream = FS.getStream(fd);
  if (!stream) {
   throw new FS.ErrnoError(ERRNO_CODES.EBADF);
  }
  FS.chmod(stream.node, mode);
 }),
 chown: (function(path, uid, gid, dontFollow) {
  var node;
  if (typeof path === "string") {
   var lookup = FS.lookupPath(path, {
    follow: !dontFollow
   });
   node = lookup.node;
  } else {
   node = path;
  }
  if (!node.node_ops.setattr) {
   throw new FS.ErrnoError(ERRNO_CODES.EPERM);
  }
  node.node_ops.setattr(node, {
   timestamp: Date.now()
  });
 }),
 lchown: (function(path, uid, gid) {
  FS.chown(path, uid, gid, true);
 }),
 fchown: (function(fd, uid, gid) {
  var stream = FS.getStream(fd);
  if (!stream) {
   throw new FS.ErrnoError(ERRNO_CODES.EBADF);
  }
  FS.chown(stream.node, uid, gid);
 }),
 truncate: (function(path, len) {
  if (len < 0) {
   throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
  }
  var node;
  if (typeof path === "string") {
   var lookup = FS.lookupPath(path, {
    follow: true
   });
   node = lookup.node;
  } else {
   node = path;
  }
  if (!node.node_ops.setattr) {
   throw new FS.ErrnoError(ERRNO_CODES.EPERM);
  }
  if (FS.isDir(node.mode)) {
   throw new FS.ErrnoError(ERRNO_CODES.EISDIR);
  }
  if (!FS.isFile(node.mode)) {
   throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
  }
  var err = FS.nodePermissions(node, "w");
  if (err) {
   throw new FS.ErrnoError(err);
  }
  node.node_ops.setattr(node, {
   size: len,
   timestamp: Date.now()
  });
 }),
 ftruncate: (function(fd, len) {
  var stream = FS.getStream(fd);
  if (!stream) {
   throw new FS.ErrnoError(ERRNO_CODES.EBADF);
  }
  if ((stream.flags & 2097155) === 0) {
   throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
  }
  FS.truncate(stream.node, len);
 }),
 utime: (function(path, atime, mtime) {
  var lookup = FS.lookupPath(path, {
   follow: true
  });
  var node = lookup.node;
  node.node_ops.setattr(node, {
   timestamp: Math.max(atime, mtime)
  });
 }),
 open: (function(path, flags, mode, fd_start, fd_end) {
  if (path === "") {
   throw new FS.ErrnoError(ERRNO_CODES.ENOENT);
  }
  flags = typeof flags === "string" ? FS.modeStringToFlags(flags) : flags;
  mode = typeof mode === "undefined" ? 438 : mode;
  if (flags & 64) {
   mode = mode & 4095 | 32768;
  } else {
   mode = 0;
  }
  var node;
  if (typeof path === "object") {
   node = path;
  } else {
   path = PATH.normalize(path);
   try {
    var lookup = FS.lookupPath(path, {
     follow: !(flags & 131072)
    });
    node = lookup.node;
   } catch (e) {}
  }
  var created = false;
  if (flags & 64) {
   if (node) {
    if (flags & 128) {
     throw new FS.ErrnoError(ERRNO_CODES.EEXIST);
    }
   } else {
    node = FS.mknod(path, mode, 0);
    created = true;
   }
  }
  if (!node) {
   throw new FS.ErrnoError(ERRNO_CODES.ENOENT);
  }
  if (FS.isChrdev(node.mode)) {
   flags &= ~512;
  }
  if (flags & 65536 && !FS.isDir(node.mode)) {
   throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR);
  }
  if (!created) {
   var err = FS.mayOpen(node, flags);
   if (err) {
    throw new FS.ErrnoError(err);
   }
  }
  if (flags & 512) {
   FS.truncate(node, 0);
  }
  flags &= ~(128 | 512);
  var stream = FS.createStream({
   node: node,
   path: FS.getPath(node),
   flags: flags,
   seekable: true,
   position: 0,
   stream_ops: node.stream_ops,
   ungotten: [],
   error: false
  }, fd_start, fd_end);
  if (stream.stream_ops.open) {
   stream.stream_ops.open(stream);
  }
  if (Module["logReadFiles"] && !(flags & 1)) {
   if (!FS.readFiles) FS.readFiles = {};
   if (!(path in FS.readFiles)) {
    FS.readFiles[path] = 1;
    Module["printErr"]("read file: " + path);
   }
  }
  try {
   if (FS.trackingDelegate["onOpenFile"]) {
    var trackingFlags = 0;
    if ((flags & 2097155) !== 1) {
     trackingFlags |= FS.tracking.openFlags.READ;
    }
    if ((flags & 2097155) !== 0) {
     trackingFlags |= FS.tracking.openFlags.WRITE;
    }
    FS.trackingDelegate["onOpenFile"](path, trackingFlags);
   }
  } catch (e) {
   console.log("FS.trackingDelegate['onOpenFile']('" + path + "', flags) threw an exception: " + e.message);
  }
  return stream;
 }),
 close: (function(stream) {
  if (stream.getdents) stream.getdents = null;
  try {
   if (stream.stream_ops.close) {
    stream.stream_ops.close(stream);
   }
  } catch (e) {
   throw e;
  } finally {
   FS.closeStream(stream.fd);
  }
 }),
 llseek: (function(stream, offset, whence) {
  if (!stream.seekable || !stream.stream_ops.llseek) {
   throw new FS.ErrnoError(ERRNO_CODES.ESPIPE);
  }
  stream.position = stream.stream_ops.llseek(stream, offset, whence);
  stream.ungotten = [];
  return stream.position;
 }),
 read: (function(stream, buffer, offset, length, position) {
  if (length < 0 || position < 0) {
   throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
  }
  if ((stream.flags & 2097155) === 1) {
   throw new FS.ErrnoError(ERRNO_CODES.EBADF);
  }
  if (FS.isDir(stream.node.mode)) {
   throw new FS.ErrnoError(ERRNO_CODES.EISDIR);
  }
  if (!stream.stream_ops.read) {
   throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
  }
  var seeking = true;
  if (typeof position === "undefined") {
   position = stream.position;
   seeking = false;
  } else if (!stream.seekable) {
   throw new FS.ErrnoError(ERRNO_CODES.ESPIPE);
  }
  var bytesRead = stream.stream_ops.read(stream, buffer, offset, length, position);
  if (!seeking) stream.position += bytesRead;
  return bytesRead;
 }),
 write: (function(stream, buffer, offset, length, position, canOwn) {
  if (length < 0 || position < 0) {
   throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
  }
  if ((stream.flags & 2097155) === 0) {
   throw new FS.ErrnoError(ERRNO_CODES.EBADF);
  }
  if (FS.isDir(stream.node.mode)) {
   throw new FS.ErrnoError(ERRNO_CODES.EISDIR);
  }
  if (!stream.stream_ops.write) {
   throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
  }
  if (stream.flags & 1024) {
   FS.llseek(stream, 0, 2);
  }
  var seeking = true;
  if (typeof position === "undefined") {
   position = stream.position;
   seeking = false;
  } else if (!stream.seekable) {
   throw new FS.ErrnoError(ERRNO_CODES.ESPIPE);
  }
  var bytesWritten = stream.stream_ops.write(stream, buffer, offset, length, position, canOwn);
  if (!seeking) stream.position += bytesWritten;
  try {
   if (stream.path && FS.trackingDelegate["onWriteToFile"]) FS.trackingDelegate["onWriteToFile"](stream.path);
  } catch (e) {
   console.log("FS.trackingDelegate['onWriteToFile']('" + path + "') threw an exception: " + e.message);
  }
  return bytesWritten;
 }),
 allocate: (function(stream, offset, length) {
  if (offset < 0 || length <= 0) {
   throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
  }
  if ((stream.flags & 2097155) === 0) {
   throw new FS.ErrnoError(ERRNO_CODES.EBADF);
  }
  if (!FS.isFile(stream.node.mode) && !FS.isDir(node.mode)) {
   throw new FS.ErrnoError(ERRNO_CODES.ENODEV);
  }
  if (!stream.stream_ops.allocate) {
   throw new FS.ErrnoError(ERRNO_CODES.EOPNOTSUPP);
  }
  stream.stream_ops.allocate(stream, offset, length);
 }),
 mmap: (function(stream, buffer, offset, length, position, prot, flags) {
  if ((stream.flags & 2097155) === 1) {
   throw new FS.ErrnoError(ERRNO_CODES.EACCES);
  }
  if (!stream.stream_ops.mmap) {
   throw new FS.ErrnoError(ERRNO_CODES.ENODEV);
  }
  return stream.stream_ops.mmap(stream, buffer, offset, length, position, prot, flags);
 }),
 msync: (function(stream, buffer, offset, length, mmapFlags) {
  if (!stream || !stream.stream_ops.msync) {
   return 0;
  }
  return stream.stream_ops.msync(stream, buffer, offset, length, mmapFlags);
 }),
 munmap: (function(stream) {
  return 0;
 }),
 ioctl: (function(stream, cmd, arg) {
  if (!stream.stream_ops.ioctl) {
   throw new FS.ErrnoError(ERRNO_CODES.ENOTTY);
  }
  return stream.stream_ops.ioctl(stream, cmd, arg);
 }),
 readFile: (function(path, opts) {
  opts = opts || {};
  opts.flags = opts.flags || "r";
  opts.encoding = opts.encoding || "binary";
  if (opts.encoding !== "utf8" && opts.encoding !== "binary") {
   throw new Error('Invalid encoding type "' + opts.encoding + '"');
  }
  var ret;
  var stream = FS.open(path, opts.flags);
  var stat = FS.stat(path);
  var length = stat.size;
  var buf = new Uint8Array(length);
  FS.read(stream, buf, 0, length, 0);
  if (opts.encoding === "utf8") {
   ret = UTF8ArrayToString(buf, 0);
  } else if (opts.encoding === "binary") {
   ret = buf;
  }
  FS.close(stream);
  return ret;
 }),
 writeFile: (function(path, data, opts) {
  opts = opts || {};
  opts.flags = opts.flags || "w";
  opts.encoding = opts.encoding || "utf8";
  if (opts.encoding !== "utf8" && opts.encoding !== "binary") {
   throw new Error('Invalid encoding type "' + opts.encoding + '"');
  }
  var stream = FS.open(path, opts.flags, opts.mode);
  if (opts.encoding === "utf8") {
   var buf = new Uint8Array(lengthBytesUTF8(data) + 1);
   var actualNumBytes = stringToUTF8Array(data, buf, 0, buf.length);
   FS.write(stream, buf, 0, actualNumBytes, 0, opts.canOwn);
  } else if (opts.encoding === "binary") {
   FS.write(stream, data, 0, data.length, 0, opts.canOwn);
  }
  FS.close(stream);
 }),
 cwd: (function() {
  return FS.currentPath;
 }),
 chdir: (function(path) {
  var lookup = FS.lookupPath(path, {
   follow: true
  });
  if (!FS.isDir(lookup.node.mode)) {
   throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR);
  }
  var err = FS.nodePermissions(lookup.node, "x");
  if (err) {
   throw new FS.ErrnoError(err);
  }
  FS.currentPath = lookup.path;
 }),
 createDefaultDirectories: (function() {
  FS.mkdir("/tmp");
  FS.mkdir("/home");
  FS.mkdir("/home/web_user");
 }),
 createDefaultDevices: (function() {
  FS.mkdir("/dev");
  FS.registerDevice(FS.makedev(1, 3), {
   read: (function() {
    return 0;
   }),
   write: (function(stream, buffer, offset, length, pos) {
    return length;
   })
  });
  FS.mkdev("/dev/null", FS.makedev(1, 3));
  TTY.register(FS.makedev(5, 0), TTY.default_tty_ops);
  TTY.register(FS.makedev(6, 0), TTY.default_tty1_ops);
  FS.mkdev("/dev/tty", FS.makedev(5, 0));
  FS.mkdev("/dev/tty1", FS.makedev(6, 0));
  var random_device;
  if (typeof crypto !== "undefined") {
   var randomBuffer = new Uint8Array(1);
   random_device = (function() {
    crypto.getRandomValues(randomBuffer);
    return randomBuffer[0];
   });
  } else if (ENVIRONMENT_IS_NODE) {
   random_device = (function() {
    return require("crypto").randomBytes(1)[0];
   });
  } else {
   random_device = (function() {
    return Math.random() * 256 | 0;
   });
  }
  FS.createDevice("/dev", "random", random_device);
  FS.createDevice("/dev", "urandom", random_device);
  FS.mkdir("/dev/shm");
  FS.mkdir("/dev/shm/tmp");
 }),
 createSpecialDirectories: (function() {
  FS.mkdir("/proc");
  FS.mkdir("/proc/self");
  FS.mkdir("/proc/self/fd");
  FS.mount({
   mount: (function() {
    var node = FS.createNode("/proc/self", "fd", 16384 | 511, 73);
    node.node_ops = {
     lookup: (function(parent, name) {
      var fd = +name;
      var stream = FS.getStream(fd);
      if (!stream) throw new FS.ErrnoError(ERRNO_CODES.EBADF);
      var ret = {
       parent: null,
       mount: {
        mountpoint: "fake"
       },
       node_ops: {
        readlink: (function() {
         return stream.path;
        })
       }
      };
      ret.parent = ret;
      return ret;
     })
    };
    return node;
   })
  }, {}, "/proc/self/fd");
 }),
 createStandardStreams: (function() {
  if (Module["stdin"]) {
   FS.createDevice("/dev", "stdin", Module["stdin"]);
  } else {
   FS.symlink("/dev/tty", "/dev/stdin");
  }
  if (Module["stdout"]) {
   FS.createDevice("/dev", "stdout", null, Module["stdout"]);
  } else {
   FS.symlink("/dev/tty", "/dev/stdout");
  }
  if (Module["stderr"]) {
   FS.createDevice("/dev", "stderr", null, Module["stderr"]);
  } else {
   FS.symlink("/dev/tty1", "/dev/stderr");
  }
  var stdin = FS.open("/dev/stdin", "r");
  assert(stdin.fd === 0, "invalid handle for stdin (" + stdin.fd + ")");
  var stdout = FS.open("/dev/stdout", "w");
  assert(stdout.fd === 1, "invalid handle for stdout (" + stdout.fd + ")");
  var stderr = FS.open("/dev/stderr", "w");
  assert(stderr.fd === 2, "invalid handle for stderr (" + stderr.fd + ")");
 }),
 ensureErrnoError: (function() {
  if (FS.ErrnoError) return;
  FS.ErrnoError = function ErrnoError(errno, node) {
   this.node = node;
   this.setErrno = (function(errno) {
    this.errno = errno;
    for (var key in ERRNO_CODES) {
     if (ERRNO_CODES[key] === errno) {
      this.code = key;
      break;
     }
    }
   });
   this.setErrno(errno);
   this.message = ERRNO_MESSAGES[errno];
  };
  FS.ErrnoError.prototype = new Error;
  FS.ErrnoError.prototype.constructor = FS.ErrnoError;
  [ ERRNO_CODES.ENOENT ].forEach((function(code) {
   FS.genericErrors[code] = new FS.ErrnoError(code);
   FS.genericErrors[code].stack = "<generic error, no stack>";
  }));
 }),
 staticInit: (function() {
  FS.ensureErrnoError();
  FS.nameTable = new Array(4096);
  FS.mount(MEMFS, {}, "/");
  FS.createDefaultDirectories();
  FS.createDefaultDevices();
  FS.createSpecialDirectories();
  FS.filesystems = {
   "MEMFS": MEMFS,
   "IDBFS": IDBFS,
   "NODEFS": NODEFS,
   "WORKERFS": WORKERFS
  };
 }),
 init: (function(input, output, error) {
  assert(!FS.init.initialized, "FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)");
  FS.init.initialized = true;
  FS.ensureErrnoError();
  Module["stdin"] = input || Module["stdin"];
  Module["stdout"] = output || Module["stdout"];
  Module["stderr"] = error || Module["stderr"];
  FS.createStandardStreams();
 }),
 quit: (function() {
  FS.init.initialized = false;
  var fflush = Module["_fflush"];
  if (fflush) fflush(0);
  for (var i = 0; i < FS.streams.length; i++) {
   var stream = FS.streams[i];
   if (!stream) {
    continue;
   }
   FS.close(stream);
  }
 }),
 getMode: (function(canRead, canWrite) {
  var mode = 0;
  if (canRead) mode |= 292 | 73;
  if (canWrite) mode |= 146;
  return mode;
 }),
 joinPath: (function(parts, forceRelative) {
  var path = PATH.join.apply(null, parts);
  if (forceRelative && path[0] == "/") path = path.substr(1);
  return path;
 }),
 absolutePath: (function(relative, base) {
  return PATH.resolve(base, relative);
 }),
 standardizePath: (function(path) {
  return PATH.normalize(path);
 }),
 findObject: (function(path, dontResolveLastLink) {
  var ret = FS.analyzePath(path, dontResolveLastLink);
  if (ret.exists) {
   return ret.object;
  } else {
   ___setErrNo(ret.error);
   return null;
  }
 }),
 analyzePath: (function(path, dontResolveLastLink) {
  try {
   var lookup = FS.lookupPath(path, {
    follow: !dontResolveLastLink
   });
   path = lookup.path;
  } catch (e) {}
  var ret = {
   isRoot: false,
   exists: false,
   error: 0,
   name: null,
   path: null,
   object: null,
   parentExists: false,
   parentPath: null,
   parentObject: null
  };
  try {
   var lookup = FS.lookupPath(path, {
    parent: true
   });
   ret.parentExists = true;
   ret.parentPath = lookup.path;
   ret.parentObject = lookup.node;
   ret.name = PATH.basename(path);
   lookup = FS.lookupPath(path, {
    follow: !dontResolveLastLink
   });
   ret.exists = true;
   ret.path = lookup.path;
   ret.object = lookup.node;
   ret.name = lookup.node.name;
   ret.isRoot = lookup.path === "/";
  } catch (e) {
   ret.error = e.errno;
  }
  return ret;
 }),
 createFolder: (function(parent, name, canRead, canWrite) {
  var path = PATH.join2(typeof parent === "string" ? parent : FS.getPath(parent), name);
  var mode = FS.getMode(canRead, canWrite);
  return FS.mkdir(path, mode);
 }),
 createPath: (function(parent, path, canRead, canWrite) {
  parent = typeof parent === "string" ? parent : FS.getPath(parent);
  var parts = path.split("/").reverse();
  while (parts.length) {
   var part = parts.pop();
   if (!part) continue;
   var current = PATH.join2(parent, part);
   try {
    FS.mkdir(current);
   } catch (e) {}
   parent = current;
  }
  return current;
 }),
 createFile: (function(parent, name, properties, canRead, canWrite) {
  var path = PATH.join2(typeof parent === "string" ? parent : FS.getPath(parent), name);
  var mode = FS.getMode(canRead, canWrite);
  return FS.create(path, mode);
 }),
 createDataFile: (function(parent, name, data, canRead, canWrite, canOwn) {
  var path = name ? PATH.join2(typeof parent === "string" ? parent : FS.getPath(parent), name) : parent;
  var mode = FS.getMode(canRead, canWrite);
  var node = FS.create(path, mode);
  if (data) {
   if (typeof data === "string") {
    var arr = new Array(data.length);
    for (var i = 0, len = data.length; i < len; ++i) arr[i] = data.charCodeAt(i);
    data = arr;
   }
   FS.chmod(node, mode | 146);
   var stream = FS.open(node, "w");
   FS.write(stream, data, 0, data.length, 0, canOwn);
   FS.close(stream);
   FS.chmod(node, mode);
  }
  return node;
 }),
 createDevice: (function(parent, name, input, output) {
  var path = PATH.join2(typeof parent === "string" ? parent : FS.getPath(parent), name);
  var mode = FS.getMode(!!input, !!output);
  if (!FS.createDevice.major) FS.createDevice.major = 64;
  var dev = FS.makedev(FS.createDevice.major++, 0);
  FS.registerDevice(dev, {
   open: (function(stream) {
    stream.seekable = false;
   }),
   close: (function(stream) {
    if (output && output.buffer && output.buffer.length) {
     output(10);
    }
   }),
   read: (function(stream, buffer, offset, length, pos) {
    var bytesRead = 0;
    for (var i = 0; i < length; i++) {
     var result;
     try {
      result = input();
     } catch (e) {
      throw new FS.ErrnoError(ERRNO_CODES.EIO);
     }
     if (result === undefined && bytesRead === 0) {
      throw new FS.ErrnoError(ERRNO_CODES.EAGAIN);
     }
     if (result === null || result === undefined) break;
     bytesRead++;
     buffer[offset + i] = result;
    }
    if (bytesRead) {
     stream.node.timestamp = Date.now();
    }
    return bytesRead;
   }),
   write: (function(stream, buffer, offset, length, pos) {
    for (var i = 0; i < length; i++) {
     try {
      output(buffer[offset + i]);
     } catch (e) {
      throw new FS.ErrnoError(ERRNO_CODES.EIO);
     }
    }
    if (length) {
     stream.node.timestamp = Date.now();
    }
    return i;
   })
  });
  return FS.mkdev(path, mode, dev);
 }),
 createLink: (function(parent, name, target, canRead, canWrite) {
  var path = PATH.join2(typeof parent === "string" ? parent : FS.getPath(parent), name);
  return FS.symlink(target, path);
 }),
 forceLoadFile: (function(obj) {
  if (obj.isDevice || obj.isFolder || obj.link || obj.contents) return true;
  var success = true;
  if (typeof XMLHttpRequest !== "undefined") {
   throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.");
  } else if (Module["read"]) {
   try {
    obj.contents = intArrayFromString(Module["read"](obj.url), true);
    obj.usedBytes = obj.contents.length;
   } catch (e) {
    success = false;
   }
  } else {
   throw new Error("Cannot load without read() or XMLHttpRequest.");
  }
  if (!success) ___setErrNo(ERRNO_CODES.EIO);
  return success;
 }),
 createLazyFile: (function(parent, name, url, canRead, canWrite) {
  function LazyUint8Array() {
   this.lengthKnown = false;
   this.chunks = [];
  }
  LazyUint8Array.prototype.get = function LazyUint8Array_get(idx) {
   if (idx > this.length - 1 || idx < 0) {
    return undefined;
   }
   var chunkOffset = idx % this.chunkSize;
   var chunkNum = idx / this.chunkSize | 0;
   return this.getter(chunkNum)[chunkOffset];
  };
  LazyUint8Array.prototype.setDataGetter = function LazyUint8Array_setDataGetter(getter) {
   this.getter = getter;
  };
  LazyUint8Array.prototype.cacheLength = function LazyUint8Array_cacheLength() {
   var xhr = new XMLHttpRequest;
   xhr.open("HEAD", url, false);
   xhr.send(null);
   if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error("Couldn't load " + url + ". Status: " + xhr.status);
   var datalength = Number(xhr.getResponseHeader("Content-length"));
   var header;
   var hasByteServing = (header = xhr.getResponseHeader("Accept-Ranges")) && header === "bytes";
   var usesGzip = (header = xhr.getResponseHeader("Content-Encoding")) && header === "gzip";
   var chunkSize = 1024 * 1024;
   if (!hasByteServing) chunkSize = datalength;
   var doXHR = (function(from, to) {
    if (from > to) throw new Error("invalid range (" + from + ", " + to + ") or no bytes requested!");
    if (to > datalength - 1) throw new Error("only " + datalength + " bytes available! programmer error!");
    var xhr = new XMLHttpRequest;
    xhr.open("GET", url, false);
    if (datalength !== chunkSize) xhr.setRequestHeader("Range", "bytes=" + from + "-" + to);
    if (typeof Uint8Array != "undefined") xhr.responseType = "arraybuffer";
    if (xhr.overrideMimeType) {
     xhr.overrideMimeType("text/plain; charset=x-user-defined");
    }
    xhr.send(null);
    if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error("Couldn't load " + url + ". Status: " + xhr.status);
    if (xhr.response !== undefined) {
     return new Uint8Array(xhr.response || []);
    } else {
     return intArrayFromString(xhr.responseText || "", true);
    }
   });
   var lazyArray = this;
   lazyArray.setDataGetter((function(chunkNum) {
    var start = chunkNum * chunkSize;
    var end = (chunkNum + 1) * chunkSize - 1;
    end = Math.min(end, datalength - 1);
    if (typeof lazyArray.chunks[chunkNum] === "undefined") {
     lazyArray.chunks[chunkNum] = doXHR(start, end);
    }
    if (typeof lazyArray.chunks[chunkNum] === "undefined") throw new Error("doXHR failed!");
    return lazyArray.chunks[chunkNum];
   }));
   if (usesGzip || !datalength) {
    chunkSize = datalength = 1;
    datalength = this.getter(0).length;
    chunkSize = datalength;
    console.log("LazyFiles on gzip forces download of the whole file when length is accessed");
   }
   this._length = datalength;
   this._chunkSize = chunkSize;
   this.lengthKnown = true;
  };
  if (typeof XMLHttpRequest !== "undefined") {
   if (!ENVIRONMENT_IS_WORKER) throw "Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";
   var lazyArray = new LazyUint8Array;
   Object.defineProperties(lazyArray, {
    length: {
     get: (function() {
      if (!this.lengthKnown) {
       this.cacheLength();
      }
      return this._length;
     })
    },
    chunkSize: {
     get: (function() {
      if (!this.lengthKnown) {
       this.cacheLength();
      }
      return this._chunkSize;
     })
    }
   });
   var properties = {
    isDevice: false,
    contents: lazyArray
   };
  } else {
   var properties = {
    isDevice: false,
    url: url
   };
  }
  var node = FS.createFile(parent, name, properties, canRead, canWrite);
  if (properties.contents) {
   node.contents = properties.contents;
  } else if (properties.url) {
   node.contents = null;
   node.url = properties.url;
  }
  Object.defineProperties(node, {
   usedBytes: {
    get: (function() {
     return this.contents.length;
    })
   }
  });
  var stream_ops = {};
  var keys = Object.keys(node.stream_ops);
  keys.forEach((function(key) {
   var fn = node.stream_ops[key];
   stream_ops[key] = function forceLoadLazyFile() {
    if (!FS.forceLoadFile(node)) {
     throw new FS.ErrnoError(ERRNO_CODES.EIO);
    }
    return fn.apply(null, arguments);
   };
  }));
  stream_ops.read = function stream_ops_read(stream, buffer, offset, length, position) {
   if (!FS.forceLoadFile(node)) {
    throw new FS.ErrnoError(ERRNO_CODES.EIO);
   }
   var contents = stream.node.contents;
   if (position >= contents.length) return 0;
   var size = Math.min(contents.length - position, length);
   assert(size >= 0);
   if (contents.slice) {
    for (var i = 0; i < size; i++) {
     buffer[offset + i] = contents[position + i];
    }
   } else {
    for (var i = 0; i < size; i++) {
     buffer[offset + i] = contents.get(position + i);
    }
   }
   return size;
  };
  node.stream_ops = stream_ops;
  return node;
 }),
 createPreloadedFile: (function(parent, name, url, canRead, canWrite, onload, onerror, dontCreateFile, canOwn, preFinish) {
  Browser.init();
  var fullname = name ? PATH.resolve(PATH.join2(parent, name)) : parent;
  var dep = getUniqueRunDependency("cp " + fullname);
  function processData(byteArray) {
   function finish(byteArray) {
    if (preFinish) preFinish();
    if (!dontCreateFile) {
     FS.createDataFile(parent, name, byteArray, canRead, canWrite, canOwn);
    }
    if (onload) onload();
    removeRunDependency(dep);
   }
   var handled = false;
   Module["preloadPlugins"].forEach((function(plugin) {
    if (handled) return;
    if (plugin["canHandle"](fullname)) {
     plugin["handle"](byteArray, fullname, finish, (function() {
      if (onerror) onerror();
      removeRunDependency(dep);
     }));
     handled = true;
    }
   }));
   if (!handled) finish(byteArray);
  }
  addRunDependency(dep);
  if (typeof url == "string") {
   Browser.asyncLoad(url, (function(byteArray) {
    processData(byteArray);
   }), onerror);
  } else {
   processData(url);
  }
 }),
 indexedDB: (function() {
  return window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB;
 }),
 DB_NAME: (function() {
  return "EM_FS_" + window.location.pathname;
 }),
 DB_VERSION: 20,
 DB_STORE_NAME: "FILE_DATA",
 saveFilesToDB: (function(paths, onload, onerror) {
  onload = onload || (function() {});
  onerror = onerror || (function() {});
  var indexedDB = FS.indexedDB();
  try {
   var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION);
  } catch (e) {
   return onerror(e);
  }
  openRequest.onupgradeneeded = function openRequest_onupgradeneeded() {
   console.log("creating db");
   var db = openRequest.result;
   db.createObjectStore(FS.DB_STORE_NAME);
  };
  openRequest.onsuccess = function openRequest_onsuccess() {
   var db = openRequest.result;
   var transaction = db.transaction([ FS.DB_STORE_NAME ], "readwrite");
   var files = transaction.objectStore(FS.DB_STORE_NAME);
   var ok = 0, fail = 0, total = paths.length;
   function finish() {
    if (fail == 0) onload(); else onerror();
   }
   paths.forEach((function(path) {
    var putRequest = files.put(FS.analyzePath(path).object.contents, path);
    putRequest.onsuccess = function putRequest_onsuccess() {
     ok++;
     if (ok + fail == total) finish();
    };
    putRequest.onerror = function putRequest_onerror() {
     fail++;
     if (ok + fail == total) finish();
    };
   }));
   transaction.onerror = onerror;
  };
  openRequest.onerror = onerror;
 }),
 loadFilesFromDB: (function(paths, onload, onerror) {
  onload = onload || (function() {});
  onerror = onerror || (function() {});
  var indexedDB = FS.indexedDB();
  try {
   var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION);
  } catch (e) {
   return onerror(e);
  }
  openRequest.onupgradeneeded = onerror;
  openRequest.onsuccess = function openRequest_onsuccess() {
   var db = openRequest.result;
   try {
    var transaction = db.transaction([ FS.DB_STORE_NAME ], "readonly");
   } catch (e) {
    onerror(e);
    return;
   }
   var files = transaction.objectStore(FS.DB_STORE_NAME);
   var ok = 0, fail = 0, total = paths.length;
   function finish() {
    if (fail == 0) onload(); else onerror();
   }
   paths.forEach((function(path) {
    var getRequest = files.get(path);
    getRequest.onsuccess = function getRequest_onsuccess() {
     if (FS.analyzePath(path).exists) {
      FS.unlink(path);
     }
     FS.createDataFile(PATH.dirname(path), PATH.basename(path), getRequest.result, true, true, true);
     ok++;
     if (ok + fail == total) finish();
    };
    getRequest.onerror = function getRequest_onerror() {
     fail++;
     if (ok + fail == total) finish();
    };
   }));
   transaction.onerror = onerror;
  };
  openRequest.onerror = onerror;
 })
};
var SYSCALLS = {
 DEFAULT_POLLMASK: 5,
 mappings: {},
 umask: 511,
 calculateAt: (function(dirfd, path) {
  if (path[0] !== "/") {
   var dir;
   if (dirfd === -100) {
    dir = FS.cwd();
   } else {
    var dirstream = FS.getStream(dirfd);
    if (!dirstream) throw new FS.ErrnoError(ERRNO_CODES.EBADF);
    dir = dirstream.path;
   }
   path = PATH.join2(dir, path);
  }
  return path;
 }),
 doStat: (function(func, path, buf) {
  try {
   var stat = func(path);
  } catch (e) {
   if (e && e.node && PATH.normalize(path) !== PATH.normalize(FS.getPath(e.node))) {
    return -ERRNO_CODES.ENOTDIR;
   }
   throw e;
  }
  HEAP32[buf >> 2] = stat.dev;
  HEAP32[buf + 4 >> 2] = 0;
  HEAP32[buf + 8 >> 2] = stat.ino;
  HEAP32[buf + 12 >> 2] = stat.mode;
  HEAP32[buf + 16 >> 2] = stat.nlink;
  HEAP32[buf + 20 >> 2] = stat.uid;
  HEAP32[buf + 24 >> 2] = stat.gid;
  HEAP32[buf + 28 >> 2] = stat.rdev;
  HEAP32[buf + 32 >> 2] = 0;
  HEAP32[buf + 36 >> 2] = stat.size;
  HEAP32[buf + 40 >> 2] = 4096;
  HEAP32[buf + 44 >> 2] = stat.blocks;
  HEAP32[buf + 48 >> 2] = stat.atime.getTime() / 1e3 | 0;
  HEAP32[buf + 52 >> 2] = 0;
  HEAP32[buf + 56 >> 2] = stat.mtime.getTime() / 1e3 | 0;
  HEAP32[buf + 60 >> 2] = 0;
  HEAP32[buf + 64 >> 2] = stat.ctime.getTime() / 1e3 | 0;
  HEAP32[buf + 68 >> 2] = 0;
  HEAP32[buf + 72 >> 2] = stat.ino;
  return 0;
 }),
 doMsync: (function(addr, stream, len, flags) {
  var buffer = new Uint8Array(HEAPU8.subarray(addr, addr + len));
  FS.msync(stream, buffer, 0, len, flags);
 }),
 doMkdir: (function(path, mode) {
  path = PATH.normalize(path);
  if (path[path.length - 1] === "/") path = path.substr(0, path.length - 1);
  FS.mkdir(path, mode, 0);
  return 0;
 }),
 doMknod: (function(path, mode, dev) {
  switch (mode & 61440) {
  case 32768:
  case 8192:
  case 24576:
  case 4096:
  case 49152:
   break;
  default:
   return -ERRNO_CODES.EINVAL;
  }
  FS.mknod(path, mode, dev);
  return 0;
 }),
 doReadlink: (function(path, buf, bufsize) {
  if (bufsize <= 0) return -ERRNO_CODES.EINVAL;
  var ret = FS.readlink(path);
  ret = ret.slice(0, Math.max(0, bufsize));
  writeStringToMemory(ret, buf, true);
  return ret.length;
 }),
 doAccess: (function(path, amode) {
  if (amode & ~7) {
   return -ERRNO_CODES.EINVAL;
  }
  var node;
  var lookup = FS.lookupPath(path, {
   follow: true
  });
  node = lookup.node;
  var perms = "";
  if (amode & 4) perms += "r";
  if (amode & 2) perms += "w";
  if (amode & 1) perms += "x";
  if (perms && FS.nodePermissions(node, perms)) {
   return -ERRNO_CODES.EACCES;
  }
  return 0;
 }),
 doDup: (function(path, flags, suggestFD) {
  var suggest = FS.getStream(suggestFD);
  if (suggest) FS.close(suggest);
  return FS.open(path, flags, 0, suggestFD, suggestFD).fd;
 }),
 doReadv: (function(stream, iov, iovcnt, offset) {
  var ret = 0;
  for (var i = 0; i < iovcnt; i++) {
   var ptr = HEAP32[iov + i * 8 >> 2];
   var len = HEAP32[iov + (i * 8 + 4) >> 2];
   var curr = FS.read(stream, HEAP8, ptr, len, offset);
   if (curr < 0) return -1;
   ret += curr;
   if (curr < len) break;
  }
  return ret;
 }),
 doWritev: (function(stream, iov, iovcnt, offset) {
  var ret = 0;
  for (var i = 0; i < iovcnt; i++) {
   var ptr = HEAP32[iov + i * 8 >> 2];
   var len = HEAP32[iov + (i * 8 + 4) >> 2];
   var curr = FS.write(stream, HEAP8, ptr, len, offset);
   if (curr < 0) return -1;
   ret += curr;
  }
  return ret;
 }),
 varargs: 0,
 get: (function(varargs) {
  SYSCALLS.varargs += 4;
  var ret = HEAP32[SYSCALLS.varargs - 4 >> 2];
  return ret;
 }),
 getStr: (function() {
  var ret = Pointer_stringify(SYSCALLS.get());
  return ret;
 }),
 getStreamFromFD: (function() {
  var stream = FS.getStream(SYSCALLS.get());
  if (!stream) throw new FS.ErrnoError(ERRNO_CODES.EBADF);
  return stream;
 }),
 getSocketFromFD: (function() {
  var socket = SOCKFS.getSocket(SYSCALLS.get());
  if (!socket) throw new FS.ErrnoError(ERRNO_CODES.EBADF);
  return socket;
 }),
 getSocketAddress: (function(allowNull) {
  var addrp = SYSCALLS.get(), addrlen = SYSCALLS.get();
  if (allowNull && addrp === 0) return null;
  var info = __read_sockaddr(addrp, addrlen);
  if (info.errno) throw new FS.ErrnoError(info.errno);
  info.addr = DNS.lookup_addr(info.addr) || info.addr;
  return info;
 }),
 get64: (function() {
  var low = SYSCALLS.get(), high = SYSCALLS.get();
  if (low >= 0) assert(high === 0); else assert(high === -1);
  return low;
 }),
 getZero: (function() {
  assert(SYSCALLS.get() === 0);
 })
};
function ___syscall54(which, varargs) {
 SYSCALLS.varargs = varargs;
 try {
  var stream = SYSCALLS.getStreamFromFD(), op = SYSCALLS.get();
  switch (op) {
  case 21505:
   {
    if (!stream.tty) return -ERRNO_CODES.ENOTTY;
    return 0;
   }
  case 21506:
   {
    if (!stream.tty) return -ERRNO_CODES.ENOTTY;
    return 0;
   }
  case 21519:
   {
    if (!stream.tty) return -ERRNO_CODES.ENOTTY;
    var argp = SYSCALLS.get();
    HEAP32[argp >> 2] = 0;
    return 0;
   }
  case 21520:
   {
    if (!stream.tty) return -ERRNO_CODES.ENOTTY;
    return -ERRNO_CODES.EINVAL;
   }
  case 21531:
   {
    var argp = SYSCALLS.get();
    return FS.ioctl(stream, op, argp);
   }
  default:
   abort("bad ioctl syscall " + op);
  }
 } catch (e) {
  if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e);
  return -e.errno;
 }
}
Module["_bitshift64Ashr"] = _bitshift64Ashr;
Module["_bitshift64Lshr"] = _bitshift64Lshr;
function ___cxa_pure_virtual() {
 ABORT = true;
 throw "Pure virtual function called!";
}
function _pthread_cleanup_push(routine, arg) {
 __ATEXIT__.push((function() {
  Runtime.dynCall("vi", routine, [ arg ]);
 }));
 _pthread_cleanup_push.level = __ATEXIT__.length;
}
Module["_pthread_cond_broadcast"] = _pthread_cond_broadcast;
var _environ = STATICTOP;
STATICTOP += 16;
function ___buildEnvironment(env) {
 var MAX_ENV_VALUES = 64;
 var TOTAL_ENV_SIZE = 1024;
 var poolPtr;
 var envPtr;
 if (!___buildEnvironment.called) {
  ___buildEnvironment.called = true;
  ENV["USER"] = ENV["LOGNAME"] = "web_user";
  ENV["PATH"] = "/";
  ENV["PWD"] = "/";
  ENV["HOME"] = "/home/web_user";
  ENV["LANG"] = "C";
  ENV["_"] = Module["thisProgram"];
  poolPtr = allocate(TOTAL_ENV_SIZE, "i8", ALLOC_STATIC);
  envPtr = allocate(MAX_ENV_VALUES * 4, "i8*", ALLOC_STATIC);
  HEAP32[envPtr >> 2] = poolPtr;
  HEAP32[_environ >> 2] = envPtr;
 } else {
  envPtr = HEAP32[_environ >> 2];
  poolPtr = HEAP32[envPtr >> 2];
 }
 var strings = [];
 var totalSize = 0;
 for (var key in env) {
  if (typeof env[key] === "string") {
   var line = key + "=" + env[key];
   strings.push(line);
   totalSize += line.length;
  }
 }
 if (totalSize > TOTAL_ENV_SIZE) {
  throw new Error("Environment size exceeded TOTAL_ENV_SIZE!");
 }
 var ptrSize = 4;
 for (var i = 0; i < strings.length; i++) {
  var line = strings[i];
  writeAsciiToMemory(line, poolPtr);
  HEAP32[envPtr + i * ptrSize >> 2] = poolPtr;
  poolPtr += line.length + 1;
 }
 HEAP32[envPtr + strings.length * ptrSize >> 2] = 0;
}
var ENV = {};
function _getenv(name) {
 if (name === 0) return 0;
 name = Pointer_stringify(name);
 if (!ENV.hasOwnProperty(name)) return 0;
 if (_getenv.ret) _free(_getenv.ret);
 _getenv.ret = allocate(intArrayFromString(ENV[name]), "i8", ALLOC_NORMAL);
 return _getenv.ret;
}
function __isLeapYear(year) {
 return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);
}
function __arraySum(array, index) {
 var sum = 0;
 for (var i = 0; i <= index; sum += array[i++]) ;
 return sum;
}
var __MONTH_DAYS_LEAP = [ 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 ];
var __MONTH_DAYS_REGULAR = [ 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 ];
function __addDays(date, days) {
 var newDate = new Date(date.getTime());
 while (days > 0) {
  var leap = __isLeapYear(newDate.getFullYear());
  var currentMonth = newDate.getMonth();
  var daysInCurrentMonth = (leap ? __MONTH_DAYS_LEAP : __MONTH_DAYS_REGULAR)[currentMonth];
  if (days > daysInCurrentMonth - newDate.getDate()) {
   days -= daysInCurrentMonth - newDate.getDate() + 1;
   newDate.setDate(1);
   if (currentMonth < 11) {
    newDate.setMonth(currentMonth + 1);
   } else {
    newDate.setMonth(0);
    newDate.setFullYear(newDate.getFullYear() + 1);
   }
  } else {
   newDate.setDate(newDate.getDate() + days);
   return newDate;
  }
 }
 return newDate;
}
function _strftime(s, maxsize, format, tm) {
 var tm_zone = HEAP32[tm + 40 >> 2];
 var date = {
  tm_sec: HEAP32[tm >> 2],
  tm_min: HEAP32[tm + 4 >> 2],
  tm_hour: HEAP32[tm + 8 >> 2],
  tm_mday: HEAP32[tm + 12 >> 2],
  tm_mon: HEAP32[tm + 16 >> 2],
  tm_year: HEAP32[tm + 20 >> 2],
  tm_wday: HEAP32[tm + 24 >> 2],
  tm_yday: HEAP32[tm + 28 >> 2],
  tm_isdst: HEAP32[tm + 32 >> 2],
  tm_gmtoff: HEAP32[tm + 36 >> 2],
  tm_zone: tm_zone ? Pointer_stringify(tm_zone) : ""
 };
 var pattern = Pointer_stringify(format);
 var EXPANSION_RULES_1 = {
  "%c": "%a %b %d %H:%M:%S %Y",
  "%D": "%m/%d/%y",
  "%F": "%Y-%m-%d",
  "%h": "%b",
  "%r": "%I:%M:%S %p",
  "%R": "%H:%M",
  "%T": "%H:%M:%S",
  "%x": "%m/%d/%y",
  "%X": "%H:%M:%S"
 };
 for (var rule in EXPANSION_RULES_1) {
  pattern = pattern.replace(new RegExp(rule, "g"), EXPANSION_RULES_1[rule]);
 }
 var WEEKDAYS = [ "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" ];
 var MONTHS = [ "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" ];
 function leadingSomething(value, digits, character) {
  var str = typeof value === "number" ? value.toString() : value || "";
  while (str.length < digits) {
   str = character[0] + str;
  }
  return str;
 }
 function leadingNulls(value, digits) {
  return leadingSomething(value, digits, "0");
 }
 function compareByDay(date1, date2) {
  function sgn(value) {
   return value < 0 ? -1 : value > 0 ? 1 : 0;
  }
  var compare;
  if ((compare = sgn(date1.getFullYear() - date2.getFullYear())) === 0) {
   if ((compare = sgn(date1.getMonth() - date2.getMonth())) === 0) {
    compare = sgn(date1.getDate() - date2.getDate());
   }
  }
  return compare;
 }
 function getFirstWeekStartDate(janFourth) {
  switch (janFourth.getDay()) {
  case 0:
   return new Date(janFourth.getFullYear() - 1, 11, 29);
  case 1:
   return janFourth;
  case 2:
   return new Date(janFourth.getFullYear(), 0, 3);
  case 3:
   return new Date(janFourth.getFullYear(), 0, 2);
  case 4:
   return new Date(janFourth.getFullYear(), 0, 1);
  case 5:
   return new Date(janFourth.getFullYear() - 1, 11, 31);
  case 6:
   return new Date(janFourth.getFullYear() - 1, 11, 30);
  }
 }
 function getWeekBasedYear(date) {
  var thisDate = __addDays(new Date(date.tm_year + 1900, 0, 1), date.tm_yday);
  var janFourthThisYear = new Date(thisDate.getFullYear(), 0, 4);
  var janFourthNextYear = new Date(thisDate.getFullYear() + 1, 0, 4);
  var firstWeekStartThisYear = getFirstWeekStartDate(janFourthThisYear);
  var firstWeekStartNextYear = getFirstWeekStartDate(janFourthNextYear);
  if (compareByDay(firstWeekStartThisYear, thisDate) <= 0) {
   if (compareByDay(firstWeekStartNextYear, thisDate) <= 0) {
    return thisDate.getFullYear() + 1;
   } else {
    return thisDate.getFullYear();
   }
  } else {
   return thisDate.getFullYear() - 1;
  }
 }
 var EXPANSION_RULES_2 = {
  "%a": (function(date) {
   return WEEKDAYS[date.tm_wday].substring(0, 3);
  }),
  "%A": (function(date) {
   return WEEKDAYS[date.tm_wday];
  }),
  "%b": (function(date) {
   return MONTHS[date.tm_mon].substring(0, 3);
  }),
  "%B": (function(date) {
   return MONTHS[date.tm_mon];
  }),
  "%C": (function(date) {
   var year = date.tm_year + 1900;
   return leadingNulls(year / 100 | 0, 2);
  }),
  "%d": (function(date) {
   return leadingNulls(date.tm_mday, 2);
  }),
  "%e": (function(date) {
   return leadingSomething(date.tm_mday, 2, " ");
  }),
  "%g": (function(date) {
   return getWeekBasedYear(date).toString().substring(2);
  }),
  "%G": (function(date) {
   return getWeekBasedYear(date);
  }),
  "%H": (function(date) {
   return leadingNulls(date.tm_hour, 2);
  }),
  "%I": (function(date) {
   var twelveHour = date.tm_hour;
   if (twelveHour == 0) twelveHour = 12; else if (twelveHour > 12) twelveHour -= 12;
   return leadingNulls(twelveHour, 2);
  }),
  "%j": (function(date) {
   return leadingNulls(date.tm_mday + __arraySum(__isLeapYear(date.tm_year + 1900) ? __MONTH_DAYS_LEAP : __MONTH_DAYS_REGULAR, date.tm_mon - 1), 3);
  }),
  "%m": (function(date) {
   return leadingNulls(date.tm_mon + 1, 2);
  }),
  "%M": (function(date) {
   return leadingNulls(date.tm_min, 2);
  }),
  "%n": (function() {
   return "\n";
  }),
  "%p": (function(date) {
   if (date.tm_hour >= 0 && date.tm_hour < 12) {
    return "AM";
   } else {
    return "PM";
   }
  }),
  "%S": (function(date) {
   return leadingNulls(date.tm_sec, 2);
  }),
  "%t": (function() {
   return "\t";
  }),
  "%u": (function(date) {
   var day = new Date(date.tm_year + 1900, date.tm_mon + 1, date.tm_mday, 0, 0, 0, 0);
   return day.getDay() || 7;
  }),
  "%U": (function(date) {
   var janFirst = new Date(date.tm_year + 1900, 0, 1);
   var firstSunday = janFirst.getDay() === 0 ? janFirst : __addDays(janFirst, 7 - janFirst.getDay());
   var endDate = new Date(date.tm_year + 1900, date.tm_mon, date.tm_mday);
   if (compareByDay(firstSunday, endDate) < 0) {
    var februaryFirstUntilEndMonth = __arraySum(__isLeapYear(endDate.getFullYear()) ? __MONTH_DAYS_LEAP : __MONTH_DAYS_REGULAR, endDate.getMonth() - 1) - 31;
    var firstSundayUntilEndJanuary = 31 - firstSunday.getDate();
    var days = firstSundayUntilEndJanuary + februaryFirstUntilEndMonth + endDate.getDate();
    return leadingNulls(Math.ceil(days / 7), 2);
   }
   return compareByDay(firstSunday, janFirst) === 0 ? "01" : "00";
  }),
  "%V": (function(date) {
   var janFourthThisYear = new Date(date.tm_year + 1900, 0, 4);
   var janFourthNextYear = new Date(date.tm_year + 1901, 0, 4);
   var firstWeekStartThisYear = getFirstWeekStartDate(janFourthThisYear);
   var firstWeekStartNextYear = getFirstWeekStartDate(janFourthNextYear);
   var endDate = __addDays(new Date(date.tm_year + 1900, 0, 1), date.tm_yday);
   if (compareByDay(endDate, firstWeekStartThisYear) < 0) {
    return "53";
   }
   if (compareByDay(firstWeekStartNextYear, endDate) <= 0) {
    return "01";
   }
   var daysDifference;
   if (firstWeekStartThisYear.getFullYear() < date.tm_year + 1900) {
    daysDifference = date.tm_yday + 32 - firstWeekStartThisYear.getDate();
   } else {
    daysDifference = date.tm_yday + 1 - firstWeekStartThisYear.getDate();
   }
   return leadingNulls(Math.ceil(daysDifference / 7), 2);
  }),
  "%w": (function(date) {
   var day = new Date(date.tm_year + 1900, date.tm_mon + 1, date.tm_mday, 0, 0, 0, 0);
   return day.getDay();
  }),
  "%W": (function(date) {
   var janFirst = new Date(date.tm_year, 0, 1);
   var firstMonday = janFirst.getDay() === 1 ? janFirst : __addDays(janFirst, janFirst.getDay() === 0 ? 1 : 7 - janFirst.getDay() + 1);
   var endDate = new Date(date.tm_year + 1900, date.tm_mon, date.tm_mday);
   if (compareByDay(firstMonday, endDate) < 0) {
    var februaryFirstUntilEndMonth = __arraySum(__isLeapYear(endDate.getFullYear()) ? __MONTH_DAYS_LEAP : __MONTH_DAYS_REGULAR, endDate.getMonth() - 1) - 31;
    var firstMondayUntilEndJanuary = 31 - firstMonday.getDate();
    var days = firstMondayUntilEndJanuary + februaryFirstUntilEndMonth + endDate.getDate();
    return leadingNulls(Math.ceil(days / 7), 2);
   }
   return compareByDay(firstMonday, janFirst) === 0 ? "01" : "00";
  }),
  "%y": (function(date) {
   return (date.tm_year + 1900).toString().substring(2);
  }),
  "%Y": (function(date) {
   return date.tm_year + 1900;
  }),
  "%z": (function(date) {
   var off = date.tm_gmtoff;
   var ahead = off >= 0;
   off = Math.abs(off) / 60;
   off = off / 60 * 100 + off % 60;
   return (ahead ? "+" : "-") + String("0000" + off).slice(-4);
  }),
  "%Z": (function(date) {
   return date.tm_zone;
  }),
  "%%": (function() {
   return "%";
  })
 };
 for (var rule in EXPANSION_RULES_2) {
  if (pattern.indexOf(rule) >= 0) {
   pattern = pattern.replace(new RegExp(rule, "g"), EXPANSION_RULES_2[rule](date));
  }
 }
 var bytes = intArrayFromString(pattern, false);
 if (bytes.length > maxsize) {
  return 0;
 }
 writeArrayToMemory(bytes, s);
 return bytes.length - 1;
}
function _strftime_l(s, maxsize, format, tm) {
 return _strftime(s, maxsize, format, tm);
}
function _pthread_cleanup_pop() {
 assert(_pthread_cleanup_push.level == __ATEXIT__.length, "cannot pop if something else added meanwhile!");
 __ATEXIT__.pop();
 _pthread_cleanup_push.level = __ATEXIT__.length;
}
function _pthread_join() {}
Module["___remdi3"] = ___remdi3;
function ___syscall6(which, varargs) {
 SYSCALLS.varargs = varargs;
 try {
  var stream = SYSCALLS.getStreamFromFD();
  FS.close(stream);
  return 0;
 } catch (e) {
  if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e);
  return -e.errno;
 }
}
Module["___udivdi3"] = ___udivdi3;
Module["___muldsi3"] = ___muldsi3;
Module["___muldi3"] = ___muldi3;
function _sbrk(bytes) {
 var self = _sbrk;
 if (!self.called) {
  DYNAMICTOP = alignMemoryPage(DYNAMICTOP);
  self.called = true;
  assert(Runtime.dynamicAlloc);
  self.alloc = Runtime.dynamicAlloc;
  Runtime.dynamicAlloc = (function() {
   abort("cannot dynamically allocate, sbrk now has control");
  });
 }
 var ret = DYNAMICTOP;
 if (bytes != 0) {
  var success = self.alloc(bytes);
  if (!success) return -1 >>> 0;
 }
 return ret;
}
Module["_bitshift64Shl"] = _bitshift64Shl;
function ___cxa_begin_catch(ptr) {
 __ZSt18uncaught_exceptionv.uncaught_exception--;
 EXCEPTIONS.caught.push(ptr);
 EXCEPTIONS.addRef(EXCEPTIONS.deAdjust(ptr));
 return ptr;
}
function ___gxx_personality_v0() {}
Module["___uremdi3"] = ___uremdi3;
function _pthread_cond_wait() {
 return 0;
}
var _llvm_fabs_f32 = Math_abs;
Module["_pthread_mutex_unlock"] = _pthread_mutex_unlock;
Module["_pthread_self"] = _pthread_self;
function ___syscall140(which, varargs) {
 SYSCALLS.varargs = varargs;
 try {
  var stream = SYSCALLS.getStreamFromFD(), offset_high = SYSCALLS.get(), offset_low = SYSCALLS.get(), result = SYSCALLS.get(), whence = SYSCALLS.get();
  var offset = offset_low;
  assert(offset_high === 0);
  FS.llseek(stream, offset, whence);
  HEAP32[result >> 2] = stream.position;
  if (stream.getdents && offset === 0 && whence === 0) stream.getdents = null;
  return 0;
 } catch (e) {
  if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e);
  return -e.errno;
 }
}
function ___syscall146(which, varargs) {
 SYSCALLS.varargs = varargs;
 try {
  var stream = SYSCALLS.getStreamFromFD(), iov = SYSCALLS.get(), iovcnt = SYSCALLS.get();
  return SYSCALLS.doWritev(stream, iov, iovcnt);
 } catch (e) {
  if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e);
  return -e.errno;
 }
}
function ___syscall145(which, varargs) {
 SYSCALLS.varargs = varargs;
 try {
  var stream = SYSCALLS.getStreamFromFD(), iov = SYSCALLS.get(), iovcnt = SYSCALLS.get();
  return SYSCALLS.doReadv(stream, iov, iovcnt);
 } catch (e) {
  if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e);
  return -e.errno;
 }
}
var ___dso_handle = STATICTOP;
STATICTOP += 16;
if (ENVIRONMENT_IS_NODE) {
 _emscripten_get_now = function _emscripten_get_now_actual() {
  var t = process["hrtime"]();
  return t[0] * 1e3 + t[1] / 1e6;
 };
} else if (typeof dateNow !== "undefined") {
 _emscripten_get_now = dateNow;
} else if (typeof self === "object" && self["performance"] && typeof self["performance"]["now"] === "function") {
 _emscripten_get_now = (function() {
  return self["performance"]["now"]();
 });
} else if (typeof performance === "object" && typeof performance["now"] === "function") {
 _emscripten_get_now = (function() {
  return performance["now"]();
 });
} else {
 _emscripten_get_now = Date.now;
}
FS.staticInit();
__ATINIT__.unshift((function() {
 if (!Module["noFSInit"] && !FS.init.initialized) FS.init();
}));
__ATMAIN__.push((function() {
 FS.ignorePermissions = false;
}));
__ATEXIT__.push((function() {
 FS.quit();
}));
Module["FS_createFolder"] = FS.createFolder;
Module["FS_createPath"] = FS.createPath;
Module["FS_createDataFile"] = FS.createDataFile;
Module["FS_createPreloadedFile"] = FS.createPreloadedFile;
Module["FS_createLazyFile"] = FS.createLazyFile;
Module["FS_createLink"] = FS.createLink;
Module["FS_createDevice"] = FS.createDevice;
Module["FS_unlink"] = FS.unlink;
__ATINIT__.unshift((function() {
 TTY.init();
}));
__ATEXIT__.push((function() {
 TTY.shutdown();
}));
if (ENVIRONMENT_IS_NODE) {
 var fs = require("fs");
 var NODEJS_PATH = require("path");
 NODEFS.staticInit();
}
___buildEnvironment(ENV);
STACK_BASE = STACKTOP = Runtime.alignMemory(STATICTOP);
staticSealed = true;
STACK_MAX = STACK_BASE + TOTAL_STACK;
DYNAMIC_BASE = DYNAMICTOP = Runtime.alignMemory(STACK_MAX);
function invoke_iiiiiiii(index, a1, a2, a3, a4, a5, a6, a7) {
 try {
  return Module["dynCall_iiiiiiii"](index, a1, a2, a3, a4, a5, a6, a7);
 } catch (e) {
  if (typeof e !== "number" && e !== "longjmp") throw e;
  asm["setThrew"](1, 0);
 }
}
function invoke_iiii(index, a1, a2, a3) {
 try {
  return Module["dynCall_iiii"](index, a1, a2, a3);
 } catch (e) {
  if (typeof e !== "number" && e !== "longjmp") throw e;
  asm["setThrew"](1, 0);
 }
}
function invoke_viiiii(index, a1, a2, a3, a4, a5) {
 try {
  Module["dynCall_viiiii"](index, a1, a2, a3, a4, a5);
 } catch (e) {
  if (typeof e !== "number" && e !== "longjmp") throw e;
  asm["setThrew"](1, 0);
 }
}
function invoke_iiiiiid(index, a1, a2, a3, a4, a5, a6) {
 try {
  return Module["dynCall_iiiiiid"](index, a1, a2, a3, a4, a5, a6);
 } catch (e) {
  if (typeof e !== "number" && e !== "longjmp") throw e;
  asm["setThrew"](1, 0);
 }
}
function invoke_vi(index, a1) {
 try {
  Module["dynCall_vi"](index, a1);
 } catch (e) {
  if (typeof e !== "number" && e !== "longjmp") throw e;
  asm["setThrew"](1, 0);
 }
}
function invoke_vii(index, a1, a2) {
 try {
  Module["dynCall_vii"](index, a1, a2);
 } catch (e) {
  if (typeof e !== "number" && e !== "longjmp") throw e;
  asm["setThrew"](1, 0);
 }
}
function invoke_iiiiiii(index, a1, a2, a3, a4, a5, a6) {
 try {
  return Module["dynCall_iiiiiii"](index, a1, a2, a3, a4, a5, a6);
 } catch (e) {
  if (typeof e !== "number" && e !== "longjmp") throw e;
  asm["setThrew"](1, 0);
 }
}
function invoke_iiiiid(index, a1, a2, a3, a4, a5) {
 try {
  return Module["dynCall_iiiiid"](index, a1, a2, a3, a4, a5);
 } catch (e) {
  if (typeof e !== "number" && e !== "longjmp") throw e;
  asm["setThrew"](1, 0);
 }
}
function invoke_ii(index, a1) {
 try {
  return Module["dynCall_ii"](index, a1);
 } catch (e) {
  if (typeof e !== "number" && e !== "longjmp") throw e;
  asm["setThrew"](1, 0);
 }
}
function invoke_viii(index, a1, a2, a3) {
 try {
  Module["dynCall_viii"](index, a1, a2, a3);
 } catch (e) {
  if (typeof e !== "number" && e !== "longjmp") throw e;
  asm["setThrew"](1, 0);
 }
}
function invoke_v(index) {
 try {
  Module["dynCall_v"](index);
 } catch (e) {
  if (typeof e !== "number" && e !== "longjmp") throw e;
  asm["setThrew"](1, 0);
 }
}
function invoke_iiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8) {
 try {
  return Module["dynCall_iiiiiiiii"](index, a1, a2, a3, a4, a5, a6, a7, a8);
 } catch (e) {
  if (typeof e !== "number" && e !== "longjmp") throw e;
  asm["setThrew"](1, 0);
 }
}
function invoke_iiiii(index, a1, a2, a3, a4) {
 try {
  return Module["dynCall_iiiii"](index, a1, a2, a3, a4);
 } catch (e) {
  if (typeof e !== "number" && e !== "longjmp") throw e;
  asm["setThrew"](1, 0);
 }
}
function invoke_viiiiii(index, a1, a2, a3, a4, a5, a6) {
 try {
  Module["dynCall_viiiiii"](index, a1, a2, a3, a4, a5, a6);
 } catch (e) {
  if (typeof e !== "number" && e !== "longjmp") throw e;
  asm["setThrew"](1, 0);
 }
}
function invoke_iii(index, a1, a2) {
 try {
  return Module["dynCall_iii"](index, a1, a2);
 } catch (e) {
  if (typeof e !== "number" && e !== "longjmp") throw e;
  asm["setThrew"](1, 0);
 }
}
function invoke_iiiiii(index, a1, a2, a3, a4, a5) {
 try {
  return Module["dynCall_iiiiii"](index, a1, a2, a3, a4, a5);
 } catch (e) {
  if (typeof e !== "number" && e !== "longjmp") throw e;
  asm["setThrew"](1, 0);
 }
}
function invoke_viiii(index, a1, a2, a3, a4) {
 try {
  Module["dynCall_viiii"](index, a1, a2, a3, a4);
 } catch (e) {
  if (typeof e !== "number" && e !== "longjmp") throw e;
  asm["setThrew"](1, 0);
 }
}
Module.asmGlobalArg = {
 "Math": Math,
 "Int8Array": Int8Array,
 "Int16Array": Int16Array,
 "Int32Array": Int32Array,
 "Uint8Array": Uint8Array,
 "Uint16Array": Uint16Array,
 "Uint32Array": Uint32Array,
 "Float32Array": Float32Array,
 "Float64Array": Float64Array,
 "NaN": NaN,
 "Infinity": Infinity,
 "byteLength": byteLength
};
Module.asmLibraryArg = {
 "abort": abort,
 "assert": assert,
 "invoke_iiiiiiii": invoke_iiiiiiii,
 "invoke_iiii": invoke_iiii,
 "invoke_viiiii": invoke_viiiii,
 "invoke_iiiiiid": invoke_iiiiiid,
 "invoke_vi": invoke_vi,
 "invoke_vii": invoke_vii,
 "invoke_iiiiiii": invoke_iiiiiii,
 "invoke_iiiiid": invoke_iiiiid,
 "invoke_ii": invoke_ii,
 "invoke_viii": invoke_viii,
 "invoke_v": invoke_v,
 "invoke_iiiiiiiii": invoke_iiiiiiiii,
 "invoke_iiiii": invoke_iiiii,
 "invoke_viiiiii": invoke_viiiiii,
 "invoke_iii": invoke_iii,
 "invoke_iiiiii": invoke_iiiiii,
 "invoke_viiii": invoke_viiii,
 "_pthread_cleanup_pop": _pthread_cleanup_pop,
 "_pthread_getspecific": _pthread_getspecific,
 "_pthread_cond_wait": _pthread_cond_wait,
 "_pthread_join": _pthread_join,
 "_pthread_key_create": _pthread_key_create,
 "_abort": _abort,
 "_llvm_fabs_f64": _llvm_fabs_f64,
 "___gxx_personality_v0": ___gxx_personality_v0,
 "___assert_fail": ___assert_fail,
 "___cxa_allocate_exception": ___cxa_allocate_exception,
 "_emscripten_get_now_is_monotonic": _emscripten_get_now_is_monotonic,
 "___buildEnvironment": ___buildEnvironment,
 "_pthread_create": _pthread_create,
 "__addDays": __addDays,
 "_strftime_l": _strftime_l,
 "___setErrNo": ___setErrNo,
 "_sbrk": _sbrk,
 "_pthread_key_delete": _pthread_key_delete,
 "___cxa_begin_catch": ___cxa_begin_catch,
 "_emscripten_memcpy_big": _emscripten_memcpy_big,
 "___resumeException": ___resumeException,
 "__ZSt18uncaught_exceptionv": __ZSt18uncaught_exceptionv,
 "_sysconf": _sysconf,
 "_strftime": _strftime,
 "__arraySum": __arraySum,
 "_pthread_cond_signal": _pthread_cond_signal,
 "_llvm_fabs_f32": _llvm_fabs_f32,
 "_pthread_mutex_destroy": _pthread_mutex_destroy,
 "_pthread_once": _pthread_once,
 "_getenv": _getenv,
 "_clock_gettime": _clock_gettime,
 "___syscall54": ___syscall54,
 "___unlock": ___unlock,
 "__isLeapYear": __isLeapYear,
 "_emscripten_get_now": _emscripten_get_now,
 "_pthread_setspecific": _pthread_setspecific,
 "___cxa_atexit": ___cxa_atexit,
 "___cxa_throw": ___cxa_throw,
 "___lock": ___lock,
 "___syscall6": ___syscall6,
 "_pthread_cleanup_push": _pthread_cleanup_push,
 "___cxa_pure_virtual": ___cxa_pure_virtual,
 "_pthread_cond_destroy": _pthread_cond_destroy,
 "_atexit": _atexit,
 "___syscall140": ___syscall140,
 "___cxa_find_matching_catch": ___cxa_find_matching_catch,
 "___syscall145": ___syscall145,
 "___syscall146": ___syscall146,
 "STACKTOP": STACKTOP,
 "STACK_MAX": STACK_MAX,
 "tempDoublePtr": tempDoublePtr,
 "ABORT": ABORT,
 "cttz_i8": cttz_i8,
 "___dso_handle": ___dso_handle
};
// EMSCRIPTEN_START_ASM

var asm = (function(global,env,buffer) {

  'almost asm';
  
  
  var Int8View = global.Int8Array;
  var Int16View = global.Int16Array;
  var Int32View = global.Int32Array;
  var Uint8View = global.Uint8Array;
  var Uint16View = global.Uint16Array;
  var Uint32View = global.Uint32Array;
  var Float32View = global.Float32Array;
  var Float64View = global.Float64Array;
  var HEAP8 = new Int8View(buffer);
  var HEAP16 = new Int16View(buffer);
  var HEAP32 = new Int32View(buffer);
  var HEAPU8 = new Uint8View(buffer);
  var HEAPU16 = new Uint16View(buffer);
  var HEAPU32 = new Uint32View(buffer);
  var HEAPF32 = new Float32View(buffer);
  var HEAPF64 = new Float64View(buffer);
  var byteLength = global.byteLength;


  var STACKTOP=env.STACKTOP|0;
  var STACK_MAX=env.STACK_MAX|0;
  var tempDoublePtr=env.tempDoublePtr|0;
  var ABORT=env.ABORT|0;
  var cttz_i8=env.cttz_i8|0;
  var ___dso_handle=env.___dso_handle|0;

  var __THREW__ = 0;
  var threwValue = 0;
  var setjmpId = 0;
  var undef = 0;
  var nan = global.NaN, inf = global.Infinity;
  var tempInt = 0, tempBigInt = 0, tempBigIntP = 0, tempBigIntS = 0, tempBigIntR = 0.0, tempBigIntI = 0, tempBigIntD = 0, tempValue = 0, tempDouble = 0.0;
  var tempRet0 = 0;

  var Math_floor=global.Math.floor;
  var Math_abs=global.Math.abs;
  var Math_sqrt=global.Math.sqrt;
  var Math_pow=global.Math.pow;
  var Math_cos=global.Math.cos;
  var Math_sin=global.Math.sin;
  var Math_tan=global.Math.tan;
  var Math_acos=global.Math.acos;
  var Math_asin=global.Math.asin;
  var Math_atan=global.Math.atan;
  var Math_atan2=global.Math.atan2;
  var Math_exp=global.Math.exp;
  var Math_log=global.Math.log;
  var Math_ceil=global.Math.ceil;
  var Math_imul=global.Math.imul;
  var Math_min=global.Math.min;
  var Math_clz32=global.Math.clz32;
  var abort=env.abort;
  var assert=env.assert;
  var invoke_iiiiiiii=env.invoke_iiiiiiii;
  var invoke_iiii=env.invoke_iiii;
  var invoke_viiiii=env.invoke_viiiii;
  var invoke_iiiiiid=env.invoke_iiiiiid;
  var invoke_vi=env.invoke_vi;
  var invoke_vii=env.invoke_vii;
  var invoke_iiiiiii=env.invoke_iiiiiii;
  var invoke_iiiiid=env.invoke_iiiiid;
  var invoke_ii=env.invoke_ii;
  var invoke_viii=env.invoke_viii;
  var invoke_v=env.invoke_v;
  var invoke_iiiiiiiii=env.invoke_iiiiiiiii;
  var invoke_iiiii=env.invoke_iiiii;
  var invoke_viiiiii=env.invoke_viiiiii;
  var invoke_iii=env.invoke_iii;
  var invoke_iiiiii=env.invoke_iiiiii;
  var invoke_viiii=env.invoke_viiii;
  var _pthread_cleanup_pop=env._pthread_cleanup_pop;
  var _pthread_getspecific=env._pthread_getspecific;
  var _pthread_cond_wait=env._pthread_cond_wait;
  var _pthread_join=env._pthread_join;
  var _pthread_key_create=env._pthread_key_create;
  var _abort=env._abort;
  var _llvm_fabs_f64=env._llvm_fabs_f64;
  var ___gxx_personality_v0=env.___gxx_personality_v0;
  var ___assert_fail=env.___assert_fail;
  var ___cxa_allocate_exception=env.___cxa_allocate_exception;
  var _emscripten_get_now_is_monotonic=env._emscripten_get_now_is_monotonic;
  var ___buildEnvironment=env.___buildEnvironment;
  var _pthread_create=env._pthread_create;
  var __addDays=env.__addDays;
  var _strftime_l=env._strftime_l;
  var ___setErrNo=env.___setErrNo;
  var _sbrk=env._sbrk;
  var _pthread_key_delete=env._pthread_key_delete;
  var ___cxa_begin_catch=env.___cxa_begin_catch;
  var _emscripten_memcpy_big=env._emscripten_memcpy_big;
  var ___resumeException=env.___resumeException;
  var __ZSt18uncaught_exceptionv=env.__ZSt18uncaught_exceptionv;
  var _sysconf=env._sysconf;
  var _strftime=env._strftime;
  var __arraySum=env.__arraySum;
  var _pthread_cond_signal=env._pthread_cond_signal;
  var _llvm_fabs_f32=env._llvm_fabs_f32;
  var _pthread_mutex_destroy=env._pthread_mutex_destroy;
  var _pthread_once=env._pthread_once;
  var _getenv=env._getenv;
  var _clock_gettime=env._clock_gettime;
  var ___syscall54=env.___syscall54;
  var ___unlock=env.___unlock;
  var __isLeapYear=env.__isLeapYear;
  var _emscripten_get_now=env._emscripten_get_now;
  var _pthread_setspecific=env._pthread_setspecific;
  var ___cxa_atexit=env.___cxa_atexit;
  var ___cxa_throw=env.___cxa_throw;
  var ___lock=env.___lock;
  var ___syscall6=env.___syscall6;
  var _pthread_cleanup_push=env._pthread_cleanup_push;
  var ___cxa_pure_virtual=env.___cxa_pure_virtual;
  var _pthread_cond_destroy=env._pthread_cond_destroy;
  var _atexit=env._atexit;
  var ___syscall140=env.___syscall140;
  var ___cxa_find_matching_catch=env.___cxa_find_matching_catch;
  var ___syscall145=env.___syscall145;
  var ___syscall146=env.___syscall146;
  var tempFloat = 0.0;

function _emscripten_replace_memory(newBuffer) {
  if ((byteLength(newBuffer) & 0xffffff || byteLength(newBuffer) <= 0xffffff) || byteLength(newBuffer) > 0x80000000) return false;
  HEAP8 = new Int8View(newBuffer);
  HEAP16 = new Int16View(newBuffer);
  HEAP32 = new Int32View(newBuffer);
  HEAPU8 = new Uint8View(newBuffer);
  HEAPU16 = new Uint16View(newBuffer);
  HEAPU32 = new Uint32View(newBuffer);
  HEAPF32 = new Float32View(newBuffer);
  HEAPF64 = new Float64View(newBuffer);
  buffer = newBuffer;
  return true;
}

// EMSCRIPTEN_START_FUNCS

function __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_(i73, i72, i74) {
 i73 = i73 | 0;
 i72 = i72 | 0;
 i74 = i74 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, i18 = 0, i19 = 0, i20 = 0, i21 = 0, i22 = 0, i23 = 0, i24 = 0, i25 = 0, i26 = 0, i27 = 0, i28 = 0, i29 = 0, i30 = 0, i31 = 0, i32 = 0, i33 = 0, i34 = 0, i35 = 0, i36 = 0, i37 = 0, i38 = 0, i39 = 0, i40 = 0, i41 = 0, i42 = 0, i43 = 0, i44 = 0, i45 = 0, i46 = 0, i47 = 0, i48 = 0, i49 = 0, i50 = 0, i51 = 0, i52 = 0, i53 = 0, i54 = 0, i55 = 0, i56 = 0, i57 = 0, i58 = 0, i59 = 0, i60 = 0, i61 = 0, i62 = 0, i63 = 0, i64 = 0, i65 = 0, i66 = 0, i67 = 0, i68 = 0, i69 = 0, i70 = 0, i71 = 0, i75 = 0, i76 = 0;
 i76 = STACKTOP;
 STACKTOP = STACKTOP + 736 | 0;
 i75 = i76 + 704 | 0;
 i71 = i76 + 680 | 0;
 i59 = i76 + 668 | 0;
 i50 = i76 + 656 | 0;
 i53 = i76 + 632 | 0;
 i63 = i76 + 608 | 0;
 i66 = i76 + 584 | 0;
 i56 = i76 + 572 | 0;
 i62 = i76 + 560 | 0;
 i64 = i76 + 548 | 0;
 i65 = i76 + 536 | 0;
 i47 = i76 + 396 | 0;
 i57 = i76 + 520 | 0;
 i55 = i76 + 512 | 0;
 i20 = i76 + 496 | 0;
 i8 = i76 + 488 | 0;
 i40 = i76 + 472 | 0;
 i36 = i76 + 464 | 0;
 i21 = i76 + 448 | 0;
 i9 = i76 + 440 | 0;
 i61 = i76 + 424 | 0;
 i60 = i76 + 420 | 0;
 i38 = i76 + 408 | 0;
 i51 = i76 + 384 | 0;
 i52 = i76 + 372 | 0;
 i39 = i76 + 360 | 0;
 i43 = i76 + 344 | 0;
 i41 = i76 + 340 | 0;
 i13 = i76 + 328 | 0;
 i15 = i76 + 304 | 0;
 i16 = i76 + 288 | 0;
 i17 = i76 + 276 | 0;
 i18 = i76 + 264 | 0;
 i24 = i76 + 240 | 0;
 i25 = i76 + 228 | 0;
 i26 = i76 + 216 | 0;
 i27 = i76 + 204 | 0;
 i28 = i76 + 192 | 0;
 i31 = i76 + 168 | 0;
 i32 = i76 + 156 | 0;
 i33 = i76 + 144 | 0;
 i42 = i76 + 128 | 0;
 i37 = i76 + 120 | 0;
 i19 = i76 + 104 | 0;
 i7 = i76 + 96 | 0;
 i23 = i76 + 80 | 0;
 i12 = i76 + 72 | 0;
 i22 = i76 + 56 | 0;
 i11 = i76 + 48 | 0;
 i54 = i76 + 32 | 0;
 i49 = i76 + 24 | 0;
 i70 = i76 + 8 | 0;
 i69 = i76;
 L1 : do if ((i73 | 0) != (i72 | 0)) {
  switch (HEAP8[i73 >> 0] | 0) {
  case 75:
  case 86:
  case 114:
   {
    HEAP32[i71 >> 2] = 0;
    i2 = __ZN10__cxxabiv112_GLOBAL__N_119parse_cv_qualifiersEPKcS2_Rj(i73, i72, i71) | 0;
    L5 : do if ((i2 | 0) != (i73 | 0) ? (i3 = HEAP8[i2 >> 0] | 0, i45 = i74 + 4 | 0, i10 = ((HEAP32[i45 >> 2] | 0) - (HEAP32[i74 >> 2] | 0) | 0) / 24 | 0, i44 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_(i2, i72, i74) | 0, i45 = ((HEAP32[i45 >> 2] | 0) - (HEAP32[i74 >> 2] | 0) | 0) / 24 | 0, (i44 | 0) != (i2 | 0)) : 0) {
     i15 = i3 << 24 >> 24 == 70;
     i16 = i74 + 20 | 0;
     i2 = HEAP32[i16 >> 2] | 0;
     L8 : do if (i15) {
      i3 = i2 + -16 | 0;
      while (1) {
       if ((i2 | 0) == (i3 | 0)) {
        i2 = i3;
        break L8;
       }
       i73 = i2 + -16 | 0;
       HEAP32[i16 >> 2] = i73;
       __ZNSt3__113__vector_baseIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEED2Ev(i73);
       i2 = HEAP32[i16 >> 2] | 0;
      }
     } while (0);
     i7 = i74 + 16 | 0;
     i8 = HEAP32[i74 + 12 >> 2] | 0;
     i73 = HEAP32[i74 + 24 >> 2] | 0;
     i3 = i73;
     if (i2 >>> 0 < i73 >>> 0) {
      HEAP32[i2 >> 2] = 0;
      HEAP32[i2 + 4 >> 2] = 0;
      HEAP32[i2 + 8 >> 2] = 0;
      HEAP32[i2 + 12 >> 2] = i8;
      HEAP32[i16 >> 2] = (HEAP32[i16 >> 2] | 0) + 16;
     } else {
      i4 = HEAP32[i7 >> 2] | 0;
      i73 = i2 - i4 | 0;
      i6 = i73 >> 4;
      i5 = i6 + 1 | 0;
      if ((i73 | 0) < -16) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i7);
      i2 = i3 - i4 | 0;
      if (i2 >> 4 >>> 0 < 1073741823) {
       i2 = i2 >> 3;
       i2 = i2 >>> 0 < i5 >>> 0 ? i5 : i2;
      } else i2 = 2147483647;
      __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEEC2EjjS9_(i75, i2, i6, i74 + 28 | 0);
      i73 = i75 + 8 | 0;
      i72 = HEAP32[i73 >> 2] | 0;
      HEAP32[i72 >> 2] = 0;
      HEAP32[i72 + 4 >> 2] = 0;
      HEAP32[i72 + 8 >> 2] = 0;
      HEAP32[i72 + 12 >> 2] = i8;
      HEAP32[i73 >> 2] = i72 + 16;
      __ZNSt3__16vectorINS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS7_EE(i7, i75);
      __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEED2Ev(i75);
     }
     i13 = HEAP32[i71 >> 2] | 0;
     i11 = (i13 & 1 | 0) == 0;
     i12 = (i13 & 2 | 0) == 0;
     i13 = (i13 & 4 | 0) == 0;
     i14 = i75 + 8 | 0;
     while (1) {
      if (i10 >>> 0 >= i45 >>> 0) {
       i1 = i44;
       break L5;
      }
      if (i15) {
       i4 = HEAP32[i74 >> 2] | 0;
       i8 = i4 + (i10 * 24 | 0) + 12 | 0;
       i5 = HEAP8[i8 >> 0] | 0;
       i2 = (i5 & 1) == 0;
       if (i2) {
        i6 = (i5 & 255) >>> 1;
        i3 = i8 + 1 | 0;
       } else {
        i6 = HEAP32[i4 + (i10 * 24 | 0) + 16 >> 2] | 0;
        i3 = HEAP32[i4 + (i10 * 24 | 0) + 20 >> 2] | 0;
       }
       i7 = i6 + -2 | 0;
       if ((HEAP8[i3 + i7 >> 0] | 0) == 38) i2 = i6 + -3 | 0; else {
        if (i2) {
         i3 = i8 + 1 | 0;
         i2 = (i5 & 255) >>> 1;
        } else {
         i3 = HEAP32[i4 + (i10 * 24 | 0) + 20 >> 2] | 0;
         i2 = HEAP32[i4 + (i10 * 24 | 0) + 16 >> 2] | 0;
        }
        i2 = (HEAP8[i3 + i2 + -1 >> 0] | 0) == 38 ? i7 : i6;
       }
       if (!i11) {
        __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc(i8, i2, 33269) | 0;
        i2 = i2 + 6 | 0;
       }
       if (!i12) {
        __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc((HEAP32[i74 >> 2] | 0) + (i10 * 24 | 0) + 12 | 0, i2, 33276) | 0;
        i2 = i2 + 9 | 0;
       }
       if (!i13) __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc((HEAP32[i74 >> 2] | 0) + (i10 * 24 | 0) + 12 | 0, i2, 33286) | 0;
      } else {
       if (!i11) __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc((HEAP32[i74 >> 2] | 0) + (i10 * 24 | 0) | 0, 33269) | 0;
       if (!i12) __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc((HEAP32[i74 >> 2] | 0) + (i10 * 24 | 0) | 0, 33276) | 0;
       if (!i13) __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc((HEAP32[i74 >> 2] | 0) + (i10 * 24 | 0) | 0, 33286) | 0;
      }
      i7 = HEAP32[i16 >> 2] | 0;
      i2 = i7 + -16 | 0;
      i8 = HEAP32[i74 >> 2] | 0;
      i9 = i8 + (i10 * 24 | 0) | 0;
      i3 = i7 + -12 | 0;
      i4 = HEAP32[i3 >> 2] | 0;
      i73 = HEAP32[i7 + -8 >> 2] | 0;
      i5 = i73;
      if ((i4 | 0) == (i73 | 0)) {
       i3 = HEAP32[i2 >> 2] | 0;
       i73 = i4 - i3 | 0;
       i6 = (i73 | 0) / 24 | 0;
       i4 = i6 + 1 | 0;
       if ((i73 | 0) < -24) break;
       i3 = (i5 - i3 | 0) / 24 | 0;
       if (i3 >>> 0 < 1073741823) {
        i3 = i3 << 1;
        i3 = i3 >>> 0 < i4 >>> 0 ? i4 : i3;
       } else i3 = 2147483647;
       __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_(i75, i3, i6, i7 + -4 | 0);
       i73 = HEAP32[i14 >> 2] | 0;
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_(i73, i9);
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_(i73 + 12 | 0, i8 + (i10 * 24 | 0) + 12 | 0);
       HEAP32[i14 >> 2] = i73 + 24;
       __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i2, i75);
       __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev(i75);
      } else {
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_(i4, i9);
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_(i4 + 12 | 0, i8 + (i10 * 24 | 0) + 12 | 0);
       HEAP32[i3 >> 2] = (HEAP32[i3 >> 2] | 0) + 24;
      }
      i10 = i10 + 1 | 0;
     }
     __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i2);
    } else i1 = i73; while (0);
    break L1;
   }
  default:
   {}
  }
  i1 = __ZN10__cxxabiv112_GLOBAL__N_118parse_builtin_typeINS0_2DbEEEPKcS4_S4_RT_(i73, i72, i74) | 0;
  if ((i1 | 0) == (i73 | 0)) {
   i2 = HEAP8[i73 >> 0] | 0;
   L69 : do switch (i2 << 24 >> 24 | 0) {
   case 65:
    {
     do if (i2 << 24 >> 24 == 65 ? (i14 = i73 + 1 | 0, (i14 | 0) != (i72 | 0)) : 0) {
      i1 = HEAP8[i14 >> 0] | 0;
      if (i1 << 24 >> 24 == 95) {
       i71 = i73 + 2 | 0;
       i1 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_(i71, i72, i74) | 0;
       if ((i1 | 0) == (i71 | 0)) {
        i1 = i73;
        break;
       }
       i2 = i74 + 4 | 0;
       i3 = HEAP32[i2 >> 2] | 0;
       if ((HEAP32[i74 >> 2] | 0) == (i3 | 0)) {
        i1 = i73;
        break;
       }
       i72 = i3 + -12 | 0;
       i70 = HEAP8[i72 >> 0] | 0;
       i71 = (i70 & 1) == 0;
       i70 = i71 ? (i70 & 255) >>> 1 : HEAP32[i3 + -8 >> 2] | 0;
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj(i75, i71 ? i72 + 1 | 0 : HEAP32[i3 + -4 >> 2] | 0, i70 >>> 0 < 2 ? i70 : 2);
       i70 = HEAP8[i75 >> 0] | 0;
       i72 = (i70 & 1) == 0;
       i70 = i72 ? (i70 & 255) >>> 1 : HEAP32[i75 + 4 >> 2] | 0;
       i71 = i70 >>> 0 > 2;
       i72 = _memcmp(i72 ? i75 + 1 | 0 : HEAP32[i75 + 8 >> 2] | 0, 33610, i71 ? 2 : i70) | 0;
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i75);
       if (!(((i72 | 0) == 0 ? (i70 >>> 0 < 2 ? -1 : i71 & 1) : i72) | 0)) __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE5eraseEjj((HEAP32[i2 >> 2] | 0) + -12 | 0);
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc((HEAP32[i2 >> 2] | 0) + -12 | 0, 0, 33613) | 0;
       break;
      }
      if ((i1 + -49 & 255) < 9) {
       i6 = __ZN10__cxxabiv112_GLOBAL__N_112parse_numberEPKcS2_(i14, i72) | 0;
       if ((i6 | 0) == (i72 | 0)) {
        i1 = i73;
        break;
       }
       if ((HEAP8[i6 >> 0] | 0) != 95) {
        i1 = i73;
        break;
       }
       i70 = i6 + 1 | 0;
       i1 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_(i70, i72, i74) | 0;
       if ((i1 | 0) == (i70 | 0)) {
        i1 = i73;
        break;
       }
       i2 = i74 + 4 | 0;
       i3 = HEAP32[i2 >> 2] | 0;
       if ((HEAP32[i74 >> 2] | 0) == (i3 | 0)) {
        i1 = i73;
        break;
       }
       i72 = i3 + -12 | 0;
       i69 = HEAP8[i72 >> 0] | 0;
       i70 = (i69 & 1) == 0;
       i69 = i70 ? (i69 & 255) >>> 1 : HEAP32[i3 + -8 >> 2] | 0;
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj(i71, i70 ? i72 + 1 | 0 : HEAP32[i3 + -4 >> 2] | 0, i69 >>> 0 < 2 ? i69 : 2);
       i69 = HEAP8[i71 >> 0] | 0;
       i72 = (i69 & 1) == 0;
       i69 = i72 ? (i69 & 255) >>> 1 : HEAP32[i71 + 4 >> 2] | 0;
       i70 = i69 >>> 0 > 2;
       i72 = _memcmp(i72 ? i71 + 1 | 0 : HEAP32[i71 + 8 >> 2] | 0, 33610, i70 ? 2 : i69) | 0;
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i71);
       if (!(((i72 | 0) == 0 ? (i69 >>> 0 < 2 ? -1 : i70 & 1) : i72) | 0)) __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE5eraseEjj((HEAP32[i2 >> 2] | 0) + -12 | 0);
       i7 = (HEAP32[i2 >> 2] | 0) + -12 | 0;
       i4 = i6 - i14 | 0;
       if (i4 >>> 0 > 4294967279) __ZNKSt3__121__basic_string_commonILb1EE20__throw_length_errorEv(i53);
       if (i4 >>> 0 < 11) {
        HEAP8[i53 >> 0] = i4 << 1;
        i5 = i53 + 1 | 0;
       } else {
        i72 = i4 + 16 & -16;
        i5 = _malloc(i72) | 0;
        HEAP32[i53 + 8 >> 2] = i5;
        HEAP32[i53 >> 2] = i72 | 1;
        HEAP32[i53 + 4 >> 2] = i4;
       }
       i2 = i14;
       i3 = i5;
       while (1) {
        if ((i2 | 0) == (i6 | 0)) break;
        HEAP8[i3 >> 0] = HEAP8[i2 >> 0] | 0;
        i2 = i2 + 1 | 0;
        i3 = i3 + 1 | 0;
       }
       HEAP8[i5 + i4 >> 0] = 0;
       i2 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc(i53, 0, 33610) | 0;
       HEAP32[i50 >> 2] = HEAP32[i2 >> 2];
       HEAP32[i50 + 4 >> 2] = HEAP32[i2 + 4 >> 2];
       HEAP32[i50 + 8 >> 2] = HEAP32[i2 + 8 >> 2];
       i3 = 0;
       while (1) {
        if ((i3 | 0) == 3) break;
        HEAP32[i2 + (i3 << 2) >> 2] = 0;
        i3 = i3 + 1 | 0;
       }
       i2 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc(i50, 33617) | 0;
       HEAP32[i59 >> 2] = HEAP32[i2 >> 2];
       HEAP32[i59 + 4 >> 2] = HEAP32[i2 + 4 >> 2];
       HEAP32[i59 + 8 >> 2] = HEAP32[i2 + 8 >> 2];
       i3 = 0;
       while (1) {
        if ((i3 | 0) == 3) break;
        HEAP32[i2 + (i3 << 2) >> 2] = 0;
        i3 = i3 + 1 | 0;
       }
       i72 = HEAP8[i59 >> 0] | 0;
       i71 = (i72 & 1) == 0;
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKcj(i7, 0, i71 ? i59 + 1 | 0 : HEAP32[i59 + 8 >> 2] | 0, i71 ? (i72 & 255) >>> 1 : HEAP32[i59 + 4 >> 2] | 0) | 0;
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i59);
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i50);
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i53);
       break;
      }
      i1 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_(i14, i72, i74) | 0;
      if (((!((i1 | 0) == (i14 | 0) | (i1 | 0) == (i72 | 0)) ? (HEAP8[i1 >> 0] | 0) == 95 : 0) ? (i71 = i1 + 1 | 0, i48 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_(i71, i72, i74) | 0, (i48 | 0) != (i71 | 0)) : 0) ? (i34 = i74 + 4 | 0, i6 = HEAP32[i34 >> 2] | 0, ((i6 - (HEAP32[i74 >> 2] | 0) | 0) / 24 | 0) >>> 0 >= 2) : 0) {
       __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i63, i6 + -24 | 0);
       i1 = HEAP32[i34 >> 2] | 0;
       i2 = i1 + -24 | 0;
       i3 = i1;
       while (1) {
        if ((i3 | 0) == (i2 | 0)) break;
        i72 = i3 + -24 | 0;
        HEAP32[i34 >> 2] = i72;
        __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i72);
        i3 = HEAP32[i34 >> 2] | 0;
       }
       __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i66, i1 + -48 | 0);
       i1 = HEAP32[i34 >> 2] | 0;
       i10 = i1 + -24 | 0;
       do if (HEAP8[i10 >> 0] & 1) {
        i9 = i1 + -16 | 0;
        HEAP8[HEAP32[i9 >> 2] >> 0] = 0;
        i6 = i1 + -20 | 0;
        HEAP32[i6 >> 2] = 0;
        i1 = HEAP8[i10 >> 0] | 0;
        if (!(i1 & 1)) i5 = 10; else {
         i5 = HEAP32[i10 >> 2] | 0;
         i1 = i5 & 255;
         i5 = (i5 & -2) + -1 | 0;
        }
        if (!(i1 & 1)) {
         i2 = (i1 & 255) >>> 1;
         if ((i1 & 255) < 22) {
          i8 = 1;
          i4 = 10;
          i7 = i2;
         } else {
          i8 = 1;
          i4 = (i2 + 16 & 240) + -1 | 0;
          i7 = i2;
         }
        } else {
         i8 = 0;
         i4 = 10;
         i7 = 0;
        }
        if ((i4 | 0) != (i5 | 0)) {
         if ((i4 | 0) == 10) {
          i3 = i10 + 1 | 0;
          i2 = HEAP32[i9 >> 2] | 0;
          if (i8) {
           _memcpy(i3 | 0, i2 | 0, ((i1 & 255) >>> 1) + 1 | 0) | 0;
           _free(i2);
          } else {
           HEAP8[i3 >> 0] = HEAP8[i2 >> 0] | 0;
           _free(i2);
          }
          HEAP8[i10 >> 0] = i7 << 1;
          break;
         }
         i2 = i4 + 1 | 0;
         i3 = _malloc(i2) | 0;
         if (!(i4 >>> 0 <= i5 >>> 0 & (i3 | 0) == 0)) {
          if (i8) _memcpy(i3 | 0, i10 + 1 | 0, ((i1 & 255) >>> 1) + 1 | 0) | 0; else {
           i72 = HEAP32[i9 >> 2] | 0;
           HEAP8[i3 >> 0] = HEAP8[i72 >> 0] | 0;
           _free(i72);
          }
          HEAP32[i10 >> 2] = i2 | 1;
          HEAP32[i6 >> 2] = i7;
          HEAP32[i9 >> 2] = i3;
         }
        }
       } else {
        HEAP8[i10 + 1 >> 0] = 0;
        HEAP8[i10 >> 0] = 0;
       } while (0);
       HEAP32[i10 >> 2] = HEAP32[i63 >> 2];
       HEAP32[i10 + 4 >> 2] = HEAP32[i63 + 4 >> 2];
       HEAP32[i10 + 8 >> 2] = HEAP32[i63 + 8 >> 2];
       i1 = 0;
       while (1) {
        if ((i1 | 0) == 3) break;
        HEAP32[i63 + (i1 << 2) >> 2] = 0;
        i1 = i1 + 1 | 0;
       }
       i3 = i63 + 12 | 0;
       i70 = HEAP8[i3 >> 0] | 0;
       i72 = (i70 & 1) == 0;
       i4 = i63 + 16 | 0;
       i70 = i72 ? (i70 & 255) >>> 1 : HEAP32[i4 >> 2] | 0;
       i5 = i63 + 20 | 0;
       i6 = i3 + 1 | 0;
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj(i56, i72 ? i6 : HEAP32[i5 >> 2] | 0, i70 >>> 0 < 2 ? i70 : 2);
       i70 = HEAP8[i56 >> 0] | 0;
       i72 = (i70 & 1) == 0;
       i70 = i72 ? (i70 & 255) >>> 1 : HEAP32[i56 + 4 >> 2] | 0;
       i71 = i70 >>> 0 > 2;
       i72 = _memcmp(i72 ? i56 + 1 | 0 : HEAP32[i56 + 8 >> 2] | 0, 33610, i71 ? 2 : i70) | 0;
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i56);
       if (!(((i72 | 0) == 0 ? (i70 >>> 0 < 2 ? -1 : i71 & 1) : i72) | 0)) __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE5eraseEjj(i3);
       i7 = HEAP32[i34 >> 2] | 0;
       i10 = i7 + -12 | 0;
       __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv(i47, i66);
       i1 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc(i47, 0, 33610) | 0;
       HEAP32[i65 >> 2] = HEAP32[i1 >> 2];
       HEAP32[i65 + 4 >> 2] = HEAP32[i1 + 4 >> 2];
       HEAP32[i65 + 8 >> 2] = HEAP32[i1 + 8 >> 2];
       i2 = 0;
       while (1) {
        if ((i2 | 0) == 3) break;
        HEAP32[i1 + (i2 << 2) >> 2] = 0;
        i2 = i2 + 1 | 0;
       }
       i1 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc(i65, 33617) | 0;
       HEAP32[i64 >> 2] = HEAP32[i1 >> 2];
       HEAP32[i64 + 4 >> 2] = HEAP32[i1 + 4 >> 2];
       HEAP32[i64 + 8 >> 2] = HEAP32[i1 + 8 >> 2];
       i2 = 0;
       while (1) {
        if ((i2 | 0) == 3) break;
        HEAP32[i1 + (i2 << 2) >> 2] = 0;
        i2 = i2 + 1 | 0;
       }
       i1 = HEAP8[i3 >> 0] | 0;
       i2 = (i1 & 1) == 0;
       i1 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj(i64, i2 ? i6 : HEAP32[i5 >> 2] | 0, i2 ? (i1 & 255) >>> 1 : HEAP32[i4 >> 2] | 0) | 0;
       HEAP32[i62 >> 2] = HEAP32[i1 >> 2];
       HEAP32[i62 + 4 >> 2] = HEAP32[i1 + 4 >> 2];
       HEAP32[i62 + 8 >> 2] = HEAP32[i1 + 8 >> 2];
       i2 = 0;
       while (1) {
        if ((i2 | 0) == 3) break;
        HEAP32[i1 + (i2 << 2) >> 2] = 0;
        i2 = i2 + 1 | 0;
       }
       do if (HEAP8[i10 >> 0] & 1) {
        i9 = i7 + -4 | 0;
        HEAP8[HEAP32[i9 >> 2] >> 0] = 0;
        i6 = i7 + -8 | 0;
        HEAP32[i6 >> 2] = 0;
        i1 = HEAP8[i10 >> 0] | 0;
        if (!(i1 & 1)) i5 = 10; else {
         i5 = HEAP32[i10 >> 2] | 0;
         i1 = i5 & 255;
         i5 = (i5 & -2) + -1 | 0;
        }
        do if (!(i1 & 1)) {
         i2 = (i1 & 255) >>> 1;
         if ((i1 & 255) < 22) {
          i8 = 1;
          i4 = 10;
          i7 = i2;
          break;
         }
         i8 = 1;
         i4 = (i2 + 16 & 240) + -1 | 0;
         i7 = i2;
        } else {
         i8 = 0;
         i4 = 10;
         i7 = 0;
        } while (0);
        if ((i4 | 0) != (i5 | 0)) {
         if ((i4 | 0) == 10) {
          i3 = i10 + 1 | 0;
          i2 = HEAP32[i9 >> 2] | 0;
          if (i8) {
           _memcpy(i3 | 0, i2 | 0, ((i1 & 255) >>> 1) + 1 | 0) | 0;
           _free(i2);
          } else {
           HEAP8[i3 >> 0] = HEAP8[i2 >> 0] | 0;
           _free(i2);
          }
          HEAP8[i10 >> 0] = i7 << 1;
          break;
         }
         i2 = i4 + 1 | 0;
         i3 = _malloc(i2) | 0;
         if (i4 >>> 0 <= i5 >>> 0 & (i3 | 0) == 0) break;
         if (i8) _memcpy(i3 | 0, i10 + 1 | 0, ((i1 & 255) >>> 1) + 1 | 0) | 0; else {
          i72 = HEAP32[i9 >> 2] | 0;
          HEAP8[i3 >> 0] = HEAP8[i72 >> 0] | 0;
          _free(i72);
         }
         HEAP32[i10 >> 2] = i2 | 1;
         HEAP32[i6 >> 2] = i7;
         HEAP32[i9 >> 2] = i3;
        }
       } else {
        HEAP8[i10 + 1 >> 0] = 0;
        HEAP8[i10 >> 0] = 0;
       } while (0);
       HEAP32[i10 >> 2] = HEAP32[i62 >> 2];
       HEAP32[i10 + 4 >> 2] = HEAP32[i62 + 4 >> 2];
       HEAP32[i10 + 8 >> 2] = HEAP32[i62 + 8 >> 2];
       i1 = 0;
       while (1) {
        if ((i1 | 0) == 3) break;
        HEAP32[i62 + (i1 << 2) >> 2] = 0;
        i1 = i1 + 1 | 0;
       }
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i62);
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i64);
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i65);
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i47);
       __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i66);
       __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i63);
       i1 = i48;
      } else i1 = i73;
     } else i1 = i73; while (0);
     if ((i1 | 0) == (i73 | 0)) {
      i1 = i73;
      break L1;
     }
     i2 = HEAP32[i74 + 4 >> 2] | 0;
     if ((HEAP32[i74 >> 2] | 0) == (i2 | 0)) {
      i1 = i73;
      break L1;
     }
     i6 = i74 + 16 | 0;
     HEAP32[i55 >> 2] = HEAP32[i74 + 12 >> 2];
     __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEC2EjRKS3_RKS5_(i57, i2 + -24 | 0, i55);
     i2 = i74 + 20 | 0;
     i3 = HEAP32[i2 >> 2] | 0;
     i73 = HEAP32[i74 + 24 >> 2] | 0;
     i4 = i73;
     if (i3 >>> 0 < i73 >>> 0) {
      HEAP32[i3 + 12 >> 2] = HEAP32[i57 + 12 >> 2];
      HEAP32[i3 >> 2] = HEAP32[i57 >> 2];
      i75 = i57 + 4 | 0;
      HEAP32[i3 + 4 >> 2] = HEAP32[i75 >> 2];
      i74 = i57 + 8 | 0;
      HEAP32[i3 + 8 >> 2] = HEAP32[i74 >> 2];
      HEAP32[i74 >> 2] = 0;
      HEAP32[i75 >> 2] = 0;
      HEAP32[i57 >> 2] = 0;
      HEAP32[i2 >> 2] = (HEAP32[i2 >> 2] | 0) + 16;
     } else {
      i2 = HEAP32[i6 >> 2] | 0;
      i73 = i3 - i2 | 0;
      i5 = i73 >> 4;
      i3 = i5 + 1 | 0;
      if ((i73 | 0) < -16) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i6);
      i2 = i4 - i2 | 0;
      if (i2 >> 4 >>> 0 < 1073741823) {
       i2 = i2 >> 3;
       i2 = i2 >>> 0 < i3 >>> 0 ? i3 : i2;
      } else i2 = 2147483647;
      __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEEC2EjjS9_(i75, i2, i5, i74 + 28 | 0);
      i74 = i75 + 8 | 0;
      i73 = HEAP32[i74 >> 2] | 0;
      HEAP32[i73 + 12 >> 2] = HEAP32[i57 + 12 >> 2];
      HEAP32[i73 >> 2] = HEAP32[i57 >> 2];
      i72 = i57 + 4 | 0;
      HEAP32[i73 + 4 >> 2] = HEAP32[i72 >> 2];
      i71 = i57 + 8 | 0;
      HEAP32[i73 + 8 >> 2] = HEAP32[i71 >> 2];
      HEAP32[i71 >> 2] = 0;
      HEAP32[i72 >> 2] = 0;
      HEAP32[i57 >> 2] = 0;
      HEAP32[i74 >> 2] = i73 + 16;
      __ZNSt3__16vectorINS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS7_EE(i6, i75);
      __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEED2Ev(i75);
     }
     __ZNSt3__113__vector_baseIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEED2Ev(i57);
     break L1;
    }
   case 67:
    {
     i71 = i73 + 1 | 0;
     i1 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_(i71, i72, i74) | 0;
     if ((i1 | 0) == (i71 | 0)) {
      i1 = i73;
      break L1;
     }
     i3 = i74 + 4 | 0;
     i2 = HEAP32[i3 >> 2] | 0;
     if ((HEAP32[i74 >> 2] | 0) == (i2 | 0)) {
      i1 = i73;
      break L1;
     }
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc(i2 + -24 | 0, 34851) | 0;
     i6 = i74 + 16 | 0;
     i2 = (HEAP32[i3 >> 2] | 0) + -24 | 0;
     HEAP32[i8 >> 2] = HEAP32[i74 + 12 >> 2];
     __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEC2EjRKS3_RKS5_(i20, i2, i8);
     i2 = i74 + 20 | 0;
     i3 = HEAP32[i2 >> 2] | 0;
     i73 = HEAP32[i74 + 24 >> 2] | 0;
     i4 = i73;
     if (i3 >>> 0 < i73 >>> 0) {
      HEAP32[i3 + 12 >> 2] = HEAP32[i20 + 12 >> 2];
      HEAP32[i3 >> 2] = HEAP32[i20 >> 2];
      i75 = i20 + 4 | 0;
      HEAP32[i3 + 4 >> 2] = HEAP32[i75 >> 2];
      i74 = i20 + 8 | 0;
      HEAP32[i3 + 8 >> 2] = HEAP32[i74 >> 2];
      HEAP32[i74 >> 2] = 0;
      HEAP32[i75 >> 2] = 0;
      HEAP32[i20 >> 2] = 0;
      HEAP32[i2 >> 2] = (HEAP32[i2 >> 2] | 0) + 16;
     } else {
      i2 = HEAP32[i6 >> 2] | 0;
      i73 = i3 - i2 | 0;
      i5 = i73 >> 4;
      i3 = i5 + 1 | 0;
      if ((i73 | 0) < -16) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i6);
      i2 = i4 - i2 | 0;
      if (i2 >> 4 >>> 0 < 1073741823) {
       i2 = i2 >> 3;
       i2 = i2 >>> 0 < i3 >>> 0 ? i3 : i2;
      } else i2 = 2147483647;
      __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEEC2EjjS9_(i75, i2, i5, i74 + 28 | 0);
      i74 = i75 + 8 | 0;
      i73 = HEAP32[i74 >> 2] | 0;
      HEAP32[i73 + 12 >> 2] = HEAP32[i20 + 12 >> 2];
      HEAP32[i73 >> 2] = HEAP32[i20 >> 2];
      i72 = i20 + 4 | 0;
      HEAP32[i73 + 4 >> 2] = HEAP32[i72 >> 2];
      i71 = i20 + 8 | 0;
      HEAP32[i73 + 8 >> 2] = HEAP32[i71 >> 2];
      HEAP32[i71 >> 2] = 0;
      HEAP32[i72 >> 2] = 0;
      HEAP32[i20 >> 2] = 0;
      HEAP32[i74 >> 2] = i73 + 16;
      __ZNSt3__16vectorINS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS7_EE(i6, i75);
      __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEED2Ev(i75);
     }
     __ZNSt3__113__vector_baseIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEED2Ev(i20);
     break L1;
    }
   case 70:
    {
     do if (i2 << 24 >> 24 == 70) {
      i1 = i73 + 1 | 0;
      if ((i1 | 0) != (i72 | 0)) {
       if ((HEAP8[i1 >> 0] | 0) == 89) {
        i1 = i73 + 2 | 0;
        if ((i1 | 0) == (i72 | 0)) break;
       }
       i3 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_(i1, i72, i74) | 0;
       if ((i3 | 0) != (i1 | 0)) {
        __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj(i75, 33619, 1);
        i11 = i74 + 4 | 0;
        i10 = i75 + 4 | 0;
        i7 = i71 + 8 | 0;
        i8 = i71 + 1 | 0;
        i9 = i71 + 4 | 0;
        i2 = 0;
        i1 = i3;
        L225 : while (1) L227 : while (1) {
         if ((i1 | 0) == (i72 | 0)) {
          i67 = 170;
          break L225;
         }
         switch (HEAP8[i1 >> 0] | 0) {
         case 69:
          {
           i67 = 174;
           break L225;
          }
         case 118:
          {
           i1 = i1 + 1 | 0;
           continue L227;
          }
         case 82:
          {
           i3 = i1 + 1 | 0;
           if ((i3 | 0) != (i72 | 0) ? (HEAP8[i3 >> 0] | 0) == 69 : 0) {
            i2 = 1;
            i1 = i3;
            continue L225;
           }
           break;
          }
         case 79:
          {
           i3 = i1 + 1 | 0;
           if ((i3 | 0) != (i72 | 0) ? (HEAP8[i3 >> 0] | 0) == 69 : 0) {
            i2 = 2;
            i1 = i3;
            continue L225;
           }
           break;
          }
         default:
          {}
         }
         i3 = ((HEAP32[i11 >> 2] | 0) - (HEAP32[i74 >> 2] | 0) | 0) / 24 | 0;
         i5 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_(i1, i72, i74) | 0;
         i6 = ((HEAP32[i11 >> 2] | 0) - (HEAP32[i74 >> 2] | 0) | 0) / 24 | 0;
         if ((i5 | 0) == (i1 | 0) | (i5 | 0) == (i72 | 0)) break L225; else i1 = i3;
         while (1) {
          if (i1 >>> 0 >= i6 >>> 0) break;
          i70 = HEAP8[i75 >> 0] | 0;
          if (((i70 & 1) == 0 ? (i70 & 255) >>> 1 : HEAP32[i10 >> 2] | 0) >>> 0 > 1) __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc(i75, 34253) | 0;
          __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv(i71, (HEAP32[i74 >> 2] | 0) + (i1 * 24 | 0) | 0);
          i70 = HEAP8[i71 >> 0] | 0;
          i69 = (i70 & 1) == 0;
          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj(i75, i69 ? i8 : HEAP32[i7 >> 2] | 0, i69 ? (i70 & 255) >>> 1 : HEAP32[i9 >> 2] | 0) | 0;
          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i71);
          i1 = i1 + 1 | 0;
         }
         while (1) {
          if (i3 >>> 0 >= i6 >>> 0) {
           i1 = i5;
           continue L227;
          }
          i4 = HEAP32[i11 >> 2] | 0;
          i1 = i4 + -24 | 0;
          while (1) {
           if ((i4 | 0) == (i1 | 0)) break;
           i70 = i4 + -24 | 0;
           HEAP32[i11 >> 2] = i70;
           __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i70);
           i4 = HEAP32[i11 >> 2] | 0;
          }
          i3 = i3 + 1 | 0;
         }
        }
        L250 : do if ((i67 | 0) == 170) {
         i2 = HEAP32[i11 >> 2] | 0;
         i1 = i2 + -24 | 0;
         while (1) {
          if ((i2 | 0) == (i1 | 0)) break L250;
          i74 = i2 + -24 | 0;
          HEAP32[i11 >> 2] = i74;
          __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i74);
          i2 = HEAP32[i11 >> 2] | 0;
         }
        } else if ((i67 | 0) == 174) {
         i1 = i1 + 1 | 0;
         __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc(i75, 33621) | 0;
         switch (i2 | 0) {
         case 1:
          {
           __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc(i75, 34860) | 0;
           break;
          }
         case 2:
          {
           __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc(i75, 34863) | 0;
           break;
          }
         default:
          {}
         }
         i2 = HEAP32[i11 >> 2] | 0;
         if ((HEAP32[i74 >> 2] | 0) != (i2 | 0)) {
          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc(i2 + -24 | 0, 34710) | 0;
          i72 = HEAP8[i75 >> 0] | 0;
          i71 = (i72 & 1) == 0;
          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKcj((HEAP32[i11 >> 2] | 0) + -12 | 0, 0, i71 ? i75 + 1 | 0 : HEAP32[i75 + 8 >> 2] | 0, i71 ? (i72 & 255) >>> 1 : HEAP32[i10 >> 2] | 0) | 0;
          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i75);
          if ((i1 | 0) == (i73 | 0)) {
           i1 = i73;
           break L1;
          }
          i2 = HEAP32[i11 >> 2] | 0;
          if ((HEAP32[i74 >> 2] | 0) == (i2 | 0)) {
           i1 = i73;
           break L1;
          }
          i6 = i74 + 16 | 0;
          HEAP32[i36 >> 2] = HEAP32[i74 + 12 >> 2];
          __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEC2EjRKS3_RKS5_(i40, i2 + -24 | 0, i36);
          i2 = i74 + 20 | 0;
          i3 = HEAP32[i2 >> 2] | 0;
          i73 = HEAP32[i74 + 24 >> 2] | 0;
          i4 = i73;
          if (i3 >>> 0 < i73 >>> 0) {
           HEAP32[i3 + 12 >> 2] = HEAP32[i40 + 12 >> 2];
           HEAP32[i3 >> 2] = HEAP32[i40 >> 2];
           i75 = i40 + 4 | 0;
           HEAP32[i3 + 4 >> 2] = HEAP32[i75 >> 2];
           i74 = i40 + 8 | 0;
           HEAP32[i3 + 8 >> 2] = HEAP32[i74 >> 2];
           HEAP32[i74 >> 2] = 0;
           HEAP32[i75 >> 2] = 0;
           HEAP32[i40 >> 2] = 0;
           HEAP32[i2 >> 2] = (HEAP32[i2 >> 2] | 0) + 16;
          } else {
           i2 = HEAP32[i6 >> 2] | 0;
           i73 = i3 - i2 | 0;
           i5 = i73 >> 4;
           i3 = i5 + 1 | 0;
           if ((i73 | 0) < -16) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i6);
           i2 = i4 - i2 | 0;
           if (i2 >> 4 >>> 0 < 1073741823) {
            i2 = i2 >> 3;
            i2 = i2 >>> 0 < i3 >>> 0 ? i3 : i2;
           } else i2 = 2147483647;
           __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEEC2EjjS9_(i75, i2, i5, i74 + 28 | 0);
           i74 = i75 + 8 | 0;
           i73 = HEAP32[i74 >> 2] | 0;
           HEAP32[i73 + 12 >> 2] = HEAP32[i40 + 12 >> 2];
           HEAP32[i73 >> 2] = HEAP32[i40 >> 2];
           i72 = i40 + 4 | 0;
           HEAP32[i73 + 4 >> 2] = HEAP32[i72 >> 2];
           i71 = i40 + 8 | 0;
           HEAP32[i73 + 8 >> 2] = HEAP32[i71 >> 2];
           HEAP32[i71 >> 2] = 0;
           HEAP32[i72 >> 2] = 0;
           HEAP32[i40 >> 2] = 0;
           HEAP32[i74 >> 2] = i73 + 16;
           __ZNSt3__16vectorINS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS7_EE(i6, i75);
           __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEED2Ev(i75);
          }
          __ZNSt3__113__vector_baseIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEED2Ev(i40);
          break L1;
         }
        } while (0);
        __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i75);
        break;
       }
      }
      i1 = i73;
      break L1;
     } while (0);
     i1 = i73;
     break L1;
    }
   case 71:
    {
     i71 = i73 + 1 | 0;
     i1 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_(i71, i72, i74) | 0;
     if ((i1 | 0) == (i71 | 0)) {
      i1 = i73;
      break L1;
     }
     i3 = i74 + 4 | 0;
     i2 = HEAP32[i3 >> 2] | 0;
     if ((HEAP32[i74 >> 2] | 0) == (i2 | 0)) {
      i1 = i73;
      break L1;
     }
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc(i2 + -24 | 0, 34867) | 0;
     i6 = i74 + 16 | 0;
     i2 = (HEAP32[i3 >> 2] | 0) + -24 | 0;
     HEAP32[i9 >> 2] = HEAP32[i74 + 12 >> 2];
     __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEC2EjRKS3_RKS5_(i21, i2, i9);
     i2 = i74 + 20 | 0;
     i3 = HEAP32[i2 >> 2] | 0;
     i73 = HEAP32[i74 + 24 >> 2] | 0;
     i4 = i73;
     if (i3 >>> 0 < i73 >>> 0) {
      HEAP32[i3 + 12 >> 2] = HEAP32[i21 + 12 >> 2];
      HEAP32[i3 >> 2] = HEAP32[i21 >> 2];
      i75 = i21 + 4 | 0;
      HEAP32[i3 + 4 >> 2] = HEAP32[i75 >> 2];
      i74 = i21 + 8 | 0;
      HEAP32[i3 + 8 >> 2] = HEAP32[i74 >> 2];
      HEAP32[i74 >> 2] = 0;
      HEAP32[i75 >> 2] = 0;
      HEAP32[i21 >> 2] = 0;
      HEAP32[i2 >> 2] = (HEAP32[i2 >> 2] | 0) + 16;
     } else {
      i2 = HEAP32[i6 >> 2] | 0;
      i73 = i3 - i2 | 0;
      i5 = i73 >> 4;
      i3 = i5 + 1 | 0;
      if ((i73 | 0) < -16) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i6);
      i2 = i4 - i2 | 0;
      if (i2 >> 4 >>> 0 < 1073741823) {
       i2 = i2 >> 3;
       i2 = i2 >>> 0 < i3 >>> 0 ? i3 : i2;
      } else i2 = 2147483647;
      __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEEC2EjjS9_(i75, i2, i5, i74 + 28 | 0);
      i74 = i75 + 8 | 0;
      i73 = HEAP32[i74 >> 2] | 0;
      HEAP32[i73 + 12 >> 2] = HEAP32[i21 + 12 >> 2];
      HEAP32[i73 >> 2] = HEAP32[i21 >> 2];
      i72 = i21 + 4 | 0;
      HEAP32[i73 + 4 >> 2] = HEAP32[i72 >> 2];
      i71 = i21 + 8 | 0;
      HEAP32[i73 + 8 >> 2] = HEAP32[i71 >> 2];
      HEAP32[i71 >> 2] = 0;
      HEAP32[i72 >> 2] = 0;
      HEAP32[i21 >> 2] = 0;
      HEAP32[i74 >> 2] = i73 + 16;
      __ZNSt3__16vectorINS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS7_EE(i6, i75);
      __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEED2Ev(i75);
     }
     __ZNSt3__113__vector_baseIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEED2Ev(i21);
     break L1;
    }
   case 77:
    {
     if (((i2 << 24 >> 24 == 77 ? (i70 = i73 + 1 | 0, i4 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_(i70, i72, i74) | 0, (i4 | 0) != (i70 | 0)) : 0) ? (i58 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_(i4, i72, i74) | 0, (i58 | 0) != (i4 | 0)) : 0) ? (i46 = i74 + 4 | 0, i5 = HEAP32[i46 >> 2] | 0, ((i5 - (HEAP32[i74 >> 2] | 0) | 0) / 24 | 0) >>> 0 >= 2) : 0) {
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i75, i5 + -24 | 0);
      i1 = HEAP32[i46 >> 2] | 0;
      i2 = i1 + -24 | 0;
      i3 = i1;
      while (1) {
       if ((i3 | 0) == (i2 | 0)) break;
       i72 = i3 + -24 | 0;
       HEAP32[i46 >> 2] = i72;
       __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i72);
       i3 = HEAP32[i46 >> 2] | 0;
      }
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i71, i1 + -48 | 0);
      i11 = i75 + 12 | 0;
      i3 = HEAP32[i46 >> 2] | 0;
      i10 = i3 + -24 | 0;
      L299 : do if ((HEAP8[((HEAP8[i11 >> 0] & 1) == 0 ? i11 + 1 | 0 : HEAP32[i75 + 20 >> 2] | 0) >> 0] | 0) == 40) {
       i1 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc(i75, 33619) | 0;
       HEAP32[i53 >> 2] = HEAP32[i1 >> 2];
       HEAP32[i53 + 4 >> 2] = HEAP32[i1 + 4 >> 2];
       HEAP32[i53 + 8 >> 2] = HEAP32[i1 + 8 >> 2];
       i2 = 0;
       while (1) {
        if ((i2 | 0) == 3) break;
        HEAP32[i1 + (i2 << 2) >> 2] = 0;
        i2 = i2 + 1 | 0;
       }
       __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv(i63, i71);
       i1 = HEAP8[i63 >> 0] | 0;
       i2 = (i1 & 1) == 0;
       i1 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj(i53, i2 ? i63 + 1 | 0 : HEAP32[i63 + 8 >> 2] | 0, i2 ? (i1 & 255) >>> 1 : HEAP32[i63 + 4 >> 2] | 0) | 0;
       HEAP32[i50 >> 2] = HEAP32[i1 >> 2];
       HEAP32[i50 + 4 >> 2] = HEAP32[i1 + 4 >> 2];
       HEAP32[i50 + 8 >> 2] = HEAP32[i1 + 8 >> 2];
       i2 = 0;
       while (1) {
        if ((i2 | 0) == 3) break;
        HEAP32[i1 + (i2 << 2) >> 2] = 0;
        i2 = i2 + 1 | 0;
       }
       i1 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc(i50, 34878) | 0;
       HEAP32[i59 >> 2] = HEAP32[i1 >> 2];
       HEAP32[i59 + 4 >> 2] = HEAP32[i1 + 4 >> 2];
       HEAP32[i59 + 8 >> 2] = HEAP32[i1 + 8 >> 2];
       i2 = 0;
       while (1) {
        if ((i2 | 0) == 3) break;
        HEAP32[i1 + (i2 << 2) >> 2] = 0;
        i2 = i2 + 1 | 0;
       }
       do if (HEAP8[i10 >> 0] & 1) {
        i9 = i3 + -16 | 0;
        HEAP8[HEAP32[i9 >> 2] >> 0] = 0;
        i6 = i3 + -20 | 0;
        HEAP32[i6 >> 2] = 0;
        i1 = HEAP8[i10 >> 0] | 0;
        if (!(i1 & 1)) i5 = 10; else {
         i5 = HEAP32[i10 >> 2] | 0;
         i1 = i5 & 255;
         i5 = (i5 & -2) + -1 | 0;
        }
        if (!(i1 & 1)) {
         i2 = (i1 & 255) >>> 1;
         if ((i1 & 255) < 22) {
          i8 = 1;
          i4 = 10;
          i7 = i2;
         } else {
          i8 = 1;
          i4 = (i2 + 16 & 240) + -1 | 0;
          i7 = i2;
         }
        } else {
         i8 = 0;
         i4 = 10;
         i7 = 0;
        }
        if ((i4 | 0) != (i5 | 0)) {
         if ((i4 | 0) == 10) {
          i3 = i10 + 1 | 0;
          i2 = HEAP32[i9 >> 2] | 0;
          if (i8) {
           _memcpy(i3 | 0, i2 | 0, ((i1 & 255) >>> 1) + 1 | 0) | 0;
           _free(i2);
          } else {
           HEAP8[i3 >> 0] = HEAP8[i2 >> 0] | 0;
           _free(i2);
          }
          HEAP8[i10 >> 0] = i7 << 1;
          break;
         }
         i2 = i4 + 1 | 0;
         i3 = _malloc(i2) | 0;
         if (!(i4 >>> 0 <= i5 >>> 0 & (i3 | 0) == 0)) {
          if (i8) _memcpy(i3 | 0, i10 + 1 | 0, ((i1 & 255) >>> 1) + 1 | 0) | 0; else {
           i72 = HEAP32[i9 >> 2] | 0;
           HEAP8[i3 >> 0] = HEAP8[i72 >> 0] | 0;
           _free(i72);
          }
          HEAP32[i10 >> 2] = i2 | 1;
          HEAP32[i6 >> 2] = i7;
          HEAP32[i9 >> 2] = i3;
         }
        }
       } else {
        HEAP8[i10 + 1 >> 0] = 0;
        HEAP8[i10 >> 0] = 0;
       } while (0);
       HEAP32[i10 >> 2] = HEAP32[i59 >> 2];
       HEAP32[i10 + 4 >> 2] = HEAP32[i59 + 4 >> 2];
       HEAP32[i10 + 8 >> 2] = HEAP32[i59 + 8 >> 2];
       i1 = 0;
       while (1) {
        if ((i1 | 0) == 3) break;
        HEAP32[i59 + (i1 << 2) >> 2] = 0;
        i1 = i1 + 1 | 0;
       }
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i59);
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i50);
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i63);
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i53);
       i3 = HEAP32[i46 >> 2] | 0;
       i1 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc(i11, 0, 33621) | 0;
       HEAP32[i66 >> 2] = HEAP32[i1 >> 2];
       HEAP32[i66 + 4 >> 2] = HEAP32[i1 + 4 >> 2];
       HEAP32[i66 + 8 >> 2] = HEAP32[i1 + 8 >> 2];
       i2 = 0;
       while (1) {
        if ((i2 | 0) == 3) break;
        HEAP32[i1 + (i2 << 2) >> 2] = 0;
        i2 = i2 + 1 | 0;
       }
       i10 = i3 + -12 | 0;
       do if (HEAP8[i10 >> 0] & 1) {
        i9 = i3 + -4 | 0;
        HEAP8[HEAP32[i9 >> 2] >> 0] = 0;
        i6 = i3 + -8 | 0;
        HEAP32[i6 >> 2] = 0;
        i1 = HEAP8[i10 >> 0] | 0;
        if (!(i1 & 1)) i5 = 10; else {
         i5 = HEAP32[i10 >> 2] | 0;
         i1 = i5 & 255;
         i5 = (i5 & -2) + -1 | 0;
        }
        if (!(i1 & 1)) {
         i2 = (i1 & 255) >>> 1;
         if ((i1 & 255) < 22) {
          i8 = 1;
          i4 = 10;
          i7 = i2;
         } else {
          i8 = 1;
          i4 = (i2 + 16 & 240) + -1 | 0;
          i7 = i2;
         }
        } else {
         i8 = 0;
         i4 = 10;
         i7 = 0;
        }
        if ((i4 | 0) != (i5 | 0)) {
         if ((i4 | 0) == 10) {
          i3 = i10 + 1 | 0;
          i2 = HEAP32[i9 >> 2] | 0;
          if (i8) {
           _memcpy(i3 | 0, i2 | 0, ((i1 & 255) >>> 1) + 1 | 0) | 0;
           _free(i2);
          } else {
           HEAP8[i3 >> 0] = HEAP8[i2 >> 0] | 0;
           _free(i2);
          }
          HEAP8[i10 >> 0] = i7 << 1;
          break;
         }
         i2 = i4 + 1 | 0;
         i3 = _malloc(i2) | 0;
         if (!(i4 >>> 0 <= i5 >>> 0 & (i3 | 0) == 0)) {
          if (i8) _memcpy(i3 | 0, i10 + 1 | 0, ((i1 & 255) >>> 1) + 1 | 0) | 0; else {
           i72 = HEAP32[i9 >> 2] | 0;
           HEAP8[i3 >> 0] = HEAP8[i72 >> 0] | 0;
           _free(i72);
          }
          HEAP32[i10 >> 2] = i2 | 1;
          HEAP32[i6 >> 2] = i7;
          HEAP32[i9 >> 2] = i3;
         }
        }
       } else {
        HEAP8[i10 + 1 >> 0] = 0;
        HEAP8[i10 >> 0] = 0;
       } while (0);
       HEAP32[i10 >> 2] = HEAP32[i66 >> 2];
       HEAP32[i10 + 4 >> 2] = HEAP32[i66 + 4 >> 2];
       HEAP32[i10 + 8 >> 2] = HEAP32[i66 + 8 >> 2];
       i1 = 0;
       while (1) {
        if ((i1 | 0) == 3) break;
        HEAP32[i66 + (i1 << 2) >> 2] = 0;
        i1 = i1 + 1 | 0;
       }
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i66);
      } else {
       i1 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc(i75, 34710) | 0;
       HEAP32[i64 >> 2] = HEAP32[i1 >> 2];
       HEAP32[i64 + 4 >> 2] = HEAP32[i1 + 4 >> 2];
       HEAP32[i64 + 8 >> 2] = HEAP32[i1 + 8 >> 2];
       i2 = 0;
       while (1) {
        if ((i2 | 0) == 3) break;
        HEAP32[i1 + (i2 << 2) >> 2] = 0;
        i2 = i2 + 1 | 0;
       }
       __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv(i65, i71);
       i1 = HEAP8[i65 >> 0] | 0;
       i2 = (i1 & 1) == 0;
       i1 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj(i64, i2 ? i65 + 1 | 0 : HEAP32[i65 + 8 >> 2] | 0, i2 ? (i1 & 255) >>> 1 : HEAP32[i65 + 4 >> 2] | 0) | 0;
       HEAP32[i62 >> 2] = HEAP32[i1 >> 2];
       HEAP32[i62 + 4 >> 2] = HEAP32[i1 + 4 >> 2];
       HEAP32[i62 + 8 >> 2] = HEAP32[i1 + 8 >> 2];
       i2 = 0;
       while (1) {
        if ((i2 | 0) == 3) break;
        HEAP32[i1 + (i2 << 2) >> 2] = 0;
        i2 = i2 + 1 | 0;
       }
       i1 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc(i62, 34878) | 0;
       HEAP32[i56 >> 2] = HEAP32[i1 >> 2];
       HEAP32[i56 + 4 >> 2] = HEAP32[i1 + 4 >> 2];
       HEAP32[i56 + 8 >> 2] = HEAP32[i1 + 8 >> 2];
       i2 = 0;
       while (1) {
        if ((i2 | 0) == 3) break;
        HEAP32[i1 + (i2 << 2) >> 2] = 0;
        i2 = i2 + 1 | 0;
       }
       do if (HEAP8[i10 >> 0] & 1) {
        i9 = i3 + -16 | 0;
        HEAP8[HEAP32[i9 >> 2] >> 0] = 0;
        i8 = i3 + -20 | 0;
        HEAP32[i8 >> 2] = 0;
        i1 = HEAP8[i10 >> 0] | 0;
        if (!(i1 & 1)) i5 = 10; else {
         i1 = HEAP32[i10 >> 2] | 0;
         i5 = (i1 & -2) + -1 | 0;
         i1 = i1 & 255;
        }
        if (!(i1 & 1)) {
         i2 = (i1 & 255) >>> 1;
         if ((i1 & 255) < 22) {
          i4 = 10;
          i6 = i2;
          i7 = 1;
         } else {
          i4 = (i2 + 16 & 240) + -1 | 0;
          i6 = i2;
          i7 = 1;
         }
        } else {
         i4 = 10;
         i6 = 0;
         i7 = 0;
        }
        if ((i4 | 0) != (i5 | 0)) {
         if ((i4 | 0) == 10) {
          i3 = i10 + 1 | 0;
          i2 = HEAP32[i9 >> 2] | 0;
          if (i7) {
           _memcpy(i3 | 0, i2 | 0, ((i1 & 255) >>> 1) + 1 | 0) | 0;
           _free(i2);
          } else {
           HEAP8[i3 >> 0] = HEAP8[i2 >> 0] | 0;
           _free(i2);
          }
          HEAP8[i10 >> 0] = i6 << 1;
          break;
         }
         i2 = i4 + 1 | 0;
         i3 = _malloc(i2) | 0;
         if (!(i4 >>> 0 <= i5 >>> 0 & (i3 | 0) == 0)) {
          if (i7) _memcpy(i3 | 0, i10 + 1 | 0, ((i1 & 255) >>> 1) + 1 | 0) | 0; else {
           i72 = HEAP32[i9 >> 2] | 0;
           HEAP8[i3 >> 0] = HEAP8[i72 >> 0] | 0;
           _free(i72);
          }
          HEAP32[i10 >> 2] = i2 | 1;
          HEAP32[i8 >> 2] = i6;
          HEAP32[i9 >> 2] = i3;
         }
        }
       } else {
        HEAP8[i10 + 1 >> 0] = 0;
        HEAP8[i10 >> 0] = 0;
       } while (0);
       HEAP32[i10 >> 2] = HEAP32[i56 >> 2];
       HEAP32[i10 + 4 >> 2] = HEAP32[i56 + 4 >> 2];
       HEAP32[i10 + 8 >> 2] = HEAP32[i56 + 8 >> 2];
       i1 = 0;
       while (1) {
        if ((i1 | 0) == 3) break;
        HEAP32[i56 + (i1 << 2) >> 2] = 0;
        i1 = i1 + 1 | 0;
       }
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i56);
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i62);
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i65);
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i64);
       i1 = HEAP32[i46 >> 2] | 0;
       i10 = i1 + -12 | 0;
       do if (HEAP8[i10 >> 0] & 1) {
        i9 = i1 + -4 | 0;
        HEAP8[HEAP32[i9 >> 2] >> 0] = 0;
        i6 = i1 + -8 | 0;
        HEAP32[i6 >> 2] = 0;
        i1 = HEAP8[i10 >> 0] | 0;
        if (!(i1 & 1)) i5 = 10; else {
         i5 = HEAP32[i10 >> 2] | 0;
         i1 = i5 & 255;
         i5 = (i5 & -2) + -1 | 0;
        }
        if (!(i1 & 1)) {
         i2 = (i1 & 255) >>> 1;
         if ((i1 & 255) < 22) {
          i4 = 10;
          i7 = i2;
          i8 = 1;
         } else {
          i4 = (i2 + 16 & 240) + -1 | 0;
          i7 = i2;
          i8 = 1;
         }
        } else {
         i4 = 10;
         i7 = 0;
         i8 = 0;
        }
        if ((i4 | 0) != (i5 | 0)) {
         if ((i4 | 0) == 10) {
          i3 = i10 + 1 | 0;
          i2 = HEAP32[i9 >> 2] | 0;
          if (i8) {
           _memcpy(i3 | 0, i2 | 0, ((i1 & 255) >>> 1) + 1 | 0) | 0;
           _free(i2);
          } else {
           HEAP8[i3 >> 0] = HEAP8[i2 >> 0] | 0;
           _free(i2);
          }
          HEAP8[i10 >> 0] = i7 << 1;
          break;
         }
         i2 = i4 + 1 | 0;
         i3 = _malloc(i2) | 0;
         if (!(i4 >>> 0 <= i5 >>> 0 & (i3 | 0) == 0)) {
          if (i8) _memcpy(i3 | 0, i10 + 1 | 0, ((i1 & 255) >>> 1) + 1 | 0) | 0; else {
           i72 = HEAP32[i9 >> 2] | 0;
           HEAP8[i3 >> 0] = HEAP8[i72 >> 0] | 0;
           _free(i72);
          }
          HEAP32[i10 >> 2] = i2 | 1;
          HEAP32[i6 >> 2] = i7;
          HEAP32[i9 >> 2] = i3;
         }
        }
       } else {
        HEAP8[i10 + 1 >> 0] = 0;
        HEAP8[i10 >> 0] = 0;
       } while (0);
       HEAP32[i10 >> 2] = HEAP32[i11 >> 2];
       HEAP32[i10 + 4 >> 2] = HEAP32[i11 + 4 >> 2];
       HEAP32[i10 + 8 >> 2] = HEAP32[i11 + 8 >> 2];
       i1 = 0;
       while (1) {
        if ((i1 | 0) == 3) break L299;
        HEAP32[i11 + (i1 << 2) >> 2] = 0;
        i1 = i1 + 1 | 0;
       }
      } while (0);
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i71);
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i75);
      i1 = i58;
     } else i1 = i73;
     if ((i1 | 0) == (i73 | 0)) {
      i1 = i73;
      break L1;
     }
     i2 = HEAP32[i74 + 4 >> 2] | 0;
     if ((HEAP32[i74 >> 2] | 0) == (i2 | 0)) {
      i1 = i73;
      break L1;
     }
     i6 = i74 + 16 | 0;
     HEAP32[i60 >> 2] = HEAP32[i74 + 12 >> 2];
     __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEC2EjRKS3_RKS5_(i61, i2 + -24 | 0, i60);
     i2 = i74 + 20 | 0;
     i3 = HEAP32[i2 >> 2] | 0;
     i73 = HEAP32[i74 + 24 >> 2] | 0;
     i4 = i73;
     if (i3 >>> 0 < i73 >>> 0) {
      HEAP32[i3 + 12 >> 2] = HEAP32[i61 + 12 >> 2];
      HEAP32[i3 >> 2] = HEAP32[i61 >> 2];
      i75 = i61 + 4 | 0;
      HEAP32[i3 + 4 >> 2] = HEAP32[i75 >> 2];
      i74 = i61 + 8 | 0;
      HEAP32[i3 + 8 >> 2] = HEAP32[i74 >> 2];
      HEAP32[i74 >> 2] = 0;
      HEAP32[i75 >> 2] = 0;
      HEAP32[i61 >> 2] = 0;
      HEAP32[i2 >> 2] = (HEAP32[i2 >> 2] | 0) + 16;
     } else {
      i2 = HEAP32[i6 >> 2] | 0;
      i73 = i3 - i2 | 0;
      i5 = i73 >> 4;
      i3 = i5 + 1 | 0;
      if ((i73 | 0) < -16) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i6);
      i2 = i4 - i2 | 0;
      if (i2 >> 4 >>> 0 < 1073741823) {
       i2 = i2 >> 3;
       i2 = i2 >>> 0 < i3 >>> 0 ? i3 : i2;
      } else i2 = 2147483647;
      __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEEC2EjjS9_(i75, i2, i5, i74 + 28 | 0);
      i74 = i75 + 8 | 0;
      i73 = HEAP32[i74 >> 2] | 0;
      HEAP32[i73 + 12 >> 2] = HEAP32[i61 + 12 >> 2];
      HEAP32[i73 >> 2] = HEAP32[i61 >> 2];
      i72 = i61 + 4 | 0;
      HEAP32[i73 + 4 >> 2] = HEAP32[i72 >> 2];
      i71 = i61 + 8 | 0;
      HEAP32[i73 + 8 >> 2] = HEAP32[i71 >> 2];
      HEAP32[i71 >> 2] = 0;
      HEAP32[i72 >> 2] = 0;
      HEAP32[i61 >> 2] = 0;
      HEAP32[i74 >> 2] = i73 + 16;
      __ZNSt3__16vectorINS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS7_EE(i6, i75);
      __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEED2Ev(i75);
     }
     __ZNSt3__113__vector_baseIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEED2Ev(i61);
     break L1;
    }
   case 79:
    {
     i15 = i74 + 4 | 0;
     i9 = ((HEAP32[i15 >> 2] | 0) - (HEAP32[i74 >> 2] | 0) | 0) / 24 | 0;
     i71 = i73 + 1 | 0;
     i1 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_(i71, i72, i74) | 0;
     i15 = ((HEAP32[i15 >> 2] | 0) - (HEAP32[i74 >> 2] | 0) | 0) / 24 | 0;
     if ((i1 | 0) == (i71 | 0)) {
      i1 = i73;
      break L1;
     }
     i7 = i74 + 16 | 0;
     i8 = HEAP32[i74 + 12 >> 2] | 0;
     i16 = i74 + 20 | 0;
     i2 = HEAP32[i16 >> 2] | 0;
     i71 = HEAP32[i74 + 24 >> 2] | 0;
     i3 = i71;
     if (i2 >>> 0 < i71 >>> 0) {
      HEAP32[i2 >> 2] = 0;
      HEAP32[i2 + 4 >> 2] = 0;
      HEAP32[i2 + 8 >> 2] = 0;
      HEAP32[i2 + 12 >> 2] = i8;
      HEAP32[i16 >> 2] = (HEAP32[i16 >> 2] | 0) + 16;
     } else {
      i4 = HEAP32[i7 >> 2] | 0;
      i71 = i2 - i4 | 0;
      i6 = i71 >> 4;
      i5 = i6 + 1 | 0;
      if ((i71 | 0) < -16) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i7);
      i2 = i3 - i4 | 0;
      if (i2 >> 4 >>> 0 < 1073741823) {
       i2 = i2 >> 3;
       i2 = i2 >>> 0 < i5 >>> 0 ? i5 : i2;
      } else i2 = 2147483647;
      __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEEC2EjjS9_(i75, i2, i6, i74 + 28 | 0);
      i71 = i75 + 8 | 0;
      i67 = HEAP32[i71 >> 2] | 0;
      HEAP32[i67 >> 2] = 0;
      HEAP32[i67 + 4 >> 2] = 0;
      HEAP32[i67 + 8 >> 2] = 0;
      HEAP32[i67 + 12 >> 2] = i8;
      HEAP32[i71 >> 2] = i67 + 16;
      __ZNSt3__16vectorINS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS7_EE(i7, i75);
      __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEED2Ev(i75);
     }
     i11 = i38 + 4 | 0;
     i12 = i38 + 8 | 0;
     i13 = i38 + 1 | 0;
     i14 = i75 + 8 | 0;
     while (1) {
      if (i9 >>> 0 >= i15 >>> 0) break L1;
      i71 = HEAP32[i74 >> 2] | 0;
      i67 = i71 + (i9 * 24 | 0) + 12 | 0;
      i66 = HEAP8[i67 >> 0] | 0;
      i3 = (i66 & 1) == 0;
      i66 = i3 ? (i66 & 255) >>> 1 : HEAP32[i71 + (i9 * 24 | 0) + 16 >> 2] | 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj(i38, i3 ? i67 + 1 | 0 : HEAP32[i71 + (i9 * 24 | 0) + 20 >> 2] | 0, i66 >>> 0 < 2 ? i66 : 2);
      i66 = HEAP8[i38 >> 0] | 0;
      i71 = (i66 & 1) == 0;
      i66 = i71 ? (i66 & 255) >>> 1 : HEAP32[i11 >> 2] | 0;
      i67 = i66 >>> 0 > 2;
      i71 = _memcmp(i71 ? i13 : HEAP32[i12 >> 2] | 0, 33610, i67 ? 2 : i66) | 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i38);
      i3 = HEAP32[i74 >> 2] | 0;
      if (((i71 | 0) == 0 ? (i66 >>> 0 < 2 ? -1 : i67 & 1) : i71) | 0) {
       i2 = HEAP16[i3 + (i9 * 24 | 0) + 12 >> 1] | 0;
       if (!(i2 & 1)) i2 = (i2 & 65535) >>> 8 & 255; else i2 = HEAP8[HEAP32[i3 + (i9 * 24 | 0) + 20 >> 2] >> 0] | 0;
       if (i2 << 24 >> 24 == 40) {
        __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc(i3 + (i9 * 24 | 0) | 0, 33619) | 0;
        __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc((HEAP32[i74 >> 2] | 0) + (i9 * 24 | 0) + 12 | 0, 0, 33621) | 0;
       }
      } else {
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc(i3 + (i9 * 24 | 0) | 0, 33671) | 0;
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc((HEAP32[i74 >> 2] | 0) + (i9 * 24 | 0) + 12 | 0, 0, 33621) | 0;
      }
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc((HEAP32[i74 >> 2] | 0) + (i9 * 24 | 0) | 0, 33663) | 0;
      i6 = HEAP32[i16 >> 2] | 0;
      i7 = i6 + -16 | 0;
      i8 = HEAP32[i74 >> 2] | 0;
      i10 = i8 + (i9 * 24 | 0) | 0;
      i2 = i6 + -12 | 0;
      i3 = HEAP32[i2 >> 2] | 0;
      i71 = HEAP32[i6 + -8 >> 2] | 0;
      i4 = i71;
      if ((i3 | 0) == (i71 | 0)) {
       i2 = HEAP32[i7 >> 2] | 0;
       i71 = i3 - i2 | 0;
       i5 = (i71 | 0) / 24 | 0;
       i3 = i5 + 1 | 0;
       if ((i71 | 0) < -24) {
        i1 = i7;
        break;
       }
       i2 = (i4 - i2 | 0) / 24 | 0;
       if (i2 >>> 0 < 1073741823) {
        i2 = i2 << 1;
        i2 = i2 >>> 0 < i3 >>> 0 ? i3 : i2;
       } else i2 = 2147483647;
       __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_(i75, i2, i5, i6 + -4 | 0);
       i71 = HEAP32[i14 >> 2] | 0;
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_(i71, i10);
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_(i71 + 12 | 0, i8 + (i9 * 24 | 0) + 12 | 0);
       HEAP32[i14 >> 2] = i71 + 24;
       __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i7, i75);
       __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev(i75);
      } else {
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_(i3, i10);
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_(i3 + 12 | 0, i8 + (i9 * 24 | 0) + 12 | 0);
       HEAP32[i2 >> 2] = (HEAP32[i2 >> 2] | 0) + 24;
      }
      i9 = i9 + 1 | 0;
     }
     __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i1);
     break;
    }
   case 80:
    {
     i21 = i74 + 4 | 0;
     i9 = ((HEAP32[i21 >> 2] | 0) - (HEAP32[i74 >> 2] | 0) | 0) / 24 | 0;
     i20 = i73 + 1 | 0;
     i1 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_(i20, i72, i74) | 0;
     i21 = ((HEAP32[i21 >> 2] | 0) - (HEAP32[i74 >> 2] | 0) | 0) / 24 | 0;
     if ((i1 | 0) == (i20 | 0)) {
      i1 = i73;
      break L1;
     }
     i7 = i74 + 16 | 0;
     i8 = HEAP32[i74 + 12 >> 2] | 0;
     i22 = i74 + 20 | 0;
     i2 = HEAP32[i22 >> 2] | 0;
     i71 = HEAP32[i74 + 24 >> 2] | 0;
     i3 = i71;
     if (i2 >>> 0 < i71 >>> 0) {
      HEAP32[i2 >> 2] = 0;
      HEAP32[i2 + 4 >> 2] = 0;
      HEAP32[i2 + 8 >> 2] = 0;
      HEAP32[i2 + 12 >> 2] = i8;
      HEAP32[i22 >> 2] = (HEAP32[i22 >> 2] | 0) + 16;
     } else {
      i4 = HEAP32[i7 >> 2] | 0;
      i71 = i2 - i4 | 0;
      i6 = i71 >> 4;
      i5 = i6 + 1 | 0;
      if ((i71 | 0) < -16) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i7);
      i2 = i3 - i4 | 0;
      if (i2 >> 4 >>> 0 < 1073741823) {
       i2 = i2 >> 3;
       i2 = i2 >>> 0 < i5 >>> 0 ? i5 : i2;
      } else i2 = 2147483647;
      __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEEC2EjjS9_(i75, i2, i6, i74 + 28 | 0);
      i71 = i75 + 8 | 0;
      i66 = HEAP32[i71 >> 2] | 0;
      HEAP32[i66 >> 2] = 0;
      HEAP32[i66 + 4 >> 2] = 0;
      HEAP32[i66 + 8 >> 2] = 0;
      HEAP32[i66 + 12 >> 2] = i8;
      HEAP32[i71 >> 2] = i66 + 16;
      __ZNSt3__16vectorINS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS7_EE(i7, i75);
      __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEED2Ev(i75);
     }
     i13 = i51 + 4 | 0;
     i14 = i51 + 8 | 0;
     i15 = i51 + 1 | 0;
     i16 = i52 + 4 | 0;
     i17 = i52 + 8 | 0;
     i18 = i52 + 1 | 0;
     i19 = i75 + 8 | 0;
     while (1) {
      if (i9 >>> 0 >= i21 >>> 0) break L1;
      i71 = HEAP32[i74 >> 2] | 0;
      i66 = i71 + (i9 * 24 | 0) + 12 | 0;
      i65 = HEAP8[i66 >> 0] | 0;
      i3 = (i65 & 1) == 0;
      i65 = i3 ? (i65 & 255) >>> 1 : HEAP32[i71 + (i9 * 24 | 0) + 16 >> 2] | 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj(i51, i3 ? i66 + 1 | 0 : HEAP32[i71 + (i9 * 24 | 0) + 20 >> 2] | 0, i65 >>> 0 < 2 ? i65 : 2);
      i65 = HEAP8[i51 >> 0] | 0;
      i71 = (i65 & 1) == 0;
      i65 = i71 ? (i65 & 255) >>> 1 : HEAP32[i13 >> 2] | 0;
      i66 = i65 >>> 0 > 2;
      i71 = _memcmp(i71 ? i15 : HEAP32[i14 >> 2] | 0, 33610, i66 ? 2 : i65) | 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i51);
      i3 = HEAP32[i74 >> 2] | 0;
      if (((i71 | 0) == 0 ? (i65 >>> 0 < 2 ? -1 : i66 & 1) : i71) | 0) {
       i2 = HEAP16[i3 + (i9 * 24 | 0) + 12 >> 1] | 0;
       if (!(i2 & 1)) i2 = (i2 & 65535) >>> 8 & 255; else i2 = HEAP8[HEAP32[i3 + (i9 * 24 | 0) + 20 >> 2] >> 0] | 0;
       if (i2 << 24 >> 24 == 40) {
        __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc(i3 + (i9 * 24 | 0) | 0, 33619) | 0;
        __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc((HEAP32[i74 >> 2] | 0) + (i9 * 24 | 0) + 12 | 0, 0, 33621) | 0;
       }
      } else {
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc(i3 + (i9 * 24 | 0) | 0, 33671) | 0;
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc((HEAP32[i74 >> 2] | 0) + (i9 * 24 | 0) + 12 | 0, 0, 33621) | 0;
      }
      i3 = HEAP32[i74 >> 2] | 0;
      i2 = i3 + (i9 * 24 | 0) | 0;
      do if ((HEAP8[i20 >> 0] | 0) == 85) {
       i65 = HEAP8[i2 >> 0] | 0;
       i71 = (i65 & 1) == 0;
       i65 = i71 ? (i65 & 255) >>> 1 : HEAP32[i3 + (i9 * 24 | 0) + 4 >> 2] | 0;
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj(i52, i71 ? i2 + 1 | 0 : HEAP32[i3 + (i9 * 24 | 0) + 8 >> 2] | 0, i65 >>> 0 < 12 ? i65 : 12);
       i65 = HEAP8[i52 >> 0] | 0;
       i71 = (i65 & 1) == 0;
       i65 = i71 ? (i65 & 255) >>> 1 : HEAP32[i16 >> 2] | 0;
       i66 = i65 >>> 0 > 12;
       i71 = _memcmp(i71 ? i18 : HEAP32[i17 >> 2] | 0, 34882, i66 ? 12 : i65) | 0;
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i52);
       i12 = HEAP32[i74 >> 2] | 0;
       i2 = i12 + (i9 * 24 | 0) | 0;
       if (!(((i71 | 0) == 0 ? (i65 >>> 0 < 12 ? -1 : i66 & 1) : i71) | 0)) {
        i3 = HEAP8[i2 >> 0] | 0;
        if (!(i3 & 1)) {
         i11 = (i3 & 255) >>> 1;
         i8 = i11 >>> 0 < 11 ? i11 : 11;
         i4 = 10;
        } else {
         i11 = HEAP32[i12 + (i9 * 24 | 0) + 4 >> 2] | 0;
         i3 = HEAP32[i2 >> 2] | 0;
         i8 = i11 >>> 0 < 11 ? i11 : 11;
         i4 = (i3 & -2) + -1 | 0;
         i3 = i3 & 255;
        }
        if ((i8 - i11 + i4 | 0) >>> 0 < 2) {
         __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE21__grow_by_and_replaceEjjjjjjPKc(i2, i4, 2 - i8 + i11 - i4 | 0, i11, 0, i8, 2, 34895);
         break;
        }
        if (!(i3 & 1)) i10 = i2 + 1 | 0; else i10 = HEAP32[i12 + (i9 * 24 | 0) + 8 >> 2] | 0;
        do if ((i8 | 0) != 2) {
         i7 = i11 - i8 | 0;
         if ((i11 | 0) == (i8 | 0)) {
          i4 = i8;
          i6 = 0;
          i5 = 34895;
          i3 = 2;
          i67 = 402;
         } else {
          if (i8 >>> 0 > 2) {
           HEAP8[i10 >> 0] = 105;
           HEAP8[i10 + 1 >> 0] = 100;
           _memmove(i10 + 2 | 0, i10 + i8 | 0, i7 | 0) | 0;
           i4 = i8;
           i3 = 2;
           break;
          }
          do if (i10 >>> 0 < 34895 >>> 0 & (i10 + i11 | 0) >>> 0 > 34895 >>> 0) if ((i10 + i8 | 0) >>> 0 > 34895 >>> 0) {
           _memcpy(i10 | 0, 34895, i8 | 0) | 0;
           i6 = i8;
           i5 = 34897;
           i4 = 0;
           i3 = 2 - i8 | 0;
           break;
          } else {
           i6 = 0;
           i5 = 34895 + (2 - i8) | 0;
           i4 = i8;
           i3 = 2;
           break;
          } else {
           i6 = 0;
           i5 = 34895;
           i4 = i8;
           i3 = 2;
          } while (0);
          i67 = i10 + i6 | 0;
          _memmove(i67 + i3 | 0, i67 + i4 | 0, i7 | 0) | 0;
          i67 = 402;
         }
        } else {
         i4 = 2;
         i6 = 0;
         i5 = 34895;
         i3 = 2;
         i67 = 402;
        } while (0);
        if ((i67 | 0) == 402) {
         i67 = 0;
         _memmove(i10 + i6 | 0, i5 | 0, i3 | 0) | 0;
        }
        i3 = i3 - i4 + i11 | 0;
        if (!(HEAP8[i2 >> 0] & 1)) HEAP8[i2 >> 0] = i3 << 1; else HEAP32[i12 + (i9 * 24 | 0) + 4 >> 2] = i3;
        HEAP8[i10 + i3 >> 0] = 0;
       } else i67 = 385;
      } else i67 = 385; while (0);
      if ((i67 | 0) == 385) {
       i67 = 0;
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc(i2, 33740) | 0;
      }
      i6 = HEAP32[i22 >> 2] | 0;
      i7 = i6 + -16 | 0;
      i8 = HEAP32[i74 >> 2] | 0;
      i10 = i8 + (i9 * 24 | 0) | 0;
      i2 = i6 + -12 | 0;
      i3 = HEAP32[i2 >> 2] | 0;
      i71 = HEAP32[i6 + -8 >> 2] | 0;
      i4 = i71;
      if ((i3 | 0) == (i71 | 0)) {
       i2 = HEAP32[i7 >> 2] | 0;
       i71 = i3 - i2 | 0;
       i5 = (i71 | 0) / 24 | 0;
       i3 = i5 + 1 | 0;
       if ((i71 | 0) < -24) {
        i1 = i7;
        break;
       }
       i2 = (i4 - i2 | 0) / 24 | 0;
       if (i2 >>> 0 < 1073741823) {
        i2 = i2 << 1;
        i2 = i2 >>> 0 < i3 >>> 0 ? i3 : i2;
       } else i2 = 2147483647;
       __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_(i75, i2, i5, i6 + -4 | 0);
       i71 = HEAP32[i19 >> 2] | 0;
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_(i71, i10);
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_(i71 + 12 | 0, i8 + (i9 * 24 | 0) + 12 | 0);
       HEAP32[i19 >> 2] = i71 + 24;
       __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i7, i75);
       __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev(i75);
      } else {
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_(i3, i10);
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_(i3 + 12 | 0, i8 + (i9 * 24 | 0) + 12 | 0);
       HEAP32[i2 >> 2] = (HEAP32[i2 >> 2] | 0) + 24;
      }
      i9 = i9 + 1 | 0;
     }
     __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i1);
     break;
    }
   case 82:
    {
     i15 = i74 + 4 | 0;
     i9 = ((HEAP32[i15 >> 2] | 0) - (HEAP32[i74 >> 2] | 0) | 0) / 24 | 0;
     i71 = i73 + 1 | 0;
     i1 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_(i71, i72, i74) | 0;
     i15 = ((HEAP32[i15 >> 2] | 0) - (HEAP32[i74 >> 2] | 0) | 0) / 24 | 0;
     if ((i1 | 0) == (i71 | 0)) {
      i1 = i73;
      break L1;
     }
     i7 = i74 + 16 | 0;
     i8 = HEAP32[i74 + 12 >> 2] | 0;
     i16 = i74 + 20 | 0;
     i2 = HEAP32[i16 >> 2] | 0;
     i71 = HEAP32[i74 + 24 >> 2] | 0;
     i3 = i71;
     if (i2 >>> 0 < i71 >>> 0) {
      HEAP32[i2 >> 2] = 0;
      HEAP32[i2 + 4 >> 2] = 0;
      HEAP32[i2 + 8 >> 2] = 0;
      HEAP32[i2 + 12 >> 2] = i8;
      HEAP32[i16 >> 2] = (HEAP32[i16 >> 2] | 0) + 16;
     } else {
      i4 = HEAP32[i7 >> 2] | 0;
      i71 = i2 - i4 | 0;
      i6 = i71 >> 4;
      i5 = i6 + 1 | 0;
      if ((i71 | 0) < -16) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i7);
      i2 = i3 - i4 | 0;
      if (i2 >> 4 >>> 0 < 1073741823) {
       i2 = i2 >> 3;
       i2 = i2 >>> 0 < i5 >>> 0 ? i5 : i2;
      } else i2 = 2147483647;
      __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEEC2EjjS9_(i75, i2, i6, i74 + 28 | 0);
      i71 = i75 + 8 | 0;
      i67 = HEAP32[i71 >> 2] | 0;
      HEAP32[i67 >> 2] = 0;
      HEAP32[i67 + 4 >> 2] = 0;
      HEAP32[i67 + 8 >> 2] = 0;
      HEAP32[i67 + 12 >> 2] = i8;
      HEAP32[i71 >> 2] = i67 + 16;
      __ZNSt3__16vectorINS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS7_EE(i7, i75);
      __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEED2Ev(i75);
     }
     i11 = i39 + 4 | 0;
     i12 = i39 + 8 | 0;
     i13 = i39 + 1 | 0;
     i14 = i75 + 8 | 0;
     while (1) {
      if (i9 >>> 0 >= i15 >>> 0) break L1;
      i71 = HEAP32[i74 >> 2] | 0;
      i67 = i71 + (i9 * 24 | 0) + 12 | 0;
      i66 = HEAP8[i67 >> 0] | 0;
      i3 = (i66 & 1) == 0;
      i66 = i3 ? (i66 & 255) >>> 1 : HEAP32[i71 + (i9 * 24 | 0) + 16 >> 2] | 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj(i39, i3 ? i67 + 1 | 0 : HEAP32[i71 + (i9 * 24 | 0) + 20 >> 2] | 0, i66 >>> 0 < 2 ? i66 : 2);
      i66 = HEAP8[i39 >> 0] | 0;
      i71 = (i66 & 1) == 0;
      i66 = i71 ? (i66 & 255) >>> 1 : HEAP32[i11 >> 2] | 0;
      i67 = i66 >>> 0 > 2;
      i71 = _memcmp(i71 ? i13 : HEAP32[i12 >> 2] | 0, 33610, i67 ? 2 : i66) | 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i39);
      i3 = HEAP32[i74 >> 2] | 0;
      if (((i71 | 0) == 0 ? (i66 >>> 0 < 2 ? -1 : i67 & 1) : i71) | 0) {
       i2 = HEAP16[i3 + (i9 * 24 | 0) + 12 >> 1] | 0;
       if (!(i2 & 1)) i2 = (i2 & 65535) >>> 8 & 255; else i2 = HEAP8[HEAP32[i3 + (i9 * 24 | 0) + 20 >> 2] >> 0] | 0;
       if (i2 << 24 >> 24 == 40) {
        __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc(i3 + (i9 * 24 | 0) | 0, 33619) | 0;
        __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc((HEAP32[i74 >> 2] | 0) + (i9 * 24 | 0) + 12 | 0, 0, 33621) | 0;
       }
      } else {
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc(i3 + (i9 * 24 | 0) | 0, 33671) | 0;
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc((HEAP32[i74 >> 2] | 0) + (i9 * 24 | 0) + 12 | 0, 0, 33621) | 0;
      }
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc((HEAP32[i74 >> 2] | 0) + (i9 * 24 | 0) | 0, 33674) | 0;
      i6 = HEAP32[i16 >> 2] | 0;
      i7 = i6 + -16 | 0;
      i8 = HEAP32[i74 >> 2] | 0;
      i10 = i8 + (i9 * 24 | 0) | 0;
      i2 = i6 + -12 | 0;
      i3 = HEAP32[i2 >> 2] | 0;
      i71 = HEAP32[i6 + -8 >> 2] | 0;
      i4 = i71;
      if ((i3 | 0) == (i71 | 0)) {
       i2 = HEAP32[i7 >> 2] | 0;
       i71 = i3 - i2 | 0;
       i5 = (i71 | 0) / 24 | 0;
       i3 = i5 + 1 | 0;
       if ((i71 | 0) < -24) {
        i1 = i7;
        break;
       }
       i2 = (i4 - i2 | 0) / 24 | 0;
       if (i2 >>> 0 < 1073741823) {
        i2 = i2 << 1;
        i2 = i2 >>> 0 < i3 >>> 0 ? i3 : i2;
       } else i2 = 2147483647;
       __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_(i75, i2, i5, i6 + -4 | 0);
       i71 = HEAP32[i14 >> 2] | 0;
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_(i71, i10);
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_(i71 + 12 | 0, i8 + (i9 * 24 | 0) + 12 | 0);
       HEAP32[i14 >> 2] = i71 + 24;
       __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i7, i75);
       __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev(i75);
      } else {
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_(i3, i10);
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_(i3 + 12 | 0, i8 + (i9 * 24 | 0) + 12 | 0);
       HEAP32[i2 >> 2] = (HEAP32[i2 >> 2] | 0) + 24;
      }
      i9 = i9 + 1 | 0;
     }
     __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i1);
     break;
    }
   case 84:
    {
     i15 = i74 + 4 | 0;
     i12 = ((HEAP32[i15 >> 2] | 0) - (HEAP32[i74 >> 2] | 0) | 0) / 24 | 0;
     i1 = __ZN10__cxxabiv112_GLOBAL__N_120parse_template_paramINS0_2DbEEEPKcS4_S4_RT_(i73, i72, i74) | 0;
     i13 = ((HEAP32[i15 >> 2] | 0) - (HEAP32[i74 >> 2] | 0) | 0) / 24 | 0;
     if ((i1 | 0) == (i73 | 0)) {
      i1 = i73;
      break L1;
     }
     i18 = i74 + 16 | 0;
     i14 = i74 + 12 | 0;
     i7 = HEAP32[i14 >> 2] | 0;
     i17 = i74 + 20 | 0;
     i2 = HEAP32[i17 >> 2] | 0;
     i16 = i74 + 24 | 0;
     i73 = HEAP32[i16 >> 2] | 0;
     i3 = i73;
     if (i2 >>> 0 < i73 >>> 0) {
      HEAP32[i2 >> 2] = 0;
      HEAP32[i2 + 4 >> 2] = 0;
      HEAP32[i2 + 8 >> 2] = 0;
      HEAP32[i2 + 12 >> 2] = i7;
      HEAP32[i17 >> 2] = (HEAP32[i17 >> 2] | 0) + 16;
     } else {
      i4 = HEAP32[i18 >> 2] | 0;
      i73 = i2 - i4 | 0;
      i6 = i73 >> 4;
      i5 = i6 + 1 | 0;
      if ((i73 | 0) < -16) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i18);
      i2 = i3 - i4 | 0;
      if (i2 >> 4 >>> 0 < 1073741823) {
       i2 = i2 >> 3;
       i2 = i2 >>> 0 < i5 >>> 0 ? i5 : i2;
      } else i2 = 2147483647;
      __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEEC2EjjS9_(i75, i2, i6, i74 + 28 | 0);
      i73 = i75 + 8 | 0;
      i70 = HEAP32[i73 >> 2] | 0;
      HEAP32[i70 >> 2] = 0;
      HEAP32[i70 + 4 >> 2] = 0;
      HEAP32[i70 + 8 >> 2] = 0;
      HEAP32[i70 + 12 >> 2] = i7;
      HEAP32[i73 >> 2] = i70 + 16;
      __ZNSt3__16vectorINS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS7_EE(i18, i75);
      __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEED2Ev(i75);
     }
     i7 = i75 + 8 | 0;
     i11 = i12;
     while (1) {
      if (i11 >>> 0 >= i13 >>> 0) break;
      i8 = HEAP32[i17 >> 2] | 0;
      i2 = i8 + -16 | 0;
      i9 = HEAP32[i74 >> 2] | 0;
      i10 = i9 + (i11 * 24 | 0) | 0;
      i3 = i8 + -12 | 0;
      i4 = HEAP32[i3 >> 2] | 0;
      i73 = HEAP32[i8 + -8 >> 2] | 0;
      i5 = i73;
      if ((i4 | 0) == (i73 | 0)) {
       i3 = HEAP32[i2 >> 2] | 0;
       i73 = i4 - i3 | 0;
       i6 = (i73 | 0) / 24 | 0;
       i4 = i6 + 1 | 0;
       if ((i73 | 0) < -24) {
        i67 = 455;
        break;
       }
       i3 = (i5 - i3 | 0) / 24 | 0;
       if (i3 >>> 0 < 1073741823) {
        i3 = i3 << 1;
        i3 = i3 >>> 0 < i4 >>> 0 ? i4 : i3;
       } else i3 = 2147483647;
       __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_(i75, i3, i6, i8 + -4 | 0);
       i73 = HEAP32[i7 >> 2] | 0;
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_(i73, i10);
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_(i73 + 12 | 0, i9 + (i11 * 24 | 0) + 12 | 0);
       HEAP32[i7 >> 2] = i73 + 24;
       __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i2, i75);
       __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev(i75);
      } else {
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_(i4, i10);
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_(i4 + 12 | 0, i9 + (i11 * 24 | 0) + 12 | 0);
       HEAP32[i3 >> 2] = (HEAP32[i3 >> 2] | 0) + 24;
      }
      i11 = i11 + 1 | 0;
     }
     if ((i67 | 0) == 455) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i2);
     if (!((i13 | 0) == (i12 + 1 | 0) & (HEAP8[i74 + 63 >> 0] | 0) != 0)) break L1;
     i6 = __ZN10__cxxabiv112_GLOBAL__N_119parse_template_argsINS0_2DbEEEPKcS4_S4_RT_(i1, i72, i74) | 0;
     if ((i6 | 0) == (i1 | 0)) break L1;
     __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv(i71, (HEAP32[i15 >> 2] | 0) + -24 | 0);
     i1 = HEAP32[i15 >> 2] | 0;
     i2 = i1 + -24 | 0;
     i3 = i1;
     while (1) {
      if ((i3 | 0) == (i2 | 0)) break;
      i73 = i3 + -24 | 0;
      HEAP32[i15 >> 2] = i73;
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i73);
      i3 = HEAP32[i15 >> 2] | 0;
     }
     i73 = HEAP8[i71 >> 0] | 0;
     i4 = (i73 & 1) == 0;
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj(i1 + -48 | 0, i4 ? i71 + 1 | 0 : HEAP32[i71 + 8 >> 2] | 0, i4 ? (i73 & 255) >>> 1 : HEAP32[i71 + 4 >> 2] | 0) | 0;
     i1 = (HEAP32[i15 >> 2] | 0) + -24 | 0;
     HEAP32[i41 >> 2] = HEAP32[i14 >> 2];
     __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEC2EjRKS3_RKS5_(i43, i1, i41);
     i1 = HEAP32[i17 >> 2] | 0;
     i73 = HEAP32[i16 >> 2] | 0;
     i4 = i73;
     if (i1 >>> 0 < i73 >>> 0) {
      HEAP32[i1 + 12 >> 2] = HEAP32[i43 + 12 >> 2];
      HEAP32[i1 >> 2] = HEAP32[i43 >> 2];
      i75 = i43 + 4 | 0;
      HEAP32[i1 + 4 >> 2] = HEAP32[i75 >> 2];
      i74 = i43 + 8 | 0;
      HEAP32[i1 + 8 >> 2] = HEAP32[i74 >> 2];
      HEAP32[i74 >> 2] = 0;
      HEAP32[i75 >> 2] = 0;
      HEAP32[i43 >> 2] = 0;
      HEAP32[i17 >> 2] = (HEAP32[i17 >> 2] | 0) + 16;
     } else {
      i2 = HEAP32[i18 >> 2] | 0;
      i73 = i1 - i2 | 0;
      i5 = i73 >> 4;
      i3 = i5 + 1 | 0;
      if ((i73 | 0) < -16) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i18);
      i1 = i4 - i2 | 0;
      if (i1 >> 4 >>> 0 < 1073741823) {
       i1 = i1 >> 3;
       i1 = i1 >>> 0 < i3 >>> 0 ? i3 : i1;
      } else i1 = 2147483647;
      __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEEC2EjjS9_(i75, i1, i5, i74 + 28 | 0);
      i74 = i75 + 8 | 0;
      i73 = HEAP32[i74 >> 2] | 0;
      HEAP32[i73 + 12 >> 2] = HEAP32[i43 + 12 >> 2];
      HEAP32[i73 >> 2] = HEAP32[i43 >> 2];
      i72 = i43 + 4 | 0;
      HEAP32[i73 + 4 >> 2] = HEAP32[i72 >> 2];
      i70 = i43 + 8 | 0;
      HEAP32[i73 + 8 >> 2] = HEAP32[i70 >> 2];
      HEAP32[i70 >> 2] = 0;
      HEAP32[i72 >> 2] = 0;
      HEAP32[i43 >> 2] = 0;
      HEAP32[i74 >> 2] = i73 + 16;
      __ZNSt3__16vectorINS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS7_EE(i18, i75);
      __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEED2Ev(i75);
     }
     __ZNSt3__113__vector_baseIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEED2Ev(i43);
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i71);
     i1 = i6;
     break L1;
    }
   case 85:
    {
     i1 = i73 + 1 | 0;
     if ((i1 | 0) == (i72 | 0)) {
      i1 = i73;
      break L1;
     }
     i2 = __ZN10__cxxabiv112_GLOBAL__N_117parse_source_nameINS0_2DbEEEPKcS4_S4_RT_(i1, i72, i74) | 0;
     if ((i2 | 0) == (i1 | 0)) {
      i1 = i73;
      break L1;
     }
     i1 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_(i2, i72, i74) | 0;
     if ((i1 | 0) == (i2 | 0)) {
      i1 = i73;
      break L1;
     }
     i7 = i74 + 4 | 0;
     i2 = HEAP32[i7 >> 2] | 0;
     if (((i2 - (HEAP32[i74 >> 2] | 0) | 0) / 24 | 0) >>> 0 < 2) {
      i1 = i73;
      break L1;
     }
     __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv(i71, i2 + -24 | 0);
     i2 = HEAP32[i7 >> 2] | 0;
     i3 = i2 + -24 | 0;
     i4 = i2;
     while (1) {
      if ((i4 | 0) == (i3 | 0)) break;
      i73 = i4 + -24 | 0;
      HEAP32[i7 >> 2] = i73;
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i73);
      i4 = HEAP32[i7 >> 2] | 0;
     }
     i73 = i2 + -48 | 0;
     i70 = HEAP8[i73 >> 0] | 0;
     i72 = (i70 & 1) == 0;
     i70 = i72 ? (i70 & 255) >>> 1 : HEAP32[i2 + -44 >> 2] | 0;
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj(i13, i72 ? i73 + 1 | 0 : HEAP32[i2 + -40 >> 2] | 0, i70 >>> 0 < 9 ? i70 : 9);
     i70 = HEAP8[i13 >> 0] | 0;
     i73 = (i70 & 1) == 0;
     i70 = i73 ? (i70 & 255) >>> 1 : HEAP32[i13 + 4 >> 2] | 0;
     i72 = i70 >>> 0 > 9;
     i73 = _memcmp(i73 ? i13 + 1 | 0 : HEAP32[i13 + 8 >> 2] | 0, 34898, i72 ? 9 : i70) | 0;
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i13);
     if (!(((i73 | 0) == 0 ? (i70 >>> 0 < 9 ? -1 : i72 & 1) : i73) | 0)) {
      __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv(i59, (HEAP32[i7 >> 2] | 0) + -24 | 0);
      i3 = HEAP32[i7 >> 2] | 0;
      i2 = i3 + -24 | 0;
      while (1) {
       if ((i3 | 0) == (i2 | 0)) break;
       i73 = i3 + -24 | 0;
       HEAP32[i7 >> 2] = i73;
       __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i73);
       i3 = HEAP32[i7 >> 2] | 0;
      }
      i73 = HEAP8[i59 >> 0] | 0;
      i72 = (i73 & 1) == 0;
      i2 = i59 + 8 | 0;
      i3 = i59 + 1 | 0;
      i70 = i72 ? i3 : HEAP32[i2 >> 2] | 0;
      i4 = i59 + 4 | 0;
      i73 = __ZN10__cxxabiv112_GLOBAL__N_117parse_source_nameINS0_2DbEEEPKcS4_S4_RT_(i70 + 9 | 0, i70 + (i72 ? (i73 & 255) >>> 1 : HEAP32[i4 >> 2] | 0) | 0, i74) | 0;
      if ((i73 | 0) == (((HEAP8[i59 >> 0] & 1) == 0 ? i3 : HEAP32[i2 >> 2] | 0) + 9 | 0)) {
       __ZNSt3__1plIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEENS_12basic_stringIT_T0_T1_EERKSB_PKS8_(i33, i71, 34710);
       i73 = HEAP8[i59 >> 0] | 0;
       i72 = (i73 & 1) == 0;
       i2 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj(i33, i72 ? i3 : HEAP32[i2 >> 2] | 0, i72 ? (i73 & 255) >>> 1 : HEAP32[i4 >> 2] | 0) | 0;
       HEAP32[i32 >> 2] = HEAP32[i2 >> 2];
       HEAP32[i32 + 4 >> 2] = HEAP32[i2 + 4 >> 2];
       HEAP32[i32 + 8 >> 2] = HEAP32[i2 + 8 >> 2];
       i3 = 0;
       while (1) {
        if ((i3 | 0) == 3) break;
        HEAP32[i2 + (i3 << 2) >> 2] = 0;
        i3 = i3 + 1 | 0;
       }
       __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE(i31, i32);
       i2 = HEAP32[i7 >> 2] | 0;
       i73 = HEAP32[i74 + 8 >> 2] | 0;
       i3 = i73;
       if (i2 >>> 0 < i73 >>> 0) {
        __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i2, i31);
        HEAP32[i7 >> 2] = (HEAP32[i7 >> 2] | 0) + 24;
       } else {
        i4 = HEAP32[i74 >> 2] | 0;
        i73 = i2 - i4 | 0;
        i6 = (i73 | 0) / 24 | 0;
        i5 = i6 + 1 | 0;
        if ((i73 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i74);
        i2 = (i3 - i4 | 0) / 24 | 0;
        if (i2 >>> 0 < 1073741823) {
         i2 = i2 << 1;
         i2 = i2 >>> 0 < i5 >>> 0 ? i5 : i2;
        } else i2 = 2147483647;
        __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_(i75, i2, i6, i74 + 12 | 0);
        i73 = i75 + 8 | 0;
        i72 = HEAP32[i73 >> 2] | 0;
        __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i72, i31);
        HEAP32[i73 >> 2] = i72 + 24;
        __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i74, i75);
        __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev(i75);
       }
       __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i31);
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i32);
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i33);
      } else {
       i4 = (HEAP32[i7 >> 2] | 0) + -24 | 0;
       __ZNSt3__1plIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEENS_12basic_stringIT_T0_T1_EERKSB_PKS8_(i27, i71, 34251);
       __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv(i28, (HEAP32[i7 >> 2] | 0) + -24 | 0);
       i2 = HEAP8[i28 >> 0] | 0;
       i3 = (i2 & 1) == 0;
       i2 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj(i27, i3 ? i28 + 1 | 0 : HEAP32[i28 + 8 >> 2] | 0, i3 ? (i2 & 255) >>> 1 : HEAP32[i28 + 4 >> 2] | 0) | 0;
       HEAP32[i26 >> 2] = HEAP32[i2 >> 2];
       HEAP32[i26 + 4 >> 2] = HEAP32[i2 + 4 >> 2];
       HEAP32[i26 + 8 >> 2] = HEAP32[i2 + 8 >> 2];
       i3 = 0;
       while (1) {
        if ((i3 | 0) == 3) break;
        HEAP32[i2 + (i3 << 2) >> 2] = 0;
        i3 = i3 + 1 | 0;
       }
       i2 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc(i26, 33666) | 0;
       HEAP32[i25 >> 2] = HEAP32[i2 >> 2];
       HEAP32[i25 + 4 >> 2] = HEAP32[i2 + 4 >> 2];
       HEAP32[i25 + 8 >> 2] = HEAP32[i2 + 8 >> 2];
       i3 = 0;
       while (1) {
        if ((i3 | 0) == 3) break;
        HEAP32[i2 + (i3 << 2) >> 2] = 0;
        i3 = i3 + 1 | 0;
       }
       __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE(i24, i25);
       __ZN10__cxxabiv112_GLOBAL__N_111string_pairaSEOS1_(i4, i24);
       __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i24);
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i25);
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i26);
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i28);
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i27);
      }
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i59);
     } else {
      i2 = (HEAP32[i7 >> 2] | 0) + -24 | 0;
      __ZNSt3__1plIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEENS_12basic_stringIT_T0_T1_EERKSB_PKS8_(i17, i71, 34710);
      __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv(i18, (HEAP32[i7 >> 2] | 0) + -24 | 0);
      i3 = HEAP8[i18 >> 0] | 0;
      i4 = (i3 & 1) == 0;
      i3 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj(i17, i4 ? i18 + 1 | 0 : HEAP32[i18 + 8 >> 2] | 0, i4 ? (i3 & 255) >>> 1 : HEAP32[i18 + 4 >> 2] | 0) | 0;
      HEAP32[i16 >> 2] = HEAP32[i3 >> 2];
      HEAP32[i16 + 4 >> 2] = HEAP32[i3 + 4 >> 2];
      HEAP32[i16 + 8 >> 2] = HEAP32[i3 + 8 >> 2];
      i4 = 0;
      while (1) {
       if ((i4 | 0) == 3) break;
       HEAP32[i3 + (i4 << 2) >> 2] = 0;
       i4 = i4 + 1 | 0;
      }
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE(i15, i16);
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairaSEOS1_(i2, i15);
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i15);
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i16);
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i18);
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i17);
     }
     i6 = (HEAP32[i7 >> 2] | 0) + -24 | 0;
     HEAP32[i37 >> 2] = HEAP32[i74 + 12 >> 2];
     __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEC2EjRKS3_RKS5_(i42, i6, i37);
     i6 = i74 + 16 | 0;
     i2 = i74 + 20 | 0;
     i3 = HEAP32[i2 >> 2] | 0;
     i73 = HEAP32[i74 + 24 >> 2] | 0;
     i4 = i73;
     if (i3 >>> 0 < i73 >>> 0) {
      HEAP32[i3 + 12 >> 2] = HEAP32[i42 + 12 >> 2];
      HEAP32[i3 >> 2] = HEAP32[i42 >> 2];
      i75 = i42 + 4 | 0;
      HEAP32[i3 + 4 >> 2] = HEAP32[i75 >> 2];
      i74 = i42 + 8 | 0;
      HEAP32[i3 + 8 >> 2] = HEAP32[i74 >> 2];
      HEAP32[i74 >> 2] = 0;
      HEAP32[i75 >> 2] = 0;
      HEAP32[i42 >> 2] = 0;
      HEAP32[i2 >> 2] = (HEAP32[i2 >> 2] | 0) + 16;
     } else {
      i2 = HEAP32[i6 >> 2] | 0;
      i73 = i3 - i2 | 0;
      i5 = i73 >> 4;
      i3 = i5 + 1 | 0;
      if ((i73 | 0) < -16) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i6);
      i2 = i4 - i2 | 0;
      if (i2 >> 4 >>> 0 < 1073741823) {
       i2 = i2 >> 3;
       i2 = i2 >>> 0 < i3 >>> 0 ? i3 : i2;
      } else i2 = 2147483647;
      __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEEC2EjjS9_(i75, i2, i5, i74 + 28 | 0);
      i74 = i75 + 8 | 0;
      i73 = HEAP32[i74 >> 2] | 0;
      HEAP32[i73 + 12 >> 2] = HEAP32[i42 + 12 >> 2];
      HEAP32[i73 >> 2] = HEAP32[i42 >> 2];
      i72 = i42 + 4 | 0;
      HEAP32[i73 + 4 >> 2] = HEAP32[i72 >> 2];
      i70 = i42 + 8 | 0;
      HEAP32[i73 + 8 >> 2] = HEAP32[i70 >> 2];
      HEAP32[i70 >> 2] = 0;
      HEAP32[i72 >> 2] = 0;
      HEAP32[i42 >> 2] = 0;
      HEAP32[i74 >> 2] = i73 + 16;
      __ZNSt3__16vectorINS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS7_EE(i6, i75);
      __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEED2Ev(i75);
     }
     __ZNSt3__113__vector_baseIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEED2Ev(i42);
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i71);
     break L1;
    }
   case 83:
    {
     i70 = i73 + 1 | 0;
     if ((i70 | 0) != (i72 | 0) ? (HEAP8[i70 >> 0] | 0) == 116 : 0) {
      i1 = __ZN10__cxxabiv112_GLOBAL__N_110parse_nameINS0_2DbEEEPKcS4_S4_RT_(i73, i72, i74) | 0;
      if ((i1 | 0) == (i73 | 0)) {
       i1 = i73;
       break L1;
      }
      i2 = HEAP32[i74 + 4 >> 2] | 0;
      if ((HEAP32[i74 >> 2] | 0) == (i2 | 0)) {
       i1 = i73;
       break L1;
      }
      i6 = i74 + 16 | 0;
      HEAP32[i7 >> 2] = HEAP32[i74 + 12 >> 2];
      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEC2EjRKS3_RKS5_(i19, i2 + -24 | 0, i7);
      i2 = i74 + 20 | 0;
      i3 = HEAP32[i2 >> 2] | 0;
      i73 = HEAP32[i74 + 24 >> 2] | 0;
      i4 = i73;
      if (i3 >>> 0 < i73 >>> 0) {
       HEAP32[i3 + 12 >> 2] = HEAP32[i19 + 12 >> 2];
       HEAP32[i3 >> 2] = HEAP32[i19 >> 2];
       i75 = i19 + 4 | 0;
       HEAP32[i3 + 4 >> 2] = HEAP32[i75 >> 2];
       i74 = i19 + 8 | 0;
       HEAP32[i3 + 8 >> 2] = HEAP32[i74 >> 2];
       HEAP32[i74 >> 2] = 0;
       HEAP32[i75 >> 2] = 0;
       HEAP32[i19 >> 2] = 0;
       HEAP32[i2 >> 2] = (HEAP32[i2 >> 2] | 0) + 16;
      } else {
       i2 = HEAP32[i6 >> 2] | 0;
       i73 = i3 - i2 | 0;
       i5 = i73 >> 4;
       i3 = i5 + 1 | 0;
       if ((i73 | 0) < -16) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i6);
       i2 = i4 - i2 | 0;
       if (i2 >> 4 >>> 0 < 1073741823) {
        i2 = i2 >> 3;
        i2 = i2 >>> 0 < i3 >>> 0 ? i3 : i2;
       } else i2 = 2147483647;
       __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEEC2EjjS9_(i75, i2, i5, i74 + 28 | 0);
       i74 = i75 + 8 | 0;
       i73 = HEAP32[i74 >> 2] | 0;
       HEAP32[i73 + 12 >> 2] = HEAP32[i19 + 12 >> 2];
       HEAP32[i73 >> 2] = HEAP32[i19 >> 2];
       i72 = i19 + 4 | 0;
       HEAP32[i73 + 4 >> 2] = HEAP32[i72 >> 2];
       i71 = i19 + 8 | 0;
       HEAP32[i73 + 8 >> 2] = HEAP32[i71 >> 2];
       HEAP32[i71 >> 2] = 0;
       HEAP32[i72 >> 2] = 0;
       HEAP32[i19 >> 2] = 0;
       HEAP32[i74 >> 2] = i73 + 16;
       __ZNSt3__16vectorINS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS7_EE(i6, i75);
       __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEED2Ev(i75);
      }
      __ZNSt3__113__vector_baseIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEED2Ev(i19);
      break L1;
     }
     i1 = __ZN10__cxxabiv112_GLOBAL__N_118parse_substitutionINS0_2DbEEEPKcS4_S4_RT_(i73, i72, i74) | 0;
     if ((i1 | 0) == (i73 | 0)) {
      i1 = i73;
      break L1;
     }
     i6 = __ZN10__cxxabiv112_GLOBAL__N_119parse_template_argsINS0_2DbEEEPKcS4_S4_RT_(i1, i72, i74) | 0;
     if ((i6 | 0) == (i1 | 0)) break L1;
     i4 = i74 + 4 | 0;
     i2 = HEAP32[i4 >> 2] | 0;
     if (((i2 - (HEAP32[i74 >> 2] | 0) | 0) / 24 | 0) >>> 0 < 2) break L1;
     __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv(i71, i2 + -24 | 0);
     i1 = HEAP32[i4 >> 2] | 0;
     i2 = i1 + -24 | 0;
     i3 = i1;
     while (1) {
      if ((i3 | 0) == (i2 | 0)) break;
      i73 = i3 + -24 | 0;
      HEAP32[i4 >> 2] = i73;
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i73);
      i3 = HEAP32[i4 >> 2] | 0;
     }
     i5 = HEAP8[i71 >> 0] | 0;
     i2 = (i5 & 1) == 0;
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj(i1 + -48 | 0, i2 ? i71 + 1 | 0 : HEAP32[i71 + 8 >> 2] | 0, i2 ? (i5 & 255) >>> 1 : HEAP32[i71 + 4 >> 2] | 0) | 0;
     i5 = (HEAP32[i4 >> 2] | 0) + -24 | 0;
     HEAP32[i12 >> 2] = HEAP32[i74 + 12 >> 2];
     __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEC2EjRKS3_RKS5_(i23, i5, i12);
     i5 = i74 + 16 | 0;
     i1 = i74 + 20 | 0;
     i2 = HEAP32[i1 >> 2] | 0;
     i73 = HEAP32[i74 + 24 >> 2] | 0;
     i3 = i73;
     if (i2 >>> 0 < i73 >>> 0) {
      HEAP32[i2 + 12 >> 2] = HEAP32[i23 + 12 >> 2];
      HEAP32[i2 >> 2] = HEAP32[i23 >> 2];
      i75 = i23 + 4 | 0;
      HEAP32[i2 + 4 >> 2] = HEAP32[i75 >> 2];
      i74 = i23 + 8 | 0;
      HEAP32[i2 + 8 >> 2] = HEAP32[i74 >> 2];
      HEAP32[i74 >> 2] = 0;
      HEAP32[i75 >> 2] = 0;
      HEAP32[i23 >> 2] = 0;
      HEAP32[i1 >> 2] = (HEAP32[i1 >> 2] | 0) + 16;
     } else {
      i1 = HEAP32[i5 >> 2] | 0;
      i73 = i2 - i1 | 0;
      i4 = i73 >> 4;
      i2 = i4 + 1 | 0;
      if ((i73 | 0) < -16) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i5);
      i1 = i3 - i1 | 0;
      if (i1 >> 4 >>> 0 < 1073741823) {
       i1 = i1 >> 3;
       i1 = i1 >>> 0 < i2 >>> 0 ? i2 : i1;
      } else i1 = 2147483647;
      __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEEC2EjjS9_(i75, i1, i4, i74 + 28 | 0);
      i74 = i75 + 8 | 0;
      i73 = HEAP32[i74 >> 2] | 0;
      HEAP32[i73 + 12 >> 2] = HEAP32[i23 + 12 >> 2];
      HEAP32[i73 >> 2] = HEAP32[i23 >> 2];
      i72 = i23 + 4 | 0;
      HEAP32[i73 + 4 >> 2] = HEAP32[i72 >> 2];
      i70 = i23 + 8 | 0;
      HEAP32[i73 + 8 >> 2] = HEAP32[i70 >> 2];
      HEAP32[i70 >> 2] = 0;
      HEAP32[i72 >> 2] = 0;
      HEAP32[i23 >> 2] = 0;
      HEAP32[i74 >> 2] = i73 + 16;
      __ZNSt3__16vectorINS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS7_EE(i5, i75);
      __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEED2Ev(i75);
     }
     __ZNSt3__113__vector_baseIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEED2Ev(i23);
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i71);
     i1 = i6;
     break L1;
    }
   case 68:
    {
     i1 = i73 + 1 | 0;
     if ((i1 | 0) != (i72 | 0)) {
      i1 = HEAP8[i1 >> 0] | 0;
      switch (i1 << 24 >> 24 | 0) {
      case 112:
       {
        i12 = i74 + 4 | 0;
        i9 = ((HEAP32[i12 >> 2] | 0) - (HEAP32[i74 >> 2] | 0) | 0) / 24 | 0;
        i71 = i73 + 2 | 0;
        i1 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_(i71, i72, i74) | 0;
        i12 = ((HEAP32[i12 >> 2] | 0) - (HEAP32[i74 >> 2] | 0) | 0) / 24 | 0;
        if ((i1 | 0) == (i71 | 0)) break L69;
        i7 = i74 + 16 | 0;
        i8 = HEAP32[i74 + 12 >> 2] | 0;
        i13 = i74 + 20 | 0;
        i2 = HEAP32[i13 >> 2] | 0;
        i71 = HEAP32[i74 + 24 >> 2] | 0;
        i3 = i71;
        if (i2 >>> 0 < i71 >>> 0) {
         HEAP32[i2 >> 2] = 0;
         HEAP32[i2 + 4 >> 2] = 0;
         HEAP32[i2 + 8 >> 2] = 0;
         HEAP32[i2 + 12 >> 2] = i8;
         HEAP32[i13 >> 2] = (HEAP32[i13 >> 2] | 0) + 16;
        } else {
         i4 = HEAP32[i7 >> 2] | 0;
         i71 = i2 - i4 | 0;
         i6 = i71 >> 4;
         i5 = i6 + 1 | 0;
         if ((i71 | 0) < -16) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i7);
         i2 = i3 - i4 | 0;
         if (i2 >> 4 >>> 0 < 1073741823) {
          i2 = i2 >> 3;
          i2 = i2 >>> 0 < i5 >>> 0 ? i5 : i2;
         } else i2 = 2147483647;
         __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEEC2EjjS9_(i75, i2, i6, i74 + 28 | 0);
         i71 = i75 + 8 | 0;
         i67 = HEAP32[i71 >> 2] | 0;
         HEAP32[i67 >> 2] = 0;
         HEAP32[i67 + 4 >> 2] = 0;
         HEAP32[i67 + 8 >> 2] = 0;
         HEAP32[i67 + 12 >> 2] = i8;
         HEAP32[i71 >> 2] = i67 + 16;
         __ZNSt3__16vectorINS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS7_EE(i7, i75);
         __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEED2Ev(i75);
        }
        i11 = i75 + 8 | 0;
        while (1) {
         if (i9 >>> 0 >= i12 >>> 0) break L1;
         i6 = HEAP32[i13 >> 2] | 0;
         i7 = i6 + -16 | 0;
         i8 = HEAP32[i74 >> 2] | 0;
         i10 = i8 + (i9 * 24 | 0) | 0;
         i2 = i6 + -12 | 0;
         i3 = HEAP32[i2 >> 2] | 0;
         i71 = HEAP32[i6 + -8 >> 2] | 0;
         i4 = i71;
         if ((i3 | 0) == (i71 | 0)) {
          i2 = HEAP32[i7 >> 2] | 0;
          i71 = i3 - i2 | 0;
          i5 = (i71 | 0) / 24 | 0;
          i3 = i5 + 1 | 0;
          if ((i71 | 0) < -24) {
           i1 = i7;
           break;
          }
          i2 = (i4 - i2 | 0) / 24 | 0;
          if (i2 >>> 0 < 1073741823) {
           i2 = i2 << 1;
           i2 = i2 >>> 0 < i3 >>> 0 ? i3 : i2;
          } else i2 = 2147483647;
          __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_(i75, i2, i5, i6 + -4 | 0);
          i71 = HEAP32[i11 >> 2] | 0;
          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_(i71, i10);
          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_(i71 + 12 | 0, i8 + (i9 * 24 | 0) + 12 | 0);
          HEAP32[i11 >> 2] = i71 + 24;
          __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i7, i75);
          __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev(i75);
         } else {
          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_(i3, i10);
          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_(i3 + 12 | 0, i8 + (i9 * 24 | 0) + 12 | 0);
          HEAP32[i2 >> 2] = (HEAP32[i2 >> 2] | 0) + 24;
         }
         i9 = i9 + 1 | 0;
        }
        __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i1);
        break;
       }
      case 84:
      case 116:
       {
        i1 = __ZN10__cxxabiv112_GLOBAL__N_114parse_decltypeINS0_2DbEEEPKcS4_S4_RT_(i73, i72, i74) | 0;
        if ((i1 | 0) == (i73 | 0)) break L69;
        i2 = HEAP32[i74 + 4 >> 2] | 0;
        if ((HEAP32[i74 >> 2] | 0) == (i2 | 0)) {
         i1 = i73;
         break L1;
        }
        i6 = i74 + 16 | 0;
        HEAP32[i11 >> 2] = HEAP32[i74 + 12 >> 2];
        __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEC2EjRKS3_RKS5_(i22, i2 + -24 | 0, i11);
        i2 = i74 + 20 | 0;
        i3 = HEAP32[i2 >> 2] | 0;
        i73 = HEAP32[i74 + 24 >> 2] | 0;
        i4 = i73;
        if (i3 >>> 0 < i73 >>> 0) {
         HEAP32[i3 + 12 >> 2] = HEAP32[i22 + 12 >> 2];
         HEAP32[i3 >> 2] = HEAP32[i22 >> 2];
         i75 = i22 + 4 | 0;
         HEAP32[i3 + 4 >> 2] = HEAP32[i75 >> 2];
         i74 = i22 + 8 | 0;
         HEAP32[i3 + 8 >> 2] = HEAP32[i74 >> 2];
         HEAP32[i74 >> 2] = 0;
         HEAP32[i75 >> 2] = 0;
         HEAP32[i22 >> 2] = 0;
         HEAP32[i2 >> 2] = (HEAP32[i2 >> 2] | 0) + 16;
        } else {
         i2 = HEAP32[i6 >> 2] | 0;
         i73 = i3 - i2 | 0;
         i5 = i73 >> 4;
         i3 = i5 + 1 | 0;
         if ((i73 | 0) < -16) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i6);
         i2 = i4 - i2 | 0;
         if (i2 >> 4 >>> 0 < 1073741823) {
          i2 = i2 >> 3;
          i2 = i2 >>> 0 < i3 >>> 0 ? i3 : i2;
         } else i2 = 2147483647;
         __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEEC2EjjS9_(i75, i2, i5, i74 + 28 | 0);
         i74 = i75 + 8 | 0;
         i73 = HEAP32[i74 >> 2] | 0;
         HEAP32[i73 + 12 >> 2] = HEAP32[i22 + 12 >> 2];
         HEAP32[i73 >> 2] = HEAP32[i22 >> 2];
         i72 = i22 + 4 | 0;
         HEAP32[i73 + 4 >> 2] = HEAP32[i72 >> 2];
         i71 = i22 + 8 | 0;
         HEAP32[i73 + 8 >> 2] = HEAP32[i71 >> 2];
         HEAP32[i71 >> 2] = 0;
         HEAP32[i72 >> 2] = 0;
         HEAP32[i22 >> 2] = 0;
         HEAP32[i74 >> 2] = i73 + 16;
         __ZNSt3__16vectorINS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS7_EE(i6, i75);
         __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEED2Ev(i75);
        }
        __ZNSt3__113__vector_baseIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEED2Ev(i22);
        break L1;
       }
      case 118:
       {
        L764 : do if ((i72 - i73 | 0) > 3 & i2 << 24 >> 24 == 68 & i1 << 24 >> 24 == 118) {
         i5 = i73 + 2 | 0;
         i2 = HEAP8[i5 >> 0] | 0;
         if ((i2 + -49 & 255) < 9) {
          i1 = __ZN10__cxxabiv112_GLOBAL__N_112parse_numberEPKcS2_(i5, i72) | 0;
          if ((i1 | 0) == (i72 | 0)) {
           i1 = i73;
           break;
          }
          if ((HEAP8[i1 >> 0] | 0) != 95) {
           i1 = i73;
           break;
          }
          i3 = i1 - i5 | 0;
          i2 = i1 + 1 | 0;
          if ((i2 | 0) == (i72 | 0)) {
           i1 = i73;
           break;
          }
          if ((HEAP8[i2 >> 0] | 0) != 112) {
           i1 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_(i2, i72, i74) | 0;
           if ((i1 | 0) == (i2 | 0)) {
            i1 = i73;
            break;
           }
           i2 = HEAP32[i74 + 4 >> 2] | 0;
           if ((HEAP32[i74 >> 2] | 0) == (i2 | 0)) {
            i1 = i73;
            break;
           }
           i4 = i2 + -24 | 0;
           __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj(i50, i5, i3);
           i2 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc(i50, 0, 34929) | 0;
           HEAP32[i59 >> 2] = HEAP32[i2 >> 2];
           HEAP32[i59 + 4 >> 2] = HEAP32[i2 + 4 >> 2];
           HEAP32[i59 + 8 >> 2] = HEAP32[i2 + 8 >> 2];
           i3 = 0;
           while (1) {
            if ((i3 | 0) == 3) break;
            HEAP32[i2 + (i3 << 2) >> 2] = 0;
            i3 = i3 + 1 | 0;
           }
           i2 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc(i59, 33617) | 0;
           HEAP32[i71 >> 2] = HEAP32[i2 >> 2];
           HEAP32[i71 + 4 >> 2] = HEAP32[i2 + 4 >> 2];
           HEAP32[i71 + 8 >> 2] = HEAP32[i2 + 8 >> 2];
           i3 = 0;
           while (1) {
            if ((i3 | 0) == 3) break;
            HEAP32[i2 + (i3 << 2) >> 2] = 0;
            i3 = i3 + 1 | 0;
           }
           i67 = HEAP8[i71 >> 0] | 0;
           i66 = (i67 & 1) == 0;
           __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj(i4, i66 ? i71 + 1 | 0 : HEAP32[i71 + 8 >> 2] | 0, i66 ? (i67 & 255) >>> 1 : HEAP32[i71 + 4 >> 2] | 0) | 0;
           __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i71);
           __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i59);
           __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i50);
           break;
          }
          i1 = i1 + 2 | 0;
          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj(i56, i5, i3);
          i2 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc(i56, 0, 34938) | 0;
          HEAP32[i66 >> 2] = HEAP32[i2 >> 2];
          HEAP32[i66 + 4 >> 2] = HEAP32[i2 + 4 >> 2];
          HEAP32[i66 + 8 >> 2] = HEAP32[i2 + 8 >> 2];
          i3 = 0;
          while (1) {
           if ((i3 | 0) == 3) break;
           HEAP32[i2 + (i3 << 2) >> 2] = 0;
           i3 = i3 + 1 | 0;
          }
          i2 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc(i66, 33617) | 0;
          HEAP32[i63 >> 2] = HEAP32[i2 >> 2];
          HEAP32[i63 + 4 >> 2] = HEAP32[i2 + 4 >> 2];
          HEAP32[i63 + 8 >> 2] = HEAP32[i2 + 8 >> 2];
          i3 = 0;
          while (1) {
           if ((i3 | 0) == 3) break;
           HEAP32[i2 + (i3 << 2) >> 2] = 0;
           i3 = i3 + 1 | 0;
          }
          __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE(i53, i63);
          i2 = i74 + 4 | 0;
          i3 = HEAP32[i2 >> 2] | 0;
          i71 = HEAP32[i74 + 8 >> 2] | 0;
          i4 = i71;
          if (i3 >>> 0 < i71 >>> 0) {
           __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i3, i53);
           HEAP32[i2 >> 2] = (HEAP32[i2 >> 2] | 0) + 24;
          } else {
           i2 = HEAP32[i74 >> 2] | 0;
           i71 = i3 - i2 | 0;
           i5 = (i71 | 0) / 24 | 0;
           i3 = i5 + 1 | 0;
           if ((i71 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i74);
           i2 = (i4 - i2 | 0) / 24 | 0;
           if (i2 >>> 0 < 1073741823) {
            i2 = i2 << 1;
            i2 = i2 >>> 0 < i3 >>> 0 ? i3 : i2;
           } else i2 = 2147483647;
           __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_(i75, i2, i5, i74 + 12 | 0);
           i71 = i75 + 8 | 0;
           i67 = HEAP32[i71 >> 2] | 0;
           __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i67, i53);
           HEAP32[i71 >> 2] = i67 + 24;
           __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i74, i75);
           __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev(i75);
          }
          __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i53);
          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i63);
          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i66);
          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i56);
          break;
         }
         i1 = 0;
         while (1) {
          if ((i1 | 0) == 3) break;
          HEAP32[i75 + (i1 << 2) >> 2] = 0;
          i1 = i1 + 1 | 0;
         }
         L807 : do if (i2 << 24 >> 24 != 95 ? (i29 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_(i5, i72, i74) | 0, (i29 | 0) != (i5 | 0)) : 0) {
          i9 = i74 + 4 | 0;
          i1 = HEAP32[i9 >> 2] | 0;
          if ((HEAP32[i74 >> 2] | 0) != (i1 | 0)) {
           __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv(i62, i1 + -24 | 0);
           L811 : do if (!(HEAP8[i75 >> 0] & 1)) {
            HEAP8[i75 + 1 >> 0] = 0;
            HEAP8[i75 >> 0] = 0;
           } else {
            i5 = i75 + 8 | 0;
            i2 = HEAP32[i5 >> 2] | 0;
            HEAP8[i2 >> 0] = 0;
            i6 = i75 + 4 | 0;
            HEAP32[i6 >> 2] = 0;
            i7 = HEAP32[i75 >> 2] | 0;
            i8 = (i7 & -2) + -1 | 0;
            i3 = i7 & 255;
            do if (!(i3 & 1)) {
             i1 = i7 >>> 1 & 127;
             if ((i3 & 255) < 22) {
              _memcpy(i75 + 1 | 0, i2 | 0, (i7 >>> 1 & 127) + 1 | 0) | 0;
              _free(i2);
              break;
             }
             i2 = i1 + 16 & 240;
             i4 = i2 + -1 | 0;
             if ((i4 | 0) == (i8 | 0)) break L811;
             i3 = _malloc(i2) | 0;
             if (i4 >>> 0 <= i8 >>> 0 & (i3 | 0) == 0) break L811;
             _memcpy(i3 | 0, i75 + 1 | 0, (i7 >>> 1 & 127) + 1 | 0) | 0;
             HEAP32[i75 >> 2] = i2 | 1;
             HEAP32[i6 >> 2] = i1;
             HEAP32[i5 >> 2] = i3;
             break L811;
            } else {
             HEAP8[i75 + 1 >> 0] = 0;
             _free(i2);
             i1 = 0;
            } while (0);
            HEAP8[i75 >> 0] = i1 << 1;
           } while (0);
           HEAP32[i75 >> 2] = HEAP32[i62 >> 2];
           HEAP32[i75 + 4 >> 2] = HEAP32[i62 + 4 >> 2];
           HEAP32[i75 + 8 >> 2] = HEAP32[i62 + 8 >> 2];
           i1 = 0;
           while (1) {
            if ((i1 | 0) == 3) break;
            HEAP32[i62 + (i1 << 2) >> 2] = 0;
            i1 = i1 + 1 | 0;
           }
           __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i62);
           i2 = HEAP32[i9 >> 2] | 0;
           i1 = i2 + -24 | 0;
           while (1) {
            if ((i2 | 0) == (i1 | 0)) {
             i1 = i29;
             i67 = 622;
             break L807;
            }
            i71 = i2 + -24 | 0;
            HEAP32[i9 >> 2] = i71;
            __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i71);
            i2 = HEAP32[i9 >> 2] | 0;
           }
          }
         } else {
          i1 = i5;
          i67 = 622;
         } while (0);
         do if ((i67 | 0) == 622) {
          if ((((i1 | 0) != (i72 | 0) ? (HEAP8[i1 >> 0] | 0) == 95 : 0) ? (i30 = i1 + 1 | 0, (i30 | 0) != (i72 | 0)) : 0) ? (i35 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_(i30, i72, i74) | 0, (i35 | 0) != (i30 | 0)) : 0) {
           i1 = HEAP32[i74 + 4 >> 2] | 0;
           if ((HEAP32[i74 >> 2] | 0) == (i1 | 0)) break;
           i1 = i1 + -24 | 0;
           __ZNSt3__1plIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEENS_12basic_stringIT_T0_T1_EEPKS8_RKSB_(i65, 34929, i75);
           i2 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc(i65, 33617) | 0;
           HEAP32[i64 >> 2] = HEAP32[i2 >> 2];
           HEAP32[i64 + 4 >> 2] = HEAP32[i2 + 4 >> 2];
           HEAP32[i64 + 8 >> 2] = HEAP32[i2 + 8 >> 2];
           i3 = 0;
           while (1) {
            if ((i3 | 0) == 3) break;
            HEAP32[i2 + (i3 << 2) >> 2] = 0;
            i3 = i3 + 1 | 0;
           }
           i71 = HEAP8[i64 >> 0] | 0;
           i67 = (i71 & 1) == 0;
           __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj(i1, i67 ? i64 + 1 | 0 : HEAP32[i64 + 8 >> 2] | 0, i67 ? (i71 & 255) >>> 1 : HEAP32[i64 + 4 >> 2] | 0) | 0;
           __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i64);
           __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i65);
           i1 = i35;
          } else i1 = i73;
          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i75);
          break L764;
         } while (0);
         __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i75);
         i1 = i73;
        } else i1 = i73; while (0);
        if ((i1 | 0) == (i73 | 0)) break L69;
        i2 = HEAP32[i74 + 4 >> 2] | 0;
        if ((HEAP32[i74 >> 2] | 0) == (i2 | 0)) {
         i1 = i73;
         break L1;
        }
        i6 = i74 + 16 | 0;
        HEAP32[i49 >> 2] = HEAP32[i74 + 12 >> 2];
        __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEC2EjRKS3_RKS5_(i54, i2 + -24 | 0, i49);
        i2 = i74 + 20 | 0;
        i3 = HEAP32[i2 >> 2] | 0;
        i73 = HEAP32[i74 + 24 >> 2] | 0;
        i4 = i73;
        if (i3 >>> 0 < i73 >>> 0) {
         HEAP32[i3 + 12 >> 2] = HEAP32[i54 + 12 >> 2];
         HEAP32[i3 >> 2] = HEAP32[i54 >> 2];
         i75 = i54 + 4 | 0;
         HEAP32[i3 + 4 >> 2] = HEAP32[i75 >> 2];
         i74 = i54 + 8 | 0;
         HEAP32[i3 + 8 >> 2] = HEAP32[i74 >> 2];
         HEAP32[i74 >> 2] = 0;
         HEAP32[i75 >> 2] = 0;
         HEAP32[i54 >> 2] = 0;
         HEAP32[i2 >> 2] = (HEAP32[i2 >> 2] | 0) + 16;
        } else {
         i2 = HEAP32[i6 >> 2] | 0;
         i73 = i3 - i2 | 0;
         i5 = i73 >> 4;
         i3 = i5 + 1 | 0;
         if ((i73 | 0) < -16) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i6);
         i2 = i4 - i2 | 0;
         if (i2 >> 4 >>> 0 < 1073741823) {
          i2 = i2 >> 3;
          i2 = i2 >>> 0 < i3 >>> 0 ? i3 : i2;
         } else i2 = 2147483647;
         __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEEC2EjjS9_(i75, i2, i5, i74 + 28 | 0);
         i74 = i75 + 8 | 0;
         i73 = HEAP32[i74 >> 2] | 0;
         HEAP32[i73 + 12 >> 2] = HEAP32[i54 + 12 >> 2];
         HEAP32[i73 >> 2] = HEAP32[i54 >> 2];
         i72 = i54 + 4 | 0;
         HEAP32[i73 + 4 >> 2] = HEAP32[i72 >> 2];
         i71 = i54 + 8 | 0;
         HEAP32[i73 + 8 >> 2] = HEAP32[i71 >> 2];
         HEAP32[i71 >> 2] = 0;
         HEAP32[i72 >> 2] = 0;
         HEAP32[i54 >> 2] = 0;
         HEAP32[i74 >> 2] = i73 + 16;
         __ZNSt3__16vectorINS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS7_EE(i6, i75);
         __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEED2Ev(i75);
        }
        __ZNSt3__113__vector_baseIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEED2Ev(i54);
        break L1;
       }
      default:
       break L69;
      }
     }
     break;
    }
   default:
    {}
   } while (0);
   i1 = __ZN10__cxxabiv112_GLOBAL__N_118parse_builtin_typeINS0_2DbEEEPKcS4_S4_RT_(i73, i72, i74) | 0;
   if ((i1 | 0) == (i73 | 0)) {
    i1 = __ZN10__cxxabiv112_GLOBAL__N_110parse_nameINS0_2DbEEEPKcS4_S4_RT_(i73, i72, i74) | 0;
    if ((i1 | 0) != (i73 | 0) ? (i68 = HEAP32[i74 + 4 >> 2] | 0, (HEAP32[i74 >> 2] | 0) != (i68 | 0)) : 0) {
     i6 = i74 + 16 | 0;
     HEAP32[i69 >> 2] = HEAP32[i74 + 12 >> 2];
     __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEC2EjRKS3_RKS5_(i70, i68 + -24 | 0, i69);
     i2 = i74 + 20 | 0;
     i3 = HEAP32[i2 >> 2] | 0;
     i73 = HEAP32[i74 + 24 >> 2] | 0;
     i4 = i73;
     if (i3 >>> 0 < i73 >>> 0) {
      HEAP32[i3 + 12 >> 2] = HEAP32[i70 + 12 >> 2];
      HEAP32[i3 >> 2] = HEAP32[i70 >> 2];
      i75 = i70 + 4 | 0;
      HEAP32[i3 + 4 >> 2] = HEAP32[i75 >> 2];
      i74 = i70 + 8 | 0;
      HEAP32[i3 + 8 >> 2] = HEAP32[i74 >> 2];
      HEAP32[i74 >> 2] = 0;
      HEAP32[i75 >> 2] = 0;
      HEAP32[i70 >> 2] = 0;
      HEAP32[i2 >> 2] = (HEAP32[i2 >> 2] | 0) + 16;
     } else {
      i2 = HEAP32[i6 >> 2] | 0;
      i73 = i3 - i2 | 0;
      i5 = i73 >> 4;
      i3 = i5 + 1 | 0;
      if ((i73 | 0) < -16) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i6);
      i2 = i4 - i2 | 0;
      if (i2 >> 4 >>> 0 < 1073741823) {
       i2 = i2 >> 3;
       i2 = i2 >>> 0 < i3 >>> 0 ? i3 : i2;
      } else i2 = 2147483647;
      __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEEC2EjjS9_(i75, i2, i5, i74 + 28 | 0);
      i74 = i75 + 8 | 0;
      i73 = HEAP32[i74 >> 2] | 0;
      HEAP32[i73 + 12 >> 2] = HEAP32[i70 + 12 >> 2];
      HEAP32[i73 >> 2] = HEAP32[i70 >> 2];
      i72 = i70 + 4 | 0;
      HEAP32[i73 + 4 >> 2] = HEAP32[i72 >> 2];
      i71 = i70 + 8 | 0;
      HEAP32[i73 + 8 >> 2] = HEAP32[i71 >> 2];
      HEAP32[i71 >> 2] = 0;
      HEAP32[i72 >> 2] = 0;
      HEAP32[i70 >> 2] = 0;
      HEAP32[i74 >> 2] = i73 + 16;
      __ZNSt3__16vectorINS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS7_EE(i6, i75);
      __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEED2Ev(i75);
     }
     __ZNSt3__113__vector_baseIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEED2Ev(i70);
    } else i1 = i73;
   }
  }
 } else i1 = i73; while (0);
 STACKTOP = i76;
 return i1 | 0;
}
function __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_(i1, i126, i135) {
 i1 = i1 | 0;
 i126 = i126 | 0;
 i135 = i135 | 0;
 var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, i18 = 0, i19 = 0, i20 = 0, i21 = 0, i22 = 0, i23 = 0, i24 = 0, i25 = 0, i26 = 0, i27 = 0, i28 = 0, i29 = 0, i30 = 0, i31 = 0, i32 = 0, i33 = 0, i34 = 0, i35 = 0, i36 = 0, i37 = 0, i38 = 0, i39 = 0, i40 = 0, i41 = 0, i42 = 0, i43 = 0, i44 = 0, i45 = 0, i46 = 0, i47 = 0, i48 = 0, i49 = 0, i50 = 0, i51 = 0, i52 = 0, i53 = 0, i54 = 0, i55 = 0, i56 = 0, i57 = 0, i58 = 0, i59 = 0, i60 = 0, i61 = 0, i62 = 0, i63 = 0, i64 = 0, i65 = 0, i66 = 0, i67 = 0, i68 = 0, i69 = 0, i70 = 0, i71 = 0, i72 = 0, i73 = 0, i74 = 0, i75 = 0, i76 = 0, i77 = 0, i78 = 0, i79 = 0, i80 = 0, i81 = 0, i82 = 0, i83 = 0, i84 = 0, i85 = 0, i86 = 0, i87 = 0, i88 = 0, i89 = 0, i90 = 0, i91 = 0, i92 = 0, i93 = 0, i94 = 0, i95 = 0, i96 = 0, i97 = 0, i98 = 0, i99 = 0, i100 = 0, i101 = 0, i102 = 0, i103 = 0, i104 = 0, i105 = 0, i106 = 0, i107 = 0, i108 = 0, i109 = 0, i110 = 0, i111 = 0, i112 = 0, i113 = 0, i114 = 0, i115 = 0, i116 = 0, i117 = 0, i118 = 0, i119 = 0, i120 = 0, i121 = 0, i122 = 0, i123 = 0, i124 = 0, i125 = 0, i127 = 0, i128 = 0, i129 = 0, i130 = 0, i131 = 0, i132 = 0, i133 = 0, i134 = 0, i136 = 0, i137 = 0, i138 = 0, i139 = 0, i140 = 0;
 i140 = STACKTOP;
 STACKTOP = STACKTOP + 1088 | 0;
 i138 = i140 + 1064 | 0;
 i139 = i140 + 1040 | 0;
 i137 = i140 + 1024 | 0;
 i136 = i140 + 1012 | 0;
 i133 = i140 + 1e3 | 0;
 i132 = i140 + 976 | 0;
 i134 = i140 + 964 | 0;
 i124 = i140 + 604 | 0;
 i125 = i140 + 568 | 0;
 i128 = i140 + 556 | 0;
 i127 = i140 + 520 | 0;
 i130 = i140 + 496 | 0;
 i131 = i140 + 460 | 0;
 i2 = i140 + 952 | 0;
 i6 = i140 + 940 | 0;
 i9 = i140 + 928 | 0;
 i13 = i140 + 916 | 0;
 i16 = i140 + 904 | 0;
 i18 = i140 + 892 | 0;
 i19 = i140 + 880 | 0;
 i115 = i140 + 868 | 0;
 i116 = i140 + 856 | 0;
 i117 = i140 + 844 | 0;
 i118 = i140 + 832 | 0;
 i20 = i140 + 820 | 0;
 i119 = i140 + 808 | 0;
 i120 = i140 + 796 | 0;
 i121 = i140 + 784 | 0;
 i122 = i140 + 772 | 0;
 i23 = i140 + 760 | 0;
 i24 = i140 + 748 | 0;
 i25 = i140 + 736 | 0;
 i27 = i140 + 724 | 0;
 i28 = i140 + 712 | 0;
 i29 = i140 + 700 | 0;
 i30 = i140 + 688 | 0;
 i98 = i140 + 664 | 0;
 i99 = i140 + 652 | 0;
 i100 = i140 + 640 | 0;
 i101 = i140 + 628 | 0;
 i102 = i140 + 616 | 0;
 i31 = i140 + 592 | 0;
 i32 = i140 + 580 | 0;
 i33 = i140 + 544 | 0;
 i34 = i140 + 532 | 0;
 i35 = i140 + 484 | 0;
 i36 = i140 + 472 | 0;
 i37 = i140 + 448 | 0;
 i38 = i140 + 436 | 0;
 i63 = i140 + 424 | 0;
 i82 = i140 + 400 | 0;
 i83 = i140 + 384 | 0;
 i84 = i140 + 372 | 0;
 i85 = i140 + 360 | 0;
 i39 = i140 + 348 | 0;
 i40 = i140 + 336 | 0;
 i41 = i140 + 324 | 0;
 i42 = i140 + 312 | 0;
 i43 = i140 + 300 | 0;
 i44 = i140 + 288 | 0;
 i45 = i140 + 276 | 0;
 i48 = i140 + 264 | 0;
 i49 = i140 + 252 | 0;
 i64 = i140 + 240 | 0;
 i86 = i140 + 216 | 0;
 i87 = i140 + 204 | 0;
 i88 = i140 + 192 | 0;
 i89 = i140 + 180 | 0;
 i50 = i140 + 168 | 0;
 i108 = i140 + 144 | 0;
 i109 = i140 + 132 | 0;
 i110 = i140 + 120 | 0;
 i111 = i140 + 108 | 0;
 i112 = i140 + 96 | 0;
 i113 = i140 + 84 | 0;
 i114 = i140 + 72 | 0;
 i53 = i140 + 60 | 0;
 i55 = i140 + 48 | 0;
 i57 = i140 + 36 | 0;
 i58 = i140 + 24 | 0;
 i90 = i140;
 i103 = i126;
 i59 = i103 - i1 | 0;
 L1 : do if ((i59 | 0) > 1) {
  i60 = (i59 | 0) > 3;
  if (i60 ? (HEAP8[i1 >> 0] | 0) == 103 : 0) {
   i61 = (HEAP8[i1 + 1 >> 0] | 0) == 115;
   i91 = i61;
   i61 = i61 ? i1 + 2 | 0 : i1;
  } else {
   i91 = 0;
   i61 = i1;
  }
  do switch (HEAP8[i61 >> 0] | 0) {
  case 76:
   {
    i1 = __ZN10__cxxabiv112_GLOBAL__N_118parse_expr_primaryINS0_2DbEEEPKcS4_S4_RT_(i1, i126, i135) | 0;
    break L1;
   }
  case 84:
   {
    i1 = __ZN10__cxxabiv112_GLOBAL__N_120parse_template_paramINS0_2DbEEEPKcS4_S4_RT_(i1, i126, i135) | 0;
    break L1;
   }
  case 102:
   {
    i1 = __ZN10__cxxabiv112_GLOBAL__N_120parse_function_paramINS0_2DbEEEPKcS4_S4_RT_(i1, i126, i135) | 0;
    break L1;
   }
  case 97:
   switch (HEAP8[i61 + 1 >> 0] | 0) {
   case 97:
    {
     i138 = i1 + 2 | 0;
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj(i2, 33663, 2);
     i139 = __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_(i138, i126, i2, i135) | 0;
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i2);
     i1 = (i139 | 0) == (i138 | 0) ? i1 : i139;
     break L1;
    }
   case 100:
    {
     i138 = i1 + 2 | 0;
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj(i6, 33674, 1);
     i139 = __ZN10__cxxabiv112_GLOBAL__N_123parse_prefix_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_(i138, i126, i6, i135) | 0;
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i6);
     i1 = (i139 | 0) == (i138 | 0) ? i1 : i139;
     break L1;
    }
   case 110:
    {
     i138 = i1 + 2 | 0;
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj(i9, 33674, 1);
     i139 = __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_(i138, i126, i9, i135) | 0;
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i9);
     i1 = (i139 | 0) == (i138 | 0) ? i1 : i139;
     break L1;
    }
   case 78:
    {
     i138 = i1 + 2 | 0;
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj(i13, 33676, 2);
     i139 = __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_(i138, i126, i13, i135) | 0;
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i13);
     i1 = (i139 | 0) == (i138 | 0) ? i1 : i139;
     break L1;
    }
   case 83:
    {
     i138 = i1 + 2 | 0;
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj(i16, 33679, 1);
     i139 = __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_(i138, i126, i16, i135) | 0;
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i16);
     i1 = (i139 | 0) == (i138 | 0) ? i1 : i139;
     break L1;
    }
   case 116:
    {
     if (((((i59 | 0) > 2 ? (HEAP8[i1 >> 0] | 0) == 97 : 0) ? (HEAP8[i1 + 1 >> 0] | 0) == 116 : 0) ? (i136 = i1 + 2 | 0, i105 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_(i136, i126, i135) | 0, (i105 | 0) != (i136 | 0)) : 0) ? (i79 = HEAP32[i135 + 4 >> 2] | 0, (HEAP32[i135 >> 2] | 0) != (i79 | 0)) : 0) {
      i10 = i79 + -24 | 0;
      __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv(i137, i10);
      i1 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc(i137, 0, 33681) | 0;
      HEAP32[i139 >> 2] = HEAP32[i1 >> 2];
      HEAP32[i139 + 4 >> 2] = HEAP32[i1 + 4 >> 2];
      HEAP32[i139 + 8 >> 2] = HEAP32[i1 + 8 >> 2];
      i2 = 0;
      while (1) {
       if ((i2 | 0) == 3) break;
       HEAP32[i1 + (i2 << 2) >> 2] = 0;
       i2 = i2 + 1 | 0;
      }
      i1 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc(i139, 33621) | 0;
      HEAP32[i138 >> 2] = HEAP32[i1 >> 2];
      HEAP32[i138 + 4 >> 2] = HEAP32[i1 + 4 >> 2];
      HEAP32[i138 + 8 >> 2] = HEAP32[i1 + 8 >> 2];
      i2 = 0;
      while (1) {
       if ((i2 | 0) == 3) break;
       HEAP32[i1 + (i2 << 2) >> 2] = 0;
       i2 = i2 + 1 | 0;
      }
      do if (HEAP8[i10 >> 0] & 1) {
       i9 = i79 + -16 | 0;
       HEAP8[HEAP32[i9 >> 2] >> 0] = 0;
       i6 = i79 + -20 | 0;
       HEAP32[i6 >> 2] = 0;
       i1 = HEAP8[i10 >> 0] | 0;
       if (!(i1 & 1)) i5 = 10; else {
        i5 = HEAP32[i10 >> 2] | 0;
        i1 = i5 & 255;
        i5 = (i5 & -2) + -1 | 0;
       }
       if (!(i1 & 1)) {
        i2 = (i1 & 255) >>> 1;
        if ((i1 & 255) < 22) {
         i4 = 10;
         i8 = 1;
         i7 = i2;
        } else {
         i4 = (i2 + 16 & 240) + -1 | 0;
         i8 = 1;
         i7 = i2;
        }
       } else {
        i4 = 10;
        i8 = 0;
        i7 = 0;
       }
       if ((i4 | 0) != (i5 | 0)) {
        if ((i4 | 0) == 10) {
         i3 = i10 + 1 | 0;
         i2 = HEAP32[i9 >> 2] | 0;
         if (i8) {
          _memcpy(i3 | 0, i2 | 0, ((i1 & 255) >>> 1) + 1 | 0) | 0;
          _free(i2);
         } else {
          HEAP8[i3 >> 0] = HEAP8[i2 >> 0] | 0;
          _free(i2);
         }
         HEAP8[i10 >> 0] = i7 << 1;
         break;
        }
        i2 = i4 + 1 | 0;
        i3 = _malloc(i2) | 0;
        if (!(i4 >>> 0 <= i5 >>> 0 & (i3 | 0) == 0)) {
         if (i8) _memcpy(i3 | 0, i10 + 1 | 0, ((i1 & 255) >>> 1) + 1 | 0) | 0; else {
          i136 = HEAP32[i9 >> 2] | 0;
          HEAP8[i3 >> 0] = HEAP8[i136 >> 0] | 0;
          _free(i136);
         }
         HEAP32[i10 >> 2] = i2 | 1;
         HEAP32[i6 >> 2] = i7;
         HEAP32[i9 >> 2] = i3;
        }
       }
      } else {
       HEAP8[i10 + 1 >> 0] = 0;
       HEAP8[i10 >> 0] = 0;
      } while (0);
      HEAP32[i10 >> 2] = HEAP32[i138 >> 2];
      HEAP32[i10 + 4 >> 2] = HEAP32[i138 + 4 >> 2];
      HEAP32[i10 + 8 >> 2] = HEAP32[i138 + 8 >> 2];
      i1 = 0;
      while (1) {
       if ((i1 | 0) == 3) break;
       HEAP32[i138 + (i1 << 2) >> 2] = 0;
       i1 = i1 + 1 | 0;
      }
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i138);
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i139);
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i137);
      i1 = i105;
     }
     break L1;
    }
   case 122:
    {
     if (((((i59 | 0) > 2 ? (HEAP8[i1 >> 0] | 0) == 97 : 0) ? (HEAP8[i1 + 1 >> 0] | 0) == 122 : 0) ? (i136 = i1 + 2 | 0, i106 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_(i136, i126, i135) | 0, (i106 | 0) != (i136 | 0)) : 0) ? (i80 = HEAP32[i135 + 4 >> 2] | 0, (HEAP32[i135 >> 2] | 0) != (i80 | 0)) : 0) {
      i10 = i80 + -24 | 0;
      __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv(i137, i10);
      i1 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc(i137, 0, 33681) | 0;
      HEAP32[i139 >> 2] = HEAP32[i1 >> 2];
      HEAP32[i139 + 4 >> 2] = HEAP32[i1 + 4 >> 2];
      HEAP32[i139 + 8 >> 2] = HEAP32[i1 + 8 >> 2];
      i2 = 0;
      while (1) {
       if ((i2 | 0) == 3) break;
       HEAP32[i1 + (i2 << 2) >> 2] = 0;
       i2 = i2 + 1 | 0;
      }
      i1 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc(i139, 33621) | 0;
      HEAP32[i138 >> 2] = HEAP32[i1 >> 2];
      HEAP32[i138 + 4 >> 2] = HEAP32[i1 + 4 >> 2];
      HEAP32[i138 + 8 >> 2] = HEAP32[i1 + 8 >> 2];
      i2 = 0;
      while (1) {
       if ((i2 | 0) == 3) break;
       HEAP32[i1 + (i2 << 2) >> 2] = 0;
       i2 = i2 + 1 | 0;
      }
      do if (HEAP8[i10 >> 0] & 1) {
       i9 = i80 + -16 | 0;
       HEAP8[HEAP32[i9 >> 2] >> 0] = 0;
       i6 = i80 + -20 | 0;
       HEAP32[i6 >> 2] = 0;
       i1 = HEAP8[i10 >> 0] | 0;
       if (!(i1 & 1)) i5 = 10; else {
        i5 = HEAP32[i10 >> 2] | 0;
        i1 = i5 & 255;
        i5 = (i5 & -2) + -1 | 0;
       }
       if (!(i1 & 1)) {
        i2 = (i1 & 255) >>> 1;
        if ((i1 & 255) < 22) {
         i8 = 1;
         i4 = 10;
         i7 = i2;
        } else {
         i8 = 1;
         i4 = (i2 + 16 & 240) + -1 | 0;
         i7 = i2;
        }
       } else {
        i8 = 0;
        i4 = 10;
        i7 = 0;
       }
       if ((i4 | 0) != (i5 | 0)) {
        if ((i4 | 0) == 10) {
         i3 = i10 + 1 | 0;
         i2 = HEAP32[i9 >> 2] | 0;
         if (i8) {
          _memcpy(i3 | 0, i2 | 0, ((i1 & 255) >>> 1) + 1 | 0) | 0;
          _free(i2);
         } else {
          HEAP8[i3 >> 0] = HEAP8[i2 >> 0] | 0;
          _free(i2);
         }
         HEAP8[i10 >> 0] = i7 << 1;
         break;
        }
        i2 = i4 + 1 | 0;
        i3 = _malloc(i2) | 0;
        if (!(i4 >>> 0 <= i5 >>> 0 & (i3 | 0) == 0)) {
         if (i8) _memcpy(i3 | 0, i10 + 1 | 0, ((i1 & 255) >>> 1) + 1 | 0) | 0; else {
          i136 = HEAP32[i9 >> 2] | 0;
          HEAP8[i3 >> 0] = HEAP8[i136 >> 0] | 0;
          _free(i136);
         }
         HEAP32[i10 >> 2] = i2 | 1;
         HEAP32[i6 >> 2] = i7;
         HEAP32[i9 >> 2] = i3;
        }
       }
      } else {
       HEAP8[i10 + 1 >> 0] = 0;
       HEAP8[i10 >> 0] = 0;
      } while (0);
      HEAP32[i10 >> 2] = HEAP32[i138 >> 2];
      HEAP32[i10 + 4 >> 2] = HEAP32[i138 + 4 >> 2];
      HEAP32[i10 + 8 >> 2] = HEAP32[i138 + 8 >> 2];
      i1 = 0;
      while (1) {
       if ((i1 | 0) == 3) break;
       HEAP32[i138 + (i1 << 2) >> 2] = 0;
       i1 = i1 + 1 | 0;
      }
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i138);
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i139);
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i137);
      i1 = i106;
     }
     break L1;
    }
   default:
    break L1;
   }
  case 99:
   switch (HEAP8[i61 + 1 >> 0] | 0) {
   case 99:
    {
     if ((((((i59 | 0) > 2 ? (HEAP8[i1 >> 0] | 0) == 99 : 0) ? (HEAP8[i1 + 1 >> 0] | 0) == 99 : 0) ? (i131 = i1 + 2 | 0, i21 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_(i131, i126, i135) | 0, (i21 | 0) != (i131 | 0)) : 0) ? (i95 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_(i21, i126, i135) | 0, (i95 | 0) != (i21 | 0)) : 0) ? (i70 = i135 + 4 | 0, i22 = HEAP32[i70 >> 2] | 0, ((i22 - (HEAP32[i135 >> 2] | 0) | 0) / 24 | 0) >>> 0 >= 2) : 0) {
      __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv(i138, i22 + -24 | 0);
      i1 = HEAP32[i70 >> 2] | 0;
      i2 = i1 + -24 | 0;
      i3 = i1;
      while (1) {
       if ((i3 | 0) == (i2 | 0)) break;
       i135 = i3 + -24 | 0;
       HEAP32[i70 >> 2] = i135;
       __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i135);
       i3 = HEAP32[i70 >> 2] | 0;
      }
      i3 = i1 + -48 | 0;
      __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv(i134, i3);
      i1 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc(i134, 0, 33691) | 0;
      HEAP32[i132 >> 2] = HEAP32[i1 >> 2];
      HEAP32[i132 + 4 >> 2] = HEAP32[i1 + 4 >> 2];
      HEAP32[i132 + 8 >> 2] = HEAP32[i1 + 8 >> 2];
      i2 = 0;
      while (1) {
       if ((i2 | 0) == 3) break;
       HEAP32[i1 + (i2 << 2) >> 2] = 0;
       i2 = i2 + 1 | 0;
      }
      i1 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc(i132, 33703) | 0;
      HEAP32[i133 >> 2] = HEAP32[i1 >> 2];
      HEAP32[i133 + 4 >> 2] = HEAP32[i1 + 4 >> 2];
      HEAP32[i133 + 8 >> 2] = HEAP32[i1 + 8 >> 2];
      i2 = 0;
      while (1) {
       if ((i2 | 0) == 3) break;
       HEAP32[i1 + (i2 << 2) >> 2] = 0;
       i2 = i2 + 1 | 0;
      }
      i1 = HEAP8[i138 >> 0] | 0;
      i2 = (i1 & 1) == 0;
      i1 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj(i133, i2 ? i138 + 1 | 0 : HEAP32[i138 + 8 >> 2] | 0, i2 ? (i1 & 255) >>> 1 : HEAP32[i138 + 4 >> 2] | 0) | 0;
      HEAP32[i136 >> 2] = HEAP32[i1 >> 2];
      HEAP32[i136 + 4 >> 2] = HEAP32[i1 + 4 >> 2];
      HEAP32[i136 + 8 >> 2] = HEAP32[i1 + 8 >> 2];
      i2 = 0;
      while (1) {
       if ((i2 | 0) == 3) break;
       HEAP32[i1 + (i2 << 2) >> 2] = 0;
       i2 = i2 + 1 | 0;
      }
      i1 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc(i136, 33621) | 0;
      HEAP32[i137 >> 2] = HEAP32[i1 >> 2];
      HEAP32[i137 + 4 >> 2] = HEAP32[i1 + 4 >> 2];
      HEAP32[i137 + 8 >> 2] = HEAP32[i1 + 8 >> 2];
      i2 = 0;
      while (1) {
       if ((i2 | 0) == 3) break;
       HEAP32[i1 + (i2 << 2) >> 2] = 0;
       i2 = i2 + 1 | 0;
      }
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE(i139, i137);
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairaSEOS1_(i3, i139);
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i139);
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i137);
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i136);
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i133);
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i132);
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i134);
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i138);
      i1 = i95;
     }
     break L1;
    }
   case 108:
    {
     L138 : do if ((((i60 ? (HEAP8[i1 >> 0] | 0) == 99 : 0) ? (HEAP8[i1 + 1 >> 0] | 0) == 108 : 0) ? (i137 = i1 + 2 | 0, i3 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_(i137, i126, i135) | 0, !((i3 | 0) == (i137 | 0) | (i3 | 0) == (i126 | 0))) : 0) ? (i123 = i135 + 4 | 0, i26 = HEAP32[i123 >> 2] | 0, (HEAP32[i135 >> 2] | 0) != (i26 | 0)) : 0) {
      i137 = i26 + -12 | 0;
      i4 = HEAP8[i137 >> 0] | 0;
      i2 = (i4 & 1) == 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj(i26 + -24 | 0, i2 ? i137 + 1 | 0 : HEAP32[i26 + -4 >> 2] | 0, i2 ? (i4 & 255) >>> 1 : HEAP32[i26 + -8 >> 2] | 0) | 0;
      i4 = HEAP32[i123 >> 2] | 0;
      i2 = 0;
      while (1) {
       if ((i2 | 0) == 3) break;
       HEAP32[i138 + (i2 << 2) >> 2] = 0;
       i2 = i2 + 1 | 0;
      }
      i12 = i4 + -12 | 0;
      do if (HEAP8[i12 >> 0] & 1) {
       i11 = i4 + -4 | 0;
       HEAP8[HEAP32[i11 >> 2] >> 0] = 0;
       i8 = i4 + -8 | 0;
       HEAP32[i8 >> 2] = 0;
       i2 = HEAP8[i12 >> 0] | 0;
       if (!(i2 & 1)) i7 = 10; else {
        i7 = HEAP32[i12 >> 2] | 0;
        i2 = i7 & 255;
        i7 = (i7 & -2) + -1 | 0;
       }
       if (!(i2 & 1)) {
        i4 = (i2 & 255) >>> 1;
        if ((i2 & 255) < 22) {
         i10 = 1;
         i6 = 10;
         i9 = i4;
        } else {
         i10 = 1;
         i6 = (i4 + 16 & 240) + -1 | 0;
         i9 = i4;
        }
       } else {
        i10 = 0;
        i6 = 10;
        i9 = 0;
       }
       if ((i6 | 0) != (i7 | 0)) {
        if ((i6 | 0) == 10) {
         i5 = i12 + 1 | 0;
         i4 = HEAP32[i11 >> 2] | 0;
         if (i10) {
          _memcpy(i5 | 0, i4 | 0, ((i2 & 255) >>> 1) + 1 | 0) | 0;
          _free(i4);
         } else {
          HEAP8[i5 >> 0] = HEAP8[i4 >> 0] | 0;
          _free(i4);
         }
         HEAP8[i12 >> 0] = i9 << 1;
         break;
        }
        i4 = i6 + 1 | 0;
        i5 = _malloc(i4) | 0;
        if (!(i6 >>> 0 <= i7 >>> 0 & (i5 | 0) == 0)) {
         if (i10) _memcpy(i5 | 0, i12 + 1 | 0, ((i2 & 255) >>> 1) + 1 | 0) | 0; else {
          i137 = HEAP32[i11 >> 2] | 0;
          HEAP8[i5 >> 0] = HEAP8[i137 >> 0] | 0;
          _free(i137);
         }
         HEAP32[i12 >> 2] = i4 | 1;
         HEAP32[i8 >> 2] = i9;
         HEAP32[i11 >> 2] = i5;
        }
       }
      } else {
       HEAP8[i12 + 1 >> 0] = 0;
       HEAP8[i12 >> 0] = 0;
      } while (0);
      HEAP32[i12 >> 2] = HEAP32[i138 >> 2];
      HEAP32[i12 + 4 >> 2] = HEAP32[i138 + 4 >> 2];
      HEAP32[i12 + 8 >> 2] = HEAP32[i138 + 8 >> 2];
      i2 = 0;
      while (1) {
       if ((i2 | 0) == 3) break;
       HEAP32[i138 + (i2 << 2) >> 2] = 0;
       i2 = i2 + 1 | 0;
      }
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i138);
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc((HEAP32[i123 >> 2] | 0) + -24 | 0, 33619) | 0;
      i7 = i139 + 4 | 0;
      i8 = i139 + 8 | 0;
      i9 = i139 + 1 | 0;
      while (1) {
       if ((HEAP8[i3 >> 0] | 0) == 69) break;
       i6 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_(i3, i126, i135) | 0;
       if ((i6 | 0) == (i3 | 0) | (i6 | 0) == (i126 | 0)) break L138;
       i2 = HEAP32[i123 >> 2] | 0;
       if ((HEAP32[i135 >> 2] | 0) == (i2 | 0)) break L138;
       __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv(i139, i2 + -24 | 0);
       i4 = HEAP32[i123 >> 2] | 0;
       i5 = i4 + -24 | 0;
       i2 = i4;
       while (1) {
        if ((i2 | 0) == (i5 | 0)) break;
        i138 = i2 + -24 | 0;
        HEAP32[i123 >> 2] = i138;
        __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i138);
        i2 = HEAP32[i123 >> 2] | 0;
       }
       i3 = HEAP8[i139 >> 0] | 0;
       i2 = (i3 & 1) == 0;
       i3 = i2 ? (i3 & 255) >>> 1 : HEAP32[i7 >> 2] | 0;
       if (i3 | 0) {
        if ((HEAP32[i135 >> 2] | 0) == (i5 | 0)) {
         i129 = 147;
         break;
        }
        __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj(i4 + -48 | 0, i2 ? i9 : HEAP32[i8 >> 2] | 0, i3) | 0;
       }
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i139);
       i3 = i6;
      }
      if ((i129 | 0) == 147) {
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i139);
       break;
      }
      i2 = HEAP32[i123 >> 2] | 0;
      if ((HEAP32[i135 >> 2] | 0) != (i2 | 0)) {
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc(i2 + -24 | 0, 33621) | 0;
       i1 = i3 + 1 | 0;
      }
     } while (0);
     break L1;
    }
   case 109:
    {
     i138 = i1 + 2 | 0;
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj(i18, 33706, 1);
     i139 = __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_(i138, i126, i18, i135) | 0;
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i18);
     i1 = (i139 | 0) == (i138 | 0) ? i1 : i139;
     break L1;
    }
   case 111:
    {
     i138 = i1 + 2 | 0;
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj(i19, 33708, 1);
     i139 = __ZN10__cxxabiv112_GLOBAL__N_123parse_prefix_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_(i138, i126, i19, i135) | 0;
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i19);
     i1 = (i139 | 0) == (i138 | 0) ? i1 : i139;
     break L1;
    }
   case 118:
    {
     L197 : do if ((((i59 | 0) > 2 ? (HEAP8[i1 >> 0] | 0) == 99 : 0) ? (HEAP8[i1 + 1 >> 0] | 0) == 118 : 0) ? (i130 = i135 + 63 | 0, i129 = HEAP8[i130 >> 0] | 0, HEAP8[i130 >> 0] = 0, i131 = i1 + 2 | 0, i62 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_(i131, i126, i135) | 0, HEAP8[i130 >> 0] = i129, !((i62 | 0) == (i131 | 0) | (i62 | 0) == (i126 | 0))) : 0) {
      if ((HEAP8[i62 >> 0] | 0) != 95) {
       i2 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_(i62, i126, i135) | 0;
       if ((i2 | 0) == (i62 | 0)) break;
      } else {
       i2 = i62 + 1 | 0;
       if ((i2 | 0) == (i126 | 0)) break;
       i3 = HEAP8[i2 >> 0] | 0;
       L205 : do if (i3 << 24 >> 24 == 69) {
        i5 = i135 + 4 | 0;
        i4 = HEAP32[i5 >> 2] | 0;
        i131 = HEAP32[i135 + 8 >> 2] | 0;
        i6 = i131;
        if (i4 >>> 0 < i131 >>> 0) {
         HEAP32[i4 >> 2] = 0;
         HEAP32[i4 + 4 >> 2] = 0;
         HEAP32[i4 + 8 >> 2] = 0;
         HEAP32[i4 + 12 >> 2] = 0;
         HEAP32[i4 + 16 >> 2] = 0;
         HEAP32[i4 + 20 >> 2] = 0;
         i3 = 0;
         while (1) {
          if ((i3 | 0) == 3) break;
          HEAP32[i4 + (i3 << 2) >> 2] = 0;
          i3 = i3 + 1 | 0;
         }
         i3 = i4 + 12 | 0;
         i4 = 0;
         while (1) {
          if ((i4 | 0) == 3) break;
          HEAP32[i3 + (i4 << 2) >> 2] = 0;
          i4 = i4 + 1 | 0;
         }
         HEAP32[i5 >> 2] = (HEAP32[i5 >> 2] | 0) + 24;
         break;
        }
        i3 = HEAP32[i135 >> 2] | 0;
        i131 = i4 - i3 | 0;
        i5 = (i131 | 0) / 24 | 0;
        i4 = i5 + 1 | 0;
        if ((i131 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i135);
        i3 = (i6 - i3 | 0) / 24 | 0;
        if (i3 >>> 0 < 1073741823) {
         i3 = i3 << 1;
         i3 = i3 >>> 0 < i4 >>> 0 ? i4 : i3;
        } else i3 = 2147483647;
        __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_(i138, i3, i5, i135 + 12 | 0);
        i5 = i138 + 8 | 0;
        i6 = HEAP32[i5 >> 2] | 0;
        HEAP32[i6 >> 2] = 0;
        HEAP32[i6 + 4 >> 2] = 0;
        HEAP32[i6 + 8 >> 2] = 0;
        HEAP32[i6 + 12 >> 2] = 0;
        HEAP32[i6 + 16 >> 2] = 0;
        HEAP32[i6 + 20 >> 2] = 0;
        i3 = 0;
        while (1) {
         if ((i3 | 0) == 3) break;
         HEAP32[i6 + (i3 << 2) >> 2] = 0;
         i3 = i3 + 1 | 0;
        }
        i3 = i6 + 12 | 0;
        i4 = 0;
        while (1) {
         if ((i4 | 0) == 3) break;
         HEAP32[i3 + (i4 << 2) >> 2] = 0;
         i4 = i4 + 1 | 0;
        }
        HEAP32[i5 >> 2] = i6 + 24;
        __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i135, i138);
        __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev(i138);
       } else while (1) {
        if (i3 << 24 >> 24 == 69) break L205;
        i4 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_(i2, i126, i135) | 0;
        i3 = (i4 | 0) == (i2 | 0) | (i4 | 0) == (i126 | 0);
        if (i3) break L197;
        i3 = HEAP8[(i3 ? i2 : i4) >> 0] | 0;
        i2 = i4;
       } while (0);
       i2 = i2 + 1 | 0;
      }
      i5 = i135 + 4 | 0;
      i3 = HEAP32[i5 >> 2] | 0;
      if (((i3 - (HEAP32[i135 >> 2] | 0) | 0) / 24 | 0) >>> 0 >= 2) {
       __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv(i138, i3 + -24 | 0);
       i1 = HEAP32[i5 >> 2] | 0;
       i3 = i1 + -24 | 0;
       i4 = i1;
       while (1) {
        if ((i4 | 0) == (i3 | 0)) break;
        i135 = i4 + -24 | 0;
        HEAP32[i5 >> 2] = i135;
        __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i135);
        i4 = HEAP32[i5 >> 2] | 0;
       }
       i4 = i1 + -48 | 0;
       __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv(i134, i4);
       i1 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc(i134, 0, 33619) | 0;
       HEAP32[i132 >> 2] = HEAP32[i1 >> 2];
       HEAP32[i132 + 4 >> 2] = HEAP32[i1 + 4 >> 2];
       HEAP32[i132 + 8 >> 2] = HEAP32[i1 + 8 >> 2];
       i3 = 0;
       while (1) {
        if ((i3 | 0) == 3) break;
        HEAP32[i1 + (i3 << 2) >> 2] = 0;
        i3 = i3 + 1 | 0;
       }
       i1 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc(i132, 33710) | 0;
       HEAP32[i133 >> 2] = HEAP32[i1 >> 2];
       HEAP32[i133 + 4 >> 2] = HEAP32[i1 + 4 >> 2];
       HEAP32[i133 + 8 >> 2] = HEAP32[i1 + 8 >> 2];
       i3 = 0;
       while (1) {
        if ((i3 | 0) == 3) break;
        HEAP32[i1 + (i3 << 2) >> 2] = 0;
        i3 = i3 + 1 | 0;
       }
       i1 = HEAP8[i138 >> 0] | 0;
       i3 = (i1 & 1) == 0;
       i1 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj(i133, i3 ? i138 + 1 | 0 : HEAP32[i138 + 8 >> 2] | 0, i3 ? (i1 & 255) >>> 1 : HEAP32[i138 + 4 >> 2] | 0) | 0;
       HEAP32[i136 >> 2] = HEAP32[i1 >> 2];
       HEAP32[i136 + 4 >> 2] = HEAP32[i1 + 4 >> 2];
       HEAP32[i136 + 8 >> 2] = HEAP32[i1 + 8 >> 2];
       i3 = 0;
       while (1) {
        if ((i3 | 0) == 3) break;
        HEAP32[i1 + (i3 << 2) >> 2] = 0;
        i3 = i3 + 1 | 0;
       }
       i1 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc(i136, 33621) | 0;
       HEAP32[i137 >> 2] = HEAP32[i1 >> 2];
       HEAP32[i137 + 4 >> 2] = HEAP32[i1 + 4 >> 2];
       HEAP32[i137 + 8 >> 2] = HEAP32[i1 + 8 >> 2];
       i3 = 0;
       while (1) {
        if ((i3 | 0) == 3) break;
        HEAP32[i1 + (i3 << 2) >> 2] = 0;
        i3 = i3 + 1 | 0;
       }
       __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE(i139, i137);
       __ZN10__cxxabiv112_GLOBAL__N_111string_pairaSEOS1_(i4, i139);
       __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i139);
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i137);
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i136);
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i133);
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i132);
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i134);
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i138);
       i1 = i2;
      }
     } while (0);
     break L1;
    }
   default:
    break L1;
   }
  case 100:
   switch (HEAP8[i61 + 1 >> 0] | 0) {
   case 97:
    {
     i139 = i61 + 2 | 0;
     i11 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_(i139, i126, i135) | 0;
     if ((i11 | 0) == (i139 | 0)) break L1;
     i3 = i135 + 4 | 0;
     i4 = HEAP32[i3 >> 2] | 0;
     if ((HEAP32[i135 >> 2] | 0) == (i4 | 0)) break L1;
     i10 = i4 + -24 | 0;
     L266 : do if (i91) __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj(i117, 33713, 2); else {
      i1 = 0;
      while (1) {
       if ((i1 | 0) == 3) break L266;
       HEAP32[i117 + (i1 << 2) >> 2] = 0;
       i1 = i1 + 1 | 0;
      }
     } while (0);
     i1 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc(i117, 33716) | 0;
     HEAP32[i116 >> 2] = HEAP32[i1 >> 2];
     HEAP32[i116 + 4 >> 2] = HEAP32[i1 + 4 >> 2];
     HEAP32[i116 + 8 >> 2] = HEAP32[i1 + 8 >> 2];
     i2 = 0;
     while (1) {
      if ((i2 | 0) == 3) break;
      HEAP32[i1 + (i2 << 2) >> 2] = 0;
      i2 = i2 + 1 | 0;
     }
     __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv(i118, (HEAP32[i3 >> 2] | 0) + -24 | 0);
     i1 = HEAP8[i118 >> 0] | 0;
     i2 = (i1 & 1) == 0;
     i1 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj(i116, i2 ? i118 + 1 | 0 : HEAP32[i118 + 8 >> 2] | 0, i2 ? (i1 & 255) >>> 1 : HEAP32[i118 + 4 >> 2] | 0) | 0;
     HEAP32[i115 >> 2] = HEAP32[i1 >> 2];
     HEAP32[i115 + 4 >> 2] = HEAP32[i1 + 4 >> 2];
     HEAP32[i115 + 8 >> 2] = HEAP32[i1 + 8 >> 2];
     i2 = 0;
     while (1) {
      if ((i2 | 0) == 3) break;
      HEAP32[i1 + (i2 << 2) >> 2] = 0;
      i2 = i2 + 1 | 0;
     }
     do if (HEAP8[i10 >> 0] & 1) {
      i9 = i4 + -16 | 0;
      HEAP8[HEAP32[i9 >> 2] >> 0] = 0;
      i6 = i4 + -20 | 0;
      HEAP32[i6 >> 2] = 0;
      i1 = HEAP8[i10 >> 0] | 0;
      if (!(i1 & 1)) i5 = 10; else {
       i5 = HEAP32[i10 >> 2] | 0;
       i1 = i5 & 255;
       i5 = (i5 & -2) + -1 | 0;
      }
      if (!(i1 & 1)) {
       i2 = (i1 & 255) >>> 1;
       if ((i1 & 255) < 22) {
        i8 = 1;
        i4 = 10;
        i7 = i2;
       } else {
        i8 = 1;
        i4 = (i2 + 16 & 240) + -1 | 0;
        i7 = i2;
       }
      } else {
       i8 = 0;
       i4 = 10;
       i7 = 0;
      }
      if ((i4 | 0) != (i5 | 0)) {
       if ((i4 | 0) == 10) {
        i3 = i10 + 1 | 0;
        i2 = HEAP32[i9 >> 2] | 0;
        if (i8) {
         _memcpy(i3 | 0, i2 | 0, ((i1 & 255) >>> 1) + 1 | 0) | 0;
         _free(i2);
        } else {
         HEAP8[i3 >> 0] = HEAP8[i2 >> 0] | 0;
         _free(i2);
        }
        HEAP8[i10 >> 0] = i7 << 1;
        break;
       }
       i2 = i4 + 1 | 0;
       i3 = _malloc(i2) | 0;
       if (!(i4 >>> 0 <= i5 >>> 0 & (i3 | 0) == 0)) {
        if (i8) _memcpy(i3 | 0, i10 + 1 | 0, ((i1 & 255) >>> 1) + 1 | 0) | 0; else {
         i139 = HEAP32[i9 >> 2] | 0;
         HEAP8[i3 >> 0] = HEAP8[i139 >> 0] | 0;
         _free(i139);
        }
        HEAP32[i10 >> 2] = i2 | 1;
        HEAP32[i6 >> 2] = i7;
        HEAP32[i9 >> 2] = i3;
       }
      }
     } else {
      HEAP8[i10 + 1 >> 0] = 0;
      HEAP8[i10 >> 0] = 0;
     } while (0);
     HEAP32[i10 >> 2] = HEAP32[i115 >> 2];
     HEAP32[i10 + 4 >> 2] = HEAP32[i115 + 4 >> 2];
     HEAP32[i10 + 8 >> 2] = HEAP32[i115 + 8 >> 2];
     i1 = 0;
     while (1) {
      if ((i1 | 0) == 3) break;
      HEAP32[i115 + (i1 << 2) >> 2] = 0;
      i1 = i1 + 1 | 0;
     }
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i115);
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i118);
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i116);
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i117);
     i1 = i11;
     break L1;
    }
   case 99:
    {
     if ((((((i59 | 0) > 2 ? (HEAP8[i1 >> 0] | 0) == 100 : 0) ? (HEAP8[i1 + 1 >> 0] | 0) == 99 : 0) ? (i131 = i1 + 2 | 0, i46 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_(i131, i126, i135) | 0, (i46 | 0) != (i131 | 0)) : 0) ? (i96 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_(i46, i126, i135) | 0, (i96 | 0) != (i46 | 0)) : 0) ? (i71 = i135 + 4 | 0, i47 = HEAP32[i71 >> 2] | 0, ((i47 - (HEAP32[i135 >> 2] | 0) | 0) / 24 | 0) >>> 0 >= 2) : 0) {
      __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv(i138, i47 + -24 | 0);
      i1 = HEAP32[i71 >> 2] | 0;
      i2 = i1 + -24 | 0;
      i3 = i1;
      while (1) {
       if ((i3 | 0) == (i2 | 0)) break;
       i135 = i3 + -24 | 0;
       HEAP32[i71 >> 2] = i135;
       __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i135);
       i3 = HEAP32[i71 >> 2] | 0;
      }
      i3 = i1 + -48 | 0;
      __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv(i134, i3);
      i1 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc(i134, 0, 33726) | 0;
      HEAP32[i132 >> 2] = HEAP32[i1 >> 2];
      HEAP32[i132 + 4 >> 2] = HEAP32[i1 + 4 >> 2];
      HEAP32[i132 + 8 >> 2] = HEAP32[i1 + 8 >> 2];
      i2 = 0;
      while (1) {
       if ((i2 | 0) == 3) break;
       HEAP32[i1 + (i2 << 2) >> 2] = 0;
       i2 = i2 + 1 | 0;
      }
      i1 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc(i132, 33703) | 0;
      HEAP32[i133 >> 2] = HEAP32[i1 >> 2];
      HEAP32[i133 + 4 >> 2] = HEAP32[i1 + 4 >> 2];
      HEAP32[i133 + 8 >> 2] = HEAP32[i1 + 8 >> 2];
      i2 = 0;
      while (1) {
       if ((i2 | 0) == 3) break;
       HEAP32[i1 + (i2 << 2) >> 2] = 0;
       i2 = i2 + 1 | 0;
      }
      i1 = HEAP8[i138 >> 0] | 0;
      i2 = (i1 & 1) == 0;
      i1 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj(i133, i2 ? i138 + 1 | 0 : HEAP32[i138 + 8 >> 2] | 0, i2 ? (i1 & 255) >>> 1 : HEAP32[i138 + 4 >> 2] | 0) | 0;
      HEAP32[i136 >> 2] = HEAP32[i1 >> 2];
      HEAP32[i136 + 4 >> 2] = HEAP32[i1 + 4 >> 2];
      HEAP32[i136 + 8 >> 2] = HEAP32[i1 + 8 >> 2];
      i2 = 0;
      while (1) {
       if ((i2 | 0) == 3) break;
       HEAP32[i1 + (i2 << 2) >> 2] = 0;
       i2 = i2 + 1 | 0;
      }
      i1 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc(i136, 33621) | 0;
      HEAP32[i137 >> 2] = HEAP32[i1 >> 2];
      HEAP32[i137 + 4 >> 2] = HEAP32[i1 + 4 >> 2];
      HEAP32[i137 + 8 >> 2] = HEAP32[i1 + 8 >> 2];
      i2 = 0;
      while (1) {
       if ((i2 | 0) == 3) break;
       HEAP32[i1 + (i2 << 2) >> 2] = 0;
       i2 = i2 + 1 | 0;
      }
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE(i139, i137);
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairaSEOS1_(i3, i139);
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i139);
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i137);
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i136);
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i133);
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i132);
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i134);
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i138);
      i1 = i96;
     }
     break L1;
    }
   case 101:
    {
     i138 = i1 + 2 | 0;
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj(i20, 33740, 1);
     i139 = __ZN10__cxxabiv112_GLOBAL__N_123parse_prefix_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_(i138, i126, i20, i135) | 0;
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i20);
     i1 = (i139 | 0) == (i138 | 0) ? i1 : i139;
     break L1;
    }
   case 108:
    {
     i139 = i61 + 2 | 0;
     i11 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_(i139, i126, i135) | 0;
     if ((i11 | 0) == (i139 | 0)) break L1;
     i3 = i135 + 4 | 0;
     i4 = HEAP32[i3 >> 2] | 0;
     if ((HEAP32[i135 >> 2] | 0) == (i4 | 0)) break L1;
     i10 = i4 + -24 | 0;
     L342 : do if (i91) __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj(i121, 33713, 2); else {
      i1 = 0;
      while (1) {
       if ((i1 | 0) == 3) break L342;
       HEAP32[i121 + (i1 << 2) >> 2] = 0;
       i1 = i1 + 1 | 0;
      }
     } while (0);
     i1 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc(i121, 33742) | 0;
     HEAP32[i120 >> 2] = HEAP32[i1 >> 2];
     HEAP32[i120 + 4 >> 2] = HEAP32[i1 + 4 >> 2];
     HEAP32[i120 + 8 >> 2] = HEAP32[i1 + 8 >> 2];
     i2 = 0;
     while (1) {
      if ((i2 | 0) == 3) break;
      HEAP32[i1 + (i2 << 2) >> 2] = 0;
      i2 = i2 + 1 | 0;
     }
     __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv(i122, (HEAP32[i3 >> 2] | 0) + -24 | 0);
     i1 = HEAP8[i122 >> 0] | 0;
     i2 = (i1 & 1) == 0;
     i1 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj(i120, i2 ? i122 + 1 | 0 : HEAP32[i122 + 8 >> 2] | 0, i2 ? (i1 & 255) >>> 1 : HEAP32[i122 + 4 >> 2] | 0) | 0;
     HEAP32[i119 >> 2] = HEAP32[i1 >> 2];
     HEAP32[i119 + 4 >> 2] = HEAP32[i1 + 4 >> 2];
     HEAP32[i119 + 8 >> 2] = HEAP32[i1 + 8 >> 2];
     i2 = 0;
     while (1) {
      if ((i2 | 0) == 3) break;
      HEAP32[i1 + (i2 << 2) >> 2] = 0;
      i2 = i2 + 1 | 0;
     }
     do if (HEAP8[i10 >> 0] & 1) {
      i9 = i4 + -16 | 0;
      HEAP8[HEAP32[i9 >> 2] >> 0] = 0;
      i6 = i4 + -20 | 0;
      HEAP32[i6 >> 2] = 0;
      i1 = HEAP8[i10 >> 0] | 0;
      if (!(i1 & 1)) i5 = 10; else {
       i5 = HEAP32[i10 >> 2] | 0;
       i1 = i5 & 255;
       i5 = (i5 & -2) + -1 | 0;
      }
      if (!(i1 & 1)) {
       i2 = (i1 & 255) >>> 1;
       if ((i1 & 255) < 22) {
        i8 = 1;
        i4 = 10;
        i7 = i2;
       } else {
        i8 = 1;
        i4 = (i2 + 16 & 240) + -1 | 0;
        i7 = i2;
       }
      } else {
       i8 = 0;
       i4 = 10;
       i7 = 0;
      }
      if ((i4 | 0) != (i5 | 0)) {
       if ((i4 | 0) == 10) {
        i3 = i10 + 1 | 0;
        i2 = HEAP32[i9 >> 2] | 0;
        if (i8) {
         _memcpy(i3 | 0, i2 | 0, ((i1 & 255) >>> 1) + 1 | 0) | 0;
         _free(i2);
        } else {
         HEAP8[i3 >> 0] = HEAP8[i2 >> 0] | 0;
         _free(i2);
        }
        HEAP8[i10 >> 0] = i7 << 1;
        break;
       }
       i2 = i4 + 1 | 0;
       i3 = _malloc(i2) | 0;
       if (!(i4 >>> 0 <= i5 >>> 0 & (i3 | 0) == 0)) {
        if (i8) _memcpy(i3 | 0, i10 + 1 | 0, ((i1 & 255) >>> 1) + 1 | 0) | 0; else {
         i139 = HEAP32[i9 >> 2] | 0;
         HEAP8[i3 >> 0] = HEAP8[i139 >> 0] | 0;
         _free(i139);
        }
        HEAP32[i10 >> 2] = i2 | 1;
        HEAP32[i6 >> 2] = i7;
        HEAP32[i9 >> 2] = i3;
       }
      }
     } else {
      HEAP8[i10 + 1 >> 0] = 0;
      HEAP8[i10 >> 0] = 0;
     } while (0);
     HEAP32[i10 >> 2] = HEAP32[i119 >> 2];
     HEAP32[i10 + 4 >> 2] = HEAP32[i119 + 4 >> 2];
     HEAP32[i10 + 8 >> 2] = HEAP32[i119 + 8 >> 2];
     i1 = 0;
     while (1) {
      if ((i1 | 0) == 3) break;
      HEAP32[i119 + (i1 << 2) >> 2] = 0;
      i1 = i1 + 1 | 0;
     }
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i119);
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i122);
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i120);
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i121);
     i1 = i11;
     break L1;
    }
   case 110:
    {
     i1 = __ZN10__cxxabiv112_GLOBAL__N_121parse_unresolved_nameINS0_2DbEEEPKcS4_S4_RT_(i1, i126, i135) | 0;
     break L1;
    }
   case 115:
    {
     if ((((((i59 | 0) > 2 ? (HEAP8[i1 >> 0] | 0) == 100 : 0) ? (HEAP8[i1 + 1 >> 0] | 0) == 115 : 0) ? (i137 = i1 + 2 | 0, i51 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_(i137, i126, i135) | 0, (i51 | 0) != (i137 | 0)) : 0) ? (i72 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_(i51, i126, i135) | 0, (i72 | 0) != (i51 | 0)) : 0) ? (i73 = i135 + 4 | 0, i52 = HEAP32[i73 >> 2] | 0, ((i52 - (HEAP32[i135 >> 2] | 0) | 0) / 24 | 0) >>> 0 >= 2) : 0) {
      __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv(i138, i52 + -24 | 0);
      i1 = HEAP32[i73 >> 2] | 0;
      i2 = i1 + -24 | 0;
      i3 = i1;
      while (1) {
       if ((i3 | 0) == (i2 | 0)) break;
       i137 = i3 + -24 | 0;
       HEAP32[i73 >> 2] = i137;
       __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i137);
       i3 = HEAP32[i73 >> 2] | 0;
      }
      __ZNSt3__1plIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEENS_12basic_stringIT_T0_T1_EEPKS8_RKSB_(i139, 34657, i138);
      i137 = HEAP8[i139 >> 0] | 0;
      i136 = (i137 & 1) == 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj(i1 + -48 | 0, i136 ? i139 + 1 | 0 : HEAP32[i139 + 8 >> 2] | 0, i136 ? (i137 & 255) >>> 1 : HEAP32[i139 + 4 >> 2] | 0) | 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i139);
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i138);
      i1 = i72;
     }
     break L1;
    }
   case 116:
    {
     if ((((((i59 | 0) > 2 ? (HEAP8[i1 >> 0] | 0) == 100 : 0) ? (HEAP8[i1 + 1 >> 0] | 0) == 116 : 0) ? (i137 = i1 + 2 | 0, i54 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_(i137, i126, i135) | 0, (i54 | 0) != (i137 | 0)) : 0) ? (i74 = __ZN10__cxxabiv112_GLOBAL__N_121parse_unresolved_nameINS0_2DbEEEPKcS4_S4_RT_(i54, i126, i135) | 0, (i74 | 0) != (i54 | 0)) : 0) ? (i75 = i135 + 4 | 0, i56 = HEAP32[i75 >> 2] | 0, ((i56 - (HEAP32[i135 >> 2] | 0) | 0) / 24 | 0) >>> 0 >= 2) : 0) {
      __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv(i138, i56 + -24 | 0);
      i1 = HEAP32[i75 >> 2] | 0;
      i2 = i1 + -24 | 0;
      i3 = i1;
      while (1) {
       if ((i3 | 0) == (i2 | 0)) break;
       i137 = i3 + -24 | 0;
       HEAP32[i75 >> 2] = i137;
       __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i137);
       i3 = HEAP32[i75 >> 2] | 0;
      }
      __ZNSt3__1plIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEENS_12basic_stringIT_T0_T1_EEPKS8_RKSB_(i139, 34660, i138);
      i137 = HEAP8[i139 >> 0] | 0;
      i136 = (i137 & 1) == 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj(i1 + -48 | 0, i136 ? i139 + 1 | 0 : HEAP32[i139 + 8 >> 2] | 0, i136 ? (i137 & 255) >>> 1 : HEAP32[i139 + 4 >> 2] | 0) | 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i139);
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i138);
      i1 = i74;
     }
     break L1;
    }
   case 118:
    {
     i138 = i1 + 2 | 0;
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj(i23, 34662, 1);
     i139 = __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_(i138, i126, i23, i135) | 0;
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i23);
     i1 = (i139 | 0) == (i138 | 0) ? i1 : i139;
     break L1;
    }
   case 86:
    {
     i138 = i1 + 2 | 0;
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj(i24, 34664, 2);
     i139 = __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_(i138, i126, i24, i135) | 0;
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i24);
     i1 = (i139 | 0) == (i138 | 0) ? i1 : i139;
     break L1;
    }
   default:
    break L1;
   }
  case 101:
   switch (HEAP8[i61 + 1 >> 0] | 0) {
   case 111:
    {
     i138 = i1 + 2 | 0;
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj(i25, 34667, 1);
     i139 = __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_(i138, i126, i25, i135) | 0;
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i25);
     i1 = (i139 | 0) == (i138 | 0) ? i1 : i139;
     break L1;
    }
   case 79:
    {
     i138 = i1 + 2 | 0;
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj(i27, 34669, 2);
     i139 = __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_(i138, i126, i27, i135) | 0;
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i27);
     i1 = (i139 | 0) == (i138 | 0) ? i1 : i139;
     break L1;
    }
   case 113:
    {
     i138 = i1 + 2 | 0;
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj(i28, 34672, 2);
     i139 = __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_(i138, i126, i28, i135) | 0;
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i28);
     i1 = (i139 | 0) == (i138 | 0) ? i1 : i139;
     break L1;
    }
   default:
    break L1;
   }
  case 103:
   switch (HEAP8[i61 + 1 >> 0] | 0) {
   case 101:
    {
     i138 = i1 + 2 | 0;
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj(i29, 34675, 2);
     i139 = __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_(i138, i126, i29, i135) | 0;
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i29);
     i1 = (i139 | 0) == (i138 | 0) ? i1 : i139;
     break L1;
    }
   case 116:
    {
     i138 = i1 + 2 | 0;
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj(i30, 33666, 1);
     i139 = __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_(i138, i126, i30, i135) | 0;
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i30);
     i1 = (i139 | 0) == (i138 | 0) ? i1 : i139;
     break L1;
    }
   default:
    break L1;
   }
  case 105:
   {
    if ((HEAP8[i61 + 1 >> 0] | 0) != 120) break L1;
    i137 = i1 + 2 | 0;
    i2 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_(i137, i126, i135) | 0;
    if ((i2 | 0) == (i137 | 0)) break L1;
    i5 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_(i2, i126, i135) | 0;
    i4 = i135 + 4 | 0;
    if ((i5 | 0) == (i2 | 0)) {
     i3 = HEAP32[i4 >> 2] | 0;
     i2 = i3 + -24 | 0;
     while (1) {
      if ((i3 | 0) == (i2 | 0)) break L1;
      i139 = i3 + -24 | 0;
      HEAP32[i4 >> 2] = i139;
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i139);
      i3 = HEAP32[i4 >> 2] | 0;
     }
    }
    i2 = HEAP32[i4 >> 2] | 0;
    if (((i2 - (HEAP32[i135 >> 2] | 0) | 0) / 24 | 0) >>> 0 < 2) break L1;
    __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv(i138, i2 + -24 | 0);
    i1 = HEAP32[i4 >> 2] | 0;
    i2 = i1 + -24 | 0;
    i3 = i1;
    while (1) {
     if ((i3 | 0) == (i2 | 0)) break;
     i137 = i3 + -24 | 0;
     HEAP32[i4 >> 2] = i137;
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i137);
     i3 = HEAP32[i4 >> 2] | 0;
    }
    __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv(i139, i1 + -48 | 0);
    i3 = (HEAP32[i4 >> 2] | 0) + -24 | 0;
    __ZNSt3__1plIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEENS_12basic_stringIT_T0_T1_EEPKS8_RKSB_(i102, 33619, i139);
    i1 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc(i102, 34678) | 0;
    HEAP32[i101 >> 2] = HEAP32[i1 >> 2];
    HEAP32[i101 + 4 >> 2] = HEAP32[i1 + 4 >> 2];
    HEAP32[i101 + 8 >> 2] = HEAP32[i1 + 8 >> 2];
    i2 = 0;
    while (1) {
     if ((i2 | 0) == 3) break;
     HEAP32[i1 + (i2 << 2) >> 2] = 0;
     i2 = i2 + 1 | 0;
    }
    i1 = HEAP8[i138 >> 0] | 0;
    i2 = (i1 & 1) == 0;
    i1 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj(i101, i2 ? i138 + 1 | 0 : HEAP32[i138 + 8 >> 2] | 0, i2 ? (i1 & 255) >>> 1 : HEAP32[i138 + 4 >> 2] | 0) | 0;
    HEAP32[i100 >> 2] = HEAP32[i1 >> 2];
    HEAP32[i100 + 4 >> 2] = HEAP32[i1 + 4 >> 2];
    HEAP32[i100 + 8 >> 2] = HEAP32[i1 + 8 >> 2];
    i2 = 0;
    while (1) {
     if ((i2 | 0) == 3) break;
     HEAP32[i1 + (i2 << 2) >> 2] = 0;
     i2 = i2 + 1 | 0;
    }
    i1 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc(i100, 33617) | 0;
    HEAP32[i99 >> 2] = HEAP32[i1 >> 2];
    HEAP32[i99 + 4 >> 2] = HEAP32[i1 + 4 >> 2];
    HEAP32[i99 + 8 >> 2] = HEAP32[i1 + 8 >> 2];
    i2 = 0;
    while (1) {
     if ((i2 | 0) == 3) break;
     HEAP32[i1 + (i2 << 2) >> 2] = 0;
     i2 = i2 + 1 | 0;
    }
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE(i98, i99);
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairaSEOS1_(i3, i98);
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i98);
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i99);
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i100);
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i101);
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i102);
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i139);
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i138);
    i1 = i5;
    break L1;
   }
  case 108:
   switch (HEAP8[i61 + 1 >> 0] | 0) {
   case 101:
    {
     i138 = i1 + 2 | 0;
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj(i31, 34681, 2);
     i139 = __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_(i138, i126, i31, i135) | 0;
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i31);
     i1 = (i139 | 0) == (i138 | 0) ? i1 : i139;
     break L1;
    }
   case 115:
    {
     i138 = i1 + 2 | 0;
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj(i32, 34684, 2);
     i139 = __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_(i138, i126, i32, i135) | 0;
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i32);
     i1 = (i139 | 0) == (i138 | 0) ? i1 : i139;
     break L1;
    }
   case 83:
    {
     i138 = i1 + 2 | 0;
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj(i33, 34687, 3);
     i139 = __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_(i138, i126, i33, i135) | 0;
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i33);
     i1 = (i139 | 0) == (i138 | 0) ? i1 : i139;
     break L1;
    }
   case 116:
    {
     i138 = i1 + 2 | 0;
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj(i34, 34251, 1);
     i139 = __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_(i138, i126, i34, i135) | 0;
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i34);
     i1 = (i139 | 0) == (i138 | 0) ? i1 : i139;
     break L1;
    }
   default:
    break L1;
   }
  case 109:
   switch (HEAP8[i61 + 1 >> 0] | 0) {
   case 105:
    {
     i138 = i1 + 2 | 0;
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj(i35, 34691, 1);
     i139 = __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_(i138, i126, i35, i135) | 0;
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i35);
     i1 = (i139 | 0) == (i138 | 0) ? i1 : i139;
     break L1;
    }
   case 73:
    {
     i138 = i1 + 2 | 0;
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj(i36, 34693, 2);
     i139 = __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_(i138, i126, i36, i135) | 0;
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i36);
     i1 = (i139 | 0) == (i138 | 0) ? i1 : i139;
     break L1;
    }
   case 108:
    {
     i138 = i1 + 2 | 0;
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj(i37, 33740, 1);
     i139 = __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_(i138, i126, i37, i135) | 0;
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i37);
     i1 = (i139 | 0) == (i138 | 0) ? i1 : i139;
     break L1;
    }
   case 76:
    {
     i138 = i1 + 2 | 0;
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj(i38, 34696, 2);
     i139 = __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_(i138, i126, i38, i135) | 0;
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i38);
     i1 = (i139 | 0) == (i138 | 0) ? i1 : i139;
     break L1;
    }
   case 109:
    {
     i2 = i1 + 2 | 0;
     if ((i2 | 0) != (i126 | 0) ? (HEAP8[i2 >> 0] | 0) == 95 : 0) {
      i138 = i1 + 3 | 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj(i63, 34699, 2);
      i139 = __ZN10__cxxabiv112_GLOBAL__N_123parse_prefix_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_(i138, i126, i63, i135) | 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i63);
      i1 = (i139 | 0) == (i138 | 0) ? i1 : i139;
      break L1;
     }
     i4 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_(i2, i126, i135) | 0;
     if ((i4 | 0) == (i2 | 0)) break L1;
     i2 = HEAP32[i135 + 4 >> 2] | 0;
     if ((HEAP32[i135 >> 2] | 0) == (i2 | 0)) break L1;
     i3 = i2 + -24 | 0;
     __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv(i85, i3);
     i1 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc(i85, 0, 33619) | 0;
     HEAP32[i84 >> 2] = HEAP32[i1 >> 2];
     HEAP32[i84 + 4 >> 2] = HEAP32[i1 + 4 >> 2];
     HEAP32[i84 + 8 >> 2] = HEAP32[i1 + 8 >> 2];
     i2 = 0;
     while (1) {
      if ((i2 | 0) == 3) break;
      HEAP32[i1 + (i2 << 2) >> 2] = 0;
      i2 = i2 + 1 | 0;
     }
     i1 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc(i84, 34702) | 0;
     HEAP32[i83 >> 2] = HEAP32[i1 >> 2];
     HEAP32[i83 + 4 >> 2] = HEAP32[i1 + 4 >> 2];
     HEAP32[i83 + 8 >> 2] = HEAP32[i1 + 8 >> 2];
     i2 = 0;
     while (1) {
      if ((i2 | 0) == 3) break;
      HEAP32[i1 + (i2 << 2) >> 2] = 0;
      i2 = i2 + 1 | 0;
     }
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE(i82, i83);
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairaSEOS1_(i3, i82);
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i82);
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i83);
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i84);
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i85);
     i1 = i4;
     break L1;
    }
   default:
    break L1;
   }
  case 110:
   switch (HEAP8[i61 + 1 >> 0] | 0) {
   case 119:
   case 97:
    {
     L479 : do if (i60) {
      i2 = HEAP8[i1 >> 0] | 0;
      if (i2 << 24 >> 24 == 103) {
       i15 = (HEAP8[i1 + 1 >> 0] | 0) == 115;
       i3 = i15 ? i1 + 2 | 0 : i1;
       i2 = HEAP8[i3 >> 0] | 0;
      } else {
       i15 = 0;
       i3 = i1;
      }
      if (i2 << 24 >> 24 == 110) {
       i2 = HEAP8[i3 + 1 >> 0] | 0;
       switch (i2 << 24 >> 24) {
       case 97:
       case 119:
        break;
       default:
        break L479;
       }
       i13 = i2 << 24 >> 24 == 97;
       i2 = i3 + 2 | 0;
       L486 : do if ((i2 | 0) != (i126 | 0)) {
        i5 = 0;
        while (1) {
         if ((HEAP8[i2 >> 0] | 0) == 95) break;
         i3 = i2;
         i2 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_(i2, i126, i135) | 0;
         i3 = (i2 | 0) == (i3 | 0);
         i4 = (i2 | 0) == (i126 | 0);
         if (i3 | i4) break L486; else i5 = i5 | (i3 | i4) ^ 1;
        }
        i123 = i2 + 1 | 0;
        i3 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_(i123, i126, i135) | 0;
        if (!((i3 | 0) == (i123 | 0) | (i3 | 0) == (i126 | 0))) {
         i2 = HEAP8[i3 >> 0] | 0;
         L492 : do if (!((i103 - i3 | 0) > 2 & i2 << 24 >> 24 == 112)) if (i2 << 24 >> 24 == 69) {
          i12 = 0;
          i14 = i3;
         } else break L486; else {
          if ((HEAP8[i3 + 1 >> 0] | 0) != 105) break L486;
          i2 = i3 + 2 | 0;
          while (1) {
           if ((HEAP8[i2 >> 0] | 0) == 69) {
            i12 = 1;
            i14 = i2;
            break L492;
           }
           i123 = i2;
           i2 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_(i2, i126, i135) | 0;
           if ((i2 | 0) == (i123 | 0) | (i2 | 0) == (i126 | 0)) break L486;
          }
         } while (0);
         i2 = 0;
         while (1) {
          if ((i2 | 0) == 3) break;
          HEAP32[i139 + (i2 << 2) >> 2] = 0;
          i2 = i2 + 1 | 0;
         }
         L504 : do if (i12) {
          i11 = i135 + 4 | 0;
          i2 = HEAP32[i11 >> 2] | 0;
          if ((HEAP32[i135 >> 2] | 0) == (i2 | 0)) {
           i3 = i1;
           i2 = 1;
          } else {
           __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv(i137, i2 + -24 | 0);
           L507 : do if (!(HEAP8[i139 >> 0] & 1)) {
            HEAP8[i139 + 1 >> 0] = 0;
            HEAP8[i139 >> 0] = 0;
           } else {
            i7 = i139 + 8 | 0;
            i3 = HEAP32[i7 >> 2] | 0;
            HEAP8[i3 >> 0] = 0;
            i8 = i139 + 4 | 0;
            HEAP32[i8 >> 2] = 0;
            i9 = HEAP32[i139 >> 2] | 0;
            i10 = (i9 & -2) + -1 | 0;
            i4 = i9 & 255;
            do if (!(i4 & 1)) {
             i2 = i9 >>> 1 & 127;
             if ((i4 & 255) < 22) {
              _memcpy(i139 + 1 | 0, i3 | 0, (i9 >>> 1 & 127) + 1 | 0) | 0;
              _free(i3);
              break;
             }
             i3 = i2 + 16 & 240;
             i6 = i3 + -1 | 0;
             if ((i6 | 0) == (i10 | 0)) break L507;
             i4 = _malloc(i3) | 0;
             if (i6 >>> 0 <= i10 >>> 0 & (i4 | 0) == 0) break L507;
             _memcpy(i4 | 0, i139 + 1 | 0, (i9 >>> 1 & 127) + 1 | 0) | 0;
             HEAP32[i139 >> 2] = i3 | 1;
             HEAP32[i8 >> 2] = i2;
             HEAP32[i7 >> 2] = i4;
             break L507;
            } else {
             HEAP8[i139 + 1 >> 0] = 0;
             _free(i3);
             i2 = 0;
            } while (0);
            HEAP8[i139 >> 0] = i2 << 1;
           } while (0);
           HEAP32[i139 >> 2] = HEAP32[i137 >> 2];
           HEAP32[i139 + 4 >> 2] = HEAP32[i137 + 4 >> 2];
           HEAP32[i139 + 8 >> 2] = HEAP32[i137 + 8 >> 2];
           i2 = 0;
           while (1) {
            if ((i2 | 0) == 3) break;
            HEAP32[i137 + (i2 << 2) >> 2] = 0;
            i2 = i2 + 1 | 0;
           }
           __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i137);
           i2 = HEAP32[i11 >> 2] | 0;
           i3 = i2 + -24 | 0;
           while (1) {
            if ((i2 | 0) == (i3 | 0)) {
             i6 = i135;
             i2 = i3;
             i129 = 409;
             break L504;
            }
            i137 = i2 + -24 | 0;
            HEAP32[i11 >> 2] = i137;
            __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i137);
            i2 = HEAP32[i11 >> 2] | 0;
           }
          }
         } else {
          i2 = i135 + 4 | 0;
          i11 = i2;
          i6 = i135;
          i2 = HEAP32[i2 >> 2] | 0;
          i129 = 409;
         } while (0);
         if ((i129 | 0) == 409) if ((HEAP32[i6 >> 2] | 0) == (i2 | 0)) {
          i3 = i1;
          i2 = 1;
         } else {
          __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv(i136, i2 + -24 | 0);
          i3 = HEAP32[i11 >> 2] | 0;
          i4 = i3 + -24 | 0;
          i2 = i3;
          while (1) {
           if ((i2 | 0) == (i4 | 0)) break;
           i137 = i2 + -24 | 0;
           HEAP32[i11 >> 2] = i137;
           __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i137);
           i2 = HEAP32[i11 >> 2] | 0;
          }
          i2 = 0;
          while (1) {
           if ((i2 | 0) == 3) break;
           HEAP32[i133 + (i2 << 2) >> 2] = 0;
           i2 = i2 + 1 | 0;
          }
          L539 : do if (i5) if ((HEAP32[i6 >> 2] | 0) == (i4 | 0)) {
           i3 = i1;
           i2 = 1;
          } else {
           __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv(i132, i3 + -48 | 0);
           L542 : do if (!(HEAP8[i133 >> 0] & 1)) {
            HEAP8[i133 + 1 >> 0] = 0;
            HEAP8[i133 >> 0] = 0;
           } else {
            i7 = i133 + 8 | 0;
            i3 = HEAP32[i7 >> 2] | 0;
            HEAP8[i3 >> 0] = 0;
            i8 = i133 + 4 | 0;
            HEAP32[i8 >> 2] = 0;
            i9 = HEAP32[i133 >> 2] | 0;
            i10 = (i9 & -2) + -1 | 0;
            i4 = i9 & 255;
            do if (!(i4 & 1)) {
             i2 = i9 >>> 1 & 127;
             if ((i4 & 255) < 22) {
              _memcpy(i133 + 1 | 0, i3 | 0, (i9 >>> 1 & 127) + 1 | 0) | 0;
              _free(i3);
              break;
             }
             i3 = i2 + 16 & 240;
             i6 = i3 + -1 | 0;
             if ((i6 | 0) == (i10 | 0)) break L542;
             i4 = _malloc(i3) | 0;
             if (i6 >>> 0 <= i10 >>> 0 & (i4 | 0) == 0) break L542;
             _memcpy(i4 | 0, i133 + 1 | 0, (i9 >>> 1 & 127) + 1 | 0) | 0;
             HEAP32[i133 >> 2] = i3 | 1;
             HEAP32[i8 >> 2] = i2;
             HEAP32[i7 >> 2] = i4;
             break L542;
            } else {
             HEAP8[i133 + 1 >> 0] = 0;
             _free(i3);
             i2 = 0;
            } while (0);
            HEAP8[i133 >> 0] = i2 << 1;
           } while (0);
           HEAP32[i133 >> 2] = HEAP32[i132 >> 2];
           HEAP32[i133 + 4 >> 2] = HEAP32[i132 + 4 >> 2];
           HEAP32[i133 + 8 >> 2] = HEAP32[i132 + 8 >> 2];
           i2 = 0;
           while (1) {
            if ((i2 | 0) == 3) break;
            HEAP32[i132 + (i2 << 2) >> 2] = 0;
            i2 = i2 + 1 | 0;
           }
           __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i132);
           i3 = HEAP32[i11 >> 2] | 0;
           i2 = i3 + -24 | 0;
           while (1) {
            if ((i3 | 0) == (i2 | 0)) {
             i129 = 434;
             break L539;
            }
            i137 = i3 + -24 | 0;
            HEAP32[i11 >> 2] = i137;
            __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i137);
            i3 = HEAP32[i11 >> 2] | 0;
           }
          } else i129 = 434; while (0);
          if ((i129 | 0) == 434) {
           i2 = 0;
           while (1) {
            if ((i2 | 0) == 3) break;
            HEAP32[i134 + (i2 << 2) >> 2] = 0;
            i2 = i2 + 1 | 0;
           }
           if (i15) __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6assignEPKcj(i134, 33713, 2);
           if (i13) __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc(i134, 34706) | 0; else __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc(i134, 34710) | 0;
           if (i5) {
            __ZNSt3__1plIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEENS_12basic_stringIT_T0_T1_EEPKS8_RKSB_(i125, 33619, i133);
            i2 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc(i125, 33668) | 0;
            HEAP32[i124 >> 2] = HEAP32[i2 >> 2];
            HEAP32[i124 + 4 >> 2] = HEAP32[i2 + 4 >> 2];
            HEAP32[i124 + 8 >> 2] = HEAP32[i2 + 8 >> 2];
            i3 = 0;
            while (1) {
             if ((i3 | 0) == 3) break;
             HEAP32[i2 + (i3 << 2) >> 2] = 0;
             i3 = i3 + 1 | 0;
            }
            i137 = HEAP8[i124 >> 0] | 0;
            i132 = (i137 & 1) == 0;
            __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj(i134, i132 ? i124 + 1 | 0 : HEAP32[i124 + 8 >> 2] | 0, i132 ? (i137 & 255) >>> 1 : HEAP32[i124 + 4 >> 2] | 0) | 0;
            __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i124);
            __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i125);
           }
           i137 = HEAP8[i136 >> 0] | 0;
           i132 = (i137 & 1) == 0;
           __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj(i134, i132 ? i136 + 1 | 0 : HEAP32[i136 + 8 >> 2] | 0, i132 ? (i137 & 255) >>> 1 : HEAP32[i136 + 4 >> 2] | 0) | 0;
           if (i12) {
            __ZNSt3__1plIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEENS_12basic_stringIT_T0_T1_EEPKS8_RKSB_(i127, 33671, i139);
            i2 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc(i127, 33621) | 0;
            HEAP32[i128 >> 2] = HEAP32[i2 >> 2];
            HEAP32[i128 + 4 >> 2] = HEAP32[i2 + 4 >> 2];
            HEAP32[i128 + 8 >> 2] = HEAP32[i2 + 8 >> 2];
            i3 = 0;
            while (1) {
             if ((i3 | 0) == 3) break;
             HEAP32[i2 + (i3 << 2) >> 2] = 0;
             i3 = i3 + 1 | 0;
            }
            i137 = HEAP8[i128 >> 0] | 0;
            i132 = (i137 & 1) == 0;
            __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj(i134, i132 ? i128 + 1 | 0 : HEAP32[i128 + 8 >> 2] | 0, i132 ? (i137 & 255) >>> 1 : HEAP32[i128 + 4 >> 2] | 0) | 0;
            __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i128);
            __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i127);
           };
           HEAP32[i131 >> 2] = HEAP32[i134 >> 2];
           HEAP32[i131 + 4 >> 2] = HEAP32[i134 + 4 >> 2];
           HEAP32[i131 + 8 >> 2] = HEAP32[i134 + 8 >> 2];
           i2 = 0;
           while (1) {
            if ((i2 | 0) == 3) break;
            HEAP32[i134 + (i2 << 2) >> 2] = 0;
            i2 = i2 + 1 | 0;
           }
           __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE(i130, i131);
           i2 = HEAP32[i11 >> 2] | 0;
           i137 = HEAP32[i135 + 8 >> 2] | 0;
           i5 = i137;
           if (i2 >>> 0 < i137 >>> 0) {
            __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i2, i130);
            HEAP32[i11 >> 2] = (HEAP32[i11 >> 2] | 0) + 24;
           } else {
            i3 = HEAP32[i135 >> 2] | 0;
            i137 = i2 - i3 | 0;
            i6 = (i137 | 0) / 24 | 0;
            i4 = i6 + 1 | 0;
            if ((i137 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i135);
            i2 = (i5 - i3 | 0) / 24 | 0;
            if (i2 >>> 0 < 1073741823) {
             i2 = i2 << 1;
             i2 = i2 >>> 0 < i4 >>> 0 ? i4 : i2;
            } else i2 = 2147483647;
            __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_(i138, i2, i6, i135 + 12 | 0);
            i137 = i138 + 8 | 0;
            i132 = HEAP32[i137 >> 2] | 0;
            __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i132, i130);
            HEAP32[i137 >> 2] = i132 + 24;
            __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i135, i138);
            __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev(i138);
           }
           __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i130);
           __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i131);
           __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i134);
           i3 = i14 + 1 | 0;
           i2 = 0;
          }
          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i133);
          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i136);
         }
         __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i139);
         if (!i2) {
          i1 = i3;
          break L479;
         }
        }
       } while (0);
      }
     } while (0);
     break L1;
    }
   case 101:
    {
     i138 = i1 + 2 | 0;
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj(i39, 34712, 2);
     i139 = __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_(i138, i126, i39, i135) | 0;
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i39);
     i1 = (i139 | 0) == (i138 | 0) ? i1 : i139;
     break L1;
    }
   case 103:
    {
     i138 = i1 + 2 | 0;
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj(i40, 34691, 1);
     i139 = __ZN10__cxxabiv112_GLOBAL__N_123parse_prefix_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_(i138, i126, i40, i135) | 0;
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i40);
     i1 = (i139 | 0) == (i138 | 0) ? i1 : i139;
     break L1;
    }
   case 116:
    {
     i138 = i1 + 2 | 0;
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj(i41, 34715, 1);
     i139 = __ZN10__cxxabiv112_GLOBAL__N_123parse_prefix_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_(i138, i126, i41, i135) | 0;
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i41);
     i1 = (i139 | 0) == (i138 | 0) ? i1 : i139;
     break L1;
    }
   case 120:
    {
     i13 = i1 + 2 | 0;
     i2 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_(i13, i126, i135) | 0;
     if ((i2 | 0) != (i13 | 0) ? (i81 = HEAP32[i135 + 4 >> 2] | 0, (HEAP32[i135 >> 2] | 0) != (i81 | 0)) : 0) {
      i12 = i81 + -24 | 0;
      __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv(i137, i12);
      i3 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc(i137, 0, 34717) | 0;
      HEAP32[i139 >> 2] = HEAP32[i3 >> 2];
      HEAP32[i139 + 4 >> 2] = HEAP32[i3 + 4 >> 2];
      HEAP32[i139 + 8 >> 2] = HEAP32[i3 + 8 >> 2];
      i4 = 0;
      while (1) {
       if ((i4 | 0) == 3) break;
       HEAP32[i3 + (i4 << 2) >> 2] = 0;
       i4 = i4 + 1 | 0;
      }
      i3 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc(i139, 33621) | 0;
      HEAP32[i138 >> 2] = HEAP32[i3 >> 2];
      HEAP32[i138 + 4 >> 2] = HEAP32[i3 + 4 >> 2];
      HEAP32[i138 + 8 >> 2] = HEAP32[i3 + 8 >> 2];
      i4 = 0;
      while (1) {
       if ((i4 | 0) == 3) break;
       HEAP32[i3 + (i4 << 2) >> 2] = 0;
       i4 = i4 + 1 | 0;
      }
      do if (HEAP8[i12 >> 0] & 1) {
       i11 = i81 + -16 | 0;
       HEAP8[HEAP32[i11 >> 2] >> 0] = 0;
       i8 = i81 + -20 | 0;
       HEAP32[i8 >> 2] = 0;
       i3 = HEAP8[i12 >> 0] | 0;
       if (!(i3 & 1)) i7 = 10; else {
        i7 = HEAP32[i12 >> 2] | 0;
        i3 = i7 & 255;
        i7 = (i7 & -2) + -1 | 0;
       }
       if (!(i3 & 1)) {
        i4 = (i3 & 255) >>> 1;
        if ((i3 & 255) < 22) {
         i6 = 10;
         i9 = i4;
         i10 = 1;
        } else {
         i6 = (i4 + 16 & 240) + -1 | 0;
         i9 = i4;
         i10 = 1;
        }
       } else {
        i6 = 10;
        i9 = 0;
        i10 = 0;
       }
       if ((i6 | 0) != (i7 | 0)) {
        if ((i6 | 0) == 10) {
         i5 = i12 + 1 | 0;
         i4 = HEAP32[i11 >> 2] | 0;
         if (i10) {
          _memcpy(i5 | 0, i4 | 0, ((i3 & 255) >>> 1) + 1 | 0) | 0;
          _free(i4);
         } else {
          HEAP8[i5 >> 0] = HEAP8[i4 >> 0] | 0;
          _free(i4);
         }
         HEAP8[i12 >> 0] = i9 << 1;
         break;
        }
        i4 = i6 + 1 | 0;
        i5 = _malloc(i4) | 0;
        if (!(i6 >>> 0 <= i7 >>> 0 & (i5 | 0) == 0)) {
         if (i10) _memcpy(i5 | 0, i12 + 1 | 0, ((i3 & 255) >>> 1) + 1 | 0) | 0; else {
          i136 = HEAP32[i11 >> 2] | 0;
          HEAP8[i5 >> 0] = HEAP8[i136 >> 0] | 0;
          _free(i136);
         }
         HEAP32[i12 >> 2] = i4 | 1;
         HEAP32[i8 >> 2] = i9;
         HEAP32[i11 >> 2] = i5;
        }
       }
      } else {
       HEAP8[i12 + 1 >> 0] = 0;
       HEAP8[i12 >> 0] = 0;
      } while (0);
      HEAP32[i12 >> 2] = HEAP32[i138 >> 2];
      HEAP32[i12 + 4 >> 2] = HEAP32[i138 + 4 >> 2];
      HEAP32[i12 + 8 >> 2] = HEAP32[i138 + 8 >> 2];
      i3 = 0;
      while (1) {
       if ((i3 | 0) == 3) break;
       HEAP32[i138 + (i3 << 2) >> 2] = 0;
       i3 = i3 + 1 | 0;
      }
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i138);
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i139);
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i137);
     } else i2 = i13;
     i1 = (i2 | 0) == (i13 | 0) ? i1 : i2;
     break L1;
    }
   default:
    break L1;
   }
  case 111:
   switch (HEAP8[i61 + 1 >> 0] | 0) {
   case 110:
    {
     i1 = __ZN10__cxxabiv112_GLOBAL__N_121parse_unresolved_nameINS0_2DbEEEPKcS4_S4_RT_(i1, i126, i135) | 0;
     break L1;
    }
   case 111:
    {
     i138 = i1 + 2 | 0;
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj(i42, 34728, 2);
     i139 = __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_(i138, i126, i42, i135) | 0;
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i42);
     i1 = (i139 | 0) == (i138 | 0) ? i1 : i139;
     break L1;
    }
   case 114:
    {
     i138 = i1 + 2 | 0;
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj(i43, 34731, 1);
     i139 = __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_(i138, i126, i43, i135) | 0;
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i43);
     i1 = (i139 | 0) == (i138 | 0) ? i1 : i139;
     break L1;
    }
   case 82:
    {
     i138 = i1 + 2 | 0;
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj(i44, 34733, 2);
     i139 = __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_(i138, i126, i44, i135) | 0;
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i44);
     i1 = (i139 | 0) == (i138 | 0) ? i1 : i139;
     break L1;
    }
   default:
    break L1;
   }
  case 112:
   switch (HEAP8[i61 + 1 >> 0] | 0) {
   case 109:
    {
     i138 = i1 + 2 | 0;
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj(i45, 34736, 3);
     i139 = __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_(i138, i126, i45, i135) | 0;
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i45);
     i1 = (i139 | 0) == (i138 | 0) ? i1 : i139;
     break L1;
    }
   case 108:
    {
     i138 = i1 + 2 | 0;
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj(i48, 34740, 1);
     i139 = __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_(i138, i126, i48, i135) | 0;
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i48);
     i1 = (i139 | 0) == (i138 | 0) ? i1 : i139;
     break L1;
    }
   case 76:
    {
     i138 = i1 + 2 | 0;
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj(i49, 34742, 2);
     i139 = __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_(i138, i126, i49, i135) | 0;
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i49);
     i1 = (i139 | 0) == (i138 | 0) ? i1 : i139;
     break L1;
    }
   case 112:
    {
     i2 = i1 + 2 | 0;
     if ((i2 | 0) != (i126 | 0) ? (HEAP8[i2 >> 0] | 0) == 95 : 0) {
      i138 = i1 + 3 | 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj(i64, 34745, 2);
      i139 = __ZN10__cxxabiv112_GLOBAL__N_123parse_prefix_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_(i138, i126, i64, i135) | 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i64);
      i1 = (i139 | 0) == (i138 | 0) ? i1 : i139;
      break L1;
     }
     i4 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_(i2, i126, i135) | 0;
     if ((i4 | 0) == (i2 | 0)) break L1;
     i2 = HEAP32[i135 + 4 >> 2] | 0;
     if ((HEAP32[i135 >> 2] | 0) == (i2 | 0)) break L1;
     i3 = i2 + -24 | 0;
     __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv(i89, i3);
     i1 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc(i89, 0, 33619) | 0;
     HEAP32[i88 >> 2] = HEAP32[i1 >> 2];
     HEAP32[i88 + 4 >> 2] = HEAP32[i1 + 4 >> 2];
     HEAP32[i88 + 8 >> 2] = HEAP32[i1 + 8 >> 2];
     i2 = 0;
     while (1) {
      if ((i2 | 0) == 3) break;
      HEAP32[i1 + (i2 << 2) >> 2] = 0;
      i2 = i2 + 1 | 0;
     }
     i1 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc(i88, 34748) | 0;
     HEAP32[i87 >> 2] = HEAP32[i1 >> 2];
     HEAP32[i87 + 4 >> 2] = HEAP32[i1 + 4 >> 2];
     HEAP32[i87 + 8 >> 2] = HEAP32[i1 + 8 >> 2];
     i2 = 0;
     while (1) {
      if ((i2 | 0) == 3) break;
      HEAP32[i1 + (i2 << 2) >> 2] = 0;
      i2 = i2 + 1 | 0;
     }
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE(i86, i87);
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairaSEOS1_(i3, i86);
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i86);
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i87);
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i88);
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i89);
     i1 = i4;
     break L1;
    }
   case 115:
    {
     i138 = i1 + 2 | 0;
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj(i50, 34740, 1);
     i139 = __ZN10__cxxabiv112_GLOBAL__N_123parse_prefix_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_(i138, i126, i50, i135) | 0;
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i50);
     i1 = (i139 | 0) == (i138 | 0) ? i1 : i139;
     break L1;
    }
   case 116:
    {
     if ((i59 | 0) <= 2) break L1;
     if ((HEAP8[i1 >> 0] | 0) != 112) break L1;
     if ((HEAP8[i1 + 1 >> 0] | 0) != 116) break L1;
     i139 = i1 + 2 | 0;
     i2 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_(i139, i126, i135) | 0;
     if ((i2 | 0) == (i139 | 0)) break L1;
     i5 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_(i2, i126, i135) | 0;
     if ((i5 | 0) == (i2 | 0)) break L1;
     i4 = i135 + 4 | 0;
     i2 = HEAP32[i4 >> 2] | 0;
     if (((i2 - (HEAP32[i135 >> 2] | 0) | 0) / 24 | 0) >>> 0 < 2) break L1;
     __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv(i138, i2 + -24 | 0);
     i1 = HEAP32[i4 >> 2] | 0;
     i2 = i1 + -24 | 0;
     i3 = i1;
     while (1) {
      if ((i3 | 0) == (i2 | 0)) break;
      i139 = i3 + -24 | 0;
      HEAP32[i4 >> 2] = i139;
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i139);
      i3 = HEAP32[i4 >> 2] | 0;
     }
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc(i1 + -48 | 0, 34752) | 0;
     i1 = HEAP8[i138 >> 0] | 0;
     i139 = (i1 & 1) == 0;
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj((HEAP32[i4 >> 2] | 0) + -24 | 0, i139 ? i138 + 1 | 0 : HEAP32[i138 + 8 >> 2] | 0, i139 ? (i1 & 255) >>> 1 : HEAP32[i138 + 4 >> 2] | 0) | 0;
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i138);
     i1 = i5;
     break L1;
    }
   default:
    break L1;
   }
  case 113:
   {
    if ((HEAP8[i61 + 1 >> 0] | 0) != 117) break L1;
    i136 = i1 + 2 | 0;
    i2 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_(i136, i126, i135) | 0;
    if ((i2 | 0) == (i136 | 0)) break L1;
    i3 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_(i2, i126, i135) | 0;
    if ((i3 | 0) == (i2 | 0)) {
     i2 = i135 + 4 | 0;
     i4 = HEAP32[i2 >> 2] | 0;
     i3 = i4 + -24 | 0;
     while (1) {
      if ((i4 | 0) == (i3 | 0)) break L1;
      i139 = i4 + -24 | 0;
      HEAP32[i2 >> 2] = i139;
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i139);
      i4 = HEAP32[i2 >> 2] | 0;
     }
    }
    i4 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_(i3, i126, i135) | 0;
    i5 = i135 + 4 | 0;
    if ((i4 | 0) == (i3 | 0)) {
     i3 = HEAP32[i5 >> 2] | 0;
     i2 = i3 + -24 | 0;
     i4 = i3;
     while (1) {
      if ((i4 | 0) == (i2 | 0)) break;
      i139 = i4 + -24 | 0;
      HEAP32[i5 >> 2] = i139;
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i139);
      i4 = HEAP32[i5 >> 2] | 0;
     }
     i3 = i3 + -48 | 0;
     while (1) {
      if ((i2 | 0) == (i3 | 0)) break L1;
      i139 = i2 + -24 | 0;
      HEAP32[i5 >> 2] = i139;
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i139);
      i2 = HEAP32[i5 >> 2] | 0;
     }
    }
    i2 = HEAP32[i5 >> 2] | 0;
    if (((i2 - (HEAP32[i135 >> 2] | 0) | 0) / 24 | 0) >>> 0 < 3) break L1;
    __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv(i138, i2 + -24 | 0);
    i1 = HEAP32[i5 >> 2] | 0;
    i2 = i1 + -24 | 0;
    i3 = i1;
    while (1) {
     if ((i3 | 0) == (i2 | 0)) break;
     i136 = i3 + -24 | 0;
     HEAP32[i5 >> 2] = i136;
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i136);
     i3 = HEAP32[i5 >> 2] | 0;
    }
    __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv(i139, i1 + -48 | 0);
    i1 = HEAP32[i5 >> 2] | 0;
    i2 = i1 + -24 | 0;
    i3 = i1;
    while (1) {
     if ((i3 | 0) == (i2 | 0)) break;
     i136 = i3 + -24 | 0;
     HEAP32[i5 >> 2] = i136;
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i136);
     i3 = HEAP32[i5 >> 2] | 0;
    }
    __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv(i137, i1 + -48 | 0);
    i3 = (HEAP32[i5 >> 2] | 0) + -24 | 0;
    __ZNSt3__1plIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEENS_12basic_stringIT_T0_T1_EEPKS8_RKSB_(i114, 33619, i137);
    i1 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc(i114, 34755) | 0;
    HEAP32[i113 >> 2] = HEAP32[i1 >> 2];
    HEAP32[i113 + 4 >> 2] = HEAP32[i1 + 4 >> 2];
    HEAP32[i113 + 8 >> 2] = HEAP32[i1 + 8 >> 2];
    i2 = 0;
    while (1) {
     if ((i2 | 0) == 3) break;
     HEAP32[i1 + (i2 << 2) >> 2] = 0;
     i2 = i2 + 1 | 0;
    }
    i1 = HEAP8[i139 >> 0] | 0;
    i2 = (i1 & 1) == 0;
    i1 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj(i113, i2 ? i139 + 1 | 0 : HEAP32[i139 + 8 >> 2] | 0, i2 ? (i1 & 255) >>> 1 : HEAP32[i139 + 4 >> 2] | 0) | 0;
    HEAP32[i112 >> 2] = HEAP32[i1 >> 2];
    HEAP32[i112 + 4 >> 2] = HEAP32[i1 + 4 >> 2];
    HEAP32[i112 + 8 >> 2] = HEAP32[i1 + 8 >> 2];
    i2 = 0;
    while (1) {
     if ((i2 | 0) == 3) break;
     HEAP32[i1 + (i2 << 2) >> 2] = 0;
     i2 = i2 + 1 | 0;
    }
    i1 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc(i112, 34761) | 0;
    HEAP32[i111 >> 2] = HEAP32[i1 >> 2];
    HEAP32[i111 + 4 >> 2] = HEAP32[i1 + 4 >> 2];
    HEAP32[i111 + 8 >> 2] = HEAP32[i1 + 8 >> 2];
    i2 = 0;
    while (1) {
     if ((i2 | 0) == 3) break;
     HEAP32[i1 + (i2 << 2) >> 2] = 0;
     i2 = i2 + 1 | 0;
    }
    i1 = HEAP8[i138 >> 0] | 0;
    i2 = (i1 & 1) == 0;
    i1 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj(i111, i2 ? i138 + 1 | 0 : HEAP32[i138 + 8 >> 2] | 0, i2 ? (i1 & 255) >>> 1 : HEAP32[i138 + 4 >> 2] | 0) | 0;
    HEAP32[i110 >> 2] = HEAP32[i1 >> 2];
    HEAP32[i110 + 4 >> 2] = HEAP32[i1 + 4 >> 2];
    HEAP32[i110 + 8 >> 2] = HEAP32[i1 + 8 >> 2];
    i2 = 0;
    while (1) {
     if ((i2 | 0) == 3) break;
     HEAP32[i1 + (i2 << 2) >> 2] = 0;
     i2 = i2 + 1 | 0;
    }
    i1 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc(i110, 33621) | 0;
    HEAP32[i109 >> 2] = HEAP32[i1 >> 2];
    HEAP32[i109 + 4 >> 2] = HEAP32[i1 + 4 >> 2];
    HEAP32[i109 + 8 >> 2] = HEAP32[i1 + 8 >> 2];
    i2 = 0;
    while (1) {
     if ((i2 | 0) == 3) break;
     HEAP32[i1 + (i2 << 2) >> 2] = 0;
     i2 = i2 + 1 | 0;
    }
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE(i108, i109);
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairaSEOS1_(i3, i108);
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i108);
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i109);
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i110);
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i111);
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i112);
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i113);
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i114);
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i137);
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i139);
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i138);
    i1 = i4;
    break L1;
   }
  case 114:
   switch (HEAP8[i61 + 1 >> 0] | 0) {
   case 99:
    {
     if ((((((i59 | 0) > 2 ? (HEAP8[i1 >> 0] | 0) == 114 : 0) ? (HEAP8[i1 + 1 >> 0] | 0) == 99 : 0) ? (i131 = i1 + 2 | 0, i4 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_(i131, i126, i135) | 0, (i4 | 0) != (i131 | 0)) : 0) ? (i93 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_(i4, i126, i135) | 0, (i93 | 0) != (i4 | 0)) : 0) ? (i65 = i135 + 4 | 0, i5 = HEAP32[i65 >> 2] | 0, ((i5 - (HEAP32[i135 >> 2] | 0) | 0) / 24 | 0) >>> 0 >= 2) : 0) {
      __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv(i138, i5 + -24 | 0);
      i1 = HEAP32[i65 >> 2] | 0;
      i2 = i1 + -24 | 0;
      i3 = i1;
      while (1) {
       if ((i3 | 0) == (i2 | 0)) break;
       i135 = i3 + -24 | 0;
       HEAP32[i65 >> 2] = i135;
       __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i135);
       i3 = HEAP32[i65 >> 2] | 0;
      }
      i3 = i1 + -48 | 0;
      __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv(i134, i3);
      i1 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc(i134, 0, 34767) | 0;
      HEAP32[i132 >> 2] = HEAP32[i1 >> 2];
      HEAP32[i132 + 4 >> 2] = HEAP32[i1 + 4 >> 2];
      HEAP32[i132 + 8 >> 2] = HEAP32[i1 + 8 >> 2];
      i2 = 0;
      while (1) {
       if ((i2 | 0) == 3) break;
       HEAP32[i1 + (i2 << 2) >> 2] = 0;
       i2 = i2 + 1 | 0;
      }
      i1 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc(i132, 33703) | 0;
      HEAP32[i133 >> 2] = HEAP32[i1 >> 2];
      HEAP32[i133 + 4 >> 2] = HEAP32[i1 + 4 >> 2];
      HEAP32[i133 + 8 >> 2] = HEAP32[i1 + 8 >> 2];
      i2 = 0;
      while (1) {
       if ((i2 | 0) == 3) break;
       HEAP32[i1 + (i2 << 2) >> 2] = 0;
       i2 = i2 + 1 | 0;
      }
      i1 = HEAP8[i138 >> 0] | 0;
      i2 = (i1 & 1) == 0;
      i1 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj(i133, i2 ? i138 + 1 | 0 : HEAP32[i138 + 8 >> 2] | 0, i2 ? (i1 & 255) >>> 1 : HEAP32[i138 + 4 >> 2] | 0) | 0;
      HEAP32[i136 >> 2] = HEAP32[i1 >> 2];
      HEAP32[i136 + 4 >> 2] = HEAP32[i1 + 4 >> 2];
      HEAP32[i136 + 8 >> 2] = HEAP32[i1 + 8 >> 2];
      i2 = 0;
      while (1) {
       if ((i2 | 0) == 3) break;
       HEAP32[i1 + (i2 << 2) >> 2] = 0;
       i2 = i2 + 1 | 0;
      }
      i1 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc(i136, 33621) | 0;
      HEAP32[i137 >> 2] = HEAP32[i1 >> 2];
      HEAP32[i137 + 4 >> 2] = HEAP32[i1 + 4 >> 2];
      HEAP32[i137 + 8 >> 2] = HEAP32[i1 + 8 >> 2];
      i2 = 0;
      while (1) {
       if ((i2 | 0) == 3) break;
       HEAP32[i1 + (i2 << 2) >> 2] = 0;
       i2 = i2 + 1 | 0;
      }
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE(i139, i137);
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairaSEOS1_(i3, i139);
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i139);
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i137);
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i136);
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i133);
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i132);
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i134);
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i138);
      i1 = i93;
     }
     break L1;
    }
   case 109:
    {
     i138 = i1 + 2 | 0;
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj(i53, 34785, 1);
     i139 = __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_(i138, i126, i53, i135) | 0;
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i53);
     i1 = (i139 | 0) == (i138 | 0) ? i1 : i139;
     break L1;
    }
   case 77:
    {
     i138 = i1 + 2 | 0;
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj(i55, 34787, 2);
     i139 = __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_(i138, i126, i55, i135) | 0;
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i55);
     i1 = (i139 | 0) == (i138 | 0) ? i1 : i139;
     break L1;
    }
   case 115:
    {
     i138 = i1 + 2 | 0;
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj(i57, 34790, 2);
     i139 = __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_(i138, i126, i57, i135) | 0;
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i57);
     i1 = (i139 | 0) == (i138 | 0) ? i1 : i139;
     break L1;
    }
   case 83:
    {
     i138 = i1 + 2 | 0;
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj(i58, 34793, 3);
     i139 = __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_(i138, i126, i58, i135) | 0;
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i58);
     i1 = (i139 | 0) == (i138 | 0) ? i1 : i139;
     break L1;
    }
   default:
    break L1;
   }
  case 115:
   switch (HEAP8[i61 + 1 >> 0] | 0) {
   case 99:
    {
     if ((((((i59 | 0) > 2 ? (HEAP8[i1 >> 0] | 0) == 115 : 0) ? (HEAP8[i1 + 1 >> 0] | 0) == 99 : 0) ? (i131 = i1 + 2 | 0, i7 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_(i131, i126, i135) | 0, (i7 | 0) != (i131 | 0)) : 0) ? (i94 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_(i7, i126, i135) | 0, (i94 | 0) != (i7 | 0)) : 0) ? (i66 = i135 + 4 | 0, i8 = HEAP32[i66 >> 2] | 0, ((i8 - (HEAP32[i135 >> 2] | 0) | 0) / 24 | 0) >>> 0 >= 2) : 0) {
      __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv(i138, i8 + -24 | 0);
      i1 = HEAP32[i66 >> 2] | 0;
      i2 = i1 + -24 | 0;
      i3 = i1;
      while (1) {
       if ((i3 | 0) == (i2 | 0)) break;
       i135 = i3 + -24 | 0;
       HEAP32[i66 >> 2] = i135;
       __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i135);
       i3 = HEAP32[i66 >> 2] | 0;
      }
      i3 = i1 + -48 | 0;
      __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv(i134, i3);
      i1 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc(i134, 0, 34797) | 0;
      HEAP32[i132 >> 2] = HEAP32[i1 >> 2];
      HEAP32[i132 + 4 >> 2] = HEAP32[i1 + 4 >> 2];
      HEAP32[i132 + 8 >> 2] = HEAP32[i1 + 8 >> 2];
      i2 = 0;
      while (1) {
       if ((i2 | 0) == 3) break;
       HEAP32[i1 + (i2 << 2) >> 2] = 0;
       i2 = i2 + 1 | 0;
      }
      i1 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc(i132, 33703) | 0;
      HEAP32[i133 >> 2] = HEAP32[i1 >> 2];
      HEAP32[i133 + 4 >> 2] = HEAP32[i1 + 4 >> 2];
      HEAP32[i133 + 8 >> 2] = HEAP32[i1 + 8 >> 2];
      i2 = 0;
      while (1) {
       if ((i2 | 0) == 3) break;
       HEAP32[i1 + (i2 << 2) >> 2] = 0;
       i2 = i2 + 1 | 0;
      }
      i1 = HEAP8[i138 >> 0] | 0;
      i2 = (i1 & 1) == 0;
      i1 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj(i133, i2 ? i138 + 1 | 0 : HEAP32[i138 + 8 >> 2] | 0, i2 ? (i1 & 255) >>> 1 : HEAP32[i138 + 4 >> 2] | 0) | 0;
      HEAP32[i136 >> 2] = HEAP32[i1 >> 2];
      HEAP32[i136 + 4 >> 2] = HEAP32[i1 + 4 >> 2];
      HEAP32[i136 + 8 >> 2] = HEAP32[i1 + 8 >> 2];
      i2 = 0;
      while (1) {
       if ((i2 | 0) == 3) break;
       HEAP32[i1 + (i2 << 2) >> 2] = 0;
       i2 = i2 + 1 | 0;
      }
      i1 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc(i136, 33621) | 0;
      HEAP32[i137 >> 2] = HEAP32[i1 >> 2];
      HEAP32[i137 + 4 >> 2] = HEAP32[i1 + 4 >> 2];
      HEAP32[i137 + 8 >> 2] = HEAP32[i1 + 8 >> 2];
      i2 = 0;
      while (1) {
       if ((i2 | 0) == 3) break;
       HEAP32[i1 + (i2 << 2) >> 2] = 0;
       i2 = i2 + 1 | 0;
      }
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE(i139, i137);
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairaSEOS1_(i3, i139);
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i139);
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i137);
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i136);
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i133);
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i132);
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i134);
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i138);
      i1 = i94;
     }
     break L1;
    }
   case 112:
    {
     if ((i59 | 0) <= 2) break L1;
     if ((HEAP8[i1 >> 0] | 0) != 115) break L1;
     if ((HEAP8[i1 + 1 >> 0] | 0) != 112) break L1;
     i138 = i1 + 2 | 0;
     i139 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_(i138, i126, i135) | 0;
     i1 = (i139 | 0) == (i138 | 0) ? i1 : i139;
     break L1;
    }
   case 114:
    {
     i1 = __ZN10__cxxabiv112_GLOBAL__N_121parse_unresolved_nameINS0_2DbEEEPKcS4_S4_RT_(i1, i126, i135) | 0;
     break L1;
    }
   case 116:
    {
     if (((((i59 | 0) > 2 ? (HEAP8[i1 >> 0] | 0) == 115 : 0) ? (HEAP8[i1 + 1 >> 0] | 0) == 116 : 0) ? (i134 = i1 + 2 | 0, i76 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_(i134, i126, i135) | 0, (i76 | 0) != (i134 | 0)) : 0) ? (i10 = HEAP32[i135 + 4 >> 2] | 0, (HEAP32[i135 >> 2] | 0) != (i10 | 0)) : 0) {
      i3 = i10 + -24 | 0;
      __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv(i136, i3);
      i1 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc(i136, 0, 34810) | 0;
      HEAP32[i137 >> 2] = HEAP32[i1 >> 2];
      HEAP32[i137 + 4 >> 2] = HEAP32[i1 + 4 >> 2];
      HEAP32[i137 + 8 >> 2] = HEAP32[i1 + 8 >> 2];
      i2 = 0;
      while (1) {
       if ((i2 | 0) == 3) break;
       HEAP32[i1 + (i2 << 2) >> 2] = 0;
       i2 = i2 + 1 | 0;
      }
      i1 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc(i137, 33621) | 0;
      HEAP32[i139 >> 2] = HEAP32[i1 >> 2];
      HEAP32[i139 + 4 >> 2] = HEAP32[i1 + 4 >> 2];
      HEAP32[i139 + 8 >> 2] = HEAP32[i1 + 8 >> 2];
      i2 = 0;
      while (1) {
       if ((i2 | 0) == 3) break;
       HEAP32[i1 + (i2 << 2) >> 2] = 0;
       i2 = i2 + 1 | 0;
      }
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE(i138, i139);
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairaSEOS1_(i3, i138);
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i138);
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i139);
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i137);
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i136);
      i1 = i76;
     }
     break L1;
    }
   case 122:
    {
     if (((((i59 | 0) > 2 ? (HEAP8[i1 >> 0] | 0) == 115 : 0) ? (HEAP8[i1 + 1 >> 0] | 0) == 122 : 0) ? (i134 = i1 + 2 | 0, i77 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_(i134, i126, i135) | 0, (i77 | 0) != (i134 | 0)) : 0) ? (i11 = HEAP32[i135 + 4 >> 2] | 0, (HEAP32[i135 >> 2] | 0) != (i11 | 0)) : 0) {
      i3 = i11 + -24 | 0;
      __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv(i136, i3);
      i1 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc(i136, 0, 34810) | 0;
      HEAP32[i137 >> 2] = HEAP32[i1 >> 2];
      HEAP32[i137 + 4 >> 2] = HEAP32[i1 + 4 >> 2];
      HEAP32[i137 + 8 >> 2] = HEAP32[i1 + 8 >> 2];
      i2 = 0;
      while (1) {
       if ((i2 | 0) == 3) break;
       HEAP32[i1 + (i2 << 2) >> 2] = 0;
       i2 = i2 + 1 | 0;
      }
      i1 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc(i137, 33621) | 0;
      HEAP32[i139 >> 2] = HEAP32[i1 >> 2];
      HEAP32[i139 + 4 >> 2] = HEAP32[i1 + 4 >> 2];
      HEAP32[i139 + 8 >> 2] = HEAP32[i1 + 8 >> 2];
      i2 = 0;
      while (1) {
       if ((i2 | 0) == 3) break;
       HEAP32[i1 + (i2 << 2) >> 2] = 0;
       i2 = i2 + 1 | 0;
      }
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE(i138, i139);
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairaSEOS1_(i3, i138);
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i138);
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i139);
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i137);
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i136);
      i1 = i77;
     }
     break L1;
    }
   case 90:
    {
     if ((i103 - i61 | 0) <= 2) break L1;
     switch (HEAP8[i61 + 2 >> 0] | 0) {
     case 84:
      break;
     case 102:
      {
       if ((((((i59 | 0) > 2 ? (HEAP8[i1 >> 0] | 0) == 115 : 0) ? (HEAP8[i1 + 1 >> 0] | 0) == 90 : 0) ? (i14 = i1 + 2 | 0, (HEAP8[i14 >> 0] | 0) == 102) : 0) ? (i78 = __ZN10__cxxabiv112_GLOBAL__N_120parse_function_paramINS0_2DbEEEPKcS4_S4_RT_(i14, i126, i135) | 0, (i78 | 0) != (i14 | 0)) : 0) ? (i15 = HEAP32[i135 + 4 >> 2] | 0, (HEAP32[i135 >> 2] | 0) != (i15 | 0)) : 0) {
        i3 = i15 + -24 | 0;
        __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv(i136, i3);
        i1 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc(i136, 0, 34819) | 0;
        HEAP32[i137 >> 2] = HEAP32[i1 >> 2];
        HEAP32[i137 + 4 >> 2] = HEAP32[i1 + 4 >> 2];
        HEAP32[i137 + 8 >> 2] = HEAP32[i1 + 8 >> 2];
        i2 = 0;
        while (1) {
         if ((i2 | 0) == 3) break;
         HEAP32[i1 + (i2 << 2) >> 2] = 0;
         i2 = i2 + 1 | 0;
        }
        i1 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc(i137, 33621) | 0;
        HEAP32[i139 >> 2] = HEAP32[i1 >> 2];
        HEAP32[i139 + 4 >> 2] = HEAP32[i1 + 4 >> 2];
        HEAP32[i139 + 8 >> 2] = HEAP32[i1 + 8 >> 2];
        i2 = 0;
        while (1) {
         if ((i2 | 0) == 3) break;
         HEAP32[i1 + (i2 << 2) >> 2] = 0;
         i2 = i2 + 1 | 0;
        }
        __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE(i138, i139);
        __ZN10__cxxabiv112_GLOBAL__N_111string_pairaSEOS1_(i3, i138);
        __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i138);
        __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i139);
        __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i137);
        __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i136);
        i1 = i78;
       }
       break L1;
      }
     default:
      break L1;
     }
     if (((((i59 | 0) > 2 ? (HEAP8[i1 >> 0] | 0) == 115 : 0) ? (HEAP8[i1 + 1 >> 0] | 0) == 90 : 0) ? (i12 = i1 + 2 | 0, (HEAP8[i12 >> 0] | 0) == 84) : 0) ? (i104 = i135 + 4 | 0, i97 = ((HEAP32[i104 >> 2] | 0) - (HEAP32[i135 >> 2] | 0) | 0) / 24 | 0, i107 = __ZN10__cxxabiv112_GLOBAL__N_120parse_template_paramINS0_2DbEEEPKcS4_S4_RT_(i12, i126, i135) | 0, i67 = HEAP32[i135 >> 2] | 0, i92 = ((HEAP32[i104 >> 2] | 0) - i67 | 0) / 24 | 0, i67, (i107 | 0) != (i12 | 0)) : 0) {
      HEAP8[i139 >> 0] = 20;
      i1 = i139 + 1 | 0;
      i2 = 34819;
      i3 = i1 + 10 | 0;
      do {
       HEAP8[i1 >> 0] = HEAP8[i2 >> 0] | 0;
       i1 = i1 + 1 | 0;
       i2 = i2 + 1 | 0;
      } while ((i1 | 0) < (i3 | 0));
      HEAP8[i139 + 11 >> 0] = 0;
      L867 : do if ((i97 | 0) != (i92 | 0)) {
       __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv(i137, i67 + (i97 * 24 | 0) | 0);
       i4 = HEAP8[i137 >> 0] | 0;
       i5 = (i4 & 1) == 0;
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj(i139, i5 ? i137 + 1 | 0 : HEAP32[i137 + 8 >> 2] | 0, i5 ? (i4 & 255) >>> 1 : HEAP32[i137 + 4 >> 2] | 0) | 0;
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i137);
       i4 = i136 + 8 | 0;
       i5 = i136 + 1 | 0;
       i6 = i136 + 4 | 0;
       i1 = i97;
       while (1) {
        i1 = i1 + 1 | 0;
        if ((i1 | 0) == (i92 | 0)) break L867;
        __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv(i133, (HEAP32[i135 >> 2] | 0) + (i1 * 24 | 0) | 0);
        i2 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc(i133, 0, 34253) | 0;
        HEAP32[i136 >> 2] = HEAP32[i2 >> 2];
        HEAP32[i136 + 4 >> 2] = HEAP32[i2 + 4 >> 2];
        HEAP32[i136 + 8 >> 2] = HEAP32[i2 + 8 >> 2];
        i3 = 0;
        while (1) {
         if ((i3 | 0) == 3) break;
         HEAP32[i2 + (i3 << 2) >> 2] = 0;
         i3 = i3 + 1 | 0;
        }
        i137 = HEAP8[i136 >> 0] | 0;
        i131 = (i137 & 1) == 0;
        __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj(i139, i131 ? i5 : HEAP32[i4 >> 2] | 0, i131 ? (i137 & 255) >>> 1 : HEAP32[i6 >> 2] | 0) | 0;
        __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i136);
        __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i133);
       }
      } while (0);
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc(i139, 33621) | 0;
      i3 = i92;
      while (1) {
       if ((i3 | 0) == (i97 | 0)) break;
       i2 = HEAP32[i104 >> 2] | 0;
       i1 = i2 + -24 | 0;
       while (1) {
        if ((i2 | 0) == (i1 | 0)) break;
        i137 = i2 + -24 | 0;
        HEAP32[i104 >> 2] = i137;
        __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i137);
        i2 = HEAP32[i104 >> 2] | 0;
       }
       i3 = i3 + -1 | 0;
      }
      HEAP32[i134 >> 2] = HEAP32[i139 >> 2];
      HEAP32[i134 + 4 >> 2] = HEAP32[i139 + 4 >> 2];
      HEAP32[i134 + 8 >> 2] = HEAP32[i139 + 8 >> 2];
      i1 = 0;
      while (1) {
       if ((i1 | 0) == 3) break;
       HEAP32[i139 + (i1 << 2) >> 2] = 0;
       i1 = i1 + 1 | 0;
      }
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE(i132, i134);
      i1 = HEAP32[i104 >> 2] | 0;
      i137 = HEAP32[i135 + 8 >> 2] | 0;
      i4 = i137;
      if (i1 >>> 0 < i137 >>> 0) {
       __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i1, i132);
       HEAP32[i104 >> 2] = (HEAP32[i104 >> 2] | 0) + 24;
      } else {
       i2 = HEAP32[i135 >> 2] | 0;
       i137 = i1 - i2 | 0;
       i5 = (i137 | 0) / 24 | 0;
       i3 = i5 + 1 | 0;
       if ((i137 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i135);
       i1 = (i4 - i2 | 0) / 24 | 0;
       if (i1 >>> 0 < 1073741823) {
        i1 = i1 << 1;
        i1 = i1 >>> 0 < i3 >>> 0 ? i3 : i1;
       } else i1 = 2147483647;
       __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_(i138, i1, i5, i135 + 12 | 0);
       i137 = i138 + 8 | 0;
       i136 = HEAP32[i137 >> 2] | 0;
       __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i136, i132);
       HEAP32[i137 >> 2] = i136 + 24;
       __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i135, i138);
       __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev(i138);
      }
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i132);
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i134);
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i139);
      i1 = i107;
     }
     break L1;
    }
   default:
    break L1;
   }
  case 116:
   switch (HEAP8[i61 + 1 >> 0] | 0) {
   case 105:
   case 101:
    {
     L903 : do if ((i59 | 0) > 2 ? (HEAP8[i1 >> 0] | 0) == 116 : 0) {
      i2 = HEAP8[i1 + 1 >> 0] | 0;
      switch (i2 << 24 >> 24) {
      case 105:
      case 101:
       break;
      default:
       break L903;
      }
      i3 = i1 + 2 | 0;
      if (i2 << 24 >> 24 == 101) i4 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_(i3, i126, i135) | 0; else i4 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_(i3, i126, i135) | 0;
      if ((i4 | 0) != (i3 | 0) ? (i68 = HEAP32[i135 + 4 >> 2] | 0, (HEAP32[i135 >> 2] | 0) != (i68 | 0)) : 0) {
       i3 = i68 + -24 | 0;
       __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv(i136, i3);
       i1 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc(i136, 0, 34830) | 0;
       HEAP32[i137 >> 2] = HEAP32[i1 >> 2];
       HEAP32[i137 + 4 >> 2] = HEAP32[i1 + 4 >> 2];
       HEAP32[i137 + 8 >> 2] = HEAP32[i1 + 8 >> 2];
       i2 = 0;
       while (1) {
        if ((i2 | 0) == 3) break;
        HEAP32[i1 + (i2 << 2) >> 2] = 0;
        i2 = i2 + 1 | 0;
       }
       i1 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc(i137, 33621) | 0;
       HEAP32[i139 >> 2] = HEAP32[i1 >> 2];
       HEAP32[i139 + 4 >> 2] = HEAP32[i1 + 4 >> 2];
       HEAP32[i139 + 8 >> 2] = HEAP32[i1 + 8 >> 2];
       i2 = 0;
       while (1) {
        if ((i2 | 0) == 3) break;
        HEAP32[i1 + (i2 << 2) >> 2] = 0;
        i2 = i2 + 1 | 0;
       }
       __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE(i138, i139);
       __ZN10__cxxabiv112_GLOBAL__N_111string_pairaSEOS1_(i3, i138);
       __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i138);
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i139);
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i137);
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i136);
       i1 = i4;
      }
     } while (0);
     break L1;
    }
   case 114:
    {
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj6EEERAT__Kc(i90, 34838);
     i2 = i135 + 4 | 0;
     i3 = HEAP32[i2 >> 2] | 0;
     i139 = HEAP32[i135 + 8 >> 2] | 0;
     i4 = i139;
     if (i3 >>> 0 < i139 >>> 0) {
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i3, i90);
      HEAP32[i2 >> 2] = (HEAP32[i2 >> 2] | 0) + 24;
     } else {
      i2 = HEAP32[i135 >> 2] | 0;
      i139 = i3 - i2 | 0;
      i5 = (i139 | 0) / 24 | 0;
      i3 = i5 + 1 | 0;
      if ((i139 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i135);
      i2 = (i4 - i2 | 0) / 24 | 0;
      if (i2 >>> 0 < 1073741823) {
       i2 = i2 << 1;
       i2 = i2 >>> 0 < i3 >>> 0 ? i3 : i2;
      } else i2 = 2147483647;
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_(i138, i2, i5, i135 + 12 | 0);
      i139 = i138 + 8 | 0;
      i137 = HEAP32[i139 >> 2] | 0;
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i137, i90);
      HEAP32[i139 >> 2] = i137 + 24;
      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i135, i138);
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev(i138);
     }
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i90);
     i1 = i1 + 2 | 0;
     break L1;
    }
   case 119:
    {
     if (((((i59 | 0) > 2 ? (HEAP8[i1 >> 0] | 0) == 116 : 0) ? (HEAP8[i1 + 1 >> 0] | 0) == 119 : 0) ? (i136 = i1 + 2 | 0, i69 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_(i136, i126, i135) | 0, (i69 | 0) != (i136 | 0)) : 0) ? (i17 = HEAP32[i135 + 4 >> 2] | 0, (HEAP32[i135 >> 2] | 0) != (i17 | 0)) : 0) {
      i1 = i17 + -24 | 0;
      __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv(i137, i1);
      i2 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc(i137, 0, 34844) | 0;
      HEAP32[i139 >> 2] = HEAP32[i2 >> 2];
      HEAP32[i139 + 4 >> 2] = HEAP32[i2 + 4 >> 2];
      HEAP32[i139 + 8 >> 2] = HEAP32[i2 + 8 >> 2];
      i3 = 0;
      while (1) {
       if ((i3 | 0) == 3) break;
       HEAP32[i2 + (i3 << 2) >> 2] = 0;
       i3 = i3 + 1 | 0;
      }
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE(i138, i139);
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairaSEOS1_(i1, i138);
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i138);
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i139);
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i137);
      i1 = i69;
     }
     break L1;
    }
   default:
    break L1;
   }
  case 57:
  case 56:
  case 55:
  case 54:
  case 53:
  case 52:
  case 51:
  case 50:
  case 49:
   {
    i1 = __ZN10__cxxabiv112_GLOBAL__N_121parse_unresolved_nameINS0_2DbEEEPKcS4_S4_RT_(i1, i126, i135) | 0;
    break L1;
   }
  default:
   break L1;
  } while (0);
 } while (0);
 STACKTOP = i140;
 return i1 | 0;
}

function __ZN10__cxxabiv112_GLOBAL__N_119parse_operator_nameINS0_2DbEEEPKcS4_S4_RT_(i53, i1, i52) {
 i53 = i53 | 0;
 i1 = i1 | 0;
 i52 = i52 | 0;
 var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, i18 = 0, i19 = 0, i20 = 0, i21 = 0, i22 = 0, i23 = 0, i24 = 0, i25 = 0, i26 = 0, i27 = 0, i28 = 0, i29 = 0, i30 = 0, i31 = 0, i32 = 0, i33 = 0, i34 = 0, i35 = 0, i36 = 0, i37 = 0, i38 = 0, i39 = 0, i40 = 0, i41 = 0, i42 = 0, i43 = 0, i44 = 0, i45 = 0, i46 = 0, i47 = 0, i48 = 0, i49 = 0, i50 = 0, i51 = 0, i54 = 0;
 i54 = STACKTOP;
 STACKTOP = STACKTOP + 1136 | 0;
 i51 = i54 + 1104 | 0;
 i5 = i54 + 1080 | 0;
 i6 = i54 + 1056 | 0;
 i17 = i54 + 1032 | 0;
 i28 = i54 + 1008 | 0;
 i39 = i54 + 984 | 0;
 i46 = i54 + 960 | 0;
 i47 = i54 + 936 | 0;
 i48 = i54 + 912 | 0;
 i49 = i54 + 888 | 0;
 i50 = i54 + 864 | 0;
 i7 = i54 + 840 | 0;
 i8 = i54 + 816 | 0;
 i9 = i54 + 792 | 0;
 i10 = i54 + 768 | 0;
 i11 = i54 + 744 | 0;
 i12 = i54 + 720 | 0;
 i13 = i54 + 696 | 0;
 i14 = i54 + 672 | 0;
 i15 = i54 + 648 | 0;
 i16 = i54 + 624 | 0;
 i18 = i54 + 600 | 0;
 i19 = i54 + 576 | 0;
 i20 = i54 + 552 | 0;
 i21 = i54 + 528 | 0;
 i22 = i54 + 504 | 0;
 i23 = i54 + 480 | 0;
 i24 = i54 + 456 | 0;
 i25 = i54 + 432 | 0;
 i26 = i54 + 408 | 0;
 i27 = i54 + 384 | 0;
 i29 = i54 + 360 | 0;
 i30 = i54 + 336 | 0;
 i31 = i54 + 312 | 0;
 i32 = i54 + 288 | 0;
 i33 = i54 + 264 | 0;
 i34 = i54 + 240 | 0;
 i35 = i54 + 216 | 0;
 i36 = i54 + 192 | 0;
 i37 = i54 + 168 | 0;
 i38 = i54 + 144 | 0;
 i40 = i54 + 120 | 0;
 i41 = i54 + 96 | 0;
 i42 = i54 + 72 | 0;
 i43 = i54 + 48 | 0;
 i44 = i54 + 24 | 0;
 i45 = i54;
 L1 : do if ((i1 - i53 | 0) > 1) do switch (HEAP8[i53 >> 0] | 0) {
 case 97:
  switch (HEAP8[i53 + 1 >> 0] | 0) {
  case 97:
   {
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj11EEERAT__Kc(i5, 33750);
    i1 = i52 + 4 | 0;
    i2 = HEAP32[i1 >> 2] | 0;
    i50 = HEAP32[i52 + 8 >> 2] | 0;
    i3 = i50;
    if (i2 >>> 0 < i50 >>> 0) {
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i2, i5);
     HEAP32[i1 >> 2] = (HEAP32[i1 >> 2] | 0) + 24;
    } else {
     i1 = HEAP32[i52 >> 2] | 0;
     i50 = i2 - i1 | 0;
     i4 = (i50 | 0) / 24 | 0;
     i2 = i4 + 1 | 0;
     if ((i50 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i52);
     i1 = (i3 - i1 | 0) / 24 | 0;
     if (i1 >>> 0 < 1073741823) {
      i1 = i1 << 1;
      i1 = i1 >>> 0 < i2 >>> 0 ? i2 : i1;
     } else i1 = 2147483647;
     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_(i51, i1, i4, i52 + 12 | 0);
     i50 = i51 + 8 | 0;
     i49 = HEAP32[i50 >> 2] | 0;
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i49, i5);
     HEAP32[i50 >> 2] = i49 + 24;
     __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i52, i51);
     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev(i51);
    }
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i5);
    i1 = i53 + 2 | 0;
    break L1;
   }
  case 110:
  case 100:
   {
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj10EEERAT__Kc(i6, 33761);
    i1 = i52 + 4 | 0;
    i2 = HEAP32[i1 >> 2] | 0;
    i50 = HEAP32[i52 + 8 >> 2] | 0;
    i3 = i50;
    if (i2 >>> 0 < i50 >>> 0) {
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i2, i6);
     HEAP32[i1 >> 2] = (HEAP32[i1 >> 2] | 0) + 24;
    } else {
     i1 = HEAP32[i52 >> 2] | 0;
     i50 = i2 - i1 | 0;
     i4 = (i50 | 0) / 24 | 0;
     i2 = i4 + 1 | 0;
     if ((i50 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i52);
     i1 = (i3 - i1 | 0) / 24 | 0;
     if (i1 >>> 0 < 1073741823) {
      i1 = i1 << 1;
      i1 = i1 >>> 0 < i2 >>> 0 ? i2 : i1;
     } else i1 = 2147483647;
     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_(i51, i1, i4, i52 + 12 | 0);
     i50 = i51 + 8 | 0;
     i49 = HEAP32[i50 >> 2] | 0;
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i49, i6);
     HEAP32[i50 >> 2] = i49 + 24;
     __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i52, i51);
     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev(i51);
    }
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i6);
    i1 = i53 + 2 | 0;
    break L1;
   }
  case 78:
   {
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj11EEERAT__Kc(i17, 33771);
    i1 = i52 + 4 | 0;
    i2 = HEAP32[i1 >> 2] | 0;
    i50 = HEAP32[i52 + 8 >> 2] | 0;
    i3 = i50;
    if (i2 >>> 0 < i50 >>> 0) {
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i2, i17);
     HEAP32[i1 >> 2] = (HEAP32[i1 >> 2] | 0) + 24;
    } else {
     i1 = HEAP32[i52 >> 2] | 0;
     i50 = i2 - i1 | 0;
     i4 = (i50 | 0) / 24 | 0;
     i2 = i4 + 1 | 0;
     if ((i50 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i52);
     i1 = (i3 - i1 | 0) / 24 | 0;
     if (i1 >>> 0 < 1073741823) {
      i1 = i1 << 1;
      i1 = i1 >>> 0 < i2 >>> 0 ? i2 : i1;
     } else i1 = 2147483647;
     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_(i51, i1, i4, i52 + 12 | 0);
     i50 = i51 + 8 | 0;
     i49 = HEAP32[i50 >> 2] | 0;
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i49, i17);
     HEAP32[i50 >> 2] = i49 + 24;
     __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i52, i51);
     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev(i51);
    }
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i17);
    i1 = i53 + 2 | 0;
    break L1;
   }
  case 83:
   {
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj10EEERAT__Kc(i28, 33782);
    i1 = i52 + 4 | 0;
    i2 = HEAP32[i1 >> 2] | 0;
    i50 = HEAP32[i52 + 8 >> 2] | 0;
    i3 = i50;
    if (i2 >>> 0 < i50 >>> 0) {
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i2, i28);
     HEAP32[i1 >> 2] = (HEAP32[i1 >> 2] | 0) + 24;
    } else {
     i1 = HEAP32[i52 >> 2] | 0;
     i50 = i2 - i1 | 0;
     i4 = (i50 | 0) / 24 | 0;
     i2 = i4 + 1 | 0;
     if ((i50 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i52);
     i1 = (i3 - i1 | 0) / 24 | 0;
     if (i1 >>> 0 < 1073741823) {
      i1 = i1 << 1;
      i1 = i1 >>> 0 < i2 >>> 0 ? i2 : i1;
     } else i1 = 2147483647;
     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_(i51, i1, i4, i52 + 12 | 0);
     i50 = i51 + 8 | 0;
     i49 = HEAP32[i50 >> 2] | 0;
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i49, i28);
     HEAP32[i50 >> 2] = i49 + 24;
     __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i52, i51);
     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev(i51);
    }
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i28);
    i1 = i53 + 2 | 0;
    break L1;
   }
  default:
   {
    i1 = i53;
    break L1;
   }
  }
 case 99:
  switch (HEAP8[i53 + 1 >> 0] | 0) {
  case 108:
   {
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj11EEERAT__Kc(i39, 33792);
    i1 = i52 + 4 | 0;
    i2 = HEAP32[i1 >> 2] | 0;
    i50 = HEAP32[i52 + 8 >> 2] | 0;
    i3 = i50;
    if (i2 >>> 0 < i50 >>> 0) {
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i2, i39);
     HEAP32[i1 >> 2] = (HEAP32[i1 >> 2] | 0) + 24;
    } else {
     i1 = HEAP32[i52 >> 2] | 0;
     i50 = i2 - i1 | 0;
     i4 = (i50 | 0) / 24 | 0;
     i2 = i4 + 1 | 0;
     if ((i50 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i52);
     i1 = (i3 - i1 | 0) / 24 | 0;
     if (i1 >>> 0 < 1073741823) {
      i1 = i1 << 1;
      i1 = i1 >>> 0 < i2 >>> 0 ? i2 : i1;
     } else i1 = 2147483647;
     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_(i51, i1, i4, i52 + 12 | 0);
     i50 = i51 + 8 | 0;
     i49 = HEAP32[i50 >> 2] | 0;
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i49, i39);
     HEAP32[i50 >> 2] = i49 + 24;
     __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i52, i51);
     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev(i51);
    }
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i39);
    i1 = i53 + 2 | 0;
    break L1;
   }
  case 109:
   {
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj10EEERAT__Kc(i46, 33803);
    i1 = i52 + 4 | 0;
    i2 = HEAP32[i1 >> 2] | 0;
    i50 = HEAP32[i52 + 8 >> 2] | 0;
    i3 = i50;
    if (i2 >>> 0 < i50 >>> 0) {
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i2, i46);
     HEAP32[i1 >> 2] = (HEAP32[i1 >> 2] | 0) + 24;
    } else {
     i1 = HEAP32[i52 >> 2] | 0;
     i50 = i2 - i1 | 0;
     i4 = (i50 | 0) / 24 | 0;
     i2 = i4 + 1 | 0;
     if ((i50 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i52);
     i1 = (i3 - i1 | 0) / 24 | 0;
     if (i1 >>> 0 < 1073741823) {
      i1 = i1 << 1;
      i1 = i1 >>> 0 < i2 >>> 0 ? i2 : i1;
     } else i1 = 2147483647;
     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_(i51, i1, i4, i52 + 12 | 0);
     i50 = i51 + 8 | 0;
     i49 = HEAP32[i50 >> 2] | 0;
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i49, i46);
     HEAP32[i50 >> 2] = i49 + 24;
     __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i52, i51);
     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev(i51);
    }
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i46);
    i1 = i53 + 2 | 0;
    break L1;
   }
  case 111:
   {
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj10EEERAT__Kc(i47, 33813);
    i1 = i52 + 4 | 0;
    i2 = HEAP32[i1 >> 2] | 0;
    i50 = HEAP32[i52 + 8 >> 2] | 0;
    i3 = i50;
    if (i2 >>> 0 < i50 >>> 0) {
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i2, i47);
     HEAP32[i1 >> 2] = (HEAP32[i1 >> 2] | 0) + 24;
    } else {
     i1 = HEAP32[i52 >> 2] | 0;
     i50 = i2 - i1 | 0;
     i4 = (i50 | 0) / 24 | 0;
     i2 = i4 + 1 | 0;
     if ((i50 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i52);
     i1 = (i3 - i1 | 0) / 24 | 0;
     if (i1 >>> 0 < 1073741823) {
      i1 = i1 << 1;
      i1 = i1 >>> 0 < i2 >>> 0 ? i2 : i1;
     } else i1 = 2147483647;
     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_(i51, i1, i4, i52 + 12 | 0);
     i50 = i51 + 8 | 0;
     i49 = HEAP32[i50 >> 2] | 0;
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i49, i47);
     HEAP32[i50 >> 2] = i49 + 24;
     __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i52, i51);
     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev(i51);
    }
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i47);
    i1 = i53 + 2 | 0;
    break L1;
   }
  case 118:
   {
    i50 = i52 + 63 | 0;
    i49 = HEAP8[i50 >> 0] | 0;
    HEAP8[i50 >> 0] = 0;
    i51 = i53 + 2 | 0;
    i1 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_(i51, i1, i52) | 0;
    HEAP8[i50 >> 0] = i49;
    if ((i1 | 0) == (i51 | 0)) {
     i1 = i53;
     break L1;
    }
    i2 = HEAP32[i52 + 4 >> 2] | 0;
    if ((HEAP32[i52 >> 2] | 0) == (i2 | 0)) {
     i1 = i53;
     break L1;
    }
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc(i2 + -24 | 0, 0, 33823) | 0;
    HEAP8[i52 + 60 >> 0] = 1;
    break L1;
   }
  default:
   {
    i1 = i53;
    break L1;
   }
  }
 case 100:
  switch (HEAP8[i53 + 1 >> 0] | 0) {
  case 97:
   {
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj18EEERAT__Kc(i48, 33833);
    i1 = i52 + 4 | 0;
    i2 = HEAP32[i1 >> 2] | 0;
    i50 = HEAP32[i52 + 8 >> 2] | 0;
    i3 = i50;
    if (i2 >>> 0 < i50 >>> 0) {
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i2, i48);
     HEAP32[i1 >> 2] = (HEAP32[i1 >> 2] | 0) + 24;
    } else {
     i1 = HEAP32[i52 >> 2] | 0;
     i50 = i2 - i1 | 0;
     i4 = (i50 | 0) / 24 | 0;
     i2 = i4 + 1 | 0;
     if ((i50 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i52);
     i1 = (i3 - i1 | 0) / 24 | 0;
     if (i1 >>> 0 < 1073741823) {
      i1 = i1 << 1;
      i1 = i1 >>> 0 < i2 >>> 0 ? i2 : i1;
     } else i1 = 2147483647;
     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_(i51, i1, i4, i52 + 12 | 0);
     i50 = i51 + 8 | 0;
     i49 = HEAP32[i50 >> 2] | 0;
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i49, i48);
     HEAP32[i50 >> 2] = i49 + 24;
     __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i52, i51);
     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev(i51);
    }
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i48);
    i1 = i53 + 2 | 0;
    break L1;
   }
  case 101:
   {
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj10EEERAT__Kc(i49, 33851);
    i1 = i52 + 4 | 0;
    i2 = HEAP32[i1 >> 2] | 0;
    i50 = HEAP32[i52 + 8 >> 2] | 0;
    i3 = i50;
    if (i2 >>> 0 < i50 >>> 0) {
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i2, i49);
     HEAP32[i1 >> 2] = (HEAP32[i1 >> 2] | 0) + 24;
    } else {
     i1 = HEAP32[i52 >> 2] | 0;
     i50 = i2 - i1 | 0;
     i4 = (i50 | 0) / 24 | 0;
     i2 = i4 + 1 | 0;
     if ((i50 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i52);
     i1 = (i3 - i1 | 0) / 24 | 0;
     if (i1 >>> 0 < 1073741823) {
      i1 = i1 << 1;
      i1 = i1 >>> 0 < i2 >>> 0 ? i2 : i1;
     } else i1 = 2147483647;
     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_(i51, i1, i4, i52 + 12 | 0);
     i50 = i51 + 8 | 0;
     i48 = HEAP32[i50 >> 2] | 0;
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i48, i49);
     HEAP32[i50 >> 2] = i48 + 24;
     __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i52, i51);
     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev(i51);
    }
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i49);
    i1 = i53 + 2 | 0;
    break L1;
   }
  case 108:
   {
    i1 = _malloc(16) | 0;
    HEAP32[i50 + 8 >> 2] = i1;
    HEAP32[i50 >> 2] = 17;
    HEAP32[i50 + 4 >> 2] = 15;
    i2 = i1;
    i3 = 33861;
    i4 = i2 + 15 | 0;
    do {
     HEAP8[i2 >> 0] = HEAP8[i3 >> 0] | 0;
     i2 = i2 + 1 | 0;
     i3 = i3 + 1 | 0;
    } while ((i2 | 0) < (i4 | 0));
    HEAP8[i1 + 15 >> 0] = 0;
    i1 = i50 + 12 | 0;
    i2 = 0;
    while (1) {
     if ((i2 | 0) == 3) break;
     HEAP32[i1 + (i2 << 2) >> 2] = 0;
     i2 = i2 + 1 | 0;
    }
    i1 = i52 + 4 | 0;
    i2 = HEAP32[i1 >> 2] | 0;
    i49 = HEAP32[i52 + 8 >> 2] | 0;
    i3 = i49;
    if (i2 >>> 0 < i49 >>> 0) {
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i2, i50);
     HEAP32[i1 >> 2] = (HEAP32[i1 >> 2] | 0) + 24;
    } else {
     i1 = HEAP32[i52 >> 2] | 0;
     i49 = i2 - i1 | 0;
     i4 = (i49 | 0) / 24 | 0;
     i2 = i4 + 1 | 0;
     if ((i49 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i52);
     i1 = (i3 - i1 | 0) / 24 | 0;
     if (i1 >>> 0 < 1073741823) {
      i1 = i1 << 1;
      i1 = i1 >>> 0 < i2 >>> 0 ? i2 : i1;
     } else i1 = 2147483647;
     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_(i51, i1, i4, i52 + 12 | 0);
     i49 = i51 + 8 | 0;
     i48 = HEAP32[i49 >> 2] | 0;
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i48, i50);
     HEAP32[i49 >> 2] = i48 + 24;
     __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i52, i51);
     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev(i51);
    }
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i50);
    i1 = i53 + 2 | 0;
    break L1;
   }
  case 118:
   {
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj10EEERAT__Kc(i7, 33877);
    i1 = i52 + 4 | 0;
    i2 = HEAP32[i1 >> 2] | 0;
    i50 = HEAP32[i52 + 8 >> 2] | 0;
    i3 = i50;
    if (i2 >>> 0 < i50 >>> 0) {
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i2, i7);
     HEAP32[i1 >> 2] = (HEAP32[i1 >> 2] | 0) + 24;
    } else {
     i1 = HEAP32[i52 >> 2] | 0;
     i50 = i2 - i1 | 0;
     i4 = (i50 | 0) / 24 | 0;
     i2 = i4 + 1 | 0;
     if ((i50 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i52);
     i1 = (i3 - i1 | 0) / 24 | 0;
     if (i1 >>> 0 < 1073741823) {
      i1 = i1 << 1;
      i1 = i1 >>> 0 < i2 >>> 0 ? i2 : i1;
     } else i1 = 2147483647;
     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_(i51, i1, i4, i52 + 12 | 0);
     i50 = i51 + 8 | 0;
     i49 = HEAP32[i50 >> 2] | 0;
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i49, i7);
     HEAP32[i50 >> 2] = i49 + 24;
     __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i52, i51);
     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev(i51);
    }
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i7);
    i1 = i53 + 2 | 0;
    break L1;
   }
  case 86:
   {
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj11EEERAT__Kc(i8, 33887);
    i1 = i52 + 4 | 0;
    i2 = HEAP32[i1 >> 2] | 0;
    i50 = HEAP32[i52 + 8 >> 2] | 0;
    i3 = i50;
    if (i2 >>> 0 < i50 >>> 0) {
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i2, i8);
     HEAP32[i1 >> 2] = (HEAP32[i1 >> 2] | 0) + 24;
    } else {
     i1 = HEAP32[i52 >> 2] | 0;
     i50 = i2 - i1 | 0;
     i4 = (i50 | 0) / 24 | 0;
     i2 = i4 + 1 | 0;
     if ((i50 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i52);
     i1 = (i3 - i1 | 0) / 24 | 0;
     if (i1 >>> 0 < 1073741823) {
      i1 = i1 << 1;
      i1 = i1 >>> 0 < i2 >>> 0 ? i2 : i1;
     } else i1 = 2147483647;
     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_(i51, i1, i4, i52 + 12 | 0);
     i50 = i51 + 8 | 0;
     i49 = HEAP32[i50 >> 2] | 0;
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i49, i8);
     HEAP32[i50 >> 2] = i49 + 24;
     __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i52, i51);
     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev(i51);
    }
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i8);
    i1 = i53 + 2 | 0;
    break L1;
   }
  default:
   {
    i1 = i53;
    break L1;
   }
  }
 case 101:
  switch (HEAP8[i53 + 1 >> 0] | 0) {
  case 111:
   {
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj10EEERAT__Kc(i9, 33898);
    i1 = i52 + 4 | 0;
    i2 = HEAP32[i1 >> 2] | 0;
    i50 = HEAP32[i52 + 8 >> 2] | 0;
    i3 = i50;
    if (i2 >>> 0 < i50 >>> 0) {
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i2, i9);
     HEAP32[i1 >> 2] = (HEAP32[i1 >> 2] | 0) + 24;
    } else {
     i1 = HEAP32[i52 >> 2] | 0;
     i50 = i2 - i1 | 0;
     i4 = (i50 | 0) / 24 | 0;
     i2 = i4 + 1 | 0;
     if ((i50 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i52);
     i1 = (i3 - i1 | 0) / 24 | 0;
     if (i1 >>> 0 < 1073741823) {
      i1 = i1 << 1;
      i1 = i1 >>> 0 < i2 >>> 0 ? i2 : i1;
     } else i1 = 2147483647;
     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_(i51, i1, i4, i52 + 12 | 0);
     i50 = i51 + 8 | 0;
     i49 = HEAP32[i50 >> 2] | 0;
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i49, i9);
     HEAP32[i50 >> 2] = i49 + 24;
     __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i52, i51);
     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev(i51);
    }
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i9);
    i1 = i53 + 2 | 0;
    break L1;
   }
  case 79:
   {
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj11EEERAT__Kc(i10, 33908);
    i1 = i52 + 4 | 0;
    i2 = HEAP32[i1 >> 2] | 0;
    i50 = HEAP32[i52 + 8 >> 2] | 0;
    i3 = i50;
    if (i2 >>> 0 < i50 >>> 0) {
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i2, i10);
     HEAP32[i1 >> 2] = (HEAP32[i1 >> 2] | 0) + 24;
    } else {
     i1 = HEAP32[i52 >> 2] | 0;
     i50 = i2 - i1 | 0;
     i4 = (i50 | 0) / 24 | 0;
     i2 = i4 + 1 | 0;
     if ((i50 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i52);
     i1 = (i3 - i1 | 0) / 24 | 0;
     if (i1 >>> 0 < 1073741823) {
      i1 = i1 << 1;
      i1 = i1 >>> 0 < i2 >>> 0 ? i2 : i1;
     } else i1 = 2147483647;
     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_(i51, i1, i4, i52 + 12 | 0);
     i50 = i51 + 8 | 0;
     i49 = HEAP32[i50 >> 2] | 0;
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i49, i10);
     HEAP32[i50 >> 2] = i49 + 24;
     __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i52, i51);
     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev(i51);
    }
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i10);
    i1 = i53 + 2 | 0;
    break L1;
   }
  case 113:
   {
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj11EEERAT__Kc(i11, 33919);
    i1 = i52 + 4 | 0;
    i2 = HEAP32[i1 >> 2] | 0;
    i50 = HEAP32[i52 + 8 >> 2] | 0;
    i3 = i50;
    if (i2 >>> 0 < i50 >>> 0) {
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i2, i11);
     HEAP32[i1 >> 2] = (HEAP32[i1 >> 2] | 0) + 24;
    } else {
     i1 = HEAP32[i52 >> 2] | 0;
     i50 = i2 - i1 | 0;
     i4 = (i50 | 0) / 24 | 0;
     i2 = i4 + 1 | 0;
     if ((i50 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i52);
     i1 = (i3 - i1 | 0) / 24 | 0;
     if (i1 >>> 0 < 1073741823) {
      i1 = i1 << 1;
      i1 = i1 >>> 0 < i2 >>> 0 ? i2 : i1;
     } else i1 = 2147483647;
     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_(i51, i1, i4, i52 + 12 | 0);
     i50 = i51 + 8 | 0;
     i49 = HEAP32[i50 >> 2] | 0;
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i49, i11);
     HEAP32[i50 >> 2] = i49 + 24;
     __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i52, i51);
     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev(i51);
    }
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i11);
    i1 = i53 + 2 | 0;
    break L1;
   }
  default:
   {
    i1 = i53;
    break L1;
   }
  }
 case 103:
  switch (HEAP8[i53 + 1 >> 0] | 0) {
  case 101:
   {
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj11EEERAT__Kc(i12, 33930);
    i1 = i52 + 4 | 0;
    i2 = HEAP32[i1 >> 2] | 0;
    i50 = HEAP32[i52 + 8 >> 2] | 0;
    i3 = i50;
    if (i2 >>> 0 < i50 >>> 0) {
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i2, i12);
     HEAP32[i1 >> 2] = (HEAP32[i1 >> 2] | 0) + 24;
    } else {
     i1 = HEAP32[i52 >> 2] | 0;
     i50 = i2 - i1 | 0;
     i4 = (i50 | 0) / 24 | 0;
     i2 = i4 + 1 | 0;
     if ((i50 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i52);
     i1 = (i3 - i1 | 0) / 24 | 0;
     if (i1 >>> 0 < 1073741823) {
      i1 = i1 << 1;
      i1 = i1 >>> 0 < i2 >>> 0 ? i2 : i1;
     } else i1 = 2147483647;
     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_(i51, i1, i4, i52 + 12 | 0);
     i50 = i51 + 8 | 0;
     i49 = HEAP32[i50 >> 2] | 0;
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i49, i12);
     HEAP32[i50 >> 2] = i49 + 24;
     __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i52, i51);
     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev(i51);
    }
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i12);
    i1 = i53 + 2 | 0;
    break L1;
   }
  case 116:
   {
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj10EEERAT__Kc(i13, 33941);
    i1 = i52 + 4 | 0;
    i2 = HEAP32[i1 >> 2] | 0;
    i50 = HEAP32[i52 + 8 >> 2] | 0;
    i3 = i50;
    if (i2 >>> 0 < i50 >>> 0) {
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i2, i13);
     HEAP32[i1 >> 2] = (HEAP32[i1 >> 2] | 0) + 24;
    } else {
     i1 = HEAP32[i52 >> 2] | 0;
     i50 = i2 - i1 | 0;
     i4 = (i50 | 0) / 24 | 0;
     i2 = i4 + 1 | 0;
     if ((i50 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i52);
     i1 = (i3 - i1 | 0) / 24 | 0;
     if (i1 >>> 0 < 1073741823) {
      i1 = i1 << 1;
      i1 = i1 >>> 0 < i2 >>> 0 ? i2 : i1;
     } else i1 = 2147483647;
     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_(i51, i1, i4, i52 + 12 | 0);
     i50 = i51 + 8 | 0;
     i49 = HEAP32[i50 >> 2] | 0;
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i49, i13);
     HEAP32[i50 >> 2] = i49 + 24;
     __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i52, i51);
     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev(i51);
    }
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i13);
    i1 = i53 + 2 | 0;
    break L1;
   }
  default:
   {
    i1 = i53;
    break L1;
   }
  }
 case 105:
  {
   if ((HEAP8[i53 + 1 >> 0] | 0) != 120) {
    i1 = i53;
    break L1;
   }
   __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj11EEERAT__Kc(i14, 33951);
   i1 = i52 + 4 | 0;
   i2 = HEAP32[i1 >> 2] | 0;
   i50 = HEAP32[i52 + 8 >> 2] | 0;
   i3 = i50;
   if (i2 >>> 0 < i50 >>> 0) {
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i2, i14);
    HEAP32[i1 >> 2] = (HEAP32[i1 >> 2] | 0) + 24;
   } else {
    i1 = HEAP32[i52 >> 2] | 0;
    i50 = i2 - i1 | 0;
    i4 = (i50 | 0) / 24 | 0;
    i2 = i4 + 1 | 0;
    if ((i50 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i52);
    i1 = (i3 - i1 | 0) / 24 | 0;
    if (i1 >>> 0 < 1073741823) {
     i1 = i1 << 1;
     i1 = i1 >>> 0 < i2 >>> 0 ? i2 : i1;
    } else i1 = 2147483647;
    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_(i51, i1, i4, i52 + 12 | 0);
    i50 = i51 + 8 | 0;
    i49 = HEAP32[i50 >> 2] | 0;
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i49, i14);
    HEAP32[i50 >> 2] = i49 + 24;
    __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i52, i51);
    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev(i51);
   }
   __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i14);
   i1 = i53 + 2 | 0;
   break L1;
  }
 case 108:
  switch (HEAP8[i53 + 1 >> 0] | 0) {
  case 101:
   {
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj11EEERAT__Kc(i15, 33962);
    i1 = i52 + 4 | 0;
    i2 = HEAP32[i1 >> 2] | 0;
    i50 = HEAP32[i52 + 8 >> 2] | 0;
    i3 = i50;
    if (i2 >>> 0 < i50 >>> 0) {
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i2, i15);
     HEAP32[i1 >> 2] = (HEAP32[i1 >> 2] | 0) + 24;
    } else {
     i1 = HEAP32[i52 >> 2] | 0;
     i50 = i2 - i1 | 0;
     i4 = (i50 | 0) / 24 | 0;
     i2 = i4 + 1 | 0;
     if ((i50 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i52);
     i1 = (i3 - i1 | 0) / 24 | 0;
     if (i1 >>> 0 < 1073741823) {
      i1 = i1 << 1;
      i1 = i1 >>> 0 < i2 >>> 0 ? i2 : i1;
     } else i1 = 2147483647;
     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_(i51, i1, i4, i52 + 12 | 0);
     i50 = i51 + 8 | 0;
     i49 = HEAP32[i50 >> 2] | 0;
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i49, i15);
     HEAP32[i50 >> 2] = i49 + 24;
     __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i52, i51);
     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev(i51);
    }
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i15);
    i1 = i53 + 2 | 0;
    break L1;
   }
  case 105:
   {
    i51 = i53 + 2 | 0;
    i1 = __ZN10__cxxabiv112_GLOBAL__N_117parse_source_nameINS0_2DbEEEPKcS4_S4_RT_(i51, i1, i52) | 0;
    if ((i1 | 0) == (i51 | 0)) {
     i1 = i53;
     break L1;
    }
    i2 = HEAP32[i52 + 4 >> 2] | 0;
    if ((HEAP32[i52 >> 2] | 0) == (i2 | 0)) {
     i1 = i53;
     break L1;
    }
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc(i2 + -24 | 0, 0, 33973) | 0;
    break L1;
   }
  case 115:
   {
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj11EEERAT__Kc(i16, 33985);
    i1 = i52 + 4 | 0;
    i2 = HEAP32[i1 >> 2] | 0;
    i50 = HEAP32[i52 + 8 >> 2] | 0;
    i3 = i50;
    if (i2 >>> 0 < i50 >>> 0) {
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i2, i16);
     HEAP32[i1 >> 2] = (HEAP32[i1 >> 2] | 0) + 24;
    } else {
     i1 = HEAP32[i52 >> 2] | 0;
     i50 = i2 - i1 | 0;
     i4 = (i50 | 0) / 24 | 0;
     i2 = i4 + 1 | 0;
     if ((i50 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i52);
     i1 = (i3 - i1 | 0) / 24 | 0;
     if (i1 >>> 0 < 1073741823) {
      i1 = i1 << 1;
      i1 = i1 >>> 0 < i2 >>> 0 ? i2 : i1;
     } else i1 = 2147483647;
     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_(i51, i1, i4, i52 + 12 | 0);
     i50 = i51 + 8 | 0;
     i49 = HEAP32[i50 >> 2] | 0;
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i49, i16);
     HEAP32[i50 >> 2] = i49 + 24;
     __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i52, i51);
     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev(i51);
    }
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i16);
    i1 = i53 + 2 | 0;
    break L1;
   }
  case 83:
   {
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj12EEERAT__Kc(i18, 33996);
    i1 = i52 + 4 | 0;
    i2 = HEAP32[i1 >> 2] | 0;
    i50 = HEAP32[i52 + 8 >> 2] | 0;
    i3 = i50;
    if (i2 >>> 0 < i50 >>> 0) {
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i2, i18);
     HEAP32[i1 >> 2] = (HEAP32[i1 >> 2] | 0) + 24;
    } else {
     i1 = HEAP32[i52 >> 2] | 0;
     i50 = i2 - i1 | 0;
     i4 = (i50 | 0) / 24 | 0;
     i2 = i4 + 1 | 0;
     if ((i50 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i52);
     i1 = (i3 - i1 | 0) / 24 | 0;
     if (i1 >>> 0 < 1073741823) {
      i1 = i1 << 1;
      i1 = i1 >>> 0 < i2 >>> 0 ? i2 : i1;
     } else i1 = 2147483647;
     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_(i51, i1, i4, i52 + 12 | 0);
     i50 = i51 + 8 | 0;
     i49 = HEAP32[i50 >> 2] | 0;
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i49, i18);
     HEAP32[i50 >> 2] = i49 + 24;
     __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i52, i51);
     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev(i51);
    }
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i18);
    i1 = i53 + 2 | 0;
    break L1;
   }
  case 116:
   {
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj10EEERAT__Kc(i19, 34008);
    i1 = i52 + 4 | 0;
    i2 = HEAP32[i1 >> 2] | 0;
    i50 = HEAP32[i52 + 8 >> 2] | 0;
    i3 = i50;
    if (i2 >>> 0 < i50 >>> 0) {
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i2, i19);
     HEAP32[i1 >> 2] = (HEAP32[i1 >> 2] | 0) + 24;
    } else {
     i1 = HEAP32[i52 >> 2] | 0;
     i50 = i2 - i1 | 0;
     i4 = (i50 | 0) / 24 | 0;
     i2 = i4 + 1 | 0;
     if ((i50 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i52);
     i1 = (i3 - i1 | 0) / 24 | 0;
     if (i1 >>> 0 < 1073741823) {
      i1 = i1 << 1;
      i1 = i1 >>> 0 < i2 >>> 0 ? i2 : i1;
     } else i1 = 2147483647;
     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_(i51, i1, i4, i52 + 12 | 0);
     i50 = i51 + 8 | 0;
     i49 = HEAP32[i50 >> 2] | 0;
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i49, i19);
     HEAP32[i50 >> 2] = i49 + 24;
     __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i52, i51);
     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev(i51);
    }
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i19);
    i1 = i53 + 2 | 0;
    break L1;
   }
  default:
   {
    i1 = i53;
    break L1;
   }
  }
 case 109:
  switch (HEAP8[i53 + 1 >> 0] | 0) {
  case 105:
   {
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj10EEERAT__Kc(i20, 34018);
    i1 = i52 + 4 | 0;
    i2 = HEAP32[i1 >> 2] | 0;
    i50 = HEAP32[i52 + 8 >> 2] | 0;
    i3 = i50;
    if (i2 >>> 0 < i50 >>> 0) {
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i2, i20);
     HEAP32[i1 >> 2] = (HEAP32[i1 >> 2] | 0) + 24;
    } else {
     i1 = HEAP32[i52 >> 2] | 0;
     i50 = i2 - i1 | 0;
     i4 = (i50 | 0) / 24 | 0;
     i2 = i4 + 1 | 0;
     if ((i50 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i52);
     i1 = (i3 - i1 | 0) / 24 | 0;
     if (i1 >>> 0 < 1073741823) {
      i1 = i1 << 1;
      i1 = i1 >>> 0 < i2 >>> 0 ? i2 : i1;
     } else i1 = 2147483647;
     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_(i51, i1, i4, i52 + 12 | 0);
     i50 = i51 + 8 | 0;
     i49 = HEAP32[i50 >> 2] | 0;
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i49, i20);
     HEAP32[i50 >> 2] = i49 + 24;
     __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i52, i51);
     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev(i51);
    }
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i20);
    i1 = i53 + 2 | 0;
    break L1;
   }
  case 73:
   {
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj11EEERAT__Kc(i21, 34028);
    i1 = i52 + 4 | 0;
    i2 = HEAP32[i1 >> 2] | 0;
    i50 = HEAP32[i52 + 8 >> 2] | 0;
    i3 = i50;
    if (i2 >>> 0 < i50 >>> 0) {
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i2, i21);
     HEAP32[i1 >> 2] = (HEAP32[i1 >> 2] | 0) + 24;
    } else {
     i1 = HEAP32[i52 >> 2] | 0;
     i50 = i2 - i1 | 0;
     i4 = (i50 | 0) / 24 | 0;
     i2 = i4 + 1 | 0;
     if ((i50 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i52);
     i1 = (i3 - i1 | 0) / 24 | 0;
     if (i1 >>> 0 < 1073741823) {
      i1 = i1 << 1;
      i1 = i1 >>> 0 < i2 >>> 0 ? i2 : i1;
     } else i1 = 2147483647;
     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_(i51, i1, i4, i52 + 12 | 0);
     i50 = i51 + 8 | 0;
     i49 = HEAP32[i50 >> 2] | 0;
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i49, i21);
     HEAP32[i50 >> 2] = i49 + 24;
     __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i52, i51);
     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev(i51);
    }
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i21);
    i1 = i53 + 2 | 0;
    break L1;
   }
  case 108:
   {
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj10EEERAT__Kc(i22, 33851);
    i1 = i52 + 4 | 0;
    i2 = HEAP32[i1 >> 2] | 0;
    i50 = HEAP32[i52 + 8 >> 2] | 0;
    i3 = i50;
    if (i2 >>> 0 < i50 >>> 0) {
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i2, i22);
     HEAP32[i1 >> 2] = (HEAP32[i1 >> 2] | 0) + 24;
    } else {
     i1 = HEAP32[i52 >> 2] | 0;
     i50 = i2 - i1 | 0;
     i4 = (i50 | 0) / 24 | 0;
     i2 = i4 + 1 | 0;
     if ((i50 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i52);
     i1 = (i3 - i1 | 0) / 24 | 0;
     if (i1 >>> 0 < 1073741823) {
      i1 = i1 << 1;
      i1 = i1 >>> 0 < i2 >>> 0 ? i2 : i1;
     } else i1 = 2147483647;
     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_(i51, i1, i4, i52 + 12 | 0);
     i50 = i51 + 8 | 0;
     i49 = HEAP32[i50 >> 2] | 0;
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i49, i22);
     HEAP32[i50 >> 2] = i49 + 24;
     __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i52, i51);
     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev(i51);
    }
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i22);
    i1 = i53 + 2 | 0;
    break L1;
   }
  case 76:
   {
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj11EEERAT__Kc(i23, 34039);
    i1 = i52 + 4 | 0;
    i2 = HEAP32[i1 >> 2] | 0;
    i50 = HEAP32[i52 + 8 >> 2] | 0;
    i3 = i50;
    if (i2 >>> 0 < i50 >>> 0) {
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i2, i23);
     HEAP32[i1 >> 2] = (HEAP32[i1 >> 2] | 0) + 24;
    } else {
     i1 = HEAP32[i52 >> 2] | 0;
     i50 = i2 - i1 | 0;
     i4 = (i50 | 0) / 24 | 0;
     i2 = i4 + 1 | 0;
     if ((i50 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i52);
     i1 = (i3 - i1 | 0) / 24 | 0;
     if (i1 >>> 0 < 1073741823) {
      i1 = i1 << 1;
      i1 = i1 >>> 0 < i2 >>> 0 ? i2 : i1;
     } else i1 = 2147483647;
     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_(i51, i1, i4, i52 + 12 | 0);
     i50 = i51 + 8 | 0;
     i49 = HEAP32[i50 >> 2] | 0;
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i49, i23);
     HEAP32[i50 >> 2] = i49 + 24;
     __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i52, i51);
     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev(i51);
    }
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i23);
    i1 = i53 + 2 | 0;
    break L1;
   }
  case 109:
   {
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj11EEERAT__Kc(i24, 34050);
    i1 = i52 + 4 | 0;
    i2 = HEAP32[i1 >> 2] | 0;
    i50 = HEAP32[i52 + 8 >> 2] | 0;
    i3 = i50;
    if (i2 >>> 0 < i50 >>> 0) {
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i2, i24);
     HEAP32[i1 >> 2] = (HEAP32[i1 >> 2] | 0) + 24;
    } else {
     i1 = HEAP32[i52 >> 2] | 0;
     i50 = i2 - i1 | 0;
     i4 = (i50 | 0) / 24 | 0;
     i2 = i4 + 1 | 0;
     if ((i50 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i52);
     i1 = (i3 - i1 | 0) / 24 | 0;
     if (i1 >>> 0 < 1073741823) {
      i1 = i1 << 1;
      i1 = i1 >>> 0 < i2 >>> 0 ? i2 : i1;
     } else i1 = 2147483647;
     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_(i51, i1, i4, i52 + 12 | 0);
     i50 = i51 + 8 | 0;
     i49 = HEAP32[i50 >> 2] | 0;
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i49, i24);
     HEAP32[i50 >> 2] = i49 + 24;
     __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i52, i51);
     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev(i51);
    }
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i24);
    i1 = i53 + 2 | 0;
    break L1;
   }
  default:
   {
    i1 = i53;
    break L1;
   }
  }
 case 110:
  switch (HEAP8[i53 + 1 >> 0] | 0) {
  case 97:
   {
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj15EEERAT__Kc(i25, 34061);
    i1 = i52 + 4 | 0;
    i2 = HEAP32[i1 >> 2] | 0;
    i50 = HEAP32[i52 + 8 >> 2] | 0;
    i3 = i50;
    if (i2 >>> 0 < i50 >>> 0) {
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i2, i25);
     HEAP32[i1 >> 2] = (HEAP32[i1 >> 2] | 0) + 24;
    } else {
     i1 = HEAP32[i52 >> 2] | 0;
     i50 = i2 - i1 | 0;
     i4 = (i50 | 0) / 24 | 0;
     i2 = i4 + 1 | 0;
     if ((i50 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i52);
     i1 = (i3 - i1 | 0) / 24 | 0;
     if (i1 >>> 0 < 1073741823) {
      i1 = i1 << 1;
      i1 = i1 >>> 0 < i2 >>> 0 ? i2 : i1;
     } else i1 = 2147483647;
     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_(i51, i1, i4, i52 + 12 | 0);
     i50 = i51 + 8 | 0;
     i49 = HEAP32[i50 >> 2] | 0;
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i49, i25);
     HEAP32[i50 >> 2] = i49 + 24;
     __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i52, i51);
     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev(i51);
    }
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i25);
    i1 = i53 + 2 | 0;
    break L1;
   }
  case 101:
   {
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj11EEERAT__Kc(i26, 34076);
    i1 = i52 + 4 | 0;
    i2 = HEAP32[i1 >> 2] | 0;
    i50 = HEAP32[i52 + 8 >> 2] | 0;
    i3 = i50;
    if (i2 >>> 0 < i50 >>> 0) {
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i2, i26);
     HEAP32[i1 >> 2] = (HEAP32[i1 >> 2] | 0) + 24;
    } else {
     i1 = HEAP32[i52 >> 2] | 0;
     i50 = i2 - i1 | 0;
     i4 = (i50 | 0) / 24 | 0;
     i2 = i4 + 1 | 0;
     if ((i50 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i52);
     i1 = (i3 - i1 | 0) / 24 | 0;
     if (i1 >>> 0 < 1073741823) {
      i1 = i1 << 1;
      i1 = i1 >>> 0 < i2 >>> 0 ? i2 : i1;
     } else i1 = 2147483647;
     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_(i51, i1, i4, i52 + 12 | 0);
     i50 = i51 + 8 | 0;
     i49 = HEAP32[i50 >> 2] | 0;
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i49, i26);
     HEAP32[i50 >> 2] = i49 + 24;
     __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i52, i51);
     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev(i51);
    }
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i26);
    i1 = i53 + 2 | 0;
    break L1;
   }
  case 103:
   {
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj10EEERAT__Kc(i27, 34018);
    i1 = i52 + 4 | 0;
    i2 = HEAP32[i1 >> 2] | 0;
    i50 = HEAP32[i52 + 8 >> 2] | 0;
    i3 = i50;
    if (i2 >>> 0 < i50 >>> 0) {
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i2, i27);
     HEAP32[i1 >> 2] = (HEAP32[i1 >> 2] | 0) + 24;
    } else {
     i1 = HEAP32[i52 >> 2] | 0;
     i50 = i2 - i1 | 0;
     i4 = (i50 | 0) / 24 | 0;
     i2 = i4 + 1 | 0;
     if ((i50 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i52);
     i1 = (i3 - i1 | 0) / 24 | 0;
     if (i1 >>> 0 < 1073741823) {
      i1 = i1 << 1;
      i1 = i1 >>> 0 < i2 >>> 0 ? i2 : i1;
     } else i1 = 2147483647;
     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_(i51, i1, i4, i52 + 12 | 0);
     i50 = i51 + 8 | 0;
     i49 = HEAP32[i50 >> 2] | 0;
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i49, i27);
     HEAP32[i50 >> 2] = i49 + 24;
     __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i52, i51);
     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev(i51);
    }
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i27);
    i1 = i53 + 2 | 0;
    break L1;
   }
  case 116:
   {
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj10EEERAT__Kc(i29, 34087);
    i1 = i52 + 4 | 0;
    i2 = HEAP32[i1 >> 2] | 0;
    i50 = HEAP32[i52 + 8 >> 2] | 0;
    i3 = i50;
    if (i2 >>> 0 < i50 >>> 0) {
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i2, i29);
     HEAP32[i1 >> 2] = (HEAP32[i1 >> 2] | 0) + 24;
    } else {
     i1 = HEAP32[i52 >> 2] | 0;
     i50 = i2 - i1 | 0;
     i4 = (i50 | 0) / 24 | 0;
     i2 = i4 + 1 | 0;
     if ((i50 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i52);
     i1 = (i3 - i1 | 0) / 24 | 0;
     if (i1 >>> 0 < 1073741823) {
      i1 = i1 << 1;
      i1 = i1 >>> 0 < i2 >>> 0 ? i2 : i1;
     } else i1 = 2147483647;
     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_(i51, i1, i4, i52 + 12 | 0);
     i50 = i51 + 8 | 0;
     i49 = HEAP32[i50 >> 2] | 0;
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i49, i29);
     HEAP32[i50 >> 2] = i49 + 24;
     __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i52, i51);
     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev(i51);
    }
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i29);
    i1 = i53 + 2 | 0;
    break L1;
   }
  case 119:
   {
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj13EEERAT__Kc(i30, 34097);
    i1 = i52 + 4 | 0;
    i2 = HEAP32[i1 >> 2] | 0;
    i50 = HEAP32[i52 + 8 >> 2] | 0;
    i3 = i50;
    if (i2 >>> 0 < i50 >>> 0) {
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i2, i30);
     HEAP32[i1 >> 2] = (HEAP32[i1 >> 2] | 0) + 24;
    } else {
     i1 = HEAP32[i52 >> 2] | 0;
     i50 = i2 - i1 | 0;
     i4 = (i50 | 0) / 24 | 0;
     i2 = i4 + 1 | 0;
     if ((i50 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i52);
     i1 = (i3 - i1 | 0) / 24 | 0;
     if (i1 >>> 0 < 1073741823) {
      i1 = i1 << 1;
      i1 = i1 >>> 0 < i2 >>> 0 ? i2 : i1;
     } else i1 = 2147483647;
     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_(i51, i1, i4, i52 + 12 | 0);
     i50 = i51 + 8 | 0;
     i49 = HEAP32[i50 >> 2] | 0;
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i49, i30);
     HEAP32[i50 >> 2] = i49 + 24;
     __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i52, i51);
     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev(i51);
    }
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i30);
    i1 = i53 + 2 | 0;
    break L1;
   }
  default:
   {
    i1 = i53;
    break L1;
   }
  }
 case 111:
  switch (HEAP8[i53 + 1 >> 0] | 0) {
  case 111:
   {
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj11EEERAT__Kc(i31, 34110);
    i1 = i52 + 4 | 0;
    i2 = HEAP32[i1 >> 2] | 0;
    i50 = HEAP32[i52 + 8 >> 2] | 0;
    i3 = i50;
    if (i2 >>> 0 < i50 >>> 0) {
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i2, i31);
     HEAP32[i1 >> 2] = (HEAP32[i1 >> 2] | 0) + 24;
    } else {
     i1 = HEAP32[i52 >> 2] | 0;
     i50 = i2 - i1 | 0;
     i4 = (i50 | 0) / 24 | 0;
     i2 = i4 + 1 | 0;
     if ((i50 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i52);
     i1 = (i3 - i1 | 0) / 24 | 0;
     if (i1 >>> 0 < 1073741823) {
      i1 = i1 << 1;
      i1 = i1 >>> 0 < i2 >>> 0 ? i2 : i1;
     } else i1 = 2147483647;
     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_(i51, i1, i4, i52 + 12 | 0);
     i50 = i51 + 8 | 0;
     i49 = HEAP32[i50 >> 2] | 0;
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i49, i31);
     HEAP32[i50 >> 2] = i49 + 24;
     __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i52, i51);
     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev(i51);
    }
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i31);
    i1 = i53 + 2 | 0;
    break L1;
   }
  case 114:
   {
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj10EEERAT__Kc(i32, 34121);
    i1 = i52 + 4 | 0;
    i2 = HEAP32[i1 >> 2] | 0;
    i50 = HEAP32[i52 + 8 >> 2] | 0;
    i3 = i50;
    if (i2 >>> 0 < i50 >>> 0) {
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i2, i32);
     HEAP32[i1 >> 2] = (HEAP32[i1 >> 2] | 0) + 24;
    } else {
     i1 = HEAP32[i52 >> 2] | 0;
     i50 = i2 - i1 | 0;
     i4 = (i50 | 0) / 24 | 0;
     i2 = i4 + 1 | 0;
     if ((i50 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i52);
     i1 = (i3 - i1 | 0) / 24 | 0;
     if (i1 >>> 0 < 1073741823) {
      i1 = i1 << 1;
      i1 = i1 >>> 0 < i2 >>> 0 ? i2 : i1;
     } else i1 = 2147483647;
     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_(i51, i1, i4, i52 + 12 | 0);
     i50 = i51 + 8 | 0;
     i49 = HEAP32[i50 >> 2] | 0;
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i49, i32);
     HEAP32[i50 >> 2] = i49 + 24;
     __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i52, i51);
     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev(i51);
    }
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i32);
    i1 = i53 + 2 | 0;
    break L1;
   }
  case 82:
   {
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj11EEERAT__Kc(i33, 34131);
    i1 = i52 + 4 | 0;
    i2 = HEAP32[i1 >> 2] | 0;
    i50 = HEAP32[i52 + 8 >> 2] | 0;
    i3 = i50;
    if (i2 >>> 0 < i50 >>> 0) {
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i2, i33);
     HEAP32[i1 >> 2] = (HEAP32[i1 >> 2] | 0) + 24;
    } else {
     i1 = HEAP32[i52 >> 2] | 0;
     i50 = i2 - i1 | 0;
     i4 = (i50 | 0) / 24 | 0;
     i2 = i4 + 1 | 0;
     if ((i50 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i52);
     i1 = (i3 - i1 | 0) / 24 | 0;
     if (i1 >>> 0 < 1073741823) {
      i1 = i1 << 1;
      i1 = i1 >>> 0 < i2 >>> 0 ? i2 : i1;
     } else i1 = 2147483647;
     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_(i51, i1, i4, i52 + 12 | 0);
     i50 = i51 + 8 | 0;
     i49 = HEAP32[i50 >> 2] | 0;
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i49, i33);
     HEAP32[i50 >> 2] = i49 + 24;
     __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i52, i51);
     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev(i51);
    }
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i33);
    i1 = i53 + 2 | 0;
    break L1;
   }
  default:
   {
    i1 = i53;
    break L1;
   }
  }
 case 112:
  switch (HEAP8[i53 + 1 >> 0] | 0) {
  case 109:
   {
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj12EEERAT__Kc(i34, 34142);
    i1 = i52 + 4 | 0;
    i2 = HEAP32[i1 >> 2] | 0;
    i50 = HEAP32[i52 + 8 >> 2] | 0;
    i3 = i50;
    if (i2 >>> 0 < i50 >>> 0) {
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i2, i34);
     HEAP32[i1 >> 2] = (HEAP32[i1 >> 2] | 0) + 24;
    } else {
     i1 = HEAP32[i52 >> 2] | 0;
     i50 = i2 - i1 | 0;
     i4 = (i50 | 0) / 24 | 0;
     i2 = i4 + 1 | 0;
     if ((i50 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i52);
     i1 = (i3 - i1 | 0) / 24 | 0;
     if (i1 >>> 0 < 1073741823) {
      i1 = i1 << 1;
      i1 = i1 >>> 0 < i2 >>> 0 ? i2 : i1;
     } else i1 = 2147483647;
     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_(i51, i1, i4, i52 + 12 | 0);
     i50 = i51 + 8 | 0;
     i49 = HEAP32[i50 >> 2] | 0;
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i49, i34);
     HEAP32[i50 >> 2] = i49 + 24;
     __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i52, i51);
     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev(i51);
    }
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i34);
    i1 = i53 + 2 | 0;
    break L1;
   }
  case 108:
   {
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj10EEERAT__Kc(i35, 34154);
    i1 = i52 + 4 | 0;
    i2 = HEAP32[i1 >> 2] | 0;
    i50 = HEAP32[i52 + 8 >> 2] | 0;
    i3 = i50;
    if (i2 >>> 0 < i50 >>> 0) {
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i2, i35);
     HEAP32[i1 >> 2] = (HEAP32[i1 >> 2] | 0) + 24;
    } else {
     i1 = HEAP32[i52 >> 2] | 0;
     i50 = i2 - i1 | 0;
     i4 = (i50 | 0) / 24 | 0;
     i2 = i4 + 1 | 0;
     if ((i50 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i52);
     i1 = (i3 - i1 | 0) / 24 | 0;
     if (i1 >>> 0 < 1073741823) {
      i1 = i1 << 1;
      i1 = i1 >>> 0 < i2 >>> 0 ? i2 : i1;
     } else i1 = 2147483647;
     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_(i51, i1, i4, i52 + 12 | 0);
     i50 = i51 + 8 | 0;
     i49 = HEAP32[i50 >> 2] | 0;
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i49, i35);
     HEAP32[i50 >> 2] = i49 + 24;
     __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i52, i51);
     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev(i51);
    }
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i35);
    i1 = i53 + 2 | 0;
    break L1;
   }
  case 76:
   {
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj11EEERAT__Kc(i36, 34164);
    i1 = i52 + 4 | 0;
    i2 = HEAP32[i1 >> 2] | 0;
    i50 = HEAP32[i52 + 8 >> 2] | 0;
    i3 = i50;
    if (i2 >>> 0 < i50 >>> 0) {
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i2, i36);
     HEAP32[i1 >> 2] = (HEAP32[i1 >> 2] | 0) + 24;
    } else {
     i1 = HEAP32[i52 >> 2] | 0;
     i50 = i2 - i1 | 0;
     i4 = (i50 | 0) / 24 | 0;
     i2 = i4 + 1 | 0;
     if ((i50 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i52);
     i1 = (i3 - i1 | 0) / 24 | 0;
     if (i1 >>> 0 < 1073741823) {
      i1 = i1 << 1;
      i1 = i1 >>> 0 < i2 >>> 0 ? i2 : i1;
     } else i1 = 2147483647;
     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_(i51, i1, i4, i52 + 12 | 0);
     i50 = i51 + 8 | 0;
     i49 = HEAP32[i50 >> 2] | 0;
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i49, i36);
     HEAP32[i50 >> 2] = i49 + 24;
     __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i52, i51);
     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev(i51);
    }
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i36);
    i1 = i53 + 2 | 0;
    break L1;
   }
  case 112:
   {
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj11EEERAT__Kc(i37, 34175);
    i1 = i52 + 4 | 0;
    i2 = HEAP32[i1 >> 2] | 0;
    i50 = HEAP32[i52 + 8 >> 2] | 0;
    i3 = i50;
    if (i2 >>> 0 < i50 >>> 0) {
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i2, i37);
     HEAP32[i1 >> 2] = (HEAP32[i1 >> 2] | 0) + 24;
    } else {
     i1 = HEAP32[i52 >> 2] | 0;
     i50 = i2 - i1 | 0;
     i4 = (i50 | 0) / 24 | 0;
     i2 = i4 + 1 | 0;
     if ((i50 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i52);
     i1 = (i3 - i1 | 0) / 24 | 0;
     if (i1 >>> 0 < 1073741823) {
      i1 = i1 << 1;
      i1 = i1 >>> 0 < i2 >>> 0 ? i2 : i1;
     } else i1 = 2147483647;
     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_(i51, i1, i4, i52 + 12 | 0);
     i50 = i51 + 8 | 0;
     i49 = HEAP32[i50 >> 2] | 0;
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i49, i37);
     HEAP32[i50 >> 2] = i49 + 24;
     __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i52, i51);
     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev(i51);
    }
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i37);
    i1 = i53 + 2 | 0;
    break L1;
   }
  case 115:
   {
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj10EEERAT__Kc(i38, 34154);
    i1 = i52 + 4 | 0;
    i2 = HEAP32[i1 >> 2] | 0;
    i50 = HEAP32[i52 + 8 >> 2] | 0;
    i3 = i50;
    if (i2 >>> 0 < i50 >>> 0) {
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i2, i38);
     HEAP32[i1 >> 2] = (HEAP32[i1 >> 2] | 0) + 24;
    } else {
     i1 = HEAP32[i52 >> 2] | 0;
     i50 = i2 - i1 | 0;
     i4 = (i50 | 0) / 24 | 0;
     i2 = i4 + 1 | 0;
     if ((i50 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i52);
     i1 = (i3 - i1 | 0) / 24 | 0;
     if (i1 >>> 0 < 1073741823) {
      i1 = i1 << 1;
      i1 = i1 >>> 0 < i2 >>> 0 ? i2 : i1;
     } else i1 = 2147483647;
     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_(i51, i1, i4, i52 + 12 | 0);
     i50 = i51 + 8 | 0;
     i49 = HEAP32[i50 >> 2] | 0;
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i49, i38);
     HEAP32[i50 >> 2] = i49 + 24;
     __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i52, i51);
     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev(i51);
    }
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i38);
    i1 = i53 + 2 | 0;
    break L1;
   }
  case 116:
   {
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj11EEERAT__Kc(i40, 34186);
    i1 = i52 + 4 | 0;
    i2 = HEAP32[i1 >> 2] | 0;
    i50 = HEAP32[i52 + 8 >> 2] | 0;
    i3 = i50;
    if (i2 >>> 0 < i50 >>> 0) {
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i2, i40);
     HEAP32[i1 >> 2] = (HEAP32[i1 >> 2] | 0) + 24;
    } else {
     i1 = HEAP32[i52 >> 2] | 0;
     i50 = i2 - i1 | 0;
     i4 = (i50 | 0) / 24 | 0;
     i2 = i4 + 1 | 0;
     if ((i50 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i52);
     i1 = (i3 - i1 | 0) / 24 | 0;
     if (i1 >>> 0 < 1073741823) {
      i1 = i1 << 1;
      i1 = i1 >>> 0 < i2 >>> 0 ? i2 : i1;
     } else i1 = 2147483647;
     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_(i51, i1, i4, i52 + 12 | 0);
     i50 = i51 + 8 | 0;
     i49 = HEAP32[i50 >> 2] | 0;
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i49, i40);
     HEAP32[i50 >> 2] = i49 + 24;
     __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i52, i51);
     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev(i51);
    }
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i40);
    i1 = i53 + 2 | 0;
    break L1;
   }
  default:
   {
    i1 = i53;
    break L1;
   }
  }
 case 113:
  {
   if ((HEAP8[i53 + 1 >> 0] | 0) != 117) {
    i1 = i53;
    break L1;
   }
   __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj10EEERAT__Kc(i41, 34197);
   i1 = i52 + 4 | 0;
   i2 = HEAP32[i1 >> 2] | 0;
   i50 = HEAP32[i52 + 8 >> 2] | 0;
   i3 = i50;
   if (i2 >>> 0 < i50 >>> 0) {
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i2, i41);
    HEAP32[i1 >> 2] = (HEAP32[i1 >> 2] | 0) + 24;
   } else {
    i1 = HEAP32[i52 >> 2] | 0;
    i50 = i2 - i1 | 0;
    i4 = (i50 | 0) / 24 | 0;
    i2 = i4 + 1 | 0;
    if ((i50 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i52);
    i1 = (i3 - i1 | 0) / 24 | 0;
    if (i1 >>> 0 < 1073741823) {
     i1 = i1 << 1;
     i1 = i1 >>> 0 < i2 >>> 0 ? i2 : i1;
    } else i1 = 2147483647;
    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_(i51, i1, i4, i52 + 12 | 0);
    i50 = i51 + 8 | 0;
    i49 = HEAP32[i50 >> 2] | 0;
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i49, i41);
    HEAP32[i50 >> 2] = i49 + 24;
    __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i52, i51);
    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev(i51);
   }
   __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i41);
   i1 = i53 + 2 | 0;
   break L1;
  }
 case 114:
  switch (HEAP8[i53 + 1 >> 0] | 0) {
  case 109:
   {
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj10EEERAT__Kc(i42, 34207);
    i1 = i52 + 4 | 0;
    i2 = HEAP32[i1 >> 2] | 0;
    i50 = HEAP32[i52 + 8 >> 2] | 0;
    i3 = i50;
    if (i2 >>> 0 < i50 >>> 0) {
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i2, i42);
     HEAP32[i1 >> 2] = (HEAP32[i1 >> 2] | 0) + 24;
    } else {
     i1 = HEAP32[i52 >> 2] | 0;
     i50 = i2 - i1 | 0;
     i4 = (i50 | 0) / 24 | 0;
     i2 = i4 + 1 | 0;
     if ((i50 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i52);
     i1 = (i3 - i1 | 0) / 24 | 0;
     if (i1 >>> 0 < 1073741823) {
      i1 = i1 << 1;
      i1 = i1 >>> 0 < i2 >>> 0 ? i2 : i1;
     } else i1 = 2147483647;
     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_(i51, i1, i4, i52 + 12 | 0);
     i50 = i51 + 8 | 0;
     i49 = HEAP32[i50 >> 2] | 0;
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i49, i42);
     HEAP32[i50 >> 2] = i49 + 24;
     __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i52, i51);
     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev(i51);
    }
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i42);
    i1 = i53 + 2 | 0;
    break L1;
   }
  case 77:
   {
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj11EEERAT__Kc(i43, 34217);
    i1 = i52 + 4 | 0;
    i2 = HEAP32[i1 >> 2] | 0;
    i50 = HEAP32[i52 + 8 >> 2] | 0;
    i3 = i50;
    if (i2 >>> 0 < i50 >>> 0) {
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i2, i43);
     HEAP32[i1 >> 2] = (HEAP32[i1 >> 2] | 0) + 24;
    } else {
     i1 = HEAP32[i52 >> 2] | 0;
     i50 = i2 - i1 | 0;
     i4 = (i50 | 0) / 24 | 0;
     i2 = i4 + 1 | 0;
     if ((i50 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i52);
     i1 = (i3 - i1 | 0) / 24 | 0;
     if (i1 >>> 0 < 1073741823) {
      i1 = i1 << 1;
      i1 = i1 >>> 0 < i2 >>> 0 ? i2 : i1;
     } else i1 = 2147483647;
     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_(i51, i1, i4, i52 + 12 | 0);
     i50 = i51 + 8 | 0;
     i49 = HEAP32[i50 >> 2] | 0;
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i49, i43);
     HEAP32[i50 >> 2] = i49 + 24;
     __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i52, i51);
     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev(i51);
    }
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i43);
    i1 = i53 + 2 | 0;
    break L1;
   }
  case 115:
   {
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj11EEERAT__Kc(i44, 34228);
    i1 = i52 + 4 | 0;
    i2 = HEAP32[i1 >> 2] | 0;
    i50 = HEAP32[i52 + 8 >> 2] | 0;
    i3 = i50;
    if (i2 >>> 0 < i50 >>> 0) {
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i2, i44);
     HEAP32[i1 >> 2] = (HEAP32[i1 >> 2] | 0) + 24;
    } else {
     i1 = HEAP32[i52 >> 2] | 0;
     i50 = i2 - i1 | 0;
     i4 = (i50 | 0) / 24 | 0;
     i2 = i4 + 1 | 0;
     if ((i50 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i52);
     i1 = (i3 - i1 | 0) / 24 | 0;
     if (i1 >>> 0 < 1073741823) {
      i1 = i1 << 1;
      i1 = i1 >>> 0 < i2 >>> 0 ? i2 : i1;
     } else i1 = 2147483647;
     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_(i51, i1, i4, i52 + 12 | 0);
     i50 = i51 + 8 | 0;
     i49 = HEAP32[i50 >> 2] | 0;
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i49, i44);
     HEAP32[i50 >> 2] = i49 + 24;
     __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i52, i51);
     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev(i51);
    }
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i44);
    i1 = i53 + 2 | 0;
    break L1;
   }
  case 83:
   {
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj12EEERAT__Kc(i45, 34239);
    i1 = i52 + 4 | 0;
    i2 = HEAP32[i1 >> 2] | 0;
    i50 = HEAP32[i52 + 8 >> 2] | 0;
    i3 = i50;
    if (i2 >>> 0 < i50 >>> 0) {
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i2, i45);
     HEAP32[i1 >> 2] = (HEAP32[i1 >> 2] | 0) + 24;
    } else {
     i1 = HEAP32[i52 >> 2] | 0;
     i50 = i2 - i1 | 0;
     i4 = (i50 | 0) / 24 | 0;
     i2 = i4 + 1 | 0;
     if ((i50 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i52);
     i1 = (i3 - i1 | 0) / 24 | 0;
     if (i1 >>> 0 < 1073741823) {
      i1 = i1 << 1;
      i1 = i1 >>> 0 < i2 >>> 0 ? i2 : i1;
     } else i1 = 2147483647;
     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_(i51, i1, i4, i52 + 12 | 0);
     i50 = i51 + 8 | 0;
     i49 = HEAP32[i50 >> 2] | 0;
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i49, i45);
     HEAP32[i50 >> 2] = i49 + 24;
     __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i52, i51);
     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev(i51);
    }
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i45);
    i1 = i53 + 2 | 0;
    break L1;
   }
  default:
   {
    i1 = i53;
    break L1;
   }
  }
 case 118:
  {
   if (((HEAP8[i53 + 1 >> 0] | 0) + -48 | 0) >>> 0 >= 10) {
    i1 = i53;
    break L1;
   }
   i51 = i53 + 2 | 0;
   i1 = __ZN10__cxxabiv112_GLOBAL__N_117parse_source_nameINS0_2DbEEEPKcS4_S4_RT_(i51, i1, i52) | 0;
   if ((i1 | 0) == (i51 | 0)) {
    i1 = i53;
    break L1;
   }
   i2 = HEAP32[i52 + 4 >> 2] | 0;
   if ((HEAP32[i52 >> 2] | 0) == (i2 | 0)) {
    i1 = i53;
    break L1;
   }
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc(i2 + -24 | 0, 0, 33823) | 0;
   break L1;
  }
 default:
  {
   i1 = i53;
   break L1;
  }
 } while (0); else i1 = i53; while (0);
 STACKTOP = i54;
 return i1 | 0;
}

function __ZN10__cxxabiv112_GLOBAL__N_118parse_builtin_typeINS0_2DbEEEPKcS4_S4_RT_(i1, i3, i36) {
 i1 = i1 | 0;
 i3 = i3 | 0;
 i36 = i36 | 0;
 var i2 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, i18 = 0, i19 = 0, i20 = 0, i21 = 0, i22 = 0, i23 = 0, i24 = 0, i25 = 0, i26 = 0, i27 = 0, i28 = 0, i29 = 0, i30 = 0, i31 = 0, i32 = 0, i33 = 0, i34 = 0, i35 = 0, i37 = 0;
 i37 = STACKTOP;
 STACKTOP = STACKTOP + 720 | 0;
 i35 = i37 + 696 | 0;
 i6 = i37 + 672 | 0;
 i32 = i37 + 648 | 0;
 i15 = i37 + 624 | 0;
 i17 = i37 + 600 | 0;
 i18 = i37 + 576 | 0;
 i19 = i37 + 552 | 0;
 i20 = i37 + 528 | 0;
 i21 = i37 + 504 | 0;
 i22 = i37 + 480 | 0;
 i23 = i37 + 456 | 0;
 i7 = i37 + 432 | 0;
 i8 = i37 + 408 | 0;
 i9 = i37 + 384 | 0;
 i34 = i37 + 360 | 0;
 i10 = i37 + 336 | 0;
 i11 = i37 + 312 | 0;
 i12 = i37 + 288 | 0;
 i33 = i37 + 264 | 0;
 i13 = i37 + 240 | 0;
 i14 = i37 + 216 | 0;
 i16 = i37 + 192 | 0;
 i24 = i37 + 168 | 0;
 i25 = i37 + 144 | 0;
 i26 = i37 + 120 | 0;
 i27 = i37 + 96 | 0;
 i28 = i37 + 72 | 0;
 i29 = i37 + 48 | 0;
 i30 = i37 + 24 | 0;
 i31 = i37;
 L1 : do if ((i1 | 0) != (i3 | 0)) do switch (HEAP8[i1 >> 0] | 0) {
 case 118:
  {
   __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj5EEERAT__Kc(i6, 33296);
   i2 = i36 + 4 | 0;
   i3 = HEAP32[i2 >> 2] | 0;
   i34 = HEAP32[i36 + 8 >> 2] | 0;
   i4 = i34;
   if (i3 >>> 0 < i34 >>> 0) {
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i3, i6);
    HEAP32[i2 >> 2] = (HEAP32[i2 >> 2] | 0) + 24;
   } else {
    i2 = HEAP32[i36 >> 2] | 0;
    i34 = i3 - i2 | 0;
    i5 = (i34 | 0) / 24 | 0;
    i3 = i5 + 1 | 0;
    if ((i34 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i36);
    i2 = (i4 - i2 | 0) / 24 | 0;
    if (i2 >>> 0 < 1073741823) {
     i2 = i2 << 1;
     i2 = i2 >>> 0 < i3 >>> 0 ? i3 : i2;
    } else i2 = 2147483647;
    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_(i35, i2, i5, i36 + 12 | 0);
    i34 = i35 + 8 | 0;
    i33 = HEAP32[i34 >> 2] | 0;
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i33, i6);
    HEAP32[i34 >> 2] = i33 + 24;
    __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i36, i35);
    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev(i35);
   }
   __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i6);
   i1 = i1 + 1 | 0;
   break L1;
  }
 case 119:
  {
   HEAP8[i32 >> 0] = 14;
   i2 = i32 + 1 | 0;
   HEAP8[i2 >> 0] = HEAP8[33301] | 0;
   HEAP8[i2 + 1 >> 0] = HEAP8[33302] | 0;
   HEAP8[i2 + 2 >> 0] = HEAP8[33303] | 0;
   HEAP8[i2 + 3 >> 0] = HEAP8[33304] | 0;
   HEAP8[i2 + 4 >> 0] = HEAP8[33305] | 0;
   HEAP8[i2 + 5 >> 0] = HEAP8[33306] | 0;
   HEAP8[i2 + 6 >> 0] = HEAP8[33307] | 0;
   HEAP8[i32 + 8 >> 0] = 0;
   i2 = i32 + 12 | 0;
   i3 = 0;
   while (1) {
    if ((i3 | 0) == 3) break;
    HEAP32[i2 + (i3 << 2) >> 2] = 0;
    i3 = i3 + 1 | 0;
   }
   i2 = i36 + 4 | 0;
   i3 = HEAP32[i2 >> 2] | 0;
   i34 = HEAP32[i36 + 8 >> 2] | 0;
   i4 = i34;
   if (i3 >>> 0 < i34 >>> 0) {
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i3, i32);
    HEAP32[i2 >> 2] = (HEAP32[i2 >> 2] | 0) + 24;
   } else {
    i2 = HEAP32[i36 >> 2] | 0;
    i34 = i3 - i2 | 0;
    i5 = (i34 | 0) / 24 | 0;
    i3 = i5 + 1 | 0;
    if ((i34 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i36);
    i2 = (i4 - i2 | 0) / 24 | 0;
    if (i2 >>> 0 < 1073741823) {
     i2 = i2 << 1;
     i2 = i2 >>> 0 < i3 >>> 0 ? i3 : i2;
    } else i2 = 2147483647;
    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_(i35, i2, i5, i36 + 12 | 0);
    i34 = i35 + 8 | 0;
    i33 = HEAP32[i34 >> 2] | 0;
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i33, i32);
    HEAP32[i34 >> 2] = i33 + 24;
    __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i36, i35);
    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev(i35);
   }
   __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i32);
   i1 = i1 + 1 | 0;
   break L1;
  }
 case 98:
  {
   __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj5EEERAT__Kc(i15, 33309);
   i2 = i36 + 4 | 0;
   i3 = HEAP32[i2 >> 2] | 0;
   i34 = HEAP32[i36 + 8 >> 2] | 0;
   i4 = i34;
   if (i3 >>> 0 < i34 >>> 0) {
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i3, i15);
    HEAP32[i2 >> 2] = (HEAP32[i2 >> 2] | 0) + 24;
   } else {
    i2 = HEAP32[i36 >> 2] | 0;
    i34 = i3 - i2 | 0;
    i5 = (i34 | 0) / 24 | 0;
    i3 = i5 + 1 | 0;
    if ((i34 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i36);
    i2 = (i4 - i2 | 0) / 24 | 0;
    if (i2 >>> 0 < 1073741823) {
     i2 = i2 << 1;
     i2 = i2 >>> 0 < i3 >>> 0 ? i3 : i2;
    } else i2 = 2147483647;
    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_(i35, i2, i5, i36 + 12 | 0);
    i34 = i35 + 8 | 0;
    i33 = HEAP32[i34 >> 2] | 0;
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i33, i15);
    HEAP32[i34 >> 2] = i33 + 24;
    __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i36, i35);
    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev(i35);
   }
   __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i15);
   i1 = i1 + 1 | 0;
   break L1;
  }
 case 99:
  {
   __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj5EEERAT__Kc(i17, 33314);
   i2 = i36 + 4 | 0;
   i3 = HEAP32[i2 >> 2] | 0;
   i34 = HEAP32[i36 + 8 >> 2] | 0;
   i4 = i34;
   if (i3 >>> 0 < i34 >>> 0) {
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i3, i17);
    HEAP32[i2 >> 2] = (HEAP32[i2 >> 2] | 0) + 24;
   } else {
    i2 = HEAP32[i36 >> 2] | 0;
    i34 = i3 - i2 | 0;
    i5 = (i34 | 0) / 24 | 0;
    i3 = i5 + 1 | 0;
    if ((i34 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i36);
    i2 = (i4 - i2 | 0) / 24 | 0;
    if (i2 >>> 0 < 1073741823) {
     i2 = i2 << 1;
     i2 = i2 >>> 0 < i3 >>> 0 ? i3 : i2;
    } else i2 = 2147483647;
    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_(i35, i2, i5, i36 + 12 | 0);
    i34 = i35 + 8 | 0;
    i33 = HEAP32[i34 >> 2] | 0;
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i33, i17);
    HEAP32[i34 >> 2] = i33 + 24;
    __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i36, i35);
    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev(i35);
   }
   __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i17);
   i1 = i1 + 1 | 0;
   break L1;
  }
 case 97:
  {
   __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj12EEERAT__Kc(i18, 33319);
   i2 = i36 + 4 | 0;
   i3 = HEAP32[i2 >> 2] | 0;
   i34 = HEAP32[i36 + 8 >> 2] | 0;
   i4 = i34;
   if (i3 >>> 0 < i34 >>> 0) {
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i3, i18);
    HEAP32[i2 >> 2] = (HEAP32[i2 >> 2] | 0) + 24;
   } else {
    i2 = HEAP32[i36 >> 2] | 0;
    i34 = i3 - i2 | 0;
    i5 = (i34 | 0) / 24 | 0;
    i3 = i5 + 1 | 0;
    if ((i34 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i36);
    i2 = (i4 - i2 | 0) / 24 | 0;
    if (i2 >>> 0 < 1073741823) {
     i2 = i2 << 1;
     i2 = i2 >>> 0 < i3 >>> 0 ? i3 : i2;
    } else i2 = 2147483647;
    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_(i35, i2, i5, i36 + 12 | 0);
    i34 = i35 + 8 | 0;
    i33 = HEAP32[i34 >> 2] | 0;
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i33, i18);
    HEAP32[i34 >> 2] = i33 + 24;
    __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i36, i35);
    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev(i35);
   }
   __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i18);
   i1 = i1 + 1 | 0;
   break L1;
  }
 case 104:
  {
   __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj14EEERAT__Kc(i19, 33331);
   i2 = i36 + 4 | 0;
   i3 = HEAP32[i2 >> 2] | 0;
   i34 = HEAP32[i36 + 8 >> 2] | 0;
   i4 = i34;
   if (i3 >>> 0 < i34 >>> 0) {
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i3, i19);
    HEAP32[i2 >> 2] = (HEAP32[i2 >> 2] | 0) + 24;
   } else {
    i2 = HEAP32[i36 >> 2] | 0;
    i34 = i3 - i2 | 0;
    i5 = (i34 | 0) / 24 | 0;
    i3 = i5 + 1 | 0;
    if ((i34 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i36);
    i2 = (i4 - i2 | 0) / 24 | 0;
    if (i2 >>> 0 < 1073741823) {
     i2 = i2 << 1;
     i2 = i2 >>> 0 < i3 >>> 0 ? i3 : i2;
    } else i2 = 2147483647;
    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_(i35, i2, i5, i36 + 12 | 0);
    i34 = i35 + 8 | 0;
    i33 = HEAP32[i34 >> 2] | 0;
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i33, i19);
    HEAP32[i34 >> 2] = i33 + 24;
    __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i36, i35);
    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev(i35);
   }
   __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i19);
   i1 = i1 + 1 | 0;
   break L1;
  }
 case 115:
  {
   __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj6EEERAT__Kc(i20, 33345);
   i2 = i36 + 4 | 0;
   i3 = HEAP32[i2 >> 2] | 0;
   i34 = HEAP32[i36 + 8 >> 2] | 0;
   i4 = i34;
   if (i3 >>> 0 < i34 >>> 0) {
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i3, i20);
    HEAP32[i2 >> 2] = (HEAP32[i2 >> 2] | 0) + 24;
   } else {
    i2 = HEAP32[i36 >> 2] | 0;
    i34 = i3 - i2 | 0;
    i5 = (i34 | 0) / 24 | 0;
    i3 = i5 + 1 | 0;
    if ((i34 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i36);
    i2 = (i4 - i2 | 0) / 24 | 0;
    if (i2 >>> 0 < 1073741823) {
     i2 = i2 << 1;
     i2 = i2 >>> 0 < i3 >>> 0 ? i3 : i2;
    } else i2 = 2147483647;
    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_(i35, i2, i5, i36 + 12 | 0);
    i34 = i35 + 8 | 0;
    i33 = HEAP32[i34 >> 2] | 0;
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i33, i20);
    HEAP32[i34 >> 2] = i33 + 24;
    __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i36, i35);
    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev(i35);
   }
   __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i20);
   i1 = i1 + 1 | 0;
   break L1;
  }
 case 116:
  {
   __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj15EEERAT__Kc(i21, 33351);
   i2 = i36 + 4 | 0;
   i3 = HEAP32[i2 >> 2] | 0;
   i34 = HEAP32[i36 + 8 >> 2] | 0;
   i4 = i34;
   if (i3 >>> 0 < i34 >>> 0) {
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i3, i21);
    HEAP32[i2 >> 2] = (HEAP32[i2 >> 2] | 0) + 24;
   } else {
    i2 = HEAP32[i36 >> 2] | 0;
    i34 = i3 - i2 | 0;
    i5 = (i34 | 0) / 24 | 0;
    i3 = i5 + 1 | 0;
    if ((i34 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i36);
    i2 = (i4 - i2 | 0) / 24 | 0;
    if (i2 >>> 0 < 1073741823) {
     i2 = i2 << 1;
     i2 = i2 >>> 0 < i3 >>> 0 ? i3 : i2;
    } else i2 = 2147483647;
    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_(i35, i2, i5, i36 + 12 | 0);
    i34 = i35 + 8 | 0;
    i33 = HEAP32[i34 >> 2] | 0;
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i33, i21);
    HEAP32[i34 >> 2] = i33 + 24;
    __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i36, i35);
    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev(i35);
   }
   __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i21);
   i1 = i1 + 1 | 0;
   break L1;
  }
 case 105:
  {
   __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj4EEERAT__Kc(i22, 33366);
   i2 = i36 + 4 | 0;
   i3 = HEAP32[i2 >> 2] | 0;
   i34 = HEAP32[i36 + 8 >> 2] | 0;
   i4 = i34;
   if (i3 >>> 0 < i34 >>> 0) {
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i3, i22);
    HEAP32[i2 >> 2] = (HEAP32[i2 >> 2] | 0) + 24;
   } else {
    i2 = HEAP32[i36 >> 2] | 0;
    i34 = i3 - i2 | 0;
    i5 = (i34 | 0) / 24 | 0;
    i3 = i5 + 1 | 0;
    if ((i34 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i36);
    i2 = (i4 - i2 | 0) / 24 | 0;
    if (i2 >>> 0 < 1073741823) {
     i2 = i2 << 1;
     i2 = i2 >>> 0 < i3 >>> 0 ? i3 : i2;
    } else i2 = 2147483647;
    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_(i35, i2, i5, i36 + 12 | 0);
    i34 = i35 + 8 | 0;
    i33 = HEAP32[i34 >> 2] | 0;
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i33, i22);
    HEAP32[i34 >> 2] = i33 + 24;
    __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i36, i35);
    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev(i35);
   }
   __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i22);
   i1 = i1 + 1 | 0;
   break L1;
  }
 case 106:
  {
   __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj13EEERAT__Kc(i23, 33370);
   i2 = i36 + 4 | 0;
   i3 = HEAP32[i2 >> 2] | 0;
   i34 = HEAP32[i36 + 8 >> 2] | 0;
   i4 = i34;
   if (i3 >>> 0 < i34 >>> 0) {
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i3, i23);
    HEAP32[i2 >> 2] = (HEAP32[i2 >> 2] | 0) + 24;
   } else {
    i2 = HEAP32[i36 >> 2] | 0;
    i34 = i3 - i2 | 0;
    i5 = (i34 | 0) / 24 | 0;
    i3 = i5 + 1 | 0;
    if ((i34 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i36);
    i2 = (i4 - i2 | 0) / 24 | 0;
    if (i2 >>> 0 < 1073741823) {
     i2 = i2 << 1;
     i2 = i2 >>> 0 < i3 >>> 0 ? i3 : i2;
    } else i2 = 2147483647;
    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_(i35, i2, i5, i36 + 12 | 0);
    i34 = i35 + 8 | 0;
    i33 = HEAP32[i34 >> 2] | 0;
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i33, i23);
    HEAP32[i34 >> 2] = i33 + 24;
    __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i36, i35);
    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev(i35);
   }
   __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i23);
   i1 = i1 + 1 | 0;
   break L1;
  }
 case 108:
  {
   __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj5EEERAT__Kc(i7, 33383);
   i2 = i36 + 4 | 0;
   i3 = HEAP32[i2 >> 2] | 0;
   i34 = HEAP32[i36 + 8 >> 2] | 0;
   i4 = i34;
   if (i3 >>> 0 < i34 >>> 0) {
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i3, i7);
    HEAP32[i2 >> 2] = (HEAP32[i2 >> 2] | 0) + 24;
   } else {
    i2 = HEAP32[i36 >> 2] | 0;
    i34 = i3 - i2 | 0;
    i5 = (i34 | 0) / 24 | 0;
    i3 = i5 + 1 | 0;
    if ((i34 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i36);
    i2 = (i4 - i2 | 0) / 24 | 0;
    if (i2 >>> 0 < 1073741823) {
     i2 = i2 << 1;
     i2 = i2 >>> 0 < i3 >>> 0 ? i3 : i2;
    } else i2 = 2147483647;
    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_(i35, i2, i5, i36 + 12 | 0);
    i34 = i35 + 8 | 0;
    i33 = HEAP32[i34 >> 2] | 0;
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i33, i7);
    HEAP32[i34 >> 2] = i33 + 24;
    __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i36, i35);
    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev(i35);
   }
   __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i7);
   i1 = i1 + 1 | 0;
   break L1;
  }
 case 109:
  {
   __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj14EEERAT__Kc(i8, 33388);
   i2 = i36 + 4 | 0;
   i3 = HEAP32[i2 >> 2] | 0;
   i34 = HEAP32[i36 + 8 >> 2] | 0;
   i4 = i34;
   if (i3 >>> 0 < i34 >>> 0) {
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i3, i8);
    HEAP32[i2 >> 2] = (HEAP32[i2 >> 2] | 0) + 24;
   } else {
    i2 = HEAP32[i36 >> 2] | 0;
    i34 = i3 - i2 | 0;
    i5 = (i34 | 0) / 24 | 0;
    i3 = i5 + 1 | 0;
    if ((i34 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i36);
    i2 = (i4 - i2 | 0) / 24 | 0;
    if (i2 >>> 0 < 1073741823) {
     i2 = i2 << 1;
     i2 = i2 >>> 0 < i3 >>> 0 ? i3 : i2;
    } else i2 = 2147483647;
    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_(i35, i2, i5, i36 + 12 | 0);
    i34 = i35 + 8 | 0;
    i33 = HEAP32[i34 >> 2] | 0;
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i33, i8);
    HEAP32[i34 >> 2] = i33 + 24;
    __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i36, i35);
    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev(i35);
   }
   __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i8);
   i1 = i1 + 1 | 0;
   break L1;
  }
 case 120:
  {
   __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj10EEERAT__Kc(i9, 33402);
   i2 = i36 + 4 | 0;
   i3 = HEAP32[i2 >> 2] | 0;
   i34 = HEAP32[i36 + 8 >> 2] | 0;
   i4 = i34;
   if (i3 >>> 0 < i34 >>> 0) {
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i3, i9);
    HEAP32[i2 >> 2] = (HEAP32[i2 >> 2] | 0) + 24;
   } else {
    i2 = HEAP32[i36 >> 2] | 0;
    i34 = i3 - i2 | 0;
    i5 = (i34 | 0) / 24 | 0;
    i3 = i5 + 1 | 0;
    if ((i34 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i36);
    i2 = (i4 - i2 | 0) / 24 | 0;
    if (i2 >>> 0 < 1073741823) {
     i2 = i2 << 1;
     i2 = i2 >>> 0 < i3 >>> 0 ? i3 : i2;
    } else i2 = 2147483647;
    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_(i35, i2, i5, i36 + 12 | 0);
    i34 = i35 + 8 | 0;
    i33 = HEAP32[i34 >> 2] | 0;
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i33, i9);
    HEAP32[i34 >> 2] = i33 + 24;
    __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i36, i35);
    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev(i35);
   }
   __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i9);
   i1 = i1 + 1 | 0;
   break L1;
  }
 case 121:
  {
   i2 = _malloc(32) | 0;
   HEAP32[i34 + 8 >> 2] = i2;
   HEAP32[i34 >> 2] = 33;
   HEAP32[i34 + 4 >> 2] = 18;
   i3 = i2;
   i4 = 33412;
   i5 = i3 + 18 | 0;
   do {
    HEAP8[i3 >> 0] = HEAP8[i4 >> 0] | 0;
    i3 = i3 + 1 | 0;
    i4 = i4 + 1 | 0;
   } while ((i3 | 0) < (i5 | 0));
   HEAP8[i2 + 18 >> 0] = 0;
   i2 = i34 + 12 | 0;
   i3 = 0;
   while (1) {
    if ((i3 | 0) == 3) break;
    HEAP32[i2 + (i3 << 2) >> 2] = 0;
    i3 = i3 + 1 | 0;
   }
   i2 = i36 + 4 | 0;
   i3 = HEAP32[i2 >> 2] | 0;
   i33 = HEAP32[i36 + 8 >> 2] | 0;
   i4 = i33;
   if (i3 >>> 0 < i33 >>> 0) {
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i3, i34);
    HEAP32[i2 >> 2] = (HEAP32[i2 >> 2] | 0) + 24;
   } else {
    i2 = HEAP32[i36 >> 2] | 0;
    i33 = i3 - i2 | 0;
    i5 = (i33 | 0) / 24 | 0;
    i3 = i5 + 1 | 0;
    if ((i33 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i36);
    i2 = (i4 - i2 | 0) / 24 | 0;
    if (i2 >>> 0 < 1073741823) {
     i2 = i2 << 1;
     i2 = i2 >>> 0 < i3 >>> 0 ? i3 : i2;
    } else i2 = 2147483647;
    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_(i35, i2, i5, i36 + 12 | 0);
    i33 = i35 + 8 | 0;
    i32 = HEAP32[i33 >> 2] | 0;
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i32, i34);
    HEAP32[i33 >> 2] = i32 + 24;
    __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i36, i35);
    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev(i35);
   }
   __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i34);
   i1 = i1 + 1 | 0;
   break L1;
  }
 case 110:
  {
   __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj9EEERAT__Kc(i10, 33431);
   i2 = i36 + 4 | 0;
   i3 = HEAP32[i2 >> 2] | 0;
   i34 = HEAP32[i36 + 8 >> 2] | 0;
   i4 = i34;
   if (i3 >>> 0 < i34 >>> 0) {
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i3, i10);
    HEAP32[i2 >> 2] = (HEAP32[i2 >> 2] | 0) + 24;
   } else {
    i2 = HEAP32[i36 >> 2] | 0;
    i34 = i3 - i2 | 0;
    i5 = (i34 | 0) / 24 | 0;
    i3 = i5 + 1 | 0;
    if ((i34 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i36);
    i2 = (i4 - i2 | 0) / 24 | 0;
    if (i2 >>> 0 < 1073741823) {
     i2 = i2 << 1;
     i2 = i2 >>> 0 < i3 >>> 0 ? i3 : i2;
    } else i2 = 2147483647;
    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_(i35, i2, i5, i36 + 12 | 0);
    i34 = i35 + 8 | 0;
    i33 = HEAP32[i34 >> 2] | 0;
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i33, i10);
    HEAP32[i34 >> 2] = i33 + 24;
    __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i36, i35);
    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev(i35);
   }
   __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i10);
   i1 = i1 + 1 | 0;
   break L1;
  }
 case 111:
  {
   __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj18EEERAT__Kc(i11, 33440);
   i2 = i36 + 4 | 0;
   i3 = HEAP32[i2 >> 2] | 0;
   i34 = HEAP32[i36 + 8 >> 2] | 0;
   i4 = i34;
   if (i3 >>> 0 < i34 >>> 0) {
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i3, i11);
    HEAP32[i2 >> 2] = (HEAP32[i2 >> 2] | 0) + 24;
   } else {
    i2 = HEAP32[i36 >> 2] | 0;
    i34 = i3 - i2 | 0;
    i5 = (i34 | 0) / 24 | 0;
    i3 = i5 + 1 | 0;
    if ((i34 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i36);
    i2 = (i4 - i2 | 0) / 24 | 0;
    if (i2 >>> 0 < 1073741823) {
     i2 = i2 << 1;
     i2 = i2 >>> 0 < i3 >>> 0 ? i3 : i2;
    } else i2 = 2147483647;
    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_(i35, i2, i5, i36 + 12 | 0);
    i34 = i35 + 8 | 0;
    i33 = HEAP32[i34 >> 2] | 0;
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i33, i11);
    HEAP32[i34 >> 2] = i33 + 24;
    __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i36, i35);
    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev(i35);
   }
   __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i11);
   i1 = i1 + 1 | 0;
   break L1;
  }
 case 102:
  {
   __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj6EEERAT__Kc(i12, 33458);
   i2 = i36 + 4 | 0;
   i3 = HEAP32[i2 >> 2] | 0;
   i34 = HEAP32[i36 + 8 >> 2] | 0;
   i4 = i34;
   if (i3 >>> 0 < i34 >>> 0) {
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i3, i12);
    HEAP32[i2 >> 2] = (HEAP32[i2 >> 2] | 0) + 24;
   } else {
    i2 = HEAP32[i36 >> 2] | 0;
    i34 = i3 - i2 | 0;
    i5 = (i34 | 0) / 24 | 0;
    i3 = i5 + 1 | 0;
    if ((i34 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i36);
    i2 = (i4 - i2 | 0) / 24 | 0;
    if (i2 >>> 0 < 1073741823) {
     i2 = i2 << 1;
     i2 = i2 >>> 0 < i3 >>> 0 ? i3 : i2;
    } else i2 = 2147483647;
    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_(i35, i2, i5, i36 + 12 | 0);
    i34 = i35 + 8 | 0;
    i33 = HEAP32[i34 >> 2] | 0;
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i33, i12);
    HEAP32[i34 >> 2] = i33 + 24;
    __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i36, i35);
    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev(i35);
   }
   __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i12);
   i1 = i1 + 1 | 0;
   break L1;
  }
 case 100:
  {
   HEAP8[i33 >> 0] = 12;
   i2 = i33 + 1 | 0;
   HEAP8[i2 >> 0] = HEAP8[33464] | 0;
   HEAP8[i2 + 1 >> 0] = HEAP8[33465] | 0;
   HEAP8[i2 + 2 >> 0] = HEAP8[33466] | 0;
   HEAP8[i2 + 3 >> 0] = HEAP8[33467] | 0;
   HEAP8[i2 + 4 >> 0] = HEAP8[33468] | 0;
   HEAP8[i2 + 5 >> 0] = HEAP8[33469] | 0;
   HEAP8[i33 + 7 >> 0] = 0;
   i2 = i33 + 12 | 0;
   i3 = 0;
   while (1) {
    if ((i3 | 0) == 3) break;
    HEAP32[i2 + (i3 << 2) >> 2] = 0;
    i3 = i3 + 1 | 0;
   }
   i2 = i36 + 4 | 0;
   i3 = HEAP32[i2 >> 2] | 0;
   i34 = HEAP32[i36 + 8 >> 2] | 0;
   i4 = i34;
   if (i3 >>> 0 < i34 >>> 0) {
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i3, i33);
    HEAP32[i2 >> 2] = (HEAP32[i2 >> 2] | 0) + 24;
   } else {
    i2 = HEAP32[i36 >> 2] | 0;
    i34 = i3 - i2 | 0;
    i5 = (i34 | 0) / 24 | 0;
    i3 = i5 + 1 | 0;
    if ((i34 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i36);
    i2 = (i4 - i2 | 0) / 24 | 0;
    if (i2 >>> 0 < 1073741823) {
     i2 = i2 << 1;
     i2 = i2 >>> 0 < i3 >>> 0 ? i3 : i2;
    } else i2 = 2147483647;
    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_(i35, i2, i5, i36 + 12 | 0);
    i34 = i35 + 8 | 0;
    i32 = HEAP32[i34 >> 2] | 0;
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i32, i33);
    HEAP32[i34 >> 2] = i32 + 24;
    __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i36, i35);
    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev(i35);
   }
   __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i33);
   i1 = i1 + 1 | 0;
   break L1;
  }
 case 101:
  {
   __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj12EEERAT__Kc(i13, 33471);
   i2 = i36 + 4 | 0;
   i3 = HEAP32[i2 >> 2] | 0;
   i34 = HEAP32[i36 + 8 >> 2] | 0;
   i4 = i34;
   if (i3 >>> 0 < i34 >>> 0) {
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i3, i13);
    HEAP32[i2 >> 2] = (HEAP32[i2 >> 2] | 0) + 24;
   } else {
    i2 = HEAP32[i36 >> 2] | 0;
    i34 = i3 - i2 | 0;
    i5 = (i34 | 0) / 24 | 0;
    i3 = i5 + 1 | 0;
    if ((i34 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i36);
    i2 = (i4 - i2 | 0) / 24 | 0;
    if (i2 >>> 0 < 1073741823) {
     i2 = i2 << 1;
     i2 = i2 >>> 0 < i3 >>> 0 ? i3 : i2;
    } else i2 = 2147483647;
    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_(i35, i2, i5, i36 + 12 | 0);
    i34 = i35 + 8 | 0;
    i33 = HEAP32[i34 >> 2] | 0;
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i33, i13);
    HEAP32[i34 >> 2] = i33 + 24;
    __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i36, i35);
    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev(i35);
   }
   __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i13);
   i1 = i1 + 1 | 0;
   break L1;
  }
 case 103:
  {
   __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj11EEERAT__Kc(i14, 33483);
   i2 = i36 + 4 | 0;
   i3 = HEAP32[i2 >> 2] | 0;
   i34 = HEAP32[i36 + 8 >> 2] | 0;
   i4 = i34;
   if (i3 >>> 0 < i34 >>> 0) {
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i3, i14);
    HEAP32[i2 >> 2] = (HEAP32[i2 >> 2] | 0) + 24;
   } else {
    i2 = HEAP32[i36 >> 2] | 0;
    i34 = i3 - i2 | 0;
    i5 = (i34 | 0) / 24 | 0;
    i3 = i5 + 1 | 0;
    if ((i34 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i36);
    i2 = (i4 - i2 | 0) / 24 | 0;
    if (i2 >>> 0 < 1073741823) {
     i2 = i2 << 1;
     i2 = i2 >>> 0 < i3 >>> 0 ? i3 : i2;
    } else i2 = 2147483647;
    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_(i35, i2, i5, i36 + 12 | 0);
    i34 = i35 + 8 | 0;
    i33 = HEAP32[i34 >> 2] | 0;
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i33, i14);
    HEAP32[i34 >> 2] = i33 + 24;
    __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i36, i35);
    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev(i35);
   }
   __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i14);
   i1 = i1 + 1 | 0;
   break L1;
  }
 case 122:
  {
   __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj4EEERAT__Kc(i16, 33494);
   i2 = i36 + 4 | 0;
   i3 = HEAP32[i2 >> 2] | 0;
   i34 = HEAP32[i36 + 8 >> 2] | 0;
   i4 = i34;
   if (i3 >>> 0 < i34 >>> 0) {
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i3, i16);
    HEAP32[i2 >> 2] = (HEAP32[i2 >> 2] | 0) + 24;
   } else {
    i2 = HEAP32[i36 >> 2] | 0;
    i34 = i3 - i2 | 0;
    i5 = (i34 | 0) / 24 | 0;
    i3 = i5 + 1 | 0;
    if ((i34 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i36);
    i2 = (i4 - i2 | 0) / 24 | 0;
    if (i2 >>> 0 < 1073741823) {
     i2 = i2 << 1;
     i2 = i2 >>> 0 < i3 >>> 0 ? i3 : i2;
    } else i2 = 2147483647;
    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_(i35, i2, i5, i36 + 12 | 0);
    i34 = i35 + 8 | 0;
    i33 = HEAP32[i34 >> 2] | 0;
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i33, i16);
    HEAP32[i34 >> 2] = i33 + 24;
    __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i36, i35);
    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev(i35);
   }
   __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i16);
   i1 = i1 + 1 | 0;
   break L1;
  }
 case 117:
  {
   i35 = i1 + 1 | 0;
   i36 = __ZN10__cxxabiv112_GLOBAL__N_117parse_source_nameINS0_2DbEEEPKcS4_S4_RT_(i35, i3, i36) | 0;
   i1 = (i36 | 0) == (i35 | 0) ? i1 : i36;
   break L1;
  }
 case 68:
  {
   i2 = i1 + 1 | 0;
   if ((i2 | 0) == (i3 | 0)) break L1;
   switch (HEAP8[i2 >> 0] | 0) {
   case 100:
    {
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj10EEERAT__Kc(i24, 33531);
     i2 = i36 + 4 | 0;
     i3 = HEAP32[i2 >> 2] | 0;
     i34 = HEAP32[i36 + 8 >> 2] | 0;
     i4 = i34;
     if (i3 >>> 0 < i34 >>> 0) {
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i3, i24);
      HEAP32[i2 >> 2] = (HEAP32[i2 >> 2] | 0) + 24;
     } else {
      i2 = HEAP32[i36 >> 2] | 0;
      i34 = i3 - i2 | 0;
      i5 = (i34 | 0) / 24 | 0;
      i3 = i5 + 1 | 0;
      if ((i34 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i36);
      i2 = (i4 - i2 | 0) / 24 | 0;
      if (i2 >>> 0 < 1073741823) {
       i2 = i2 << 1;
       i2 = i2 >>> 0 < i3 >>> 0 ? i3 : i2;
      } else i2 = 2147483647;
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_(i35, i2, i5, i36 + 12 | 0);
      i34 = i35 + 8 | 0;
      i33 = HEAP32[i34 >> 2] | 0;
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i33, i24);
      HEAP32[i34 >> 2] = i33 + 24;
      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i36, i35);
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev(i35);
     }
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i24);
     i1 = i1 + 2 | 0;
     break L1;
    }
   case 101:
    {
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj11EEERAT__Kc(i25, 33541);
     i2 = i36 + 4 | 0;
     i3 = HEAP32[i2 >> 2] | 0;
     i34 = HEAP32[i36 + 8 >> 2] | 0;
     i4 = i34;
     if (i3 >>> 0 < i34 >>> 0) {
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i3, i25);
      HEAP32[i2 >> 2] = (HEAP32[i2 >> 2] | 0) + 24;
     } else {
      i2 = HEAP32[i36 >> 2] | 0;
      i34 = i3 - i2 | 0;
      i5 = (i34 | 0) / 24 | 0;
      i3 = i5 + 1 | 0;
      if ((i34 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i36);
      i2 = (i4 - i2 | 0) / 24 | 0;
      if (i2 >>> 0 < 1073741823) {
       i2 = i2 << 1;
       i2 = i2 >>> 0 < i3 >>> 0 ? i3 : i2;
      } else i2 = 2147483647;
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_(i35, i2, i5, i36 + 12 | 0);
      i34 = i35 + 8 | 0;
      i33 = HEAP32[i34 >> 2] | 0;
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i33, i25);
      HEAP32[i34 >> 2] = i33 + 24;
      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i36, i35);
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev(i35);
     }
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i25);
     i1 = i1 + 2 | 0;
     break L1;
    }
   case 102:
    {
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj10EEERAT__Kc(i26, 33552);
     i2 = i36 + 4 | 0;
     i3 = HEAP32[i2 >> 2] | 0;
     i34 = HEAP32[i36 + 8 >> 2] | 0;
     i4 = i34;
     if (i3 >>> 0 < i34 >>> 0) {
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i3, i26);
      HEAP32[i2 >> 2] = (HEAP32[i2 >> 2] | 0) + 24;
     } else {
      i2 = HEAP32[i36 >> 2] | 0;
      i34 = i3 - i2 | 0;
      i5 = (i34 | 0) / 24 | 0;
      i3 = i5 + 1 | 0;
      if ((i34 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i36);
      i2 = (i4 - i2 | 0) / 24 | 0;
      if (i2 >>> 0 < 1073741823) {
       i2 = i2 << 1;
       i2 = i2 >>> 0 < i3 >>> 0 ? i3 : i2;
      } else i2 = 2147483647;
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_(i35, i2, i5, i36 + 12 | 0);
      i34 = i35 + 8 | 0;
      i33 = HEAP32[i34 >> 2] | 0;
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i33, i26);
      HEAP32[i34 >> 2] = i33 + 24;
      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i36, i35);
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev(i35);
     }
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i26);
     i1 = i1 + 2 | 0;
     break L1;
    }
   case 104:
    {
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj10EEERAT__Kc(i27, 33562);
     i2 = i36 + 4 | 0;
     i3 = HEAP32[i2 >> 2] | 0;
     i34 = HEAP32[i36 + 8 >> 2] | 0;
     i4 = i34;
     if (i3 >>> 0 < i34 >>> 0) {
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i3, i27);
      HEAP32[i2 >> 2] = (HEAP32[i2 >> 2] | 0) + 24;
     } else {
      i2 = HEAP32[i36 >> 2] | 0;
      i34 = i3 - i2 | 0;
      i5 = (i34 | 0) / 24 | 0;
      i3 = i5 + 1 | 0;
      if ((i34 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i36);
      i2 = (i4 - i2 | 0) / 24 | 0;
      if (i2 >>> 0 < 1073741823) {
       i2 = i2 << 1;
       i2 = i2 >>> 0 < i3 >>> 0 ? i3 : i2;
      } else i2 = 2147483647;
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_(i35, i2, i5, i36 + 12 | 0);
      i34 = i35 + 8 | 0;
      i33 = HEAP32[i34 >> 2] | 0;
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i33, i27);
      HEAP32[i34 >> 2] = i33 + 24;
      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i36, i35);
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev(i35);
     }
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i27);
     i1 = i1 + 2 | 0;
     break L1;
    }
   case 105:
    {
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj9EEERAT__Kc(i28, 33572);
     i2 = i36 + 4 | 0;
     i3 = HEAP32[i2 >> 2] | 0;
     i34 = HEAP32[i36 + 8 >> 2] | 0;
     i4 = i34;
     if (i3 >>> 0 < i34 >>> 0) {
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i3, i28);
      HEAP32[i2 >> 2] = (HEAP32[i2 >> 2] | 0) + 24;
     } else {
      i2 = HEAP32[i36 >> 2] | 0;
      i34 = i3 - i2 | 0;
      i5 = (i34 | 0) / 24 | 0;
      i3 = i5 + 1 | 0;
      if ((i34 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i36);
      i2 = (i4 - i2 | 0) / 24 | 0;
      if (i2 >>> 0 < 1073741823) {
       i2 = i2 << 1;
       i2 = i2 >>> 0 < i3 >>> 0 ? i3 : i2;
      } else i2 = 2147483647;
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_(i35, i2, i5, i36 + 12 | 0);
      i34 = i35 + 8 | 0;
      i33 = HEAP32[i34 >> 2] | 0;
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i33, i28);
      HEAP32[i34 >> 2] = i33 + 24;
      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i36, i35);
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev(i35);
     }
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i28);
     i1 = i1 + 2 | 0;
     break L1;
    }
   case 115:
    {
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj9EEERAT__Kc(i29, 33581);
     i2 = i36 + 4 | 0;
     i3 = HEAP32[i2 >> 2] | 0;
     i34 = HEAP32[i36 + 8 >> 2] | 0;
     i4 = i34;
     if (i3 >>> 0 < i34 >>> 0) {
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i3, i29);
      HEAP32[i2 >> 2] = (HEAP32[i2 >> 2] | 0) + 24;
     } else {
      i2 = HEAP32[i36 >> 2] | 0;
      i34 = i3 - i2 | 0;
      i5 = (i34 | 0) / 24 | 0;
      i3 = i5 + 1 | 0;
      if ((i34 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i36);
      i2 = (i4 - i2 | 0) / 24 | 0;
      if (i2 >>> 0 < 1073741823) {
       i2 = i2 << 1;
       i2 = i2 >>> 0 < i3 >>> 0 ? i3 : i2;
      } else i2 = 2147483647;
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_(i35, i2, i5, i36 + 12 | 0);
      i34 = i35 + 8 | 0;
      i33 = HEAP32[i34 >> 2] | 0;
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i33, i29);
      HEAP32[i34 >> 2] = i33 + 24;
      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i36, i35);
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev(i35);
     }
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i29);
     i1 = i1 + 2 | 0;
     break L1;
    }
   case 97:
    {
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj5EEERAT__Kc(i30, 33590);
     i2 = i36 + 4 | 0;
     i3 = HEAP32[i2 >> 2] | 0;
     i34 = HEAP32[i36 + 8 >> 2] | 0;
     i4 = i34;
     if (i3 >>> 0 < i34 >>> 0) {
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i3, i30);
      HEAP32[i2 >> 2] = (HEAP32[i2 >> 2] | 0) + 24;
     } else {
      i2 = HEAP32[i36 >> 2] | 0;
      i34 = i3 - i2 | 0;
      i5 = (i34 | 0) / 24 | 0;
      i3 = i5 + 1 | 0;
      if ((i34 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i36);
      i2 = (i4 - i2 | 0) / 24 | 0;
      if (i2 >>> 0 < 1073741823) {
       i2 = i2 << 1;
       i2 = i2 >>> 0 < i3 >>> 0 ? i3 : i2;
      } else i2 = 2147483647;
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_(i35, i2, i5, i36 + 12 | 0);
      i34 = i35 + 8 | 0;
      i33 = HEAP32[i34 >> 2] | 0;
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i33, i30);
      HEAP32[i34 >> 2] = i33 + 24;
      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i36, i35);
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev(i35);
     }
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i30);
     i1 = i1 + 2 | 0;
     break L1;
    }
   case 110:
    {
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj15EEERAT__Kc(i31, 33595);
     i2 = i36 + 4 | 0;
     i3 = HEAP32[i2 >> 2] | 0;
     i34 = HEAP32[i36 + 8 >> 2] | 0;
     i4 = i34;
     if (i3 >>> 0 < i34 >>> 0) {
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i3, i31);
      HEAP32[i2 >> 2] = (HEAP32[i2 >> 2] | 0) + 24;
     } else {
      i2 = HEAP32[i36 >> 2] | 0;
      i34 = i3 - i2 | 0;
      i5 = (i34 | 0) / 24 | 0;
      i3 = i5 + 1 | 0;
      if ((i34 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i36);
      i2 = (i4 - i2 | 0) / 24 | 0;
      if (i2 >>> 0 < 1073741823) {
       i2 = i2 << 1;
       i2 = i2 >>> 0 < i3 >>> 0 ? i3 : i2;
      } else i2 = 2147483647;
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_(i35, i2, i5, i36 + 12 | 0);
      i34 = i35 + 8 | 0;
      i33 = HEAP32[i34 >> 2] | 0;
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i33, i31);
      HEAP32[i34 >> 2] = i33 + 24;
      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i36, i35);
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev(i35);
     }
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i31);
     i1 = i1 + 2 | 0;
     break L1;
    }
   default:
    break L1;
   }
  }
 default:
  break L1;
 } while (0); while (0);
 STACKTOP = i37;
 return i1 | 0;
}

function __ZN10__cxxabiv112_GLOBAL__N_110parse_nameINS0_2DbEEEPKcS4_S4_RT_(i71, i67, i68) {
 i71 = i71 | 0;
 i67 = i67 | 0;
 i68 = i68 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, i18 = 0, i19 = 0, i20 = 0, i21 = 0, i22 = 0, i23 = 0, i24 = 0, i25 = 0, i26 = 0, i27 = 0, i28 = 0, i29 = 0, i30 = 0, i31 = 0, i32 = 0, i33 = 0, i34 = 0, i35 = 0, i36 = 0, i37 = 0, i38 = 0, i39 = 0, i40 = 0, i41 = 0, i42 = 0, i43 = 0, i44 = 0, i45 = 0, i46 = 0, i47 = 0, i48 = 0, i49 = 0, i50 = 0, i51 = 0, i52 = 0, i53 = 0, i54 = 0, i55 = 0, i56 = 0, i57 = 0, i58 = 0, i59 = 0, i60 = 0, i61 = 0, i62 = 0, i63 = 0, i64 = 0, i65 = 0, i66 = 0, i69 = 0, i70 = 0, i72 = 0;
 i72 = STACKTOP;
 STACKTOP = STACKTOP + 208 | 0;
 i70 = i72 + 188 | 0;
 i66 = i72 + 184 | 0;
 i64 = i72 + 172 | 0;
 i50 = i72 + 160 | 0;
 i51 = i72 + 144 | 0;
 i56 = i72 + 140 | 0;
 i57 = i72 + 128 | 0;
 i58 = i72 + 112 | 0;
 i59 = i72 + 108 | 0;
 i60 = i72 + 96 | 0;
 i61 = i72 + 80 | 0;
 i62 = i72 + 56 | 0;
 i63 = i72 + 40 | 0;
 i52 = i72 + 36 | 0;
 i53 = i72 + 24 | 0;
 i54 = i72 + 8 | 0;
 i55 = i72;
 i8 = i72 + 64 | 0;
 i5 = i72 + 60 | 0;
 i7 = i67;
 L1 : do if ((i7 - i71 | 0) > 1) {
  i69 = (HEAP8[i71 >> 0] | 0) == 76 ? i71 + 1 | 0 : i71;
  i1 = HEAP8[i69 >> 0] | 0;
  switch (i1 << 24 >> 24 | 0) {
  case 78:
   {
    L46 : do if ((i69 | 0) != (i67 | 0)) if (i1 << 24 >> 24 == 78) {
     i1 = __ZN10__cxxabiv112_GLOBAL__N_119parse_cv_qualifiersEPKcS2_Rj(i69 + 1 | 0, i67, i66) | 0;
     L49 : do if ((i1 | 0) != (i67 | 0)) {
      i3 = i68 + 52 | 0;
      HEAP32[i3 >> 2] = 0;
      switch (HEAP8[i1 >> 0] | 0) {
      case 82:
       {
        HEAP32[i3 >> 2] = 1;
        i1 = i1 + 1 | 0;
        break;
       }
      case 79:
       {
        HEAP32[i3 >> 2] = 2;
        i1 = i1 + 1 | 0;
        break;
       }
      default:
       {}
      }
      i49 = i68 + 4 | 0;
      i4 = HEAP32[i49 >> 2] | 0;
      i48 = HEAP32[i68 + 8 >> 2] | 0;
      i3 = i48;
      if (i4 >>> 0 < i48 >>> 0) {
       HEAP32[i4 >> 2] = 0;
       HEAP32[i4 + 4 >> 2] = 0;
       HEAP32[i4 + 8 >> 2] = 0;
       HEAP32[i4 + 12 >> 2] = 0;
       HEAP32[i4 + 16 >> 2] = 0;
       HEAP32[i4 + 20 >> 2] = 0;
       i3 = 0;
       while (1) {
        if ((i3 | 0) == 3) break;
        HEAP32[i4 + (i3 << 2) >> 2] = 0;
        i3 = i3 + 1 | 0;
       }
       i3 = i4 + 12 | 0;
       i4 = 0;
       while (1) {
        if ((i4 | 0) == 3) break;
        HEAP32[i3 + (i4 << 2) >> 2] = 0;
        i4 = i4 + 1 | 0;
       }
       HEAP32[i49 >> 2] = (HEAP32[i49 >> 2] | 0) + 24;
      } else {
       i5 = HEAP32[i68 >> 2] | 0;
       i48 = i4 - i5 | 0;
       i6 = (i48 | 0) / 24 | 0;
       i4 = i6 + 1 | 0;
       if ((i48 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i68);
       i3 = (i3 - i5 | 0) / 24 | 0;
       if (i3 >>> 0 < 1073741823) {
        i3 = i3 << 1;
        i3 = i3 >>> 0 < i4 >>> 0 ? i4 : i3;
       } else i3 = 2147483647;
       __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_(i70, i3, i6, i68 + 12 | 0);
       i5 = i70 + 8 | 0;
       i6 = HEAP32[i5 >> 2] | 0;
       HEAP32[i6 >> 2] = 0;
       HEAP32[i6 + 4 >> 2] = 0;
       HEAP32[i6 + 8 >> 2] = 0;
       HEAP32[i6 + 12 >> 2] = 0;
       HEAP32[i6 + 16 >> 2] = 0;
       HEAP32[i6 + 20 >> 2] = 0;
       i3 = 0;
       while (1) {
        if ((i3 | 0) == 3) break;
        HEAP32[i6 + (i3 << 2) >> 2] = 0;
        i3 = i3 + 1 | 0;
       }
       i3 = i6 + 12 | 0;
       i4 = 0;
       while (1) {
        if ((i4 | 0) == 3) break;
        HEAP32[i3 + (i4 << 2) >> 2] = 0;
        i4 = i4 + 1 | 0;
       }
       HEAP32[i5 >> 2] = i6 + 24;
       __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i68, i70);
       __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev(i70);
      }
      if (((i7 - i1 | 0) > 1 ? (HEAP8[i1 >> 0] | 0) == 83 : 0) ? (HEAP8[i1 + 1 >> 0] | 0) == 116 : 0) {
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6assignEPKcj((HEAP32[i49 >> 2] | 0) + -24 | 0, 34908, 3);
       i1 = i1 + 2 | 0;
      }
      if ((i1 | 0) == (i67 | 0)) {
       i2 = HEAP32[i49 >> 2] | 0;
       i1 = i2 + -24 | 0;
       while (1) {
        if ((i2 | 0) == (i1 | 0)) break L49;
        i70 = i2 + -24 | 0;
        HEAP32[i49 >> 2] = i70;
        __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i70);
        i2 = HEAP32[i49 >> 2] | 0;
       }
      }
      i29 = i64 + 8 | 0;
      i30 = i64 + 1 | 0;
      i31 = i64 + 4 | 0;
      i32 = i68 + 12 | 0;
      i33 = i68 + 16 | 0;
      i48 = i68 + 20 | 0;
      i34 = i68 + 24 | 0;
      i35 = i63 + 12 | 0;
      i36 = i63 + 4 | 0;
      i37 = i63 + 8 | 0;
      i38 = i68 + 28 | 0;
      i39 = i70 + 8 | 0;
      i40 = i54 + 12 | 0;
      i41 = i54 + 4 | 0;
      i42 = i54 + 8 | 0;
      i43 = i70 + 8 | 0;
      i44 = i53 + 8 | 0;
      i45 = i53 + 1 | 0;
      i46 = i53 + 4 | 0;
      i47 = i50 + 8 | 0;
      i9 = i50 + 1 | 0;
      i10 = i50 + 4 | 0;
      i11 = i51 + 12 | 0;
      i12 = i51 + 4 | 0;
      i13 = i51 + 8 | 0;
      i14 = i70 + 8 | 0;
      i15 = i58 + 12 | 0;
      i16 = i58 + 4 | 0;
      i17 = i58 + 8 | 0;
      i18 = i70 + 8 | 0;
      i19 = i57 + 8 | 0;
      i20 = i57 + 1 | 0;
      i21 = i57 + 4 | 0;
      i22 = i61 + 12 | 0;
      i23 = i61 + 4 | 0;
      i24 = i61 + 8 | 0;
      i25 = i70 + 8 | 0;
      i26 = i60 + 8 | 0;
      i27 = i60 + 1 | 0;
      i28 = i60 + 4 | 0;
      i8 = 0;
      L92 : while (1) {
       L94 : while (1) {
        i3 = HEAP8[i1 >> 0] | 0;
        if (i3 << 24 >> 24 == 69) {
         i65 = 129;
         break L92;
        }
        switch (i3 << 24 >> 24 | 0) {
        case 83:
         {
          i3 = i1;
          i65 = 39;
          break L94;
         }
        case 84:
         {
          i3 = i1;
          i65 = 59;
          break L94;
         }
        case 68:
         {
          i3 = i1;
          i65 = 77;
          break L94;
         }
        case 73:
         break;
        case 76:
         {
          i1 = i1 + 1 | 0;
          if ((i1 | 0) == (i67 | 0)) break L49; else continue L94;
         }
        default:
         {
          i3 = i1;
          break L94;
         }
        }
        i7 = __ZN10__cxxabiv112_GLOBAL__N_119parse_template_argsINS0_2DbEEEPKcS4_S4_RT_(i1, i67, i68) | 0;
        if ((i7 | 0) == (i1 | 0) | (i7 | 0) == (i67 | 0)) break L49;
        __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv(i64, (HEAP32[i49 >> 2] | 0) + -24 | 0);
        i1 = HEAP32[i49 >> 2] | 0;
        i3 = i1 + -24 | 0;
        i4 = i1;
        while (1) {
         if ((i4 | 0) == (i3 | 0)) break;
         i6 = i4 + -24 | 0;
         HEAP32[i49 >> 2] = i6;
         __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i6);
         i4 = HEAP32[i49 >> 2] | 0;
        }
        i6 = HEAP8[i64 >> 0] | 0;
        i3 = (i6 & 1) == 0;
        __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj(i1 + -48 | 0, i3 ? i30 : HEAP32[i29 >> 2] | 0, i3 ? (i6 & 255) >>> 1 : HEAP32[i31 >> 2] | 0) | 0;
        i1 = (HEAP32[i49 >> 2] | 0) + -24 | 0;
        HEAP32[i52 >> 2] = HEAP32[i32 >> 2];
        __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEC2EjRKS3_RKS5_(i63, i1, i52);
        i1 = HEAP32[i48 >> 2] | 0;
        i6 = HEAP32[i34 >> 2] | 0;
        i3 = i6;
        if (i1 >>> 0 < i6 >>> 0) {
         HEAP32[i1 + 12 >> 2] = HEAP32[i35 >> 2];
         HEAP32[i1 >> 2] = HEAP32[i63 >> 2];
         HEAP32[i1 + 4 >> 2] = HEAP32[i36 >> 2];
         HEAP32[i1 + 8 >> 2] = HEAP32[i37 >> 2];
         HEAP32[i37 >> 2] = 0;
         HEAP32[i36 >> 2] = 0;
         HEAP32[i63 >> 2] = 0;
         HEAP32[i48 >> 2] = (HEAP32[i48 >> 2] | 0) + 16;
        } else {
         i4 = HEAP32[i33 >> 2] | 0;
         i1 = i1 - i4 | 0;
         i6 = i1 >> 4;
         i5 = i6 + 1 | 0;
         if ((i1 | 0) < -16) {
          i65 = 104;
          break L92;
         }
         i1 = i3 - i4 | 0;
         if (i1 >> 4 >>> 0 < 1073741823) {
          i1 = i1 >> 3;
          i1 = i1 >>> 0 < i5 >>> 0 ? i5 : i1;
         } else i1 = 2147483647;
         __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEEC2EjjS9_(i70, i1, i6, i38);
         i6 = HEAP32[i39 >> 2] | 0;
         HEAP32[i6 + 12 >> 2] = HEAP32[i35 >> 2];
         HEAP32[i6 >> 2] = HEAP32[i63 >> 2];
         HEAP32[i6 + 4 >> 2] = HEAP32[i36 >> 2];
         HEAP32[i6 + 8 >> 2] = HEAP32[i37 >> 2];
         HEAP32[i37 >> 2] = 0;
         HEAP32[i36 >> 2] = 0;
         HEAP32[i63 >> 2] = 0;
         HEAP32[i39 >> 2] = i6 + 16;
         __ZNSt3__16vectorINS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS7_EE(i33, i70);
         __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEED2Ev(i70);
        }
        __ZNSt3__113__vector_baseIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEED2Ev(i63);
        __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i64);
        i1 = i7;
       }
       L113 : do if ((i65 | 0) == 39) {
        i65 = 0;
        i8 = i3 + 1 | 0;
        if ((i8 | 0) != (i67 | 0) ? (HEAP8[i8 >> 0] | 0) == 116 : 0) break;
        i1 = __ZN10__cxxabiv112_GLOBAL__N_118parse_substitutionINS0_2DbEEEPKcS4_S4_RT_(i3, i67, i68) | 0;
        if ((i1 | 0) == (i3 | 0) | (i1 | 0) == (i67 | 0)) break L49;
        __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv(i64, (HEAP32[i49 >> 2] | 0) + -24 | 0);
        i5 = HEAP32[i49 >> 2] | 0;
        i3 = i5 + -24 | 0;
        i4 = i5;
        while (1) {
         if ((i4 | 0) == (i3 | 0)) break;
         i8 = i4 + -24 | 0;
         HEAP32[i49 >> 2] = i8;
         __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i8);
         i4 = HEAP32[i49 >> 2] | 0;
        }
        i4 = i5 + -48 | 0;
        i3 = HEAP8[i4 >> 0] | 0;
        if (!(i3 & 1)) i3 = (i3 & 255) >>> 1; else i3 = HEAP32[i5 + -44 >> 2] | 0;
        if (!i3) __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEaSERKS7_(i4, i64); else {
         __ZNSt3__1plIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEENS_12basic_stringIT_T0_T1_EEPKS8_RKSB_(i50, 33713, i64);
         i3 = HEAP8[i50 >> 0] | 0;
         i8 = (i3 & 1) == 0;
         __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj(i4, i8 ? i9 : HEAP32[i47 >> 2] | 0, i8 ? (i3 & 255) >>> 1 : HEAP32[i10 >> 2] | 0) | 0;
         __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i50);
         i3 = (HEAP32[i49 >> 2] | 0) + -24 | 0;
         HEAP32[i56 >> 2] = HEAP32[i32 >> 2];
         __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEC2EjRKS3_RKS5_(i51, i3, i56);
         i3 = HEAP32[i48 >> 2] | 0;
         i8 = HEAP32[i34 >> 2] | 0;
         i4 = i8;
         if (i3 >>> 0 < i8 >>> 0) {
          HEAP32[i3 + 12 >> 2] = HEAP32[i11 >> 2];
          HEAP32[i3 >> 2] = HEAP32[i51 >> 2];
          HEAP32[i3 + 4 >> 2] = HEAP32[i12 >> 2];
          HEAP32[i3 + 8 >> 2] = HEAP32[i13 >> 2];
          HEAP32[i13 >> 2] = 0;
          HEAP32[i12 >> 2] = 0;
          HEAP32[i51 >> 2] = 0;
          HEAP32[i48 >> 2] = (HEAP32[i48 >> 2] | 0) + 16;
         } else {
          i5 = HEAP32[i33 >> 2] | 0;
          i8 = i3 - i5 | 0;
          i7 = i8 >> 4;
          i6 = i7 + 1 | 0;
          if ((i8 | 0) < -16) {
           i65 = 52;
           break L92;
          }
          i3 = i4 - i5 | 0;
          if (i3 >> 4 >>> 0 < 1073741823) {
           i3 = i3 >> 3;
           i3 = i3 >>> 0 < i6 >>> 0 ? i6 : i3;
          } else i3 = 2147483647;
          __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEEC2EjjS9_(i70, i3, i7, i38);
          i8 = HEAP32[i14 >> 2] | 0;
          HEAP32[i8 + 12 >> 2] = HEAP32[i11 >> 2];
          HEAP32[i8 >> 2] = HEAP32[i51 >> 2];
          HEAP32[i8 + 4 >> 2] = HEAP32[i12 >> 2];
          HEAP32[i8 + 8 >> 2] = HEAP32[i13 >> 2];
          HEAP32[i13 >> 2] = 0;
          HEAP32[i12 >> 2] = 0;
          HEAP32[i51 >> 2] = 0;
          HEAP32[i14 >> 2] = i8 + 16;
          __ZNSt3__16vectorINS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS7_EE(i33, i70);
          __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEED2Ev(i70);
         }
         __ZNSt3__113__vector_baseIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEED2Ev(i51);
        }
        __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i64);
        i8 = 1;
        continue L92;
       } else if ((i65 | 0) == 59) {
        i65 = 0;
        i1 = __ZN10__cxxabiv112_GLOBAL__N_120parse_template_paramINS0_2DbEEEPKcS4_S4_RT_(i3, i67, i68) | 0;
        if ((i1 | 0) == (i3 | 0) | (i1 | 0) == (i67 | 0)) break L49;
        __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv(i64, (HEAP32[i49 >> 2] | 0) + -24 | 0);
        i5 = HEAP32[i49 >> 2] | 0;
        i3 = i5 + -24 | 0;
        i4 = i5;
        while (1) {
         if ((i4 | 0) == (i3 | 0)) break;
         i8 = i4 + -24 | 0;
         HEAP32[i49 >> 2] = i8;
         __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i8);
         i4 = HEAP32[i49 >> 2] | 0;
        }
        i4 = i5 + -48 | 0;
        i3 = HEAP8[i4 >> 0] | 0;
        if (!(i3 & 1)) i3 = (i3 & 255) >>> 1; else i3 = HEAP32[i5 + -44 >> 2] | 0;
        if (!i3) __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEaSERKS7_(i4, i64); else {
         __ZNSt3__1plIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEENS_12basic_stringIT_T0_T1_EEPKS8_RKSB_(i57, 33713, i64);
         i8 = HEAP8[i57 >> 0] | 0;
         i7 = (i8 & 1) == 0;
         __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj(i4, i7 ? i20 : HEAP32[i19 >> 2] | 0, i7 ? (i8 & 255) >>> 1 : HEAP32[i21 >> 2] | 0) | 0;
         __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i57);
        }
        i3 = (HEAP32[i49 >> 2] | 0) + -24 | 0;
        HEAP32[i59 >> 2] = HEAP32[i32 >> 2];
        __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEC2EjRKS3_RKS5_(i58, i3, i59);
        i3 = HEAP32[i48 >> 2] | 0;
        i8 = HEAP32[i34 >> 2] | 0;
        i4 = i8;
        if (i3 >>> 0 < i8 >>> 0) {
         HEAP32[i3 + 12 >> 2] = HEAP32[i15 >> 2];
         HEAP32[i3 >> 2] = HEAP32[i58 >> 2];
         HEAP32[i3 + 4 >> 2] = HEAP32[i16 >> 2];
         HEAP32[i3 + 8 >> 2] = HEAP32[i17 >> 2];
         HEAP32[i17 >> 2] = 0;
         HEAP32[i16 >> 2] = 0;
         HEAP32[i58 >> 2] = 0;
         HEAP32[i48 >> 2] = (HEAP32[i48 >> 2] | 0) + 16;
        } else {
         i5 = HEAP32[i33 >> 2] | 0;
         i8 = i3 - i5 | 0;
         i7 = i8 >> 4;
         i6 = i7 + 1 | 0;
         if ((i8 | 0) < -16) {
          i65 = 72;
          break L92;
         }
         i3 = i4 - i5 | 0;
         if (i3 >> 4 >>> 0 < 1073741823) {
          i3 = i3 >> 3;
          i3 = i3 >>> 0 < i6 >>> 0 ? i6 : i3;
         } else i3 = 2147483647;
         __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEEC2EjjS9_(i70, i3, i7, i38);
         i8 = HEAP32[i18 >> 2] | 0;
         HEAP32[i8 + 12 >> 2] = HEAP32[i15 >> 2];
         HEAP32[i8 >> 2] = HEAP32[i58 >> 2];
         HEAP32[i8 + 4 >> 2] = HEAP32[i16 >> 2];
         HEAP32[i8 + 8 >> 2] = HEAP32[i17 >> 2];
         HEAP32[i17 >> 2] = 0;
         HEAP32[i16 >> 2] = 0;
         HEAP32[i58 >> 2] = 0;
         HEAP32[i18 >> 2] = i8 + 16;
         __ZNSt3__16vectorINS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS7_EE(i33, i70);
         __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEED2Ev(i70);
        }
        __ZNSt3__113__vector_baseIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEED2Ev(i58);
        __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i64);
        i8 = 1;
        continue L92;
       } else if ((i65 | 0) == 77) {
        i65 = 0;
        i1 = i3 + 1 | 0;
        if ((i1 | 0) != (i67 | 0)) switch (HEAP8[i1 >> 0] | 0) {
        case 84:
        case 116:
         break;
        default:
         break L113;
        }
        i1 = __ZN10__cxxabiv112_GLOBAL__N_114parse_decltypeINS0_2DbEEEPKcS4_S4_RT_(i3, i67, i68) | 0;
        if ((i1 | 0) == (i3 | 0) | (i1 | 0) == (i67 | 0)) break L49;
        __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv(i64, (HEAP32[i49 >> 2] | 0) + -24 | 0);
        i5 = HEAP32[i49 >> 2] | 0;
        i3 = i5 + -24 | 0;
        i4 = i5;
        while (1) {
         if ((i4 | 0) == (i3 | 0)) break;
         i8 = i4 + -24 | 0;
         HEAP32[i49 >> 2] = i8;
         __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i8);
         i4 = HEAP32[i49 >> 2] | 0;
        }
        i4 = i5 + -48 | 0;
        i3 = HEAP8[i4 >> 0] | 0;
        if (!(i3 & 1)) i3 = (i3 & 255) >>> 1; else i3 = HEAP32[i5 + -44 >> 2] | 0;
        if (!i3) __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEaSERKS7_(i4, i64); else {
         __ZNSt3__1plIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEENS_12basic_stringIT_T0_T1_EEPKS8_RKSB_(i60, 33713, i64);
         i8 = HEAP8[i60 >> 0] | 0;
         i7 = (i8 & 1) == 0;
         __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj(i4, i7 ? i27 : HEAP32[i26 >> 2] | 0, i7 ? (i8 & 255) >>> 1 : HEAP32[i28 >> 2] | 0) | 0;
         __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i60);
        }
        i3 = (HEAP32[i49 >> 2] | 0) + -24 | 0;
        HEAP32[i62 >> 2] = HEAP32[i32 >> 2];
        __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEC2EjRKS3_RKS5_(i61, i3, i62);
        i3 = HEAP32[i48 >> 2] | 0;
        i8 = HEAP32[i34 >> 2] | 0;
        i4 = i8;
        if (i3 >>> 0 < i8 >>> 0) {
         HEAP32[i3 + 12 >> 2] = HEAP32[i22 >> 2];
         HEAP32[i3 >> 2] = HEAP32[i61 >> 2];
         HEAP32[i3 + 4 >> 2] = HEAP32[i23 >> 2];
         HEAP32[i3 + 8 >> 2] = HEAP32[i24 >> 2];
         HEAP32[i24 >> 2] = 0;
         HEAP32[i23 >> 2] = 0;
         HEAP32[i61 >> 2] = 0;
         HEAP32[i48 >> 2] = (HEAP32[i48 >> 2] | 0) + 16;
        } else {
         i5 = HEAP32[i33 >> 2] | 0;
         i8 = i3 - i5 | 0;
         i7 = i8 >> 4;
         i6 = i7 + 1 | 0;
         if ((i8 | 0) < -16) {
          i65 = 92;
          break L92;
         }
         i3 = i4 - i5 | 0;
         if (i3 >> 4 >>> 0 < 1073741823) {
          i3 = i3 >> 3;
          i3 = i3 >>> 0 < i6 >>> 0 ? i6 : i3;
         } else i3 = 2147483647;
         __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEEC2EjjS9_(i70, i3, i7, i38);
         i8 = HEAP32[i25 >> 2] | 0;
         HEAP32[i8 + 12 >> 2] = HEAP32[i22 >> 2];
         HEAP32[i8 >> 2] = HEAP32[i61 >> 2];
         HEAP32[i8 + 4 >> 2] = HEAP32[i23 >> 2];
         HEAP32[i8 + 8 >> 2] = HEAP32[i24 >> 2];
         HEAP32[i24 >> 2] = 0;
         HEAP32[i23 >> 2] = 0;
         HEAP32[i61 >> 2] = 0;
         HEAP32[i25 >> 2] = i8 + 16;
         __ZNSt3__16vectorINS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS7_EE(i33, i70);
         __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEED2Ev(i70);
        }
        __ZNSt3__113__vector_baseIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEED2Ev(i61);
        __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i64);
        i8 = 1;
        continue L92;
       } while (0);
       i1 = __ZN10__cxxabiv112_GLOBAL__N_122parse_unqualified_nameINS0_2DbEEEPKcS4_S4_RT_(i3, i67, i68) | 0;
       if ((i1 | 0) == (i3 | 0) | (i1 | 0) == (i67 | 0)) break L49;
       __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv(i64, (HEAP32[i49 >> 2] | 0) + -24 | 0);
       i5 = HEAP32[i49 >> 2] | 0;
       i3 = i5 + -24 | 0;
       i4 = i5;
       while (1) {
        if ((i4 | 0) == (i3 | 0)) break;
        i8 = i4 + -24 | 0;
        HEAP32[i49 >> 2] = i8;
        __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i8);
        i4 = HEAP32[i49 >> 2] | 0;
       }
       i4 = i5 + -48 | 0;
       i3 = HEAP8[i4 >> 0] | 0;
       if (!(i3 & 1)) i3 = (i3 & 255) >>> 1; else i3 = HEAP32[i5 + -44 >> 2] | 0;
       if (!i3) __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEaSERKS7_(i4, i64); else {
        __ZNSt3__1plIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEENS_12basic_stringIT_T0_T1_EEPKS8_RKSB_(i53, 33713, i64);
        i8 = HEAP8[i53 >> 0] | 0;
        i7 = (i8 & 1) == 0;
        __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj(i4, i7 ? i45 : HEAP32[i44 >> 2] | 0, i7 ? (i8 & 255) >>> 1 : HEAP32[i46 >> 2] | 0) | 0;
        __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i53);
       }
       i3 = (HEAP32[i49 >> 2] | 0) + -24 | 0;
       HEAP32[i55 >> 2] = HEAP32[i32 >> 2];
       __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEC2EjRKS3_RKS5_(i54, i3, i55);
       i3 = HEAP32[i48 >> 2] | 0;
       i8 = HEAP32[i34 >> 2] | 0;
       i4 = i8;
       if (i3 >>> 0 < i8 >>> 0) {
        HEAP32[i3 + 12 >> 2] = HEAP32[i40 >> 2];
        HEAP32[i3 >> 2] = HEAP32[i54 >> 2];
        HEAP32[i3 + 4 >> 2] = HEAP32[i41 >> 2];
        HEAP32[i3 + 8 >> 2] = HEAP32[i42 >> 2];
        HEAP32[i42 >> 2] = 0;
        HEAP32[i41 >> 2] = 0;
        HEAP32[i54 >> 2] = 0;
        HEAP32[i48 >> 2] = (HEAP32[i48 >> 2] | 0) + 16;
       } else {
        i5 = HEAP32[i33 >> 2] | 0;
        i8 = i3 - i5 | 0;
        i7 = i8 >> 4;
        i6 = i7 + 1 | 0;
        if ((i8 | 0) < -16) {
         i65 = 123;
         break;
        }
        i3 = i4 - i5 | 0;
        if (i3 >> 4 >>> 0 < 1073741823) {
         i3 = i3 >> 3;
         i3 = i3 >>> 0 < i6 >>> 0 ? i6 : i3;
        } else i3 = 2147483647;
        __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEEC2EjjS9_(i70, i3, i7, i38);
        i8 = HEAP32[i43 >> 2] | 0;
        HEAP32[i8 + 12 >> 2] = HEAP32[i40 >> 2];
        HEAP32[i8 >> 2] = HEAP32[i54 >> 2];
        HEAP32[i8 + 4 >> 2] = HEAP32[i41 >> 2];
        HEAP32[i8 + 8 >> 2] = HEAP32[i42 >> 2];
        HEAP32[i42 >> 2] = 0;
        HEAP32[i41 >> 2] = 0;
        HEAP32[i54 >> 2] = 0;
        HEAP32[i43 >> 2] = i8 + 16;
        __ZNSt3__16vectorINS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS7_EE(i33, i70);
        __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEED2Ev(i70);
       }
       __ZNSt3__113__vector_baseIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEED2Ev(i54);
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i64);
       i8 = 1;
      }
      if ((i65 | 0) == 52) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i33); else if ((i65 | 0) == 72) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i33); else if ((i65 | 0) == 92) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i33); else if ((i65 | 0) == 104) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i33); else if ((i65 | 0) == 123) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i33); else if ((i65 | 0) == 129) {
       i1 = i1 + 1 | 0;
       HEAP32[i68 + 48 >> 2] = HEAP32[i66 >> 2];
       L214 : do if (i8 ? (i2 = HEAP32[i48 >> 2] | 0, (HEAP32[i68 + 16 >> 2] | 0) != (i2 | 0)) : 0) {
        i3 = i2 + -16 | 0;
        while (1) {
         if ((i2 | 0) == (i3 | 0)) break L214;
         i70 = i2 + -16 | 0;
         HEAP32[i48 >> 2] = i70;
         __ZNSt3__113__vector_baseIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEED2Ev(i70);
         i2 = HEAP32[i48 >> 2] | 0;
        }
       } while (0);
       break L46;
      }
     } while (0);
     i1 = i69;
    } else i1 = i69; else i1 = i67; while (0);
    i1 = (i1 | 0) == (i69 | 0) ? i71 : i1;
    break L1;
   }
  case 90:
   {
    L225 : do if (((i1 << 24 >> 24 == 90 & (i69 | 0) != (i67 | 0) ? (i66 = i69 + 1 | 0, i3 = __ZN10__cxxabiv112_GLOBAL__N_114parse_encodingINS0_2DbEEEPKcS4_S4_RT_(i66, i67, i68) | 0, !((i3 | 0) == (i66 | 0) | (i3 | 0) == (i67 | 0))) : 0) ? (HEAP8[i3 >> 0] | 0) == 69 : 0) ? (i4 = i3 + 1 | 0, (i4 | 0) != (i67 | 0)) : 0) switch (HEAP8[i4 >> 0] | 0) {
    case 115:
     {
      i1 = __ZN10__cxxabiv112_GLOBAL__N_119parse_discriminatorEPKcS2_(i3 + 2 | 0, i67) | 0;
      i2 = HEAP32[i68 + 4 >> 2] | 0;
      if ((HEAP32[i68 >> 2] | 0) == (i2 | 0)) break L225;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc(i2 + -24 | 0, 34912) | 0;
      break L225;
     }
    case 100:
     {
      i1 = i3 + 2 | 0;
      if ((i1 | 0) == (i67 | 0)) {
       i1 = i69;
       break L225;
      }
      i1 = __ZN10__cxxabiv112_GLOBAL__N_112parse_numberEPKcS2_(i1, i67) | 0;
      if ((i1 | 0) == (i67 | 0)) {
       i1 = i69;
       break L225;
      }
      if ((HEAP8[i1 >> 0] | 0) != 95) {
       i1 = i69;
       break L225;
      }
      i66 = i1 + 1 | 0;
      i1 = __ZN10__cxxabiv112_GLOBAL__N_110parse_nameINS0_2DbEEEPKcS4_S4_RT_(i66, i67, i68) | 0;
      i5 = i68 + 4 | 0;
      if ((i1 | 0) == (i66 | 0)) {
       i2 = HEAP32[i5 >> 2] | 0;
       i1 = i2 + -24 | 0;
       while (1) {
        if ((i2 | 0) == (i1 | 0)) {
         i1 = i69;
         break L225;
        }
        i70 = i2 + -24 | 0;
        HEAP32[i5 >> 2] = i70;
        __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i70);
        i2 = HEAP32[i5 >> 2] | 0;
       }
      }
      i2 = HEAP32[i5 >> 2] | 0;
      if (((i2 - (HEAP32[i68 >> 2] | 0) | 0) / 24 | 0) >>> 0 < 2) {
       i1 = i69;
       break L225;
      }
      __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv(i70, i2 + -24 | 0);
      i2 = HEAP32[i5 >> 2] | 0;
      i3 = i2 + -24 | 0;
      i4 = i2;
      while (1) {
       if ((i4 | 0) == (i3 | 0)) break;
       i68 = i4 + -24 | 0;
       HEAP32[i5 >> 2] = i68;
       __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i68);
       i4 = HEAP32[i5 >> 2] | 0;
      }
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc(i2 + -48 | 0, 33713) | 0;
      i68 = HEAP8[i70 >> 0] | 0;
      i67 = (i68 & 1) == 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj((HEAP32[i5 >> 2] | 0) + -24 | 0, i67 ? i70 + 1 | 0 : HEAP32[i70 + 8 >> 2] | 0, i67 ? (i68 & 255) >>> 1 : HEAP32[i70 + 4 >> 2] | 0) | 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i70);
      break L225;
     }
    default:
     {
      i1 = __ZN10__cxxabiv112_GLOBAL__N_110parse_nameINS0_2DbEEEPKcS4_S4_RT_(i4, i67, i68) | 0;
      if ((i1 | 0) == (i4 | 0)) {
       i1 = i68 + 4 | 0;
       i3 = HEAP32[i1 >> 2] | 0;
       i2 = i3 + -24 | 0;
       while (1) {
        if ((i3 | 0) == (i2 | 0)) {
         i1 = i69;
         break L225;
        }
        i70 = i3 + -24 | 0;
        HEAP32[i1 >> 2] = i70;
        __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i70);
        i3 = HEAP32[i1 >> 2] | 0;
       }
      }
      i1 = __ZN10__cxxabiv112_GLOBAL__N_119parse_discriminatorEPKcS2_(i1, i67) | 0;
      i5 = i68 + 4 | 0;
      i2 = HEAP32[i5 >> 2] | 0;
      if (((i2 - (HEAP32[i68 >> 2] | 0) | 0) / 24 | 0) >>> 0 < 2) break L225;
      __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv(i70, i2 + -24 | 0);
      i2 = HEAP32[i5 >> 2] | 0;
      i3 = i2 + -24 | 0;
      i4 = i2;
      while (1) {
       if ((i4 | 0) == (i3 | 0)) break;
       i68 = i4 + -24 | 0;
       HEAP32[i5 >> 2] = i68;
       __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i68);
       i4 = HEAP32[i5 >> 2] | 0;
      }
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc(i2 + -48 | 0, 33713) | 0;
      i68 = HEAP8[i70 >> 0] | 0;
      i67 = (i68 & 1) == 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj((HEAP32[i5 >> 2] | 0) + -24 | 0, i67 ? i70 + 1 | 0 : HEAP32[i70 + 8 >> 2] | 0, i67 ? (i68 & 255) >>> 1 : HEAP32[i70 + 4 >> 2] | 0) | 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i70);
      break L225;
     }
    } else i1 = i69; while (0);
    i1 = (i1 | 0) == (i69 | 0) ? i71 : i1;
    break L1;
   }
  default:
   {
    do if ((i7 - i69 | 0) > 1) {
     if (i1 << 24 >> 24 == 83 ? (HEAP8[i69 + 1 >> 0] | 0) == 116 : 0) {
      i1 = i69 + 2 | 0;
      if ((i1 | 0) == (i67 | 0)) {
       i3 = 0;
       i2 = i67;
      } else {
       i3 = 0;
       i2 = (HEAP8[i1 >> 0] | 0) == 76 ? i69 + 3 | 0 : i1;
      }
     } else {
      i3 = 1;
      i2 = i69;
     }
     i1 = __ZN10__cxxabiv112_GLOBAL__N_122parse_unqualified_nameINS0_2DbEEEPKcS4_S4_RT_(i2, i67, i68) | 0;
     i2 = (i1 | 0) == (i2 | 0);
     if (i3 | i2) i1 = i2 ? i69 : i1; else {
      i2 = HEAP32[i68 + 4 >> 2] | 0;
      if ((HEAP32[i68 >> 2] | 0) == (i2 | 0)) break;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc(i2 + -24 | 0, 0, 34651) | 0;
     }
     if ((i1 | 0) != (i69 | 0)) {
      if ((i1 | 0) == (i67 | 0)) {
       i1 = i67;
       break L1;
      }
      if ((HEAP8[i1 >> 0] | 0) != 73) break L1;
      i7 = i68 + 4 | 0;
      i2 = HEAP32[i7 >> 2] | 0;
      if ((HEAP32[i68 >> 2] | 0) == (i2 | 0)) {
       i1 = i71;
       break L1;
      }
      i6 = i68 + 16 | 0;
      HEAP32[i5 >> 2] = HEAP32[i68 + 12 >> 2];
      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEC2EjRKS3_RKS5_(i8, i2 + -24 | 0, i5);
      i2 = i68 + 20 | 0;
      i3 = HEAP32[i2 >> 2] | 0;
      i69 = HEAP32[i68 + 24 >> 2] | 0;
      i4 = i69;
      if (i3 >>> 0 < i69 >>> 0) {
       HEAP32[i3 + 12 >> 2] = HEAP32[i8 + 12 >> 2];
       HEAP32[i3 >> 2] = HEAP32[i8 >> 2];
       i69 = i8 + 4 | 0;
       HEAP32[i3 + 4 >> 2] = HEAP32[i69 >> 2];
       i66 = i8 + 8 | 0;
       HEAP32[i3 + 8 >> 2] = HEAP32[i66 >> 2];
       HEAP32[i66 >> 2] = 0;
       HEAP32[i69 >> 2] = 0;
       HEAP32[i8 >> 2] = 0;
       HEAP32[i2 >> 2] = (HEAP32[i2 >> 2] | 0) + 16;
      } else {
       i2 = HEAP32[i6 >> 2] | 0;
       i69 = i3 - i2 | 0;
       i5 = i69 >> 4;
       i3 = i5 + 1 | 0;
       if ((i69 | 0) < -16) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i6);
       i2 = i4 - i2 | 0;
       if (i2 >> 4 >>> 0 < 1073741823) {
        i2 = i2 >> 3;
        i2 = i2 >>> 0 < i3 >>> 0 ? i3 : i2;
       } else i2 = 2147483647;
       __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEEC2EjjS9_(i70, i2, i5, i68 + 28 | 0);
       i69 = i70 + 8 | 0;
       i66 = HEAP32[i69 >> 2] | 0;
       HEAP32[i66 + 12 >> 2] = HEAP32[i8 + 12 >> 2];
       HEAP32[i66 >> 2] = HEAP32[i8 >> 2];
       i65 = i8 + 4 | 0;
       HEAP32[i66 + 4 >> 2] = HEAP32[i65 >> 2];
       i64 = i8 + 8 | 0;
       HEAP32[i66 + 8 >> 2] = HEAP32[i64 >> 2];
       HEAP32[i64 >> 2] = 0;
       HEAP32[i65 >> 2] = 0;
       HEAP32[i8 >> 2] = 0;
       HEAP32[i69 >> 2] = i66 + 16;
       __ZNSt3__16vectorINS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS7_EE(i6, i70);
       __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEED2Ev(i70);
      }
      __ZNSt3__113__vector_baseIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEED2Ev(i8);
      i4 = __ZN10__cxxabiv112_GLOBAL__N_119parse_template_argsINS0_2DbEEEPKcS4_S4_RT_(i1, i67, i68) | 0;
      if ((i4 | 0) == (i1 | 0)) {
       i1 = i71;
       break L1;
      }
      i1 = HEAP32[i7 >> 2] | 0;
      if (((i1 - (HEAP32[i68 >> 2] | 0) | 0) / 24 | 0) >>> 0 < 2) {
       i1 = i71;
       break L1;
      }
      __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv(i70, i1 + -24 | 0);
      i1 = HEAP32[i7 >> 2] | 0;
      i2 = i1 + -24 | 0;
      i3 = i1;
      while (1) {
       if ((i3 | 0) == (i2 | 0)) break;
       i71 = i3 + -24 | 0;
       HEAP32[i7 >> 2] = i71;
       __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i71);
       i3 = HEAP32[i7 >> 2] | 0;
      }
      i71 = HEAP8[i70 >> 0] | 0;
      i69 = (i71 & 1) == 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj(i1 + -48 | 0, i69 ? i70 + 1 | 0 : HEAP32[i70 + 8 >> 2] | 0, i69 ? (i71 & 255) >>> 1 : HEAP32[i70 + 4 >> 2] | 0) | 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i70);
      i1 = i4;
      break L1;
     }
    } while (0);
    i2 = __ZN10__cxxabiv112_GLOBAL__N_118parse_substitutionINS0_2DbEEEPKcS4_S4_RT_(i69, i67, i68) | 0;
    if ((i2 | 0) == (i69 | 0) | (i2 | 0) == (i67 | 0)) {
     i1 = i71;
     break L1;
    }
    if ((HEAP8[i2 >> 0] | 0) != 73) {
     i1 = i71;
     break L1;
    }
    i1 = __ZN10__cxxabiv112_GLOBAL__N_119parse_template_argsINS0_2DbEEEPKcS4_S4_RT_(i2, i67, i68) | 0;
    if ((i1 | 0) == (i2 | 0)) {
     i1 = i71;
     break L1;
    }
    i5 = i68 + 4 | 0;
    i2 = HEAP32[i5 >> 2] | 0;
    if (((i2 - (HEAP32[i68 >> 2] | 0) | 0) / 24 | 0) >>> 0 < 2) {
     i1 = i71;
     break L1;
    }
    __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv(i70, i2 + -24 | 0);
    i2 = HEAP32[i5 >> 2] | 0;
    i3 = i2 + -24 | 0;
    i4 = i2;
    while (1) {
     if ((i4 | 0) == (i3 | 0)) break;
     i71 = i4 + -24 | 0;
     HEAP32[i5 >> 2] = i71;
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i71);
     i4 = HEAP32[i5 >> 2] | 0;
    }
    i71 = HEAP8[i70 >> 0] | 0;
    i69 = (i71 & 1) == 0;
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj(i2 + -48 | 0, i69 ? i70 + 1 | 0 : HEAP32[i70 + 8 >> 2] | 0, i69 ? (i71 & 255) >>> 1 : HEAP32[i70 + 4 >> 2] | 0) | 0;
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i70);
    break L1;
   }
  }
 } else i1 = i71; while (0);
 STACKTOP = i72;
 return i1 | 0;
}

function _malloc(i1) {
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, i18 = 0, i19 = 0, i20 = 0, i21 = 0, i22 = 0, i23 = 0, i24 = 0, i25 = 0, i26 = 0, i27 = 0, i28 = 0, i29 = 0, i30 = 0, i31 = 0, i32 = 0, i33 = 0, i34 = 0, i35 = 0, i36 = 0, i37 = 0, i38 = 0, i39 = 0;
 i39 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i14 = i39;
 do if (i1 >>> 0 < 245) {
  i15 = i1 >>> 0 < 11 ? 16 : i1 + 11 & -8;
  i1 = i15 >>> 3;
  i9 = HEAP32[9188] | 0;
  i2 = i9 >>> i1;
  if (i2 & 3 | 0) {
   i2 = (i2 & 1 ^ 1) + i1 | 0;
   i3 = 36792 + (i2 << 1 << 2) | 0;
   i4 = i3 + 8 | 0;
   i5 = HEAP32[i4 >> 2] | 0;
   i6 = i5 + 8 | 0;
   i7 = HEAP32[i6 >> 2] | 0;
   do if ((i3 | 0) != (i7 | 0)) {
    if (i7 >>> 0 < (HEAP32[9192] | 0) >>> 0) _abort();
    i1 = i7 + 12 | 0;
    if ((HEAP32[i1 >> 2] | 0) == (i5 | 0)) {
     HEAP32[i1 >> 2] = i3;
     HEAP32[i4 >> 2] = i7;
     break;
    } else _abort();
   } else HEAP32[9188] = i9 & ~(1 << i2); while (0);
   i38 = i2 << 3;
   HEAP32[i5 + 4 >> 2] = i38 | 3;
   i38 = i5 + i38 + 4 | 0;
   HEAP32[i38 >> 2] = HEAP32[i38 >> 2] | 1;
   i38 = i6;
   STACKTOP = i39;
   return i38 | 0;
  }
  i7 = HEAP32[9190] | 0;
  if (i15 >>> 0 > i7 >>> 0) {
   if (i2 | 0) {
    i3 = 2 << i1;
    i3 = i2 << i1 & (i3 | 0 - i3);
    i3 = (i3 & 0 - i3) + -1 | 0;
    i8 = i3 >>> 12 & 16;
    i3 = i3 >>> i8;
    i5 = i3 >>> 5 & 8;
    i3 = i3 >>> i5;
    i6 = i3 >>> 2 & 4;
    i3 = i3 >>> i6;
    i4 = i3 >>> 1 & 2;
    i3 = i3 >>> i4;
    i2 = i3 >>> 1 & 1;
    i2 = (i5 | i8 | i6 | i4 | i2) + (i3 >>> i2) | 0;
    i3 = 36792 + (i2 << 1 << 2) | 0;
    i4 = i3 + 8 | 0;
    i6 = HEAP32[i4 >> 2] | 0;
    i8 = i6 + 8 | 0;
    i5 = HEAP32[i8 >> 2] | 0;
    do if ((i3 | 0) != (i5 | 0)) {
     if (i5 >>> 0 < (HEAP32[9192] | 0) >>> 0) _abort();
     i1 = i5 + 12 | 0;
     if ((HEAP32[i1 >> 2] | 0) == (i6 | 0)) {
      HEAP32[i1 >> 2] = i3;
      HEAP32[i4 >> 2] = i5;
      i10 = HEAP32[9190] | 0;
      break;
     } else _abort();
    } else {
     HEAP32[9188] = i9 & ~(1 << i2);
     i10 = i7;
    } while (0);
    i7 = (i2 << 3) - i15 | 0;
    HEAP32[i6 + 4 >> 2] = i15 | 3;
    i4 = i6 + i15 | 0;
    HEAP32[i4 + 4 >> 2] = i7 | 1;
    HEAP32[i4 + i7 >> 2] = i7;
    if (i10 | 0) {
     i5 = HEAP32[9193] | 0;
     i2 = i10 >>> 3;
     i3 = 36792 + (i2 << 1 << 2) | 0;
     i1 = HEAP32[9188] | 0;
     i2 = 1 << i2;
     if (i1 & i2) {
      i1 = i3 + 8 | 0;
      i2 = HEAP32[i1 >> 2] | 0;
      if (i2 >>> 0 < (HEAP32[9192] | 0) >>> 0) _abort(); else {
       i11 = i1;
       i12 = i2;
      }
     } else {
      HEAP32[9188] = i1 | i2;
      i11 = i3 + 8 | 0;
      i12 = i3;
     }
     HEAP32[i11 >> 2] = i5;
     HEAP32[i12 + 12 >> 2] = i5;
     HEAP32[i5 + 8 >> 2] = i12;
     HEAP32[i5 + 12 >> 2] = i3;
    }
    HEAP32[9190] = i7;
    HEAP32[9193] = i4;
    i38 = i8;
    STACKTOP = i39;
    return i38 | 0;
   }
   i1 = HEAP32[9189] | 0;
   if (i1) {
    i3 = (i1 & 0 - i1) + -1 | 0;
    i37 = i3 >>> 12 & 16;
    i3 = i3 >>> i37;
    i36 = i3 >>> 5 & 8;
    i3 = i3 >>> i36;
    i38 = i3 >>> 2 & 4;
    i3 = i3 >>> i38;
    i2 = i3 >>> 1 & 2;
    i3 = i3 >>> i2;
    i4 = i3 >>> 1 & 1;
    i4 = HEAP32[37056 + ((i36 | i37 | i38 | i2 | i4) + (i3 >>> i4) << 2) >> 2] | 0;
    i3 = (HEAP32[i4 + 4 >> 2] & -8) - i15 | 0;
    i2 = i4;
    while (1) {
     i1 = HEAP32[i2 + 16 >> 2] | 0;
     if (!i1) {
      i1 = HEAP32[i2 + 20 >> 2] | 0;
      if (!i1) {
       i9 = i4;
       break;
      }
     }
     i2 = (HEAP32[i1 + 4 >> 2] & -8) - i15 | 0;
     i38 = i2 >>> 0 < i3 >>> 0;
     i3 = i38 ? i2 : i3;
     i2 = i1;
     i4 = i38 ? i1 : i4;
    }
    i6 = HEAP32[9192] | 0;
    if (i9 >>> 0 < i6 >>> 0) _abort();
    i8 = i9 + i15 | 0;
    if (i9 >>> 0 >= i8 >>> 0) _abort();
    i7 = HEAP32[i9 + 24 >> 2] | 0;
    i4 = HEAP32[i9 + 12 >> 2] | 0;
    do if ((i4 | 0) == (i9 | 0)) {
     i2 = i9 + 20 | 0;
     i1 = HEAP32[i2 >> 2] | 0;
     if (!i1) {
      i2 = i9 + 16 | 0;
      i1 = HEAP32[i2 >> 2] | 0;
      if (!i1) {
       i13 = 0;
       break;
      }
     }
     while (1) {
      i4 = i1 + 20 | 0;
      i5 = HEAP32[i4 >> 2] | 0;
      if (i5 | 0) {
       i1 = i5;
       i2 = i4;
       continue;
      }
      i4 = i1 + 16 | 0;
      i5 = HEAP32[i4 >> 2] | 0;
      if (!i5) break; else {
       i1 = i5;
       i2 = i4;
      }
     }
     if (i2 >>> 0 < i6 >>> 0) _abort(); else {
      HEAP32[i2 >> 2] = 0;
      i13 = i1;
      break;
     }
    } else {
     i5 = HEAP32[i9 + 8 >> 2] | 0;
     if (i5 >>> 0 < i6 >>> 0) _abort();
     i1 = i5 + 12 | 0;
     if ((HEAP32[i1 >> 2] | 0) != (i9 | 0)) _abort();
     i2 = i4 + 8 | 0;
     if ((HEAP32[i2 >> 2] | 0) == (i9 | 0)) {
      HEAP32[i1 >> 2] = i4;
      HEAP32[i2 >> 2] = i5;
      i13 = i4;
      break;
     } else _abort();
    } while (0);
    do if (i7 | 0) {
     i1 = HEAP32[i9 + 28 >> 2] | 0;
     i2 = 37056 + (i1 << 2) | 0;
     if ((i9 | 0) == (HEAP32[i2 >> 2] | 0)) {
      HEAP32[i2 >> 2] = i13;
      if (!i13) {
       HEAP32[9189] = HEAP32[9189] & ~(1 << i1);
       break;
      }
     } else {
      if (i7 >>> 0 < (HEAP32[9192] | 0) >>> 0) _abort();
      i1 = i7 + 16 | 0;
      if ((HEAP32[i1 >> 2] | 0) == (i9 | 0)) HEAP32[i1 >> 2] = i13; else HEAP32[i7 + 20 >> 2] = i13;
      if (!i13) break;
     }
     i2 = HEAP32[9192] | 0;
     if (i13 >>> 0 < i2 >>> 0) _abort();
     HEAP32[i13 + 24 >> 2] = i7;
     i1 = HEAP32[i9 + 16 >> 2] | 0;
     do if (i1 | 0) if (i1 >>> 0 < i2 >>> 0) _abort(); else {
      HEAP32[i13 + 16 >> 2] = i1;
      HEAP32[i1 + 24 >> 2] = i13;
      break;
     } while (0);
     i1 = HEAP32[i9 + 20 >> 2] | 0;
     if (i1 | 0) if (i1 >>> 0 < (HEAP32[9192] | 0) >>> 0) _abort(); else {
      HEAP32[i13 + 20 >> 2] = i1;
      HEAP32[i1 + 24 >> 2] = i13;
      break;
     }
    } while (0);
    if (i3 >>> 0 < 16) {
     i38 = i3 + i15 | 0;
     HEAP32[i9 + 4 >> 2] = i38 | 3;
     i38 = i9 + i38 + 4 | 0;
     HEAP32[i38 >> 2] = HEAP32[i38 >> 2] | 1;
    } else {
     HEAP32[i9 + 4 >> 2] = i15 | 3;
     HEAP32[i8 + 4 >> 2] = i3 | 1;
     HEAP32[i8 + i3 >> 2] = i3;
     i1 = HEAP32[9190] | 0;
     if (i1 | 0) {
      i5 = HEAP32[9193] | 0;
      i2 = i1 >>> 3;
      i4 = 36792 + (i2 << 1 << 2) | 0;
      i1 = HEAP32[9188] | 0;
      i2 = 1 << i2;
      if (i1 & i2) {
       i1 = i4 + 8 | 0;
       i2 = HEAP32[i1 >> 2] | 0;
       if (i2 >>> 0 < (HEAP32[9192] | 0) >>> 0) _abort(); else {
        i16 = i1;
        i17 = i2;
       }
      } else {
       HEAP32[9188] = i1 | i2;
       i16 = i4 + 8 | 0;
       i17 = i4;
      }
      HEAP32[i16 >> 2] = i5;
      HEAP32[i17 + 12 >> 2] = i5;
      HEAP32[i5 + 8 >> 2] = i17;
      HEAP32[i5 + 12 >> 2] = i4;
     }
     HEAP32[9190] = i3;
     HEAP32[9193] = i8;
    }
    i38 = i9 + 8 | 0;
    STACKTOP = i39;
    return i38 | 0;
   }
  }
 } else if (i1 >>> 0 <= 4294967231) {
  i1 = i1 + 11 | 0;
  i15 = i1 & -8;
  i9 = HEAP32[9189] | 0;
  if (i9) {
   i3 = 0 - i15 | 0;
   i1 = i1 >>> 8;
   if (i1) if (i15 >>> 0 > 16777215) i8 = 31; else {
    i17 = (i1 + 1048320 | 0) >>> 16 & 8;
    i31 = i1 << i17;
    i16 = (i31 + 520192 | 0) >>> 16 & 4;
    i31 = i31 << i16;
    i8 = (i31 + 245760 | 0) >>> 16 & 2;
    i8 = 14 - (i16 | i17 | i8) + (i31 << i8 >>> 15) | 0;
    i8 = i15 >>> (i8 + 7 | 0) & 1 | i8 << 1;
   } else i8 = 0;
   i2 = HEAP32[37056 + (i8 << 2) >> 2] | 0;
   L123 : do if (!i2) {
    i1 = 0;
    i2 = 0;
    i31 = 86;
   } else {
    i5 = i3;
    i1 = 0;
    i6 = i15 << ((i8 | 0) == 31 ? 0 : 25 - (i8 >>> 1) | 0);
    i7 = i2;
    i2 = 0;
    while (1) {
     i4 = HEAP32[i7 + 4 >> 2] & -8;
     i3 = i4 - i15 | 0;
     if (i3 >>> 0 < i5 >>> 0) if ((i4 | 0) == (i15 | 0)) {
      i1 = i7;
      i2 = i7;
      i31 = 90;
      break L123;
     } else i2 = i7; else i3 = i5;
     i4 = HEAP32[i7 + 20 >> 2] | 0;
     i7 = HEAP32[i7 + 16 + (i6 >>> 31 << 2) >> 2] | 0;
     i1 = (i4 | 0) == 0 | (i4 | 0) == (i7 | 0) ? i1 : i4;
     i4 = (i7 | 0) == 0;
     if (i4) {
      i31 = 86;
      break;
     } else {
      i5 = i3;
      i6 = i6 << (i4 & 1 ^ 1);
     }
    }
   } while (0);
   if ((i31 | 0) == 86) {
    if ((i1 | 0) == 0 & (i2 | 0) == 0) {
     i1 = 2 << i8;
     i1 = i9 & (i1 | 0 - i1);
     if (!i1) break;
     i17 = (i1 & 0 - i1) + -1 | 0;
     i12 = i17 >>> 12 & 16;
     i17 = i17 >>> i12;
     i11 = i17 >>> 5 & 8;
     i17 = i17 >>> i11;
     i13 = i17 >>> 2 & 4;
     i17 = i17 >>> i13;
     i16 = i17 >>> 1 & 2;
     i17 = i17 >>> i16;
     i1 = i17 >>> 1 & 1;
     i1 = HEAP32[37056 + ((i11 | i12 | i13 | i16 | i1) + (i17 >>> i1) << 2) >> 2] | 0;
    }
    if (!i1) {
     i8 = i3;
     i9 = i2;
    } else i31 = 90;
   }
   if ((i31 | 0) == 90) while (1) {
    i31 = 0;
    i17 = (HEAP32[i1 + 4 >> 2] & -8) - i15 | 0;
    i4 = i17 >>> 0 < i3 >>> 0;
    i3 = i4 ? i17 : i3;
    i2 = i4 ? i1 : i2;
    i4 = HEAP32[i1 + 16 >> 2] | 0;
    if (i4 | 0) {
     i1 = i4;
     i31 = 90;
     continue;
    }
    i1 = HEAP32[i1 + 20 >> 2] | 0;
    if (!i1) {
     i8 = i3;
     i9 = i2;
     break;
    } else i31 = 90;
   }
   if ((i9 | 0) != 0 ? i8 >>> 0 < ((HEAP32[9190] | 0) - i15 | 0) >>> 0 : 0) {
    i5 = HEAP32[9192] | 0;
    if (i9 >>> 0 < i5 >>> 0) _abort();
    i7 = i9 + i15 | 0;
    if (i9 >>> 0 >= i7 >>> 0) _abort();
    i6 = HEAP32[i9 + 24 >> 2] | 0;
    i3 = HEAP32[i9 + 12 >> 2] | 0;
    do if ((i3 | 0) == (i9 | 0)) {
     i2 = i9 + 20 | 0;
     i1 = HEAP32[i2 >> 2] | 0;
     if (!i1) {
      i2 = i9 + 16 | 0;
      i1 = HEAP32[i2 >> 2] | 0;
      if (!i1) {
       i19 = 0;
       break;
      }
     }
     while (1) {
      i3 = i1 + 20 | 0;
      i4 = HEAP32[i3 >> 2] | 0;
      if (i4 | 0) {
       i1 = i4;
       i2 = i3;
       continue;
      }
      i3 = i1 + 16 | 0;
      i4 = HEAP32[i3 >> 2] | 0;
      if (!i4) break; else {
       i1 = i4;
       i2 = i3;
      }
     }
     if (i2 >>> 0 < i5 >>> 0) _abort(); else {
      HEAP32[i2 >> 2] = 0;
      i19 = i1;
      break;
     }
    } else {
     i4 = HEAP32[i9 + 8 >> 2] | 0;
     if (i4 >>> 0 < i5 >>> 0) _abort();
     i1 = i4 + 12 | 0;
     if ((HEAP32[i1 >> 2] | 0) != (i9 | 0)) _abort();
     i2 = i3 + 8 | 0;
     if ((HEAP32[i2 >> 2] | 0) == (i9 | 0)) {
      HEAP32[i1 >> 2] = i3;
      HEAP32[i2 >> 2] = i4;
      i19 = i3;
      break;
     } else _abort();
    } while (0);
    do if (i6 | 0) {
     i1 = HEAP32[i9 + 28 >> 2] | 0;
     i2 = 37056 + (i1 << 2) | 0;
     if ((i9 | 0) == (HEAP32[i2 >> 2] | 0)) {
      HEAP32[i2 >> 2] = i19;
      if (!i19) {
       HEAP32[9189] = HEAP32[9189] & ~(1 << i1);
       break;
      }
     } else {
      if (i6 >>> 0 < (HEAP32[9192] | 0) >>> 0) _abort();
      i1 = i6 + 16 | 0;
      if ((HEAP32[i1 >> 2] | 0) == (i9 | 0)) HEAP32[i1 >> 2] = i19; else HEAP32[i6 + 20 >> 2] = i19;
      if (!i19) break;
     }
     i2 = HEAP32[9192] | 0;
     if (i19 >>> 0 < i2 >>> 0) _abort();
     HEAP32[i19 + 24 >> 2] = i6;
     i1 = HEAP32[i9 + 16 >> 2] | 0;
     do if (i1 | 0) if (i1 >>> 0 < i2 >>> 0) _abort(); else {
      HEAP32[i19 + 16 >> 2] = i1;
      HEAP32[i1 + 24 >> 2] = i19;
      break;
     } while (0);
     i1 = HEAP32[i9 + 20 >> 2] | 0;
     if (i1 | 0) if (i1 >>> 0 < (HEAP32[9192] | 0) >>> 0) _abort(); else {
      HEAP32[i19 + 20 >> 2] = i1;
      HEAP32[i1 + 24 >> 2] = i19;
      break;
     }
    } while (0);
    do if (i8 >>> 0 >= 16) {
     HEAP32[i9 + 4 >> 2] = i15 | 3;
     HEAP32[i7 + 4 >> 2] = i8 | 1;
     HEAP32[i7 + i8 >> 2] = i8;
     i1 = i8 >>> 3;
     if (i8 >>> 0 < 256) {
      i3 = 36792 + (i1 << 1 << 2) | 0;
      i2 = HEAP32[9188] | 0;
      i1 = 1 << i1;
      if (i2 & i1) {
       i1 = i3 + 8 | 0;
       i2 = HEAP32[i1 >> 2] | 0;
       if (i2 >>> 0 < (HEAP32[9192] | 0) >>> 0) _abort(); else {
        i21 = i1;
        i22 = i2;
       }
      } else {
       HEAP32[9188] = i2 | i1;
       i21 = i3 + 8 | 0;
       i22 = i3;
      }
      HEAP32[i21 >> 2] = i7;
      HEAP32[i22 + 12 >> 2] = i7;
      HEAP32[i7 + 8 >> 2] = i22;
      HEAP32[i7 + 12 >> 2] = i3;
      break;
     }
     i1 = i8 >>> 8;
     if (i1) if (i8 >>> 0 > 16777215) i3 = 31; else {
      i37 = (i1 + 1048320 | 0) >>> 16 & 8;
      i38 = i1 << i37;
      i36 = (i38 + 520192 | 0) >>> 16 & 4;
      i38 = i38 << i36;
      i3 = (i38 + 245760 | 0) >>> 16 & 2;
      i3 = 14 - (i36 | i37 | i3) + (i38 << i3 >>> 15) | 0;
      i3 = i8 >>> (i3 + 7 | 0) & 1 | i3 << 1;
     } else i3 = 0;
     i4 = 37056 + (i3 << 2) | 0;
     HEAP32[i7 + 28 >> 2] = i3;
     i1 = i7 + 16 | 0;
     HEAP32[i1 + 4 >> 2] = 0;
     HEAP32[i1 >> 2] = 0;
     i1 = HEAP32[9189] | 0;
     i2 = 1 << i3;
     if (!(i1 & i2)) {
      HEAP32[9189] = i1 | i2;
      HEAP32[i4 >> 2] = i7;
      HEAP32[i7 + 24 >> 2] = i4;
      HEAP32[i7 + 12 >> 2] = i7;
      HEAP32[i7 + 8 >> 2] = i7;
      break;
     }
     i5 = i8 << ((i3 | 0) == 31 ? 0 : 25 - (i3 >>> 1) | 0);
     i1 = HEAP32[i4 >> 2] | 0;
     while (1) {
      if ((HEAP32[i1 + 4 >> 2] & -8 | 0) == (i8 | 0)) {
       i3 = i1;
       i31 = 148;
       break;
      }
      i2 = i1 + 16 + (i5 >>> 31 << 2) | 0;
      i3 = HEAP32[i2 >> 2] | 0;
      if (!i3) {
       i31 = 145;
       break;
      } else {
       i5 = i5 << 1;
       i1 = i3;
      }
     }
     if ((i31 | 0) == 145) if (i2 >>> 0 < (HEAP32[9192] | 0) >>> 0) _abort(); else {
      HEAP32[i2 >> 2] = i7;
      HEAP32[i7 + 24 >> 2] = i1;
      HEAP32[i7 + 12 >> 2] = i7;
      HEAP32[i7 + 8 >> 2] = i7;
      break;
     } else if ((i31 | 0) == 148) {
      i1 = i3 + 8 | 0;
      i2 = HEAP32[i1 >> 2] | 0;
      i38 = HEAP32[9192] | 0;
      if (i2 >>> 0 >= i38 >>> 0 & i3 >>> 0 >= i38 >>> 0) {
       HEAP32[i2 + 12 >> 2] = i7;
       HEAP32[i1 >> 2] = i7;
       HEAP32[i7 + 8 >> 2] = i2;
       HEAP32[i7 + 12 >> 2] = i3;
       HEAP32[i7 + 24 >> 2] = 0;
       break;
      } else _abort();
     }
    } else {
     i38 = i8 + i15 | 0;
     HEAP32[i9 + 4 >> 2] = i38 | 3;
     i38 = i9 + i38 + 4 | 0;
     HEAP32[i38 >> 2] = HEAP32[i38 >> 2] | 1;
    } while (0);
    i38 = i9 + 8 | 0;
    STACKTOP = i39;
    return i38 | 0;
   }
  }
 } else i15 = -1; while (0);
 i3 = HEAP32[9190] | 0;
 if (i3 >>> 0 >= i15 >>> 0) {
  i1 = i3 - i15 | 0;
  i2 = HEAP32[9193] | 0;
  if (i1 >>> 0 > 15) {
   i38 = i2 + i15 | 0;
   HEAP32[9193] = i38;
   HEAP32[9190] = i1;
   HEAP32[i38 + 4 >> 2] = i1 | 1;
   HEAP32[i38 + i1 >> 2] = i1;
   HEAP32[i2 + 4 >> 2] = i15 | 3;
  } else {
   HEAP32[9190] = 0;
   HEAP32[9193] = 0;
   HEAP32[i2 + 4 >> 2] = i3 | 3;
   i38 = i2 + i3 + 4 | 0;
   HEAP32[i38 >> 2] = HEAP32[i38 >> 2] | 1;
  }
  i38 = i2 + 8 | 0;
  STACKTOP = i39;
  return i38 | 0;
 }
 i1 = HEAP32[9191] | 0;
 if (i1 >>> 0 > i15 >>> 0) {
  i36 = i1 - i15 | 0;
  HEAP32[9191] = i36;
  i38 = HEAP32[9194] | 0;
  i37 = i38 + i15 | 0;
  HEAP32[9194] = i37;
  HEAP32[i37 + 4 >> 2] = i36 | 1;
  HEAP32[i38 + 4 >> 2] = i15 | 3;
  i38 = i38 + 8 | 0;
  STACKTOP = i39;
  return i38 | 0;
 }
 if (!(HEAP32[9306] | 0)) {
  HEAP32[9308] = 4096;
  HEAP32[9307] = 4096;
  HEAP32[9309] = -1;
  HEAP32[9310] = -1;
  HEAP32[9311] = 0;
  HEAP32[9299] = 0;
  i22 = i14 & -16 ^ 1431655768;
  HEAP32[i14 >> 2] = i22;
  HEAP32[9306] = i22;
 }
 i7 = i15 + 48 | 0;
 i6 = HEAP32[9308] | 0;
 i8 = i15 + 47 | 0;
 i5 = i6 + i8 | 0;
 i6 = 0 - i6 | 0;
 i9 = i5 & i6;
 if (i9 >>> 0 <= i15 >>> 0) {
  i38 = 0;
  STACKTOP = i39;
  return i38 | 0;
 }
 i1 = HEAP32[9298] | 0;
 if (i1 | 0 ? (i21 = HEAP32[9296] | 0, i22 = i21 + i9 | 0, i22 >>> 0 <= i21 >>> 0 | i22 >>> 0 > i1 >>> 0) : 0) {
  i38 = 0;
  STACKTOP = i39;
  return i38 | 0;
 }
 L254 : do if (!(HEAP32[9299] & 4)) {
  i1 = HEAP32[9194] | 0;
  L256 : do if (i1) {
   i3 = 37200;
   while (1) {
    i2 = HEAP32[i3 >> 2] | 0;
    if (i2 >>> 0 <= i1 >>> 0 ? (i18 = i3 + 4 | 0, (i2 + (HEAP32[i18 >> 2] | 0) | 0) >>> 0 > i1 >>> 0) : 0) {
     i4 = i3;
     i3 = i18;
     break;
    }
    i3 = HEAP32[i3 + 8 >> 2] | 0;
    if (!i3) {
     i31 = 171;
     break L256;
    }
   }
   i1 = i5 - (HEAP32[9191] | 0) & i6;
   if (i1 >>> 0 < 2147483647) {
    i2 = _sbrk(i1 | 0) | 0;
    if ((i2 | 0) == ((HEAP32[i4 >> 2] | 0) + (HEAP32[i3 >> 2] | 0) | 0)) {
     if ((i2 | 0) != (-1 | 0)) {
      i7 = i2;
      i5 = i1;
      i31 = 191;
      break L254;
     }
    } else i31 = 181;
   }
  } else i31 = 171; while (0);
  do if ((i31 | 0) == 171 ? (i20 = _sbrk(0) | 0, (i20 | 0) != (-1 | 0)) : 0) {
   i1 = i20;
   i2 = HEAP32[9307] | 0;
   i3 = i2 + -1 | 0;
   if (!(i3 & i1)) i1 = i9; else i1 = i9 - i1 + (i3 + i1 & 0 - i2) | 0;
   i2 = HEAP32[9296] | 0;
   i3 = i2 + i1 | 0;
   if (i1 >>> 0 > i15 >>> 0 & i1 >>> 0 < 2147483647) {
    i22 = HEAP32[9298] | 0;
    if (i22 | 0 ? i3 >>> 0 <= i2 >>> 0 | i3 >>> 0 > i22 >>> 0 : 0) break;
    i2 = _sbrk(i1 | 0) | 0;
    if ((i2 | 0) == (i20 | 0)) {
     i7 = i20;
     i5 = i1;
     i31 = 191;
     break L254;
    } else i31 = 181;
   }
  } while (0);
  L276 : do if ((i31 | 0) == 181) {
   i3 = 0 - i1 | 0;
   do if (i7 >>> 0 > i1 >>> 0 & (i1 >>> 0 < 2147483647 & (i2 | 0) != (-1 | 0)) ? (i23 = HEAP32[9308] | 0, i23 = i8 - i1 + i23 & 0 - i23, i23 >>> 0 < 2147483647) : 0) if ((_sbrk(i23 | 0) | 0) == (-1 | 0)) {
    _sbrk(i3 | 0) | 0;
    break L276;
   } else {
    i1 = i23 + i1 | 0;
    break;
   } while (0);
   if ((i2 | 0) != (-1 | 0)) {
    i7 = i2;
    i5 = i1;
    i31 = 191;
    break L254;
   }
  } while (0);
  HEAP32[9299] = HEAP32[9299] | 4;
  i31 = 188;
 } else i31 = 188; while (0);
 if ((((i31 | 0) == 188 ? i9 >>> 0 < 2147483647 : 0) ? (i24 = _sbrk(i9 | 0) | 0, i25 = _sbrk(0) | 0, i24 >>> 0 < i25 >>> 0 & ((i24 | 0) != (-1 | 0) & (i25 | 0) != (-1 | 0))) : 0) ? (i26 = i25 - i24 | 0, i26 >>> 0 > (i15 + 40 | 0) >>> 0) : 0) {
  i7 = i24;
  i5 = i26;
  i31 = 191;
 }
 if ((i31 | 0) == 191) {
  i1 = (HEAP32[9296] | 0) + i5 | 0;
  HEAP32[9296] = i1;
  if (i1 >>> 0 > (HEAP32[9297] | 0) >>> 0) HEAP32[9297] = i1;
  i8 = HEAP32[9194] | 0;
  do if (i8) {
   i4 = 37200;
   do {
    i1 = HEAP32[i4 >> 2] | 0;
    i2 = i4 + 4 | 0;
    i3 = HEAP32[i2 >> 2] | 0;
    if ((i7 | 0) == (i1 + i3 | 0)) {
     i27 = i1;
     i28 = i2;
     i29 = i3;
     i30 = i4;
     i31 = 201;
     break;
    }
    i4 = HEAP32[i4 + 8 >> 2] | 0;
   } while ((i4 | 0) != 0);
   if (((i31 | 0) == 201 ? (HEAP32[i30 + 12 >> 2] & 8 | 0) == 0 : 0) ? i8 >>> 0 < i7 >>> 0 & i8 >>> 0 >= i27 >>> 0 : 0) {
    HEAP32[i28 >> 2] = i29 + i5;
    i38 = i8 + 8 | 0;
    i38 = (i38 & 7 | 0) == 0 ? 0 : 0 - i38 & 7;
    i37 = i8 + i38 | 0;
    i38 = i5 - i38 + (HEAP32[9191] | 0) | 0;
    HEAP32[9194] = i37;
    HEAP32[9191] = i38;
    HEAP32[i37 + 4 >> 2] = i38 | 1;
    HEAP32[i37 + i38 + 4 >> 2] = 40;
    HEAP32[9195] = HEAP32[9310];
    break;
   }
   i1 = HEAP32[9192] | 0;
   if (i7 >>> 0 < i1 >>> 0) {
    HEAP32[9192] = i7;
    i9 = i7;
   } else i9 = i1;
   i3 = i7 + i5 | 0;
   i1 = 37200;
   while (1) {
    if ((HEAP32[i1 >> 2] | 0) == (i3 | 0)) {
     i2 = i1;
     i31 = 209;
     break;
    }
    i1 = HEAP32[i1 + 8 >> 2] | 0;
    if (!i1) {
     i2 = 37200;
     break;
    }
   }
   if ((i31 | 0) == 209) if (!(HEAP32[i1 + 12 >> 2] & 8)) {
    HEAP32[i2 >> 2] = i7;
    i11 = i1 + 4 | 0;
    HEAP32[i11 >> 2] = (HEAP32[i11 >> 2] | 0) + i5;
    i11 = i7 + 8 | 0;
    i11 = i7 + ((i11 & 7 | 0) == 0 ? 0 : 0 - i11 & 7) | 0;
    i1 = i3 + 8 | 0;
    i1 = i3 + ((i1 & 7 | 0) == 0 ? 0 : 0 - i1 & 7) | 0;
    i10 = i11 + i15 | 0;
    i6 = i1 - i11 - i15 | 0;
    HEAP32[i11 + 4 >> 2] = i15 | 3;
    do if ((i1 | 0) != (i8 | 0)) {
     if ((i1 | 0) == (HEAP32[9193] | 0)) {
      i38 = (HEAP32[9190] | 0) + i6 | 0;
      HEAP32[9190] = i38;
      HEAP32[9193] = i10;
      HEAP32[i10 + 4 >> 2] = i38 | 1;
      HEAP32[i10 + i38 >> 2] = i38;
      break;
     }
     i2 = HEAP32[i1 + 4 >> 2] | 0;
     if ((i2 & 3 | 0) == 1) {
      i8 = i2 & -8;
      i5 = i2 >>> 3;
      L328 : do if (i2 >>> 0 >= 256) {
       i7 = HEAP32[i1 + 24 >> 2] | 0;
       i4 = HEAP32[i1 + 12 >> 2] | 0;
       do if ((i4 | 0) == (i1 | 0)) {
        i3 = i1 + 16 | 0;
        i4 = i3 + 4 | 0;
        i2 = HEAP32[i4 >> 2] | 0;
        if (!i2) {
         i2 = HEAP32[i3 >> 2] | 0;
         if (!i2) {
          i36 = 0;
          break;
         }
        } else i3 = i4;
        while (1) {
         i4 = i2 + 20 | 0;
         i5 = HEAP32[i4 >> 2] | 0;
         if (i5 | 0) {
          i2 = i5;
          i3 = i4;
          continue;
         }
         i4 = i2 + 16 | 0;
         i5 = HEAP32[i4 >> 2] | 0;
         if (!i5) break; else {
          i2 = i5;
          i3 = i4;
         }
        }
        if (i3 >>> 0 < i9 >>> 0) _abort(); else {
         HEAP32[i3 >> 2] = 0;
         i36 = i2;
         break;
        }
       } else {
        i5 = HEAP32[i1 + 8 >> 2] | 0;
        if (i5 >>> 0 < i9 >>> 0) _abort();
        i2 = i5 + 12 | 0;
        if ((HEAP32[i2 >> 2] | 0) != (i1 | 0)) _abort();
        i3 = i4 + 8 | 0;
        if ((HEAP32[i3 >> 2] | 0) == (i1 | 0)) {
         HEAP32[i2 >> 2] = i4;
         HEAP32[i3 >> 2] = i5;
         i36 = i4;
         break;
        } else _abort();
       } while (0);
       if (!i7) break;
       i2 = HEAP32[i1 + 28 >> 2] | 0;
       i3 = 37056 + (i2 << 2) | 0;
       do if ((i1 | 0) != (HEAP32[i3 >> 2] | 0)) {
        if (i7 >>> 0 < (HEAP32[9192] | 0) >>> 0) _abort();
        i2 = i7 + 16 | 0;
        if ((HEAP32[i2 >> 2] | 0) == (i1 | 0)) HEAP32[i2 >> 2] = i36; else HEAP32[i7 + 20 >> 2] = i36;
        if (!i36) break L328;
       } else {
        HEAP32[i3 >> 2] = i36;
        if (i36 | 0) break;
        HEAP32[9189] = HEAP32[9189] & ~(1 << i2);
        break L328;
       } while (0);
       i4 = HEAP32[9192] | 0;
       if (i36 >>> 0 < i4 >>> 0) _abort();
       HEAP32[i36 + 24 >> 2] = i7;
       i2 = i1 + 16 | 0;
       i3 = HEAP32[i2 >> 2] | 0;
       do if (i3 | 0) if (i3 >>> 0 < i4 >>> 0) _abort(); else {
        HEAP32[i36 + 16 >> 2] = i3;
        HEAP32[i3 + 24 >> 2] = i36;
        break;
       } while (0);
       i2 = HEAP32[i2 + 4 >> 2] | 0;
       if (!i2) break;
       if (i2 >>> 0 < (HEAP32[9192] | 0) >>> 0) _abort(); else {
        HEAP32[i36 + 20 >> 2] = i2;
        HEAP32[i2 + 24 >> 2] = i36;
        break;
       }
      } else {
       i3 = HEAP32[i1 + 8 >> 2] | 0;
       i4 = HEAP32[i1 + 12 >> 2] | 0;
       i2 = 36792 + (i5 << 1 << 2) | 0;
       do if ((i3 | 0) != (i2 | 0)) {
        if (i3 >>> 0 < i9 >>> 0) _abort();
        if ((HEAP32[i3 + 12 >> 2] | 0) == (i1 | 0)) break;
        _abort();
       } while (0);
       if ((i4 | 0) == (i3 | 0)) {
        HEAP32[9188] = HEAP32[9188] & ~(1 << i5);
        break;
       }
       do if ((i4 | 0) == (i2 | 0)) i33 = i4 + 8 | 0; else {
        if (i4 >>> 0 < i9 >>> 0) _abort();
        i2 = i4 + 8 | 0;
        if ((HEAP32[i2 >> 2] | 0) == (i1 | 0)) {
         i33 = i2;
         break;
        }
        _abort();
       } while (0);
       HEAP32[i3 + 12 >> 2] = i4;
       HEAP32[i33 >> 2] = i3;
      } while (0);
      i1 = i1 + i8 | 0;
      i6 = i8 + i6 | 0;
     }
     i1 = i1 + 4 | 0;
     HEAP32[i1 >> 2] = HEAP32[i1 >> 2] & -2;
     HEAP32[i10 + 4 >> 2] = i6 | 1;
     HEAP32[i10 + i6 >> 2] = i6;
     i1 = i6 >>> 3;
     if (i6 >>> 0 < 256) {
      i3 = 36792 + (i1 << 1 << 2) | 0;
      i2 = HEAP32[9188] | 0;
      i1 = 1 << i1;
      do if (!(i2 & i1)) {
       HEAP32[9188] = i2 | i1;
       i37 = i3 + 8 | 0;
       i38 = i3;
      } else {
       i1 = i3 + 8 | 0;
       i2 = HEAP32[i1 >> 2] | 0;
       if (i2 >>> 0 >= (HEAP32[9192] | 0) >>> 0) {
        i37 = i1;
        i38 = i2;
        break;
       }
       _abort();
      } while (0);
      HEAP32[i37 >> 2] = i10;
      HEAP32[i38 + 12 >> 2] = i10;
      HEAP32[i10 + 8 >> 2] = i38;
      HEAP32[i10 + 12 >> 2] = i3;
      break;
     }
     i1 = i6 >>> 8;
     do if (!i1) i3 = 0; else {
      if (i6 >>> 0 > 16777215) {
       i3 = 31;
       break;
      }
      i37 = (i1 + 1048320 | 0) >>> 16 & 8;
      i38 = i1 << i37;
      i36 = (i38 + 520192 | 0) >>> 16 & 4;
      i38 = i38 << i36;
      i3 = (i38 + 245760 | 0) >>> 16 & 2;
      i3 = 14 - (i36 | i37 | i3) + (i38 << i3 >>> 15) | 0;
      i3 = i6 >>> (i3 + 7 | 0) & 1 | i3 << 1;
     } while (0);
     i4 = 37056 + (i3 << 2) | 0;
     HEAP32[i10 + 28 >> 2] = i3;
     i1 = i10 + 16 | 0;
     HEAP32[i1 + 4 >> 2] = 0;
     HEAP32[i1 >> 2] = 0;
     i1 = HEAP32[9189] | 0;
     i2 = 1 << i3;
     if (!(i1 & i2)) {
      HEAP32[9189] = i1 | i2;
      HEAP32[i4 >> 2] = i10;
      HEAP32[i10 + 24 >> 2] = i4;
      HEAP32[i10 + 12 >> 2] = i10;
      HEAP32[i10 + 8 >> 2] = i10;
      break;
     }
     i5 = i6 << ((i3 | 0) == 31 ? 0 : 25 - (i3 >>> 1) | 0);
     i1 = HEAP32[i4 >> 2] | 0;
     while (1) {
      if ((HEAP32[i1 + 4 >> 2] & -8 | 0) == (i6 | 0)) {
       i3 = i1;
       i31 = 279;
       break;
      }
      i2 = i1 + 16 + (i5 >>> 31 << 2) | 0;
      i3 = HEAP32[i2 >> 2] | 0;
      if (!i3) {
       i31 = 276;
       break;
      } else {
       i5 = i5 << 1;
       i1 = i3;
      }
     }
     if ((i31 | 0) == 276) if (i2 >>> 0 < (HEAP32[9192] | 0) >>> 0) _abort(); else {
      HEAP32[i2 >> 2] = i10;
      HEAP32[i10 + 24 >> 2] = i1;
      HEAP32[i10 + 12 >> 2] = i10;
      HEAP32[i10 + 8 >> 2] = i10;
      break;
     } else if ((i31 | 0) == 279) {
      i1 = i3 + 8 | 0;
      i2 = HEAP32[i1 >> 2] | 0;
      i38 = HEAP32[9192] | 0;
      if (i2 >>> 0 >= i38 >>> 0 & i3 >>> 0 >= i38 >>> 0) {
       HEAP32[i2 + 12 >> 2] = i10;
       HEAP32[i1 >> 2] = i10;
       HEAP32[i10 + 8 >> 2] = i2;
       HEAP32[i10 + 12 >> 2] = i3;
       HEAP32[i10 + 24 >> 2] = 0;
       break;
      } else _abort();
     }
    } else {
     i38 = (HEAP32[9191] | 0) + i6 | 0;
     HEAP32[9191] = i38;
     HEAP32[9194] = i10;
     HEAP32[i10 + 4 >> 2] = i38 | 1;
    } while (0);
    i38 = i11 + 8 | 0;
    STACKTOP = i39;
    return i38 | 0;
   } else i2 = 37200;
   while (1) {
    i1 = HEAP32[i2 >> 2] | 0;
    if (i1 >>> 0 <= i8 >>> 0 ? (i32 = i1 + (HEAP32[i2 + 4 >> 2] | 0) | 0, i32 >>> 0 > i8 >>> 0) : 0) {
     i2 = i32;
     break;
    }
    i2 = HEAP32[i2 + 8 >> 2] | 0;
   }
   i6 = i2 + -47 | 0;
   i3 = i6 + 8 | 0;
   i3 = i6 + ((i3 & 7 | 0) == 0 ? 0 : 0 - i3 & 7) | 0;
   i6 = i8 + 16 | 0;
   i3 = i3 >>> 0 < i6 >>> 0 ? i8 : i3;
   i1 = i3 + 8 | 0;
   i4 = i7 + 8 | 0;
   i4 = (i4 & 7 | 0) == 0 ? 0 : 0 - i4 & 7;
   i38 = i7 + i4 | 0;
   i4 = i5 + -40 - i4 | 0;
   HEAP32[9194] = i38;
   HEAP32[9191] = i4;
   HEAP32[i38 + 4 >> 2] = i4 | 1;
   HEAP32[i38 + i4 + 4 >> 2] = 40;
   HEAP32[9195] = HEAP32[9310];
   i4 = i3 + 4 | 0;
   HEAP32[i4 >> 2] = 27;
   HEAP32[i1 >> 2] = HEAP32[9300];
   HEAP32[i1 + 4 >> 2] = HEAP32[9301];
   HEAP32[i1 + 8 >> 2] = HEAP32[9302];
   HEAP32[i1 + 12 >> 2] = HEAP32[9303];
   HEAP32[9300] = i7;
   HEAP32[9301] = i5;
   HEAP32[9303] = 0;
   HEAP32[9302] = i1;
   i1 = i3 + 24 | 0;
   do {
    i1 = i1 + 4 | 0;
    HEAP32[i1 >> 2] = 7;
   } while ((i1 + 4 | 0) >>> 0 < i2 >>> 0);
   if ((i3 | 0) != (i8 | 0)) {
    i7 = i3 - i8 | 0;
    HEAP32[i4 >> 2] = HEAP32[i4 >> 2] & -2;
    HEAP32[i8 + 4 >> 2] = i7 | 1;
    HEAP32[i3 >> 2] = i7;
    i1 = i7 >>> 3;
    if (i7 >>> 0 < 256) {
     i3 = 36792 + (i1 << 1 << 2) | 0;
     i2 = HEAP32[9188] | 0;
     i1 = 1 << i1;
     if (i2 & i1) {
      i1 = i3 + 8 | 0;
      i2 = HEAP32[i1 >> 2] | 0;
      if (i2 >>> 0 < (HEAP32[9192] | 0) >>> 0) _abort(); else {
       i34 = i1;
       i35 = i2;
      }
     } else {
      HEAP32[9188] = i2 | i1;
      i34 = i3 + 8 | 0;
      i35 = i3;
     }
     HEAP32[i34 >> 2] = i8;
     HEAP32[i35 + 12 >> 2] = i8;
     HEAP32[i8 + 8 >> 2] = i35;
     HEAP32[i8 + 12 >> 2] = i3;
     break;
    }
    i1 = i7 >>> 8;
    if (i1) if (i7 >>> 0 > 16777215) i3 = 31; else {
     i37 = (i1 + 1048320 | 0) >>> 16 & 8;
     i38 = i1 << i37;
     i36 = (i38 + 520192 | 0) >>> 16 & 4;
     i38 = i38 << i36;
     i3 = (i38 + 245760 | 0) >>> 16 & 2;
     i3 = 14 - (i36 | i37 | i3) + (i38 << i3 >>> 15) | 0;
     i3 = i7 >>> (i3 + 7 | 0) & 1 | i3 << 1;
    } else i3 = 0;
    i5 = 37056 + (i3 << 2) | 0;
    HEAP32[i8 + 28 >> 2] = i3;
    HEAP32[i8 + 20 >> 2] = 0;
    HEAP32[i6 >> 2] = 0;
    i1 = HEAP32[9189] | 0;
    i2 = 1 << i3;
    if (!(i1 & i2)) {
     HEAP32[9189] = i1 | i2;
     HEAP32[i5 >> 2] = i8;
     HEAP32[i8 + 24 >> 2] = i5;
     HEAP32[i8 + 12 >> 2] = i8;
     HEAP32[i8 + 8 >> 2] = i8;
     break;
    }
    i4 = i7 << ((i3 | 0) == 31 ? 0 : 25 - (i3 >>> 1) | 0);
    i1 = HEAP32[i5 >> 2] | 0;
    while (1) {
     if ((HEAP32[i1 + 4 >> 2] & -8 | 0) == (i7 | 0)) {
      i3 = i1;
      i31 = 305;
      break;
     }
     i2 = i1 + 16 + (i4 >>> 31 << 2) | 0;
     i3 = HEAP32[i2 >> 2] | 0;
     if (!i3) {
      i31 = 302;
      break;
     } else {
      i4 = i4 << 1;
      i1 = i3;
     }
    }
    if ((i31 | 0) == 302) if (i2 >>> 0 < (HEAP32[9192] | 0) >>> 0) _abort(); else {
     HEAP32[i2 >> 2] = i8;
     HEAP32[i8 + 24 >> 2] = i1;
     HEAP32[i8 + 12 >> 2] = i8;
     HEAP32[i8 + 8 >> 2] = i8;
     break;
    } else if ((i31 | 0) == 305) {
     i1 = i3 + 8 | 0;
     i2 = HEAP32[i1 >> 2] | 0;
     i38 = HEAP32[9192] | 0;
     if (i2 >>> 0 >= i38 >>> 0 & i3 >>> 0 >= i38 >>> 0) {
      HEAP32[i2 + 12 >> 2] = i8;
      HEAP32[i1 >> 2] = i8;
      HEAP32[i8 + 8 >> 2] = i2;
      HEAP32[i8 + 12 >> 2] = i3;
      HEAP32[i8 + 24 >> 2] = 0;
      break;
     } else _abort();
    }
   }
  } else {
   i38 = HEAP32[9192] | 0;
   if ((i38 | 0) == 0 | i7 >>> 0 < i38 >>> 0) HEAP32[9192] = i7;
   HEAP32[9300] = i7;
   HEAP32[9301] = i5;
   HEAP32[9303] = 0;
   HEAP32[9197] = HEAP32[9306];
   HEAP32[9196] = -1;
   i1 = 0;
   do {
    i38 = 36792 + (i1 << 1 << 2) | 0;
    HEAP32[i38 + 12 >> 2] = i38;
    HEAP32[i38 + 8 >> 2] = i38;
    i1 = i1 + 1 | 0;
   } while ((i1 | 0) != 32);
   i38 = i7 + 8 | 0;
   i38 = (i38 & 7 | 0) == 0 ? 0 : 0 - i38 & 7;
   i37 = i7 + i38 | 0;
   i38 = i5 + -40 - i38 | 0;
   HEAP32[9194] = i37;
   HEAP32[9191] = i38;
   HEAP32[i37 + 4 >> 2] = i38 | 1;
   HEAP32[i37 + i38 + 4 >> 2] = 40;
   HEAP32[9195] = HEAP32[9310];
  } while (0);
  i1 = HEAP32[9191] | 0;
  if (i1 >>> 0 > i15 >>> 0) {
   i36 = i1 - i15 | 0;
   HEAP32[9191] = i36;
   i38 = HEAP32[9194] | 0;
   i37 = i38 + i15 | 0;
   HEAP32[9194] = i37;
   HEAP32[i37 + 4 >> 2] = i36 | 1;
   HEAP32[i38 + 4 >> 2] = i15 | 3;
   i38 = i38 + 8 | 0;
   STACKTOP = i39;
   return i38 | 0;
  }
 }
 i38 = ___errno_location() | 0;
 HEAP32[i38 >> 2] = 12;
 i38 = 0;
 STACKTOP = i39;
 return i38 | 0;
}

function __ZZN4wasm14ModuleInstance12callFunctionEN6cashew7IStringERNSt3__16vectorINS_7LiteralENS3_9allocatorIS5_EEEEEN16ExpressionRunner11visitBinaryEPNS_6BinaryE(i37, i34, i33) {
 i37 = i37 | 0;
 i34 = i34 | 0;
 i33 = i33 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, i18 = 0, i19 = 0, i20 = 0, i21 = 0, i22 = 0, i23 = 0, i24 = 0, i25 = 0, i26 = 0, i27 = 0, i28 = 0, i29 = 0, i30 = 0, i31 = 0, i32 = 0, i35 = 0, i36 = 0, i38 = 0;
 i38 = STACKTOP;
 STACKTOP = STACKTOP + 512 | 0;
 i4 = i38 + 488 | 0;
 i35 = i38 + 472 | 0;
 i1 = i38 + 432 | 0;
 i36 = i38 + 456 | 0;
 i6 = i38 + 416 | 0;
 i17 = i38 + 400 | 0;
 i26 = i38 + 384 | 0;
 i27 = i38 + 368 | 0;
 i28 = i38 + 352 | 0;
 i29 = i38 + 336 | 0;
 i30 = i38 + 320 | 0;
 i31 = i38 + 304 | 0;
 i32 = i38 + 288 | 0;
 i7 = i38 + 272 | 0;
 i8 = i38 + 256 | 0;
 i9 = i38 + 240 | 0;
 i10 = i38 + 224 | 0;
 i11 = i38 + 208 | 0;
 i12 = i38 + 192 | 0;
 i13 = i38 + 176 | 0;
 i14 = i38 + 160 | 0;
 i15 = i38 + 144 | 0;
 i16 = i38 + 128 | 0;
 i18 = i38 + 112 | 0;
 i19 = i38 + 96 | 0;
 i20 = i38 + 80 | 0;
 i21 = i38 + 64 | 0;
 i22 = i38 + 48 | 0;
 i23 = i38 + 32 | 0;
 i24 = i38 + 16 | 0;
 i25 = i38;
 i2 = i33 + 12 | 0;
 __ZN4wasm7VisitorIZNS_14ModuleInstance12callFunctionEN6cashew7IStringERNSt3__16vectorINS_7LiteralENS4_9allocatorIS6_EEEEE16ExpressionRunnerNS_4FlowEE5visitEPNS_10ExpressionE(i4, i34, HEAP32[i2 >> 2] | 0);
 i3 = i4 + 16 | 0;
 if ((HEAP32[i3 >> 2] | 0) == 0 ? (HEAP32[i35 >> 2] = HEAP32[i4 >> 2], HEAP32[i35 + 4 >> 2] = HEAP32[i4 + 4 >> 2], HEAP32[i35 + 8 >> 2] = HEAP32[i4 + 8 >> 2], HEAP32[i35 + 12 >> 2] = HEAP32[i4 + 12 >> 2], i5 = i33 + 16 | 0, __ZN4wasm7VisitorIZNS_14ModuleInstance12callFunctionEN6cashew7IStringERNSt3__16vectorINS_7LiteralENS4_9allocatorIS6_EEEEE16ExpressionRunnerNS_4FlowEE5visitEPNS_10ExpressionE(i1, i34, HEAP32[i5 >> 2] | 0), HEAP32[i4 >> 2] = HEAP32[i1 >> 2], HEAP32[i4 + 4 >> 2] = HEAP32[i1 + 4 >> 2], HEAP32[i4 + 8 >> 2] = HEAP32[i1 + 8 >> 2], HEAP32[i4 + 12 >> 2] = HEAP32[i1 + 12 >> 2], HEAP32[i4 + 16 >> 2] = HEAP32[i1 + 16 >> 2], (HEAP32[i3 >> 2] | 0) == 0) : 0) {
  HEAP32[i36 >> 2] = HEAP32[i4 >> 2];
  HEAP32[i36 + 4 >> 2] = HEAP32[i4 + 4 >> 2];
  HEAP32[i36 + 8 >> 2] = HEAP32[i4 + 8 >> 2];
  HEAP32[i36 + 12 >> 2] = HEAP32[i4 + 12 >> 2];
  i1 = HEAP32[(HEAP32[i2 >> 2] | 0) + 4 >> 2] | 0;
  switch (i1 | 0) {
  case 0:
  case 5:
   break;
  default:
   if ((HEAP32[i35 >> 2] | 0) != (i1 | 0)) ___assert_fail(16617, 15772, 473, 16693);
  }
  i1 = HEAP32[(HEAP32[i5 >> 2] | 0) + 4 >> 2] | 0;
  switch (i1 | 0) {
  case 0:
  case 5:
   break;
  default:
   if ((HEAP32[i36 >> 2] | 0) != (i1 | 0)) ___assert_fail(16705, 15772, 474, 16693);
  }
  L13 : do switch (HEAP32[i35 >> 2] | 0) {
  case 1:
   {
    do switch (HEAP32[i33 + 8 >> 2] | 0) {
    case 0:
     {
      __ZNK4wasm7Literal3addERKS0_(i6, i35, i36);
      HEAP32[i37 >> 2] = HEAP32[i6 >> 2];
      HEAP32[i37 + 4 >> 2] = HEAP32[i6 + 4 >> 2];
      HEAP32[i37 + 8 >> 2] = HEAP32[i6 + 8 >> 2];
      HEAP32[i37 + 12 >> 2] = HEAP32[i6 + 12 >> 2];
      HEAP32[i37 + 16 >> 2] = 0;
      break L13;
     }
    case 1:
     {
      __ZNK4wasm7Literal3subERKS0_(i17, i35, i36);
      HEAP32[i37 >> 2] = HEAP32[i17 >> 2];
      HEAP32[i37 + 4 >> 2] = HEAP32[i17 + 4 >> 2];
      HEAP32[i37 + 8 >> 2] = HEAP32[i17 + 8 >> 2];
      HEAP32[i37 + 12 >> 2] = HEAP32[i17 + 12 >> 2];
      HEAP32[i37 + 16 >> 2] = 0;
      break L13;
     }
    case 2:
     {
      __ZNK4wasm7Literal3mulERKS0_(i26, i35, i36);
      HEAP32[i37 >> 2] = HEAP32[i26 >> 2];
      HEAP32[i37 + 4 >> 2] = HEAP32[i26 + 4 >> 2];
      HEAP32[i37 + 8 >> 2] = HEAP32[i26 + 8 >> 2];
      HEAP32[i37 + 12 >> 2] = HEAP32[i26 + 12 >> 2];
      HEAP32[i37 + 16 >> 2] = 0;
      break L13;
     }
    case 3:
     {
      if ((__ZN4wasm7Literal10getIntegerEv(i36) | 0) == 0 & (tempRet0 | 0) == 0) {
       i33 = HEAP32[(HEAP32[i34 >> 2] | 0) + 24 >> 2] | 0;
       FUNCTION_TABLE_vii[HEAP32[(HEAP32[i33 >> 2] | 0) + 20 >> 2] & 511](i33, 16784);
      }
      if ((__ZN4wasm7Literal10getIntegerEv(i35) | 0) == -2147483648 & (tempRet0 | 0) == -1 ? (i33 = __ZN4wasm7Literal10getIntegerEv(i36) | 0, (i33 | 0) == -1 & (tempRet0 | 0) == -1) : 0) {
       i34 = HEAP32[(HEAP32[i34 >> 2] | 0) + 24 >> 2] | 0;
       FUNCTION_TABLE_vii[HEAP32[(HEAP32[i34 >> 2] | 0) + 20 >> 2] & 511](i34, 16799);
      }
      i1 = i35 + 8 | 0;
      if ((HEAP32[i35 >> 2] | 0) == 1) {
       i3 = 1;
       i1 = (HEAP32[i1 >> 2] | 0) / (HEAP32[i36 + 8 >> 2] | 0) | 0;
       i2 = 0;
      } else {
       i3 = i1;
       i1 = i36 + 8 | 0;
       i1 = ___divdi3(HEAP32[i3 >> 2] | 0, HEAP32[i3 + 4 >> 2] | 0, HEAP32[i1 >> 2] | 0, HEAP32[i1 + 4 >> 2] | 0) | 0;
       i3 = 2;
       i2 = tempRet0;
      }
      HEAP32[i37 >> 2] = i3;
      i36 = i37 + 8 | 0;
      HEAP32[i36 >> 2] = i1;
      HEAP32[i36 + 4 >> 2] = i2;
      HEAP32[i37 + 16 >> 2] = 0;
      break L13;
     }
    case 4:
     {
      if ((__ZN4wasm7Literal10getIntegerEv(i36) | 0) == 0 & (tempRet0 | 0) == 0) {
       i34 = HEAP32[(HEAP32[i34 >> 2] | 0) + 24 >> 2] | 0;
       FUNCTION_TABLE_vii[HEAP32[(HEAP32[i34 >> 2] | 0) + 20 >> 2] & 511](i34, 16818);
      }
      i1 = i35 + 8 | 0;
      if ((HEAP32[i35 >> 2] | 0) == 1) {
       i3 = 1;
       i1 = ((HEAP32[i1 >> 2] | 0) >>> 0) / ((HEAP32[i36 + 8 >> 2] | 0) >>> 0) | 0;
       i2 = 0;
      } else {
       i3 = i1;
       i1 = i36 + 8 | 0;
       i1 = ___udivdi3(HEAP32[i3 >> 2] | 0, HEAP32[i3 + 4 >> 2] | 0, HEAP32[i1 >> 2] | 0, HEAP32[i1 + 4 >> 2] | 0) | 0;
       i3 = 2;
       i2 = tempRet0;
      }
      HEAP32[i37 >> 2] = i3;
      i36 = i37 + 8 | 0;
      HEAP32[i36 >> 2] = i1;
      HEAP32[i36 + 4 >> 2] = i2;
      HEAP32[i37 + 16 >> 2] = 0;
      break L13;
     }
    case 5:
     {
      if ((__ZN4wasm7Literal10getIntegerEv(i36) | 0) == 0 & (tempRet0 | 0) == 0) {
       i34 = HEAP32[(HEAP32[i34 >> 2] | 0) + 24 >> 2] | 0;
       FUNCTION_TABLE_vii[HEAP32[(HEAP32[i34 >> 2] | 0) + 20 >> 2] & 511](i34, 16833);
      }
      if ((__ZN4wasm7Literal10getIntegerEv(i35) | 0) == -2147483648 & (tempRet0 | 0) == -1 ? (i34 = __ZN4wasm7Literal10getIntegerEv(i36) | 0, (i34 | 0) == -1 & (tempRet0 | 0) == -1) : 0) {
       HEAP32[i37 >> 2] = 1;
       HEAP32[i37 + 8 >> 2] = 0;
       HEAP32[i37 + 16 >> 2] = 0;
       break L13;
      }
      i1 = i35 + 8 | 0;
      if ((HEAP32[i35 >> 2] | 0) == 1) {
       i3 = 1;
       i1 = (HEAP32[i1 >> 2] | 0) % (HEAP32[i36 + 8 >> 2] | 0) | 0;
       i2 = 0;
      } else {
       i3 = i1;
       i1 = i36 + 8 | 0;
       i1 = ___remdi3(HEAP32[i3 >> 2] | 0, HEAP32[i3 + 4 >> 2] | 0, HEAP32[i1 >> 2] | 0, HEAP32[i1 + 4 >> 2] | 0) | 0;
       i3 = 2;
       i2 = tempRet0;
      }
      HEAP32[i37 >> 2] = i3;
      i36 = i37 + 8 | 0;
      HEAP32[i36 >> 2] = i1;
      HEAP32[i36 + 4 >> 2] = i2;
      HEAP32[i37 + 16 >> 2] = 0;
      break L13;
     }
    case 6:
     {
      if ((__ZN4wasm7Literal10getIntegerEv(i36) | 0) == 0 & (tempRet0 | 0) == 0) {
       i34 = HEAP32[(HEAP32[i34 >> 2] | 0) + 24 >> 2] | 0;
       FUNCTION_TABLE_vii[HEAP32[(HEAP32[i34 >> 2] | 0) + 20 >> 2] & 511](i34, 16848);
      }
      i1 = i35 + 8 | 0;
      if ((HEAP32[i35 >> 2] | 0) == 1) {
       i3 = 1;
       i1 = ((HEAP32[i1 >> 2] | 0) >>> 0) % ((HEAP32[i36 + 8 >> 2] | 0) >>> 0) | 0;
       i2 = 0;
      } else {
       i3 = i1;
       i1 = i36 + 8 | 0;
       i1 = ___uremdi3(HEAP32[i3 >> 2] | 0, HEAP32[i3 + 4 >> 2] | 0, HEAP32[i1 >> 2] | 0, HEAP32[i1 + 4 >> 2] | 0) | 0;
       i3 = 2;
       i2 = tempRet0;
      }
      HEAP32[i37 >> 2] = i3;
      i36 = i37 + 8 | 0;
      HEAP32[i36 >> 2] = i1;
      HEAP32[i36 + 4 >> 2] = i2;
      HEAP32[i37 + 16 >> 2] = 0;
      break L13;
     }
    case 7:
     {
      i35 = HEAP32[i36 + 8 >> 2] & HEAP32[i35 + 8 >> 2];
      HEAP32[i37 >> 2] = 1;
      i36 = i37 + 8 | 0;
      HEAP32[i36 >> 2] = i35;
      HEAP32[i36 + 4 >> 2] = 0;
      HEAP32[i37 + 16 >> 2] = 0;
      break L13;
     }
    case 8:
     {
      i35 = HEAP32[i36 + 8 >> 2] | HEAP32[i35 + 8 >> 2];
      HEAP32[i37 >> 2] = 1;
      i36 = i37 + 8 | 0;
      HEAP32[i36 >> 2] = i35;
      HEAP32[i36 + 4 >> 2] = 0;
      HEAP32[i37 + 16 >> 2] = 0;
      break L13;
     }
    case 9:
     {
      i35 = HEAP32[i36 + 8 >> 2] ^ HEAP32[i35 + 8 >> 2];
      HEAP32[i37 >> 2] = 1;
      i36 = i37 + 8 | 0;
      HEAP32[i36 >> 2] = i35;
      HEAP32[i36 + 4 >> 2] = 0;
      HEAP32[i37 + 16 >> 2] = 0;
      break L13;
     }
    case 10:
     {
      i34 = i36 + 8 | 0;
      i35 = HEAP32[i35 + 8 >> 2] << (((HEAP32[i36 >> 2] | 0) == 1 ? HEAP32[i34 >> 2] | 0 : HEAP32[i34 >> 2] | 0) & 31);
      HEAP32[i37 >> 2] = 1;
      i36 = i37 + 8 | 0;
      HEAP32[i36 >> 2] = i35;
      HEAP32[i36 + 4 >> 2] = 0;
      HEAP32[i37 + 16 >> 2] = 0;
      break L13;
     }
    case 11:
     {
      i34 = i36 + 8 | 0;
      i35 = (HEAP32[i35 + 8 >> 2] | 0) >>> (((HEAP32[i36 >> 2] | 0) == 1 ? HEAP32[i34 >> 2] | 0 : HEAP32[i34 >> 2] | 0) & 31);
      HEAP32[i37 >> 2] = 1;
      i36 = i37 + 8 | 0;
      HEAP32[i36 >> 2] = i35;
      HEAP32[i36 + 4 >> 2] = 0;
      HEAP32[i37 + 16 >> 2] = 0;
      break L13;
     }
    case 12:
     {
      i34 = i36 + 8 | 0;
      i35 = HEAP32[i35 + 8 >> 2] >> (((HEAP32[i36 >> 2] | 0) == 1 ? HEAP32[i34 >> 2] | 0 : HEAP32[i34 >> 2] | 0) & 31);
      HEAP32[i37 >> 2] = 1;
      i36 = i37 + 8 | 0;
      HEAP32[i36 >> 2] = i35;
      HEAP32[i36 + 4 >> 2] = 0;
      HEAP32[i37 + 16 >> 2] = 0;
      break L13;
     }
    case 13:
     {
      __ZNK4wasm7Literal4rotLERKS0_(i27, i35, i36);
      HEAP32[i37 >> 2] = HEAP32[i27 >> 2];
      HEAP32[i37 + 4 >> 2] = HEAP32[i27 + 4 >> 2];
      HEAP32[i37 + 8 >> 2] = HEAP32[i27 + 8 >> 2];
      HEAP32[i37 + 12 >> 2] = HEAP32[i27 + 12 >> 2];
      HEAP32[i37 + 16 >> 2] = 0;
      break L13;
     }
    case 14:
     {
      __ZNK4wasm7Literal4rotRERKS0_(i28, i35, i36);
      HEAP32[i37 >> 2] = HEAP32[i28 >> 2];
      HEAP32[i37 + 4 >> 2] = HEAP32[i28 + 4 >> 2];
      HEAP32[i37 + 8 >> 2] = HEAP32[i28 + 8 >> 2];
      HEAP32[i37 + 12 >> 2] = HEAP32[i28 + 12 >> 2];
      HEAP32[i37 + 16 >> 2] = 0;
      break L13;
     }
    case 19:
     {
      __ZNK4wasm7Literal2eqERKS0_(i29, i35, i36);
      HEAP32[i37 >> 2] = HEAP32[i29 >> 2];
      HEAP32[i37 + 4 >> 2] = HEAP32[i29 + 4 >> 2];
      HEAP32[i37 + 8 >> 2] = HEAP32[i29 + 8 >> 2];
      HEAP32[i37 + 12 >> 2] = HEAP32[i29 + 12 >> 2];
      HEAP32[i37 + 16 >> 2] = 0;
      break L13;
     }
    case 20:
     {
      __ZNK4wasm7Literal2neERKS0_(i30, i35, i36);
      HEAP32[i37 >> 2] = HEAP32[i30 >> 2];
      HEAP32[i37 + 4 >> 2] = HEAP32[i30 + 4 >> 2];
      HEAP32[i37 + 8 >> 2] = HEAP32[i30 + 8 >> 2];
      HEAP32[i37 + 12 >> 2] = HEAP32[i30 + 12 >> 2];
      HEAP32[i37 + 16 >> 2] = 0;
      break L13;
     }
    case 21:
     {
      i36 = (HEAP32[i35 + 8 >> 2] | 0) < (HEAP32[i36 + 8 >> 2] | 0) & 1;
      HEAP32[i37 >> 2] = 1;
      HEAP32[i37 + 8 >> 2] = i36;
      HEAP32[i37 + 16 >> 2] = 0;
      break L13;
     }
    case 22:
     {
      i36 = (HEAP32[i35 + 8 >> 2] | 0) >>> 0 < (HEAP32[i36 + 8 >> 2] | 0) >>> 0 & 1;
      HEAP32[i37 >> 2] = 1;
      HEAP32[i37 + 8 >> 2] = i36;
      HEAP32[i37 + 16 >> 2] = 0;
      break L13;
     }
    case 23:
     {
      i36 = (HEAP32[i35 + 8 >> 2] | 0) <= (HEAP32[i36 + 8 >> 2] | 0) & 1;
      HEAP32[i37 >> 2] = 1;
      HEAP32[i37 + 8 >> 2] = i36;
      HEAP32[i37 + 16 >> 2] = 0;
      break L13;
     }
    case 24:
     {
      i36 = (HEAP32[i35 + 8 >> 2] | 0) >>> 0 <= (HEAP32[i36 + 8 >> 2] | 0) >>> 0 & 1;
      HEAP32[i37 >> 2] = 1;
      HEAP32[i37 + 8 >> 2] = i36;
      HEAP32[i37 + 16 >> 2] = 0;
      break L13;
     }
    case 25:
     {
      i36 = (HEAP32[i35 + 8 >> 2] | 0) > (HEAP32[i36 + 8 >> 2] | 0) & 1;
      HEAP32[i37 >> 2] = 1;
      HEAP32[i37 + 8 >> 2] = i36;
      HEAP32[i37 + 16 >> 2] = 0;
      break L13;
     }
    case 26:
     {
      i36 = (HEAP32[i35 + 8 >> 2] | 0) >>> 0 > (HEAP32[i36 + 8 >> 2] | 0) >>> 0 & 1;
      HEAP32[i37 >> 2] = 1;
      HEAP32[i37 + 8 >> 2] = i36;
      HEAP32[i37 + 16 >> 2] = 0;
      break L13;
     }
    case 27:
     {
      i36 = (HEAP32[i35 + 8 >> 2] | 0) >= (HEAP32[i36 + 8 >> 2] | 0) & 1;
      HEAP32[i37 >> 2] = 1;
      HEAP32[i37 + 8 >> 2] = i36;
      HEAP32[i37 + 16 >> 2] = 0;
      break L13;
     }
    case 28:
     {
      i36 = (HEAP32[i35 + 8 >> 2] | 0) >>> 0 >= (HEAP32[i36 + 8 >> 2] | 0) >>> 0 & 1;
      HEAP32[i37 >> 2] = 1;
      HEAP32[i37 + 8 >> 2] = i36;
      HEAP32[i37 + 16 >> 2] = 0;
      break L13;
     }
    default:
     _abort();
    } while (0);
    break;
   }
  case 2:
   {
    do switch (HEAP32[i33 + 8 >> 2] | 0) {
    case 0:
     {
      __ZNK4wasm7Literal3addERKS0_(i31, i35, i36);
      HEAP32[i37 >> 2] = HEAP32[i31 >> 2];
      HEAP32[i37 + 4 >> 2] = HEAP32[i31 + 4 >> 2];
      HEAP32[i37 + 8 >> 2] = HEAP32[i31 + 8 >> 2];
      HEAP32[i37 + 12 >> 2] = HEAP32[i31 + 12 >> 2];
      HEAP32[i37 + 16 >> 2] = 0;
      break L13;
     }
    case 1:
     {
      __ZNK4wasm7Literal3subERKS0_(i32, i35, i36);
      HEAP32[i37 >> 2] = HEAP32[i32 >> 2];
      HEAP32[i37 + 4 >> 2] = HEAP32[i32 + 4 >> 2];
      HEAP32[i37 + 8 >> 2] = HEAP32[i32 + 8 >> 2];
      HEAP32[i37 + 12 >> 2] = HEAP32[i32 + 12 >> 2];
      HEAP32[i37 + 16 >> 2] = 0;
      break L13;
     }
    case 2:
     {
      __ZNK4wasm7Literal3mulERKS0_(i7, i35, i36);
      HEAP32[i37 >> 2] = HEAP32[i7 >> 2];
      HEAP32[i37 + 4 >> 2] = HEAP32[i7 + 4 >> 2];
      HEAP32[i37 + 8 >> 2] = HEAP32[i7 + 8 >> 2];
      HEAP32[i37 + 12 >> 2] = HEAP32[i7 + 12 >> 2];
      HEAP32[i37 + 16 >> 2] = 0;
      break L13;
     }
    case 3:
     {
      if ((__ZN4wasm7Literal10getIntegerEv(i36) | 0) == 0 & (tempRet0 | 0) == 0) {
       i33 = HEAP32[(HEAP32[i34 >> 2] | 0) + 24 >> 2] | 0;
       FUNCTION_TABLE_vii[HEAP32[(HEAP32[i33 >> 2] | 0) + 20 >> 2] & 511](i33, 16863);
      }
      if ((__ZN4wasm7Literal10getIntegerEv(i35) | 0) == 0 & (tempRet0 | 0) == -2147483648 ? (i33 = __ZN4wasm7Literal10getIntegerEv(i36) | 0, (i33 | 0) == -1 & (tempRet0 | 0) == -1) : 0) {
       i34 = HEAP32[(HEAP32[i34 >> 2] | 0) + 24 >> 2] | 0;
       FUNCTION_TABLE_vii[HEAP32[(HEAP32[i34 >> 2] | 0) + 20 >> 2] & 511](i34, 16878);
      }
      i1 = i35 + 8 | 0;
      if ((HEAP32[i35 >> 2] | 0) == 1) {
       i3 = 1;
       i1 = (HEAP32[i1 >> 2] | 0) / (HEAP32[i36 + 8 >> 2] | 0) | 0;
       i2 = 0;
      } else {
       i3 = i1;
       i1 = i36 + 8 | 0;
       i1 = ___divdi3(HEAP32[i3 >> 2] | 0, HEAP32[i3 + 4 >> 2] | 0, HEAP32[i1 >> 2] | 0, HEAP32[i1 + 4 >> 2] | 0) | 0;
       i3 = 2;
       i2 = tempRet0;
      }
      HEAP32[i37 >> 2] = i3;
      i36 = i37 + 8 | 0;
      HEAP32[i36 >> 2] = i1;
      HEAP32[i36 + 4 >> 2] = i2;
      HEAP32[i37 + 16 >> 2] = 0;
      break L13;
     }
    case 4:
     {
      if ((__ZN4wasm7Literal10getIntegerEv(i36) | 0) == 0 & (tempRet0 | 0) == 0) {
       i34 = HEAP32[(HEAP32[i34 >> 2] | 0) + 24 >> 2] | 0;
       FUNCTION_TABLE_vii[HEAP32[(HEAP32[i34 >> 2] | 0) + 20 >> 2] & 511](i34, 16897);
      }
      i1 = i35 + 8 | 0;
      if ((HEAP32[i35 >> 2] | 0) == 1) {
       i3 = 1;
       i1 = ((HEAP32[i1 >> 2] | 0) >>> 0) / ((HEAP32[i36 + 8 >> 2] | 0) >>> 0) | 0;
       i2 = 0;
      } else {
       i3 = i1;
       i1 = i36 + 8 | 0;
       i1 = ___udivdi3(HEAP32[i3 >> 2] | 0, HEAP32[i3 + 4 >> 2] | 0, HEAP32[i1 >> 2] | 0, HEAP32[i1 + 4 >> 2] | 0) | 0;
       i3 = 2;
       i2 = tempRet0;
      }
      HEAP32[i37 >> 2] = i3;
      i36 = i37 + 8 | 0;
      HEAP32[i36 >> 2] = i1;
      HEAP32[i36 + 4 >> 2] = i2;
      HEAP32[i37 + 16 >> 2] = 0;
      break L13;
     }
    case 5:
     {
      if ((__ZN4wasm7Literal10getIntegerEv(i36) | 0) == 0 & (tempRet0 | 0) == 0) {
       i34 = HEAP32[(HEAP32[i34 >> 2] | 0) + 24 >> 2] | 0;
       FUNCTION_TABLE_vii[HEAP32[(HEAP32[i34 >> 2] | 0) + 20 >> 2] & 511](i34, 16912);
      }
      if ((__ZN4wasm7Literal10getIntegerEv(i35) | 0) == 0 & (tempRet0 | 0) == -2147483648 ? (i34 = __ZN4wasm7Literal10getIntegerEv(i36) | 0, (i34 | 0) == -1 & (tempRet0 | 0) == -1) : 0) {
       HEAP32[i37 >> 2] = 2;
       i36 = i37 + 8 | 0;
       HEAP32[i36 >> 2] = 0;
       HEAP32[i36 + 4 >> 2] = 0;
       HEAP32[i37 + 16 >> 2] = 0;
       break L13;
      }
      i1 = i35 + 8 | 0;
      if ((HEAP32[i35 >> 2] | 0) == 1) {
       i3 = 1;
       i1 = (HEAP32[i1 >> 2] | 0) % (HEAP32[i36 + 8 >> 2] | 0) | 0;
       i2 = 0;
      } else {
       i3 = i1;
       i1 = i36 + 8 | 0;
       i1 = ___remdi3(HEAP32[i3 >> 2] | 0, HEAP32[i3 + 4 >> 2] | 0, HEAP32[i1 >> 2] | 0, HEAP32[i1 + 4 >> 2] | 0) | 0;
       i3 = 2;
       i2 = tempRet0;
      }
      HEAP32[i37 >> 2] = i3;
      i36 = i37 + 8 | 0;
      HEAP32[i36 >> 2] = i1;
      HEAP32[i36 + 4 >> 2] = i2;
      HEAP32[i37 + 16 >> 2] = 0;
      break L13;
     }
    case 6:
     {
      if ((__ZN4wasm7Literal10getIntegerEv(i36) | 0) == 0 & (tempRet0 | 0) == 0) {
       i34 = HEAP32[(HEAP32[i34 >> 2] | 0) + 24 >> 2] | 0;
       FUNCTION_TABLE_vii[HEAP32[(HEAP32[i34 >> 2] | 0) + 20 >> 2] & 511](i34, 16927);
      }
      i1 = i35 + 8 | 0;
      if ((HEAP32[i35 >> 2] | 0) == 1) {
       i3 = 1;
       i1 = ((HEAP32[i1 >> 2] | 0) >>> 0) % ((HEAP32[i36 + 8 >> 2] | 0) >>> 0) | 0;
       i2 = 0;
      } else {
       i3 = i1;
       i1 = i36 + 8 | 0;
       i1 = ___uremdi3(HEAP32[i3 >> 2] | 0, HEAP32[i3 + 4 >> 2] | 0, HEAP32[i1 >> 2] | 0, HEAP32[i1 + 4 >> 2] | 0) | 0;
       i3 = 2;
       i2 = tempRet0;
      }
      HEAP32[i37 >> 2] = i3;
      i36 = i37 + 8 | 0;
      HEAP32[i36 >> 2] = i1;
      HEAP32[i36 + 4 >> 2] = i2;
      HEAP32[i37 + 16 >> 2] = 0;
      break L13;
     }
    case 7:
     {
      i35 = i35 + 8 | 0;
      i36 = i36 + 8 | 0;
      i34 = HEAP32[i36 >> 2] & HEAP32[i35 >> 2];
      i35 = HEAP32[i36 + 4 >> 2] & HEAP32[i35 + 4 >> 2];
      HEAP32[i37 >> 2] = 2;
      i36 = i37 + 8 | 0;
      HEAP32[i36 >> 2] = i34;
      HEAP32[i36 + 4 >> 2] = i35;
      HEAP32[i37 + 16 >> 2] = 0;
      break L13;
     }
    case 8:
     {
      i35 = i35 + 8 | 0;
      i36 = i36 + 8 | 0;
      i34 = HEAP32[i36 >> 2] | HEAP32[i35 >> 2];
      i35 = HEAP32[i36 + 4 >> 2] | HEAP32[i35 + 4 >> 2];
      HEAP32[i37 >> 2] = 2;
      i36 = i37 + 8 | 0;
      HEAP32[i36 >> 2] = i34;
      HEAP32[i36 + 4 >> 2] = i35;
      HEAP32[i37 + 16 >> 2] = 0;
      break L13;
     }
    case 9:
     {
      i35 = i35 + 8 | 0;
      i36 = i36 + 8 | 0;
      i34 = HEAP32[i36 >> 2] ^ HEAP32[i35 >> 2];
      i35 = HEAP32[i36 + 4 >> 2] ^ HEAP32[i35 + 4 >> 2];
      HEAP32[i37 >> 2] = 2;
      i36 = i37 + 8 | 0;
      HEAP32[i36 >> 2] = i34;
      HEAP32[i36 + 4 >> 2] = i35;
      HEAP32[i37 + 16 >> 2] = 0;
      break L13;
     }
    case 10:
     {
      i1 = i36 + 8 | 0;
      if ((HEAP32[i36 >> 2] | 0) == 1) i1 = HEAP32[i1 >> 2] & 63; else i1 = HEAP32[i1 >> 2] & 63;
      i35 = i35 + 8 | 0;
      i35 = _bitshift64Shl(HEAP32[i35 >> 2] | 0, HEAP32[i35 + 4 >> 2] | 0, i1 | 0) | 0;
      HEAP32[i37 >> 2] = 2;
      i36 = i37 + 8 | 0;
      HEAP32[i36 >> 2] = i35;
      HEAP32[i36 + 4 >> 2] = tempRet0;
      HEAP32[i37 + 16 >> 2] = 0;
      break L13;
     }
    case 11:
     {
      i1 = i36 + 8 | 0;
      if ((HEAP32[i36 >> 2] | 0) == 1) i1 = HEAP32[i1 >> 2] & 63; else i1 = HEAP32[i1 >> 2] & 63;
      i35 = i35 + 8 | 0;
      i35 = _bitshift64Lshr(HEAP32[i35 >> 2] | 0, HEAP32[i35 + 4 >> 2] | 0, i1 | 0) | 0;
      HEAP32[i37 >> 2] = 2;
      i36 = i37 + 8 | 0;
      HEAP32[i36 >> 2] = i35;
      HEAP32[i36 + 4 >> 2] = tempRet0;
      HEAP32[i37 + 16 >> 2] = 0;
      break L13;
     }
    case 12:
     {
      i1 = i36 + 8 | 0;
      if ((HEAP32[i36 >> 2] | 0) == 1) i1 = HEAP32[i1 >> 2] & 63; else i1 = HEAP32[i1 >> 2] & 63;
      i35 = i35 + 8 | 0;
      i35 = _bitshift64Ashr(HEAP32[i35 >> 2] | 0, HEAP32[i35 + 4 >> 2] | 0, i1 | 0) | 0;
      HEAP32[i37 >> 2] = 2;
      i36 = i37 + 8 | 0;
      HEAP32[i36 >> 2] = i35;
      HEAP32[i36 + 4 >> 2] = tempRet0;
      HEAP32[i37 + 16 >> 2] = 0;
      break L13;
     }
    case 13:
     {
      __ZNK4wasm7Literal4rotLERKS0_(i8, i35, i36);
      HEAP32[i37 >> 2] = HEAP32[i8 >> 2];
      HEAP32[i37 + 4 >> 2] = HEAP32[i8 + 4 >> 2];
      HEAP32[i37 + 8 >> 2] = HEAP32[i8 + 8 >> 2];
      HEAP32[i37 + 12 >> 2] = HEAP32[i8 + 12 >> 2];
      HEAP32[i37 + 16 >> 2] = 0;
      break L13;
     }
    case 14:
     {
      __ZNK4wasm7Literal4rotRERKS0_(i9, i35, i36);
      HEAP32[i37 >> 2] = HEAP32[i9 >> 2];
      HEAP32[i37 + 4 >> 2] = HEAP32[i9 + 4 >> 2];
      HEAP32[i37 + 8 >> 2] = HEAP32[i9 + 8 >> 2];
      HEAP32[i37 + 12 >> 2] = HEAP32[i9 + 12 >> 2];
      HEAP32[i37 + 16 >> 2] = 0;
      break L13;
     }
    case 19:
     {
      __ZNK4wasm7Literal2eqERKS0_(i10, i35, i36);
      HEAP32[i37 >> 2] = HEAP32[i10 >> 2];
      HEAP32[i37 + 4 >> 2] = HEAP32[i10 + 4 >> 2];
      HEAP32[i37 + 8 >> 2] = HEAP32[i10 + 8 >> 2];
      HEAP32[i37 + 12 >> 2] = HEAP32[i10 + 12 >> 2];
      HEAP32[i37 + 16 >> 2] = 0;
      break L13;
     }
    case 20:
     {
      __ZNK4wasm7Literal2neERKS0_(i11, i35, i36);
      HEAP32[i37 >> 2] = HEAP32[i11 >> 2];
      HEAP32[i37 + 4 >> 2] = HEAP32[i11 + 4 >> 2];
      HEAP32[i37 + 8 >> 2] = HEAP32[i11 + 8 >> 2];
      HEAP32[i37 + 12 >> 2] = HEAP32[i11 + 12 >> 2];
      HEAP32[i37 + 16 >> 2] = 0;
      break L13;
     }
    case 21:
     {
      i35 = i35 + 8 | 0;
      i33 = HEAP32[i35 + 4 >> 2] | 0;
      i36 = i36 + 8 | 0;
      i34 = HEAP32[i36 + 4 >> 2] | 0;
      i36 = ((i33 | 0) < (i34 | 0) | ((i33 | 0) == (i34 | 0) ? (HEAP32[i35 >> 2] | 0) >>> 0 < (HEAP32[i36 >> 2] | 0) >>> 0 : 0)) & 1;
      HEAP32[i37 >> 2] = 1;
      HEAP32[i37 + 8 >> 2] = i36;
      HEAP32[i37 + 16 >> 2] = 0;
      break L13;
     }
    case 22:
     {
      i35 = i35 + 8 | 0;
      i33 = HEAP32[i35 + 4 >> 2] | 0;
      i36 = i36 + 8 | 0;
      i34 = HEAP32[i36 + 4 >> 2] | 0;
      i36 = (i33 >>> 0 < i34 >>> 0 | ((i33 | 0) == (i34 | 0) ? (HEAP32[i35 >> 2] | 0) >>> 0 < (HEAP32[i36 >> 2] | 0) >>> 0 : 0)) & 1;
      HEAP32[i37 >> 2] = 1;
      HEAP32[i37 + 8 >> 2] = i36;
      HEAP32[i37 + 16 >> 2] = 0;
      break L13;
     }
    case 23:
     {
      i35 = i35 + 8 | 0;
      i33 = HEAP32[i35 + 4 >> 2] | 0;
      i36 = i36 + 8 | 0;
      i34 = HEAP32[i36 + 4 >> 2] | 0;
      i36 = ((i33 | 0) < (i34 | 0) | ((i33 | 0) == (i34 | 0) ? (HEAP32[i35 >> 2] | 0) >>> 0 <= (HEAP32[i36 >> 2] | 0) >>> 0 : 0)) & 1;
      HEAP32[i37 >> 2] = 1;
      HEAP32[i37 + 8 >> 2] = i36;
      HEAP32[i37 + 16 >> 2] = 0;
      break L13;
     }
    case 24:
     {
      i35 = i35 + 8 | 0;
      i33 = HEAP32[i35 + 4 >> 2] | 0;
      i36 = i36 + 8 | 0;
      i34 = HEAP32[i36 + 4 >> 2] | 0;
      i36 = (i33 >>> 0 < i34 >>> 0 | ((i33 | 0) == (i34 | 0) ? (HEAP32[i35 >> 2] | 0) >>> 0 <= (HEAP32[i36 >> 2] | 0) >>> 0 : 0)) & 1;
      HEAP32[i37 >> 2] = 1;
      HEAP32[i37 + 8 >> 2] = i36;
      HEAP32[i37 + 16 >> 2] = 0;
      break L13;
     }
    case 25:
     {
      i35 = i35 + 8 | 0;
      i33 = HEAP32[i35 + 4 >> 2] | 0;
      i36 = i36 + 8 | 0;
      i34 = HEAP32[i36 + 4 >> 2] | 0;
      i36 = ((i33 | 0) > (i34 | 0) | ((i33 | 0) == (i34 | 0) ? (HEAP32[i35 >> 2] | 0) >>> 0 > (HEAP32[i36 >> 2] | 0) >>> 0 : 0)) & 1;
      HEAP32[i37 >> 2] = 1;
      HEAP32[i37 + 8 >> 2] = i36;
      HEAP32[i37 + 16 >> 2] = 0;
      break L13;
     }
    case 26:
     {
      i35 = i35 + 8 | 0;
      i33 = HEAP32[i35 + 4 >> 2] | 0;
      i36 = i36 + 8 | 0;
      i34 = HEAP32[i36 + 4 >> 2] | 0;
      i36 = (i33 >>> 0 > i34 >>> 0 | ((i33 | 0) == (i34 | 0) ? (HEAP32[i35 >> 2] | 0) >>> 0 > (HEAP32[i36 >> 2] | 0) >>> 0 : 0)) & 1;
      HEAP32[i37 >> 2] = 1;
      HEAP32[i37 + 8 >> 2] = i36;
      HEAP32[i37 + 16 >> 2] = 0;
      break L13;
     }
    case 27:
     {
      i35 = i35 + 8 | 0;
      i33 = HEAP32[i35 + 4 >> 2] | 0;
      i36 = i36 + 8 | 0;
      i34 = HEAP32[i36 + 4 >> 2] | 0;
      i36 = ((i33 | 0) > (i34 | 0) | ((i33 | 0) == (i34 | 0) ? (HEAP32[i35 >> 2] | 0) >>> 0 >= (HEAP32[i36 >> 2] | 0) >>> 0 : 0)) & 1;
      HEAP32[i37 >> 2] = 1;
      HEAP32[i37 + 8 >> 2] = i36;
      HEAP32[i37 + 16 >> 2] = 0;
      break L13;
     }
    case 28:
     {
      i35 = i35 + 8 | 0;
      i33 = HEAP32[i35 + 4 >> 2] | 0;
      i36 = i36 + 8 | 0;
      i34 = HEAP32[i36 + 4 >> 2] | 0;
      i36 = (i33 >>> 0 > i34 >>> 0 | ((i33 | 0) == (i34 | 0) ? (HEAP32[i35 >> 2] | 0) >>> 0 >= (HEAP32[i36 >> 2] | 0) >>> 0 : 0)) & 1;
      HEAP32[i37 >> 2] = 1;
      HEAP32[i37 + 8 >> 2] = i36;
      HEAP32[i37 + 16 >> 2] = 0;
      break L13;
     }
    default:
     _abort();
    } while (0);
    break;
   }
  case 4:
  case 3:
   {
    do switch (HEAP32[i33 + 8 >> 2] | 0) {
    case 0:
     {
      __ZNK4wasm7Literal3addERKS0_(i12, i35, i36);
      HEAP32[i37 >> 2] = HEAP32[i12 >> 2];
      HEAP32[i37 + 4 >> 2] = HEAP32[i12 + 4 >> 2];
      HEAP32[i37 + 8 >> 2] = HEAP32[i12 + 8 >> 2];
      HEAP32[i37 + 12 >> 2] = HEAP32[i12 + 12 >> 2];
      HEAP32[i37 + 16 >> 2] = 0;
      break L13;
     }
    case 1:
     {
      __ZNK4wasm7Literal3subERKS0_(i13, i35, i36);
      HEAP32[i37 >> 2] = HEAP32[i13 >> 2];
      HEAP32[i37 + 4 >> 2] = HEAP32[i13 + 4 >> 2];
      HEAP32[i37 + 8 >> 2] = HEAP32[i13 + 8 >> 2];
      HEAP32[i37 + 12 >> 2] = HEAP32[i13 + 12 >> 2];
      HEAP32[i37 + 16 >> 2] = 0;
      break L13;
     }
    case 2:
     {
      __ZNK4wasm7Literal3mulERKS0_(i14, i35, i36);
      HEAP32[i37 >> 2] = HEAP32[i14 >> 2];
      HEAP32[i37 + 4 >> 2] = HEAP32[i14 + 4 >> 2];
      HEAP32[i37 + 8 >> 2] = HEAP32[i14 + 8 >> 2];
      HEAP32[i37 + 12 >> 2] = HEAP32[i14 + 12 >> 2];
      HEAP32[i37 + 16 >> 2] = 0;
      break L13;
     }
    case 15:
     {
      __ZNK4wasm7Literal3divERKS0_(i15, i35, i36);
      HEAP32[i37 >> 2] = HEAP32[i15 >> 2];
      HEAP32[i37 + 4 >> 2] = HEAP32[i15 + 4 >> 2];
      HEAP32[i37 + 8 >> 2] = HEAP32[i15 + 8 >> 2];
      HEAP32[i37 + 12 >> 2] = HEAP32[i15 + 12 >> 2];
      HEAP32[i37 + 16 >> 2] = 0;
      break L13;
     }
    case 16:
     {
      __ZNK4wasm7Literal8copysignERKS0_(i16, i35, i36);
      HEAP32[i37 >> 2] = HEAP32[i16 >> 2];
      HEAP32[i37 + 4 >> 2] = HEAP32[i16 + 4 >> 2];
      HEAP32[i37 + 8 >> 2] = HEAP32[i16 + 8 >> 2];
      HEAP32[i37 + 12 >> 2] = HEAP32[i16 + 12 >> 2];
      HEAP32[i37 + 16 >> 2] = 0;
      break L13;
     }
    case 17:
     {
      __ZNK4wasm7Literal3minERKS0_(i18, i35, i36);
      HEAP32[i37 >> 2] = HEAP32[i18 >> 2];
      HEAP32[i37 + 4 >> 2] = HEAP32[i18 + 4 >> 2];
      HEAP32[i37 + 8 >> 2] = HEAP32[i18 + 8 >> 2];
      HEAP32[i37 + 12 >> 2] = HEAP32[i18 + 12 >> 2];
      HEAP32[i37 + 16 >> 2] = 0;
      break L13;
     }
    case 18:
     {
      __ZNK4wasm7Literal3maxERKS0_(i19, i35, i36);
      HEAP32[i37 >> 2] = HEAP32[i19 >> 2];
      HEAP32[i37 + 4 >> 2] = HEAP32[i19 + 4 >> 2];
      HEAP32[i37 + 8 >> 2] = HEAP32[i19 + 8 >> 2];
      HEAP32[i37 + 12 >> 2] = HEAP32[i19 + 12 >> 2];
      HEAP32[i37 + 16 >> 2] = 0;
      break L13;
     }
    case 19:
     {
      __ZNK4wasm7Literal2eqERKS0_(i20, i35, i36);
      HEAP32[i37 >> 2] = HEAP32[i20 >> 2];
      HEAP32[i37 + 4 >> 2] = HEAP32[i20 + 4 >> 2];
      HEAP32[i37 + 8 >> 2] = HEAP32[i20 + 8 >> 2];
      HEAP32[i37 + 12 >> 2] = HEAP32[i20 + 12 >> 2];
      HEAP32[i37 + 16 >> 2] = 0;
      break L13;
     }
    case 20:
     {
      __ZNK4wasm7Literal2neERKS0_(i21, i35, i36);
      HEAP32[i37 >> 2] = HEAP32[i21 >> 2];
      HEAP32[i37 + 4 >> 2] = HEAP32[i21 + 4 >> 2];
      HEAP32[i37 + 8 >> 2] = HEAP32[i21 + 8 >> 2];
      HEAP32[i37 + 12 >> 2] = HEAP32[i21 + 12 >> 2];
      HEAP32[i37 + 16 >> 2] = 0;
      break L13;
     }
    case 29:
     {
      __ZNK4wasm7Literal2ltERKS0_(i22, i35, i36);
      HEAP32[i37 >> 2] = HEAP32[i22 >> 2];
      HEAP32[i37 + 4 >> 2] = HEAP32[i22 + 4 >> 2];
      HEAP32[i37 + 8 >> 2] = HEAP32[i22 + 8 >> 2];
      HEAP32[i37 + 12 >> 2] = HEAP32[i22 + 12 >> 2];
      HEAP32[i37 + 16 >> 2] = 0;
      break L13;
     }
    case 30:
     {
      __ZNK4wasm7Literal2leERKS0_(i23, i35, i36);
      HEAP32[i37 >> 2] = HEAP32[i23 >> 2];
      HEAP32[i37 + 4 >> 2] = HEAP32[i23 + 4 >> 2];
      HEAP32[i37 + 8 >> 2] = HEAP32[i23 + 8 >> 2];
      HEAP32[i37 + 12 >> 2] = HEAP32[i23 + 12 >> 2];
      HEAP32[i37 + 16 >> 2] = 0;
      break L13;
     }
    case 31:
     {
      __ZNK4wasm7Literal2gtERKS0_(i24, i35, i36);
      HEAP32[i37 >> 2] = HEAP32[i24 >> 2];
      HEAP32[i37 + 4 >> 2] = HEAP32[i24 + 4 >> 2];
      HEAP32[i37 + 8 >> 2] = HEAP32[i24 + 8 >> 2];
      HEAP32[i37 + 12 >> 2] = HEAP32[i24 + 12 >> 2];
      HEAP32[i37 + 16 >> 2] = 0;
      break L13;
     }
    case 32:
     {
      __ZNK4wasm7Literal2geERKS0_(i25, i35, i36);
      HEAP32[i37 >> 2] = HEAP32[i25 >> 2];
      HEAP32[i37 + 4 >> 2] = HEAP32[i25 + 4 >> 2];
      HEAP32[i37 + 8 >> 2] = HEAP32[i25 + 8 >> 2];
      HEAP32[i37 + 12 >> 2] = HEAP32[i25 + 12 >> 2];
      HEAP32[i37 + 16 >> 2] = 0;
      break L13;
     }
    default:
     _abort();
    } while (0);
    break;
   }
  default:
   _abort();
  } while (0);
 } else {
  HEAP32[i37 >> 2] = HEAP32[i4 >> 2];
  HEAP32[i37 + 4 >> 2] = HEAP32[i4 + 4 >> 2];
  HEAP32[i37 + 8 >> 2] = HEAP32[i4 + 8 >> 2];
  HEAP32[i37 + 12 >> 2] = HEAP32[i4 + 12 >> 2];
  HEAP32[i37 + 16 >> 2] = HEAP32[i4 + 16 >> 2];
  HEAP32[i37 + 20 >> 2] = HEAP32[i4 + 20 >> 2];
 }
 STACKTOP = i38;
 return;
}

function __ZN4wasm22SExpressionWasmBuilder15parseExpressionERNS_7ElementE(i7, i6) {
 i7 = i7 | 0;
 i6 = i6 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i8 = 0, i9 = 0;
 i9 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i5 = i9;
 i2 = __ZN4wasm7Element4listEv(i6) | 0;
 i2 = __ZN4wasm7Element3strEv(HEAP32[HEAP32[i2 >> 2] >> 2] | 0) | 0;
 i3 = _strchr(i2, 46) | 0;
 L1 : do if (i3) {
  i4 = __ZN4wasm22SExpressionWasmBuilder16stringToWasmTypeEPKcbb(i7, i2, 0, 1) | 0;
  i1 = i5;
  i2 = i1 + 16 | 0;
  do {
   HEAP8[i1 >> 0] = 0;
   i1 = i1 + 1 | 0;
  } while ((i1 | 0) < (i2 | 0));
  _strncpy(i5, i3 + 1 | 0, 15) | 0;
  L101 : do switch (HEAP8[i5 >> 0] | 0) {
  case 97:
   {
    i1 = i5 + 1 | 0;
    switch (HEAP8[i1 >> 0] | 0) {
    case 98:
     {
      i1 = __ZN4wasm22SExpressionWasmBuilder9makeUnaryERNS_7ElementENS_7UnaryOpENS_8WasmTypeE(i7, i6, 4, i4) | 0;
      i8 = 114;
      break L101;
     }
    case 100:
     {
      i1 = __ZN4wasm22SExpressionWasmBuilder10makeBinaryERNS_7ElementENS_8BinaryOpENS_8WasmTypeE(i7, i6, 0, i4) | 0;
      i8 = 114;
      break L101;
     }
    case 110:
     {
      i1 = __ZN4wasm22SExpressionWasmBuilder10makeBinaryERNS_7ElementENS_8BinaryOpENS_8WasmTypeE(i7, i6, 7, i4) | 0;
      i8 = 114;
      break L101;
     }
    default:
     {
      __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_c(__ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(__ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(37420, 14860) | 0, i5) | 0, 10) | 0;
      __ZNKSt3__18functionIFvvEEclEv(i7 + 8 | 0);
      i8 = 24;
      break L101;
     }
    }
   }
  case 99:
   {
    i1 = i5 + 1 | 0;
    i8 = 24;
    break;
   }
  case 100:
   {
    i1 = i5 + 1 | 0;
    i8 = 36;
    break;
   }
  case 101:
   {
    i1 = i5 + 1 | 0;
    i8 = 42;
    break;
   }
  case 102:
   {
    i1 = i5 + 1 | 0;
    i8 = 48;
    break;
   }
  case 103:
   {
    i1 = i5 + 1 | 0;
    i8 = 51;
    break;
   }
  case 108:
   {
    i1 = i5 + 1 | 0;
    i8 = 59;
    break;
   }
  case 109:
   {
    i1 = i5 + 1 | 0;
    i8 = 68;
    break;
   }
  case 110:
   {
    i1 = i5 + 1 | 0;
    i8 = 73;
    break;
   }
  case 111:
   {
    i1 = i5 + 1 | 0;
    i8 = 79;
    break;
   }
  case 112:
   {
    i1 = i5 + 1 | 0;
    i8 = 82;
    break;
   }
  case 114:
   {
    i1 = i5 + 1 | 0;
    i8 = 86;
    break;
   }
  case 115:
   {
    i1 = i5 + 1 | 0;
    i8 = 93;
    break;
   }
  case 116:
   {
    i1 = i5 + 1 | 0;
    i8 = 101;
    break;
   }
  case 119:
   {
    i1 = i5 + 1 | 0;
    i8 = 108;
    break;
   }
  case 120:
   {
    i1 = i5 + 1 | 0;
    i8 = 111;
    break;
   }
  default:
   {
    i1 = i7 + 8 | 0;
    i8 = 115;
   }
  } while (0);
  L124 : do if ((i8 | 0) == 24) {
   L126 : do switch (HEAP8[i1 >> 0] | 0) {
   case 101:
    {
     i1 = __ZN4wasm22SExpressionWasmBuilder9makeUnaryERNS_7ElementENS_7UnaryOpENS_8WasmTypeE(i7, i6, 5, i4) | 0;
     i8 = 114;
     break L124;
    }
   case 108:
    {
     i1 = __ZN4wasm22SExpressionWasmBuilder9makeUnaryERNS_7ElementENS_7UnaryOpENS_8WasmTypeE(i7, i6, 0, i4) | 0;
     i8 = 114;
     break L124;
    }
   case 111:
    {
     switch (HEAP8[i5 + 2 >> 0] | 0) {
     case 112:
      {
       i1 = __ZN4wasm22SExpressionWasmBuilder10makeBinaryERNS_7ElementENS_8BinaryOpENS_8WasmTypeE(i7, i6, 16, i4) | 0;
       i8 = 114;
       break L124;
      }
     case 110:
      break;
     default:
      break L126;
     }
     switch (HEAP8[i5 + 3 >> 0] | 0) {
     case 118:
      break;
     case 115:
      {
       i1 = __ZN4wasm22SExpressionWasmBuilder9makeConstERNS_7ElementENS_8WasmTypeE(i7, i6, i4) | 0;
       i8 = 114;
       break L124;
      }
     default:
      break L126;
     }
     switch (HEAP8[i5 + 8 >> 0] | 0) {
     case 115:
      {
       i1 = __ZN4wasm22SExpressionWasmBuilder9makeUnaryERNS_7ElementENS_7UnaryOpENS_8WasmTypeE(i7, i6, (HEAP8[i5 + 11 >> 0] | 0) == 51 ? 19 : 21, i4) | 0;
       i8 = 114;
       break L124;
      }
     case 117:
      {
       i1 = __ZN4wasm22SExpressionWasmBuilder9makeUnaryERNS_7ElementENS_7UnaryOpENS_8WasmTypeE(i7, i6, (HEAP8[i5 + 11 >> 0] | 0) == 51 ? 20 : 22, i4) | 0;
       i8 = 114;
       break L124;
      }
     default:
      break L126;
     }
    }
   case 116:
    {
     i1 = __ZN4wasm22SExpressionWasmBuilder9makeUnaryERNS_7ElementENS_7UnaryOpENS_8WasmTypeE(i7, i6, 1, i4) | 0;
     i8 = 114;
     break L124;
    }
   default:
    {}
   } while (0);
   __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_c(__ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(__ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(37420, 14860) | 0, i5) | 0, 10) | 0;
   __ZNKSt3__18functionIFvvEEclEv(i7 + 8 | 0);
   i8 = 36;
  } while (0);
  L141 : do if ((i8 | 0) == 36) {
   switch (HEAP8[i1 >> 0] | 0) {
   case 105:
    {
     i8 = 37;
     break;
    }
   case 101:
    {
     i1 = __ZN4wasm22SExpressionWasmBuilder9makeUnaryERNS_7ElementENS_7UnaryOpENS_8WasmTypeE(i7, i6, 24, i4) | 0;
     i8 = 114;
     break L141;
    }
   default:
    {}
   }
   L145 : do if ((i8 | 0) == 37) switch (HEAP8[i5 + 3 >> 0] | 0) {
   case 95:
    {
     i1 = __ZN4wasm22SExpressionWasmBuilder10makeBinaryERNS_7ElementENS_8BinaryOpENS_8WasmTypeE(i7, i6, (HEAP8[i5 + 4 >> 0] | 0) == 117 ? 4 : 3, i4) | 0;
     i8 = 114;
     break L141;
    }
   case 0:
    {
     i1 = __ZN4wasm22SExpressionWasmBuilder10makeBinaryERNS_7ElementENS_8BinaryOpENS_8WasmTypeE(i7, i6, 15, i4) | 0;
     i8 = 114;
     break L141;
    }
   default:
    break L145;
   } while (0);
   __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_c(__ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(__ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(37420, 14860) | 0, i5) | 0, 10) | 0;
   __ZNKSt3__18functionIFvvEEclEv(i7 + 8 | 0);
   i8 = 42;
  } while (0);
  L151 : do if ((i8 | 0) == 42) {
   switch (HEAP8[i1 >> 0] | 0) {
   case 113:
    {
     i8 = 43;
     break;
    }
   case 120:
    {
     i1 = __ZN4wasm22SExpressionWasmBuilder9makeUnaryERNS_7ElementENS_7UnaryOpENS_8WasmTypeE(i7, i6, (HEAP8[i5 + 7 >> 0] | 0) == 117 ? 12 : 11, i4) | 0;
     i8 = 114;
     break L151;
    }
   default:
    {}
   }
   L155 : do if ((i8 | 0) == 43) switch (HEAP8[i5 + 2 >> 0] | 0) {
   case 0:
    {
     i1 = __ZN4wasm22SExpressionWasmBuilder10makeBinaryERNS_7ElementENS_8BinaryOpENS_8WasmTypeE(i7, i6, 19, i4) | 0;
     i8 = 114;
     break L151;
    }
   case 122:
    {
     i1 = __ZN4wasm22SExpressionWasmBuilder9makeUnaryERNS_7ElementENS_7UnaryOpENS_8WasmTypeE(i7, i6, 10, 1) | 0;
     i8 = 114;
     break L151;
    }
   default:
    break L155;
   } while (0);
   __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_c(__ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(__ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(37420, 14860) | 0, i5) | 0, 10) | 0;
   __ZNKSt3__18functionIFvvEEclEv(i7 + 8 | 0);
   i8 = 48;
  } while (0);
  do if ((i8 | 0) == 48) if ((HEAP8[i1 >> 0] | 0) == 108) {
   i1 = __ZN4wasm22SExpressionWasmBuilder9makeUnaryERNS_7ElementENS_7UnaryOpENS_8WasmTypeE(i7, i6, 6, i4) | 0;
   i8 = 114;
   break;
  } else {
   __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_c(__ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(__ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(37420, 14860) | 0, i5) | 0, 10) | 0;
   __ZNKSt3__18functionIFvvEEclEv(i7 + 8 | 0);
   i8 = 51;
   break;
  } while (0);
  L166 : do if ((i8 | 0) == 51) {
   L168 : do switch (HEAP8[i1 >> 0] | 0) {
   case 116:
    switch (HEAP8[i5 + 2 >> 0] | 0) {
    case 95:
     {
      i1 = __ZN4wasm22SExpressionWasmBuilder10makeBinaryERNS_7ElementENS_8BinaryOpENS_8WasmTypeE(i7, i6, (HEAP8[i5 + 3 >> 0] | 0) == 117 ? 26 : 25, i4) | 0;
      i8 = 114;
      break L166;
     }
    case 0:
     {
      i1 = __ZN4wasm22SExpressionWasmBuilder10makeBinaryERNS_7ElementENS_8BinaryOpENS_8WasmTypeE(i7, i6, 31, i4) | 0;
      i8 = 114;
      break L166;
     }
    default:
     break L168;
    }
   case 101:
    switch (HEAP8[i5 + 2 >> 0] | 0) {
    case 95:
     {
      i1 = __ZN4wasm22SExpressionWasmBuilder10makeBinaryERNS_7ElementENS_8BinaryOpENS_8WasmTypeE(i7, i6, (HEAP8[i5 + 3 >> 0] | 0) == 117 ? 28 : 27, i4) | 0;
      i8 = 114;
      break L166;
     }
    case 0:
     {
      i1 = __ZN4wasm22SExpressionWasmBuilder10makeBinaryERNS_7ElementENS_8BinaryOpENS_8WasmTypeE(i7, i6, 32, i4) | 0;
      i8 = 114;
      break L166;
     }
    default:
     break L168;
    }
   default:
    {}
   } while (0);
   __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_c(__ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(__ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(37420, 14860) | 0, i5) | 0, 10) | 0;
   __ZNKSt3__18functionIFvvEEclEv(i7 + 8 | 0);
   i8 = 59;
  } while (0);
  L178 : do if ((i8 | 0) == 59) {
   L180 : do switch (HEAP8[i1 >> 0] | 0) {
   case 116:
    switch (HEAP8[i5 + 2 >> 0] | 0) {
    case 95:
     {
      i1 = __ZN4wasm22SExpressionWasmBuilder10makeBinaryERNS_7ElementENS_8BinaryOpENS_8WasmTypeE(i7, i6, (HEAP8[i5 + 3 >> 0] | 0) == 117 ? 22 : 21, i4) | 0;
      i8 = 114;
      break L178;
     }
    case 0:
     {
      i1 = __ZN4wasm22SExpressionWasmBuilder10makeBinaryERNS_7ElementENS_8BinaryOpENS_8WasmTypeE(i7, i6, 29, i4) | 0;
      i8 = 114;
      break L178;
     }
    default:
     break L180;
    }
   case 101:
    switch (HEAP8[i5 + 2 >> 0] | 0) {
    case 95:
     {
      i1 = __ZN4wasm22SExpressionWasmBuilder10makeBinaryERNS_7ElementENS_8BinaryOpENS_8WasmTypeE(i7, i6, (HEAP8[i5 + 3 >> 0] | 0) == 117 ? 24 : 23, i4) | 0;
      i8 = 114;
      break L178;
     }
    case 0:
     {
      i1 = __ZN4wasm22SExpressionWasmBuilder10makeBinaryERNS_7ElementENS_8BinaryOpENS_8WasmTypeE(i7, i6, 30, i4) | 0;
      i8 = 114;
      break L178;
     }
    default:
     break L180;
    }
   case 111:
    {
     i1 = __ZN4wasm22SExpressionWasmBuilder8makeLoadERNS_7ElementENS_8WasmTypeE(i7, i6, i4) | 0;
     i8 = 114;
     break L178;
    }
   default:
    {}
   } while (0);
   __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_c(__ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(__ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(37420, 14860) | 0, i5) | 0, 10) | 0;
   __ZNKSt3__18functionIFvvEEclEv(i7 + 8 | 0);
   i8 = 68;
  } while (0);
  L191 : do if ((i8 | 0) == 68) switch (HEAP8[i1 >> 0] | 0) {
  case 105:
   {
    i1 = __ZN4wasm22SExpressionWasmBuilder10makeBinaryERNS_7ElementENS_8BinaryOpENS_8WasmTypeE(i7, i6, 17, i4) | 0;
    i8 = 114;
    break L191;
   }
  case 97:
   {
    i1 = __ZN4wasm22SExpressionWasmBuilder10makeBinaryERNS_7ElementENS_8BinaryOpENS_8WasmTypeE(i7, i6, 18, i4) | 0;
    i8 = 114;
    break L191;
   }
  case 117:
   {
    i1 = __ZN4wasm22SExpressionWasmBuilder10makeBinaryERNS_7ElementENS_8BinaryOpENS_8WasmTypeE(i7, i6, 2, i4) | 0;
    i8 = 114;
    break L191;
   }
  default:
   {
    __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_c(__ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(__ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(37420, 14860) | 0, i5) | 0, 10) | 0;
    __ZNKSt3__18functionIFvvEEclEv(i7 + 8 | 0);
    i8 = 73;
    break L191;
   }
  } while (0);
  L198 : do if ((i8 | 0) == 73) {
   L200 : do if ((HEAP8[i1 >> 0] | 0) == 101) switch (HEAP8[i5 + 2 >> 0] | 0) {
   case 0:
    {
     i1 = __ZN4wasm22SExpressionWasmBuilder10makeBinaryERNS_7ElementENS_8BinaryOpENS_8WasmTypeE(i7, i6, 20, i4) | 0;
     i8 = 114;
     break L198;
    }
   case 97:
    {
     i1 = __ZN4wasm22SExpressionWasmBuilder9makeUnaryERNS_7ElementENS_7UnaryOpENS_8WasmTypeE(i7, i6, 8, i4) | 0;
     i8 = 114;
     break L198;
    }
   case 103:
    {
     i1 = __ZN4wasm22SExpressionWasmBuilder9makeUnaryERNS_7ElementENS_7UnaryOpENS_8WasmTypeE(i7, i6, 3, i4) | 0;
     i8 = 114;
     break L198;
    }
   default:
    break L200;
   } while (0);
   __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_c(__ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(__ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(37420, 14860) | 0, i5) | 0, 10) | 0;
   __ZNKSt3__18functionIFvvEEclEv(i7 + 8 | 0);
   i8 = 79;
  } while (0);
  do if ((i8 | 0) == 79) if ((HEAP8[i1 >> 0] | 0) == 114) {
   i1 = __ZN4wasm22SExpressionWasmBuilder10makeBinaryERNS_7ElementENS_8BinaryOpENS_8WasmTypeE(i7, i6, 8, i4) | 0;
   i8 = 114;
   break;
  } else {
   __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_c(__ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(__ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(37420, 14860) | 0, i5) | 0, 10) | 0;
   __ZNKSt3__18functionIFvvEEclEv(i7 + 8 | 0);
   i8 = 82;
   break;
  } while (0);
  L212 : do if ((i8 | 0) == 82) switch (HEAP8[i1 >> 0] | 0) {
  case 114:
   {
    i1 = __ZN4wasm22SExpressionWasmBuilder9makeUnaryERNS_7ElementENS_7UnaryOpENS_8WasmTypeE(i7, i6, 23, i4) | 0;
    i8 = 114;
    break L212;
   }
  case 111:
   {
    i1 = __ZN4wasm22SExpressionWasmBuilder9makeUnaryERNS_7ElementENS_7UnaryOpENS_8WasmTypeE(i7, i6, 2, i4) | 0;
    i8 = 114;
    break L212;
   }
  default:
   {
    __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_c(__ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(__ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(37420, 14860) | 0, i5) | 0, 10) | 0;
    __ZNKSt3__18functionIFvvEEclEv(i7 + 8 | 0);
    i8 = 86;
    break L212;
   }
  } while (0);
  L218 : do if ((i8 | 0) == 86) {
   L220 : do switch (HEAP8[i1 >> 0] | 0) {
   case 101:
    switch (HEAP8[i5 + 2 >> 0] | 0) {
    case 109:
     {
      i1 = __ZN4wasm22SExpressionWasmBuilder10makeBinaryERNS_7ElementENS_8BinaryOpENS_8WasmTypeE(i7, i6, (HEAP8[i5 + 4 >> 0] | 0) == 117 ? 6 : 5, i4) | 0;
      i8 = 114;
      break L218;
     }
    case 105:
     {
      i1 = __ZN4wasm22SExpressionWasmBuilder9makeUnaryERNS_7ElementENS_7UnaryOpENS_8WasmTypeE(i7, i6, (i4 + -3 | 0) >>> 0 < 2 ? 25 : 18, i4) | 0;
      i8 = 114;
      break L218;
     }
    default:
     break L220;
    }
   case 111:
    {
     if ((HEAP8[i5 + 2 >> 0] | 0) == 116) {
      i1 = __ZN4wasm22SExpressionWasmBuilder10makeBinaryERNS_7ElementENS_8BinaryOpENS_8WasmTypeE(i7, i6, (HEAP8[i5 + 3 >> 0] | 0) == 108 ? 13 : 14, i4) | 0;
      i8 = 114;
      break L218;
     }
     break;
    }
   default:
    {}
   } while (0);
   __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_c(__ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(__ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(37420, 14860) | 0, i5) | 0, 10) | 0;
   __ZNKSt3__18functionIFvvEEclEv(i7 + 8 | 0);
   i8 = 93;
  } while (0);
  L228 : do if ((i8 | 0) == 93) switch (HEAP8[i1 >> 0] | 0) {
  case 104:
   if ((HEAP8[i5 + 2 >> 0] | 0) == 108) {
    i1 = __ZN4wasm22SExpressionWasmBuilder10makeBinaryERNS_7ElementENS_8BinaryOpENS_8WasmTypeE(i7, i6, 10, i4) | 0;
    i8 = 114;
    break L228;
   } else {
    i1 = __ZN4wasm22SExpressionWasmBuilder10makeBinaryERNS_7ElementENS_8BinaryOpENS_8WasmTypeE(i7, i6, (HEAP8[i5 + 4 >> 0] | 0) == 117 ? 11 : 12, i4) | 0;
    i8 = 114;
    break L228;
   }
  case 117:
   {
    i1 = __ZN4wasm22SExpressionWasmBuilder10makeBinaryERNS_7ElementENS_8BinaryOpENS_8WasmTypeE(i7, i6, 1, i4) | 0;
    i8 = 114;
    break L228;
   }
  case 113:
   {
    i1 = __ZN4wasm22SExpressionWasmBuilder9makeUnaryERNS_7ElementENS_7UnaryOpENS_8WasmTypeE(i7, i6, 9, i4) | 0;
    i8 = 114;
    break L228;
   }
  case 116:
   {
    i1 = __ZN4wasm22SExpressionWasmBuilder9makeStoreERNS_7ElementENS_8WasmTypeE(i7, i6, i4) | 0;
    i8 = 114;
    break L228;
   }
  default:
   {
    __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_c(__ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(__ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(37420, 14860) | 0, i5) | 0, 10) | 0;
    __ZNKSt3__18functionIFvvEEclEv(i7 + 8 | 0);
    i8 = 101;
    break L228;
   }
  } while (0);
  L239 : do if ((i8 | 0) == 101) {
   L241 : do if ((HEAP8[i1 >> 0] | 0) == 114) switch (HEAP8[i5 + 6 >> 0] | 0) {
   case 115:
    {
     i1 = __ZN4wasm22SExpressionWasmBuilder9makeUnaryERNS_7ElementENS_7UnaryOpENS_8WasmTypeE(i7, i6, (HEAP8[i5 + 9 >> 0] | 0) == 51 ? 14 : 16, i4) | 0;
     i8 = 114;
     break L239;
    }
   case 117:
    {
     i1 = __ZN4wasm22SExpressionWasmBuilder9makeUnaryERNS_7ElementENS_7UnaryOpENS_8WasmTypeE(i7, i6, (HEAP8[i5 + 9 >> 0] | 0) == 51 ? 15 : 17, i4) | 0;
     i8 = 114;
     break L239;
    }
   default:
    {
     if ((HEAP8[i5 + 2 >> 0] | 0) != 117) break L241;
     i1 = __ZN4wasm22SExpressionWasmBuilder9makeUnaryERNS_7ElementENS_7UnaryOpENS_8WasmTypeE(i7, i6, 7, i4) | 0;
     i8 = 114;
     break L239;
    }
   } while (0);
   __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_c(__ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(__ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(37420, 14860) | 0, i5) | 0, 10) | 0;
   __ZNKSt3__18functionIFvvEEclEv(i7 + 8 | 0);
   i8 = 108;
  } while (0);
  do if ((i8 | 0) == 108) if ((HEAP8[i1 >> 0] | 0) == 114) {
   i1 = __ZN4wasm22SExpressionWasmBuilder9makeUnaryERNS_7ElementENS_7UnaryOpENS_8WasmTypeE(i7, i6, 13, i4) | 0;
   i8 = 114;
   break;
  } else {
   __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_c(__ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(__ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(37420, 14860) | 0, i5) | 0, 10) | 0;
   __ZNKSt3__18functionIFvvEEclEv(i7 + 8 | 0);
   i8 = 111;
   break;
  } while (0);
  do if ((i8 | 0) == 111) if ((HEAP8[i1 >> 0] | 0) == 111) {
   i1 = __ZN4wasm22SExpressionWasmBuilder10makeBinaryERNS_7ElementENS_8BinaryOpENS_8WasmTypeE(i7, i6, 9, i4) | 0;
   i8 = 114;
   break;
  } else {
   __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_c(__ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(__ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(37420, 14860) | 0, i5) | 0, 10) | 0;
   i1 = i7 + 8 | 0;
   __ZNKSt3__18functionIFvvEEclEv(i1);
   i8 = 115;
   break;
  } while (0);
  if ((i8 | 0) == 114) {
   i8 = 184;
   break;
  } else if ((i8 | 0) == 115) {
   __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_c(__ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(__ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(37420, 14860) | 0, i5) | 0, 10) | 0;
   __ZNKSt3__18functionIFvvEEclEv(i1);
   i8 = 183;
   break;
  }
 } else {
  L3 : do switch (HEAP8[i2 >> 0] | 0) {
  case 98:
   {
    i1 = i2 + 1 | 0;
    switch (HEAP8[i1 >> 0] | 0) {
    case 108:
     {
      i1 = __ZN4wasm22SExpressionWasmBuilder9makeBlockERNS_7ElementE(i7, i6) | 0;
      i8 = 184;
      break L1;
     }
    case 114:
     {
      if ((HEAP8[i2 + 2 >> 0] | 0) == 95 ? (HEAP8[i2 + 3 >> 0] | 0) == 116 : 0) {
       i1 = __ZN4wasm22SExpressionWasmBuilder14makeBreakTableERNS_7ElementE(i7, i6) | 0;
       i8 = 184;
       break L1;
      }
      i1 = __ZN4wasm22SExpressionWasmBuilder9makeBreakERNS_7ElementE(i7, i6) | 0;
      i8 = 184;
      break L1;
     }
    default:
     {
      __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_c(__ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(__ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(37420, 14860) | 0, i2) | 0, 10) | 0;
      __ZNKSt3__18functionIFvvEEclEv(i7 + 8 | 0);
      i8 = 137;
      break L3;
     }
    }
   }
  case 99:
   {
    i1 = i2 + 1 | 0;
    i8 = 137;
    break;
   }
  case 101:
   {
    i1 = i2 + 1 | 0;
    i8 = 146;
    break;
   }
  case 103:
   {
    i1 = i2 + 1 | 0;
    i8 = 149;
    break;
   }
  case 104:
   {
    i1 = i2 + 1 | 0;
    i8 = 153;
    break;
   }
  case 105:
   {
    i1 = i2 + 1 | 0;
    i8 = 156;
    break;
   }
  case 108:
   {
    i1 = i2 + 1 | 0;
    i8 = 159;
    break;
   }
  case 110:
   {
    i1 = i2 + 1 | 0;
    i8 = 162;
    break;
   }
  case 112:
   {
    i1 = i2 + 1 | 0;
    i8 = 165;
    break;
   }
  case 115:
   {
    i1 = i2 + 1 | 0;
    i8 = 168;
    break;
   }
  case 114:
   {
    i1 = i2 + 1 | 0;
    i8 = 173;
    break;
   }
  case 116:
   {
    i1 = i2 + 1 | 0;
    i8 = 176;
    break;
   }
  case 117:
   {
    i1 = i2 + 1 | 0;
    i8 = 179;
    break;
   }
  default:
   i1 = i7 + 8 | 0;
  } while (0);
  if ((i8 | 0) == 137) {
   switch (HEAP8[i1 >> 0] | 0) {
   case 97:
    {
     i8 = 138;
     break;
    }
   case 117:
    {
     i1 = __ZN4wasm22SExpressionWasmBuilder8makeHostERNS_7ElementENS_6HostOpE(i7, i6, 1) | 0;
     i8 = 184;
     break L1;
    }
   default:
    {}
   }
   if ((i8 | 0) == 138) {
    if ((i2 | 0) == (HEAP32[9017] | 0)) {
     i1 = __ZN4wasm22SExpressionWasmBuilder8makeCallERNS_7ElementE(i7, i6) | 0;
     i8 = 184;
     break;
    }
    if ((i2 | 0) == (HEAP32[9018] | 0)) {
     i1 = __ZN4wasm22SExpressionWasmBuilder14makeCallImportERNS_7ElementE(i7, i6) | 0;
     i8 = 184;
     break;
    }
    if ((i2 | 0) == (HEAP32[9019] | 0)) {
     i1 = __ZN4wasm22SExpressionWasmBuilder16makeCallIndirectERNS_7ElementE(i7, i6) | 0;
     i8 = 184;
     break;
    }
   }
   __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_c(__ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(__ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(37420, 14860) | 0, i2) | 0, 10) | 0;
   __ZNKSt3__18functionIFvvEEclEv(i7 + 8 | 0);
   i8 = 146;
  }
  do if ((i8 | 0) == 146) if ((HEAP8[i1 >> 0] | 0) == 108) {
   i1 = __ZN4wasm22SExpressionWasmBuilder14makeThenOrElseERNS_7ElementE(i7, i6) | 0;
   i8 = 184;
   break L1;
  } else {
   __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_c(__ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(__ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(37420, 14860) | 0, i2) | 0, 10) | 0;
   __ZNKSt3__18functionIFvvEEclEv(i7 + 8 | 0);
   i8 = 149;
   break;
  } while (0);
  L45 : do if ((i8 | 0) == 149) switch (HEAP8[i1 >> 0] | 0) {
  case 101:
   {
    i1 = __ZN4wasm22SExpressionWasmBuilder12makeGetLocalERNS_7ElementE(i7, i6) | 0;
    i8 = 184;
    break L1;
   }
  case 114:
   {
    i1 = __ZN4wasm22SExpressionWasmBuilder8makeHostERNS_7ElementENS_6HostOpE(i7, i6, 2) | 0;
    i8 = 184;
    break L1;
   }
  default:
   {
    __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_c(__ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(__ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(37420, 14860) | 0, i2) | 0, 10) | 0;
    __ZNKSt3__18functionIFvvEEclEv(i7 + 8 | 0);
    i8 = 153;
    break L45;
   }
  } while (0);
  do if ((i8 | 0) == 153) if ((HEAP8[i1 >> 0] | 0) == 97) {
   i1 = __ZN4wasm22SExpressionWasmBuilder8makeHostERNS_7ElementENS_6HostOpE(i7, i6, 3) | 0;
   i8 = 184;
   break L1;
  } else {
   __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_c(__ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(__ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(37420, 14860) | 0, i2) | 0, 10) | 0;
   __ZNKSt3__18functionIFvvEEclEv(i7 + 8 | 0);
   i8 = 156;
   break;
  } while (0);
  do if ((i8 | 0) == 156) if ((HEAP8[i1 >> 0] | 0) == 102) {
   i1 = __ZN4wasm22SExpressionWasmBuilder6makeIfERNS_7ElementE(i7, i6) | 0;
   i8 = 184;
   break L1;
  } else {
   __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_c(__ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(__ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(37420, 14860) | 0, i2) | 0, 10) | 0;
   __ZNKSt3__18functionIFvvEEclEv(i7 + 8 | 0);
   i8 = 159;
   break;
  } while (0);
  do if ((i8 | 0) == 159) if ((HEAP8[i1 >> 0] | 0) == 111) {
   i1 = __ZN4wasm22SExpressionWasmBuilder8makeLoopERNS_7ElementE(i7, i6) | 0;
   i8 = 184;
   break L1;
  } else {
   __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_c(__ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(__ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(37420, 14860) | 0, i2) | 0, 10) | 0;
   __ZNKSt3__18functionIFvvEEclEv(i7 + 8 | 0);
   i8 = 162;
   break;
  } while (0);
  do if ((i8 | 0) == 162) if ((HEAP8[i1 >> 0] | 0) == 111) {
   i1 = __ZN10MixedArena5allocIN4wasm3NopEEEPT_v(HEAP32[i7 + 4 >> 2] | 0) | 0;
   i8 = 184;
   break L1;
  } else {
   __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_c(__ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(__ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(37420, 14860) | 0, i2) | 0, 10) | 0;
   __ZNKSt3__18functionIFvvEEclEv(i7 + 8 | 0);
   i8 = 165;
   break;
  } while (0);
  do if ((i8 | 0) == 165) if ((HEAP8[i1 >> 0] | 0) == 97) {
   i1 = __ZN4wasm22SExpressionWasmBuilder8makeHostERNS_7ElementENS_6HostOpE(i7, i6, 0) | 0;
   i8 = 184;
   break L1;
  } else {
   __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_c(__ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(__ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(37420, 14860) | 0, i2) | 0, 10) | 0;
   __ZNKSt3__18functionIFvvEEclEv(i7 + 8 | 0);
   i8 = 168;
   break;
  } while (0);
  if ((i8 | 0) == 168) {
   L78 : do if ((HEAP8[i1 >> 0] | 0) == 101) switch (HEAP8[i2 + 2 >> 0] | 0) {
   case 116:
    {
     i1 = __ZN4wasm22SExpressionWasmBuilder12makeSetLocalERNS_7ElementE(i7, i6) | 0;
     i8 = 184;
     break L1;
    }
   case 108:
    {
     i1 = __ZN4wasm22SExpressionWasmBuilder10makeSelectERNS_7ElementE(i7, i6) | 0;
     i8 = 184;
     break L1;
    }
   default:
    break L78;
   } while (0);
   __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_c(__ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(__ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(37420, 14860) | 0, i2) | 0, 10) | 0;
   __ZNKSt3__18functionIFvvEEclEv(i7 + 8 | 0);
   i8 = 173;
  }
  do if ((i8 | 0) == 173) if ((HEAP8[i1 >> 0] | 0) == 101) {
   i1 = __ZN4wasm22SExpressionWasmBuilder10makeReturnERNS_7ElementE(i7, i6) | 0;
   i8 = 184;
   break L1;
  } else {
   __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_c(__ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(__ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(37420, 14860) | 0, i2) | 0, 10) | 0;
   __ZNKSt3__18functionIFvvEEclEv(i7 + 8 | 0);
   i8 = 176;
   break;
  } while (0);
  do if ((i8 | 0) == 176) if ((HEAP8[i1 >> 0] | 0) == 104) {
   i1 = __ZN4wasm22SExpressionWasmBuilder14makeThenOrElseERNS_7ElementE(i7, i6) | 0;
   i8 = 184;
   break L1;
  } else {
   __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_c(__ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(__ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(37420, 14860) | 0, i2) | 0, 10) | 0;
   __ZNKSt3__18functionIFvvEEclEv(i7 + 8 | 0);
   i8 = 179;
   break;
  } while (0);
  do if ((i8 | 0) == 179) if ((HEAP8[i1 >> 0] | 0) == 110) {
   i1 = __ZN10MixedArena5allocIN4wasm11UnreachableEEEPT_v(HEAP32[i7 + 4 >> 2] | 0) | 0;
   i8 = 184;
   break L1;
  } else {
   __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_c(__ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(__ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(37420, 14860) | 0, i2) | 0, 10) | 0;
   i1 = i7 + 8 | 0;
   __ZNKSt3__18functionIFvvEEclEv(i1);
   break;
  } while (0);
  __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_c(__ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(__ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(37420, 14860) | 0, i2) | 0, 10) | 0;
  __ZNKSt3__18functionIFvvEEclEv(i1);
  i8 = 183;
 } while (0);
 if ((i8 | 0) == 183) _abort(); else if ((i8 | 0) == 184) {
  STACKTOP = i9;
  return i1 | 0;
 }
 return 0;
}

function _printf_core(i50, i3, i51, i52, i53) {
 i50 = i50 | 0;
 i3 = i3 | 0;
 i51 = i51 | 0;
 i52 = i52 | 0;
 i53 = i53 | 0;
 var i1 = 0, i2 = 0, i4 = 0, i5 = 0, d6 = 0.0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, d13 = 0.0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, i18 = 0, i19 = 0, i20 = 0, i21 = 0, i22 = 0, i23 = 0, i24 = 0, i25 = 0, i26 = 0, i27 = 0, i28 = 0, i29 = 0, i30 = 0, i31 = 0, i32 = 0, i33 = 0, i34 = 0, i35 = 0, i36 = 0, i37 = 0, i38 = 0, i39 = 0, i40 = 0, i41 = 0, i42 = 0, i43 = 0, i44 = 0, i45 = 0, i46 = 0, i47 = 0, i48 = 0, i49 = 0, i54 = 0;
 i54 = STACKTOP;
 STACKTOP = STACKTOP + 624 | 0;
 i45 = i54 + 24 | 0;
 i47 = i54 + 16 | 0;
 i46 = i54 + 588 | 0;
 i42 = i54 + 576 | 0;
 i44 = i54;
 i37 = i54 + 536 | 0;
 i49 = i54 + 8 | 0;
 i48 = i54 + 528 | 0;
 i27 = (i50 | 0) != 0;
 i28 = i37 + 40 | 0;
 i36 = i28;
 i37 = i37 + 39 | 0;
 i38 = i49 + 4 | 0;
 i39 = i46;
 i40 = 0 - i39 | 0;
 i41 = i42 + 12 | 0;
 i42 = i42 + 11 | 0;
 i43 = i41;
 i29 = i43 - i39 | 0;
 i30 = -2 - i39 | 0;
 i31 = i43 + 2 | 0;
 i32 = i45 + 288 | 0;
 i33 = i46 + 9 | 0;
 i34 = i33;
 i35 = i46 + 8 | 0;
 i1 = 0;
 i4 = 0;
 i2 = 0;
 i14 = i3;
 L1 : while (1) {
  do if ((i1 | 0) > -1) if ((i4 | 0) > (2147483647 - i1 | 0)) {
   i1 = ___errno_location() | 0;
   HEAP32[i1 >> 2] = 75;
   i1 = -1;
   break;
  } else {
   i1 = i4 + i1 | 0;
   break;
  } while (0);
  i3 = HEAP8[i14 >> 0] | 0;
  if (!(i3 << 24 >> 24)) {
   i26 = 244;
   break;
  } else i4 = i14;
  L9 : while (1) {
   switch (i3 << 24 >> 24) {
   case 37:
    {
     i3 = i4;
     i26 = 9;
     break L9;
    }
   case 0:
    {
     i3 = i4;
     break L9;
    }
   default:
    {}
   }
   i25 = i4 + 1 | 0;
   i3 = HEAP8[i25 >> 0] | 0;
   i4 = i25;
  }
  L12 : do if ((i26 | 0) == 9) while (1) {
   i26 = 0;
   if ((HEAP8[i3 + 1 >> 0] | 0) != 37) break L12;
   i4 = i4 + 1 | 0;
   i3 = i3 + 2 | 0;
   if ((HEAP8[i3 >> 0] | 0) == 37) i26 = 9; else break;
  } while (0);
  i12 = i4 - i14 | 0;
  if (i27 ? (HEAP32[i50 >> 2] & 32 | 0) == 0 : 0) ___fwritex(i14, i12, i50) | 0;
  if ((i4 | 0) != (i14 | 0)) {
   i4 = i12;
   i14 = i3;
   continue;
  }
  i7 = i3 + 1 | 0;
  i4 = HEAP8[i7 >> 0] | 0;
  i5 = (i4 << 24 >> 24) + -48 | 0;
  if (i5 >>> 0 < 10) {
   i25 = (HEAP8[i3 + 2 >> 0] | 0) == 36;
   i7 = i25 ? i3 + 3 | 0 : i7;
   i4 = HEAP8[i7 >> 0] | 0;
   i10 = i25 ? i5 : -1;
   i2 = i25 ? 1 : i2;
  } else i10 = -1;
  i3 = i4 << 24 >> 24;
  L25 : do if ((i3 & -32 | 0) == 32) {
   i5 = 0;
   while (1) {
    if (!(1 << i3 + -32 & 75913)) {
     i8 = i5;
     break L25;
    }
    i5 = 1 << (i4 << 24 >> 24) + -32 | i5;
    i7 = i7 + 1 | 0;
    i4 = HEAP8[i7 >> 0] | 0;
    i3 = i4 << 24 >> 24;
    if ((i3 & -32 | 0) != 32) {
     i8 = i5;
     break;
    }
   }
  } else i8 = 0; while (0);
  do if (i4 << 24 >> 24 == 42) {
   i4 = i7 + 1 | 0;
   i3 = (HEAP8[i4 >> 0] | 0) + -48 | 0;
   if (i3 >>> 0 < 10 ? (HEAP8[i7 + 2 >> 0] | 0) == 36 : 0) {
    HEAP32[i53 + (i3 << 2) >> 2] = 10;
    i2 = 1;
    i7 = i7 + 3 | 0;
    i3 = HEAP32[i52 + ((HEAP8[i4 >> 0] | 0) + -48 << 3) >> 2] | 0;
   } else {
    if (i2 | 0) {
     i1 = -1;
     break L1;
    }
    if (!i27) {
     i11 = i8;
     i2 = 0;
     i7 = i4;
     i25 = 0;
     break;
    }
    i2 = (HEAP32[i51 >> 2] | 0) + (4 - 1) & ~(4 - 1);
    i3 = HEAP32[i2 >> 2] | 0;
    HEAP32[i51 >> 2] = i2 + 4;
    i2 = 0;
    i7 = i4;
   }
   if ((i3 | 0) < 0) {
    i11 = i8 | 8192;
    i25 = 0 - i3 | 0;
   } else {
    i11 = i8;
    i25 = i3;
   }
  } else {
   i5 = (i4 << 24 >> 24) + -48 | 0;
   if (i5 >>> 0 < 10) {
    i3 = i7;
    i4 = 0;
    do {
     i4 = (i4 * 10 | 0) + i5 | 0;
     i3 = i3 + 1 | 0;
     i5 = (HEAP8[i3 >> 0] | 0) + -48 | 0;
    } while (i5 >>> 0 < 10);
    if ((i4 | 0) < 0) {
     i1 = -1;
     break L1;
    } else {
     i11 = i8;
     i7 = i3;
     i25 = i4;
    }
   } else {
    i11 = i8;
    i25 = 0;
   }
  } while (0);
  L46 : do if ((HEAP8[i7 >> 0] | 0) == 46) {
   i3 = i7 + 1 | 0;
   i4 = HEAP8[i3 >> 0] | 0;
   if (i4 << 24 >> 24 != 42) {
    i5 = (i4 << 24 >> 24) + -48 | 0;
    if (i5 >>> 0 < 10) i4 = 0; else {
     i8 = 0;
     break;
    }
    while (1) {
     i4 = (i4 * 10 | 0) + i5 | 0;
     i3 = i3 + 1 | 0;
     i5 = (HEAP8[i3 >> 0] | 0) + -48 | 0;
     if (i5 >>> 0 >= 10) {
      i8 = i4;
      break L46;
     }
    }
   }
   i3 = i7 + 2 | 0;
   i4 = (HEAP8[i3 >> 0] | 0) + -48 | 0;
   if (i4 >>> 0 < 10 ? (HEAP8[i7 + 3 >> 0] | 0) == 36 : 0) {
    HEAP32[i53 + (i4 << 2) >> 2] = 10;
    i8 = HEAP32[i52 + ((HEAP8[i3 >> 0] | 0) + -48 << 3) >> 2] | 0;
    i3 = i7 + 4 | 0;
    break;
   }
   if (i2 | 0) {
    i1 = -1;
    break L1;
   }
   if (i27) {
    i24 = (HEAP32[i51 >> 2] | 0) + (4 - 1) & ~(4 - 1);
    i8 = HEAP32[i24 >> 2] | 0;
    HEAP32[i51 >> 2] = i24 + 4;
   } else i8 = 0;
  } else {
   i8 = -1;
   i3 = i7;
  } while (0);
  i9 = 0;
  while (1) {
   i4 = (HEAP8[i3 >> 0] | 0) + -65 | 0;
   if (i4 >>> 0 > 57) {
    i1 = -1;
    break L1;
   }
   i5 = i3 + 1 | 0;
   i4 = HEAP8[26790 + (i9 * 58 | 0) + i4 >> 0] | 0;
   i7 = i4 & 255;
   if ((i7 + -1 | 0) >>> 0 < 8) {
    i3 = i5;
    i9 = i7;
   } else {
    i24 = i5;
    break;
   }
  }
  if (!(i4 << 24 >> 24)) {
   i1 = -1;
   break;
  }
  i5 = (i10 | 0) > -1;
  do if (i4 << 24 >> 24 == 19) if (i5) {
   i1 = -1;
   break L1;
  } else i26 = 52; else {
   if (i5) {
    HEAP32[i53 + (i10 << 2) >> 2] = i7;
    i22 = i52 + (i10 << 3) | 0;
    i23 = HEAP32[i22 + 4 >> 2] | 0;
    i26 = i44;
    HEAP32[i26 >> 2] = HEAP32[i22 >> 2];
    HEAP32[i26 + 4 >> 2] = i23;
    i26 = 52;
    break;
   }
   if (!i27) {
    i1 = 0;
    break L1;
   }
   _pop_arg(i44, i7, i51);
  } while (0);
  if ((i26 | 0) == 52 ? (i26 = 0, !i27) : 0) {
   i4 = i12;
   i14 = i24;
   continue;
  }
  i10 = HEAP8[i3 >> 0] | 0;
  i10 = (i9 | 0) != 0 & (i10 & 15 | 0) == 3 ? i10 & -33 : i10;
  i5 = i11 & -65537;
  i23 = (i11 & 8192 | 0) == 0 ? i11 : i5;
  L75 : do switch (i10 | 0) {
  case 110:
   switch (i9 | 0) {
   case 0:
    {
     HEAP32[HEAP32[i44 >> 2] >> 2] = i1;
     i4 = i12;
     i14 = i24;
     continue L1;
    }
   case 1:
    {
     HEAP32[HEAP32[i44 >> 2] >> 2] = i1;
     i4 = i12;
     i14 = i24;
     continue L1;
    }
   case 2:
    {
     i4 = HEAP32[i44 >> 2] | 0;
     HEAP32[i4 >> 2] = i1;
     HEAP32[i4 + 4 >> 2] = ((i1 | 0) < 0) << 31 >> 31;
     i4 = i12;
     i14 = i24;
     continue L1;
    }
   case 3:
    {
     HEAP16[HEAP32[i44 >> 2] >> 1] = i1;
     i4 = i12;
     i14 = i24;
     continue L1;
    }
   case 4:
    {
     HEAP8[HEAP32[i44 >> 2] >> 0] = i1;
     i4 = i12;
     i14 = i24;
     continue L1;
    }
   case 6:
    {
     HEAP32[HEAP32[i44 >> 2] >> 2] = i1;
     i4 = i12;
     i14 = i24;
     continue L1;
    }
   case 7:
    {
     i4 = HEAP32[i44 >> 2] | 0;
     HEAP32[i4 >> 2] = i1;
     HEAP32[i4 + 4 >> 2] = ((i1 | 0) < 0) << 31 >> 31;
     i4 = i12;
     i14 = i24;
     continue L1;
    }
   default:
    {
     i4 = i12;
     i14 = i24;
     continue L1;
    }
   }
  case 112:
   {
    i9 = i23 | 8;
    i8 = i8 >>> 0 > 8 ? i8 : 8;
    i10 = 120;
    i26 = 64;
    break;
   }
  case 88:
  case 120:
   {
    i9 = i23;
    i26 = 64;
    break;
   }
  case 111:
   {
    i5 = i44;
    i4 = HEAP32[i5 >> 2] | 0;
    i5 = HEAP32[i5 + 4 >> 2] | 0;
    if ((i4 | 0) == 0 & (i5 | 0) == 0) i3 = i28; else {
     i3 = i28;
     do {
      i3 = i3 + -1 | 0;
      HEAP8[i3 >> 0] = i4 & 7 | 48;
      i4 = _bitshift64Lshr(i4 | 0, i5 | 0, 3) | 0;
      i5 = tempRet0;
     } while (!((i4 | 0) == 0 & (i5 | 0) == 0));
    }
    if (!(i23 & 8)) {
     i4 = i23;
     i9 = 0;
     i7 = 27270;
     i26 = 77;
    } else {
     i9 = i36 - i3 | 0;
     i4 = i23;
     i8 = (i8 | 0) > (i9 | 0) ? i8 : i9 + 1 | 0;
     i9 = 0;
     i7 = 27270;
     i26 = 77;
    }
    break;
   }
  case 105:
  case 100:
   {
    i4 = i44;
    i3 = HEAP32[i4 >> 2] | 0;
    i4 = HEAP32[i4 + 4 >> 2] | 0;
    if ((i4 | 0) < 0) {
     i3 = _i64Subtract(0, 0, i3 | 0, i4 | 0) | 0;
     i4 = tempRet0;
     i5 = i44;
     HEAP32[i5 >> 2] = i3;
     HEAP32[i5 + 4 >> 2] = i4;
     i5 = 1;
     i7 = 27270;
     i26 = 76;
     break L75;
    }
    if (!(i23 & 2048)) {
     i7 = i23 & 1;
     i5 = i7;
     i7 = (i7 | 0) == 0 ? 27270 : 27272;
     i26 = 76;
    } else {
     i5 = 1;
     i7 = 27271;
     i26 = 76;
    }
    break;
   }
  case 117:
   {
    i4 = i44;
    i3 = HEAP32[i4 >> 2] | 0;
    i4 = HEAP32[i4 + 4 >> 2] | 0;
    i5 = 0;
    i7 = 27270;
    i26 = 76;
    break;
   }
  case 99:
   {
    HEAP8[i37 >> 0] = HEAP32[i44 >> 2];
    i3 = i37;
    i10 = 1;
    i12 = 0;
    i11 = 27270;
    i4 = i28;
    break;
   }
  case 109:
   {
    i4 = ___errno_location() | 0;
    i4 = _strerror(HEAP32[i4 >> 2] | 0) | 0;
    i26 = 82;
    break;
   }
  case 115:
   {
    i4 = HEAP32[i44 >> 2] | 0;
    i4 = i4 | 0 ? i4 : 29172;
    i26 = 82;
    break;
   }
  case 67:
   {
    HEAP32[i49 >> 2] = HEAP32[i44 >> 2];
    HEAP32[i38 >> 2] = 0;
    HEAP32[i44 >> 2] = i49;
    i3 = i49;
    i8 = -1;
    i26 = 86;
    break;
   }
  case 83:
   {
    i3 = HEAP32[i44 >> 2] | 0;
    if (!i8) {
     _pad(i50, 32, i25, 0, i23);
     i3 = 0;
     i26 = 97;
    } else i26 = 86;
    break;
   }
  case 65:
  case 71:
  case 70:
  case 69:
  case 97:
  case 103:
  case 102:
  case 101:
   {
    d6 = +HEAPF64[i44 >> 3];
    HEAP32[i47 >> 2] = 0;
    HEAPF64[tempDoublePtr >> 3] = d6;
    if ((HEAP32[tempDoublePtr + 4 >> 2] | 0) >= 0) if (!(i23 & 2048)) {
     i22 = i23 & 1;
     i21 = i22;
     i22 = (i22 | 0) == 0 ? 29180 : 29185;
    } else {
     i21 = 1;
     i22 = 29182;
    } else {
     d6 = -d6;
     i21 = 1;
     i22 = 29179;
    }
    HEAPF64[tempDoublePtr >> 3] = d6;
    i20 = HEAP32[tempDoublePtr + 4 >> 2] & 2146435072;
    do if (i20 >>> 0 < 2146435072 | (i20 | 0) == 2146435072 & 0 < 0) {
     d13 = +_frexpl(d6, i47) * 2.0;
     i4 = d13 != 0.0;
     if (i4) HEAP32[i47 >> 2] = (HEAP32[i47 >> 2] | 0) + -1;
     i18 = i10 | 32;
     if ((i18 | 0) == 97) {
      i11 = i10 & 32;
      i14 = (i11 | 0) == 0 ? i22 : i22 + 9 | 0;
      i12 = i21 | 2;
      i3 = 12 - i8 | 0;
      do if (!(i8 >>> 0 > 11 | (i3 | 0) == 0)) {
       d6 = 8.0;
       do {
        i3 = i3 + -1 | 0;
        d6 = d6 * 16.0;
       } while ((i3 | 0) != 0);
       if ((HEAP8[i14 >> 0] | 0) == 45) {
        d6 = -(d6 + (-d13 - d6));
        break;
       } else {
        d6 = d13 + d6 - d6;
        break;
       }
      } else d6 = d13; while (0);
      i4 = HEAP32[i47 >> 2] | 0;
      i3 = (i4 | 0) < 0 ? 0 - i4 | 0 : i4;
      i3 = _fmt_u(i3, ((i3 | 0) < 0) << 31 >> 31, i41) | 0;
      if ((i3 | 0) == (i41 | 0)) {
       HEAP8[i42 >> 0] = 48;
       i3 = i42;
      }
      HEAP8[i3 + -1 >> 0] = (i4 >> 31 & 2) + 43;
      i9 = i3 + -2 | 0;
      HEAP8[i9 >> 0] = i10 + 15;
      i7 = (i8 | 0) < 1;
      i5 = (i23 & 8 | 0) == 0;
      i4 = i46;
      while (1) {
       i22 = ~~d6;
       i3 = i4 + 1 | 0;
       HEAP8[i4 >> 0] = HEAPU8[27254 + i22 >> 0] | i11;
       d6 = (d6 - +(i22 | 0)) * 16.0;
       do if ((i3 - i39 | 0) == 1) {
        if (i5 & (i7 & d6 == 0.0)) break;
        HEAP8[i3 >> 0] = 46;
        i3 = i4 + 2 | 0;
       } while (0);
       if (!(d6 != 0.0)) break; else i4 = i3;
      }
      i5 = i9;
      i8 = (i8 | 0) != 0 & (i30 + i3 | 0) < (i8 | 0) ? i31 + i8 - i5 | 0 : i29 - i5 + i3 | 0;
      i7 = i8 + i12 | 0;
      _pad(i50, 32, i25, i7, i23);
      if (!(HEAP32[i50 >> 2] & 32)) ___fwritex(i14, i12, i50) | 0;
      _pad(i50, 48, i25, i7, i23 ^ 65536);
      i4 = i3 - i39 | 0;
      if (!(HEAP32[i50 >> 2] & 32)) ___fwritex(i46, i4, i50) | 0;
      i3 = i43 - i5 | 0;
      _pad(i50, 48, i8 - (i4 + i3) | 0, 0, 0);
      if (!(HEAP32[i50 >> 2] & 32)) ___fwritex(i9, i3, i50) | 0;
      _pad(i50, 32, i25, i7, i23 ^ 8192);
      i3 = (i7 | 0) < (i25 | 0) ? i25 : i7;
      break;
     }
     i3 = (i8 | 0) < 0 ? 6 : i8;
     if (i4) {
      i4 = (HEAP32[i47 >> 2] | 0) + -28 | 0;
      HEAP32[i47 >> 2] = i4;
      d6 = d13 * 268435456.0;
     } else {
      d6 = d13;
      i4 = HEAP32[i47 >> 2] | 0;
     }
     i20 = (i4 | 0) < 0 ? i45 : i32;
     i19 = i20;
     i4 = i20;
     do {
      i17 = ~~d6 >>> 0;
      HEAP32[i4 >> 2] = i17;
      i4 = i4 + 4 | 0;
      d6 = (d6 - +(i17 >>> 0)) * 1.0e9;
     } while (d6 != 0.0);
     i5 = i4;
     i4 = HEAP32[i47 >> 2] | 0;
     if ((i4 | 0) > 0) {
      i8 = i20;
      while (1) {
       i9 = (i4 | 0) > 29 ? 29 : i4;
       i7 = i5 + -4 | 0;
       do if (i7 >>> 0 < i8 >>> 0) i7 = i8; else {
        i4 = 0;
        do {
         i17 = _bitshift64Shl(HEAP32[i7 >> 2] | 0, 0, i9 | 0) | 0;
         i17 = _i64Add(i17 | 0, tempRet0 | 0, i4 | 0, 0) | 0;
         i4 = tempRet0;
         i16 = ___uremdi3(i17 | 0, i4 | 0, 1e9, 0) | 0;
         HEAP32[i7 >> 2] = i16;
         i4 = ___udivdi3(i17 | 0, i4 | 0, 1e9, 0) | 0;
         i7 = i7 + -4 | 0;
        } while (i7 >>> 0 >= i8 >>> 0);
        if (!i4) {
         i7 = i8;
         break;
        }
        i7 = i8 + -4 | 0;
        HEAP32[i7 >> 2] = i4;
       } while (0);
       while (1) {
        if (i5 >>> 0 <= i7 >>> 0) break;
        i4 = i5 + -4 | 0;
        if (!(HEAP32[i4 >> 2] | 0)) i5 = i4; else break;
       }
       i4 = (HEAP32[i47 >> 2] | 0) - i9 | 0;
       HEAP32[i47 >> 2] = i4;
       if ((i4 | 0) > 0) i8 = i7; else break;
      }
     } else i7 = i20;
     if ((i4 | 0) < 0) {
      i14 = ((i3 + 25 | 0) / 9 | 0) + 1 | 0;
      i15 = (i18 | 0) == 102;
      i11 = i7;
      while (1) {
       i12 = 0 - i4 | 0;
       i12 = (i12 | 0) > 9 ? 9 : i12;
       do if (i11 >>> 0 < i5 >>> 0) {
        i4 = (1 << i12) + -1 | 0;
        i8 = 1e9 >>> i12;
        i7 = 0;
        i9 = i11;
        do {
         i17 = HEAP32[i9 >> 2] | 0;
         HEAP32[i9 >> 2] = (i17 >>> i12) + i7;
         i7 = Math_imul(i17 & i4, i8) | 0;
         i9 = i9 + 4 | 0;
        } while (i9 >>> 0 < i5 >>> 0);
        i4 = (HEAP32[i11 >> 2] | 0) == 0 ? i11 + 4 | 0 : i11;
        if (!i7) {
         i7 = i4;
         break;
        }
        HEAP32[i5 >> 2] = i7;
        i7 = i4;
        i5 = i5 + 4 | 0;
       } else i7 = (HEAP32[i11 >> 2] | 0) == 0 ? i11 + 4 | 0 : i11; while (0);
       i4 = i15 ? i20 : i7;
       i5 = (i5 - i4 >> 2 | 0) > (i14 | 0) ? i4 + (i14 << 2) | 0 : i5;
       i4 = (HEAP32[i47 >> 2] | 0) + i12 | 0;
       HEAP32[i47 >> 2] = i4;
       if ((i4 | 0) >= 0) {
        i15 = i7;
        break;
       } else i11 = i7;
      }
     } else i15 = i7;
     do if (i15 >>> 0 < i5 >>> 0) {
      i4 = (i19 - i15 >> 2) * 9 | 0;
      i8 = HEAP32[i15 >> 2] | 0;
      if (i8 >>> 0 < 10) break; else i7 = 10;
      do {
       i7 = i7 * 10 | 0;
       i4 = i4 + 1 | 0;
      } while (i8 >>> 0 >= i7 >>> 0);
     } else i4 = 0; while (0);
     i16 = (i18 | 0) == 103;
     i17 = (i3 | 0) != 0;
     i7 = i3 - ((i18 | 0) != 102 ? i4 : 0) + ((i17 & i16) << 31 >> 31) | 0;
     if ((i7 | 0) < (((i5 - i19 >> 2) * 9 | 0) + -9 | 0)) {
      i9 = i7 + 9216 | 0;
      i7 = i20 + 4 + (((i9 | 0) / 9 | 0) + -1024 << 2) | 0;
      i9 = ((i9 | 0) % 9 | 0) + 1 | 0;
      if ((i9 | 0) < 9) {
       i8 = 10;
       do {
        i8 = i8 * 10 | 0;
        i9 = i9 + 1 | 0;
       } while ((i9 | 0) != 9);
      } else i8 = 10;
      i12 = HEAP32[i7 >> 2] | 0;
      i14 = (i12 >>> 0) % (i8 >>> 0) | 0;
      i9 = (i7 + 4 | 0) == (i5 | 0);
      do if (i9 & (i14 | 0) == 0) i8 = i15; else {
       d13 = (((i12 >>> 0) / (i8 >>> 0) | 0) & 1 | 0) == 0 ? 9007199254740992.0 : 9007199254740994.0;
       i11 = (i8 | 0) / 2 | 0;
       if (i14 >>> 0 < i11 >>> 0) d6 = .5; else d6 = i9 & (i14 | 0) == (i11 | 0) ? 1.0 : 1.5;
       do if (i21) {
        if ((HEAP8[i22 >> 0] | 0) != 45) break;
        d13 = -d13;
        d6 = -d6;
       } while (0);
       i9 = i12 - i14 | 0;
       HEAP32[i7 >> 2] = i9;
       if (!(d13 + d6 != d13)) {
        i8 = i15;
        break;
       }
       i18 = i9 + i8 | 0;
       HEAP32[i7 >> 2] = i18;
       if (i18 >>> 0 > 999999999) {
        i4 = i15;
        while (1) {
         i8 = i7 + -4 | 0;
         HEAP32[i7 >> 2] = 0;
         if (i8 >>> 0 < i4 >>> 0) {
          i4 = i4 + -4 | 0;
          HEAP32[i4 >> 2] = 0;
         }
         i18 = (HEAP32[i8 >> 2] | 0) + 1 | 0;
         HEAP32[i8 >> 2] = i18;
         if (i18 >>> 0 > 999999999) i7 = i8; else {
          i11 = i4;
          i7 = i8;
          break;
         }
        }
       } else i11 = i15;
       i4 = (i19 - i11 >> 2) * 9 | 0;
       i9 = HEAP32[i11 >> 2] | 0;
       if (i9 >>> 0 < 10) {
        i8 = i11;
        break;
       } else i8 = 10;
       do {
        i8 = i8 * 10 | 0;
        i4 = i4 + 1 | 0;
       } while (i9 >>> 0 >= i8 >>> 0);
       i8 = i11;
      } while (0);
      i18 = i7 + 4 | 0;
      i15 = i8;
      i5 = i5 >>> 0 > i18 >>> 0 ? i18 : i5;
     }
     i12 = 0 - i4 | 0;
     while (1) {
      if (i5 >>> 0 <= i15 >>> 0) {
       i14 = 0;
       i18 = i5;
       break;
      }
      i7 = i5 + -4 | 0;
      if (!(HEAP32[i7 >> 2] | 0)) i5 = i7; else {
       i14 = 1;
       i18 = i5;
       break;
      }
     }
     do if (i16) {
      i3 = (i17 & 1 ^ 1) + i3 | 0;
      if ((i3 | 0) > (i4 | 0) & (i4 | 0) > -5) {
       i10 = i10 + -1 | 0;
       i3 = i3 + -1 - i4 | 0;
      } else {
       i10 = i10 + -2 | 0;
       i3 = i3 + -1 | 0;
      }
      i5 = i23 & 8;
      if (i5 | 0) break;
      do if (i14) {
       i5 = HEAP32[i18 + -4 >> 2] | 0;
       if (!i5) {
        i7 = 9;
        break;
       }
       if (!((i5 >>> 0) % 10 | 0)) {
        i8 = 10;
        i7 = 0;
       } else {
        i7 = 0;
        break;
       }
       do {
        i8 = i8 * 10 | 0;
        i7 = i7 + 1 | 0;
       } while (!((i5 >>> 0) % (i8 >>> 0) | 0 | 0));
      } else i7 = 9; while (0);
      i5 = ((i18 - i19 >> 2) * 9 | 0) + -9 | 0;
      if ((i10 | 32 | 0) == 102) {
       i5 = i5 - i7 | 0;
       i5 = (i5 | 0) < 0 ? 0 : i5;
       i3 = (i3 | 0) < (i5 | 0) ? i3 : i5;
       i5 = 0;
       break;
      } else {
       i5 = i5 + i4 - i7 | 0;
       i5 = (i5 | 0) < 0 ? 0 : i5;
       i3 = (i3 | 0) < (i5 | 0) ? i3 : i5;
       i5 = 0;
       break;
      }
     } else i5 = i23 & 8; while (0);
     i11 = i3 | i5;
     i8 = (i11 | 0) != 0 & 1;
     i9 = (i10 | 32 | 0) == 102;
     if (i9) {
      i4 = (i4 | 0) > 0 ? i4 : 0;
      i10 = 0;
     } else {
      i7 = (i4 | 0) < 0 ? i12 : i4;
      i7 = _fmt_u(i7, ((i7 | 0) < 0) << 31 >> 31, i41) | 0;
      if ((i43 - i7 | 0) < 2) do {
       i7 = i7 + -1 | 0;
       HEAP8[i7 >> 0] = 48;
      } while ((i43 - i7 | 0) < 2);
      HEAP8[i7 + -1 >> 0] = (i4 >> 31 & 2) + 43;
      i19 = i7 + -2 | 0;
      HEAP8[i19 >> 0] = i10;
      i4 = i43 - i19 | 0;
      i10 = i19;
     }
     i12 = i21 + 1 + i3 + i8 + i4 | 0;
     _pad(i50, 32, i25, i12, i23);
     if (!(HEAP32[i50 >> 2] & 32)) ___fwritex(i22, i21, i50) | 0;
     _pad(i50, 48, i25, i12, i23 ^ 65536);
     do if (i9) {
      i7 = i15 >>> 0 > i20 >>> 0 ? i20 : i15;
      i4 = i7;
      do {
       i5 = _fmt_u(HEAP32[i4 >> 2] | 0, 0, i33) | 0;
       do if ((i4 | 0) == (i7 | 0)) {
        if ((i5 | 0) != (i33 | 0)) break;
        HEAP8[i35 >> 0] = 48;
        i5 = i35;
       } else {
        if (i5 >>> 0 <= i46 >>> 0) break;
        _memset(i46 | 0, 48, i5 - i39 | 0) | 0;
        do i5 = i5 + -1 | 0; while (i5 >>> 0 > i46 >>> 0);
       } while (0);
       if (!(HEAP32[i50 >> 2] & 32)) ___fwritex(i5, i34 - i5 | 0, i50) | 0;
       i4 = i4 + 4 | 0;
      } while (i4 >>> 0 <= i20 >>> 0);
      do if (i11 | 0) {
       if (HEAP32[i50 >> 2] & 32 | 0) break;
       ___fwritex(34660, 1, i50) | 0;
      } while (0);
      if ((i3 | 0) > 0 & i4 >>> 0 < i18 >>> 0) {
       i5 = i4;
       while (1) {
        i4 = _fmt_u(HEAP32[i5 >> 2] | 0, 0, i33) | 0;
        if (i4 >>> 0 > i46 >>> 0) {
         _memset(i46 | 0, 48, i4 - i39 | 0) | 0;
         do i4 = i4 + -1 | 0; while (i4 >>> 0 > i46 >>> 0);
        }
        if (!(HEAP32[i50 >> 2] & 32)) ___fwritex(i4, (i3 | 0) > 9 ? 9 : i3, i50) | 0;
        i5 = i5 + 4 | 0;
        i4 = i3 + -9 | 0;
        if (!((i3 | 0) > 9 & i5 >>> 0 < i18 >>> 0)) {
         i3 = i4;
         break;
        } else i3 = i4;
       }
      }
      _pad(i50, 48, i3 + 9 | 0, 9, 0);
     } else {
      i9 = i14 ? i18 : i15 + 4 | 0;
      if ((i3 | 0) > -1) {
       i8 = (i5 | 0) == 0;
       i7 = i15;
       do {
        i4 = _fmt_u(HEAP32[i7 >> 2] | 0, 0, i33) | 0;
        if ((i4 | 0) == (i33 | 0)) {
         HEAP8[i35 >> 0] = 48;
         i4 = i35;
        }
        do if ((i7 | 0) == (i15 | 0)) {
         i5 = i4 + 1 | 0;
         if (!(HEAP32[i50 >> 2] & 32)) ___fwritex(i4, 1, i50) | 0;
         if (i8 & (i3 | 0) < 1) {
          i4 = i5;
          break;
         }
         if (HEAP32[i50 >> 2] & 32 | 0) {
          i4 = i5;
          break;
         }
         ___fwritex(34660, 1, i50) | 0;
         i4 = i5;
        } else {
         if (i4 >>> 0 <= i46 >>> 0) break;
         _memset(i46 | 0, 48, i4 + i40 | 0) | 0;
         do i4 = i4 + -1 | 0; while (i4 >>> 0 > i46 >>> 0);
        } while (0);
        i5 = i34 - i4 | 0;
        if (!(HEAP32[i50 >> 2] & 32)) ___fwritex(i4, (i3 | 0) > (i5 | 0) ? i5 : i3, i50) | 0;
        i3 = i3 - i5 | 0;
        i7 = i7 + 4 | 0;
       } while (i7 >>> 0 < i9 >>> 0 & (i3 | 0) > -1);
      }
      _pad(i50, 48, i3 + 18 | 0, 18, 0);
      if (HEAP32[i50 >> 2] & 32 | 0) break;
      ___fwritex(i10, i43 - i10 | 0, i50) | 0;
     } while (0);
     _pad(i50, 32, i25, i12, i23 ^ 8192);
     i3 = (i12 | 0) < (i25 | 0) ? i25 : i12;
    } else {
     i9 = (i10 & 32 | 0) != 0;
     i8 = d6 != d6 | 0.0 != 0.0;
     i4 = i8 ? 0 : i21;
     i7 = i4 + 3 | 0;
     _pad(i50, 32, i25, i7, i5);
     i3 = HEAP32[i50 >> 2] | 0;
     if (!(i3 & 32)) {
      ___fwritex(i22, i4, i50) | 0;
      i3 = HEAP32[i50 >> 2] | 0;
     }
     if (!(i3 & 32)) ___fwritex(i8 ? (i9 ? 29219 : 29206) : i9 ? 29198 : 29202, 3, i50) | 0;
     _pad(i50, 32, i25, i7, i23 ^ 8192);
     i3 = (i7 | 0) < (i25 | 0) ? i25 : i7;
    } while (0);
    i4 = i3;
    i14 = i24;
    continue L1;
   }
  default:
   {
    i3 = i14;
    i5 = i23;
    i10 = i8;
    i12 = 0;
    i11 = 27270;
    i4 = i28;
   }
  } while (0);
  L311 : do if ((i26 | 0) == 64) {
   i5 = i44;
   i4 = HEAP32[i5 >> 2] | 0;
   i5 = HEAP32[i5 + 4 >> 2] | 0;
   i7 = i10 & 32;
   if (!((i4 | 0) == 0 & (i5 | 0) == 0)) {
    i3 = i28;
    do {
     i3 = i3 + -1 | 0;
     HEAP8[i3 >> 0] = HEAPU8[27254 + (i4 & 15) >> 0] | i7;
     i4 = _bitshift64Lshr(i4 | 0, i5 | 0, 4) | 0;
     i5 = tempRet0;
    } while (!((i4 | 0) == 0 & (i5 | 0) == 0));
    i26 = i44;
    if ((i9 & 8 | 0) == 0 | (HEAP32[i26 >> 2] | 0) == 0 & (HEAP32[i26 + 4 >> 2] | 0) == 0) {
     i4 = i9;
     i9 = 0;
     i7 = 27270;
     i26 = 77;
    } else {
     i4 = i9;
     i9 = 2;
     i7 = 27270 + (i10 >> 4) | 0;
     i26 = 77;
    }
   } else {
    i3 = i28;
    i4 = i9;
    i9 = 0;
    i7 = 27270;
    i26 = 77;
   }
  } else if ((i26 | 0) == 76) {
   i3 = _fmt_u(i3, i4, i28) | 0;
   i4 = i23;
   i9 = i5;
   i26 = 77;
  } else if ((i26 | 0) == 82) {
   i26 = 0;
   i23 = _memchr(i4, 0, i8) | 0;
   i22 = (i23 | 0) == 0;
   i3 = i4;
   i10 = i22 ? i8 : i23 - i4 | 0;
   i12 = 0;
   i11 = 27270;
   i4 = i22 ? i4 + i8 | 0 : i23;
  } else if ((i26 | 0) == 86) {
   i26 = 0;
   i5 = 0;
   i4 = 0;
   i9 = i3;
   while (1) {
    i7 = HEAP32[i9 >> 2] | 0;
    if (!i7) break;
    i4 = _wctomb(i48, i7) | 0;
    if ((i4 | 0) < 0 | i4 >>> 0 > (i8 - i5 | 0) >>> 0) break;
    i5 = i4 + i5 | 0;
    if (i8 >>> 0 > i5 >>> 0) i9 = i9 + 4 | 0; else break;
   }
   if ((i4 | 0) < 0) {
    i1 = -1;
    break L1;
   }
   _pad(i50, 32, i25, i5, i23);
   if (!i5) {
    i3 = 0;
    i26 = 97;
   } else {
    i7 = 0;
    while (1) {
     i4 = HEAP32[i3 >> 2] | 0;
     if (!i4) {
      i3 = i5;
      i26 = 97;
      break L311;
     }
     i4 = _wctomb(i48, i4) | 0;
     i7 = i4 + i7 | 0;
     if ((i7 | 0) > (i5 | 0)) {
      i3 = i5;
      i26 = 97;
      break L311;
     }
     if (!(HEAP32[i50 >> 2] & 32)) ___fwritex(i48, i4, i50) | 0;
     if (i7 >>> 0 >= i5 >>> 0) {
      i3 = i5;
      i26 = 97;
      break;
     } else i3 = i3 + 4 | 0;
    }
   }
  } while (0);
  if ((i26 | 0) == 97) {
   i26 = 0;
   _pad(i50, 32, i25, i3, i23 ^ 8192);
   i4 = (i25 | 0) > (i3 | 0) ? i25 : i3;
   i14 = i24;
   continue;
  }
  if ((i26 | 0) == 77) {
   i26 = 0;
   i5 = (i8 | 0) > -1 ? i4 & -65537 : i4;
   i4 = i44;
   i4 = (HEAP32[i4 >> 2] | 0) != 0 | (HEAP32[i4 + 4 >> 2] | 0) != 0;
   if ((i8 | 0) != 0 | i4) {
    i10 = (i4 & 1 ^ 1) + (i36 - i3) | 0;
    i10 = (i8 | 0) > (i10 | 0) ? i8 : i10;
    i12 = i9;
    i11 = i7;
    i4 = i28;
   } else {
    i3 = i28;
    i10 = 0;
    i12 = i9;
    i11 = i7;
    i4 = i28;
   }
  }
  i9 = i4 - i3 | 0;
  i7 = (i10 | 0) < (i9 | 0) ? i9 : i10;
  i8 = i12 + i7 | 0;
  i4 = (i25 | 0) < (i8 | 0) ? i8 : i25;
  _pad(i50, 32, i4, i8, i5);
  if (!(HEAP32[i50 >> 2] & 32)) ___fwritex(i11, i12, i50) | 0;
  _pad(i50, 48, i4, i8, i5 ^ 65536);
  _pad(i50, 48, i7, i9, 0);
  if (!(HEAP32[i50 >> 2] & 32)) ___fwritex(i3, i9, i50) | 0;
  _pad(i50, 32, i4, i8, i5 ^ 8192);
  i14 = i24;
 }
 L345 : do if ((i26 | 0) == 244) if (!i50) if (i2) {
  i1 = 1;
  while (1) {
   i2 = HEAP32[i53 + (i1 << 2) >> 2] | 0;
   if (!i2) break;
   _pop_arg(i52 + (i1 << 3) | 0, i2, i51);
   i1 = i1 + 1 | 0;
   if ((i1 | 0) >= 10) {
    i1 = 1;
    break L345;
   }
  }
  if ((i1 | 0) < 10) while (1) {
   if (HEAP32[i53 + (i1 << 2) >> 2] | 0) {
    i1 = -1;
    break L345;
   }
   i1 = i1 + 1 | 0;
   if ((i1 | 0) >= 10) {
    i1 = 1;
    break;
   }
  } else i1 = 1;
 } else i1 = 0; while (0);
 STACKTOP = i54;
 return i1 | 0;
}

function ___floatscan(i24, i2, i21) {
 i24 = i24 | 0;
 i2 = i2 | 0;
 i21 = i21 | 0;
 var d1 = 0.0, i3 = 0, d4 = 0.0, i5 = 0, i6 = 0, d7 = 0.0, i8 = 0, i9 = 0, i10 = 0, d11 = 0.0, d12 = 0.0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, i18 = 0, i19 = 0, i20 = 0, i22 = 0, i23 = 0, i25 = 0, i26 = 0, i27 = 0, i28 = 0, i29 = 0, i30 = 0, i31 = 0, d32 = 0.0;
 i31 = STACKTOP;
 STACKTOP = STACKTOP + 512 | 0;
 i27 = i31;
 switch (i2 | 0) {
 case 0:
  {
   i30 = 24;
   i29 = -149;
   i19 = 4;
   break;
  }
 case 1:
  {
   i30 = 53;
   i29 = -1074;
   i19 = 4;
   break;
  }
 case 2:
  {
   i30 = 53;
   i29 = -1074;
   i19 = 4;
   break;
  }
 default:
  d1 = 0.0;
 }
 L4 : do if ((i19 | 0) == 4) {
  i23 = i24 + 4 | 0;
  i22 = i24 + 100 | 0;
  do {
   i2 = HEAP32[i23 >> 2] | 0;
   if (i2 >>> 0 < (HEAP32[i22 >> 2] | 0) >>> 0) {
    HEAP32[i23 >> 2] = i2 + 1;
    i2 = HEAPU8[i2 >> 0] | 0;
   } else i2 = ___shgetc(i24) | 0;
  } while ((_isspace(i2) | 0) != 0);
  L13 : do switch (i2 | 0) {
  case 43:
  case 45:
   {
    i3 = 1 - (((i2 | 0) == 45 & 1) << 1) | 0;
    i2 = HEAP32[i23 >> 2] | 0;
    if (i2 >>> 0 < (HEAP32[i22 >> 2] | 0) >>> 0) {
     HEAP32[i23 >> 2] = i2 + 1;
     i2 = HEAPU8[i2 >> 0] | 0;
     i28 = i3;
     break L13;
    } else {
     i2 = ___shgetc(i24) | 0;
     i28 = i3;
     break L13;
    }
   }
  default:
   i28 = 1;
  } while (0);
  i3 = i2;
  i2 = 0;
  do {
   if ((i3 | 32 | 0) != (HEAP8[29210 + i2 >> 0] | 0)) break;
   do if (i2 >>> 0 < 7) {
    i3 = HEAP32[i23 >> 2] | 0;
    if (i3 >>> 0 < (HEAP32[i22 >> 2] | 0) >>> 0) {
     HEAP32[i23 >> 2] = i3 + 1;
     i3 = HEAPU8[i3 >> 0] | 0;
     break;
    } else {
     i3 = ___shgetc(i24) | 0;
     break;
    }
   } while (0);
   i2 = i2 + 1 | 0;
  } while (i2 >>> 0 < 8);
  L29 : do switch (i2 | 0) {
  case 8:
   break;
  case 3:
   {
    i19 = 23;
    break;
   }
  default:
   {
    i5 = (i21 | 0) != 0;
    if (i5 & i2 >>> 0 > 3) if ((i2 | 0) == 8) break L29; else {
     i19 = 23;
     break L29;
    }
    L34 : do if (!i2) {
     i2 = 0;
     do {
      if ((i3 | 32 | 0) != (HEAP8[29219 + i2 >> 0] | 0)) break L34;
      do if (i2 >>> 0 < 2) {
       i3 = HEAP32[i23 >> 2] | 0;
       if (i3 >>> 0 < (HEAP32[i22 >> 2] | 0) >>> 0) {
        HEAP32[i23 >> 2] = i3 + 1;
        i3 = HEAPU8[i3 >> 0] | 0;
        break;
       } else {
        i3 = ___shgetc(i24) | 0;
        break;
       }
      } while (0);
      i2 = i2 + 1 | 0;
     } while (i2 >>> 0 < 3);
    } while (0);
    switch (i2 | 0) {
    case 3:
     {
      i2 = HEAP32[i23 >> 2] | 0;
      if (i2 >>> 0 < (HEAP32[i22 >> 2] | 0) >>> 0) {
       HEAP32[i23 >> 2] = i2 + 1;
       i2 = HEAPU8[i2 >> 0] | 0;
      } else i2 = ___shgetc(i24) | 0;
      if ((i2 | 0) == 40) i2 = 1; else {
       if (!(HEAP32[i22 >> 2] | 0)) {
        d1 = nan;
        break L4;
       }
       HEAP32[i23 >> 2] = (HEAP32[i23 >> 2] | 0) + -1;
       d1 = nan;
       break L4;
      }
      while (1) {
       i3 = HEAP32[i23 >> 2] | 0;
       if (i3 >>> 0 < (HEAP32[i22 >> 2] | 0) >>> 0) {
        HEAP32[i23 >> 2] = i3 + 1;
        i3 = HEAPU8[i3 >> 0] | 0;
       } else i3 = ___shgetc(i24) | 0;
       if (!((i3 + -48 | 0) >>> 0 < 10 | (i3 + -65 | 0) >>> 0 < 26) ? !((i3 | 0) == 95 | (i3 + -97 | 0) >>> 0 < 26) : 0) break;
       i2 = i2 + 1 | 0;
      }
      if ((i3 | 0) == 41) {
       d1 = nan;
       break L4;
      }
      i3 = (HEAP32[i22 >> 2] | 0) == 0;
      if (!i3) HEAP32[i23 >> 2] = (HEAP32[i23 >> 2] | 0) + -1;
      if (!i5) {
       i30 = ___errno_location() | 0;
       HEAP32[i30 >> 2] = 22;
       ___shlim(i24, 0);
       d1 = 0.0;
       break L4;
      }
      if (!i2) {
       d1 = nan;
       break L4;
      }
      while (1) {
       i2 = i2 + -1 | 0;
       if (!i3) HEAP32[i23 >> 2] = (HEAP32[i23 >> 2] | 0) + -1;
       if (!i2) {
        d1 = nan;
        break L4;
       }
      }
     }
    case 0:
     {
      do if ((i3 | 0) == 48) {
       i2 = HEAP32[i23 >> 2] | 0;
       if (i2 >>> 0 < (HEAP32[i22 >> 2] | 0) >>> 0) {
        HEAP32[i23 >> 2] = i2 + 1;
        i2 = HEAPU8[i2 >> 0] | 0;
       } else i2 = ___shgetc(i24) | 0;
       if ((i2 | 32 | 0) != 120) {
        if (!(HEAP32[i22 >> 2] | 0)) {
         i2 = 48;
         break;
        }
        HEAP32[i23 >> 2] = (HEAP32[i23 >> 2] | 0) + -1;
        i2 = 48;
        break;
       }
       i2 = HEAP32[i23 >> 2] | 0;
       if (i2 >>> 0 < (HEAP32[i22 >> 2] | 0) >>> 0) {
        HEAP32[i23 >> 2] = i2 + 1;
        i2 = HEAPU8[i2 >> 0] | 0;
        i5 = 0;
       } else {
        i2 = ___shgetc(i24) | 0;
        i5 = 0;
       }
       L94 : while (1) {
        switch (i2 | 0) {
        case 46:
         {
          i19 = 74;
          break L94;
         }
        case 48:
         break;
        default:
         {
          i17 = 0;
          i6 = 0;
          i16 = 0;
          i3 = 0;
          i8 = i5;
          i9 = 0;
          i15 = 0;
          d7 = 1.0;
          i5 = 0;
          d1 = 0.0;
          break L94;
         }
        }
        i2 = HEAP32[i23 >> 2] | 0;
        if (i2 >>> 0 < (HEAP32[i22 >> 2] | 0) >>> 0) {
         HEAP32[i23 >> 2] = i2 + 1;
         i2 = HEAPU8[i2 >> 0] | 0;
         i5 = 1;
         continue;
        } else {
         i2 = ___shgetc(i24) | 0;
         i5 = 1;
         continue;
        }
       }
       if ((i19 | 0) == 74) {
        i2 = HEAP32[i23 >> 2] | 0;
        if (i2 >>> 0 < (HEAP32[i22 >> 2] | 0) >>> 0) {
         HEAP32[i23 >> 2] = i2 + 1;
         i2 = HEAPU8[i2 >> 0] | 0;
        } else i2 = ___shgetc(i24) | 0;
        if ((i2 | 0) == 48) {
         i5 = 0;
         i3 = 0;
         do {
          i2 = HEAP32[i23 >> 2] | 0;
          if (i2 >>> 0 < (HEAP32[i22 >> 2] | 0) >>> 0) {
           HEAP32[i23 >> 2] = i2 + 1;
           i2 = HEAPU8[i2 >> 0] | 0;
          } else i2 = ___shgetc(i24) | 0;
          i5 = _i64Add(i5 | 0, i3 | 0, -1, -1) | 0;
          i3 = tempRet0;
         } while ((i2 | 0) == 48);
         i17 = 0;
         i6 = 0;
         i16 = i5;
         i8 = 1;
         i9 = 1;
         i15 = 0;
         d7 = 1.0;
         i5 = 0;
         d1 = 0.0;
        } else {
         i17 = 0;
         i6 = 0;
         i16 = 0;
         i3 = 0;
         i8 = i5;
         i9 = 1;
         i15 = 0;
         d7 = 1.0;
         i5 = 0;
         d1 = 0.0;
        }
       }
       while (1) {
        i13 = i2 + -48 | 0;
        i10 = i2 | 32;
        if (i13 >>> 0 >= 10) {
         i14 = (i2 | 0) == 46;
         if (!(i14 | (i10 + -97 | 0) >>> 0 < 6)) {
          i10 = i16;
          i13 = i17;
          break;
         }
         if (i14) if (!i9) {
          i14 = i6;
          i3 = i17;
          i13 = i17;
          i9 = 1;
          i10 = i15;
          d4 = d7;
         } else {
          i10 = i16;
          i13 = i17;
          i2 = 46;
          break;
         } else i19 = 86;
        } else i19 = 86;
        if ((i19 | 0) == 86) {
         i19 = 0;
         i2 = (i2 | 0) > 57 ? i10 + -87 | 0 : i13;
         do if (!((i17 | 0) < 0 | (i17 | 0) == 0 & i6 >>> 0 < 8)) {
          if ((i17 | 0) < 0 | (i17 | 0) == 0 & i6 >>> 0 < 14) {
           d12 = d7 * .0625;
           i10 = i15;
           d4 = d12;
           d1 = d1 + d12 * +(i2 | 0);
           break;
          }
          if ((i15 | 0) != 0 | (i2 | 0) == 0) {
           i10 = i15;
           d4 = d7;
          } else {
           i10 = 1;
           d4 = d7;
           d1 = d1 + d7 * .5;
          }
         } else {
          i10 = i15;
          d4 = d7;
          i5 = i2 + (i5 << 4) | 0;
         } while (0);
         i6 = _i64Add(i6 | 0, i17 | 0, 1, 0) | 0;
         i14 = i16;
         i13 = tempRet0;
         i8 = 1;
        }
        i2 = HEAP32[i23 >> 2] | 0;
        if (i2 >>> 0 < (HEAP32[i22 >> 2] | 0) >>> 0) {
         HEAP32[i23 >> 2] = i2 + 1;
         i17 = i13;
         i16 = i14;
         i2 = HEAPU8[i2 >> 0] | 0;
         i15 = i10;
         d7 = d4;
         continue;
        } else {
         i17 = i13;
         i16 = i14;
         i2 = ___shgetc(i24) | 0;
         i15 = i10;
         d7 = d4;
         continue;
        }
       }
       if (!i8) {
        i2 = (HEAP32[i22 >> 2] | 0) == 0;
        if (!i2) HEAP32[i23 >> 2] = (HEAP32[i23 >> 2] | 0) + -1;
        if (i21) {
         if (!i2 ? (i18 = HEAP32[i23 >> 2] | 0, HEAP32[i23 >> 2] = i18 + -1, i9 | 0) : 0) HEAP32[i23 >> 2] = i18 + -2;
        } else ___shlim(i24, 0);
        d1 = +(i28 | 0) * 0.0;
        break L4;
       }
       i8 = (i9 | 0) == 0;
       i9 = i8 ? i6 : i10;
       i8 = i8 ? i13 : i3;
       if ((i13 | 0) < 0 | (i13 | 0) == 0 & i6 >>> 0 < 8) {
        i3 = i13;
        do {
         i5 = i5 << 4;
         i6 = _i64Add(i6 | 0, i3 | 0, 1, 0) | 0;
         i3 = tempRet0;
        } while ((i3 | 0) < 0 | (i3 | 0) == 0 & i6 >>> 0 < 8);
       }
       if ((i2 | 32 | 0) == 112) {
        i3 = _scanexp(i24, i21) | 0;
        i2 = tempRet0;
        if ((i3 | 0) == 0 & (i2 | 0) == -2147483648) {
         if (!i21) {
          ___shlim(i24, 0);
          d1 = 0.0;
          break L4;
         }
         if (!(HEAP32[i22 >> 2] | 0)) {
          i3 = 0;
          i2 = 0;
         } else {
          HEAP32[i23 >> 2] = (HEAP32[i23 >> 2] | 0) + -1;
          i3 = 0;
          i2 = 0;
         }
        }
       } else if (!(HEAP32[i22 >> 2] | 0)) {
        i3 = 0;
        i2 = 0;
       } else {
        HEAP32[i23 >> 2] = (HEAP32[i23 >> 2] | 0) + -1;
        i3 = 0;
        i2 = 0;
       }
       i27 = _bitshift64Shl(i9 | 0, i8 | 0, 2) | 0;
       i27 = _i64Add(i27 | 0, tempRet0 | 0, -32, -1) | 0;
       i2 = _i64Add(i27 | 0, tempRet0 | 0, i3 | 0, i2 | 0) | 0;
       i3 = tempRet0;
       if (!i5) {
        d1 = +(i28 | 0) * 0.0;
        break L4;
       }
       if ((i3 | 0) > 0 | (i3 | 0) == 0 & i2 >>> 0 > (0 - i29 | 0) >>> 0) {
        i30 = ___errno_location() | 0;
        HEAP32[i30 >> 2] = 34;
        d1 = +(i28 | 0) * 1797693134862315708145274.0e284 * 1797693134862315708145274.0e284;
        break L4;
       }
       i27 = i29 + -106 | 0;
       i26 = ((i27 | 0) < 0) << 31 >> 31;
       if ((i3 | 0) < (i26 | 0) | (i3 | 0) == (i26 | 0) & i2 >>> 0 < i27 >>> 0) {
        i30 = ___errno_location() | 0;
        HEAP32[i30 >> 2] = 34;
        d1 = +(i28 | 0) * 2.2250738585072014e-308 * 2.2250738585072014e-308;
        break L4;
       }
       if ((i5 | 0) > -1) {
        do {
         i26 = !(d1 >= .5);
         i27 = i26 & 1 | i5 << 1;
         i5 = i27 ^ 1;
         d1 = d1 + (i26 ? d1 : d1 + -1.0);
         i2 = _i64Add(i2 | 0, i3 | 0, -1, -1) | 0;
         i3 = tempRet0;
        } while ((i27 | 0) > -1);
        i6 = i2;
        d7 = d1;
       } else {
        i6 = i2;
        d7 = d1;
       }
       i2 = _i64Subtract(32, 0, i29 | 0, ((i29 | 0) < 0) << 31 >> 31 | 0) | 0;
       i2 = _i64Add(i6 | 0, i3 | 0, i2 | 0, tempRet0 | 0) | 0;
       i29 = tempRet0;
       if (0 > (i29 | 0) | 0 == (i29 | 0) & i30 >>> 0 > i2 >>> 0) if ((i2 | 0) < 0) {
        i2 = 0;
        i19 = 127;
       } else i19 = 125; else {
        i2 = i30;
        i19 = 125;
       }
       if ((i19 | 0) == 125) if ((i2 | 0) < 53) i19 = 127; else {
        i3 = i2;
        d4 = +(i28 | 0);
        d1 = 0.0;
       }
       if ((i19 | 0) == 127) {
        d1 = +(i28 | 0);
        i3 = i2;
        d4 = d1;
        d1 = +_copysignl(+_scalbn(1.0, 84 - i2 | 0), d1);
       }
       i30 = (i5 & 1 | 0) == 0 & (d7 != 0.0 & (i3 | 0) < 32);
       d1 = d4 * (i30 ? 0.0 : d7) + (d1 + d4 * +(((i30 & 1) + i5 | 0) >>> 0)) - d1;
       if (!(d1 != 0.0)) {
        i30 = ___errno_location() | 0;
        HEAP32[i30 >> 2] = 34;
       }
       d1 = +_scalbnl(d1, i6);
       break L4;
      } else i2 = i3; while (0);
      i25 = i29 + i30 | 0;
      i26 = 0 - i25 | 0;
      i5 = 0;
      L184 : while (1) {
       switch (i2 | 0) {
       case 46:
        {
         i19 = 138;
         break L184;
        }
       case 48:
        break;
       default:
        {
         i3 = 0;
         i10 = 0;
         i9 = 0;
         break L184;
        }
       }
       i2 = HEAP32[i23 >> 2] | 0;
       if (i2 >>> 0 < (HEAP32[i22 >> 2] | 0) >>> 0) {
        HEAP32[i23 >> 2] = i2 + 1;
        i2 = HEAPU8[i2 >> 0] | 0;
        i5 = 1;
        continue;
       } else {
        i2 = ___shgetc(i24) | 0;
        i5 = 1;
        continue;
       }
      }
      if ((i19 | 0) == 138) {
       i2 = HEAP32[i23 >> 2] | 0;
       if (i2 >>> 0 < (HEAP32[i22 >> 2] | 0) >>> 0) {
        HEAP32[i23 >> 2] = i2 + 1;
        i2 = HEAPU8[i2 >> 0] | 0;
       } else i2 = ___shgetc(i24) | 0;
       if ((i2 | 0) == 48) {
        i3 = 0;
        i2 = 0;
        while (1) {
         i3 = _i64Add(i3 | 0, i2 | 0, -1, -1) | 0;
         i5 = tempRet0;
         i2 = HEAP32[i23 >> 2] | 0;
         if (i2 >>> 0 < (HEAP32[i22 >> 2] | 0) >>> 0) {
          HEAP32[i23 >> 2] = i2 + 1;
          i2 = HEAPU8[i2 >> 0] | 0;
         } else i2 = ___shgetc(i24) | 0;
         if ((i2 | 0) == 48) i2 = i5; else {
          i10 = i5;
          i5 = 1;
          i9 = 1;
          break;
         }
        }
       } else {
        i3 = 0;
        i10 = 0;
        i9 = 1;
       }
      }
      HEAP32[i27 >> 2] = 0;
      i8 = i2 + -48 | 0;
      i6 = (i2 | 0) == 46;
      L203 : do if (i6 | i8 >>> 0 < 10) {
       i20 = i27 + 496 | 0;
       i17 = 0;
       i14 = 0;
       i15 = i6;
       i19 = i10;
       i13 = i5;
       i18 = i9;
       i5 = 0;
       i6 = 0;
       i9 = 0;
       L205 : while (1) {
        do if (i15) if (!i18) {
         i3 = i17;
         i10 = i14;
         i18 = 1;
        } else {
         i10 = i19;
         i2 = i17;
         i8 = i14;
         break L205;
        } else {
         i15 = _i64Add(i17 | 0, i14 | 0, 1, 0) | 0;
         i14 = tempRet0;
         i16 = (i2 | 0) != 48;
         if ((i6 | 0) >= 125) {
          if (!i16) {
           i10 = i19;
           i17 = i15;
           break;
          }
          HEAP32[i20 >> 2] = HEAP32[i20 >> 2] | 1;
          i10 = i19;
          i17 = i15;
          break;
         }
         i10 = i27 + (i6 << 2) | 0;
         if (i5) i8 = i2 + -48 + ((HEAP32[i10 >> 2] | 0) * 10 | 0) | 0;
         HEAP32[i10 >> 2] = i8;
         i5 = i5 + 1 | 0;
         i8 = (i5 | 0) == 9;
         i10 = i19;
         i17 = i15;
         i13 = 1;
         i5 = i8 ? 0 : i5;
         i6 = (i8 & 1) + i6 | 0;
         i9 = i16 ? i15 : i9;
        } while (0);
        i2 = HEAP32[i23 >> 2] | 0;
        if (i2 >>> 0 < (HEAP32[i22 >> 2] | 0) >>> 0) {
         HEAP32[i23 >> 2] = i2 + 1;
         i2 = HEAPU8[i2 >> 0] | 0;
        } else i2 = ___shgetc(i24) | 0;
        i8 = i2 + -48 | 0;
        i15 = (i2 | 0) == 46;
        if (!(i15 | i8 >>> 0 < 10)) {
         i8 = i18;
         i19 = 161;
         break L203;
        } else i19 = i10;
       }
       i13 = (i13 | 0) != 0;
       i19 = 169;
      } else {
       i17 = 0;
       i14 = 0;
       i13 = i5;
       i8 = i9;
       i5 = 0;
       i6 = 0;
       i9 = 0;
       i19 = 161;
      } while (0);
      do if ((i19 | 0) == 161) {
       i20 = (i8 | 0) == 0;
       i3 = i20 ? i17 : i3;
       i10 = i20 ? i14 : i10;
       i13 = (i13 | 0) != 0;
       if (!((i2 | 32 | 0) == 101 & i13)) if ((i2 | 0) > -1) {
        i2 = i17;
        i8 = i14;
        i19 = 169;
        break;
       } else {
        i2 = i17;
        i8 = i14;
        i19 = 171;
        break;
       }
       i8 = _scanexp(i24, i21) | 0;
       i2 = tempRet0;
       if ((i8 | 0) == 0 & (i2 | 0) == -2147483648) {
        if (!i21) {
         ___shlim(i24, 0);
         d1 = 0.0;
         break;
        }
        if (!(HEAP32[i22 >> 2] | 0)) {
         i8 = 0;
         i2 = 0;
        } else {
         HEAP32[i23 >> 2] = (HEAP32[i23 >> 2] | 0) + -1;
         i8 = 0;
         i2 = 0;
        }
       }
       i3 = _i64Add(i8 | 0, i2 | 0, i3 | 0, i10 | 0) | 0;
       i13 = i17;
       i10 = tempRet0;
       i8 = i14;
       i19 = 173;
      } while (0);
      if ((i19 | 0) == 169) if (HEAP32[i22 >> 2] | 0) {
       HEAP32[i23 >> 2] = (HEAP32[i23 >> 2] | 0) + -1;
       if (i13) {
        i13 = i2;
        i19 = 173;
       } else i19 = 172;
      } else i19 = 171;
      if ((i19 | 0) == 171) if (i13) {
       i13 = i2;
       i19 = 173;
      } else i19 = 172;
      do if ((i19 | 0) == 172) {
       i30 = ___errno_location() | 0;
       HEAP32[i30 >> 2] = 22;
       ___shlim(i24, 0);
       d1 = 0.0;
      } else if ((i19 | 0) == 173) {
       i2 = HEAP32[i27 >> 2] | 0;
       if (!i2) {
        d1 = +(i28 | 0) * 0.0;
        break;
       }
       if (((i8 | 0) < 0 | (i8 | 0) == 0 & i13 >>> 0 < 10) & ((i3 | 0) == (i13 | 0) & (i10 | 0) == (i8 | 0)) ? i30 >>> 0 > 30 | (i2 >>> i30 | 0) == 0 : 0) {
        d1 = +(i28 | 0) * +(i2 >>> 0);
        break;
       }
       i24 = (i29 | 0) / -2 | 0;
       i23 = ((i24 | 0) < 0) << 31 >> 31;
       if ((i10 | 0) > (i23 | 0) | (i10 | 0) == (i23 | 0) & i3 >>> 0 > i24 >>> 0) {
        i30 = ___errno_location() | 0;
        HEAP32[i30 >> 2] = 34;
        d1 = +(i28 | 0) * 1797693134862315708145274.0e284 * 1797693134862315708145274.0e284;
        break;
       }
       i24 = i29 + -106 | 0;
       i23 = ((i24 | 0) < 0) << 31 >> 31;
       if ((i10 | 0) < (i23 | 0) | (i10 | 0) == (i23 | 0) & i3 >>> 0 < i24 >>> 0) {
        i30 = ___errno_location() | 0;
        HEAP32[i30 >> 2] = 34;
        d1 = +(i28 | 0) * 2.2250738585072014e-308 * 2.2250738585072014e-308;
        break;
       }
       if (i5) {
        if ((i5 | 0) < 9) {
         i8 = i27 + (i6 << 2) | 0;
         i2 = HEAP32[i8 >> 2] | 0;
         do {
          i2 = i2 * 10 | 0;
          i5 = i5 + 1 | 0;
         } while ((i5 | 0) != 9);
         HEAP32[i8 >> 2] = i2;
        }
        i6 = i6 + 1 | 0;
       }
       if ((i9 | 0) < 9 ? (i9 | 0) <= (i3 | 0) & (i3 | 0) < 18 : 0) {
        if ((i3 | 0) == 9) {
         d1 = +(i28 | 0) * +((HEAP32[i27 >> 2] | 0) >>> 0);
         break;
        }
        if ((i3 | 0) < 9) {
         d1 = +(i28 | 0) * +((HEAP32[i27 >> 2] | 0) >>> 0) / +(HEAP32[8588 + (8 - i3 << 2) >> 2] | 0);
         break;
        }
        i24 = i30 + 27 + (Math_imul(i3, -3) | 0) | 0;
        i2 = HEAP32[i27 >> 2] | 0;
        if ((i24 | 0) > 30 | (i2 >>> i24 | 0) == 0) {
         d1 = +(i28 | 0) * +(i2 >>> 0) * +(HEAP32[8588 + (i3 + -10 << 2) >> 2] | 0);
         break;
        }
       }
       i2 = (i3 | 0) % 9 | 0;
       if (!i2) {
        i5 = 0;
        i2 = 0;
       } else {
        i13 = (i3 | 0) > -1 ? i2 : i2 + 9 | 0;
        i8 = HEAP32[8588 + (8 - i13 << 2) >> 2] | 0;
        if (i6) {
         i9 = 1e9 / (i8 | 0) | 0;
         i5 = 0;
         i2 = 0;
         i10 = 0;
         do {
          i22 = i27 + (i10 << 2) | 0;
          i23 = HEAP32[i22 >> 2] | 0;
          i24 = ((i23 >>> 0) / (i8 >>> 0) | 0) + i2 | 0;
          HEAP32[i22 >> 2] = i24;
          i2 = Math_imul((i23 >>> 0) % (i8 >>> 0) | 0, i9) | 0;
          i24 = (i10 | 0) == (i5 | 0) & (i24 | 0) == 0;
          i10 = i10 + 1 | 0;
          i3 = i24 ? i3 + -9 | 0 : i3;
          i5 = i24 ? i10 & 127 : i5;
         } while ((i10 | 0) != (i6 | 0));
         if (i2) {
          HEAP32[i27 + (i6 << 2) >> 2] = i2;
          i6 = i6 + 1 | 0;
         }
        } else {
         i5 = 0;
         i6 = 0;
        }
        i2 = 0;
        i3 = 9 - i13 + i3 | 0;
       }
       L284 : while (1) {
        i14 = (i3 | 0) < 18;
        i15 = (i3 | 0) == 18;
        i16 = i27 + (i5 << 2) | 0;
        do {
         if (!i14) {
          if (!i15) {
           i17 = i6;
           break L284;
          }
          if ((HEAP32[i16 >> 2] | 0) >>> 0 >= 9007199) {
           i3 = 18;
           i17 = i6;
           break L284;
          }
         }
         i8 = 0;
         i9 = i6 + 127 | 0;
         while (1) {
          i13 = i9 & 127;
          i10 = i27 + (i13 << 2) | 0;
          i9 = _bitshift64Shl(HEAP32[i10 >> 2] | 0, 0, 29) | 0;
          i9 = _i64Add(i9 | 0, tempRet0 | 0, i8 | 0, 0) | 0;
          i8 = tempRet0;
          if (i8 >>> 0 > 0 | (i8 | 0) == 0 & i9 >>> 0 > 1e9) {
           i24 = ___udivdi3(i9 | 0, i8 | 0, 1e9, 0) | 0;
           i9 = ___uremdi3(i9 | 0, i8 | 0, 1e9, 0) | 0;
           i8 = i24;
          } else i8 = 0;
          HEAP32[i10 >> 2] = i9;
          i24 = (i13 | 0) == (i5 | 0);
          i6 = (i13 | 0) != (i6 + 127 & 127 | 0) | i24 ? i6 : (i9 | 0) == 0 ? i13 : i6;
          if (i24) break; else i9 = i13 + -1 | 0;
         }
         i2 = i2 + -29 | 0;
        } while ((i8 | 0) == 0);
        i5 = i5 + 127 & 127;
        if ((i5 | 0) == (i6 | 0)) {
         i24 = i6 + 127 & 127;
         i6 = i27 + ((i6 + 126 & 127) << 2) | 0;
         HEAP32[i6 >> 2] = HEAP32[i6 >> 2] | HEAP32[i27 + (i24 << 2) >> 2];
         i6 = i24;
        }
        HEAP32[i27 + (i5 << 2) >> 2] = i8;
        i3 = i3 + 9 | 0;
       }
       L302 : while (1) {
        i6 = i17 + 1 & 127;
        i16 = i27 + ((i17 + 127 & 127) << 2) | 0;
        while (1) {
         i14 = (i3 | 0) == 18;
         i15 = (i3 | 0) > 27 ? 9 : 1;
         i13 = i14 ^ 1;
         while (1) {
          i9 = i5 & 127;
          i10 = (i9 | 0) == (i17 | 0);
          do if (!i10) {
           i8 = HEAP32[i27 + (i9 << 2) >> 2] | 0;
           if (i8 >>> 0 < 9007199) {
            i19 = 219;
            break;
           }
           if (i8 >>> 0 > 9007199) break;
           i8 = i5 + 1 & 127;
           if ((i8 | 0) == (i17 | 0)) {
            i19 = 219;
            break;
           }
           i8 = HEAP32[i27 + (i8 << 2) >> 2] | 0;
           if (i8 >>> 0 < 254740991) {
            i19 = 219;
            break;
           }
           if (!(i8 >>> 0 > 254740991 | i13)) {
            i3 = i9;
            i6 = i17;
            break L302;
           }
          } else i19 = 219; while (0);
          if ((i19 | 0) == 219 ? (i19 = 0, i14) : 0) {
           i19 = 220;
           break L302;
          }
          i2 = i2 + i15 | 0;
          if ((i5 | 0) == (i17 | 0)) i5 = i17; else break;
         }
         i13 = (1 << i15) + -1 | 0;
         i14 = 1e9 >>> i15;
         i9 = i5;
         i8 = 0;
         i10 = i5;
         while (1) {
          i23 = i27 + (i10 << 2) | 0;
          i24 = HEAP32[i23 >> 2] | 0;
          i5 = (i24 >>> i15) + i8 | 0;
          HEAP32[i23 >> 2] = i5;
          i8 = Math_imul(i24 & i13, i14) | 0;
          i5 = (i10 | 0) == (i9 | 0) & (i5 | 0) == 0;
          i10 = i10 + 1 & 127;
          i3 = i5 ? i3 + -9 | 0 : i3;
          i5 = i5 ? i10 : i9;
          if ((i10 | 0) == (i17 | 0)) break; else i9 = i5;
         }
         if (!i8) continue;
         if ((i6 | 0) != (i5 | 0)) break;
         HEAP32[i16 >> 2] = HEAP32[i16 >> 2] | 1;
        }
        HEAP32[i27 + (i17 << 2) >> 2] = i8;
        i17 = i6;
       }
       if ((i19 | 0) == 220) if (i10) {
        HEAP32[i27 + (i6 + -1 << 2) >> 2] = 0;
        i3 = i17;
       } else {
        i3 = i9;
        i6 = i17;
       }
       d1 = +((HEAP32[i27 + (i3 << 2) >> 2] | 0) >>> 0);
       i3 = i5 + 1 & 127;
       if ((i3 | 0) == (i6 | 0)) {
        i6 = i5 + 2 & 127;
        HEAP32[i27 + (i6 + -1 << 2) >> 2] = 0;
       }
       d12 = +(i28 | 0);
       d4 = d12 * (d1 * 1.0e9 + +((HEAP32[i27 + (i3 << 2) >> 2] | 0) >>> 0));
       i14 = i2 + 53 | 0;
       i10 = i14 - i29 | 0;
       i13 = (i10 | 0) < (i30 | 0);
       i3 = i13 & 1;
       i9 = i13 ? ((i10 | 0) < 0 ? 0 : i10) : i30;
       if ((i9 | 0) < 53) {
        d32 = +_copysignl(+_scalbn(1.0, 105 - i9 | 0), d4);
        d7 = +_fmodl(d4, +_scalbn(1.0, 53 - i9 | 0));
        d11 = d32;
        d1 = d7;
        d7 = d32 + (d4 - d7);
       } else {
        d11 = 0.0;
        d1 = 0.0;
        d7 = d4;
       }
       i8 = i5 + 2 & 127;
       do if ((i8 | 0) == (i6 | 0)) d4 = d1; else {
        i8 = HEAP32[i27 + (i8 << 2) >> 2] | 0;
        do if (i8 >>> 0 >= 5e8) {
         if (i8 >>> 0 > 5e8) {
          d1 = d12 * .75 + d1;
          break;
         }
         if ((i5 + 3 & 127 | 0) == (i6 | 0)) {
          d1 = d12 * .5 + d1;
          break;
         } else {
          d1 = d12 * .75 + d1;
          break;
         }
        } else {
         if ((i8 | 0) == 0 ? (i5 + 3 & 127 | 0) == (i6 | 0) : 0) break;
         d1 = d12 * .25 + d1;
        } while (0);
        if ((53 - i9 | 0) <= 1) {
         d4 = d1;
         break;
        }
        if (+_fmodl(d1, 1.0) != 0.0) {
         d4 = d1;
         break;
        }
        d4 = d1 + 1.0;
       } while (0);
       d1 = d7 + d4 - d11;
       do if ((i14 & 2147483647 | 0) > (-2 - i25 | 0)) {
        if (+Math_abs(+d1) >= 9007199254740992.0) {
         i3 = i13 & (i9 | 0) == (i10 | 0) ? 0 : i3;
         i2 = i2 + 1 | 0;
         d1 = d1 * .5;
        }
        if ((i2 + 50 | 0) <= (i26 | 0) ? !(d4 != 0.0 & (i3 | 0) != 0) : 0) break;
        i30 = ___errno_location() | 0;
        HEAP32[i30 >> 2] = 34;
       } while (0);
       d1 = +_scalbnl(d1, i2);
      } while (0);
      break L4;
     }
    default:
     {
      if (HEAP32[i22 >> 2] | 0) HEAP32[i23 >> 2] = (HEAP32[i23 >> 2] | 0) + -1;
      i30 = ___errno_location() | 0;
      HEAP32[i30 >> 2] = 22;
      ___shlim(i24, 0);
      d1 = 0.0;
      break L4;
     }
    }
   }
  } while (0);
  if ((i19 | 0) == 23) {
   i3 = (HEAP32[i22 >> 2] | 0) == 0;
   if (!i3) HEAP32[i23 >> 2] = (HEAP32[i23 >> 2] | 0) + -1;
   if ((i21 | 0) != 0 & i2 >>> 0 > 3) do {
    if (!i3) HEAP32[i23 >> 2] = (HEAP32[i23 >> 2] | 0) + -1;
    i2 = i2 + -1 | 0;
   } while (i2 >>> 0 > 3);
  }
  d1 = +(i28 | 0) * inf;
 } while (0);
 STACKTOP = i31;
 return +d1;
}

function __ZN10__cxxabiv112_GLOBAL__N_118parse_expr_primaryINS0_2DbEEEPKcS4_S4_RT_(i1, i18, i35) {
 i1 = i1 | 0;
 i18 = i18 | 0;
 i35 = i35 | 0;
 var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, i19 = 0, i20 = 0, i21 = 0, i22 = 0, i23 = 0, i24 = 0, i25 = 0, i26 = 0, i27 = 0, i28 = 0, i29 = 0, i30 = 0, i31 = 0, i32 = 0, i33 = 0, i34 = 0, i36 = 0;
 i36 = STACKTOP;
 STACKTOP = STACKTOP + 480 | 0;
 i29 = i36 + 72 | 0;
 i28 = i36 + 48 | 0;
 i27 = i36 + 24 | 0;
 i32 = i36;
 i31 = i36 + 432 | 0;
 i33 = i36 + 408 | 0;
 i34 = i36 + 396 | 0;
 i11 = i36 + 384 | 0;
 i19 = i36 + 360 | 0;
 i20 = i36 + 336 | 0;
 i12 = i36 + 320 | 0;
 i13 = i36 + 308 | 0;
 i14 = i36 + 296 | 0;
 i15 = i36 + 284 | 0;
 i2 = i36 + 272 | 0;
 i3 = i36 + 260 | 0;
 i4 = i36 + 248 | 0;
 i5 = i36 + 236 | 0;
 i6 = i36 + 224 | 0;
 i7 = i36 + 212 | 0;
 i8 = i36 + 200 | 0;
 i9 = i36 + 188 | 0;
 i10 = i36 + 176 | 0;
 i21 = i36 + 152 | 0;
 i22 = i36 + 140 | 0;
 i23 = i36 + 128 | 0;
 i24 = i36 + 116 | 0;
 i25 = i36 + 104 | 0;
 i26 = i36 + 92 | 0;
 i17 = i18;
 L1 : do if ((i17 - i1 | 0) > 3 ? (HEAP8[i1 >> 0] | 0) == 76 : 0) {
  i16 = i1 + 1 | 0;
  do switch (HEAP8[i16 >> 0] | 0) {
  case 84:
   break L1;
  case 119:
   {
    i34 = i1 + 2 | 0;
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj(i11, 33301, 7);
    i35 = __ZN10__cxxabiv112_GLOBAL__N_121parse_integer_literalINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_(i34, i18, i11, i35) | 0;
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i11);
    i1 = (i35 | 0) == (i34 | 0) ? i1 : i35;
    break L1;
   }
  case 98:
   {
    if ((HEAP8[i1 + 3 >> 0] | 0) != 69) break L1;
    switch (HEAP8[i1 + 2 >> 0] | 0) {
    case 48:
     {
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj6EEERAT__Kc(i19, 33623);
      i2 = i35 + 4 | 0;
      i3 = HEAP32[i2 >> 2] | 0;
      i34 = HEAP32[i35 + 8 >> 2] | 0;
      i4 = i34;
      if (i3 >>> 0 < i34 >>> 0) {
       __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i3, i19);
       HEAP32[i2 >> 2] = (HEAP32[i2 >> 2] | 0) + 24;
      } else {
       i2 = HEAP32[i35 >> 2] | 0;
       i34 = i3 - i2 | 0;
       i5 = (i34 | 0) / 24 | 0;
       i3 = i5 + 1 | 0;
       if ((i34 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i35);
       i2 = (i4 - i2 | 0) / 24 | 0;
       if (i2 >>> 0 < 1073741823) {
        i2 = i2 << 1;
        i2 = i2 >>> 0 < i3 >>> 0 ? i3 : i2;
       } else i2 = 2147483647;
       __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_(i32, i2, i5, i35 + 12 | 0);
       i34 = i32 + 8 | 0;
       i33 = HEAP32[i34 >> 2] | 0;
       __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i33, i19);
       HEAP32[i34 >> 2] = i33 + 24;
       __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i35, i32);
       __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev(i32);
      }
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i19);
      i1 = i1 + 4 | 0;
      break L1;
     }
    case 49:
     {
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj5EEERAT__Kc(i20, 33629);
      i2 = i35 + 4 | 0;
      i3 = HEAP32[i2 >> 2] | 0;
      i34 = HEAP32[i35 + 8 >> 2] | 0;
      i4 = i34;
      if (i3 >>> 0 < i34 >>> 0) {
       __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i3, i20);
       HEAP32[i2 >> 2] = (HEAP32[i2 >> 2] | 0) + 24;
      } else {
       i2 = HEAP32[i35 >> 2] | 0;
       i34 = i3 - i2 | 0;
       i5 = (i34 | 0) / 24 | 0;
       i3 = i5 + 1 | 0;
       if ((i34 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i35);
       i2 = (i4 - i2 | 0) / 24 | 0;
       if (i2 >>> 0 < 1073741823) {
        i2 = i2 << 1;
        i2 = i2 >>> 0 < i3 >>> 0 ? i3 : i2;
       } else i2 = 2147483647;
       __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_(i32, i2, i5, i35 + 12 | 0);
       i34 = i32 + 8 | 0;
       i33 = HEAP32[i34 >> 2] | 0;
       __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i33, i20);
       HEAP32[i34 >> 2] = i33 + 24;
       __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i35, i32);
       __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev(i32);
      }
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i20);
      i1 = i1 + 4 | 0;
      break L1;
     }
    default:
     break L1;
    }
   }
  case 99:
   {
    i34 = i1 + 2 | 0;
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj(i12, 33314, 4);
    i35 = __ZN10__cxxabiv112_GLOBAL__N_121parse_integer_literalINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_(i34, i18, i12, i35) | 0;
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i12);
    i1 = (i35 | 0) == (i34 | 0) ? i1 : i35;
    break L1;
   }
  case 97:
   {
    i34 = i1 + 2 | 0;
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj(i13, 33319, 11);
    i35 = __ZN10__cxxabiv112_GLOBAL__N_121parse_integer_literalINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_(i34, i18, i13, i35) | 0;
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i13);
    i1 = (i35 | 0) == (i34 | 0) ? i1 : i35;
    break L1;
   }
  case 104:
   {
    i34 = i1 + 2 | 0;
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj(i14, 33331, 13);
    i35 = __ZN10__cxxabiv112_GLOBAL__N_121parse_integer_literalINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_(i34, i18, i14, i35) | 0;
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i14);
    i1 = (i35 | 0) == (i34 | 0) ? i1 : i35;
    break L1;
   }
  case 115:
   {
    i34 = i1 + 2 | 0;
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj(i15, 33345, 5);
    i35 = __ZN10__cxxabiv112_GLOBAL__N_121parse_integer_literalINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_(i34, i18, i15, i35) | 0;
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i15);
    i1 = (i35 | 0) == (i34 | 0) ? i1 : i35;
    break L1;
   }
  case 116:
   {
    i34 = i1 + 2 | 0;
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj(i2, 33351, 14);
    i35 = __ZN10__cxxabiv112_GLOBAL__N_121parse_integer_literalINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_(i34, i18, i2, i35) | 0;
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i2);
    i1 = (i35 | 0) == (i34 | 0) ? i1 : i35;
    break L1;
   }
  case 105:
   {
    i34 = i1 + 2 | 0;
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj(i3, 44318, 0);
    i35 = __ZN10__cxxabiv112_GLOBAL__N_121parse_integer_literalINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_(i34, i18, i3, i35) | 0;
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i3);
    i1 = (i35 | 0) == (i34 | 0) ? i1 : i35;
    break L1;
   }
  case 106:
   {
    i34 = i1 + 2 | 0;
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj(i4, 33634, 1);
    i35 = __ZN10__cxxabiv112_GLOBAL__N_121parse_integer_literalINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_(i34, i18, i4, i35) | 0;
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i4);
    i1 = (i35 | 0) == (i34 | 0) ? i1 : i35;
    break L1;
   }
  case 108:
   {
    i34 = i1 + 2 | 0;
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj(i5, 33636, 1);
    i35 = __ZN10__cxxabiv112_GLOBAL__N_121parse_integer_literalINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_(i34, i18, i5, i35) | 0;
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i5);
    i1 = (i35 | 0) == (i34 | 0) ? i1 : i35;
    break L1;
   }
  case 109:
   {
    i34 = i1 + 2 | 0;
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj(i6, 33638, 2);
    i35 = __ZN10__cxxabiv112_GLOBAL__N_121parse_integer_literalINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_(i34, i18, i6, i35) | 0;
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i6);
    i1 = (i35 | 0) == (i34 | 0) ? i1 : i35;
    break L1;
   }
  case 120:
   {
    i34 = i1 + 2 | 0;
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj(i7, 33641, 2);
    i35 = __ZN10__cxxabiv112_GLOBAL__N_121parse_integer_literalINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_(i34, i18, i7, i35) | 0;
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i7);
    i1 = (i35 | 0) == (i34 | 0) ? i1 : i35;
    break L1;
   }
  case 121:
   {
    i34 = i1 + 2 | 0;
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj(i8, 33644, 3);
    i35 = __ZN10__cxxabiv112_GLOBAL__N_121parse_integer_literalINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_(i34, i18, i8, i35) | 0;
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i8);
    i1 = (i35 | 0) == (i34 | 0) ? i1 : i35;
    break L1;
   }
  case 110:
   {
    i34 = i1 + 2 | 0;
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj(i9, 33431, 8);
    i35 = __ZN10__cxxabiv112_GLOBAL__N_121parse_integer_literalINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_(i34, i18, i9, i35) | 0;
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i9);
    i1 = (i35 | 0) == (i34 | 0) ? i1 : i35;
    break L1;
   }
  case 111:
   {
    i34 = i1 + 2 | 0;
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj(i10, 33440, 17);
    i35 = __ZN10__cxxabiv112_GLOBAL__N_121parse_integer_literalINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_(i34, i18, i10, i35) | 0;
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i10);
    i1 = (i35 | 0) == (i34 | 0) ? i1 : i35;
    break L1;
   }
  case 102:
   {
    i6 = i1 + 2 | 0;
    L79 : do if ((i17 - i6 | 0) >>> 0 > 8) {
     i4 = i1 + 10 | 0;
     i2 = i32;
     i5 = i6;
     while (1) {
      i3 = HEAP8[i5 >> 0] | 0;
      if ((i5 | 0) == (i4 | 0)) {
       i30 = 41;
       break;
      }
      if (!(_isxdigit(i3 << 24 >> 24) | 0)) break;
      i29 = HEAP8[i5 >> 0] | 0;
      i28 = HEAP8[i5 + 1 >> 0] | 0;
      HEAP8[i2 >> 0] = (((i28 << 24 >> 24) + -48 | 0) >>> 0 < 10 ? 208 : 169) + (i28 & 255) + (((i29 + -48 | 0) >>> 0 < 10 ? 0 : 9) + i29 << 4);
      i2 = i2 + 1 | 0;
      i5 = i5 + 2 | 0;
     }
     do if ((i30 | 0) == 41) {
      if (i3 << 24 >> 24 == 69) {
       L89 : do if ((i32 | 0) != (i2 | 0)) {
        i3 = i32;
        while (1) {
         i2 = i2 + -1 | 0;
         if (i3 >>> 0 >= i2 >>> 0) break L89;
         i30 = HEAP8[i3 >> 0] | 0;
         HEAP8[i3 >> 0] = HEAP8[i2 >> 0] | 0;
         HEAP8[i2 >> 0] = i30;
         i3 = i3 + 1 | 0;
        }
       } while (0);
       i2 = i31;
       i3 = i2 + 24 | 0;
       do {
        HEAP8[i2 >> 0] = 0;
        i2 = i2 + 1 | 0;
       } while ((i2 | 0) < (i3 | 0));
       HEAPF64[i27 >> 3] = +HEAPF32[i32 >> 2];
       i2 = _snprintf(i31, 24, 33648, i27) | 0;
       if (i2 >>> 0 > 23) break;
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj(i34, i31, i2);
       __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE(i33, i34);
       i2 = i35 + 4 | 0;
       i3 = HEAP32[i2 >> 2] | 0;
       i32 = HEAP32[i35 + 8 >> 2] | 0;
       i4 = i32;
       if (i3 >>> 0 < i32 >>> 0) {
        __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i3, i33);
        HEAP32[i2 >> 2] = (HEAP32[i2 >> 2] | 0) + 24;
       } else {
        i2 = HEAP32[i35 >> 2] | 0;
        i32 = i3 - i2 | 0;
        i5 = (i32 | 0) / 24 | 0;
        i3 = i5 + 1 | 0;
        if ((i32 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i35);
        i2 = (i4 - i2 | 0) / 24 | 0;
        if (i2 >>> 0 < 1073741823) {
         i2 = i2 << 1;
         i2 = i2 >>> 0 < i3 >>> 0 ? i3 : i2;
        } else i2 = 2147483647;
        __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_(i27, i2, i5, i35 + 12 | 0);
        i32 = i27 + 8 | 0;
        i31 = HEAP32[i32 >> 2] | 0;
        __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i31, i33);
        HEAP32[i32 >> 2] = i31 + 24;
        __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i35, i27);
        __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev(i27);
       }
       __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i33);
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i34);
       i2 = i1 + 11 | 0;
      } else i2 = i6;
      break L79;
     } while (0);
     i2 = i6;
    } else i2 = i6; while (0);
    i1 = (i2 | 0) == (i6 | 0) ? i1 : i2;
    break L1;
   }
  case 100:
   {
    i6 = i1 + 2 | 0;
    L111 : do if ((i17 - i6 | 0) >>> 0 > 16) {
     i4 = i1 + 18 | 0;
     i2 = i32;
     i5 = i6;
     while (1) {
      i3 = HEAP8[i5 >> 0] | 0;
      if ((i5 | 0) == (i4 | 0)) {
       i30 = 63;
       break;
      }
      if (!(_isxdigit(i3 << 24 >> 24) | 0)) break;
      i29 = HEAP8[i5 >> 0] | 0;
      i27 = HEAP8[i5 + 1 >> 0] | 0;
      HEAP8[i2 >> 0] = (((i27 << 24 >> 24) + -48 | 0) >>> 0 < 10 ? 208 : 169) + (i27 & 255) + (((i29 + -48 | 0) >>> 0 < 10 ? 0 : 9) + i29 << 4);
      i2 = i2 + 1 | 0;
      i5 = i5 + 2 | 0;
     }
     do if ((i30 | 0) == 63) {
      if (i3 << 24 >> 24 == 69) {
       L121 : do if ((i32 | 0) != (i2 | 0)) {
        i3 = i32;
        while (1) {
         i2 = i2 + -1 | 0;
         if (i3 >>> 0 >= i2 >>> 0) break L121;
         i30 = HEAP8[i3 >> 0] | 0;
         HEAP8[i3 >> 0] = HEAP8[i2 >> 0] | 0;
         HEAP8[i2 >> 0] = i30;
         i3 = i3 + 1 | 0;
        }
       } while (0);
       i2 = i31;
       i3 = i2 + 32 | 0;
       do {
        HEAP8[i2 >> 0] = 0;
        i2 = i2 + 1 | 0;
       } while ((i2 | 0) < (i3 | 0));
       HEAPF64[i28 >> 3] = +HEAPF64[i32 >> 3];
       i2 = _snprintf(i31, 32, 33652, i28) | 0;
       if (i2 >>> 0 > 31) break;
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj(i34, i31, i2);
       __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE(i33, i34);
       i2 = i35 + 4 | 0;
       i3 = HEAP32[i2 >> 2] | 0;
       i32 = HEAP32[i35 + 8 >> 2] | 0;
       i4 = i32;
       if (i3 >>> 0 < i32 >>> 0) {
        __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i3, i33);
        HEAP32[i2 >> 2] = (HEAP32[i2 >> 2] | 0) + 24;
       } else {
        i2 = HEAP32[i35 >> 2] | 0;
        i32 = i3 - i2 | 0;
        i5 = (i32 | 0) / 24 | 0;
        i3 = i5 + 1 | 0;
        if ((i32 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i35);
        i2 = (i4 - i2 | 0) / 24 | 0;
        if (i2 >>> 0 < 1073741823) {
         i2 = i2 << 1;
         i2 = i2 >>> 0 < i3 >>> 0 ? i3 : i2;
        } else i2 = 2147483647;
        __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_(i28, i2, i5, i35 + 12 | 0);
        i32 = i28 + 8 | 0;
        i31 = HEAP32[i32 >> 2] | 0;
        __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i31, i33);
        HEAP32[i32 >> 2] = i31 + 24;
        __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i35, i28);
        __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev(i28);
       }
       __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i33);
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i34);
       i2 = i1 + 19 | 0;
      } else i2 = i6;
      break L111;
     } while (0);
     i2 = i6;
    } else i2 = i6; while (0);
    i1 = (i2 | 0) == (i6 | 0) ? i1 : i2;
    break L1;
   }
  case 101:
   {
    i6 = i1 + 2 | 0;
    L143 : do if ((i17 - i6 | 0) >>> 0 > 20) {
     i4 = i1 + 22 | 0;
     i2 = i32;
     i5 = i6;
     while (1) {
      i3 = HEAP8[i5 >> 0] | 0;
      if ((i5 | 0) == (i4 | 0)) {
       i30 = 85;
       break;
      }
      if (!(_isxdigit(i3 << 24 >> 24) | 0)) break;
      i28 = HEAP8[i5 >> 0] | 0;
      i27 = HEAP8[i5 + 1 >> 0] | 0;
      HEAP8[i2 >> 0] = (((i27 << 24 >> 24) + -48 | 0) >>> 0 < 10 ? 208 : 169) + (i27 & 255) + (((i28 + -48 | 0) >>> 0 < 10 ? 0 : 9) + i28 << 4);
      i2 = i2 + 1 | 0;
      i5 = i5 + 2 | 0;
     }
     do if ((i30 | 0) == 85) {
      if (i3 << 24 >> 24 == 69) {
       L153 : do if ((i32 | 0) != (i2 | 0)) {
        i3 = i32;
        while (1) {
         i2 = i2 + -1 | 0;
         if (i3 >>> 0 >= i2 >>> 0) break L153;
         i30 = HEAP8[i3 >> 0] | 0;
         HEAP8[i3 >> 0] = HEAP8[i2 >> 0] | 0;
         HEAP8[i2 >> 0] = i30;
         i3 = i3 + 1 | 0;
        }
       } while (0);
       i2 = i31;
       i3 = i2 + 40 | 0;
       do {
        HEAP8[i2 >> 0] = 0;
        i2 = i2 + 1 | 0;
       } while ((i2 | 0) < (i3 | 0));
       HEAPF64[i29 >> 3] = +HEAPF64[i32 >> 3];
       i2 = _snprintf(i31, 40, 33655, i29) | 0;
       if (i2 >>> 0 > 39) break;
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj(i34, i31, i2);
       __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE(i33, i34);
       i2 = i35 + 4 | 0;
       i3 = HEAP32[i2 >> 2] | 0;
       i32 = HEAP32[i35 + 8 >> 2] | 0;
       i4 = i32;
       if (i3 >>> 0 < i32 >>> 0) {
        __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i3, i33);
        HEAP32[i2 >> 2] = (HEAP32[i2 >> 2] | 0) + 24;
       } else {
        i2 = HEAP32[i35 >> 2] | 0;
        i32 = i3 - i2 | 0;
        i5 = (i32 | 0) / 24 | 0;
        i3 = i5 + 1 | 0;
        if ((i32 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i35);
        i2 = (i4 - i2 | 0) / 24 | 0;
        if (i2 >>> 0 < 1073741823) {
         i2 = i2 << 1;
         i2 = i2 >>> 0 < i3 >>> 0 ? i3 : i2;
        } else i2 = 2147483647;
        __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_(i29, i2, i5, i35 + 12 | 0);
        i32 = i29 + 8 | 0;
        i31 = HEAP32[i32 >> 2] | 0;
        __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i31, i33);
        HEAP32[i32 >> 2] = i31 + 24;
        __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i35, i29);
        __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev(i29);
       }
       __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i33);
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i34);
       i2 = i1 + 23 | 0;
      } else i2 = i6;
      break L143;
     } while (0);
     i2 = i6;
    } else i2 = i6; while (0);
    i1 = (i2 | 0) == (i6 | 0) ? i1 : i2;
    break L1;
   }
  case 95:
   {
    if ((HEAP8[i1 + 2 >> 0] | 0) != 90) break L1;
    i34 = i1 + 3 | 0;
    i2 = __ZN10__cxxabiv112_GLOBAL__N_114parse_encodingINS0_2DbEEEPKcS4_S4_RT_(i34, i18, i35) | 0;
    if ((i2 | 0) == (i34 | 0) | (i2 | 0) == (i18 | 0)) break L1;
    i1 = (HEAP8[i2 >> 0] | 0) == 69 ? i2 + 1 | 0 : i1;
    break L1;
   }
  default:
   {
    i6 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_(i16, i18, i35) | 0;
    if ((i6 | 0) == (i16 | 0) | (i6 | 0) == (i18 | 0)) break L1;
    if ((HEAP8[i6 >> 0] | 0) == 69) {
     i1 = i6 + 1 | 0;
     break L1;
    } else i3 = i6;
    while (1) {
     if ((i3 | 0) == (i18 | 0)) break L1;
     i2 = HEAP8[i3 >> 0] | 0;
     if (((i2 << 24 >> 24) + -48 | 0) >>> 0 >= 10) {
      i7 = i3;
      break;
     }
     i3 = i3 + 1 | 0;
    }
    if (!((i7 | 0) != (i6 | 0) & i2 << 24 >> 24 == 69)) break L1;
    i2 = HEAP32[i35 + 4 >> 2] | 0;
    if ((HEAP32[i35 >> 2] | 0) == (i2 | 0)) break L1;
    i5 = i2 + -24 | 0;
    __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv(i25, i5);
    i1 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc(i25, 0, 33619) | 0;
    HEAP32[i24 >> 2] = HEAP32[i1 >> 2];
    HEAP32[i24 + 4 >> 2] = HEAP32[i1 + 4 >> 2];
    HEAP32[i24 + 8 >> 2] = HEAP32[i1 + 8 >> 2];
    i2 = 0;
    while (1) {
     if ((i2 | 0) == 3) break;
     HEAP32[i1 + (i2 << 2) >> 2] = 0;
     i2 = i2 + 1 | 0;
    }
    i1 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc(i24, 33621) | 0;
    HEAP32[i23 >> 2] = HEAP32[i1 >> 2];
    HEAP32[i23 + 4 >> 2] = HEAP32[i1 + 4 >> 2];
    HEAP32[i23 + 8 >> 2] = HEAP32[i1 + 8 >> 2];
    i2 = 0;
    while (1) {
     if ((i2 | 0) == 3) break;
     HEAP32[i1 + (i2 << 2) >> 2] = 0;
     i2 = i2 + 1 | 0;
    }
    i3 = i7 - i6 | 0;
    if (i3 >>> 0 > 4294967279) __ZNKSt3__121__basic_string_commonILb1EE20__throw_length_errorEv(i26);
    if (i3 >>> 0 < 11) {
     HEAP8[i26 >> 0] = i3 << 1;
     i4 = i26 + 1 | 0;
    } else {
     i35 = i3 + 16 & -16;
     i4 = _malloc(i35) | 0;
     HEAP32[i26 + 8 >> 2] = i4;
     HEAP32[i26 >> 2] = i35 | 1;
     HEAP32[i26 + 4 >> 2] = i3;
    }
    i1 = i6;
    i2 = i4;
    while (1) {
     if ((i1 | 0) == (i7 | 0)) break;
     HEAP8[i2 >> 0] = HEAP8[i1 >> 0] | 0;
     i1 = i1 + 1 | 0;
     i2 = i2 + 1 | 0;
    }
    HEAP8[i4 + i3 >> 0] = 0;
    i1 = HEAP8[i26 >> 0] | 0;
    i2 = (i1 & 1) == 0;
    i1 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj(i23, i2 ? i26 + 1 | 0 : HEAP32[i26 + 8 >> 2] | 0, i2 ? (i1 & 255) >>> 1 : HEAP32[i26 + 4 >> 2] | 0) | 0;
    HEAP32[i22 >> 2] = HEAP32[i1 >> 2];
    HEAP32[i22 + 4 >> 2] = HEAP32[i1 + 4 >> 2];
    HEAP32[i22 + 8 >> 2] = HEAP32[i1 + 8 >> 2];
    i2 = 0;
    while (1) {
     if ((i2 | 0) == 3) break;
     HEAP32[i1 + (i2 << 2) >> 2] = 0;
     i2 = i2 + 1 | 0;
    }
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE(i21, i22);
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairaSEOS1_(i5, i21);
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i21);
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i22);
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i26);
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i23);
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i24);
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i25);
    i1 = i7 + 1 | 0;
    break L1;
   }
  } while (0);
 } while (0);
 STACKTOP = i36;
 return i1 | 0;
}

function __ZNSt3__19money_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE8__do_getERS4_S4_bRKNS_6localeEjRjRbRKNS_5ctypeIwEERNS_10unique_ptrIwPFvPvEEERPwSM_(i36, i37, i2, i3, i4, i38, i30, i25, i33, i34, i1) {
 i36 = i36 | 0;
 i37 = i37 | 0;
 i2 = i2 | 0;
 i3 = i3 | 0;
 i4 = i4 | 0;
 i38 = i38 | 0;
 i30 = i30 | 0;
 i25 = i25 | 0;
 i33 = i33 | 0;
 i34 = i34 | 0;
 i1 = i1 | 0;
 var i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, i18 = 0, i19 = 0, i20 = 0, i21 = 0, i22 = 0, i23 = 0, i24 = 0, i26 = 0, i27 = 0, i28 = 0, i29 = 0, i31 = 0, i32 = 0, i35 = 0, i39 = 0, i40 = 0, i41 = 0, i42 = 0, i43 = 0, i44 = 0, i45 = 0, i46 = 0, i47 = 0;
 i47 = STACKTOP;
 STACKTOP = STACKTOP + 512 | 0;
 i24 = i47 + 96 | 0;
 i8 = i47 + 104 | 0;
 i46 = i47 + 88 | 0;
 i29 = i47 + 80 | 0;
 i28 = i47 + 76 | 0;
 i31 = i47 + 504 | 0;
 i26 = i47 + 72 | 0;
 i32 = i47 + 68 | 0;
 i41 = i47 + 56 | 0;
 i45 = i47 + 44 | 0;
 i43 = i47 + 32 | 0;
 i42 = i47 + 20 | 0;
 i44 = i47 + 8 | 0;
 i27 = i47 + 4 | 0;
 i39 = i47;
 HEAP32[i24 >> 2] = i1;
 HEAP32[i46 >> 2] = i8;
 i40 = i46 + 4 | 0;
 HEAP32[i40 >> 2] = 232;
 HEAP32[i29 >> 2] = i8;
 HEAP32[i28 >> 2] = i8 + 400;
 i1 = 0;
 while (1) {
  if ((i1 | 0) == 3) break;
  HEAP32[i41 + (i1 << 2) >> 2] = 0;
  i1 = i1 + 1 | 0;
 }
 i1 = 0;
 while (1) {
  if ((i1 | 0) == 3) break;
  HEAP32[i45 + (i1 << 2) >> 2] = 0;
  i1 = i1 + 1 | 0;
 }
 i1 = 0;
 while (1) {
  if ((i1 | 0) == 3) break;
  HEAP32[i43 + (i1 << 2) >> 2] = 0;
  i1 = i1 + 1 | 0;
 }
 i1 = 0;
 while (1) {
  if ((i1 | 0) == 3) break;
  HEAP32[i42 + (i1 << 2) >> 2] = 0;
  i1 = i1 + 1 | 0;
 }
 i1 = 0;
 while (1) {
  if ((i1 | 0) == 3) break;
  HEAP32[i44 + (i1 << 2) >> 2] = 0;
  i1 = i1 + 1 | 0;
 }
 __ZNSt3__111__money_getIwE13__gather_infoEbRKNS_6localeERNS_10money_base7patternERwS8_RNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEERNS9_IwNSA_IwEENSC_IwEEEESJ_SJ_Ri(i2, i3, i31, i26, i32, i41, i45, i43, i42, i27);
 HEAP32[i34 >> 2] = HEAP32[i33 >> 2];
 i20 = i43 + 4 | 0;
 i21 = i42 + 4 | 0;
 i22 = i42 + 8 | 0;
 i23 = i43 + 8 | 0;
 i13 = (i4 & 512 | 0) != 0;
 i14 = i45 + 8 | 0;
 i15 = i45 + 4 | 0;
 i16 = i44 + 4 | 0;
 i17 = i44 + 8 | 0;
 i18 = i31 + 3 | 0;
 i19 = i41 + 4 | 0;
 i12 = 0;
 i7 = 0;
 L21 : while (1) {
  if (i12 >>> 0 >= 4) {
   i35 = 232;
   break;
  }
  i1 = HEAP32[i36 >> 2] | 0;
  do if (i1) {
   i2 = HEAP32[i1 + 12 >> 2] | 0;
   if ((i2 | 0) == (HEAP32[i1 + 16 >> 2] | 0)) i1 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 36 >> 2] & 127](i1) | 0; else i1 = HEAP32[i2 >> 2] | 0;
   if ((i1 | 0) == -1) {
    HEAP32[i36 >> 2] = 0;
    i3 = 1;
    break;
   } else {
    i3 = (HEAP32[i36 >> 2] | 0) == 0;
    break;
   }
  } else i3 = 1; while (0);
  i2 = HEAP32[i37 >> 2] | 0;
  do if (i2) {
   i1 = HEAP32[i2 + 12 >> 2] | 0;
   if ((i1 | 0) == (HEAP32[i2 + 16 >> 2] | 0)) i1 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i2 >> 2] | 0) + 36 >> 2] & 127](i2) | 0; else i1 = HEAP32[i1 >> 2] | 0;
   if ((i1 | 0) != -1) if (i3) {
    i11 = i2;
    break;
   } else {
    i35 = 232;
    break L21;
   } else {
    HEAP32[i37 >> 2] = 0;
    i35 = 31;
    break;
   }
  } else i35 = 31; while (0);
  if ((i35 | 0) == 31) {
   i35 = 0;
   if (i3) {
    i35 = 232;
    break;
   } else i11 = 0;
  }
  L46 : do switch (HEAP8[i31 + i12 >> 0] | 0) {
  case 1:
   {
    if ((i12 | 0) != 3) {
     i1 = HEAP32[i36 >> 2] | 0;
     i2 = HEAP32[i1 + 12 >> 2] | 0;
     if ((i2 | 0) == (HEAP32[i1 + 16 >> 2] | 0)) i1 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 36 >> 2] & 127](i1) | 0; else i1 = HEAP32[i2 >> 2] | 0;
     if (!(FUNCTION_TABLE_iiii[HEAP32[(HEAP32[i25 >> 2] | 0) + 12 >> 2] & 31](i25, 8192, i1) | 0)) {
      i35 = 44;
      break L21;
     }
     i1 = HEAP32[i36 >> 2] | 0;
     i2 = i1 + 12 | 0;
     i3 = HEAP32[i2 >> 2] | 0;
     if ((i3 | 0) == (HEAP32[i1 + 16 >> 2] | 0)) i1 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 40 >> 2] & 127](i1) | 0; else {
      HEAP32[i2 >> 2] = i3 + 4;
      i1 = HEAP32[i3 >> 2] | 0;
     }
     __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE9push_backEw(i44, i1);
     i1 = i11;
     i4 = i11;
     i35 = 46;
    }
    break;
   }
  case 0:
   {
    if ((i12 | 0) != 3) {
     i1 = i11;
     i4 = i11;
     i35 = 46;
    }
    break;
   }
  case 3:
   {
    i5 = HEAP8[i43 >> 0] | 0;
    i1 = (i5 & 1) == 0 ? (i5 & 255) >>> 1 : HEAP32[i20 >> 2] | 0;
    i3 = HEAP8[i42 >> 0] | 0;
    i3 = (i3 & 1) == 0 ? (i3 & 255) >>> 1 : HEAP32[i21 >> 2] | 0;
    if ((i1 | 0) != (0 - i3 | 0)) {
     i4 = (i1 | 0) == 0;
     i6 = HEAP32[i36 >> 2] | 0;
     i9 = HEAP32[i6 + 12 >> 2] | 0;
     i1 = HEAP32[i6 + 16 >> 2] | 0;
     i2 = (i9 | 0) == (i1 | 0);
     if (i4 | (i3 | 0) == 0) {
      if (i2) i1 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i6 >> 2] | 0) + 36 >> 2] & 127](i6) | 0; else i1 = HEAP32[i9 >> 2] | 0;
      if (i4) {
       if ((i1 | 0) != (HEAP32[((HEAP8[i42 >> 0] & 1) == 0 ? i21 : HEAP32[i22 >> 2] | 0) >> 2] | 0)) break L46;
       i1 = HEAP32[i36 >> 2] | 0;
       i2 = i1 + 12 | 0;
       i3 = HEAP32[i2 >> 2] | 0;
       if ((i3 | 0) == (HEAP32[i1 + 16 >> 2] | 0)) FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 40 >> 2] & 127](i1) | 0; else HEAP32[i2 >> 2] = i3 + 4;
       HEAP8[i30 >> 0] = 1;
       i11 = HEAP8[i42 >> 0] | 0;
       i7 = ((i11 & 1) == 0 ? (i11 & 255) >>> 1 : HEAP32[i21 >> 2] | 0) >>> 0 > 1 ? i42 : i7;
       break L46;
      }
      if ((i1 | 0) != (HEAP32[((HEAP8[i43 >> 0] & 1) == 0 ? i20 : HEAP32[i23 >> 2] | 0) >> 2] | 0)) {
       HEAP8[i30 >> 0] = 1;
       break L46;
      }
      i1 = HEAP32[i36 >> 2] | 0;
      i2 = i1 + 12 | 0;
      i3 = HEAP32[i2 >> 2] | 0;
      if ((i3 | 0) == (HEAP32[i1 + 16 >> 2] | 0)) FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 40 >> 2] & 127](i1) | 0; else HEAP32[i2 >> 2] = i3 + 4;
      i11 = HEAP8[i43 >> 0] | 0;
      i7 = ((i11 & 1) == 0 ? (i11 & 255) >>> 1 : HEAP32[i20 >> 2] | 0) >>> 0 > 1 ? i43 : i7;
      break L46;
     }
     if (i2) {
      i4 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i6 >> 2] | 0) + 36 >> 2] & 127](i6) | 0;
      i1 = HEAP32[i36 >> 2] | 0;
      i5 = HEAP8[i43 >> 0] | 0;
      i6 = i1;
      i3 = HEAP32[i1 + 12 >> 2] | 0;
      i1 = HEAP32[i1 + 16 >> 2] | 0;
     } else {
      i4 = HEAP32[i9 >> 2] | 0;
      i3 = i9;
     }
     i2 = i6 + 12 | 0;
     i1 = (i3 | 0) == (i1 | 0);
     if ((i4 | 0) == (HEAP32[((i5 & 1) == 0 ? i20 : HEAP32[i23 >> 2] | 0) >> 2] | 0)) {
      if (i1) FUNCTION_TABLE_ii[HEAP32[(HEAP32[i6 >> 2] | 0) + 40 >> 2] & 127](i6) | 0; else HEAP32[i2 >> 2] = i3 + 4;
      i11 = HEAP8[i43 >> 0] | 0;
      i7 = ((i11 & 1) == 0 ? (i11 & 255) >>> 1 : HEAP32[i20 >> 2] | 0) >>> 0 > 1 ? i43 : i7;
      break L46;
     }
     if (i1) i1 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i6 >> 2] | 0) + 36 >> 2] & 127](i6) | 0; else i1 = HEAP32[i3 >> 2] | 0;
     if ((i1 | 0) != (HEAP32[((HEAP8[i42 >> 0] & 1) == 0 ? i21 : HEAP32[i22 >> 2] | 0) >> 2] | 0)) {
      i35 = 102;
      break L21;
     }
     i1 = HEAP32[i36 >> 2] | 0;
     i2 = i1 + 12 | 0;
     i3 = HEAP32[i2 >> 2] | 0;
     if ((i3 | 0) == (HEAP32[i1 + 16 >> 2] | 0)) FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 40 >> 2] & 127](i1) | 0; else HEAP32[i2 >> 2] = i3 + 4;
     HEAP8[i30 >> 0] = 1;
     i11 = HEAP8[i42 >> 0] | 0;
     i7 = ((i11 & 1) == 0 ? (i11 & 255) >>> 1 : HEAP32[i21 >> 2] | 0) >>> 0 > 1 ? i42 : i7;
    }
    break;
   }
  case 2:
   {
    if (!(i12 >>> 0 < 2 | (i7 | 0) != 0) ? !(i13 | (i12 | 0) == 2 & (HEAP8[i18 >> 0] | 0) != 0) : 0) {
     i7 = 0;
     break L46;
    }
    i2 = HEAP8[i45 >> 0] | 0;
    i3 = HEAP32[i14 >> 2] | 0;
    i1 = (i2 & 1) == 0 ? i15 : i3;
    L107 : do if ((i12 | 0) != 0 ? (HEAPU8[i31 + (i12 + -1) >> 0] | 0) < 2 : 0) {
     i4 = i3;
     while (1) {
      i10 = (i2 & 1) == 0;
      i3 = i1;
      if ((i3 | 0) == ((i10 ? i15 : i4) + ((i10 ? (i2 & 255) >>> 1 : HEAP32[i15 >> 2] | 0) << 2) | 0)) break;
      if (!(FUNCTION_TABLE_iiii[HEAP32[(HEAP32[i25 >> 2] | 0) + 12 >> 2] & 31](i25, 8192, HEAP32[i3 >> 2] | 0) | 0)) {
       i35 = 109;
       break;
      }
      i2 = HEAP8[i45 >> 0] | 0;
      i4 = HEAP32[i14 >> 2] | 0;
      i1 = i3 + 4 | 0;
     }
     if ((i35 | 0) == 109) {
      i35 = 0;
      i2 = HEAP8[i45 >> 0] | 0;
      i4 = HEAP32[i14 >> 2] | 0;
     }
     i6 = (i2 & 1) == 0 ? i15 : i4;
     i3 = i6;
     i10 = i1 - i3 >> 2;
     i9 = HEAP8[i44 >> 0] | 0;
     i5 = (i9 & 1) == 0;
     i9 = i5 ? (i9 & 255) >>> 1 : HEAP32[i16 >> 2] | 0;
     if (i10 >>> 0 > i9 >>> 0) {
      i9 = i11;
      i5 = i11;
     } else {
      i9 = (i5 ? i16 : HEAP32[i17 >> 2] | 0) + (i9 << 2) | 0;
      i5 = i9 + (0 - i10 << 2) | 0;
      while (1) {
       if ((i5 | 0) == (i9 | 0)) {
        i9 = i11;
        i5 = i11;
        i3 = i1;
        break L107;
       }
       if ((HEAP32[i5 >> 2] | 0) != (HEAP32[i6 >> 2] | 0)) {
        i9 = i11;
        i5 = i11;
        break L107;
       }
       i6 = i6 + 4 | 0;
       i5 = i5 + 4 | 0;
      }
     }
    } else {
     i9 = i11;
     i4 = i3;
     i5 = i11;
     i3 = i1;
    } while (0);
    L121 : while (1) {
     i1 = (i2 & 1) == 0;
     i1 = (i1 ? i15 : i4) + ((i1 ? (i2 & 255) >>> 1 : HEAP32[i15 >> 2] | 0) << 2) | 0;
     i6 = i3;
     if ((i6 | 0) == (i1 | 0)) break;
     i1 = HEAP32[i36 >> 2] | 0;
     do if (i1) {
      i2 = HEAP32[i1 + 12 >> 2] | 0;
      if ((i2 | 0) == (HEAP32[i1 + 16 >> 2] | 0)) i1 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 36 >> 2] & 127](i1) | 0; else i1 = HEAP32[i2 >> 2] | 0;
      if ((i1 | 0) == -1) {
       HEAP32[i36 >> 2] = 0;
       i2 = 1;
       break;
      } else {
       i2 = (HEAP32[i36 >> 2] | 0) == 0;
       break;
      }
     } else i2 = 1; while (0);
     do if (i5) {
      i1 = HEAP32[i5 + 12 >> 2] | 0;
      if ((i1 | 0) == (HEAP32[i5 + 16 >> 2] | 0)) i1 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i5 >> 2] | 0) + 36 >> 2] & 127](i5) | 0; else i1 = HEAP32[i1 >> 2] | 0;
      if ((i1 | 0) != -1) if (i2 ^ (i9 | 0) == 0) {
       i1 = i9;
       i5 = i9;
       break;
      } else {
       i1 = i6;
       break L121;
      } else {
       HEAP32[i37 >> 2] = 0;
       i1 = 0;
       i35 = 130;
       break;
      }
     } else {
      i1 = i9;
      i35 = 130;
     } while (0);
     if ((i35 | 0) == 130) {
      i35 = 0;
      if (i2) {
       i1 = i6;
       break;
      } else i5 = 0;
     }
     i2 = HEAP32[i36 >> 2] | 0;
     i3 = HEAP32[i2 + 12 >> 2] | 0;
     if ((i3 | 0) == (HEAP32[i2 + 16 >> 2] | 0)) i2 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i2 >> 2] | 0) + 36 >> 2] & 127](i2) | 0; else i2 = HEAP32[i3 >> 2] | 0;
     if ((i2 | 0) != (HEAP32[i6 >> 2] | 0)) {
      i1 = i6;
      break;
     }
     i2 = HEAP32[i36 >> 2] | 0;
     i3 = i2 + 12 | 0;
     i4 = HEAP32[i3 >> 2] | 0;
     if ((i4 | 0) == (HEAP32[i2 + 16 >> 2] | 0)) FUNCTION_TABLE_ii[HEAP32[(HEAP32[i2 >> 2] | 0) + 40 >> 2] & 127](i2) | 0; else HEAP32[i3 >> 2] = i4 + 4;
     i9 = i1;
     i2 = HEAP8[i45 >> 0] | 0;
     i4 = HEAP32[i14 >> 2] | 0;
     i3 = i6 + 4 | 0;
    }
    if (i13 ? (i11 = HEAP8[i45 >> 0] | 0, i10 = (i11 & 1) == 0, (i1 | 0) != ((i10 ? i15 : HEAP32[i14 >> 2] | 0) + ((i10 ? (i11 & 255) >>> 1 : HEAP32[i15 >> 2] | 0) << 2) | 0)) : 0) {
     i35 = 142;
     break L21;
    }
    break;
   }
  case 4:
   {
    i9 = HEAP32[i32 >> 2] | 0;
    i5 = i11;
    i4 = i11;
    i1 = 0;
    L158 : while (1) {
     i2 = HEAP32[i36 >> 2] | 0;
     do if (i2) {
      i3 = HEAP32[i2 + 12 >> 2] | 0;
      if ((i3 | 0) == (HEAP32[i2 + 16 >> 2] | 0)) i2 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i2 >> 2] | 0) + 36 >> 2] & 127](i2) | 0; else i2 = HEAP32[i3 >> 2] | 0;
      if ((i2 | 0) == -1) {
       HEAP32[i36 >> 2] = 0;
       i3 = 1;
       break;
      } else {
       i3 = (HEAP32[i36 >> 2] | 0) == 0;
       break;
      }
     } else i3 = 1; while (0);
     do if (i4) {
      i2 = HEAP32[i4 + 12 >> 2] | 0;
      if ((i2 | 0) == (HEAP32[i4 + 16 >> 2] | 0)) i2 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i4 >> 2] | 0) + 36 >> 2] & 127](i4) | 0; else i2 = HEAP32[i2 >> 2] | 0;
      if ((i2 | 0) != -1) if (i3 ^ (i5 | 0) == 0) {
       i2 = i5;
       i6 = i5;
       break;
      } else break L158; else {
       HEAP32[i37 >> 2] = 0;
       i2 = 0;
       i35 = 156;
       break;
      }
     } else {
      i2 = i5;
      i35 = 156;
     } while (0);
     if ((i35 | 0) == 156) {
      i35 = 0;
      if (i3) {
       i5 = i2;
       break;
      } else i6 = 0;
     }
     i3 = HEAP32[i36 >> 2] | 0;
     i4 = HEAP32[i3 + 12 >> 2] | 0;
     if ((i4 | 0) == (HEAP32[i3 + 16 >> 2] | 0)) i4 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i3 >> 2] | 0) + 36 >> 2] & 127](i3) | 0; else i4 = HEAP32[i4 >> 2] | 0;
     if (FUNCTION_TABLE_iiii[HEAP32[(HEAP32[i25 >> 2] | 0) + 12 >> 2] & 31](i25, 2048, i4) | 0) {
      i3 = HEAP32[i34 >> 2] | 0;
      if ((i3 | 0) == (HEAP32[i24 >> 2] | 0)) {
       __ZNSt3__119__double_or_nothingIwEEvRNS_10unique_ptrIT_PFvPvEEERPS2_S9_(i33, i34, i24);
       i3 = HEAP32[i34 >> 2] | 0;
      }
      HEAP32[i34 >> 2] = i3 + 4;
      HEAP32[i3 >> 2] = i4;
      i1 = i1 + 1 | 0;
     } else {
      i11 = HEAP8[i41 >> 0] | 0;
      if (!((i4 | 0) == (i9 | 0) & (i1 | 0 ? (((i11 & 1) == 0 ? (i11 & 255) >>> 1 : HEAP32[i19 >> 2] | 0) | 0) != 0 : 0))) {
       i5 = i2;
       break;
      }
      if ((i8 | 0) == (HEAP32[i28 >> 2] | 0)) {
       __ZNSt3__119__double_or_nothingIjEEvRNS_10unique_ptrIT_PFvPvEEERPS2_S9_(i46, i29, i28);
       i8 = HEAP32[i29 >> 2] | 0;
      }
      i11 = i8 + 4 | 0;
      HEAP32[i29 >> 2] = i11;
      HEAP32[i8 >> 2] = i1;
      i8 = i11;
      i1 = 0;
     }
     i3 = HEAP32[i36 >> 2] | 0;
     i4 = i3 + 12 | 0;
     i5 = HEAP32[i4 >> 2] | 0;
     if ((i5 | 0) == (HEAP32[i3 + 16 >> 2] | 0)) {
      FUNCTION_TABLE_ii[HEAP32[(HEAP32[i3 >> 2] | 0) + 40 >> 2] & 127](i3) | 0;
      i5 = i2;
      i4 = i6;
      continue;
     } else {
      HEAP32[i4 >> 2] = i5 + 4;
      i5 = i2;
      i4 = i6;
      continue;
     }
    }
    if (i1 | 0 ? (HEAP32[i46 >> 2] | 0) != (i8 | 0) : 0) {
     if ((i8 | 0) == (HEAP32[i28 >> 2] | 0)) {
      __ZNSt3__119__double_or_nothingIjEEvRNS_10unique_ptrIT_PFvPvEEERPS2_S9_(i46, i29, i28);
      i8 = HEAP32[i29 >> 2] | 0;
     }
     i11 = i8 + 4 | 0;
     HEAP32[i29 >> 2] = i11;
     HEAP32[i8 >> 2] = i1;
     i8 = i11;
    }
    i4 = HEAP32[i27 >> 2] | 0;
    L207 : do if ((i4 | 0) > 0) {
     i1 = HEAP32[i36 >> 2] | 0;
     do if (i1) {
      i2 = HEAP32[i1 + 12 >> 2] | 0;
      if ((i2 | 0) == (HEAP32[i1 + 16 >> 2] | 0)) i1 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 36 >> 2] & 127](i1) | 0; else i1 = HEAP32[i2 >> 2] | 0;
      if ((i1 | 0) == -1) {
       HEAP32[i36 >> 2] = 0;
       i2 = 1;
       break;
      } else {
       i2 = (HEAP32[i36 >> 2] | 0) == 0;
       break;
      }
     } else i2 = 1; while (0);
     do if (i5) {
      i1 = HEAP32[i5 + 12 >> 2] | 0;
      if ((i1 | 0) == (HEAP32[i5 + 16 >> 2] | 0)) i1 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i5 >> 2] | 0) + 36 >> 2] & 127](i5) | 0; else i1 = HEAP32[i1 >> 2] | 0;
      if ((i1 | 0) != -1) if (i2) break; else {
       i35 = 196;
       break L21;
      } else {
       HEAP32[i37 >> 2] = 0;
       i35 = 190;
       break;
      }
     } else i35 = 190; while (0);
     if ((i35 | 0) == 190) {
      i35 = 0;
      if (i2) {
       i35 = 196;
       break L21;
      } else i5 = 0;
     }
     i1 = HEAP32[i36 >> 2] | 0;
     i2 = HEAP32[i1 + 12 >> 2] | 0;
     if ((i2 | 0) == (HEAP32[i1 + 16 >> 2] | 0)) i1 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 36 >> 2] & 127](i1) | 0; else i1 = HEAP32[i2 >> 2] | 0;
     if ((i1 | 0) != (HEAP32[i26 >> 2] | 0)) {
      i35 = 196;
      break L21;
     }
     i1 = HEAP32[i36 >> 2] | 0;
     i2 = i1 + 12 | 0;
     i3 = HEAP32[i2 >> 2] | 0;
     if ((i3 | 0) == (HEAP32[i1 + 16 >> 2] | 0)) {
      FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 40 >> 2] & 127](i1) | 0;
      i1 = i5;
     } else {
      HEAP32[i2 >> 2] = i3 + 4;
      i1 = i5;
     }
     while (1) {
      if ((i4 | 0) <= 0) break L207;
      i2 = HEAP32[i36 >> 2] | 0;
      do if (i2) {
       i3 = HEAP32[i2 + 12 >> 2] | 0;
       if ((i3 | 0) == (HEAP32[i2 + 16 >> 2] | 0)) i2 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i2 >> 2] | 0) + 36 >> 2] & 127](i2) | 0; else i2 = HEAP32[i3 >> 2] | 0;
       if ((i2 | 0) == -1) {
        HEAP32[i36 >> 2] = 0;
        i3 = 1;
        break;
       } else {
        i3 = (HEAP32[i36 >> 2] | 0) == 0;
        break;
       }
      } else i3 = 1; while (0);
      do if (i5) {
       i2 = HEAP32[i5 + 12 >> 2] | 0;
       if ((i2 | 0) == (HEAP32[i5 + 16 >> 2] | 0)) i2 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i5 >> 2] | 0) + 36 >> 2] & 127](i5) | 0; else i2 = HEAP32[i2 >> 2] | 0;
       if ((i2 | 0) != -1) if (i3 ^ (i1 | 0) == 0) {
        i6 = i1;
        i5 = i1;
        break;
       } else {
        i35 = 220;
        break L21;
       } else {
        HEAP32[i37 >> 2] = 0;
        i1 = 0;
        i35 = 214;
        break;
       }
      } else i35 = 214; while (0);
      if ((i35 | 0) == 214) {
       i35 = 0;
       if (i3) {
        i35 = 220;
        break L21;
       } else {
        i6 = i1;
        i5 = 0;
       }
      }
      i1 = HEAP32[i36 >> 2] | 0;
      i2 = HEAP32[i1 + 12 >> 2] | 0;
      if ((i2 | 0) == (HEAP32[i1 + 16 >> 2] | 0)) i1 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 36 >> 2] & 127](i1) | 0; else i1 = HEAP32[i2 >> 2] | 0;
      if (!(FUNCTION_TABLE_iiii[HEAP32[(HEAP32[i25 >> 2] | 0) + 12 >> 2] & 31](i25, 2048, i1) | 0)) {
       i35 = 220;
       break L21;
      }
      if ((HEAP32[i34 >> 2] | 0) == (HEAP32[i24 >> 2] | 0)) __ZNSt3__119__double_or_nothingIwEEvRNS_10unique_ptrIT_PFvPvEEERPS2_S9_(i33, i34, i24);
      i1 = HEAP32[i36 >> 2] | 0;
      i2 = HEAP32[i1 + 12 >> 2] | 0;
      if ((i2 | 0) == (HEAP32[i1 + 16 >> 2] | 0)) i1 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 36 >> 2] & 127](i1) | 0; else i1 = HEAP32[i2 >> 2] | 0;
      i2 = HEAP32[i34 >> 2] | 0;
      HEAP32[i34 >> 2] = i2 + 4;
      HEAP32[i2 >> 2] = i1;
      i4 = i4 + -1 | 0;
      HEAP32[i27 >> 2] = i4;
      i1 = HEAP32[i36 >> 2] | 0;
      i2 = i1 + 12 | 0;
      i3 = HEAP32[i2 >> 2] | 0;
      if ((i3 | 0) == (HEAP32[i1 + 16 >> 2] | 0)) {
       FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 40 >> 2] & 127](i1) | 0;
       i1 = i6;
       continue;
      } else {
       HEAP32[i2 >> 2] = i3 + 4;
       i1 = i6;
       continue;
      }
     }
    } while (0);
    if ((HEAP32[i34 >> 2] | 0) == (HEAP32[i33 >> 2] | 0)) {
     i35 = 230;
     break L21;
    }
    break;
   }
  default:
   {}
  } while (0);
  L280 : do if ((i35 | 0) == 46) while (1) {
   i35 = 0;
   i2 = HEAP32[i36 >> 2] | 0;
   do if (i2) {
    i3 = HEAP32[i2 + 12 >> 2] | 0;
    if ((i3 | 0) == (HEAP32[i2 + 16 >> 2] | 0)) i2 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i2 >> 2] | 0) + 36 >> 2] & 127](i2) | 0; else i2 = HEAP32[i3 >> 2] | 0;
    if ((i2 | 0) == -1) {
     HEAP32[i36 >> 2] = 0;
     i3 = 1;
     break;
    } else {
     i3 = (HEAP32[i36 >> 2] | 0) == 0;
     break;
    }
   } else i3 = 1; while (0);
   do if (i4) {
    i2 = HEAP32[i4 + 12 >> 2] | 0;
    if ((i2 | 0) == (HEAP32[i4 + 16 >> 2] | 0)) i2 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i4 >> 2] | 0) + 36 >> 2] & 127](i4) | 0; else i2 = HEAP32[i2 >> 2] | 0;
    if ((i2 | 0) != -1) if (i3 ^ (i1 | 0) == 0) {
     i5 = i1;
     i4 = i1;
     break;
    } else break L280; else {
     HEAP32[i37 >> 2] = 0;
     i1 = 0;
     i35 = 59;
     break;
    }
   } else i35 = 59; while (0);
   if ((i35 | 0) == 59) {
    i35 = 0;
    if (i3) break L280; else {
     i5 = i1;
     i4 = 0;
    }
   }
   i1 = HEAP32[i36 >> 2] | 0;
   i2 = HEAP32[i1 + 12 >> 2] | 0;
   if ((i2 | 0) == (HEAP32[i1 + 16 >> 2] | 0)) i1 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 36 >> 2] & 127](i1) | 0; else i1 = HEAP32[i2 >> 2] | 0;
   if (!(FUNCTION_TABLE_iiii[HEAP32[(HEAP32[i25 >> 2] | 0) + 12 >> 2] & 31](i25, 8192, i1) | 0)) break L280;
   i1 = HEAP32[i36 >> 2] | 0;
   i2 = i1 + 12 | 0;
   i3 = HEAP32[i2 >> 2] | 0;
   if ((i3 | 0) == (HEAP32[i1 + 16 >> 2] | 0)) i1 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 40 >> 2] & 127](i1) | 0; else {
    HEAP32[i2 >> 2] = i3 + 4;
    i1 = HEAP32[i3 >> 2] | 0;
   }
   __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE9push_backEw(i44, i1);
   i1 = i5;
   i35 = 46;
  } while (0);
  i12 = i12 + 1 | 0;
 }
 L315 : do if ((i35 | 0) == 44) {
  HEAP32[i38 >> 2] = HEAP32[i38 >> 2] | 4;
  i2 = 0;
 } else if ((i35 | 0) == 102) {
  HEAP32[i38 >> 2] = HEAP32[i38 >> 2] | 4;
  i2 = 0;
 } else if ((i35 | 0) == 142) {
  HEAP32[i38 >> 2] = HEAP32[i38 >> 2] | 4;
  i2 = 0;
 } else if ((i35 | 0) == 196) {
  HEAP32[i38 >> 2] = HEAP32[i38 >> 2] | 4;
  i2 = 0;
 } else if ((i35 | 0) == 220) {
  HEAP32[i38 >> 2] = HEAP32[i38 >> 2] | 4;
  i2 = 0;
 } else if ((i35 | 0) == 230) {
  HEAP32[i38 >> 2] = HEAP32[i38 >> 2] | 4;
  i2 = 0;
 } else if ((i35 | 0) == 232) {
  L317 : do if (i7 | 0) {
   i5 = i7 + 4 | 0;
   i6 = i7 + 8 | 0;
   i4 = 1;
   L319 : while (1) {
    i1 = HEAP8[i7 >> 0] | 0;
    if (!(i1 & 1)) i1 = (i1 & 255) >>> 1; else i1 = HEAP32[i5 >> 2] | 0;
    if (i4 >>> 0 >= i1 >>> 0) break L317;
    i1 = HEAP32[i36 >> 2] | 0;
    do if (i1) {
     i2 = HEAP32[i1 + 12 >> 2] | 0;
     if ((i2 | 0) == (HEAP32[i1 + 16 >> 2] | 0)) i1 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 36 >> 2] & 127](i1) | 0; else i1 = HEAP32[i2 >> 2] | 0;
     if ((i1 | 0) == -1) {
      HEAP32[i36 >> 2] = 0;
      i3 = 1;
      break;
     } else {
      i3 = (HEAP32[i36 >> 2] | 0) == 0;
      break;
     }
    } else i3 = 1; while (0);
    i1 = HEAP32[i37 >> 2] | 0;
    do if (i1) {
     i2 = HEAP32[i1 + 12 >> 2] | 0;
     if ((i2 | 0) == (HEAP32[i1 + 16 >> 2] | 0)) i1 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 36 >> 2] & 127](i1) | 0; else i1 = HEAP32[i2 >> 2] | 0;
     if ((i1 | 0) != -1) if (i3) break; else break L319; else {
      HEAP32[i37 >> 2] = 0;
      i35 = 251;
      break;
     }
    } else i35 = 251; while (0);
    if ((i35 | 0) == 251 ? (i35 = 0, i3) : 0) break;
    i1 = HEAP32[i36 >> 2] | 0;
    i2 = HEAP32[i1 + 12 >> 2] | 0;
    if ((i2 | 0) == (HEAP32[i1 + 16 >> 2] | 0)) i1 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 36 >> 2] & 127](i1) | 0; else i1 = HEAP32[i2 >> 2] | 0;
    if (!(HEAP8[i7 >> 0] & 1)) i2 = i5; else i2 = HEAP32[i6 >> 2] | 0;
    if ((i1 | 0) != (HEAP32[i2 + (i4 << 2) >> 2] | 0)) break;
    i1 = i4 + 1 | 0;
    i2 = HEAP32[i36 >> 2] | 0;
    i3 = i2 + 12 | 0;
    i4 = HEAP32[i3 >> 2] | 0;
    if ((i4 | 0) == (HEAP32[i2 + 16 >> 2] | 0)) {
     FUNCTION_TABLE_ii[HEAP32[(HEAP32[i2 >> 2] | 0) + 40 >> 2] & 127](i2) | 0;
     i4 = i1;
     continue;
    } else {
     HEAP32[i3 >> 2] = i4 + 4;
     i4 = i1;
     continue;
    }
   }
   HEAP32[i38 >> 2] = HEAP32[i38 >> 2] | 4;
   i2 = 0;
   break L315;
  } while (0);
  i1 = HEAP32[i46 >> 2] | 0;
  if ((i1 | 0) != (i8 | 0)) {
   HEAP32[i39 >> 2] = 0;
   __ZNSt3__116__check_groupingERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEPjS8_Rj(i41, i1, i8, i39);
   if (!(HEAP32[i39 >> 2] | 0)) {
    i2 = 1;
    break;
   } else {
    HEAP32[i38 >> 2] = HEAP32[i38 >> 2] | 4;
    i2 = 0;
    break;
   }
  } else i2 = 1;
 } while (0);
 __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev(i44);
 __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev(i42);
 __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev(i43);
 __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev(i45);
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i41);
 i1 = HEAP32[i46 >> 2] | 0;
 HEAP32[i46 >> 2] = 0;
 if (i1 | 0) FUNCTION_TABLE_vi[HEAP32[i40 >> 2] & 255](i1);
 STACKTOP = i47;
 return i2 | 0;
}

function __ZNSt3__19money_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE8__do_getERS4_S4_bRKNS_6localeEjRjRbRKNS_5ctypeIcEERNS_10unique_ptrIcPFvPvEEERPcSM_(i40, i41, i3, i4, i5, i42, i34, i2, i37, i38, i1) {
 i40 = i40 | 0;
 i41 = i41 | 0;
 i3 = i3 | 0;
 i4 = i4 | 0;
 i5 = i5 | 0;
 i42 = i42 | 0;
 i34 = i34 | 0;
 i2 = i2 | 0;
 i37 = i37 | 0;
 i38 = i38 | 0;
 i1 = i1 | 0;
 var i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, i18 = 0, i19 = 0, i20 = 0, i21 = 0, i22 = 0, i23 = 0, i24 = 0, i25 = 0, i26 = 0, i27 = 0, i28 = 0, i29 = 0, i30 = 0, i31 = 0, i32 = 0, i33 = 0, i35 = 0, i36 = 0, i39 = 0, i43 = 0, i44 = 0, i45 = 0, i46 = 0, i47 = 0, i48 = 0, i49 = 0, i50 = 0, i51 = 0;
 i51 = STACKTOP;
 STACKTOP = STACKTOP + 512 | 0;
 i29 = i51 + 88 | 0;
 i9 = i51 + 96 | 0;
 i50 = i51 + 80 | 0;
 i33 = i51 + 72 | 0;
 i32 = i51 + 68 | 0;
 i35 = i51 + 500 | 0;
 i30 = i51 + 497 | 0;
 i36 = i51 + 496 | 0;
 i45 = i51 + 56 | 0;
 i49 = i51 + 44 | 0;
 i47 = i51 + 32 | 0;
 i46 = i51 + 20 | 0;
 i48 = i51 + 8 | 0;
 i31 = i51 + 4 | 0;
 i43 = i51;
 HEAP32[i29 >> 2] = i1;
 HEAP32[i50 >> 2] = i9;
 i44 = i50 + 4 | 0;
 HEAP32[i44 >> 2] = 232;
 HEAP32[i33 >> 2] = i9;
 HEAP32[i32 >> 2] = i9 + 400;
 i1 = 0;
 while (1) {
  if ((i1 | 0) == 3) break;
  HEAP32[i45 + (i1 << 2) >> 2] = 0;
  i1 = i1 + 1 | 0;
 }
 i1 = 0;
 while (1) {
  if ((i1 | 0) == 3) break;
  HEAP32[i49 + (i1 << 2) >> 2] = 0;
  i1 = i1 + 1 | 0;
 }
 i1 = 0;
 while (1) {
  if ((i1 | 0) == 3) break;
  HEAP32[i47 + (i1 << 2) >> 2] = 0;
  i1 = i1 + 1 | 0;
 }
 i1 = 0;
 while (1) {
  if ((i1 | 0) == 3) break;
  HEAP32[i46 + (i1 << 2) >> 2] = 0;
  i1 = i1 + 1 | 0;
 }
 i1 = 0;
 while (1) {
  if ((i1 | 0) == 3) break;
  HEAP32[i48 + (i1 << 2) >> 2] = 0;
  i1 = i1 + 1 | 0;
 }
 __ZNSt3__111__money_getIcE13__gather_infoEbRKNS_6localeERNS_10money_base7patternERcS8_RNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEESF_SF_SF_Ri(i3, i4, i35, i30, i36, i45, i49, i47, i46, i31);
 HEAP32[i38 >> 2] = HEAP32[i37 >> 2];
 i22 = i2 + 8 | 0;
 i23 = i47 + 4 | 0;
 i24 = i46 + 4 | 0;
 i25 = i46 + 8 | 0;
 i26 = i46 + 1 | 0;
 i27 = i47 + 8 | 0;
 i28 = i47 + 1 | 0;
 i13 = (i5 & 512 | 0) != 0;
 i14 = i49 + 8 | 0;
 i15 = i49 + 1 | 0;
 i16 = i49 + 4 | 0;
 i17 = i48 + 4 | 0;
 i18 = i48 + 8 | 0;
 i19 = i48 + 1 | 0;
 i20 = i35 + 3 | 0;
 i21 = i45 + 4 | 0;
 i12 = 0;
 i8 = 0;
 L21 : while (1) {
  if (i12 >>> 0 >= 4) {
   i39 = 218;
   break;
  }
  i1 = HEAP32[i40 >> 2] | 0;
  do if (i1) {
   if ((HEAP32[i1 + 12 >> 2] | 0) == (HEAP32[i1 + 16 >> 2] | 0)) if ((FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 36 >> 2] & 127](i1) | 0) == -1) {
    HEAP32[i40 >> 2] = 0;
    i1 = 0;
    break;
   } else {
    i1 = HEAP32[i40 >> 2] | 0;
    break;
   }
  } else i1 = 0; while (0);
  i1 = (i1 | 0) == 0;
  i2 = HEAP32[i41 >> 2] | 0;
  do if (i2) {
   if ((HEAP32[i2 + 12 >> 2] | 0) != (HEAP32[i2 + 16 >> 2] | 0)) if (i1) break; else {
    i39 = 218;
    break L21;
   }
   if ((FUNCTION_TABLE_ii[HEAP32[(HEAP32[i2 >> 2] | 0) + 36 >> 2] & 127](i2) | 0) != -1) if (i1) break; else {
    i39 = 218;
    break L21;
   } else {
    HEAP32[i41 >> 2] = 0;
    i39 = 28;
    break;
   }
  } else i39 = 28; while (0);
  if ((i39 | 0) == 28) {
   i39 = 0;
   if (i1) {
    i39 = 218;
    break;
   } else i2 = 0;
  }
  L42 : do switch (HEAP8[i35 + i12 >> 0] | 0) {
  case 1:
   {
    if ((i12 | 0) != 3) {
     i1 = HEAP32[i40 >> 2] | 0;
     i3 = HEAP32[i1 + 12 >> 2] | 0;
     if ((i3 | 0) == (HEAP32[i1 + 16 >> 2] | 0)) i1 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 36 >> 2] & 127](i1) | 0; else i1 = HEAPU8[i3 >> 0] | 0;
     if ((i1 & 255) << 24 >> 24 <= -1) {
      i39 = 42;
      break L21;
     }
     if (!(HEAP16[(HEAP32[i22 >> 2] | 0) + (i1 << 24 >> 24 << 1) >> 1] & 8192)) {
      i39 = 42;
      break L21;
     }
     i1 = HEAP32[i40 >> 2] | 0;
     i3 = i1 + 12 | 0;
     i4 = HEAP32[i3 >> 2] | 0;
     if ((i4 | 0) == (HEAP32[i1 + 16 >> 2] | 0)) i1 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 40 >> 2] & 127](i1) | 0; else {
      HEAP32[i3 >> 2] = i4 + 1;
      i1 = HEAPU8[i4 >> 0] | 0;
     }
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE9push_backEc(i48, i1 & 255);
     i1 = i2;
     i3 = i2;
     i39 = 44;
    }
    break;
   }
  case 0:
   {
    if ((i12 | 0) != 3) {
     i1 = i2;
     i3 = i2;
     i39 = 44;
    }
    break;
   }
  case 3:
   {
    i4 = HEAP8[i47 >> 0] | 0;
    i1 = (i4 & 1) == 0 ? (i4 & 255) >>> 1 : HEAP32[i23 >> 2] | 0;
    i3 = HEAP8[i46 >> 0] | 0;
    i3 = (i3 & 1) == 0 ? (i3 & 255) >>> 1 : HEAP32[i24 >> 2] | 0;
    if ((i1 | 0) != (0 - i3 | 0)) {
     i5 = (i1 | 0) == 0;
     i6 = HEAP32[i40 >> 2] | 0;
     i7 = HEAP32[i6 + 12 >> 2] | 0;
     i1 = HEAP32[i6 + 16 >> 2] | 0;
     i2 = (i7 | 0) == (i1 | 0);
     if (i5 | (i3 | 0) == 0) {
      if (i2) i1 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i6 >> 2] | 0) + 36 >> 2] & 127](i6) | 0; else i1 = HEAPU8[i7 >> 0] | 0;
      i1 = i1 & 255;
      if (i5) {
       if (i1 << 24 >> 24 != (HEAP8[((HEAP8[i46 >> 0] & 1) == 0 ? i26 : HEAP32[i25 >> 2] | 0) >> 0] | 0)) break L42;
       i1 = HEAP32[i40 >> 2] | 0;
       i2 = i1 + 12 | 0;
       i3 = HEAP32[i2 >> 2] | 0;
       if ((i3 | 0) == (HEAP32[i1 + 16 >> 2] | 0)) FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 40 >> 2] & 127](i1) | 0; else HEAP32[i2 >> 2] = i3 + 1;
       HEAP8[i34 >> 0] = 1;
       i11 = HEAP8[i46 >> 0] | 0;
       i8 = ((i11 & 1) == 0 ? (i11 & 255) >>> 1 : HEAP32[i24 >> 2] | 0) >>> 0 > 1 ? i46 : i8;
       break L42;
      }
      if (i1 << 24 >> 24 != (HEAP8[((HEAP8[i47 >> 0] & 1) == 0 ? i28 : HEAP32[i27 >> 2] | 0) >> 0] | 0)) {
       HEAP8[i34 >> 0] = 1;
       break L42;
      }
      i1 = HEAP32[i40 >> 2] | 0;
      i2 = i1 + 12 | 0;
      i3 = HEAP32[i2 >> 2] | 0;
      if ((i3 | 0) == (HEAP32[i1 + 16 >> 2] | 0)) FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 40 >> 2] & 127](i1) | 0; else HEAP32[i2 >> 2] = i3 + 1;
      i11 = HEAP8[i47 >> 0] | 0;
      i8 = ((i11 & 1) == 0 ? (i11 & 255) >>> 1 : HEAP32[i23 >> 2] | 0) >>> 0 > 1 ? i47 : i8;
      break L42;
     }
     if (i2) {
      i5 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i6 >> 2] | 0) + 36 >> 2] & 127](i6) | 0;
      i1 = HEAP32[i40 >> 2] | 0;
      i4 = HEAP8[i47 >> 0] | 0;
      i6 = i1;
      i3 = HEAP32[i1 + 12 >> 2] | 0;
      i1 = HEAP32[i1 + 16 >> 2] | 0;
     } else {
      i5 = HEAPU8[i7 >> 0] | 0;
      i3 = i7;
     }
     i2 = i6 + 12 | 0;
     i1 = (i3 | 0) == (i1 | 0);
     if ((i5 & 255) << 24 >> 24 == (HEAP8[((i4 & 1) == 0 ? i28 : HEAP32[i27 >> 2] | 0) >> 0] | 0)) {
      if (i1) FUNCTION_TABLE_ii[HEAP32[(HEAP32[i6 >> 2] | 0) + 40 >> 2] & 127](i6) | 0; else HEAP32[i2 >> 2] = i3 + 1;
      i11 = HEAP8[i47 >> 0] | 0;
      i8 = ((i11 & 1) == 0 ? (i11 & 255) >>> 1 : HEAP32[i23 >> 2] | 0) >>> 0 > 1 ? i47 : i8;
      break L42;
     }
     if (i1) i1 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i6 >> 2] | 0) + 36 >> 2] & 127](i6) | 0; else i1 = HEAPU8[i3 >> 0] | 0;
     if ((i1 & 255) << 24 >> 24 != (HEAP8[((HEAP8[i46 >> 0] & 1) == 0 ? i26 : HEAP32[i25 >> 2] | 0) >> 0] | 0)) {
      i39 = 98;
      break L21;
     }
     i1 = HEAP32[i40 >> 2] | 0;
     i2 = i1 + 12 | 0;
     i3 = HEAP32[i2 >> 2] | 0;
     if ((i3 | 0) == (HEAP32[i1 + 16 >> 2] | 0)) FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 40 >> 2] & 127](i1) | 0; else HEAP32[i2 >> 2] = i3 + 1;
     HEAP8[i34 >> 0] = 1;
     i11 = HEAP8[i46 >> 0] | 0;
     i8 = ((i11 & 1) == 0 ? (i11 & 255) >>> 1 : HEAP32[i24 >> 2] | 0) >>> 0 > 1 ? i46 : i8;
    }
    break;
   }
  case 2:
   {
    if (!(i12 >>> 0 < 2 | (i8 | 0) != 0) ? !(i13 | (i12 | 0) == 2 & (HEAP8[i20 >> 0] | 0) != 0) : 0) {
     i8 = 0;
     break L42;
    }
    i7 = HEAP8[i49 >> 0] | 0;
    i1 = (i7 & 1) == 0;
    i10 = HEAP32[i14 >> 2] | 0;
    i3 = i1 ? i15 : i10;
    i11 = i3;
    L104 : do if ((i12 | 0) != 0 ? (HEAPU8[i35 + (i12 + -1) >> 0] | 0) < 2 : 0) {
     i1 = i3 + (i1 ? (i7 & 255) >>> 1 : HEAP32[i16 >> 2] | 0) | 0;
     i6 = i11;
     while (1) {
      i4 = i6;
      if ((i4 | 0) == (i1 | 0)) break;
      i5 = HEAP8[i4 >> 0] | 0;
      if (i5 << 24 >> 24 <= -1) break;
      if (!(HEAP16[(HEAP32[i22 >> 2] | 0) + (i5 << 24 >> 24 << 1) >> 1] & 8192)) break;
      i6 = i4 + 1 | 0;
     }
     i5 = i6 - i11 | 0;
     i4 = HEAP8[i48 >> 0] | 0;
     i1 = (i4 & 1) == 0;
     i4 = i1 ? (i4 & 255) >>> 1 : HEAP32[i17 >> 2] | 0;
     if (i5 >>> 0 <= i4 >>> 0) {
      i4 = (i1 ? i19 : HEAP32[i18 >> 2] | 0) + i4 | 0;
      i1 = i4 + (0 - i5) | 0;
      while (1) {
       if ((i1 | 0) == (i4 | 0)) {
        i4 = i2;
        i3 = i7;
        i1 = i10;
        i5 = i2;
        i2 = i6;
        break L104;
       }
       if ((HEAP8[i1 >> 0] | 0) != (HEAP8[i3 >> 0] | 0)) {
        i4 = i2;
        i3 = i7;
        i1 = i10;
        i5 = i2;
        i2 = i11;
        break L104;
       }
       i3 = i3 + 1 | 0;
       i1 = i1 + 1 | 0;
      }
     } else {
      i4 = i2;
      i3 = i7;
      i1 = i10;
      i5 = i2;
      i2 = i11;
     }
    } else {
     i4 = i2;
     i3 = i7;
     i1 = i10;
     i5 = i2;
     i2 = i11;
    } while (0);
    L118 : while (1) {
     i6 = (i3 & 1) == 0;
     i1 = (i6 ? i15 : i1) + (i6 ? (i3 & 255) >>> 1 : HEAP32[i16 >> 2] | 0) | 0;
     i6 = i2;
     if ((i6 | 0) == (i1 | 0)) break;
     i1 = HEAP32[i40 >> 2] | 0;
     do if (i1) {
      if ((HEAP32[i1 + 12 >> 2] | 0) == (HEAP32[i1 + 16 >> 2] | 0)) if ((FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 36 >> 2] & 127](i1) | 0) == -1) {
       HEAP32[i40 >> 2] = 0;
       i1 = 0;
       break;
      } else {
       i1 = HEAP32[i40 >> 2] | 0;
       break;
      }
     } else i1 = 0; while (0);
     i2 = (i1 | 0) == 0;
     do if (i5) {
      if ((HEAP32[i5 + 12 >> 2] | 0) != (HEAP32[i5 + 16 >> 2] | 0)) if (i2) {
       i1 = i4;
       break;
      } else {
       i1 = i6;
       break L118;
      }
      if ((FUNCTION_TABLE_ii[HEAP32[(HEAP32[i5 >> 2] | 0) + 36 >> 2] & 127](i5) | 0) != -1) if (i2 ^ (i4 | 0) == 0) {
       i1 = i4;
       i5 = i4;
       break;
      } else {
       i1 = i6;
       break L118;
      } else {
       HEAP32[i41 >> 2] = 0;
       i1 = 0;
       i39 = 124;
       break;
      }
     } else {
      i1 = i4;
      i39 = 124;
     } while (0);
     if ((i39 | 0) == 124) {
      i39 = 0;
      if (i2) {
       i1 = i6;
       break;
      } else i5 = 0;
     }
     i2 = HEAP32[i40 >> 2] | 0;
     i3 = HEAP32[i2 + 12 >> 2] | 0;
     if ((i3 | 0) == (HEAP32[i2 + 16 >> 2] | 0)) i2 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i2 >> 2] | 0) + 36 >> 2] & 127](i2) | 0; else i2 = HEAPU8[i3 >> 0] | 0;
     if ((i2 & 255) << 24 >> 24 != (HEAP8[i6 >> 0] | 0)) {
      i1 = i6;
      break;
     }
     i2 = HEAP32[i40 >> 2] | 0;
     i3 = i2 + 12 | 0;
     i4 = HEAP32[i3 >> 2] | 0;
     if ((i4 | 0) == (HEAP32[i2 + 16 >> 2] | 0)) FUNCTION_TABLE_ii[HEAP32[(HEAP32[i2 >> 2] | 0) + 40 >> 2] & 127](i2) | 0; else HEAP32[i3 >> 2] = i4 + 1;
     i4 = i1;
     i3 = HEAP8[i49 >> 0] | 0;
     i1 = HEAP32[i14 >> 2] | 0;
     i2 = i6 + 1 | 0;
    }
    if (i13 ? (i11 = HEAP8[i49 >> 0] | 0, i10 = (i11 & 1) == 0, (i1 | 0) != ((i10 ? i15 : HEAP32[i14 >> 2] | 0) + (i10 ? (i11 & 255) >>> 1 : HEAP32[i16 >> 2] | 0) | 0)) : 0) {
     i39 = 136;
     break L21;
    }
    break;
   }
  case 4:
   {
    i7 = HEAP8[i36 >> 0] | 0;
    i5 = i2;
    i4 = i2;
    i1 = 0;
    L151 : while (1) {
     i2 = HEAP32[i40 >> 2] | 0;
     do if (i2) {
      if ((HEAP32[i2 + 12 >> 2] | 0) == (HEAP32[i2 + 16 >> 2] | 0)) if ((FUNCTION_TABLE_ii[HEAP32[(HEAP32[i2 >> 2] | 0) + 36 >> 2] & 127](i2) | 0) == -1) {
       HEAP32[i40 >> 2] = 0;
       i2 = 0;
       break;
      } else {
       i2 = HEAP32[i40 >> 2] | 0;
       break;
      }
     } else i2 = 0; while (0);
     i3 = (i2 | 0) == 0;
     do if (i4) {
      if ((HEAP32[i4 + 12 >> 2] | 0) != (HEAP32[i4 + 16 >> 2] | 0)) if (i3) {
       i2 = i5;
       i6 = i4;
       break;
      } else {
       i2 = i5;
       break L151;
      }
      if ((FUNCTION_TABLE_ii[HEAP32[(HEAP32[i4 >> 2] | 0) + 36 >> 2] & 127](i4) | 0) != -1) if (i3 ^ (i5 | 0) == 0) {
       i2 = i5;
       i6 = i5;
       break;
      } else {
       i2 = i5;
       break L151;
      } else {
       HEAP32[i41 >> 2] = 0;
       i2 = 0;
       i39 = 147;
       break;
      }
     } else {
      i2 = i5;
      i39 = 147;
     } while (0);
     if ((i39 | 0) == 147) {
      i39 = 0;
      if (i3) break; else i6 = 0;
     }
     i3 = HEAP32[i40 >> 2] | 0;
     i4 = HEAP32[i3 + 12 >> 2] | 0;
     if ((i4 | 0) == (HEAP32[i3 + 16 >> 2] | 0)) i3 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i3 >> 2] | 0) + 36 >> 2] & 127](i3) | 0; else i3 = HEAPU8[i4 >> 0] | 0;
     i4 = i3 & 255;
     if (i4 << 24 >> 24 > -1 ? (HEAP16[(HEAP32[i22 >> 2] | 0) + (i3 << 24 >> 24 << 1) >> 1] & 2048) != 0 : 0) {
      i3 = HEAP32[i38 >> 2] | 0;
      if ((i3 | 0) == (HEAP32[i29 >> 2] | 0)) {
       __ZNSt3__119__double_or_nothingIcEEvRNS_10unique_ptrIT_PFvPvEEERPS2_S9_(i37, i38, i29);
       i3 = HEAP32[i38 >> 2] | 0;
      }
      HEAP32[i38 >> 2] = i3 + 1;
      HEAP8[i3 >> 0] = i4;
      i1 = i1 + 1 | 0;
     } else {
      i11 = HEAP8[i45 >> 0] | 0;
      if (!(i4 << 24 >> 24 == i7 << 24 >> 24 & (i1 | 0 ? (((i11 & 1) == 0 ? (i11 & 255) >>> 1 : HEAP32[i21 >> 2] | 0) | 0) != 0 : 0))) break;
      if ((i9 | 0) == (HEAP32[i32 >> 2] | 0)) {
       __ZNSt3__119__double_or_nothingIjEEvRNS_10unique_ptrIT_PFvPvEEERPS2_S9_(i50, i33, i32);
       i9 = HEAP32[i33 >> 2] | 0;
      }
      i11 = i9 + 4 | 0;
      HEAP32[i33 >> 2] = i11;
      HEAP32[i9 >> 2] = i1;
      i9 = i11;
      i1 = 0;
     }
     i3 = HEAP32[i40 >> 2] | 0;
     i4 = i3 + 12 | 0;
     i5 = HEAP32[i4 >> 2] | 0;
     if ((i5 | 0) == (HEAP32[i3 + 16 >> 2] | 0)) {
      FUNCTION_TABLE_ii[HEAP32[(HEAP32[i3 >> 2] | 0) + 40 >> 2] & 127](i3) | 0;
      i5 = i2;
      i4 = i6;
      continue;
     } else {
      HEAP32[i4 >> 2] = i5 + 1;
      i5 = i2;
      i4 = i6;
      continue;
     }
    }
    if (i1 | 0 ? (HEAP32[i50 >> 2] | 0) != (i9 | 0) : 0) {
     if ((i9 | 0) == (HEAP32[i32 >> 2] | 0)) {
      __ZNSt3__119__double_or_nothingIjEEvRNS_10unique_ptrIT_PFvPvEEERPS2_S9_(i50, i33, i32);
      i9 = HEAP32[i33 >> 2] | 0;
     }
     i11 = i9 + 4 | 0;
     HEAP32[i33 >> 2] = i11;
     HEAP32[i9 >> 2] = i1;
     i9 = i11;
    }
    i4 = HEAP32[i31 >> 2] | 0;
    L198 : do if ((i4 | 0) > 0) {
     i1 = HEAP32[i40 >> 2] | 0;
     do if (i1) {
      if ((HEAP32[i1 + 12 >> 2] | 0) == (HEAP32[i1 + 16 >> 2] | 0)) if ((FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 36 >> 2] & 127](i1) | 0) == -1) {
       HEAP32[i40 >> 2] = 0;
       i1 = 0;
       break;
      } else {
       i1 = HEAP32[i40 >> 2] | 0;
       break;
      }
     } else i1 = 0; while (0);
     i1 = (i1 | 0) == 0;
     do if (i2) {
      if ((HEAP32[i2 + 12 >> 2] | 0) == (HEAP32[i2 + 16 >> 2] | 0) ? (FUNCTION_TABLE_ii[HEAP32[(HEAP32[i2 >> 2] | 0) + 36 >> 2] & 127](i2) | 0) == -1 : 0) {
       HEAP32[i41 >> 2] = 0;
       i39 = 179;
       break;
      }
      if (i1) i5 = i2; else {
       i39 = 184;
       break L21;
      }
     } else i39 = 179; while (0);
     if ((i39 | 0) == 179) {
      i39 = 0;
      if (i1) {
       i39 = 184;
       break L21;
      } else i5 = 0;
     }
     i1 = HEAP32[i40 >> 2] | 0;
     i2 = HEAP32[i1 + 12 >> 2] | 0;
     if ((i2 | 0) == (HEAP32[i1 + 16 >> 2] | 0)) i1 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 36 >> 2] & 127](i1) | 0; else i1 = HEAPU8[i2 >> 0] | 0;
     if ((i1 & 255) << 24 >> 24 != (HEAP8[i30 >> 0] | 0)) {
      i39 = 184;
      break L21;
     }
     i1 = HEAP32[i40 >> 2] | 0;
     i2 = i1 + 12 | 0;
     i3 = HEAP32[i2 >> 2] | 0;
     if ((i3 | 0) == (HEAP32[i1 + 16 >> 2] | 0)) {
      FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 40 >> 2] & 127](i1) | 0;
      i1 = i5;
      i3 = i5;
     } else {
      HEAP32[i2 >> 2] = i3 + 1;
      i1 = i5;
      i3 = i5;
     }
     while (1) {
      if ((i4 | 0) <= 0) break L198;
      i2 = HEAP32[i40 >> 2] | 0;
      do if (i2) {
       if ((HEAP32[i2 + 12 >> 2] | 0) == (HEAP32[i2 + 16 >> 2] | 0)) if ((FUNCTION_TABLE_ii[HEAP32[(HEAP32[i2 >> 2] | 0) + 36 >> 2] & 127](i2) | 0) == -1) {
        HEAP32[i40 >> 2] = 0;
        i2 = 0;
        break;
       } else {
        i2 = HEAP32[i40 >> 2] | 0;
        break;
       }
      } else i2 = 0; while (0);
      i2 = (i2 | 0) == 0;
      do if (i3) {
       if ((HEAP32[i3 + 12 >> 2] | 0) != (HEAP32[i3 + 16 >> 2] | 0)) if (i2) {
        i6 = i1;
        i5 = i3;
        break;
       } else {
        i39 = 206;
        break L21;
       }
       if ((FUNCTION_TABLE_ii[HEAP32[(HEAP32[i3 >> 2] | 0) + 36 >> 2] & 127](i3) | 0) != -1) if (i2 ^ (i1 | 0) == 0) {
        i6 = i1;
        i5 = i1;
        break;
       } else {
        i39 = 206;
        break L21;
       } else {
        HEAP32[i41 >> 2] = 0;
        i1 = 0;
        i39 = 199;
        break;
       }
      } else i39 = 199; while (0);
      if ((i39 | 0) == 199) {
       i39 = 0;
       if (i2) {
        i39 = 206;
        break L21;
       } else {
        i6 = i1;
        i5 = 0;
       }
      }
      i1 = HEAP32[i40 >> 2] | 0;
      i2 = HEAP32[i1 + 12 >> 2] | 0;
      if ((i2 | 0) == (HEAP32[i1 + 16 >> 2] | 0)) i1 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 36 >> 2] & 127](i1) | 0; else i1 = HEAPU8[i2 >> 0] | 0;
      if ((i1 & 255) << 24 >> 24 <= -1) {
       i39 = 206;
       break L21;
      }
      if (!(HEAP16[(HEAP32[i22 >> 2] | 0) + (i1 << 24 >> 24 << 1) >> 1] & 2048)) {
       i39 = 206;
       break L21;
      }
      if ((HEAP32[i38 >> 2] | 0) == (HEAP32[i29 >> 2] | 0)) __ZNSt3__119__double_or_nothingIcEEvRNS_10unique_ptrIT_PFvPvEEERPS2_S9_(i37, i38, i29);
      i1 = HEAP32[i40 >> 2] | 0;
      i2 = HEAP32[i1 + 12 >> 2] | 0;
      if ((i2 | 0) == (HEAP32[i1 + 16 >> 2] | 0)) i1 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 36 >> 2] & 127](i1) | 0; else i1 = HEAPU8[i2 >> 0] | 0;
      i2 = HEAP32[i38 >> 2] | 0;
      HEAP32[i38 >> 2] = i2 + 1;
      HEAP8[i2 >> 0] = i1;
      i4 = i4 + -1 | 0;
      HEAP32[i31 >> 2] = i4;
      i1 = HEAP32[i40 >> 2] | 0;
      i2 = i1 + 12 | 0;
      i3 = HEAP32[i2 >> 2] | 0;
      if ((i3 | 0) == (HEAP32[i1 + 16 >> 2] | 0)) {
       FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 40 >> 2] & 127](i1) | 0;
       i1 = i6;
       i3 = i5;
       continue;
      } else {
       HEAP32[i2 >> 2] = i3 + 1;
       i1 = i6;
       i3 = i5;
       continue;
      }
     }
    } while (0);
    if ((HEAP32[i38 >> 2] | 0) == (HEAP32[i37 >> 2] | 0)) {
     i39 = 216;
     break L21;
    }
    break;
   }
  default:
   {}
  } while (0);
  L262 : do if ((i39 | 0) == 44) while (1) {
   i39 = 0;
   i2 = HEAP32[i40 >> 2] | 0;
   do if (i2) {
    if ((HEAP32[i2 + 12 >> 2] | 0) == (HEAP32[i2 + 16 >> 2] | 0)) if ((FUNCTION_TABLE_ii[HEAP32[(HEAP32[i2 >> 2] | 0) + 36 >> 2] & 127](i2) | 0) == -1) {
     HEAP32[i40 >> 2] = 0;
     i2 = 0;
     break;
    } else {
     i2 = HEAP32[i40 >> 2] | 0;
     break;
    }
   } else i2 = 0; while (0);
   i2 = (i2 | 0) == 0;
   do if (i3) {
    if ((HEAP32[i3 + 12 >> 2] | 0) != (HEAP32[i3 + 16 >> 2] | 0)) if (i2) {
     i5 = i1;
     i4 = i3;
     break;
    } else break L262;
    if ((FUNCTION_TABLE_ii[HEAP32[(HEAP32[i3 >> 2] | 0) + 36 >> 2] & 127](i3) | 0) != -1) if (i2 ^ (i1 | 0) == 0) {
     i5 = i1;
     i4 = i1;
     break;
    } else break L262; else {
     HEAP32[i41 >> 2] = 0;
     i1 = 0;
     i39 = 54;
     break;
    }
   } else i39 = 54; while (0);
   if ((i39 | 0) == 54) {
    i39 = 0;
    if (i2) break L262; else {
     i5 = i1;
     i4 = 0;
    }
   }
   i1 = HEAP32[i40 >> 2] | 0;
   i2 = HEAP32[i1 + 12 >> 2] | 0;
   if ((i2 | 0) == (HEAP32[i1 + 16 >> 2] | 0)) i1 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 36 >> 2] & 127](i1) | 0; else i1 = HEAPU8[i2 >> 0] | 0;
   if ((i1 & 255) << 24 >> 24 <= -1) break L262;
   if (!(HEAP16[(HEAP32[i22 >> 2] | 0) + (i1 << 24 >> 24 << 1) >> 1] & 8192)) break L262;
   i1 = HEAP32[i40 >> 2] | 0;
   i2 = i1 + 12 | 0;
   i3 = HEAP32[i2 >> 2] | 0;
   if ((i3 | 0) == (HEAP32[i1 + 16 >> 2] | 0)) i1 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 40 >> 2] & 127](i1) | 0; else {
    HEAP32[i2 >> 2] = i3 + 1;
    i1 = HEAPU8[i3 >> 0] | 0;
   }
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE9push_backEc(i48, i1 & 255);
   i1 = i5;
   i3 = i4;
   i39 = 44;
  } while (0);
  i12 = i12 + 1 | 0;
 }
 L294 : do if ((i39 | 0) == 42) {
  HEAP32[i42 >> 2] = HEAP32[i42 >> 2] | 4;
  i2 = 0;
 } else if ((i39 | 0) == 98) {
  HEAP32[i42 >> 2] = HEAP32[i42 >> 2] | 4;
  i2 = 0;
 } else if ((i39 | 0) == 136) {
  HEAP32[i42 >> 2] = HEAP32[i42 >> 2] | 4;
  i2 = 0;
 } else if ((i39 | 0) == 184) {
  HEAP32[i42 >> 2] = HEAP32[i42 >> 2] | 4;
  i2 = 0;
 } else if ((i39 | 0) == 206) {
  HEAP32[i42 >> 2] = HEAP32[i42 >> 2] | 4;
  i2 = 0;
 } else if ((i39 | 0) == 216) {
  HEAP32[i42 >> 2] = HEAP32[i42 >> 2] | 4;
  i2 = 0;
 } else if ((i39 | 0) == 218) {
  L296 : do if (i8 | 0) {
   i5 = i8 + 1 | 0;
   i6 = i8 + 8 | 0;
   i7 = i8 + 4 | 0;
   i3 = 1;
   L298 : while (1) {
    i1 = HEAP8[i8 >> 0] | 0;
    if (!(i1 & 1)) i1 = (i1 & 255) >>> 1; else i1 = HEAP32[i7 >> 2] | 0;
    if (i3 >>> 0 >= i1 >>> 0) break L296;
    i1 = HEAP32[i40 >> 2] | 0;
    do if (i1) {
     if ((HEAP32[i1 + 12 >> 2] | 0) == (HEAP32[i1 + 16 >> 2] | 0)) if ((FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 36 >> 2] & 127](i1) | 0) == -1) {
      HEAP32[i40 >> 2] = 0;
      i1 = 0;
      break;
     } else {
      i1 = HEAP32[i40 >> 2] | 0;
      break;
     }
    } else i1 = 0; while (0);
    i1 = (i1 | 0) == 0;
    i2 = HEAP32[i41 >> 2] | 0;
    do if (i2) {
     if ((HEAP32[i2 + 12 >> 2] | 0) == (HEAP32[i2 + 16 >> 2] | 0) ? (FUNCTION_TABLE_ii[HEAP32[(HEAP32[i2 >> 2] | 0) + 36 >> 2] & 127](i2) | 0) == -1 : 0) {
      HEAP32[i41 >> 2] = 0;
      i39 = 234;
      break;
     }
     if (!i1) break L298;
    } else i39 = 234; while (0);
    if ((i39 | 0) == 234 ? (i39 = 0, i1) : 0) break;
    i1 = HEAP32[i40 >> 2] | 0;
    i2 = HEAP32[i1 + 12 >> 2] | 0;
    if ((i2 | 0) == (HEAP32[i1 + 16 >> 2] | 0)) i1 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 36 >> 2] & 127](i1) | 0; else i1 = HEAPU8[i2 >> 0] | 0;
    if (!(HEAP8[i8 >> 0] & 1)) i2 = i5; else i2 = HEAP32[i6 >> 2] | 0;
    if ((i1 & 255) << 24 >> 24 != (HEAP8[i2 + i3 >> 0] | 0)) break;
    i1 = i3 + 1 | 0;
    i2 = HEAP32[i40 >> 2] | 0;
    i3 = i2 + 12 | 0;
    i4 = HEAP32[i3 >> 2] | 0;
    if ((i4 | 0) == (HEAP32[i2 + 16 >> 2] | 0)) {
     FUNCTION_TABLE_ii[HEAP32[(HEAP32[i2 >> 2] | 0) + 40 >> 2] & 127](i2) | 0;
     i3 = i1;
     continue;
    } else {
     HEAP32[i3 >> 2] = i4 + 1;
     i3 = i1;
     continue;
    }
   }
   HEAP32[i42 >> 2] = HEAP32[i42 >> 2] | 4;
   i2 = 0;
   break L294;
  } while (0);
  i1 = HEAP32[i50 >> 2] | 0;
  if ((i1 | 0) != (i9 | 0)) {
   HEAP32[i43 >> 2] = 0;
   __ZNSt3__116__check_groupingERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEPjS8_Rj(i45, i1, i9, i43);
   if (!(HEAP32[i43 >> 2] | 0)) {
    i2 = 1;
    break;
   } else {
    HEAP32[i42 >> 2] = HEAP32[i42 >> 2] | 4;
    i2 = 0;
    break;
   }
  } else i2 = 1;
 } while (0);
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i48);
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i46);
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i47);
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i49);
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i45);
 i1 = HEAP32[i50 >> 2] | 0;
 HEAP32[i50 >> 2] = 0;
 if (i1 | 0) FUNCTION_TABLE_vi[HEAP32[i44 >> 2] & 255](i1);
 STACKTOP = i51;
 return i2 | 0;
}

function __ZN10__cxxabiv112_GLOBAL__N_114parse_encodingINS0_2DbEEEPKcS4_S4_RT_(i22, i19, i20) {
 i22 = i22 | 0;
 i19 = i19 | 0;
 i20 = i20 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, i18 = 0, i21 = 0, i23 = 0, i24 = 0, i25 = 0, i26 = 0, i27 = 0, i28 = 0;
 i28 = STACKTOP;
 STACKTOP = STACKTOP + 80 | 0;
 i23 = i28 + 60 | 0;
 i21 = i28 + 48 | 0;
 i12 = i28 + 36 | 0;
 i13 = i28 + 24 | 0;
 i14 = i28 + 12 | 0;
 i15 = i28;
 L1 : do if ((i22 | 0) == (i19 | 0)) i1 = i22; else {
  i25 = i20 + 56 | 0;
  i26 = HEAP32[i25 >> 2] | 0;
  i18 = i26 + 1 | 0;
  HEAP32[i25 >> 2] = i18;
  i27 = i20 + 61 | 0;
  i24 = HEAP8[i27 >> 0] | 0;
  if (i18 >>> 0 > 1) HEAP8[i27 >> 0] = 1;
  i1 = HEAP8[i22 >> 0] | 0;
  L6 : do switch (i1 | 0) {
  case 84:
  case 71:
   {
    L126 : do if ((i19 - i22 | 0) > 2) {
     switch (i1 | 0) {
     case 84:
      break;
     case 71:
      switch (HEAP8[i22 + 1 >> 0] | 0) {
      case 86:
       {
        i23 = i22 + 2 | 0;
        i1 = __ZN10__cxxabiv112_GLOBAL__N_110parse_nameINS0_2DbEEEPKcS4_S4_RT_(i23, i19, i20) | 0;
        if ((i1 | 0) == (i23 | 0)) {
         i1 = i22;
         break L126;
        }
        i2 = HEAP32[i20 + 4 >> 2] | 0;
        if ((HEAP32[i20 >> 2] | 0) == (i2 | 0)) {
         i1 = i22;
         break L126;
        }
        __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc(i2 + -24 | 0, 0, 35103) | 0;
        break L126;
       }
      case 82:
       {
        i23 = i22 + 2 | 0;
        i1 = __ZN10__cxxabiv112_GLOBAL__N_110parse_nameINS0_2DbEEEPKcS4_S4_RT_(i23, i19, i20) | 0;
        if ((i1 | 0) == (i23 | 0)) {
         i1 = i22;
         break L126;
        }
        i2 = HEAP32[i20 + 4 >> 2] | 0;
        if ((HEAP32[i20 >> 2] | 0) == (i2 | 0)) {
         i1 = i22;
         break L126;
        }
        __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc(i2 + -24 | 0, 0, 35123) | 0;
        break L126;
       }
      default:
       {
        i1 = i22;
        break L126;
       }
      }
     default:
      {
       i1 = i22;
       break L126;
      }
     }
     i1 = i22 + 1 | 0;
     switch (HEAP8[i1 >> 0] | 0) {
     case 86:
      {
       i23 = i22 + 2 | 0;
       i1 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_(i23, i19, i20) | 0;
       if ((i1 | 0) == (i23 | 0)) {
        i1 = i22;
        break L126;
       }
       i2 = HEAP32[i20 + 4 >> 2] | 0;
       if ((HEAP32[i20 >> 2] | 0) == (i2 | 0)) {
        i1 = i22;
        break L126;
       }
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc(i2 + -24 | 0, 0, 34952) | 0;
       break L126;
      }
     case 84:
      {
       i23 = i22 + 2 | 0;
       i1 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_(i23, i19, i20) | 0;
       if ((i1 | 0) == (i23 | 0)) {
        i1 = i22;
        break L126;
       }
       i2 = HEAP32[i20 + 4 >> 2] | 0;
       if ((HEAP32[i20 >> 2] | 0) == (i2 | 0)) {
        i1 = i22;
        break L126;
       }
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc(i2 + -24 | 0, 0, 34964) | 0;
       break L126;
      }
     case 73:
      {
       i23 = i22 + 2 | 0;
       i1 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_(i23, i19, i20) | 0;
       if ((i1 | 0) == (i23 | 0)) {
        i1 = i22;
        break L126;
       }
       i2 = HEAP32[i20 + 4 >> 2] | 0;
       if ((HEAP32[i20 >> 2] | 0) == (i2 | 0)) {
        i1 = i22;
        break L126;
       }
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc(i2 + -24 | 0, 0, 34973) | 0;
       break L126;
      }
     case 83:
      {
       i23 = i22 + 2 | 0;
       i1 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_(i23, i19, i20) | 0;
       if ((i1 | 0) == (i23 | 0)) {
        i1 = i22;
        break L126;
       }
       i2 = HEAP32[i20 + 4 >> 2] | 0;
       if ((HEAP32[i20 >> 2] | 0) == (i2 | 0)) {
        i1 = i22;
        break L126;
       }
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc(i2 + -24 | 0, 0, 34987) | 0;
       break L126;
      }
     case 99:
      {
       i23 = i22 + 2 | 0;
       i1 = __ZN10__cxxabiv112_GLOBAL__N_117parse_call_offsetEPKcS2_(i23, i19) | 0;
       if ((i1 | 0) == (i23 | 0)) {
        i1 = i22;
        break L126;
       }
       i2 = __ZN10__cxxabiv112_GLOBAL__N_117parse_call_offsetEPKcS2_(i1, i19) | 0;
       if ((i2 | 0) == (i1 | 0)) {
        i1 = i22;
        break L126;
       }
       i1 = __ZN10__cxxabiv112_GLOBAL__N_114parse_encodingINS0_2DbEEEPKcS4_S4_RT_(i2, i19, i20) | 0;
       if ((i1 | 0) == (i2 | 0)) {
        i1 = i22;
        break L126;
       }
       i2 = HEAP32[i20 + 4 >> 2] | 0;
       if ((HEAP32[i20 >> 2] | 0) == (i2 | 0)) {
        i1 = i22;
        break L126;
       }
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc(i2 + -24 | 0, 0, 35006) | 0;
       break L126;
      }
     case 67:
      {
       i18 = i22 + 2 | 0;
       i1 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_(i18, i19, i20) | 0;
       if ((i1 | 0) == (i18 | 0)) {
        i1 = i22;
        break L126;
       }
       i2 = __ZN10__cxxabiv112_GLOBAL__N_112parse_numberEPKcS2_(i1, i19) | 0;
       if ((i2 | 0) == (i1 | 0) | (i2 | 0) == (i19 | 0)) {
        i1 = i22;
        break L126;
       }
       if ((HEAP8[i2 >> 0] | 0) != 95) {
        i1 = i22;
        break L126;
       }
       i18 = i2 + 1 | 0;
       i1 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_(i18, i19, i20) | 0;
       if ((i1 | 0) == (i18 | 0)) {
        i1 = i22;
        break L126;
       }
       i4 = i20 + 4 | 0;
       i2 = HEAP32[i4 >> 2] | 0;
       if (((i2 - (HEAP32[i20 >> 2] | 0) | 0) / 24 | 0) >>> 0 < 2) {
        i1 = i22;
        break L126;
       }
       __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv(i23, i2 + -24 | 0);
       i5 = HEAP32[i4 >> 2] | 0;
       i2 = i5 + -24 | 0;
       i3 = i5;
       while (1) {
        if ((i3 | 0) == (i2 | 0)) break;
        i22 = i3 + -24 | 0;
        HEAP32[i4 >> 2] = i22;
        __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i22);
        i3 = HEAP32[i4 >> 2] | 0;
       }
       i11 = i5 + -48 | 0;
       i2 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc(i23, 0, 35033) | 0;
       HEAP32[i13 >> 2] = HEAP32[i2 >> 2];
       HEAP32[i13 + 4 >> 2] = HEAP32[i2 + 4 >> 2];
       HEAP32[i13 + 8 >> 2] = HEAP32[i2 + 8 >> 2];
       i3 = 0;
       while (1) {
        if ((i3 | 0) == 3) break;
        HEAP32[i2 + (i3 << 2) >> 2] = 0;
        i3 = i3 + 1 | 0;
       }
       i2 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc(i13, 35058) | 0;
       HEAP32[i12 >> 2] = HEAP32[i2 >> 2];
       HEAP32[i12 + 4 >> 2] = HEAP32[i2 + 4 >> 2];
       HEAP32[i12 + 8 >> 2] = HEAP32[i2 + 8 >> 2];
       i3 = 0;
       while (1) {
        if ((i3 | 0) == 3) break;
        HEAP32[i2 + (i3 << 2) >> 2] = 0;
        i3 = i3 + 1 | 0;
       }
       __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv(i14, (HEAP32[i4 >> 2] | 0) + -24 | 0);
       i2 = HEAP8[i14 >> 0] | 0;
       i3 = (i2 & 1) == 0;
       i2 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj(i12, i3 ? i14 + 1 | 0 : HEAP32[i14 + 8 >> 2] | 0, i3 ? (i2 & 255) >>> 1 : HEAP32[i14 + 4 >> 2] | 0) | 0;
       HEAP32[i21 >> 2] = HEAP32[i2 >> 2];
       HEAP32[i21 + 4 >> 2] = HEAP32[i2 + 4 >> 2];
       HEAP32[i21 + 8 >> 2] = HEAP32[i2 + 8 >> 2];
       i3 = 0;
       while (1) {
        if ((i3 | 0) == 3) break;
        HEAP32[i2 + (i3 << 2) >> 2] = 0;
        i3 = i3 + 1 | 0;
       }
       do if (HEAP8[i11 >> 0] & 1) {
        i10 = i5 + -40 | 0;
        HEAP8[HEAP32[i10 >> 2] >> 0] = 0;
        i7 = i5 + -44 | 0;
        HEAP32[i7 >> 2] = 0;
        i2 = HEAP8[i11 >> 0] | 0;
        if (!(i2 & 1)) i6 = 10; else {
         i6 = HEAP32[i11 >> 2] | 0;
         i2 = i6 & 255;
         i6 = (i6 & -2) + -1 | 0;
        }
        if (!(i2 & 1)) {
         i3 = (i2 & 255) >>> 1;
         if ((i2 & 255) < 22) {
          i5 = 10;
          i8 = i3;
          i9 = 1;
         } else {
          i5 = (i3 + 16 & 240) + -1 | 0;
          i8 = i3;
          i9 = 1;
         }
        } else {
         i5 = 10;
         i8 = 0;
         i9 = 0;
        }
        if ((i5 | 0) != (i6 | 0)) {
         if ((i5 | 0) == 10) {
          i4 = i11 + 1 | 0;
          i3 = HEAP32[i10 >> 2] | 0;
          if (i9) {
           _memcpy(i4 | 0, i3 | 0, ((i2 & 255) >>> 1) + 1 | 0) | 0;
           _free(i3);
          } else {
           HEAP8[i4 >> 0] = HEAP8[i3 >> 0] | 0;
           _free(i3);
          }
          HEAP8[i11 >> 0] = i8 << 1;
          break;
         }
         i3 = i5 + 1 | 0;
         i4 = _malloc(i3) | 0;
         if (!(i5 >>> 0 <= i6 >>> 0 & (i4 | 0) == 0)) {
          if (i9) _memcpy(i4 | 0, i11 + 1 | 0, ((i2 & 255) >>> 1) + 1 | 0) | 0; else {
           i22 = HEAP32[i10 >> 2] | 0;
           HEAP8[i4 >> 0] = HEAP8[i22 >> 0] | 0;
           _free(i22);
          }
          HEAP32[i11 >> 2] = i3 | 1;
          HEAP32[i7 >> 2] = i8;
          HEAP32[i10 >> 2] = i4;
         }
        }
       } else {
        HEAP8[i11 + 1 >> 0] = 0;
        HEAP8[i11 >> 0] = 0;
       } while (0);
       HEAP32[i11 >> 2] = HEAP32[i21 >> 2];
       HEAP32[i11 + 4 >> 2] = HEAP32[i21 + 4 >> 2];
       HEAP32[i11 + 8 >> 2] = HEAP32[i21 + 8 >> 2];
       i2 = 0;
       while (1) {
        if ((i2 | 0) == 3) break;
        HEAP32[i21 + (i2 << 2) >> 2] = 0;
        i2 = i2 + 1 | 0;
       }
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i21);
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i14);
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i12);
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i13);
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i23);
       break L126;
      }
     default:
      {
       i2 = __ZN10__cxxabiv112_GLOBAL__N_117parse_call_offsetEPKcS2_(i1, i19) | 0;
       if ((i2 | 0) == (i1 | 0)) {
        i1 = i22;
        break L126;
       }
       i1 = __ZN10__cxxabiv112_GLOBAL__N_114parse_encodingINS0_2DbEEEPKcS4_S4_RT_(i2, i19, i20) | 0;
       if ((i1 | 0) == (i2 | 0)) {
        i1 = i22;
        break L126;
       }
       i2 = HEAP32[i20 + 4 >> 2] | 0;
       if ((HEAP32[i20 >> 2] | 0) == (i2 | 0)) {
        i1 = i22;
        break L126;
       }
       i2 = i2 + -24 | 0;
       if ((HEAP8[i22 + 2 >> 0] | 0) == 118) {
        __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc(i2, 0, 35063) | 0;
        break L126;
       } else {
        __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc(i2, 0, 35081) | 0;
        break L126;
       }
      }
     }
    } else i1 = i22; while (0);
    break;
   }
  default:
   {
    i1 = __ZN10__cxxabiv112_GLOBAL__N_110parse_nameINS0_2DbEEEPKcS4_S4_RT_(i22, i19, i20) | 0;
    i16 = HEAP32[i20 + 48 >> 2] | 0;
    i17 = HEAP32[i20 + 52 >> 2] | 0;
    if ((i1 | 0) != (i22 | 0)) if ((i1 | 0) != (i19 | 0)) {
     switch (HEAP8[i1 >> 0] | 0) {
     case 46:
     case 69:
      break L6;
     default:
      {}
     }
     i18 = HEAP8[i27 >> 0] | 0;
     HEAP8[i27 >> 0] = 0;
     i2 = 0;
     while (1) {
      if ((i2 | 0) == 3) break;
      HEAP32[i23 + (i2 << 2) >> 2] = 0;
      i2 = i2 + 1 | 0;
     }
     i14 = i20 + 4 | 0;
     i7 = HEAP32[i14 >> 2] | 0;
     L15 : do if ((HEAP32[i20 >> 2] | 0) != (i7 | 0)) {
      i6 = i7 + -24 | 0;
      i4 = HEAP8[i6 >> 0] | 0;
      i5 = (i4 & 1) == 0;
      if (i5) i2 = (i4 & 255) >>> 1; else i2 = HEAP32[i7 + -20 >> 2] | 0;
      if (i2) {
       if (!(HEAP8[i20 + 60 >> 0] | 0)) {
        if (i5) {
         i2 = i6 + 1 | 0;
         i3 = (i4 & 255) >>> 1;
        } else {
         i2 = HEAP32[i7 + -16 >> 2] | 0;
         i3 = HEAP32[i7 + -20 >> 2] | 0;
        }
        if ((HEAP8[i2 + i3 + -1 >> 0] | 0) == 62) {
         if (i5) {
          i2 = (i4 & 255) >>> 1;
          i3 = i6 + 1 | 0;
         } else {
          i2 = HEAP32[i7 + -20 >> 2] | 0;
          i3 = HEAP32[i7 + -16 >> 2] | 0;
         }
         if ((HEAP8[i3 + (i2 + -2) >> 0] | 0) != 45) {
          if (i5) {
           i3 = (i4 & 255) >>> 1;
           i2 = i6 + 1 | 0;
          } else {
           i3 = HEAP32[i7 + -20 >> 2] | 0;
           i2 = HEAP32[i7 + -16 >> 2] | 0;
          }
          if ((HEAP8[i2 + (i3 + -2) >> 0] | 0) != 62) {
           i10 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_(i1, i19, i20) | 0;
           if ((i10 | 0) == (i1 | 0)) {
            i1 = i22;
            i2 = 0;
            break;
           }
           i13 = HEAP32[i14 >> 2] | 0;
           i1 = i13;
           if (((i13 - (HEAP32[i20 >> 2] | 0) | 0) / 24 | 0) >>> 0 < 2) {
            i1 = i22;
            i2 = 0;
            break;
           }
           i2 = i1 + -24 | 0;
           HEAP32[i21 >> 2] = HEAP32[i2 >> 2];
           HEAP32[i21 + 4 >> 2] = HEAP32[i2 + 4 >> 2];
           HEAP32[i21 + 8 >> 2] = HEAP32[i2 + 8 >> 2];
           i3 = 0;
           while (1) {
            if ((i3 | 0) == 3) break;
            HEAP32[i2 + (i3 << 2) >> 2] = 0;
            i3 = i3 + 1 | 0;
           }
           i9 = i1 + -12 | 0;
           L45 : do if (!(HEAP8[i23 >> 0] & 1)) {
            HEAP8[i23 + 1 >> 0] = 0;
            HEAP8[i23 >> 0] = 0;
           } else {
            i5 = i23 + 8 | 0;
            i2 = HEAP32[i5 >> 2] | 0;
            HEAP8[i2 >> 0] = 0;
            i6 = i23 + 4 | 0;
            HEAP32[i6 >> 2] = 0;
            i7 = HEAP32[i23 >> 2] | 0;
            i8 = (i7 & -2) + -1 | 0;
            i3 = i7 & 255;
            do if (!(i3 & 1)) {
             i1 = i7 >>> 1 & 127;
             if ((i3 & 255) < 22) {
              _memcpy(i23 + 1 | 0, i2 | 0, (i7 >>> 1 & 127) + 1 | 0) | 0;
              _free(i2);
              break;
             }
             i2 = i1 + 16 & 240;
             i4 = i2 + -1 | 0;
             if ((i4 | 0) == (i8 | 0)) break L45;
             i3 = _malloc(i2) | 0;
             if (i4 >>> 0 <= i8 >>> 0 & (i3 | 0) == 0) break L45;
             _memcpy(i3 | 0, i23 + 1 | 0, (i7 >>> 1 & 127) + 1 | 0) | 0;
             HEAP32[i23 >> 2] = i2 | 1;
             HEAP32[i6 >> 2] = i1;
             HEAP32[i5 >> 2] = i3;
             break L45;
            } else {
             HEAP8[i23 + 1 >> 0] = 0;
             _free(i2);
             i1 = 0;
            } while (0);
            HEAP8[i23 >> 0] = i1 << 1;
           } while (0);
           HEAP32[i23 >> 2] = HEAP32[i9 >> 2];
           HEAP32[i23 + 4 >> 2] = HEAP32[i9 + 4 >> 2];
           HEAP32[i23 + 8 >> 2] = HEAP32[i9 + 8 >> 2];
           i1 = 0;
           while (1) {
            if ((i1 | 0) == 3) break;
            HEAP32[i9 + (i1 << 2) >> 2] = 0;
            i1 = i1 + 1 | 0;
           }
           i13 = HEAP8[i23 >> 0] | 0;
           if (!(((i13 & 1) == 0 ? (i13 & 255) >>> 1 : HEAP32[i23 + 4 >> 2] | 0) | 0)) __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE9push_backEc(i21, 32);
           i1 = HEAP32[i14 >> 2] | 0;
           i2 = i1 + -24 | 0;
           i3 = i1;
           while (1) {
            if ((i3 | 0) == (i2 | 0)) break;
            i13 = i3 + -24 | 0;
            HEAP32[i14 >> 2] = i13;
            __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i13);
            i3 = HEAP32[i14 >> 2] | 0;
           }
           i2 = HEAP8[i21 >> 0] | 0;
           i13 = (i2 & 1) == 0;
           __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKcj(i1 + -48 | 0, 0, i13 ? i21 + 1 | 0 : HEAP32[i21 + 8 >> 2] | 0, i13 ? (i2 & 255) >>> 1 : HEAP32[i21 + 4 >> 2] | 0) | 0;
           __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i21);
           i2 = HEAP32[i14 >> 2] | 0;
           i1 = i10;
          } else i2 = i7;
         } else i2 = i7;
        } else i2 = i7;
       } else i2 = i7;
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE9push_backEc(i2 + -24 | 0, 40);
       if ((i1 | 0) != (i19 | 0) ? (HEAP8[i1 >> 0] | 0) == 118 : 0) {
        i2 = HEAP32[i20 >> 2] | 0;
        i3 = HEAP32[i14 >> 2] | 0;
        i1 = i1 + 1 | 0;
       } else i11 = 128;
       do if ((i11 | 0) == 128) {
        i8 = i21 + 4 | 0;
        i9 = i15 + 8 | 0;
        i10 = i15 + 1 | 0;
        i11 = i15 + 4 | 0;
        i12 = i21 + 8 | 0;
        i13 = i21 + 1 | 0;
        i7 = 1;
        L75 : while (1) {
         i3 = HEAP32[i14 >> 2] | 0;
         i2 = HEAP32[i20 >> 2] | 0;
         while (1) {
          i4 = (i3 - i2 | 0) / 24 | 0;
          i5 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_(i1, i19, i20) | 0;
          i3 = HEAP32[i14 >> 2] | 0;
          i2 = HEAP32[i20 >> 2] | 0;
          i6 = (i3 - i2 | 0) / 24 | 0;
          if ((i5 | 0) == (i1 | 0)) {
           i11 = 151;
           break L75;
          }
          if (i6 >>> 0 > i4 >>> 0) {
           i1 = i5;
           i5 = i6;
           break;
          } else i1 = i5;
         }
         i2 = 0;
         while (1) {
          if ((i2 | 0) == 3) {
           i2 = i4;
           break;
          }
          HEAP32[i21 + (i2 << 2) >> 2] = 0;
          i2 = i2 + 1 | 0;
         }
         while (1) {
          if (i2 >>> 0 >= i5 >>> 0) break;
          i6 = HEAP8[i21 >> 0] | 0;
          if (((i6 & 1) == 0 ? (i6 & 255) >>> 1 : HEAP32[i8 >> 2] | 0) | 0) __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc(i21, 34253) | 0;
          __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv(i15, (HEAP32[i20 >> 2] | 0) + (i2 * 24 | 0) | 0);
          i6 = HEAP8[i15 >> 0] | 0;
          i3 = (i6 & 1) == 0;
          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj(i21, i3 ? i10 : HEAP32[i9 >> 2] | 0, i3 ? (i6 & 255) >>> 1 : HEAP32[i11 >> 2] | 0) | 0;
          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i15);
          i2 = i2 + 1 | 0;
         }
         while (1) {
          if (i4 >>> 0 >= i5 >>> 0) break;
          i3 = HEAP32[i14 >> 2] | 0;
          i2 = i3 + -24 | 0;
          while (1) {
           if ((i3 | 0) == (i2 | 0)) break;
           i6 = i3 + -24 | 0;
           HEAP32[i14 >> 2] = i6;
           __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i6);
           i3 = HEAP32[i14 >> 2] | 0;
          }
          i4 = i4 + 1 | 0;
         }
         i4 = HEAP8[i21 >> 0] | 0;
         i2 = HEAP32[i8 >> 2] | 0;
         if (!(((i4 & 1) == 0 ? (i4 & 255) >>> 1 : i2) | 0)) i2 = i7; else {
          i3 = HEAP32[i14 >> 2] | 0;
          if ((HEAP32[i20 >> 2] | 0) == (i3 | 0)) {
           i11 = 163;
           break;
          }
          if (!i7) {
           __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc(i3 + -24 | 0, 34253) | 0;
           i3 = HEAP32[i14 >> 2] | 0;
           i4 = HEAP8[i21 >> 0] | 0;
           i2 = HEAP32[i8 >> 2] | 0;
          }
          i7 = (i4 & 1) == 0;
          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj(i3 + -24 | 0, i7 ? i13 : HEAP32[i12 >> 2] | 0, i7 ? (i4 & 255) >>> 1 : i2) | 0;
          i2 = 0;
         }
         __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i21);
         i7 = i2;
        }
        if ((i11 | 0) == 151) break; else if ((i11 | 0) == 163) {
         __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i21);
         i1 = i22;
         i2 = 0;
         break L15;
        }
       } while (0);
       if ((i2 | 0) != (i3 | 0)) {
        __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE9push_backEc(i3 + -24 | 0, 41);
        if (i16 & 1 | 0) __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc((HEAP32[i14 >> 2] | 0) + -24 | 0, 33269) | 0;
        if (i16 & 2 | 0) __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc((HEAP32[i14 >> 2] | 0) + -24 | 0, 33276) | 0;
        if (i16 & 4 | 0) __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc((HEAP32[i14 >> 2] | 0) + -24 | 0, 33286) | 0;
        switch (i17 | 0) {
        case 1:
         {
          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc((HEAP32[i14 >> 2] | 0) + -24 | 0, 34860) | 0;
          break;
         }
        case 2:
         {
          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc((HEAP32[i14 >> 2] | 0) + -24 | 0, 34863) | 0;
          break;
         }
        default:
         {}
        }
        i2 = HEAP8[i23 >> 0] | 0;
        i21 = (i2 & 1) == 0;
        __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj((HEAP32[i14 >> 2] | 0) + -24 | 0, i21 ? i23 + 1 | 0 : HEAP32[i23 + 8 >> 2] | 0, i21 ? (i2 & 255) >>> 1 : HEAP32[i23 + 4 >> 2] | 0) | 0;
        i2 = 1;
       } else {
        i1 = i22;
        i2 = 0;
       }
      } else {
       i1 = i22;
       i2 = 0;
      }
     } else {
      i1 = i22;
      i2 = 0;
     } while (0);
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i23);
     HEAP8[i27 >> 0] = i18;
     if (!i2) {
      HEAP8[i27 >> 0] = i24;
      HEAP32[i25 >> 2] = i26;
      i1 = i22;
      break L1;
     }
    } else i1 = i19; else i1 = i22;
   }
  } while (0);
  HEAP8[i27 >> 0] = i24;
  HEAP32[i25 >> 2] = i26;
 } while (0);
 STACKTOP = i28;
 return i1 | 0;
}
function __ZN10__cxxabiv112_GLOBAL__N_122parse_unqualified_nameINS0_2DbEEEPKcS4_S4_RT_(i1, i16, i13) {
 i1 = i1 | 0;
 i16 = i16 | 0;
 i13 = i13 | 0;
 var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i14 = 0, i15 = 0, i17 = 0;
 i17 = STACKTOP;
 STACKTOP = STACKTOP + 112 | 0;
 i15 = i17 + 88 | 0;
 i8 = i17 + 64 | 0;
 i9 = i17 + 48 | 0;
 i7 = i17 + 24 | 0;
 i10 = i17 + 12 | 0;
 i12 = i17;
 L1 : do if ((i1 | 0) != (i16 | 0)) {
  i3 = HEAP8[i1 >> 0] | 0;
  i4 = i3 << 24 >> 24;
  switch (i4 | 0) {
  case 68:
  case 67:
   {
    L6 : do if ((i16 - i1 | 0) > 1 ? (i6 = i13 + 4 | 0, i2 = HEAP32[i6 >> 2] | 0, (HEAP32[i13 >> 2] | 0) != (i2 | 0)) : 0) {
     switch (i4 | 0) {
     case 67:
      {
       switch (HEAP8[i1 + 1 >> 0] | 0) {
       case 53:
       case 51:
       case 50:
       case 49:
        break;
       default:
        break L6;
       }
       __ZN10__cxxabiv112_GLOBAL__N_19base_nameINSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEEEET_RS9_(i9, i2 + -24 | 0);
       __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE(i8, i9);
       i2 = HEAP32[i6 >> 2] | 0;
       i16 = HEAP32[i13 + 8 >> 2] | 0;
       i5 = i16;
       if (i2 >>> 0 < i16 >>> 0) {
        __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i2, i8);
        HEAP32[i6 >> 2] = (HEAP32[i6 >> 2] | 0) + 24;
       } else {
        i3 = HEAP32[i13 >> 2] | 0;
        i16 = i2 - i3 | 0;
        i6 = (i16 | 0) / 24 | 0;
        i4 = i6 + 1 | 0;
        if ((i16 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i13);
        i2 = (i5 - i3 | 0) / 24 | 0;
        if (i2 >>> 0 < 1073741823) {
         i2 = i2 << 1;
         i2 = i2 >>> 0 < i4 >>> 0 ? i4 : i2;
        } else i2 = 2147483647;
        __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_(i15, i2, i6, i13 + 12 | 0);
        i16 = i15 + 8 | 0;
        i14 = HEAP32[i16 >> 2] | 0;
        __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i14, i8);
        HEAP32[i16 >> 2] = i14 + 24;
        __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i13, i15);
        __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev(i15);
       }
       __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i8);
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i9);
       HEAP8[i13 + 60 >> 0] = 1;
       i1 = i1 + 2 | 0;
       break L6;
      }
     case 68:
      break;
     default:
      break L6;
     }
     switch (HEAP8[i1 + 1 >> 0] | 0) {
     case 53:
     case 50:
     case 49:
     case 48:
      break;
     default:
      break L6;
     }
     __ZN10__cxxabiv112_GLOBAL__N_19base_nameINSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEEEET_RS9_(i12, i2 + -24 | 0);
     i2 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc(i12, 0, 33708) | 0;
     HEAP32[i10 >> 2] = HEAP32[i2 >> 2];
     HEAP32[i10 + 4 >> 2] = HEAP32[i2 + 4 >> 2];
     HEAP32[i10 + 8 >> 2] = HEAP32[i2 + 8 >> 2];
     i3 = 0;
     while (1) {
      if ((i3 | 0) == 3) break;
      HEAP32[i2 + (i3 << 2) >> 2] = 0;
      i3 = i3 + 1 | 0;
     }
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE(i7, i10);
     i2 = HEAP32[i6 >> 2] | 0;
     i16 = HEAP32[i13 + 8 >> 2] | 0;
     i5 = i16;
     if (i2 >>> 0 < i16 >>> 0) {
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i2, i7);
      HEAP32[i6 >> 2] = (HEAP32[i6 >> 2] | 0) + 24;
     } else {
      i3 = HEAP32[i13 >> 2] | 0;
      i16 = i2 - i3 | 0;
      i6 = (i16 | 0) / 24 | 0;
      i4 = i6 + 1 | 0;
      if ((i16 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i13);
      i2 = (i5 - i3 | 0) / 24 | 0;
      if (i2 >>> 0 < 1073741823) {
       i2 = i2 << 1;
       i2 = i2 >>> 0 < i4 >>> 0 ? i4 : i2;
      } else i2 = 2147483647;
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_(i15, i2, i6, i13 + 12 | 0);
      i16 = i15 + 8 | 0;
      i14 = HEAP32[i16 >> 2] | 0;
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i14, i7);
      HEAP32[i16 >> 2] = i14 + 24;
      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i13, i15);
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev(i15);
     }
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i7);
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i10);
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i12);
     HEAP8[i13 + 60 >> 0] = 1;
     i1 = i1 + 2 | 0;
    } while (0);
    break L1;
   }
  case 85:
   {
    L40 : do if ((i16 - i1 | 0) > 2 & i3 << 24 >> 24 == 85) {
     switch (HEAP8[i1 + 1 >> 0] | 0) {
     case 116:
      {
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj(i9, 34632, 8);
       __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE(i8, i9);
       i7 = i13 + 4 | 0;
       i2 = HEAP32[i7 >> 2] | 0;
       i14 = HEAP32[i13 + 8 >> 2] | 0;
       i3 = i14;
       if (i2 >>> 0 < i14 >>> 0) {
        __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i2, i8);
        HEAP32[i7 >> 2] = (HEAP32[i7 >> 2] | 0) + 24;
       } else {
        i4 = HEAP32[i13 >> 2] | 0;
        i14 = i2 - i4 | 0;
        i6 = (i14 | 0) / 24 | 0;
        i5 = i6 + 1 | 0;
        if ((i14 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i13);
        i2 = (i3 - i4 | 0) / 24 | 0;
        if (i2 >>> 0 < 1073741823) {
         i2 = i2 << 1;
         i2 = i2 >>> 0 < i5 >>> 0 ? i5 : i2;
        } else i2 = 2147483647;
        __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_(i15, i2, i6, i13 + 12 | 0);
        i14 = i15 + 8 | 0;
        i12 = HEAP32[i14 >> 2] | 0;
        __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i12, i8);
        HEAP32[i14 >> 2] = i12 + 24;
        __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i13, i15);
        __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev(i15);
       }
       __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i8);
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i9);
       i2 = i1 + 2 | 0;
       if ((i2 | 0) == (i16 | 0)) {
        i3 = HEAP32[i7 >> 2] | 0;
        i2 = i3 + -24 | 0;
        while (1) {
         if ((i3 | 0) == (i2 | 0)) break L40;
         i16 = i3 + -24 | 0;
         HEAP32[i7 >> 2] = i16;
         __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i16);
         i3 = HEAP32[i7 >> 2] | 0;
        }
       }
       if (((HEAP8[i2 >> 0] | 0) + -48 | 0) >>> 0 < 10) {
        i3 = i1 + 3 | 0;
        while (1) {
         if ((i3 | 0) == (i16 | 0)) {
          i3 = i16;
          break;
         }
         if (((HEAP8[i3 >> 0] | 0) + -48 | 0) >>> 0 >= 10) break;
         i3 = i3 + 1 | 0;
        }
        __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendIPKcEENS_9enable_ifIXsr21__is_forward_iteratorIT_EE5valueERS7_E4typeESC_SC_((HEAP32[i7 >> 2] | 0) + -24 | 0, i2, i3);
        i2 = i3;
       }
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE9push_backEc((HEAP32[i7 >> 2] | 0) + -24 | 0, 39);
       if ((i2 | 0) != (i16 | 0) ? (HEAP8[i2 >> 0] | 0) == 95 : 0) {
        i1 = i2 + 1 | 0;
        break L40;
       }
       i3 = HEAP32[i7 >> 2] | 0;
       i2 = i3 + -24 | 0;
       while (1) {
        if ((i3 | 0) == (i2 | 0)) break L40;
        i16 = i3 + -24 | 0;
        HEAP32[i7 >> 2] = i16;
        __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i16);
        i3 = HEAP32[i7 >> 2] | 0;
       }
      }
     case 108:
      break;
     default:
      break L40;
     }
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj(i10, 34641, 9);
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE(i7, i10);
     i14 = i13 + 4 | 0;
     i2 = HEAP32[i14 >> 2] | 0;
     i11 = HEAP32[i13 + 8 >> 2] | 0;
     i3 = i11;
     if (i2 >>> 0 < i11 >>> 0) {
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i2, i7);
      HEAP32[i14 >> 2] = (HEAP32[i14 >> 2] | 0) + 24;
     } else {
      i4 = HEAP32[i13 >> 2] | 0;
      i11 = i2 - i4 | 0;
      i6 = (i11 | 0) / 24 | 0;
      i5 = i6 + 1 | 0;
      if ((i11 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i13);
      i2 = (i3 - i4 | 0) / 24 | 0;
      if (i2 >>> 0 < 1073741823) {
       i2 = i2 << 1;
       i2 = i2 >>> 0 < i5 >>> 0 ? i5 : i2;
      } else i2 = 2147483647;
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_(i15, i2, i6, i13 + 12 | 0);
      i11 = i15 + 8 | 0;
      i9 = HEAP32[i11 >> 2] | 0;
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i9, i7);
      HEAP32[i11 >> 2] = i9 + 24;
      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i13, i15);
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev(i15);
     }
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i7);
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i10);
     i3 = i1 + 2 | 0;
     do if ((HEAP8[i3 >> 0] | 0) != 118) {
      i2 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_(i3, i16, i13) | 0;
      if ((i2 | 0) == (i3 | 0)) {
       i3 = HEAP32[i14 >> 2] | 0;
       i2 = i3 + -24 | 0;
       while (1) {
        if ((i3 | 0) == (i2 | 0)) break L40;
        i16 = i3 + -24 | 0;
        HEAP32[i14 >> 2] = i16;
        __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i16);
        i3 = HEAP32[i14 >> 2] | 0;
       }
      }
      i3 = HEAP32[i14 >> 2] | 0;
      if (((i3 - (HEAP32[i13 >> 2] | 0) | 0) / 24 | 0) >>> 0 < 2) break L40;
      __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv(i15, i3 + -24 | 0);
      i5 = HEAP32[i14 >> 2] | 0;
      i3 = i5 + -24 | 0;
      i4 = i5;
      while (1) {
       if ((i4 | 0) == (i3 | 0)) break;
       i11 = i4 + -24 | 0;
       HEAP32[i14 >> 2] = i11;
       __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i11);
       i4 = HEAP32[i14 >> 2] | 0;
      }
      i3 = HEAP8[i15 >> 0] | 0;
      i8 = (i3 & 1) == 0;
      i9 = i15 + 8 | 0;
      i10 = i15 + 1 | 0;
      i11 = i15 + 4 | 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj(i5 + -48 | 0, i8 ? i10 : HEAP32[i9 >> 2] | 0, i8 ? (i3 & 255) >>> 1 : HEAP32[i11 >> 2] | 0) | 0;
      while (1) {
       i8 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_(i2, i16, i13) | 0;
       if ((i8 | 0) == (i2 | 0)) {
        i4 = 91;
        break;
       }
       i2 = HEAP32[i14 >> 2] | 0;
       if (((i2 - (HEAP32[i13 >> 2] | 0) | 0) / 24 | 0) >>> 0 < 2) {
        i4 = 129;
        break;
       }
       __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv(i12, i2 + -24 | 0);
       L104 : do if (!(i3 & 1)) {
        HEAP8[i10 >> 0] = 0;
        HEAP8[i15 >> 0] = 0;
       } else {
        i3 = HEAP32[i9 >> 2] | 0;
        HEAP8[i3 >> 0] = 0;
        HEAP32[i11 >> 2] = 0;
        i6 = HEAP32[i15 >> 2] | 0;
        i7 = (i6 & -2) + -1 | 0;
        i4 = i6 & 255;
        do if (!(i4 & 1)) {
         i2 = i6 >>> 1 & 127;
         if ((i4 & 255) < 22) {
          _memcpy(i10 | 0, i3 | 0, (i6 >>> 1 & 127) + 1 | 0) | 0;
          _free(i3);
          break;
         }
         i3 = i2 + 16 & 240;
         i5 = i3 + -1 | 0;
         if ((i5 | 0) == (i7 | 0)) break L104;
         i4 = _malloc(i3) | 0;
         if (i5 >>> 0 <= i7 >>> 0 & (i4 | 0) == 0) break L104;
         _memcpy(i4 | 0, i10 | 0, (i6 >>> 1 & 127) + 1 | 0) | 0;
         HEAP32[i15 >> 2] = i3 | 1;
         HEAP32[i11 >> 2] = i2;
         HEAP32[i9 >> 2] = i4;
         break L104;
        } else {
         HEAP8[i10 >> 0] = 0;
         _free(i3);
         i2 = 0;
        } while (0);
        HEAP8[i15 >> 0] = i2 << 1;
       } while (0);
       HEAP32[i15 >> 2] = HEAP32[i12 >> 2];
       HEAP32[i15 + 4 >> 2] = HEAP32[i12 + 4 >> 2];
       HEAP32[i15 + 8 >> 2] = HEAP32[i12 + 8 >> 2];
       i2 = 0;
       while (1) {
        if ((i2 | 0) == 3) break;
        HEAP32[i12 + (i2 << 2) >> 2] = 0;
        i2 = i2 + 1 | 0;
       }
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i12);
       i5 = HEAP32[i14 >> 2] | 0;
       i2 = i5 + -24 | 0;
       i3 = i5;
       while (1) {
        if ((i3 | 0) == (i2 | 0)) break;
        i7 = i3 + -24 | 0;
        HEAP32[i14 >> 2] = i7;
        __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i7);
        i3 = HEAP32[i14 >> 2] | 0;
       }
       i3 = HEAP8[i15 >> 0] | 0;
       i2 = (i3 & 1) == 0;
       i4 = i2 ? (i3 & 255) >>> 1 : HEAP32[i11 >> 2] | 0;
       if (!i4) {
        i2 = i8;
        continue;
       }
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc(i5 + -48 | 0, 34253) | 0;
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj((HEAP32[i14 >> 2] | 0) + -24 | 0, i2 ? i10 : HEAP32[i9 >> 2] | 0, i4) | 0;
       i2 = i8;
      }
      if ((i4 | 0) == 91) {
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc((HEAP32[i14 >> 2] | 0) + -24 | 0, 33621) | 0;
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i15);
       i3 = i2;
       break;
      } else if ((i4 | 0) == 129) {
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i15);
       break L40;
      }
     } else {
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE9push_backEc((HEAP32[i14 >> 2] | 0) + -24 | 0, 41);
      i3 = i1 + 3 | 0;
     } while (0);
     if ((i3 | 0) != (i16 | 0) ? (HEAP8[i3 >> 0] | 0) == 69 : 0) {
      i2 = i3 + 1 | 0;
      if ((i2 | 0) == (i16 | 0)) {
       i3 = HEAP32[i14 >> 2] | 0;
       i2 = i3 + -24 | 0;
       while (1) {
        if ((i3 | 0) == (i2 | 0)) break L40;
        i16 = i3 + -24 | 0;
        HEAP32[i14 >> 2] = i16;
        __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i16);
        i3 = HEAP32[i14 >> 2] | 0;
       }
      }
      L139 : do if (((HEAP8[i2 >> 0] | 0) + -48 | 0) >>> 0 < 10) {
       i3 = i3 + 2 | 0;
       while (1) {
        if ((i3 | 0) == (i16 | 0)) {
         i3 = i16;
         break;
        }
        if (((HEAP8[i3 >> 0] | 0) + -48 | 0) >>> 0 >= 10) break;
        i3 = i3 + 1 | 0;
       }
       i11 = HEAP32[i14 >> 2] | 0;
       i12 = i11 + -24 | 0;
       i6 = HEAP8[i12 >> 0] | 0;
       i4 = i11 + -16 | 0;
       if (!(i6 & 1)) {
        i5 = i12 + 1 | 0;
        i8 = 10;
        i10 = (i6 & 255) >>> 1;
       } else {
        i5 = HEAP32[i4 >> 2] | 0;
        i6 = HEAP32[i12 >> 2] | 0;
        i4 = i5 + 7 | 0;
        i8 = (i6 & -2) + -1 | 0;
        i10 = HEAP32[i11 + -20 >> 2] | 0;
        i6 = i6 & 255;
       }
       i9 = i4 - i5 | 0;
       i7 = i3 - i2 | 0;
       if ((i3 | 0) != (i2 | 0)) {
        if ((i8 - i10 | 0) >>> 0 >= i7 >>> 0) {
         if (!(i6 & 1)) i4 = i12 + 1 | 0; else i4 = HEAP32[i11 + -16 >> 2] | 0;
         if ((i10 | 0) == (i9 | 0)) i5 = i4; else {
          i5 = i4 + i9 | 0;
          _memmove(i5 + i7 | 0, i5 | 0, i10 - i9 | 0) | 0;
          i5 = i4;
         }
        } else {
         __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE9__grow_byEjjjjjj(i12, i8, i10 + i7 - i8 | 0, i10, i9, i7);
         i5 = HEAP32[i11 + -16 >> 2] | 0;
        }
        i4 = i10 + i7 | 0;
        if (!(HEAP8[i12 >> 0] & 1)) HEAP8[i12 >> 0] = i4 << 1; else HEAP32[i11 + -20 >> 2] = i4;
        HEAP8[i5 + i4 >> 0] = 0;
        i4 = i5 + i9 | 0;
        while (1) {
         if ((i2 | 0) == (i3 | 0)) {
          i2 = i3;
          break L139;
         }
         HEAP8[i4 >> 0] = HEAP8[i2 >> 0] | 0;
         i2 = i2 + 1 | 0;
         i4 = i4 + 1 | 0;
        }
       }
      } while (0);
      if ((i2 | 0) != (i16 | 0) ? (HEAP8[i2 >> 0] | 0) == 95 : 0) {
       i1 = i2 + 1 | 0;
       break;
      }
      i3 = HEAP32[i14 >> 2] | 0;
      i2 = i3 + -24 | 0;
      while (1) {
       if ((i3 | 0) == (i2 | 0)) break L40;
       i16 = i3 + -24 | 0;
       HEAP32[i14 >> 2] = i16;
       __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i16);
       i3 = HEAP32[i14 >> 2] | 0;
      }
     }
     i3 = HEAP32[i14 >> 2] | 0;
     i2 = i3 + -24 | 0;
     while (1) {
      if ((i3 | 0) == (i2 | 0)) break L40;
      i16 = i3 + -24 | 0;
      HEAP32[i14 >> 2] = i16;
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i16);
      i3 = HEAP32[i14 >> 2] | 0;
     }
    } while (0);
    break L1;
   }
  case 57:
  case 56:
  case 55:
  case 54:
  case 53:
  case 52:
  case 51:
  case 50:
  case 49:
   {
    i1 = __ZN10__cxxabiv112_GLOBAL__N_117parse_source_nameINS0_2DbEEEPKcS4_S4_RT_(i1, i16, i13) | 0;
    break L1;
   }
  default:
   {
    i16 = __ZN10__cxxabiv112_GLOBAL__N_119parse_operator_nameINS0_2DbEEEPKcS4_S4_RT_(i1, i16, i13) | 0;
    STACKTOP = i17;
    return i16 | 0;
   }
  }
 } while (0);
 STACKTOP = i17;
 return i1 | 0;
}

function __ZZN4wasm14ModuleInstance12callFunctionEN6cashew7IStringERNSt3__16vectorINS_7LiteralENS3_9allocatorIS5_EEEEEN16ExpressionRunner10visitUnaryEPNS_5UnaryE(i46, i38, i45) {
 i46 = i46 | 0;
 i38 = i38 | 0;
 i45 = i45 | 0;
 var d1 = 0.0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, i18 = 0, i19 = 0, i20 = 0, i21 = 0, i22 = 0, i23 = 0, i24 = 0, i25 = 0, i26 = 0, i27 = 0, i28 = 0, i29 = 0, i30 = 0, i31 = 0, i32 = 0, i33 = 0, i34 = 0, i35 = 0, i36 = 0, i37 = 0, i39 = 0, i40 = 0, i41 = 0, i42 = 0, i43 = 0, i44 = 0, i47 = 0;
 i47 = STACKTOP;
 STACKTOP = STACKTOP + 656 | 0;
 i40 = i47 + 632 | 0;
 i37 = i47 + 576 | 0;
 i39 = i47 + 560 | 0;
 i2 = i47 + 616 | 0;
 i3 = i47 + 600 | 0;
 i14 = i47 + 544 | 0;
 i25 = i47 + 528 | 0;
 i31 = i47 + 512 | 0;
 i32 = i47 + 496 | 0;
 i33 = i47 + 480 | 0;
 i42 = i47 + 472 | 0;
 i41 = i47 + 464 | 0;
 i34 = i47 + 448 | 0;
 i35 = i47 + 432 | 0;
 i36 = i47 + 416 | 0;
 i4 = i47 + 400 | 0;
 i5 = i47 + 384 | 0;
 i6 = i47 + 368 | 0;
 i44 = i47 + 360 | 0;
 i43 = i47 + 352 | 0;
 i7 = i47 + 336 | 0;
 i8 = i47 + 320 | 0;
 i9 = i47 + 304 | 0;
 i10 = i47 + 288 | 0;
 i11 = i47 + 272 | 0;
 i12 = i47 + 256 | 0;
 i13 = i47 + 240 | 0;
 i15 = i47 + 224 | 0;
 i16 = i47 + 208 | 0;
 i17 = i47 + 192 | 0;
 i18 = i47 + 176 | 0;
 i19 = i47 + 160 | 0;
 i20 = i47 + 144 | 0;
 i21 = i47 + 128 | 0;
 i22 = i47 + 112 | 0;
 i23 = i47 + 96 | 0;
 i24 = i47 + 80 | 0;
 i26 = i47 + 64 | 0;
 i27 = i47 + 48 | 0;
 i28 = i47 + 32 | 0;
 i29 = i47 + 16 | 0;
 i30 = i47;
 __ZN4wasm7VisitorIZNS_14ModuleInstance12callFunctionEN6cashew7IStringERNSt3__16vectorINS_7LiteralENS4_9allocatorIS6_EEEEE16ExpressionRunnerNS_4FlowEE5visitEPNS_10ExpressionE(i37, i38, HEAP32[i45 + 12 >> 2] | 0);
 if (!(HEAP32[i37 + 16 >> 2] | 0)) {
  HEAP32[i39 >> 2] = HEAP32[i37 >> 2];
  HEAP32[i39 + 4 >> 2] = HEAP32[i37 + 4 >> 2];
  HEAP32[i39 + 8 >> 2] = HEAP32[i37 + 8 >> 2];
  HEAP32[i39 + 12 >> 2] = HEAP32[i37 + 12 >> 2];
  L3 : do switch (HEAP32[i39 >> 2] | 0) {
  case 1:
   {
    do switch (HEAP32[i45 + 8 >> 2] | 0) {
    case 0:
     {
      __ZNK4wasm7Literal18countLeadingZeroesEv(i2, i39);
      HEAP32[i46 >> 2] = HEAP32[i2 >> 2];
      HEAP32[i46 + 4 >> 2] = HEAP32[i2 + 4 >> 2];
      HEAP32[i46 + 8 >> 2] = HEAP32[i2 + 8 >> 2];
      HEAP32[i46 + 12 >> 2] = HEAP32[i2 + 12 >> 2];
      HEAP32[i46 + 16 >> 2] = 0;
      break L3;
     }
    case 1:
     {
      __ZNK4wasm7Literal19countTrailingZeroesEv(i3, i39);
      HEAP32[i46 >> 2] = HEAP32[i3 >> 2];
      HEAP32[i46 + 4 >> 2] = HEAP32[i3 + 4 >> 2];
      HEAP32[i46 + 8 >> 2] = HEAP32[i3 + 8 >> 2];
      HEAP32[i46 + 12 >> 2] = HEAP32[i3 + 12 >> 2];
      HEAP32[i46 + 16 >> 2] = 0;
      break L3;
     }
    case 2:
     {
      __ZNK4wasm7Literal8popCountEv(i14, i39);
      HEAP32[i46 >> 2] = HEAP32[i14 >> 2];
      HEAP32[i46 + 4 >> 2] = HEAP32[i14 + 4 >> 2];
      HEAP32[i46 + 8 >> 2] = HEAP32[i14 + 8 >> 2];
      HEAP32[i46 + 12 >> 2] = HEAP32[i14 + 12 >> 2];
      HEAP32[i46 + 16 >> 2] = 0;
      break L3;
     }
    case 10:
     {
      HEAP32[i25 >> 2] = 1;
      HEAP32[i25 + 8 >> 2] = 0;
      i45 = (__ZNK4wasm7LiteraleqERKS0_(i39, i25) | 0) & 1;
      HEAP32[i46 >> 2] = 1;
      HEAP32[i46 + 8 >> 2] = i45;
      HEAP32[i46 + 16 >> 2] = 0;
      break L3;
     }
    case 25:
     {
      __ZN4wasm7Literal9castToF32Ev(i31, i39);
      HEAP32[i46 >> 2] = HEAP32[i31 >> 2];
      HEAP32[i46 + 4 >> 2] = HEAP32[i31 + 4 >> 2];
      HEAP32[i46 + 8 >> 2] = HEAP32[i31 + 8 >> 2];
      HEAP32[i46 + 12 >> 2] = HEAP32[i31 + 12 >> 2];
      HEAP32[i46 + 16 >> 2] = 0;
      break L3;
     }
    case 11:
     {
      __ZNK4wasm7Literal12extendToSI64Ev(i32, i39);
      HEAP32[i46 >> 2] = HEAP32[i32 >> 2];
      HEAP32[i46 + 4 >> 2] = HEAP32[i32 + 4 >> 2];
      HEAP32[i46 + 8 >> 2] = HEAP32[i32 + 8 >> 2];
      HEAP32[i46 + 12 >> 2] = HEAP32[i32 + 12 >> 2];
      HEAP32[i46 + 16 >> 2] = 0;
      break L3;
     }
    case 12:
     {
      __ZNK4wasm7Literal12extendToUI64Ev(i33, i39);
      HEAP32[i46 >> 2] = HEAP32[i33 >> 2];
      HEAP32[i46 + 4 >> 2] = HEAP32[i33 + 4 >> 2];
      HEAP32[i46 + 8 >> 2] = HEAP32[i33 + 8 >> 2];
      HEAP32[i46 + 12 >> 2] = HEAP32[i33 + 12 >> 2];
      HEAP32[i46 + 16 >> 2] = 0;
      break L3;
     }
    case 20:
     {
      i2 = HEAP32[i39 + 8 >> 2] | 0;
      if ((HEAP32[i45 + 4 >> 2] | 0) == 3) {
       HEAPF32[i42 >> 2] = +(i2 >>> 0);
       i2 = 3;
       d1 = +HEAPF64[i42 >> 3];
      } else {
       d1 = +(i2 >>> 0);
       HEAPF64[i42 >> 3] = d1;
       i2 = 4;
      }
      HEAP32[i46 >> 2] = i2;
      HEAPF64[i46 + 8 >> 3] = d1;
      HEAP32[i46 + 16 >> 2] = 0;
      break L3;
     }
    case 19:
     {
      i2 = HEAP32[i39 + 8 >> 2] | 0;
      if ((HEAP32[i45 + 4 >> 2] | 0) == 3) {
       HEAPF32[i41 >> 2] = +(i2 | 0);
       i2 = 3;
       d1 = +HEAPF64[i41 >> 3];
      } else {
       d1 = +(i2 | 0);
       HEAPF64[i41 >> 3] = d1;
       i2 = 4;
      }
      HEAP32[i46 >> 2] = i2;
      HEAPF64[i46 + 8 >> 3] = d1;
      HEAP32[i46 + 16 >> 2] = 0;
      break L3;
     }
    default:
     _abort();
    } while (0);
    break;
   }
  case 2:
   {
    switch (HEAP32[i45 + 8 >> 2] | 0) {
    case 0:
     {
      __ZNK4wasm7Literal18countLeadingZeroesEv(i34, i39);
      HEAP32[i46 >> 2] = HEAP32[i34 >> 2];
      HEAP32[i46 + 4 >> 2] = HEAP32[i34 + 4 >> 2];
      HEAP32[i46 + 8 >> 2] = HEAP32[i34 + 8 >> 2];
      HEAP32[i46 + 12 >> 2] = HEAP32[i34 + 12 >> 2];
      HEAP32[i46 + 16 >> 2] = 0;
      break L3;
     }
    case 1:
     {
      __ZNK4wasm7Literal19countTrailingZeroesEv(i35, i39);
      HEAP32[i46 >> 2] = HEAP32[i35 >> 2];
      HEAP32[i46 + 4 >> 2] = HEAP32[i35 + 4 >> 2];
      HEAP32[i46 + 8 >> 2] = HEAP32[i35 + 8 >> 2];
      HEAP32[i46 + 12 >> 2] = HEAP32[i35 + 12 >> 2];
      HEAP32[i46 + 16 >> 2] = 0;
      break L3;
     }
    case 2:
     {
      __ZNK4wasm7Literal8popCountEv(i36, i39);
      HEAP32[i46 >> 2] = HEAP32[i36 >> 2];
      HEAP32[i46 + 4 >> 2] = HEAP32[i36 + 4 >> 2];
      HEAP32[i46 + 8 >> 2] = HEAP32[i36 + 8 >> 2];
      HEAP32[i46 + 12 >> 2] = HEAP32[i36 + 12 >> 2];
      HEAP32[i46 + 16 >> 2] = 0;
      break L3;
     }
    case 10:
     {
      HEAP32[i4 >> 2] = 2;
      i45 = i4 + 8 | 0;
      HEAP32[i45 >> 2] = 0;
      HEAP32[i45 + 4 >> 2] = 0;
      i45 = (__ZNK4wasm7LiteraleqERKS0_(i39, i4) | 0) & 1;
      HEAP32[i46 >> 2] = 1;
      HEAP32[i46 + 8 >> 2] = i45;
      HEAP32[i46 + 16 >> 2] = 0;
      break L3;
     }
    case 13:
     {
      __ZNK4wasm7Literal13truncateToI32Ev(i5, i39);
      HEAP32[i46 >> 2] = HEAP32[i5 >> 2];
      HEAP32[i46 + 4 >> 2] = HEAP32[i5 + 4 >> 2];
      HEAP32[i46 + 8 >> 2] = HEAP32[i5 + 8 >> 2];
      HEAP32[i46 + 12 >> 2] = HEAP32[i5 + 12 >> 2];
      HEAP32[i46 + 16 >> 2] = 0;
      break L3;
     }
    case 25:
     {
      __ZN4wasm7Literal9castToF64Ev(i6, i39);
      HEAP32[i46 >> 2] = HEAP32[i6 >> 2];
      HEAP32[i46 + 4 >> 2] = HEAP32[i6 + 4 >> 2];
      HEAP32[i46 + 8 >> 2] = HEAP32[i6 + 8 >> 2];
      HEAP32[i46 + 12 >> 2] = HEAP32[i6 + 12 >> 2];
      HEAP32[i46 + 16 >> 2] = 0;
      break L3;
     }
    case 22:
     {
      i3 = i39 + 8 | 0;
      i2 = HEAP32[i3 >> 2] | 0;
      i3 = HEAP32[i3 + 4 >> 2] | 0;
      if ((HEAP32[i45 + 4 >> 2] | 0) == 3) {
       HEAPF32[i44 >> 2] = +(i2 >>> 0) + 4294967296.0 * +(i3 >>> 0);
       i2 = 3;
       d1 = +HEAPF64[i44 >> 3];
      } else {
       d1 = +(i2 >>> 0) + 4294967296.0 * +(i3 >>> 0);
       HEAPF64[i44 >> 3] = d1;
       i2 = 4;
      }
      HEAP32[i46 >> 2] = i2;
      HEAPF64[i46 + 8 >> 3] = d1;
      HEAP32[i46 + 16 >> 2] = 0;
      break L3;
     }
    case 21:
     {
      i3 = i39 + 8 | 0;
      i2 = HEAP32[i3 >> 2] | 0;
      i3 = HEAP32[i3 + 4 >> 2] | 0;
      if ((HEAP32[i45 + 4 >> 2] | 0) == 3) {
       HEAPF32[i43 >> 2] = +(i2 >>> 0) + 4294967296.0 * +(i3 | 0);
       i2 = 3;
       d1 = +HEAPF64[i43 >> 3];
      } else {
       d1 = +(i2 >>> 0) + 4294967296.0 * +(i3 | 0);
       HEAPF64[i43 >> 3] = d1;
       i2 = 4;
      }
      HEAP32[i46 >> 2] = i2;
      HEAPF64[i46 + 8 >> 3] = d1;
      HEAP32[i46 + 16 >> 2] = 0;
      break L3;
     }
    default:
     _abort();
    }
    break;
   }
  case 3:
   {
    do switch (HEAP32[i45 + 8 >> 2] | 0) {
    case 3:
     {
      __ZNK4wasm7Literal3negEv(i7, i39);
      HEAP32[i46 >> 2] = HEAP32[i7 >> 2];
      HEAP32[i46 + 4 >> 2] = HEAP32[i7 + 4 >> 2];
      HEAP32[i46 + 8 >> 2] = HEAP32[i7 + 8 >> 2];
      HEAP32[i46 + 12 >> 2] = HEAP32[i7 + 12 >> 2];
      HEAP32[i46 + 16 >> 2] = 0;
      break L3;
     }
    case 4:
     {
      __ZNK4wasm7Literal3absEv(i8, i39);
      HEAP32[i46 >> 2] = HEAP32[i8 >> 2];
      HEAP32[i46 + 4 >> 2] = HEAP32[i8 + 4 >> 2];
      HEAP32[i46 + 8 >> 2] = HEAP32[i8 + 8 >> 2];
      HEAP32[i46 + 12 >> 2] = HEAP32[i8 + 12 >> 2];
      HEAP32[i46 + 16 >> 2] = 0;
      break L3;
     }
    case 5:
     {
      __ZNK4wasm7Literal4ceilEv(i9, i39);
      HEAP32[i46 >> 2] = HEAP32[i9 >> 2];
      HEAP32[i46 + 4 >> 2] = HEAP32[i9 + 4 >> 2];
      HEAP32[i46 + 8 >> 2] = HEAP32[i9 + 8 >> 2];
      HEAP32[i46 + 12 >> 2] = HEAP32[i9 + 12 >> 2];
      HEAP32[i46 + 16 >> 2] = 0;
      break L3;
     }
    case 6:
     {
      __ZNK4wasm7Literal5floorEv(i10, i39);
      HEAP32[i46 >> 2] = HEAP32[i10 >> 2];
      HEAP32[i46 + 4 >> 2] = HEAP32[i10 + 4 >> 2];
      HEAP32[i46 + 8 >> 2] = HEAP32[i10 + 8 >> 2];
      HEAP32[i46 + 12 >> 2] = HEAP32[i10 + 12 >> 2];
      HEAP32[i46 + 16 >> 2] = 0;
      break L3;
     }
    case 7:
     {
      __ZNK4wasm7Literal5truncEv(i11, i39);
      HEAP32[i46 >> 2] = HEAP32[i11 >> 2];
      HEAP32[i46 + 4 >> 2] = HEAP32[i11 + 4 >> 2];
      HEAP32[i46 + 8 >> 2] = HEAP32[i11 + 8 >> 2];
      HEAP32[i46 + 12 >> 2] = HEAP32[i11 + 12 >> 2];
      HEAP32[i46 + 16 >> 2] = 0;
      break L3;
     }
    case 8:
     {
      __ZNK4wasm7Literal9nearbyintEv(i12, i39);
      HEAP32[i46 >> 2] = HEAP32[i12 >> 2];
      HEAP32[i46 + 4 >> 2] = HEAP32[i12 + 4 >> 2];
      HEAP32[i46 + 8 >> 2] = HEAP32[i12 + 8 >> 2];
      HEAP32[i46 + 12 >> 2] = HEAP32[i12 + 12 >> 2];
      HEAP32[i46 + 16 >> 2] = 0;
      break L3;
     }
    case 9:
     {
      __ZNK4wasm7Literal4sqrtEv(i13, i39);
      HEAP32[i46 >> 2] = HEAP32[i13 >> 2];
      HEAP32[i46 + 4 >> 2] = HEAP32[i13 + 4 >> 2];
      HEAP32[i46 + 8 >> 2] = HEAP32[i13 + 8 >> 2];
      HEAP32[i46 + 12 >> 2] = HEAP32[i13 + 12 >> 2];
      HEAP32[i46 + 16 >> 2] = 0;
      break L3;
     }
    case 14:
     {
      HEAP32[i40 >> 2] = HEAP32[i39 >> 2];
      HEAP32[i40 + 4 >> 2] = HEAP32[i39 + 4 >> 2];
      HEAP32[i40 + 8 >> 2] = HEAP32[i39 + 8 >> 2];
      HEAP32[i40 + 12 >> 2] = HEAP32[i39 + 12 >> 2];
      __ZZN4wasm14ModuleInstance12callFunctionEN6cashew7IStringERNSt3__16vectorINS_7LiteralENS3_9allocatorIS5_EEEEEN16ExpressionRunner11truncSFloatEPNS_5UnaryES5_(i15, i38, i45, i40);
      HEAP32[i46 >> 2] = HEAP32[i15 >> 2];
      HEAP32[i46 + 4 >> 2] = HEAP32[i15 + 4 >> 2];
      HEAP32[i46 + 8 >> 2] = HEAP32[i15 + 8 >> 2];
      HEAP32[i46 + 12 >> 2] = HEAP32[i15 + 12 >> 2];
      HEAP32[i46 + 16 >> 2] = 0;
      break L3;
     }
    case 15:
     {
      HEAP32[i40 >> 2] = HEAP32[i39 >> 2];
      HEAP32[i40 + 4 >> 2] = HEAP32[i39 + 4 >> 2];
      HEAP32[i40 + 8 >> 2] = HEAP32[i39 + 8 >> 2];
      HEAP32[i40 + 12 >> 2] = HEAP32[i39 + 12 >> 2];
      __ZZN4wasm14ModuleInstance12callFunctionEN6cashew7IStringERNSt3__16vectorINS_7LiteralENS3_9allocatorIS5_EEEEEN16ExpressionRunner11truncUFloatEPNS_5UnaryES5_(i16, i38, i45, i40);
      HEAP32[i46 >> 2] = HEAP32[i16 >> 2];
      HEAP32[i46 + 4 >> 2] = HEAP32[i16 + 4 >> 2];
      HEAP32[i46 + 8 >> 2] = HEAP32[i16 + 8 >> 2];
      HEAP32[i46 + 12 >> 2] = HEAP32[i16 + 12 >> 2];
      HEAP32[i46 + 16 >> 2] = 0;
      break L3;
     }
    case 18:
     {
      __ZN4wasm7Literal9castToI32Ev(i17, i39);
      HEAP32[i46 >> 2] = HEAP32[i17 >> 2];
      HEAP32[i46 + 4 >> 2] = HEAP32[i17 + 4 >> 2];
      HEAP32[i46 + 8 >> 2] = HEAP32[i17 + 8 >> 2];
      HEAP32[i46 + 12 >> 2] = HEAP32[i17 + 12 >> 2];
      HEAP32[i46 + 16 >> 2] = 0;
      break L3;
     }
    case 23:
     {
      __ZNK4wasm7Literal11extendToF64Ev(i18, i39);
      HEAP32[i46 >> 2] = HEAP32[i18 >> 2];
      HEAP32[i46 + 4 >> 2] = HEAP32[i18 + 4 >> 2];
      HEAP32[i46 + 8 >> 2] = HEAP32[i18 + 8 >> 2];
      HEAP32[i46 + 12 >> 2] = HEAP32[i18 + 12 >> 2];
      HEAP32[i46 + 16 >> 2] = 0;
      break L3;
     }
    default:
     _abort();
    } while (0);
    break;
   }
  case 4:
   {
    do switch (HEAP32[i45 + 8 >> 2] | 0) {
    case 3:
     {
      __ZNK4wasm7Literal3negEv(i19, i39);
      HEAP32[i46 >> 2] = HEAP32[i19 >> 2];
      HEAP32[i46 + 4 >> 2] = HEAP32[i19 + 4 >> 2];
      HEAP32[i46 + 8 >> 2] = HEAP32[i19 + 8 >> 2];
      HEAP32[i46 + 12 >> 2] = HEAP32[i19 + 12 >> 2];
      HEAP32[i46 + 16 >> 2] = 0;
      break L3;
     }
    case 4:
     {
      __ZNK4wasm7Literal3absEv(i20, i39);
      HEAP32[i46 >> 2] = HEAP32[i20 >> 2];
      HEAP32[i46 + 4 >> 2] = HEAP32[i20 + 4 >> 2];
      HEAP32[i46 + 8 >> 2] = HEAP32[i20 + 8 >> 2];
      HEAP32[i46 + 12 >> 2] = HEAP32[i20 + 12 >> 2];
      HEAP32[i46 + 16 >> 2] = 0;
      break L3;
     }
    case 5:
     {
      __ZNK4wasm7Literal4ceilEv(i21, i39);
      HEAP32[i46 >> 2] = HEAP32[i21 >> 2];
      HEAP32[i46 + 4 >> 2] = HEAP32[i21 + 4 >> 2];
      HEAP32[i46 + 8 >> 2] = HEAP32[i21 + 8 >> 2];
      HEAP32[i46 + 12 >> 2] = HEAP32[i21 + 12 >> 2];
      HEAP32[i46 + 16 >> 2] = 0;
      break L3;
     }
    case 6:
     {
      __ZNK4wasm7Literal5floorEv(i22, i39);
      HEAP32[i46 >> 2] = HEAP32[i22 >> 2];
      HEAP32[i46 + 4 >> 2] = HEAP32[i22 + 4 >> 2];
      HEAP32[i46 + 8 >> 2] = HEAP32[i22 + 8 >> 2];
      HEAP32[i46 + 12 >> 2] = HEAP32[i22 + 12 >> 2];
      HEAP32[i46 + 16 >> 2] = 0;
      break L3;
     }
    case 7:
     {
      __ZNK4wasm7Literal5truncEv(i23, i39);
      HEAP32[i46 >> 2] = HEAP32[i23 >> 2];
      HEAP32[i46 + 4 >> 2] = HEAP32[i23 + 4 >> 2];
      HEAP32[i46 + 8 >> 2] = HEAP32[i23 + 8 >> 2];
      HEAP32[i46 + 12 >> 2] = HEAP32[i23 + 12 >> 2];
      HEAP32[i46 + 16 >> 2] = 0;
      break L3;
     }
    case 8:
     {
      __ZNK4wasm7Literal9nearbyintEv(i24, i39);
      HEAP32[i46 >> 2] = HEAP32[i24 >> 2];
      HEAP32[i46 + 4 >> 2] = HEAP32[i24 + 4 >> 2];
      HEAP32[i46 + 8 >> 2] = HEAP32[i24 + 8 >> 2];
      HEAP32[i46 + 12 >> 2] = HEAP32[i24 + 12 >> 2];
      HEAP32[i46 + 16 >> 2] = 0;
      break L3;
     }
    case 9:
     {
      __ZNK4wasm7Literal4sqrtEv(i26, i39);
      HEAP32[i46 >> 2] = HEAP32[i26 >> 2];
      HEAP32[i46 + 4 >> 2] = HEAP32[i26 + 4 >> 2];
      HEAP32[i46 + 8 >> 2] = HEAP32[i26 + 8 >> 2];
      HEAP32[i46 + 12 >> 2] = HEAP32[i26 + 12 >> 2];
      HEAP32[i46 + 16 >> 2] = 0;
      break L3;
     }
    case 16:
     {
      HEAP32[i40 >> 2] = HEAP32[i39 >> 2];
      HEAP32[i40 + 4 >> 2] = HEAP32[i39 + 4 >> 2];
      HEAP32[i40 + 8 >> 2] = HEAP32[i39 + 8 >> 2];
      HEAP32[i40 + 12 >> 2] = HEAP32[i39 + 12 >> 2];
      __ZZN4wasm14ModuleInstance12callFunctionEN6cashew7IStringERNSt3__16vectorINS_7LiteralENS3_9allocatorIS5_EEEEEN16ExpressionRunner11truncSFloatEPNS_5UnaryES5_(i27, i38, i45, i40);
      HEAP32[i46 >> 2] = HEAP32[i27 >> 2];
      HEAP32[i46 + 4 >> 2] = HEAP32[i27 + 4 >> 2];
      HEAP32[i46 + 8 >> 2] = HEAP32[i27 + 8 >> 2];
      HEAP32[i46 + 12 >> 2] = HEAP32[i27 + 12 >> 2];
      HEAP32[i46 + 16 >> 2] = 0;
      break L3;
     }
    case 17:
     {
      HEAP32[i40 >> 2] = HEAP32[i39 >> 2];
      HEAP32[i40 + 4 >> 2] = HEAP32[i39 + 4 >> 2];
      HEAP32[i40 + 8 >> 2] = HEAP32[i39 + 8 >> 2];
      HEAP32[i40 + 12 >> 2] = HEAP32[i39 + 12 >> 2];
      __ZZN4wasm14ModuleInstance12callFunctionEN6cashew7IStringERNSt3__16vectorINS_7LiteralENS3_9allocatorIS5_EEEEEN16ExpressionRunner11truncUFloatEPNS_5UnaryES5_(i28, i38, i45, i40);
      HEAP32[i46 >> 2] = HEAP32[i28 >> 2];
      HEAP32[i46 + 4 >> 2] = HEAP32[i28 + 4 >> 2];
      HEAP32[i46 + 8 >> 2] = HEAP32[i28 + 8 >> 2];
      HEAP32[i46 + 12 >> 2] = HEAP32[i28 + 12 >> 2];
      HEAP32[i46 + 16 >> 2] = 0;
      break L3;
     }
    case 18:
     {
      __ZN4wasm7Literal9castToI64Ev(i29, i39);
      HEAP32[i46 >> 2] = HEAP32[i29 >> 2];
      HEAP32[i46 + 4 >> 2] = HEAP32[i29 + 4 >> 2];
      HEAP32[i46 + 8 >> 2] = HEAP32[i29 + 8 >> 2];
      HEAP32[i46 + 12 >> 2] = HEAP32[i29 + 12 >> 2];
      HEAP32[i46 + 16 >> 2] = 0;
      break L3;
     }
    case 24:
     {
      __ZNK4wasm7Literal13truncateToF32Ev(i30, i39);
      HEAP32[i46 >> 2] = HEAP32[i30 >> 2];
      HEAP32[i46 + 4 >> 2] = HEAP32[i30 + 4 >> 2];
      HEAP32[i46 + 8 >> 2] = HEAP32[i30 + 8 >> 2];
      HEAP32[i46 + 12 >> 2] = HEAP32[i30 + 12 >> 2];
      HEAP32[i46 + 16 >> 2] = 0;
      break L3;
     }
    default:
     _abort();
    } while (0);
    break;
   }
  default:
   _abort();
  } while (0);
 } else {
  HEAP32[i46 >> 2] = HEAP32[i37 >> 2];
  HEAP32[i46 + 4 >> 2] = HEAP32[i37 + 4 >> 2];
  HEAP32[i46 + 8 >> 2] = HEAP32[i37 + 8 >> 2];
  HEAP32[i46 + 12 >> 2] = HEAP32[i37 + 12 >> 2];
  HEAP32[i46 + 16 >> 2] = HEAP32[i37 + 16 >> 2];
  HEAP32[i46 + 20 >> 2] = HEAP32[i37 + 20 >> 2];
 }
 STACKTOP = i47;
 return;
}

function _vfscanf(i33, i2, i24) {
 i33 = i33 | 0;
 i2 = i2 | 0;
 i24 = i24 | 0;
 var i1 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, d7 = 0.0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, i18 = 0, i19 = 0, i20 = 0, i21 = 0, i22 = 0, i23 = 0, i25 = 0, i26 = 0, i27 = 0, i28 = 0, i29 = 0, i30 = 0, i31 = 0, i32 = 0, i34 = 0;
 i34 = STACKTOP;
 STACKTOP = STACKTOP + 304 | 0;
 i25 = i34 + 16 | 0;
 i27 = i34 + 8 | 0;
 i26 = i34 + 33 | 0;
 i28 = i34;
 i16 = i34 + 32 | 0;
 if ((HEAP32[i33 + 76 >> 2] | 0) > -1) i32 = ___lockfile(i33) | 0; else i32 = 0;
 i1 = HEAP8[i2 >> 0] | 0;
 L4 : do if (i1 << 24 >> 24) {
  i29 = i33 + 4 | 0;
  i30 = i33 + 100 | 0;
  i23 = i33 + 108 | 0;
  i17 = i33 + 8 | 0;
  i18 = i26 + 10 | 0;
  i19 = i26 + 33 | 0;
  i20 = i27 + 4 | 0;
  i21 = i26 + 46 | 0;
  i22 = i26 + 94 | 0;
  i4 = i1;
  i1 = 0;
  i5 = i2;
  i10 = 0;
  i3 = 0;
  i2 = 0;
  L6 : while (1) {
   L8 : do if (!(_isspace(i4 & 255) | 0)) {
    i4 = (HEAP8[i5 >> 0] | 0) == 37;
    L10 : do if (i4) {
     i8 = i5 + 1 | 0;
     i6 = HEAP8[i8 >> 0] | 0;
     L12 : do switch (i6 << 24 >> 24) {
     case 37:
      break L10;
     case 42:
      {
       i15 = 0;
       i6 = i5 + 2 | 0;
       break;
      }
     default:
      {
       i6 = (i6 & 255) + -48 | 0;
       if (i6 >>> 0 < 10 ? (HEAP8[i5 + 2 >> 0] | 0) == 36 : 0) {
        HEAP32[i25 >> 2] = HEAP32[i24 >> 2];
        while (1) {
         i15 = (HEAP32[i25 >> 2] | 0) + (4 - 1) & ~(4 - 1);
         i4 = HEAP32[i15 >> 2] | 0;
         HEAP32[i25 >> 2] = i15 + 4;
         if (i6 >>> 0 > 1) i6 = i6 + -1 | 0; else break;
        }
        i15 = i4;
        i6 = i5 + 3 | 0;
        break L12;
       }
       i6 = (HEAP32[i24 >> 2] | 0) + (4 - 1) & ~(4 - 1);
       i15 = HEAP32[i6 >> 2] | 0;
       HEAP32[i24 >> 2] = i6 + 4;
       i6 = i8;
      }
     } while (0);
     i4 = HEAP8[i6 >> 0] | 0;
     i5 = i4 & 255;
     if ((i5 + -48 | 0) >>> 0 < 10) {
      i4 = 0;
      while (1) {
       i8 = (i4 * 10 | 0) + -48 + i5 | 0;
       i6 = i6 + 1 | 0;
       i4 = HEAP8[i6 >> 0] | 0;
       i5 = i4 & 255;
       if ((i5 + -48 | 0) >>> 0 >= 10) break; else i4 = i8;
      }
     } else i8 = 0;
     if (i4 << 24 >> 24 == 109) {
      i6 = i6 + 1 | 0;
      i9 = HEAP8[i6 >> 0] | 0;
      i4 = (i15 | 0) != 0 & 1;
      i3 = 0;
      i2 = 0;
     } else {
      i9 = i4;
      i4 = 0;
     }
     i5 = i6 + 1 | 0;
     switch (i9 & 255 | 0) {
     case 104:
      {
       i14 = (HEAP8[i5 >> 0] | 0) == 104;
       i5 = i14 ? i6 + 2 | 0 : i5;
       i6 = i14 ? -2 : -1;
       break;
      }
     case 108:
      {
       i14 = (HEAP8[i5 >> 0] | 0) == 108;
       i5 = i14 ? i6 + 2 | 0 : i5;
       i6 = i14 ? 3 : 1;
       break;
      }
     case 106:
      {
       i6 = 3;
       break;
      }
     case 116:
     case 122:
      {
       i6 = 1;
       break;
      }
     case 76:
      {
       i6 = 2;
       break;
      }
     case 110:
     case 112:
     case 67:
     case 83:
     case 91:
     case 99:
     case 115:
     case 88:
     case 71:
     case 70:
     case 69:
     case 65:
     case 103:
     case 102:
     case 101:
     case 97:
     case 120:
     case 117:
     case 111:
     case 105:
     case 100:
      {
       i5 = i6;
       i6 = 0;
       break;
      }
     default:
      {
       i31 = 154;
       break L6;
      }
     }
     i9 = HEAPU8[i5 >> 0] | 0;
     i11 = (i9 & 47 | 0) == 3;
     i9 = i11 ? i9 | 32 : i9;
     i11 = i11 ? 1 : i6;
     switch (i9 | 0) {
     case 99:
      {
       i14 = i10;
       i13 = (i8 | 0) < 1 ? 1 : i8;
       break;
      }
     case 91:
      {
       i14 = i10;
       i13 = i8;
       break;
      }
     case 110:
      {
       if (!i15) {
        i6 = i10;
        break L8;
       }
       switch (i11 | 0) {
       case -2:
        {
         HEAP8[i15 >> 0] = i10;
         i6 = i10;
         break L8;
        }
       case -1:
        {
         HEAP16[i15 >> 1] = i10;
         i6 = i10;
         break L8;
        }
       case 0:
        {
         HEAP32[i15 >> 2] = i10;
         i6 = i10;
         break L8;
        }
       case 1:
        {
         HEAP32[i15 >> 2] = i10;
         i6 = i10;
         break L8;
        }
       case 3:
        {
         i6 = i15;
         HEAP32[i6 >> 2] = i10;
         HEAP32[i6 + 4 >> 2] = ((i10 | 0) < 0) << 31 >> 31;
         i6 = i10;
         break L8;
        }
       default:
        {
         i6 = i10;
         break L8;
        }
       }
      }
     default:
      {
       ___shlim(i33, 0);
       do {
        i6 = HEAP32[i29 >> 2] | 0;
        if (i6 >>> 0 < (HEAP32[i30 >> 2] | 0) >>> 0) {
         HEAP32[i29 >> 2] = i6 + 1;
         i6 = HEAPU8[i6 >> 0] | 0;
        } else i6 = ___shgetc(i33) | 0;
       } while ((_isspace(i6) | 0) != 0);
       if (!(HEAP32[i30 >> 2] | 0)) i6 = HEAP32[i29 >> 2] | 0; else {
        i6 = (HEAP32[i29 >> 2] | 0) + -1 | 0;
        HEAP32[i29 >> 2] = i6;
       }
       i14 = (HEAP32[i23 >> 2] | 0) + i10 + i6 - (HEAP32[i17 >> 2] | 0) | 0;
       i13 = i8;
      }
     }
     ___shlim(i33, i13);
     i6 = HEAP32[i29 >> 2] | 0;
     i8 = HEAP32[i30 >> 2] | 0;
     if (i6 >>> 0 < i8 >>> 0) HEAP32[i29 >> 2] = i6 + 1; else {
      if ((___shgetc(i33) | 0) < 0) {
       i31 = 154;
       break L6;
      }
      i8 = HEAP32[i30 >> 2] | 0;
     }
     if (i8 | 0) HEAP32[i29 >> 2] = (HEAP32[i29 >> 2] | 0) + -1;
     L68 : do switch (i9 | 0) {
     case 91:
     case 99:
     case 115:
      {
       i12 = (i9 | 0) == 99;
       L70 : do if ((i9 | 16 | 0) == 115) {
        _memset(i26 | 0, -1, 257) | 0;
        HEAP8[i26 >> 0] = 0;
        if ((i9 | 0) == 115) {
         HEAP8[i19 >> 0] = 0;
         HEAP8[i18 >> 0] = 0;
         HEAP8[i18 + 1 >> 0] = 0;
         HEAP8[i18 + 2 >> 0] = 0;
         HEAP8[i18 + 3 >> 0] = 0;
         HEAP8[i18 + 4 >> 0] = 0;
        }
       } else {
        i9 = i5 + 1 | 0;
        i10 = (HEAP8[i9 >> 0] | 0) == 94;
        i6 = i10 & 1;
        i5 = i10 ? i5 + 2 | 0 : i9;
        _memset(i26 | 0, i10 & 1 | 0, 257) | 0;
        HEAP8[i26 >> 0] = 0;
        switch (HEAP8[i5 >> 0] | 0) {
        case 45:
         {
          i10 = (i6 ^ 1) & 255;
          HEAP8[i21 >> 0] = i10;
          i5 = i5 + 1 | 0;
          break;
         }
        case 93:
         {
          i10 = (i6 ^ 1) & 255;
          HEAP8[i22 >> 0] = i10;
          i5 = i5 + 1 | 0;
          break;
         }
        default:
         i10 = (i6 ^ 1) & 255;
        }
        while (1) {
         i6 = HEAP8[i5 >> 0] | 0;
         L81 : do switch (i6 << 24 >> 24) {
         case 0:
          {
           i31 = 154;
           break L6;
          }
         case 93:
          break L70;
         case 45:
          {
           i9 = i5 + 1 | 0;
           i6 = HEAP8[i9 >> 0] | 0;
           switch (i6 << 24 >> 24) {
           case 93:
           case 0:
            {
             i6 = 45;
             break L81;
            }
           default:
            {}
           }
           i5 = HEAP8[i5 + -1 >> 0] | 0;
           if ((i5 & 255) < (i6 & 255)) {
            i5 = i5 & 255;
            do {
             i5 = i5 + 1 | 0;
             HEAP8[i26 + i5 >> 0] = i10;
             i6 = HEAP8[i9 >> 0] | 0;
            } while ((i5 | 0) < (i6 & 255 | 0));
            i5 = i9;
           } else i5 = i9;
           break;
          }
         default:
          {}
         } while (0);
         HEAP8[i26 + ((i6 & 255) + 1) >> 0] = i10;
         i5 = i5 + 1 | 0;
        }
       } while (0);
       i9 = i12 ? i13 + 1 | 0 : 31;
       i10 = (i11 | 0) == 1;
       i11 = (i4 | 0) != 0;
       L89 : do if (i10) {
        if (i11) {
         i2 = _malloc(i9 << 2) | 0;
         if (!i2) {
          i3 = 0;
          i31 = 154;
          break L6;
         }
        } else i2 = i15;
        HEAP32[i27 >> 2] = 0;
        HEAP32[i20 >> 2] = 0;
        i3 = 0;
        L95 : while (1) {
         i8 = (i2 | 0) == 0;
         do {
          L99 : while (1) {
           i6 = HEAP32[i29 >> 2] | 0;
           if (i6 >>> 0 < (HEAP32[i30 >> 2] | 0) >>> 0) {
            HEAP32[i29 >> 2] = i6 + 1;
            i6 = HEAPU8[i6 >> 0] | 0;
           } else i6 = ___shgetc(i33) | 0;
           if (!(HEAP8[i26 + (i6 + 1) >> 0] | 0)) break L95;
           HEAP8[i16 >> 0] = i6;
           switch (_mbrtowc(i28, i16, 1, i27) | 0) {
           case -1:
            {
             i3 = 0;
             i31 = 154;
             break L6;
            }
           case -2:
            break;
           default:
            break L99;
           }
          }
          if (!i8) {
           HEAP32[i2 + (i3 << 2) >> 2] = HEAP32[i28 >> 2];
           i3 = i3 + 1 | 0;
          }
         } while (!(i11 & (i3 | 0) == (i9 | 0)));
         i3 = i9 << 1 | 1;
         i6 = _realloc(i2, i3 << 2) | 0;
         if (!i6) {
          i3 = 0;
          i31 = 154;
          break L6;
         } else {
          i8 = i9;
          i9 = i3;
          i2 = i6;
          i3 = i8;
         }
        }
        if (!(_mbsinit(i27) | 0)) {
         i3 = 0;
         i31 = 154;
         break L6;
        } else {
         i8 = i3;
         i3 = 0;
        }
       } else {
        if (i11) {
         i3 = _malloc(i9) | 0;
         if (!i3) {
          i3 = 0;
          i2 = 0;
          i31 = 154;
          break L6;
         } else i6 = 0;
         while (1) {
          do {
           i2 = HEAP32[i29 >> 2] | 0;
           if (i2 >>> 0 < (HEAP32[i30 >> 2] | 0) >>> 0) {
            HEAP32[i29 >> 2] = i2 + 1;
            i2 = HEAPU8[i2 >> 0] | 0;
           } else i2 = ___shgetc(i33) | 0;
           if (!(HEAP8[i26 + (i2 + 1) >> 0] | 0)) {
            i8 = i6;
            i2 = 0;
            break L89;
           }
           HEAP8[i3 + i6 >> 0] = i2;
           i6 = i6 + 1 | 0;
          } while ((i6 | 0) != (i9 | 0));
          i2 = i9 << 1 | 1;
          i6 = _realloc(i3, i2) | 0;
          if (!i6) {
           i2 = 0;
           i31 = 154;
           break L6;
          } else {
           i8 = i9;
           i9 = i2;
           i3 = i6;
           i6 = i8;
          }
         }
        }
        if (!i15) {
         i3 = i8;
         while (1) {
          i2 = HEAP32[i29 >> 2] | 0;
          if (i2 >>> 0 < i3 >>> 0) {
           HEAP32[i29 >> 2] = i2 + 1;
           i2 = HEAPU8[i2 >> 0] | 0;
          } else i2 = ___shgetc(i33) | 0;
          if (!(HEAP8[i26 + (i2 + 1) >> 0] | 0)) {
           i8 = 0;
           i3 = 0;
           i2 = 0;
           break L89;
          }
          i3 = HEAP32[i30 >> 2] | 0;
         }
        } else {
         i3 = 0;
         while (1) {
          i2 = HEAP32[i29 >> 2] | 0;
          if (i2 >>> 0 < i8 >>> 0) {
           HEAP32[i29 >> 2] = i2 + 1;
           i2 = HEAPU8[i2 >> 0] | 0;
          } else i2 = ___shgetc(i33) | 0;
          if (!(HEAP8[i26 + (i2 + 1) >> 0] | 0)) {
           i8 = i3;
           i3 = i15;
           i2 = 0;
           break L89;
          }
          HEAP8[i15 + i3 >> 0] = i2;
          i8 = HEAP32[i30 >> 2] | 0;
          i3 = i3 + 1 | 0;
         }
        }
       } while (0);
       if (!(HEAP32[i30 >> 2] | 0)) i6 = HEAP32[i29 >> 2] | 0; else {
        i6 = (HEAP32[i29 >> 2] | 0) + -1 | 0;
        HEAP32[i29 >> 2] = i6;
       }
       i6 = i6 - (HEAP32[i17 >> 2] | 0) + (HEAP32[i23 >> 2] | 0) | 0;
       if (!i6) break L6;
       if (!((i6 | 0) == (i13 | 0) | i12 ^ 1)) break L6;
       do if (i11) if (i10) {
        HEAP32[i15 >> 2] = i2;
        break;
       } else {
        HEAP32[i15 >> 2] = i3;
        break;
       } while (0);
       if (!i12) {
        if (i2 | 0) HEAP32[i2 + (i8 << 2) >> 2] = 0;
        if (!i3) {
         i3 = 0;
         break L68;
        }
        HEAP8[i3 + i8 >> 0] = 0;
       }
       break;
      }
     case 120:
     case 88:
     case 112:
      {
       i6 = 16;
       i31 = 136;
       break;
      }
     case 111:
      {
       i6 = 8;
       i31 = 136;
       break;
      }
     case 117:
     case 100:
      {
       i6 = 10;
       i31 = 136;
       break;
      }
     case 105:
      {
       i6 = 0;
       i31 = 136;
       break;
      }
     case 71:
     case 103:
     case 70:
     case 102:
     case 69:
     case 101:
     case 65:
     case 97:
      {
       d7 = +___floatscan(i33, i11, 0);
       if ((HEAP32[i23 >> 2] | 0) == ((HEAP32[i17 >> 2] | 0) - (HEAP32[i29 >> 2] | 0) | 0)) break L6;
       if (i15) switch (i11 | 0) {
       case 0:
        {
         HEAPF32[i15 >> 2] = d7;
         break L68;
        }
       case 1:
        {
         HEAPF64[i15 >> 3] = d7;
         break L68;
        }
       case 2:
        {
         HEAPF64[i15 >> 3] = d7;
         break L68;
        }
       default:
        break L68;
       }
       break;
      }
     default:
      {}
     } while (0);
     L169 : do if ((i31 | 0) == 136) {
      i31 = 0;
      i6 = ___intscan(i33, i6, 0, -1, -1) | 0;
      if ((HEAP32[i23 >> 2] | 0) == ((HEAP32[i17 >> 2] | 0) - (HEAP32[i29 >> 2] | 0) | 0)) break L6;
      if ((i15 | 0) != 0 & (i9 | 0) == 112) {
       HEAP32[i15 >> 2] = i6;
       break;
      }
      if (i15) switch (i11 | 0) {
      case -2:
       {
        HEAP8[i15 >> 0] = i6;
        break L169;
       }
      case -1:
       {
        HEAP16[i15 >> 1] = i6;
        break L169;
       }
      case 0:
       {
        HEAP32[i15 >> 2] = i6;
        break L169;
       }
      case 1:
       {
        HEAP32[i15 >> 2] = i6;
        break L169;
       }
      case 3:
       {
        i13 = i15;
        HEAP32[i13 >> 2] = i6;
        HEAP32[i13 + 4 >> 2] = tempRet0;
        break L169;
       }
      default:
       break L169;
      }
     } while (0);
     i1 = ((i15 | 0) != 0 & 1) + i1 | 0;
     i6 = (HEAP32[i23 >> 2] | 0) + i14 + (HEAP32[i29 >> 2] | 0) - (HEAP32[i17 >> 2] | 0) | 0;
     break L8;
    } while (0);
    i5 = i5 + (i4 & 1) | 0;
    ___shlim(i33, 0);
    i4 = HEAP32[i29 >> 2] | 0;
    if (i4 >>> 0 < (HEAP32[i30 >> 2] | 0) >>> 0) {
     HEAP32[i29 >> 2] = i4 + 1;
     i4 = HEAPU8[i4 >> 0] | 0;
    } else i4 = ___shgetc(i33) | 0;
    if ((i4 | 0) != (HEAPU8[i5 >> 0] | 0)) {
     i31 = 22;
     break L6;
    }
    i6 = i10 + 1 | 0;
   } else {
    while (1) {
     i4 = i5 + 1 | 0;
     if (!(_isspace(HEAPU8[i4 >> 0] | 0) | 0)) break; else i5 = i4;
    }
    ___shlim(i33, 0);
    do {
     i4 = HEAP32[i29 >> 2] | 0;
     if (i4 >>> 0 < (HEAP32[i30 >> 2] | 0) >>> 0) {
      HEAP32[i29 >> 2] = i4 + 1;
      i4 = HEAPU8[i4 >> 0] | 0;
     } else i4 = ___shgetc(i33) | 0;
    } while ((_isspace(i4) | 0) != 0);
    if (!(HEAP32[i30 >> 2] | 0)) i4 = HEAP32[i29 >> 2] | 0; else {
     i4 = (HEAP32[i29 >> 2] | 0) + -1 | 0;
     HEAP32[i29 >> 2] = i4;
    }
    i6 = (HEAP32[i23 >> 2] | 0) + i10 + i4 - (HEAP32[i17 >> 2] | 0) | 0;
   } while (0);
   i5 = i5 + 1 | 0;
   i4 = HEAP8[i5 >> 0] | 0;
   if (!(i4 << 24 >> 24)) break L4; else i10 = i6;
  }
  if ((i31 | 0) == 22) {
   if (HEAP32[i30 >> 2] | 0) HEAP32[i29 >> 2] = (HEAP32[i29 >> 2] | 0) + -1;
   if ((i1 | 0) != 0 | (i4 | 0) > -1) break; else {
    i1 = 0;
    i31 = 155;
   }
  } else if ((i31 | 0) == 154) if (!i1) {
   i1 = i4;
   i31 = 155;
  }
  if ((i31 | 0) == 155) {
   i4 = i1;
   i1 = -1;
  }
  if (i4) {
   _free(i3);
   _free(i2);
  }
 } else i1 = 0; while (0);
 if (i32 | 0) ___unlockfile(i33);
 STACKTOP = i34;
 return i1 | 0;
}

function __ZN4wasm10parseConstEN6cashew7IStringENS_8WasmTypeER10MixedArena(i1, i19, i2) {
 i1 = i1 | 0;
 i19 = i19 | 0;
 i2 = i2 | 0;
 var d3 = 0.0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, i18 = 0, i20 = 0, i21 = 0, i22 = 0, i23 = 0, d24 = 0.0;
 i23 = STACKTOP;
 STACKTOP = STACKTOP + 432 | 0;
 i21 = i23 + 208 | 0;
 i20 = i23 + 64 | 0;
 i6 = i23 + 408 | 0;
 i13 = i23 + 48 | 0;
 i14 = i23 + 32 | 0;
 i7 = i23 + 396 | 0;
 i15 = i23 + 16 | 0;
 i16 = i23;
 i11 = i23 + 384 | 0;
 i8 = i23 + 372 | 0;
 i12 = i23 + 360 | 0;
 i9 = i23 + 348 | 0;
 i4 = HEAP32[i1 >> 2] | 0;
 i22 = __ZN10MixedArena5allocIN4wasm5ConstEEEPT_v(i2) | 0;
 HEAP32[i22 + 4 >> 2] = i19;
 L1 : do if ((i19 + -3 | 0) >>> 0 < 2) {
  if ((i4 | 0) == (HEAP32[8976] | 0)) switch (i19 | 0) {
  case 3:
   {
    HEAP32[i22 + 8 >> 2] = 3;
    HEAPF32[i22 + 16 >> 2] = inf;
    i18 = i22;
    break L1;
   }
  case 4:
   {
    HEAP32[i22 + 8 >> 2] = 4;
    HEAPF64[i22 + 16 >> 3] = inf;
    i18 = i22;
    break L1;
   }
  default:
   {
    i18 = 0;
    break L1;
   }
  }
  if ((i4 | 0) == (HEAP32[9024] | 0)) switch (i19 | 0) {
  case 3:
   {
    HEAP32[i22 + 8 >> 2] = 3;
    HEAPF32[i22 + 16 >> 2] = -inf;
    i18 = i22;
    break L1;
   }
  case 4:
   {
    HEAP32[i22 + 8 >> 2] = 4;
    HEAPF64[i22 + 16 >> 3] = -inf;
    i18 = i22;
    break L1;
   }
  default:
   {
    i18 = 0;
    break L1;
   }
  }
  if ((i4 | 0) == (HEAP32[8975] | 0)) switch (i19 | 0) {
  case 3:
   {
    d3 = +_nan(44318);
    HEAP32[i22 + 8 >> 2] = 3;
    HEAPF32[i22 + 16 >> 2] = d3;
    i18 = i22;
    break L1;
   }
  case 4:
   {
    d3 = +_nan(44318);
    HEAP32[i22 + 8 >> 2] = 4;
    HEAPF64[i22 + 16 >> 3] = d3;
    i18 = i22;
    break L1;
   }
  default:
   {
    i18 = 0;
    break L1;
   }
  }
  i10 = (HEAP8[i4 >> 0] | 0) == 45;
  i1 = i4 + 1 | 0;
  i2 = i10 ? i1 : i4;
  if (i10) i5 = i1; else i5 = (HEAP8[i2 >> 0] | 0) == 43 ? i2 + 1 | 0 : i2;
  if (((HEAP8[i5 >> 0] | 0) == 110 ? (HEAP8[i5 + 1 >> 0] | 0) == 97 : 0) ? (HEAP8[i5 + 2 >> 0] | 0) == 110 : 0) {
   i1 = (HEAP8[i5 + 3 >> 0] | 0) == 58;
   i2 = i5 + 4 | 0;
   i4 = i1 ? i2 : 0;
   do if (i1) {
    if ((HEAP8[i2 >> 0] | 0) == 48 ? (HEAP8[i5 + 5 >> 0] | 0) == 120 : 0) break;
    ___assert_fail(13880, 13936, 70, 13950);
   } while (0);
   switch (i19 | 0) {
   case 3:
    {
     if (i1) {
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6__initEPKcj(i6, i4, _strlen(i4) | 0);
      i2 = i20 + 60 | 0;
      i1 = i20 + 8 | 0;
      HEAP32[i20 >> 2] = 3036;
      HEAP32[i2 >> 2] = 3056;
      HEAP32[i20 + 4 >> 2] = 0;
      __ZNSt3__18ios_base4initEPv(i20 + 60 | 0, i1);
      HEAP32[i20 + 132 >> 2] = 0;
      HEAP32[i20 + 136 >> 2] = -1;
      HEAP32[i20 >> 2] = 2980;
      HEAP32[i2 >> 2] = 3e3;
      __ZNSt3__115basic_streambufIcNS_11char_traitsIcEEEC2Ev(i1);
      HEAP32[i1 >> 2] = 3072;
      i2 = i20 + 40 | 0;
      i4 = 0;
      while (1) {
       if ((i4 | 0) == 3) break;
       HEAP32[i2 + (i4 << 2) >> 2] = 0;
       i4 = i4 + 1 | 0;
      }
      HEAP32[i20 + 52 >> 2] = 0;
      HEAP32[i20 + 56 >> 2] = 8;
      __ZNSt3__115basic_stringbufIcNS_11char_traitsIcEENS_9allocatorIcEEE3strERKNS_12basic_stringIcS2_S4_EE(i1, i6);
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i6);
      i19 = i20 + (HEAP32[(HEAP32[i20 >> 2] | 0) + -12 >> 2] | 0) + 4 | 0;
      HEAP32[i19 >> 2] = HEAP32[i19 >> 2] & -75 | 8;
      __ZNSt3__113basic_istreamIcNS_11char_traitsIcEEErsERj(i20, i21) | 0;
      HEAP32[i21 >> 2] = HEAP32[i21 >> 2] | 2139095040;
      __ZNSt3__119basic_istringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev(i20);
     } else HEAP32[i21 >> 2] = 2143289344;
     if (i10) {
      i1 = HEAP32[i21 >> 2] | -2147483648;
      HEAP32[i21 >> 2] = i1;
      d3 = (HEAP32[tempDoublePtr >> 2] = i1, +HEAPF32[tempDoublePtr >> 2]);
     } else {
      d24 = +HEAPF32[i21 >> 2];
      d3 = d24;
      i1 = (HEAPF32[tempDoublePtr >> 2] = d24, HEAP32[tempDoublePtr >> 2] | 0);
     }
     d24 = +Math_abs(+d3);
     if ((HEAPF32[tempDoublePtr >> 2] = d24, HEAP32[tempDoublePtr >> 2] | 0) >>> 0 <= 2139095040) {
      i1 = i1 | 1;
      HEAP32[i21 >> 2] = i1;
     }
     i18 = i22 + 8 | 0;
     HEAP32[i14 >> 2] = 1;
     HEAP32[i14 + 8 >> 2] = i1;
     __ZN4wasm7Literal9castToF32Ev(i13, i14);
     HEAP32[i18 >> 2] = HEAP32[i13 >> 2];
     HEAP32[i18 + 4 >> 2] = HEAP32[i13 + 4 >> 2];
     HEAP32[i18 + 8 >> 2] = HEAP32[i13 + 8 >> 2];
     HEAP32[i18 + 12 >> 2] = HEAP32[i13 + 12 >> 2];
     i18 = i22;
     break L1;
    }
   case 4:
    {
     if (i1) {
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6__initEPKcj(i7, i4, _strlen(i4) | 0);
      i1 = i20 + 60 | 0;
      i2 = i20 + 8 | 0;
      HEAP32[i20 >> 2] = 3036;
      HEAP32[i1 >> 2] = 3056;
      HEAP32[i20 + 4 >> 2] = 0;
      __ZNSt3__18ios_base4initEPv(i20 + 60 | 0, i2);
      HEAP32[i20 + 132 >> 2] = 0;
      HEAP32[i20 + 136 >> 2] = -1;
      HEAP32[i20 >> 2] = 2980;
      HEAP32[i1 >> 2] = 3e3;
      __ZNSt3__115basic_streambufIcNS_11char_traitsIcEEEC2Ev(i2);
      HEAP32[i2 >> 2] = 3072;
      i1 = i20 + 40 | 0;
      i4 = 0;
      while (1) {
       if ((i4 | 0) == 3) break;
       HEAP32[i1 + (i4 << 2) >> 2] = 0;
       i4 = i4 + 1 | 0;
      }
      HEAP32[i20 + 52 >> 2] = 0;
      HEAP32[i20 + 56 >> 2] = 8;
      __ZNSt3__115basic_stringbufIcNS_11char_traitsIcEENS_9allocatorIcEEE3strERKNS_12basic_stringIcS2_S4_EE(i2, i7);
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i7);
      i14 = i20 + (HEAP32[(HEAP32[i20 >> 2] | 0) + -12 >> 2] | 0) + 4 | 0;
      HEAP32[i14 >> 2] = HEAP32[i14 >> 2] & -75 | 8;
      __ZNSt3__113basic_istreamIcNS_11char_traitsIcEEErsERy(i20, i21) | 0;
      i14 = i21;
      i18 = HEAP32[i14 + 4 >> 2] | 2146435072;
      i19 = i21;
      HEAP32[i19 >> 2] = HEAP32[i14 >> 2];
      HEAP32[i19 + 4 >> 2] = i18;
      __ZNSt3__119basic_istringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev(i20);
     } else {
      i20 = i21;
      HEAP32[i20 >> 2] = 0;
      HEAP32[i20 + 4 >> 2] = 2146959360;
     }
     if (i10) {
      i1 = i21;
      i2 = HEAP32[i1 >> 2] | 0;
      i1 = HEAP32[i1 + 4 >> 2] | -2147483648;
      i20 = i21;
      HEAP32[i20 >> 2] = i2;
      HEAP32[i20 + 4 >> 2] = i1;
      HEAP32[tempDoublePtr >> 2] = i2;
      HEAP32[tempDoublePtr + 4 >> 2] = i1;
      d3 = +HEAPF64[tempDoublePtr >> 3];
     } else {
      d3 = +HEAPF64[i21 >> 3];
      HEAPF64[tempDoublePtr >> 3] = d3;
      i2 = HEAP32[tempDoublePtr >> 2] | 0;
      i1 = HEAP32[tempDoublePtr + 4 >> 2] | 0;
     }
     d24 = +Math_abs(+d3);
     HEAPF64[tempDoublePtr >> 3] = d24;
     i20 = HEAP32[tempDoublePtr + 4 >> 2] | 0;
     if (!(i20 >>> 0 > 2146435072 | (i20 | 0) == 2146435072 & (HEAP32[tempDoublePtr >> 2] | 0) >>> 0 > 0)) {
      i2 = i2 | 1;
      HEAP32[i21 >> 2] = i2;
      HEAP32[i21 + 4 >> 2] = i1;
     }
     i18 = i22 + 8 | 0;
     HEAP32[i16 >> 2] = 2;
     i21 = i16 + 8 | 0;
     HEAP32[i21 >> 2] = i2;
     HEAP32[i21 + 4 >> 2] = i1;
     __ZN4wasm7Literal9castToF64Ev(i15, i16);
     HEAP32[i18 >> 2] = HEAP32[i15 >> 2];
     HEAP32[i18 + 4 >> 2] = HEAP32[i15 + 4 >> 2];
     HEAP32[i18 + 8 >> 2] = HEAP32[i15 + 8 >> 2];
     HEAP32[i18 + 12 >> 2] = HEAP32[i15 + 12 >> 2];
     i18 = i22;
     break L1;
    }
   default:
    {
     i18 = 0;
     break L1;
    }
   }
  }
  if ((i4 | 0) == (HEAP32[9025] | 0)) switch (i19 | 0) {
  case 3:
   {
    d24 = -+_nan(44318);
    HEAP32[i22 + 8 >> 2] = 3;
    HEAPF32[i22 + 16 >> 2] = d24;
    i18 = i22;
    break L1;
   }
  case 4:
   {
    d24 = -+_nan(44318);
    HEAP32[i22 + 8 >> 2] = 4;
    HEAPF64[i22 + 16 >> 3] = d24;
    i18 = i22;
    break L1;
   }
  default:
   {
    i18 = 0;
    break L1;
   }
  } else i17 = 52;
 } else i17 = 52; while (0);
 L72 : do if ((i17 | 0) == 52) {
  L74 : do switch (i19 | 0) {
  case 1:
   {
    i2 = HEAP8[i4 >> 0] | 0;
    switch (i2 << 24 >> 24) {
    case 48:
     {
      i1 = i4 + 1 | 0;
      if ((HEAP8[i1 >> 0] | 0) == 120) i17 = 57; else i17 = 61;
      break;
     }
    case 45:
     {
      i1 = i4 + 1 | 0;
      if ((HEAP8[i1 >> 0] | 0) == 48 ? (HEAP8[i4 + 2 >> 0] | 0) == 120 : 0) i17 = 57; else i17 = 61;
      break;
     }
    default:
     i17 = 61;
    }
    if ((i17 | 0) == 57) {
     i5 = i2 << 24 >> 24 == 45;
     i2 = i5 ? i1 : i4;
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6__initEPKcj(i11, i2, _strlen(i2) | 0);
     i2 = i21 + 60 | 0;
     i1 = i21 + 8 | 0;
     HEAP32[i21 >> 2] = 3036;
     HEAP32[i2 >> 2] = 3056;
     HEAP32[i21 + 4 >> 2] = 0;
     __ZNSt3__18ios_base4initEPv(i21 + 60 | 0, i1);
     HEAP32[i21 + 132 >> 2] = 0;
     HEAP32[i21 + 136 >> 2] = -1;
     HEAP32[i21 >> 2] = 2980;
     HEAP32[i2 >> 2] = 3e3;
     __ZNSt3__115basic_streambufIcNS_11char_traitsIcEEEC2Ev(i1);
     HEAP32[i1 >> 2] = 3072;
     i2 = i21 + 40 | 0;
     i4 = 0;
     while (1) {
      if ((i4 | 0) == 3) break;
      HEAP32[i2 + (i4 << 2) >> 2] = 0;
      i4 = i4 + 1 | 0;
     }
     HEAP32[i21 + 52 >> 2] = 0;
     HEAP32[i21 + 56 >> 2] = 8;
     __ZNSt3__115basic_stringbufIcNS_11char_traitsIcEENS_9allocatorIcEEE3strERKNS_12basic_stringIcS2_S4_EE(i1, i11);
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i11);
     i1 = i21 + (HEAP32[(HEAP32[i21 >> 2] | 0) + -12 >> 2] | 0) + 4 | 0;
     HEAP32[i1 >> 2] = HEAP32[i1 >> 2] & -75 | 8;
     __ZNSt3__113basic_istreamIcNS_11char_traitsIcEEErsERj(i21, i20) | 0;
     i20 = HEAP32[i20 >> 2] | 0;
     i1 = i22 + 8 | 0;
     HEAP32[i1 >> 2] = 1;
     HEAP32[i22 + 16 >> 2] = i5 ? 0 - i20 | 0 : i20;
     __ZNSt3__119basic_istringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev(i21);
     break L74;
    } else if ((i17 | 0) == 61) {
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6__initEPKcj(i8, i4, _strlen(i4) | 0);
     i2 = i21 + 60 | 0;
     i1 = i21 + 8 | 0;
     HEAP32[i21 >> 2] = 3036;
     HEAP32[i2 >> 2] = 3056;
     HEAP32[i21 + 4 >> 2] = 0;
     __ZNSt3__18ios_base4initEPv(i21 + 60 | 0, i1);
     HEAP32[i21 + 132 >> 2] = 0;
     HEAP32[i21 + 136 >> 2] = -1;
     HEAP32[i21 >> 2] = 2980;
     HEAP32[i2 >> 2] = 3e3;
     __ZNSt3__115basic_streambufIcNS_11char_traitsIcEEEC2Ev(i1);
     HEAP32[i1 >> 2] = 3072;
     i2 = i21 + 40 | 0;
     i4 = 0;
     while (1) {
      if ((i4 | 0) == 3) break;
      HEAP32[i2 + (i4 << 2) >> 2] = 0;
      i4 = i4 + 1 | 0;
     }
     HEAP32[i21 + 52 >> 2] = 0;
     HEAP32[i21 + 56 >> 2] = 8;
     __ZNSt3__115basic_stringbufIcNS_11char_traitsIcEENS_9allocatorIcEEE3strERKNS_12basic_stringIcS2_S4_EE(i1, i8);
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i8);
     __ZNSt3__113basic_istreamIcNS_11char_traitsIcEEErsERi(i21, i20) | 0;
     i20 = HEAP32[i20 >> 2] | 0;
     i1 = i22 + 8 | 0;
     HEAP32[i1 >> 2] = 1;
     HEAP32[i22 + 16 >> 2] = i20;
     __ZNSt3__119basic_istringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev(i21);
     break L74;
    }
    break;
   }
  case 2:
   {
    i2 = HEAP8[i4 >> 0] | 0;
    switch (i2 << 24 >> 24) {
    case 48:
     {
      i1 = i4 + 1 | 0;
      if ((HEAP8[i1 >> 0] | 0) == 120) i17 = 69; else i17 = 73;
      break;
     }
    case 45:
     {
      i1 = i4 + 1 | 0;
      if ((HEAP8[i1 >> 0] | 0) == 48 ? (HEAP8[i4 + 2 >> 0] | 0) == 120 : 0) i17 = 69; else i17 = 73;
      break;
     }
    default:
     i17 = 73;
    }
    if ((i17 | 0) == 69) {
     i5 = i2 << 24 >> 24 == 45;
     i2 = i5 ? i1 : i4;
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6__initEPKcj(i12, i2, _strlen(i2) | 0);
     i2 = i21 + 60 | 0;
     i1 = i21 + 8 | 0;
     HEAP32[i21 >> 2] = 3036;
     HEAP32[i2 >> 2] = 3056;
     HEAP32[i21 + 4 >> 2] = 0;
     __ZNSt3__18ios_base4initEPv(i21 + 60 | 0, i1);
     HEAP32[i21 + 132 >> 2] = 0;
     HEAP32[i21 + 136 >> 2] = -1;
     HEAP32[i21 >> 2] = 2980;
     HEAP32[i2 >> 2] = 3e3;
     __ZNSt3__115basic_streambufIcNS_11char_traitsIcEEEC2Ev(i1);
     HEAP32[i1 >> 2] = 3072;
     i2 = i21 + 40 | 0;
     i4 = 0;
     while (1) {
      if ((i4 | 0) == 3) break;
      HEAP32[i2 + (i4 << 2) >> 2] = 0;
      i4 = i4 + 1 | 0;
     }
     HEAP32[i21 + 52 >> 2] = 0;
     HEAP32[i21 + 56 >> 2] = 8;
     __ZNSt3__115basic_stringbufIcNS_11char_traitsIcEENS_9allocatorIcEEE3strERKNS_12basic_stringIcS2_S4_EE(i1, i12);
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i12);
     i17 = i21 + (HEAP32[(HEAP32[i21 >> 2] | 0) + -12 >> 2] | 0) + 4 | 0;
     HEAP32[i17 >> 2] = HEAP32[i17 >> 2] & -75 | 8;
     __ZNSt3__113basic_istreamIcNS_11char_traitsIcEEErsERy(i21, i20) | 0;
     i17 = i20;
     i16 = HEAP32[i17 >> 2] | 0;
     i17 = HEAP32[i17 + 4 >> 2] | 0;
     i15 = _i64Subtract(0, 0, i16 | 0, i17 | 0) | 0;
     i1 = i22 + 8 | 0;
     HEAP32[i1 >> 2] = 2;
     i20 = i22 + 16 | 0;
     HEAP32[i20 >> 2] = i5 ? i15 : i16;
     HEAP32[i20 + 4 >> 2] = i5 ? tempRet0 : i17;
     __ZNSt3__119basic_istringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev(i21);
     break L74;
    } else if ((i17 | 0) == 73) {
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6__initEPKcj(i9, i4, _strlen(i4) | 0);
     i2 = i21 + 60 | 0;
     i1 = i21 + 8 | 0;
     HEAP32[i21 >> 2] = 3036;
     HEAP32[i2 >> 2] = 3056;
     HEAP32[i21 + 4 >> 2] = 0;
     __ZNSt3__18ios_base4initEPv(i21 + 60 | 0, i1);
     HEAP32[i21 + 132 >> 2] = 0;
     HEAP32[i21 + 136 >> 2] = -1;
     HEAP32[i21 >> 2] = 2980;
     HEAP32[i2 >> 2] = 3e3;
     __ZNSt3__115basic_streambufIcNS_11char_traitsIcEEEC2Ev(i1);
     HEAP32[i1 >> 2] = 3072;
     i2 = i21 + 40 | 0;
     i4 = 0;
     while (1) {
      if ((i4 | 0) == 3) break;
      HEAP32[i2 + (i4 << 2) >> 2] = 0;
      i4 = i4 + 1 | 0;
     }
     HEAP32[i21 + 52 >> 2] = 0;
     HEAP32[i21 + 56 >> 2] = 8;
     __ZNSt3__115basic_stringbufIcNS_11char_traitsIcEENS_9allocatorIcEEE3strERKNS_12basic_stringIcS2_S4_EE(i1, i9);
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i9);
     __ZNSt3__113basic_istreamIcNS_11char_traitsIcEEErsERx(i21, i20) | 0;
     i17 = i20;
     i16 = HEAP32[i17 >> 2] | 0;
     i17 = HEAP32[i17 + 4 >> 2] | 0;
     i1 = i22 + 8 | 0;
     HEAP32[i1 >> 2] = 2;
     i20 = i22 + 16 | 0;
     HEAP32[i20 >> 2] = i16;
     HEAP32[i20 + 4 >> 2] = i17;
     __ZNSt3__119basic_istringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev(i21);
     break L74;
    }
    break;
   }
  case 3:
   {
    d24 = +_strtof(i4, i21);
    i1 = i22 + 8 | 0;
    HEAP32[i1 >> 2] = 3;
    HEAPF32[i22 + 16 >> 2] = d24;
    break;
   }
  case 4:
   {
    d24 = +_strtod(i4, i21);
    i1 = i22 + 8 | 0;
    HEAP32[i1 >> 2] = 4;
    HEAPF64[i22 + 16 >> 3] = d24;
    break;
   }
  default:
   {
    i18 = 0;
    break L72;
   }
  } while (0);
  if ((HEAP32[i1 >> 2] | 0) == (i19 | 0)) i18 = i22; else ___assert_fail(13961, 13936, 160, 13950);
 } while (0);
 STACKTOP = i23;
 return i18 | 0;
}

function __ZN10__cxxabiv112_GLOBAL__N_118parse_substitutionINS0_2DbEEEPKcS4_S4_RT_(i12, i5, i15) {
 i12 = i12 | 0;
 i5 = i5 | 0;
 i15 = i15 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i13 = 0, i14 = 0, i16 = 0;
 i16 = STACKTOP;
 STACKTOP = STACKTOP + 176 | 0;
 i14 = i16 + 144 | 0;
 i6 = i16 + 120 | 0;
 i7 = i16 + 96 | 0;
 i8 = i16 + 72 | 0;
 i9 = i16 + 48 | 0;
 i10 = i16 + 24 | 0;
 i11 = i16;
 L1 : do if ((i5 - i12 | 0) > 1 ? (HEAP8[i12 >> 0] | 0) == 83 : 0) {
  i2 = i12 + 1 | 0;
  i1 = HEAP8[i2 >> 0] | 0;
  i3 = i1 << 24 >> 24;
  switch (i3 | 0) {
  case 97:
   {
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj15EEERAT__Kc(i6, 34269);
    i1 = i15 + 4 | 0;
    i2 = HEAP32[i1 >> 2] | 0;
    i13 = HEAP32[i15 + 8 >> 2] | 0;
    i3 = i13;
    if (i2 >>> 0 < i13 >>> 0) {
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i2, i6);
     HEAP32[i1 >> 2] = (HEAP32[i1 >> 2] | 0) + 24;
    } else {
     i1 = HEAP32[i15 >> 2] | 0;
     i13 = i2 - i1 | 0;
     i4 = (i13 | 0) / 24 | 0;
     i2 = i4 + 1 | 0;
     if ((i13 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i15);
     i1 = (i3 - i1 | 0) / 24 | 0;
     if (i1 >>> 0 < 1073741823) {
      i1 = i1 << 1;
      i1 = i1 >>> 0 < i2 >>> 0 ? i2 : i1;
     } else i1 = 2147483647;
     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_(i14, i1, i4, i15 + 12 | 0);
     i13 = i14 + 8 | 0;
     i11 = HEAP32[i13 >> 2] | 0;
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i11, i6);
     HEAP32[i13 >> 2] = i11 + 24;
     __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i15, i14);
     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev(i14);
    }
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i6);
    i13 = i12 + 2 | 0;
    break L1;
   }
  case 98:
   {
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj18EEERAT__Kc(i7, 34284);
    i1 = i15 + 4 | 0;
    i2 = HEAP32[i1 >> 2] | 0;
    i13 = HEAP32[i15 + 8 >> 2] | 0;
    i3 = i13;
    if (i2 >>> 0 < i13 >>> 0) {
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i2, i7);
     HEAP32[i1 >> 2] = (HEAP32[i1 >> 2] | 0) + 24;
    } else {
     i1 = HEAP32[i15 >> 2] | 0;
     i13 = i2 - i1 | 0;
     i4 = (i13 | 0) / 24 | 0;
     i2 = i4 + 1 | 0;
     if ((i13 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i15);
     i1 = (i3 - i1 | 0) / 24 | 0;
     if (i1 >>> 0 < 1073741823) {
      i1 = i1 << 1;
      i1 = i1 >>> 0 < i2 >>> 0 ? i2 : i1;
     } else i1 = 2147483647;
     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_(i14, i1, i4, i15 + 12 | 0);
     i13 = i14 + 8 | 0;
     i11 = HEAP32[i13 >> 2] | 0;
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i11, i7);
     HEAP32[i13 >> 2] = i11 + 24;
     __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i15, i14);
     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev(i14);
    }
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i7);
    i13 = i12 + 2 | 0;
    break L1;
   }
  case 115:
   {
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj12EEERAT__Kc(i8, 34302);
    i1 = i15 + 4 | 0;
    i2 = HEAP32[i1 >> 2] | 0;
    i13 = HEAP32[i15 + 8 >> 2] | 0;
    i3 = i13;
    if (i2 >>> 0 < i13 >>> 0) {
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i2, i8);
     HEAP32[i1 >> 2] = (HEAP32[i1 >> 2] | 0) + 24;
    } else {
     i1 = HEAP32[i15 >> 2] | 0;
     i13 = i2 - i1 | 0;
     i4 = (i13 | 0) / 24 | 0;
     i2 = i4 + 1 | 0;
     if ((i13 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i15);
     i1 = (i3 - i1 | 0) / 24 | 0;
     if (i1 >>> 0 < 1073741823) {
      i1 = i1 << 1;
      i1 = i1 >>> 0 < i2 >>> 0 ? i2 : i1;
     } else i1 = 2147483647;
     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_(i14, i1, i4, i15 + 12 | 0);
     i13 = i14 + 8 | 0;
     i11 = HEAP32[i13 >> 2] | 0;
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i11, i8);
     HEAP32[i13 >> 2] = i11 + 24;
     __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i15, i14);
     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev(i14);
    }
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i8);
    i13 = i12 + 2 | 0;
    break L1;
   }
  case 105:
   {
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj13EEERAT__Kc(i9, 34314);
    i1 = i15 + 4 | 0;
    i2 = HEAP32[i1 >> 2] | 0;
    i13 = HEAP32[i15 + 8 >> 2] | 0;
    i4 = i13;
    if (i2 >>> 0 < i13 >>> 0) {
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i2, i9);
     HEAP32[i1 >> 2] = (HEAP32[i1 >> 2] | 0) + 24;
    } else {
     i1 = HEAP32[i15 >> 2] | 0;
     i13 = i2 - i1 | 0;
     i3 = (i13 | 0) / 24 | 0;
     i2 = i3 + 1 | 0;
     if ((i13 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i15);
     i1 = (i4 - i1 | 0) / 24 | 0;
     if (i1 >>> 0 < 1073741823) {
      i1 = i1 << 1;
      i1 = i1 >>> 0 < i2 >>> 0 ? i2 : i1;
     } else i1 = 2147483647;
     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_(i14, i1, i3, i15 + 12 | 0);
     i13 = i14 + 8 | 0;
     i11 = HEAP32[i13 >> 2] | 0;
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i11, i9);
     HEAP32[i13 >> 2] = i11 + 24;
     __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i15, i14);
     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev(i14);
    }
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i9);
    i13 = i12 + 2 | 0;
    break L1;
   }
  case 111:
   {
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj13EEERAT__Kc(i10, 34327);
    i1 = i15 + 4 | 0;
    i2 = HEAP32[i1 >> 2] | 0;
    i13 = HEAP32[i15 + 8 >> 2] | 0;
    i3 = i13;
    if (i2 >>> 0 < i13 >>> 0) {
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i2, i10);
     HEAP32[i1 >> 2] = (HEAP32[i1 >> 2] | 0) + 24;
    } else {
     i1 = HEAP32[i15 >> 2] | 0;
     i13 = i2 - i1 | 0;
     i4 = (i13 | 0) / 24 | 0;
     i2 = i4 + 1 | 0;
     if ((i13 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i15);
     i1 = (i3 - i1 | 0) / 24 | 0;
     if (i1 >>> 0 < 1073741823) {
      i1 = i1 << 1;
      i1 = i1 >>> 0 < i2 >>> 0 ? i2 : i1;
     } else i1 = 2147483647;
     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_(i14, i1, i4, i15 + 12 | 0);
     i13 = i14 + 8 | 0;
     i11 = HEAP32[i13 >> 2] | 0;
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i11, i10);
     HEAP32[i13 >> 2] = i11 + 24;
     __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i15, i14);
     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev(i14);
    }
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i10);
    i13 = i12 + 2 | 0;
    break L1;
   }
  case 100:
   {
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj14EEERAT__Kc(i11, 34340);
    i1 = i15 + 4 | 0;
    i2 = HEAP32[i1 >> 2] | 0;
    i13 = HEAP32[i15 + 8 >> 2] | 0;
    i3 = i13;
    if (i2 >>> 0 < i13 >>> 0) {
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i2, i11);
     HEAP32[i1 >> 2] = (HEAP32[i1 >> 2] | 0) + 24;
    } else {
     i1 = HEAP32[i15 >> 2] | 0;
     i13 = i2 - i1 | 0;
     i4 = (i13 | 0) / 24 | 0;
     i2 = i4 + 1 | 0;
     if ((i13 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i15);
     i1 = (i3 - i1 | 0) / 24 | 0;
     if (i1 >>> 0 < 1073741823) {
      i1 = i1 << 1;
      i1 = i1 >>> 0 < i2 >>> 0 ? i2 : i1;
     } else i1 = 2147483647;
     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_(i14, i1, i4, i15 + 12 | 0);
     i13 = i14 + 8 | 0;
     i10 = HEAP32[i13 >> 2] | 0;
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i10, i11);
     HEAP32[i13 >> 2] = i10 + 24;
     __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i15, i14);
     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev(i14);
    }
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i11);
    i13 = i12 + 2 | 0;
    break L1;
   }
  case 95:
   {
    i1 = HEAP32[i15 + 16 >> 2] | 0;
    if ((i1 | 0) == (HEAP32[i15 + 20 >> 2] | 0)) {
     i13 = i12;
     break L1;
    }
    i7 = HEAP32[i1 + 4 >> 2] | 0;
    i8 = i15 + 4 | 0;
    i9 = i15 + 8 | 0;
    i10 = i15 + 12 | 0;
    i11 = i14 + 8 | 0;
    i6 = HEAP32[i1 >> 2] | 0;
    while (1) {
     if ((i6 | 0) == (i7 | 0)) {
      i1 = 55;
      break;
     }
     i1 = HEAP32[i8 >> 2] | 0;
     i5 = HEAP32[i9 >> 2] | 0;
     i2 = i5;
     if ((i1 | 0) == (i5 | 0)) {
      i3 = HEAP32[i15 >> 2] | 0;
      i1 = i1 - i3 | 0;
      i5 = (i1 | 0) / 24 | 0;
      i4 = i5 + 1 | 0;
      if ((i1 | 0) < -24) {
       i1 = 59;
       break;
      }
      i1 = (i2 - i3 | 0) / 24 | 0;
      if (i1 >>> 0 < 1073741823) {
       i1 = i1 << 1;
       i1 = i1 >>> 0 < i4 >>> 0 ? i4 : i1;
      } else i1 = 2147483647;
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_(i14, i1, i5, i10);
      i5 = HEAP32[i11 >> 2] | 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_(i5, i6);
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_(i5 + 12 | 0, i6 + 12 | 0);
      HEAP32[i11 >> 2] = i5 + 24;
      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i15, i14);
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev(i14);
     } else {
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_(i1, i6);
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_(i1 + 12 | 0, i6 + 12 | 0);
      HEAP32[i8 >> 2] = (HEAP32[i8 >> 2] | 0) + 24;
     }
     i6 = i6 + 24 | 0;
    }
    if ((i1 | 0) == 55) {
     i13 = i12 + 2 | 0;
     break L1;
    } else if ((i1 | 0) == 59) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i15);
    break;
   }
  default:
   {
    if ((i3 + -48 | 0) >>> 0 >= 10) {
     if (!(_isupper(i3) | 0)) {
      i13 = i12;
      break L1;
     }
     i1 = HEAP8[i2 >> 0] | 0;
    }
    i2 = i1 << 24 >> 24;
    i4 = i2 + -48 | 0;
    i2 = i4 >>> 0 < 10 ? i4 : i2 + -55 | 0;
    i4 = i12 + 2 | 0;
    while (1) {
     if ((i4 | 0) == (i5 | 0)) {
      i13 = i12;
      break L1;
     }
     i1 = HEAP8[i4 >> 0] | 0;
     i3 = i1 << 24 >> 24;
     if ((i3 + -48 | 0) >>> 0 >= 10) {
      i11 = (_isupper(i3) | 0) == 0;
      i1 = HEAP8[i4 >> 0] | 0;
      if (i11) break;
     }
     i11 = i1 << 24 >> 24;
     i10 = i11 + -48 | 0;
     i2 = (i10 >>> 0 < 10 ? i10 : i11 + -55 | 0) + (i2 * 36 | 0) | 0;
     i4 = i4 + 1 | 0;
    }
    if (i1 << 24 >> 24 != 95) {
     i13 = i12;
     break L1;
    }
    i1 = i2 + 1 | 0;
    i11 = HEAP32[i15 + 16 >> 2] | 0;
    i2 = i11;
    if (i1 >>> 0 >= (HEAP32[i15 + 20 >> 2] | 0) - i11 >> 4 >>> 0) {
     i13 = i12;
     break L1;
    }
    i8 = HEAP32[i2 + (i1 << 4) + 4 >> 2] | 0;
    i9 = i15 + 4 | 0;
    i10 = i15 + 8 | 0;
    i11 = i15 + 12 | 0;
    i12 = i14 + 8 | 0;
    i7 = HEAP32[i2 + (i1 << 4) >> 2] | 0;
    while (1) {
     if ((i7 | 0) == (i8 | 0)) {
      i1 = 76;
      break;
     }
     i1 = HEAP32[i9 >> 2] | 0;
     i6 = HEAP32[i10 >> 2] | 0;
     i2 = i6;
     if ((i1 | 0) == (i6 | 0)) {
      i3 = HEAP32[i15 >> 2] | 0;
      i1 = i1 - i3 | 0;
      i6 = (i1 | 0) / 24 | 0;
      i5 = i6 + 1 | 0;
      if ((i1 | 0) < -24) {
       i1 = 80;
       break;
      }
      i1 = (i2 - i3 | 0) / 24 | 0;
      if (i1 >>> 0 < 1073741823) {
       i1 = i1 << 1;
       i1 = i1 >>> 0 < i5 >>> 0 ? i5 : i1;
      } else i1 = 2147483647;
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_(i14, i1, i6, i11);
      i6 = HEAP32[i12 >> 2] | 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_(i6, i7);
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_(i6 + 12 | 0, i7 + 12 | 0);
      HEAP32[i12 >> 2] = i6 + 24;
      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i15, i14);
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev(i14);
     } else {
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_(i1, i7);
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_(i1 + 12 | 0, i7 + 12 | 0);
      HEAP32[i9 >> 2] = (HEAP32[i9 >> 2] | 0) + 24;
     }
     i7 = i7 + 24 | 0;
    }
    if ((i1 | 0) == 76) {
     i13 = i4 + 1 | 0;
     break L1;
    } else if ((i1 | 0) == 80) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i15);
   }
  }
 } else i13 = i12; while (0);
 STACKTOP = i16;
 return i13 | 0;
}

function __ZN10__cxxabiv112_GLOBAL__N_121parse_unresolved_nameINS0_2DbEEEPKcS4_S4_RT_(i15, i13, i14) {
 i15 = i15 | 0;
 i13 = i13 | 0;
 i14 = i14 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i16 = 0, i17 = 0;
 i17 = STACKTOP;
 STACKTOP = STACKTOP + 80 | 0;
 i16 = i17 + 60 | 0;
 i10 = i17 + 48 | 0;
 i12 = i17 + 36 | 0;
 i6 = i17 + 24 | 0;
 i9 = i17 + 12 | 0;
 i11 = i17;
 i2 = i13;
 L1 : do if ((i2 - i15 | 0) > 2) {
  if ((HEAP8[i15 >> 0] | 0) == 103) {
   i4 = (HEAP8[i15 + 1 >> 0] | 0) == 115;
   i5 = i4;
   i4 = i4 ? i15 + 2 | 0 : i15;
  } else {
   i5 = 0;
   i4 = i15;
  }
  i1 = __ZN10__cxxabiv112_GLOBAL__N_126parse_base_unresolved_nameINS0_2DbEEEPKcS4_S4_RT_(i4, i13, i14) | 0;
  if ((i1 | 0) != (i4 | 0)) {
   if (!i5) break;
   i2 = HEAP32[i14 + 4 >> 2] | 0;
   if ((HEAP32[i14 >> 2] | 0) == (i2 | 0)) {
    i1 = i15;
    break;
   }
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc(i2 + -24 | 0, 0, 33713) | 0;
   break;
  }
  if (((i2 - i4 | 0) > 2 ? (HEAP8[i4 >> 0] | 0) == 115 : 0) ? (HEAP8[i4 + 1 >> 0] | 0) == 114 : 0) {
   i3 = i4 + 2 | 0;
   if ((HEAP8[i3 >> 0] | 0) == 78) {
    i11 = i4 + 3 | 0;
    i1 = __ZN10__cxxabiv112_GLOBAL__N_121parse_unresolved_typeINS0_2DbEEEPKcS4_S4_RT_(i11, i13, i14) | 0;
    if ((i1 | 0) == (i11 | 0) | (i1 | 0) == (i13 | 0)) {
     i1 = i15;
     break;
    }
    i4 = __ZN10__cxxabiv112_GLOBAL__N_119parse_template_argsINS0_2DbEEEPKcS4_S4_RT_(i1, i13, i14) | 0;
    i9 = i14 + 4 | 0;
    do if ((i4 | 0) == (i1 | 0)) i8 = i14; else {
     i1 = HEAP32[i9 >> 2] | 0;
     if (((i1 - (HEAP32[i14 >> 2] | 0) | 0) / 24 | 0) >>> 0 < 2) {
      i1 = i15;
      break L1;
     }
     __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv(i16, i1 + -24 | 0);
     i1 = HEAP32[i9 >> 2] | 0;
     i2 = i1 + -24 | 0;
     i3 = i1;
     while (1) {
      if ((i3 | 0) == (i2 | 0)) break;
      i11 = i3 + -24 | 0;
      HEAP32[i9 >> 2] = i11;
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i11);
      i3 = HEAP32[i9 >> 2] | 0;
     }
     i11 = HEAP8[i16 >> 0] | 0;
     i8 = (i11 & 1) == 0;
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj(i1 + -48 | 0, i8 ? i16 + 1 | 0 : HEAP32[i16 + 8 >> 2] | 0, i8 ? (i11 & 255) >>> 1 : HEAP32[i16 + 4 >> 2] | 0) | 0;
     if ((i4 | 0) != (i13 | 0)) {
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i16);
      i8 = i14;
      i1 = i4;
      break;
     }
     i2 = HEAP32[i9 >> 2] | 0;
     i1 = i2 + -24 | 0;
     while (1) {
      if ((i2 | 0) == (i1 | 0)) break;
      i14 = i2 + -24 | 0;
      HEAP32[i9 >> 2] = i14;
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i14);
      i2 = HEAP32[i9 >> 2] | 0;
     }
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i16);
     i1 = i15;
     break L1;
    } while (0);
    i5 = i10 + 8 | 0;
    i6 = i10 + 1 | 0;
    i7 = i10 + 4 | 0;
    while (1) {
     if ((HEAP8[i1 >> 0] | 0) == 69) break;
     i4 = __ZN10__cxxabiv112_GLOBAL__N_115parse_simple_idINS0_2DbEEEPKcS4_S4_RT_(i1, i13, i14) | 0;
     if ((i4 | 0) == (i1 | 0) | (i4 | 0) == (i13 | 0)) {
      i1 = i15;
      break L1;
     }
     i1 = HEAP32[i9 >> 2] | 0;
     if (((i1 - (HEAP32[i8 >> 2] | 0) | 0) / 24 | 0) >>> 0 < 2) {
      i1 = i15;
      break L1;
     }
     __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv(i16, i1 + -24 | 0);
     i3 = HEAP32[i9 >> 2] | 0;
     i1 = i3 + -24 | 0;
     i2 = i3;
     while (1) {
      if ((i2 | 0) == (i1 | 0)) break;
      i11 = i2 + -24 | 0;
      HEAP32[i9 >> 2] = i11;
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i11);
      i2 = HEAP32[i9 >> 2] | 0;
     }
     i1 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc(i16, 0, 33713) | 0;
     HEAP32[i10 >> 2] = HEAP32[i1 >> 2];
     HEAP32[i10 + 4 >> 2] = HEAP32[i1 + 4 >> 2];
     HEAP32[i10 + 8 >> 2] = HEAP32[i1 + 8 >> 2];
     i2 = 0;
     while (1) {
      if ((i2 | 0) == 3) break;
      HEAP32[i1 + (i2 << 2) >> 2] = 0;
      i2 = i2 + 1 | 0;
     }
     i1 = HEAP8[i10 >> 0] | 0;
     i11 = (i1 & 1) == 0;
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj(i3 + -48 | 0, i11 ? i6 : HEAP32[i5 >> 2] | 0, i11 ? (i1 & 255) >>> 1 : HEAP32[i7 >> 2] | 0) | 0;
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i10);
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i16);
     i1 = i4;
    }
    i11 = i1 + 1 | 0;
    i1 = __ZN10__cxxabiv112_GLOBAL__N_126parse_base_unresolved_nameINS0_2DbEEEPKcS4_S4_RT_(i11, i13, i14) | 0;
    if ((i1 | 0) == (i11 | 0)) {
     i1 = HEAP32[i9 >> 2] | 0;
     if ((HEAP32[i14 >> 2] | 0) == (i1 | 0)) {
      i1 = i15;
      break;
     }
     i2 = i1 + -24 | 0;
     while (1) {
      if ((i1 | 0) == (i2 | 0)) {
       i1 = i15;
       break L1;
      }
      i16 = i1 + -24 | 0;
      HEAP32[i9 >> 2] = i16;
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i16);
      i1 = HEAP32[i9 >> 2] | 0;
     }
    }
    i2 = HEAP32[i9 >> 2] | 0;
    if (((i2 - (HEAP32[i8 >> 2] | 0) | 0) / 24 | 0) >>> 0 < 2) {
     i1 = i15;
     break;
    }
    __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv(i16, i2 + -24 | 0);
    i4 = HEAP32[i9 >> 2] | 0;
    i2 = i4 + -24 | 0;
    i3 = i4;
    while (1) {
     if ((i3 | 0) == (i2 | 0)) break;
     i15 = i3 + -24 | 0;
     HEAP32[i9 >> 2] = i15;
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i15);
     i3 = HEAP32[i9 >> 2] | 0;
    }
    i2 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc(i16, 0, 33713) | 0;
    HEAP32[i12 >> 2] = HEAP32[i2 >> 2];
    HEAP32[i12 + 4 >> 2] = HEAP32[i2 + 4 >> 2];
    HEAP32[i12 + 8 >> 2] = HEAP32[i2 + 8 >> 2];
    i3 = 0;
    while (1) {
     if ((i3 | 0) == 3) break;
     HEAP32[i2 + (i3 << 2) >> 2] = 0;
     i3 = i3 + 1 | 0;
    }
    i15 = HEAP8[i12 >> 0] | 0;
    i14 = (i15 & 1) == 0;
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj(i4 + -48 | 0, i14 ? i12 + 1 | 0 : HEAP32[i12 + 8 >> 2] | 0, i14 ? (i15 & 255) >>> 1 : HEAP32[i12 + 4 >> 2] | 0) | 0;
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i12);
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i16);
    break;
   }
   i2 = __ZN10__cxxabiv112_GLOBAL__N_121parse_unresolved_typeINS0_2DbEEEPKcS4_S4_RT_(i3, i13, i14) | 0;
   if ((i2 | 0) != (i3 | 0)) {
    i5 = __ZN10__cxxabiv112_GLOBAL__N_119parse_template_argsINS0_2DbEEEPKcS4_S4_RT_(i2, i13, i14) | 0;
    if ((i5 | 0) != (i2 | 0)) {
     i4 = i14 + 4 | 0;
     i1 = HEAP32[i4 >> 2] | 0;
     if (((i1 - (HEAP32[i14 >> 2] | 0) | 0) / 24 | 0) >>> 0 < 2) {
      i1 = i15;
      break;
     }
     __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv(i16, i1 + -24 | 0);
     i1 = HEAP32[i4 >> 2] | 0;
     i2 = i1 + -24 | 0;
     i3 = i1;
     while (1) {
      if ((i3 | 0) == (i2 | 0)) break;
      i12 = i3 + -24 | 0;
      HEAP32[i4 >> 2] = i12;
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i12);
      i3 = HEAP32[i4 >> 2] | 0;
     }
     i2 = HEAP8[i16 >> 0] | 0;
     i12 = (i2 & 1) == 0;
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj(i1 + -48 | 0, i12 ? i16 + 1 | 0 : HEAP32[i16 + 8 >> 2] | 0, i12 ? (i2 & 255) >>> 1 : HEAP32[i16 + 4 >> 2] | 0) | 0;
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i16);
     i2 = i5;
    }
    i1 = __ZN10__cxxabiv112_GLOBAL__N_126parse_base_unresolved_nameINS0_2DbEEEPKcS4_S4_RT_(i2, i13, i14) | 0;
    if ((i1 | 0) == (i2 | 0)) {
     i3 = i14 + 4 | 0;
     i1 = HEAP32[i3 >> 2] | 0;
     if ((HEAP32[i14 >> 2] | 0) == (i1 | 0)) {
      i1 = i15;
      break;
     }
     i2 = i1 + -24 | 0;
     while (1) {
      if ((i1 | 0) == (i2 | 0)) {
       i1 = i15;
       break L1;
      }
      i16 = i1 + -24 | 0;
      HEAP32[i3 >> 2] = i16;
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i16);
      i1 = HEAP32[i3 >> 2] | 0;
     }
    }
    i5 = i14 + 4 | 0;
    i2 = HEAP32[i5 >> 2] | 0;
    if (((i2 - (HEAP32[i14 >> 2] | 0) | 0) / 24 | 0) >>> 0 < 2) {
     i1 = i15;
     break;
    }
    __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv(i16, i2 + -24 | 0);
    i4 = HEAP32[i5 >> 2] | 0;
    i2 = i4 + -24 | 0;
    i3 = i4;
    while (1) {
     if ((i3 | 0) == (i2 | 0)) break;
     i15 = i3 + -24 | 0;
     HEAP32[i5 >> 2] = i15;
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i15);
     i3 = HEAP32[i5 >> 2] | 0;
    }
    i2 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc(i16, 0, 33713) | 0;
    HEAP32[i6 >> 2] = HEAP32[i2 >> 2];
    HEAP32[i6 + 4 >> 2] = HEAP32[i2 + 4 >> 2];
    HEAP32[i6 + 8 >> 2] = HEAP32[i2 + 8 >> 2];
    i3 = 0;
    while (1) {
     if ((i3 | 0) == 3) break;
     HEAP32[i2 + (i3 << 2) >> 2] = 0;
     i3 = i3 + 1 | 0;
    }
    i15 = HEAP8[i6 >> 0] | 0;
    i14 = (i15 & 1) == 0;
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj(i4 + -48 | 0, i14 ? i6 + 1 | 0 : HEAP32[i6 + 8 >> 2] | 0, i14 ? (i15 & 255) >>> 1 : HEAP32[i6 + 4 >> 2] | 0) | 0;
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i6);
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i16);
    break;
   }
   i1 = __ZN10__cxxabiv112_GLOBAL__N_115parse_simple_idINS0_2DbEEEPKcS4_S4_RT_(i3, i13, i14) | 0;
   if (!((i1 | 0) == (i3 | 0) | (i1 | 0) == (i13 | 0))) {
    if (i5) {
     i2 = i14 + 4 | 0;
     i3 = HEAP32[i2 >> 2] | 0;
     if ((HEAP32[i14 >> 2] | 0) == (i3 | 0)) {
      i1 = i15;
      break;
     }
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc(i3 + -24 | 0, 0, 33713) | 0;
     i8 = i2;
    } else i8 = i14 + 4 | 0;
    i5 = i9 + 8 | 0;
    i6 = i9 + 1 | 0;
    i7 = i9 + 4 | 0;
    while (1) {
     if ((HEAP8[i1 >> 0] | 0) == 69) break;
     i4 = __ZN10__cxxabiv112_GLOBAL__N_115parse_simple_idINS0_2DbEEEPKcS4_S4_RT_(i1, i13, i14) | 0;
     if ((i4 | 0) == (i1 | 0) | (i4 | 0) == (i13 | 0)) {
      i1 = i15;
      break L1;
     }
     i1 = HEAP32[i8 >> 2] | 0;
     if (((i1 - (HEAP32[i14 >> 2] | 0) | 0) / 24 | 0) >>> 0 < 2) {
      i1 = i15;
      break L1;
     }
     __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv(i16, i1 + -24 | 0);
     i3 = HEAP32[i8 >> 2] | 0;
     i1 = i3 + -24 | 0;
     i2 = i3;
     while (1) {
      if ((i2 | 0) == (i1 | 0)) break;
      i12 = i2 + -24 | 0;
      HEAP32[i8 >> 2] = i12;
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i12);
      i2 = HEAP32[i8 >> 2] | 0;
     }
     i1 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc(i16, 0, 33713) | 0;
     HEAP32[i9 >> 2] = HEAP32[i1 >> 2];
     HEAP32[i9 + 4 >> 2] = HEAP32[i1 + 4 >> 2];
     HEAP32[i9 + 8 >> 2] = HEAP32[i1 + 8 >> 2];
     i2 = 0;
     while (1) {
      if ((i2 | 0) == 3) break;
      HEAP32[i1 + (i2 << 2) >> 2] = 0;
      i2 = i2 + 1 | 0;
     }
     i1 = HEAP8[i9 >> 0] | 0;
     i12 = (i1 & 1) == 0;
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj(i3 + -48 | 0, i12 ? i6 : HEAP32[i5 >> 2] | 0, i12 ? (i1 & 255) >>> 1 : HEAP32[i7 >> 2] | 0) | 0;
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i9);
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i16);
     i1 = i4;
    }
    i12 = i1 + 1 | 0;
    i1 = __ZN10__cxxabiv112_GLOBAL__N_126parse_base_unresolved_nameINS0_2DbEEEPKcS4_S4_RT_(i12, i13, i14) | 0;
    if ((i1 | 0) == (i12 | 0)) {
     i1 = HEAP32[i8 >> 2] | 0;
     if ((HEAP32[i14 >> 2] | 0) == (i1 | 0)) {
      i1 = i15;
      break;
     }
     i2 = i1 + -24 | 0;
     while (1) {
      if ((i1 | 0) == (i2 | 0)) {
       i1 = i15;
       break L1;
      }
      i16 = i1 + -24 | 0;
      HEAP32[i8 >> 2] = i16;
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i16);
      i1 = HEAP32[i8 >> 2] | 0;
     }
    }
    i2 = HEAP32[i8 >> 2] | 0;
    if (((i2 - (HEAP32[i14 >> 2] | 0) | 0) / 24 | 0) >>> 0 >= 2) {
     __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv(i16, i2 + -24 | 0);
     i4 = HEAP32[i8 >> 2] | 0;
     i2 = i4 + -24 | 0;
     i3 = i4;
     while (1) {
      if ((i3 | 0) == (i2 | 0)) break;
      i15 = i3 + -24 | 0;
      HEAP32[i8 >> 2] = i15;
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i15);
      i3 = HEAP32[i8 >> 2] | 0;
     }
     i2 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc(i16, 0, 33713) | 0;
     HEAP32[i11 >> 2] = HEAP32[i2 >> 2];
     HEAP32[i11 + 4 >> 2] = HEAP32[i2 + 4 >> 2];
     HEAP32[i11 + 8 >> 2] = HEAP32[i2 + 8 >> 2];
     i3 = 0;
     while (1) {
      if ((i3 | 0) == 3) break;
      HEAP32[i2 + (i3 << 2) >> 2] = 0;
      i3 = i3 + 1 | 0;
     }
     i15 = HEAP8[i11 >> 0] | 0;
     i14 = (i15 & 1) == 0;
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj(i4 + -48 | 0, i14 ? i11 + 1 | 0 : HEAP32[i11 + 8 >> 2] | 0, i14 ? (i15 & 255) >>> 1 : HEAP32[i11 + 4 >> 2] | 0) | 0;
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i11);
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i16);
    } else i1 = i15;
   } else i1 = i15;
  } else i1 = i15;
 } else i1 = i15; while (0);
 STACKTOP = i17;
 return i1 | 0;
}

function __ZN10__cxxabiv112_GLOBAL__N_119parse_template_argsINS0_2DbEEEPKcS4_S4_RT_(i29, i28, i35) {
 i29 = i29 | 0;
 i28 = i28 | 0;
 i35 = i35 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, i18 = 0, i19 = 0, i20 = 0, i21 = 0, i22 = 0, i23 = 0, i24 = 0, i25 = 0, i26 = 0, i27 = 0, i30 = 0, i31 = 0, i32 = 0, i33 = 0, i34 = 0, i36 = 0, i37 = 0;
 i36 = STACKTOP;
 STACKTOP = STACKTOP + 80 | 0;
 i33 = i36 + 60 | 0;
 i34 = i36;
 i25 = i36 + 48 | 0;
 i31 = i36 + 24 | 0;
 i32 = i36 + 12 | 0;
 do if ((i28 - i29 | 0) > 1 ? (HEAP8[i29 >> 0] | 0) == 73 : 0) {
  i27 = i35 + 61 | 0;
  i24 = i35 + 36 | 0;
  L4 : do if (HEAP8[i27 >> 0] | 0) {
   i2 = HEAP32[i24 >> 2] | 0;
   i1 = HEAP32[i2 + -16 >> 2] | 0;
   i2 = i2 + -12 | 0;
   while (1) {
    i3 = HEAP32[i2 >> 2] | 0;
    if ((i3 | 0) == (i1 | 0)) break L4;
    i30 = i3 + -16 | 0;
    HEAP32[i2 >> 2] = i30;
    __ZNSt3__113__vector_baseIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEED2Ev(i30);
   }
  } while (0);
  __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj(i34, 34251, 1);
  i30 = i35 + 4 | 0;
  i14 = i35 + 12 | 0;
  i15 = i33 + 8 | 0;
  i16 = i33 + 8 | 0;
  i26 = i34 + 4 | 0;
  i17 = i25 + 8 | 0;
  i18 = i25 + 1 | 0;
  i19 = i25 + 4 | 0;
  i23 = i35 + 32 | 0;
  i20 = i35 + 40 | 0;
  i21 = i35 + 44 | 0;
  i22 = i33 + 8 | 0;
  i1 = i29 + 1 | 0;
  L10 : while (1) {
   if ((HEAP8[i1 >> 0] | 0) == 69) {
    i2 = 48;
    break;
   }
   do if (HEAP8[i27 >> 0] | 0) {
    i8 = HEAP32[i14 >> 2] | 0;
    i2 = HEAP32[i24 >> 2] | 0;
    i3 = HEAP32[i20 >> 2] | 0;
    if (i2 >>> 0 < i3 >>> 0) {
     HEAP32[i2 >> 2] = 0;
     HEAP32[i2 + 4 >> 2] = 0;
     HEAP32[i2 + 8 >> 2] = 0;
     HEAP32[i2 + 12 >> 2] = i8;
     HEAP32[i24 >> 2] = (HEAP32[i24 >> 2] | 0) + 16;
     break;
    }
    i4 = HEAP32[i23 >> 2] | 0;
    i13 = i2 - i4 | 0;
    i7 = i13 >> 4;
    i5 = i7 + 1 | 0;
    if ((i13 | 0) < -16) {
     i2 = 13;
     break L10;
    }
    i2 = i3 - i4 | 0;
    if (i2 >> 4 >>> 0 < 1073741823) {
     i2 = i2 >> 3;
     i2 = i2 >>> 0 < i5 >>> 0 ? i5 : i2;
    } else i2 = 2147483647;
    __ZNSt3__114__split_bufferINS_6vectorINS1_IN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEENS5_IS7_Lj4096EEEEERNS5_IS9_Lj4096EEEEC2EjjSB_(i33, i2, i7, i21);
    i13 = HEAP32[i22 >> 2] | 0;
    HEAP32[i13 >> 2] = 0;
    HEAP32[i13 + 4 >> 2] = 0;
    HEAP32[i13 + 8 >> 2] = 0;
    HEAP32[i13 + 12 >> 2] = i8;
    HEAP32[i22 >> 2] = i13 + 16;
    __ZNSt3__16vectorINS0_INS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEEENS4_IS8_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS8_RS9_EE(i23, i33);
    __ZNSt3__114__split_bufferINS_6vectorINS1_IN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEENS5_IS7_Lj4096EEEEERNS5_IS9_Lj4096EEEED2Ev(i33);
   } while (0);
   i12 = ((HEAP32[i30 >> 2] | 0) - (HEAP32[i35 >> 2] | 0) | 0) / 24 | 0;
   i13 = __ZN10__cxxabiv112_GLOBAL__N_118parse_template_argINS0_2DbEEEPKcS4_S4_RT_(i1, i28, i35) | 0;
   i3 = ((HEAP32[i30 >> 2] | 0) - (HEAP32[i35 >> 2] | 0) | 0) / 24 | 0;
   L23 : do if (HEAP8[i27 >> 0] | 0) {
    i4 = HEAP32[i24 >> 2] | 0;
    i2 = i4 + -16 | 0;
    while (1) {
     if ((i4 | 0) == (i2 | 0)) break L23;
     i11 = i4 + -16 | 0;
     HEAP32[i24 >> 2] = i11;
     __ZNSt3__113__vector_baseINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEENS5_IS7_Lj4096EEEED2Ev(i11);
     i4 = HEAP32[i24 >> 2] | 0;
    }
   } while (0);
   if ((i13 | 0) == (i1 | 0) | (i13 | 0) == (i28 | 0)) {
    i2 = 62;
    break;
   }
   L30 : do if (!(HEAP8[i27 >> 0] | 0)) i1 = i12; else {
    i8 = HEAP32[i24 >> 2] | 0;
    i1 = i8 + -16 | 0;
    i9 = HEAP32[i14 >> 2] | 0;
    i2 = i8 + -12 | 0;
    i4 = HEAP32[i2 >> 2] | 0;
    i11 = HEAP32[i8 + -8 >> 2] | 0;
    i7 = i11;
    if (i4 >>> 0 < i11 >>> 0) {
     HEAP32[i4 >> 2] = 0;
     HEAP32[i4 + 4 >> 2] = 0;
     HEAP32[i4 + 8 >> 2] = 0;
     HEAP32[i4 + 12 >> 2] = i9;
     HEAP32[i2 >> 2] = (HEAP32[i2 >> 2] | 0) + 16;
     i11 = i12;
    } else {
     i2 = HEAP32[i1 >> 2] | 0;
     i11 = i4 - i2 | 0;
     i5 = i11 >> 4;
     i4 = i5 + 1 | 0;
     if ((i11 | 0) < -16) {
      i2 = 26;
      break L10;
     }
     i2 = i7 - i2 | 0;
     if (i2 >> 4 >>> 0 < 1073741823) {
      i2 = i2 >> 3;
      i2 = i2 >>> 0 < i4 >>> 0 ? i4 : i2;
     } else i2 = 2147483647;
     __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEEC2EjjS9_(i33, i2, i5, i8 + -4 | 0);
     i11 = HEAP32[i15 >> 2] | 0;
     HEAP32[i11 >> 2] = 0;
     HEAP32[i11 + 4 >> 2] = 0;
     HEAP32[i11 + 8 >> 2] = 0;
     HEAP32[i11 + 12 >> 2] = i9;
     HEAP32[i15 >> 2] = i11 + 16;
     __ZNSt3__16vectorINS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS7_EE(i1, i33);
     __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEED2Ev(i33);
     i11 = i12;
    }
    while (1) {
     if (i11 >>> 0 >= i3 >>> 0) {
      i1 = i12;
      break L30;
     }
     i8 = HEAP32[(HEAP32[i24 >> 2] | 0) + -12 >> 2] | 0;
     i1 = i8 + -16 | 0;
     i9 = HEAP32[i35 >> 2] | 0;
     i10 = i9 + (i11 * 24 | 0) | 0;
     i2 = i8 + -12 | 0;
     i4 = HEAP32[i2 >> 2] | 0;
     i7 = HEAP32[i8 + -8 >> 2] | 0;
     i5 = i7;
     if ((i4 | 0) == (i7 | 0)) {
      i2 = HEAP32[i1 >> 2] | 0;
      i37 = i4 - i2 | 0;
      i7 = (i37 | 0) / 24 | 0;
      i4 = i7 + 1 | 0;
      if ((i37 | 0) < -24) {
       i2 = 34;
       break L10;
      }
      i2 = (i5 - i2 | 0) / 24 | 0;
      if (i2 >>> 0 < 1073741823) {
       i2 = i2 << 1;
       i2 = i2 >>> 0 < i4 >>> 0 ? i4 : i2;
      } else i2 = 2147483647;
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_(i33, i2, i7, i8 + -4 | 0);
      i37 = HEAP32[i16 >> 2] | 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_(i37, i10);
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_(i37 + 12 | 0, i9 + (i11 * 24 | 0) + 12 | 0);
      HEAP32[i16 >> 2] = i37 + 24;
      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i1, i33);
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev(i33);
     } else {
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_(i4, i10);
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_(i4 + 12 | 0, i9 + (i11 * 24 | 0) + 12 | 0);
      HEAP32[i2 >> 2] = (HEAP32[i2 >> 2] | 0) + 24;
     }
     i11 = i11 + 1 | 0;
    }
   } while (0);
   while (1) {
    if (i1 >>> 0 >= i3 >>> 0) break;
    i37 = HEAP8[i34 >> 0] | 0;
    if (((i37 & 1) == 0 ? (i37 & 255) >>> 1 : HEAP32[i26 >> 2] | 0) >>> 0 > 1) __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc(i34, 34253) | 0;
    __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv(i25, (HEAP32[i35 >> 2] | 0) + (i1 * 24 | 0) | 0);
    i37 = HEAP8[i25 >> 0] | 0;
    i11 = (i37 & 1) == 0;
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj(i34, i11 ? i18 : HEAP32[i17 >> 2] | 0, i11 ? (i37 & 255) >>> 1 : HEAP32[i19 >> 2] | 0) | 0;
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i25);
    i1 = i1 + 1 | 0;
   }
   while (1) {
    if ((i3 | 0) == (i12 | 0)) {
     i1 = i13;
     continue L10;
    }
    i2 = HEAP32[i30 >> 2] | 0;
    i1 = i2 + -24 | 0;
    while (1) {
     if ((i2 | 0) == (i1 | 0)) break;
     i37 = i2 + -24 | 0;
     HEAP32[i30 >> 2] = i37;
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i37);
     i2 = HEAP32[i30 >> 2] | 0;
    }
    i3 = i3 + -1 | 0;
   }
  }
  if ((i2 | 0) == 13) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i23); else if ((i2 | 0) == 26) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i1); else if ((i2 | 0) == 34) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i1); else if ((i2 | 0) == 48) {
   i6 = i1 + 1 | 0;
   i37 = HEAP8[i34 >> 0] | 0;
   i29 = (i37 & 1) == 0;
   if ((HEAP8[(i29 ? i34 + 1 | 0 : HEAP32[i34 + 8 >> 2] | 0) + (i29 ? (i37 & 255) >>> 1 : HEAP32[i26 >> 2] | 0) + -1 >> 0] | 0) == 62) __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc(i34, 34256) | 0; else __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc(i34, 33666) | 0;
   HEAP32[i32 >> 2] = HEAP32[i34 >> 2];
   HEAP32[i32 + 4 >> 2] = HEAP32[i34 + 4 >> 2];
   HEAP32[i32 + 8 >> 2] = HEAP32[i34 + 8 >> 2];
   i1 = 0;
   while (1) {
    if ((i1 | 0) == 3) break;
    HEAP32[i34 + (i1 << 2) >> 2] = 0;
    i1 = i1 + 1 | 0;
   }
   __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE(i31, i32);
   i1 = HEAP32[i30 >> 2] | 0;
   i37 = HEAP32[i35 + 8 >> 2] | 0;
   i4 = i37;
   if (i1 >>> 0 < i37 >>> 0) {
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i1, i31);
    HEAP32[i30 >> 2] = (HEAP32[i30 >> 2] | 0) + 24;
   } else {
    i2 = HEAP32[i35 >> 2] | 0;
    i37 = i1 - i2 | 0;
    i5 = (i37 | 0) / 24 | 0;
    i3 = i5 + 1 | 0;
    if ((i37 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i35);
    i1 = (i4 - i2 | 0) / 24 | 0;
    if (i1 >>> 0 < 1073741823) {
     i1 = i1 << 1;
     i1 = i1 >>> 0 < i3 >>> 0 ? i3 : i1;
    } else i1 = 2147483647;
    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_(i33, i1, i5, i35 + 12 | 0);
    i37 = i33 + 8 | 0;
    i30 = HEAP32[i37 >> 2] | 0;
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i30, i31);
    HEAP32[i37 >> 2] = i30 + 24;
    __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i35, i33);
    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev(i33);
   }
   __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i31);
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i32);
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i34);
   break;
  } else if ((i2 | 0) == 62) {
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i34);
   i6 = i29;
   break;
  }
 } else i6 = i29; while (0);
 STACKTOP = i36;
 return i6 | 0;
}

function __ZN4wasm10PostWalkerIZNS_13ReorderLocals13visitFunctionEPNS_8FunctionEE9ReIndexerNS_7VisitorIS4_vEEE4scanEPS4_PPNS_10ExpressionE(i5, i1) {
 i5 = i5 | 0;
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i4 = 0;
 i4 = HEAP32[i1 >> 2] | 0;
 L1 : do switch (HEAP32[i4 >> 2] | 0) {
 case 0:
  {
   _abort();
   break;
  }
 case 1:
  {
   __ZN4wasm6WalkerIZNS_13ReorderLocals13visitFunctionEPNS_8FunctionEE9ReIndexerNS_7VisitorIS4_vEEE8pushTaskEPFvPS4_PPNS_10ExpressionEESB_(i5, 279, i1);
   i3 = __ZN4wasm10Expression4castINS_5BlockEEEPT_v(i4) | 0;
   i1 = i3 + 12 | 0;
   i3 = (HEAP32[i3 + 16 >> 2] | 0) - (HEAP32[i1 >> 2] | 0) >> 2;
   while (1) {
    i2 = i3 + -1 | 0;
    if ((i3 | 0) <= 0) break L1;
    __ZN4wasm6WalkerIZNS_13ReorderLocals13visitFunctionEPNS_8FunctionEE9ReIndexerNS_7VisitorIS4_vEEE8pushTaskEPFvPS4_PPNS_10ExpressionEESB_(i5, 278, (HEAP32[i1 >> 2] | 0) + (i2 << 2) | 0);
    i3 = i2;
   }
  }
 case 2:
  {
   __ZN4wasm6WalkerIZNS_13ReorderLocals13visitFunctionEPNS_8FunctionEE9ReIndexerNS_7VisitorIS4_vEEE8pushTaskEPFvPS4_PPNS_10ExpressionEESB_(i5, 280, i1);
   __ZN4wasm6WalkerIZNS_13ReorderLocals13visitFunctionEPNS_8FunctionEE9ReIndexerNS_7VisitorIS4_vEEE13maybePushTaskEPFvPS4_PPNS_10ExpressionEESB_(i5, 278, (__ZN4wasm10Expression4castINS_2IfEEEPT_v(i4) | 0) + 16 | 0);
   __ZN4wasm6WalkerIZNS_13ReorderLocals13visitFunctionEPNS_8FunctionEE9ReIndexerNS_7VisitorIS4_vEEE8pushTaskEPFvPS4_PPNS_10ExpressionEESB_(i5, 278, (__ZN4wasm10Expression4castINS_2IfEEEPT_v(i4) | 0) + 12 | 0);
   __ZN4wasm6WalkerIZNS_13ReorderLocals13visitFunctionEPNS_8FunctionEE9ReIndexerNS_7VisitorIS4_vEEE8pushTaskEPFvPS4_PPNS_10ExpressionEESB_(i5, 278, (__ZN4wasm10Expression4castINS_2IfEEEPT_v(i4) | 0) + 8 | 0);
   break;
  }
 case 3:
  {
   __ZN4wasm6WalkerIZNS_13ReorderLocals13visitFunctionEPNS_8FunctionEE9ReIndexerNS_7VisitorIS4_vEEE8pushTaskEPFvPS4_PPNS_10ExpressionEESB_(i5, 281, i1);
   __ZN4wasm6WalkerIZNS_13ReorderLocals13visitFunctionEPNS_8FunctionEE9ReIndexerNS_7VisitorIS4_vEEE8pushTaskEPFvPS4_PPNS_10ExpressionEESB_(i5, 278, (__ZN4wasm10Expression4castINS_4LoopEEEPT_v(i4) | 0) + 16 | 0);
   break;
  }
 case 4:
  {
   __ZN4wasm6WalkerIZNS_13ReorderLocals13visitFunctionEPNS_8FunctionEE9ReIndexerNS_7VisitorIS4_vEEE8pushTaskEPFvPS4_PPNS_10ExpressionEESB_(i5, 282, i1);
   __ZN4wasm6WalkerIZNS_13ReorderLocals13visitFunctionEPNS_8FunctionEE9ReIndexerNS_7VisitorIS4_vEEE13maybePushTaskEPFvPS4_PPNS_10ExpressionEESB_(i5, 278, (__ZN4wasm10Expression4castINS_5BreakEEEPT_v(i4) | 0) + 16 | 0);
   __ZN4wasm6WalkerIZNS_13ReorderLocals13visitFunctionEPNS_8FunctionEE9ReIndexerNS_7VisitorIS4_vEEE13maybePushTaskEPFvPS4_PPNS_10ExpressionEESB_(i5, 278, (__ZN4wasm10Expression4castINS_5BreakEEEPT_v(i4) | 0) + 12 | 0);
   break;
  }
 case 5:
  {
   __ZN4wasm6WalkerIZNS_13ReorderLocals13visitFunctionEPNS_8FunctionEE9ReIndexerNS_7VisitorIS4_vEEE8pushTaskEPFvPS4_PPNS_10ExpressionEESB_(i5, 283, i1);
   __ZN4wasm6WalkerIZNS_13ReorderLocals13visitFunctionEPNS_8FunctionEE9ReIndexerNS_7VisitorIS4_vEEE13maybePushTaskEPFvPS4_PPNS_10ExpressionEESB_(i5, 278, (__ZN4wasm10Expression4castINS_6SwitchEEEPT_v(i4) | 0) + 28 | 0);
   __ZN4wasm6WalkerIZNS_13ReorderLocals13visitFunctionEPNS_8FunctionEE9ReIndexerNS_7VisitorIS4_vEEE8pushTaskEPFvPS4_PPNS_10ExpressionEESB_(i5, 278, (__ZN4wasm10Expression4castINS_6SwitchEEEPT_v(i4) | 0) + 24 | 0);
   break;
  }
 case 6:
  {
   __ZN4wasm6WalkerIZNS_13ReorderLocals13visitFunctionEPNS_8FunctionEE9ReIndexerNS_7VisitorIS4_vEEE8pushTaskEPFvPS4_PPNS_10ExpressionEESB_(i5, 284, i1);
   i3 = __ZN4wasm10Expression4castINS_4CallEEEPT_v(i4) | 0;
   i1 = i3 + 8 | 0;
   i3 = (HEAP32[i3 + 12 >> 2] | 0) - (HEAP32[i1 >> 2] | 0) >> 2;
   while (1) {
    i2 = i3 + -1 | 0;
    if ((i3 | 0) <= 0) break L1;
    __ZN4wasm6WalkerIZNS_13ReorderLocals13visitFunctionEPNS_8FunctionEE9ReIndexerNS_7VisitorIS4_vEEE8pushTaskEPFvPS4_PPNS_10ExpressionEESB_(i5, 278, (HEAP32[i1 >> 2] | 0) + (i2 << 2) | 0);
    i3 = i2;
   }
  }
 case 7:
  {
   __ZN4wasm6WalkerIZNS_13ReorderLocals13visitFunctionEPNS_8FunctionEE9ReIndexerNS_7VisitorIS4_vEEE8pushTaskEPFvPS4_PPNS_10ExpressionEESB_(i5, 285, i1);
   i3 = __ZN4wasm10Expression4castINS_10CallImportEEEPT_v(i4) | 0;
   i1 = i3 + 8 | 0;
   i3 = (HEAP32[i3 + 12 >> 2] | 0) - (HEAP32[i1 >> 2] | 0) >> 2;
   while (1) {
    i2 = i3 + -1 | 0;
    if ((i3 | 0) <= 0) break L1;
    __ZN4wasm6WalkerIZNS_13ReorderLocals13visitFunctionEPNS_8FunctionEE9ReIndexerNS_7VisitorIS4_vEEE8pushTaskEPFvPS4_PPNS_10ExpressionEESB_(i5, 278, (HEAP32[i1 >> 2] | 0) + (i2 << 2) | 0);
    i3 = i2;
   }
  }
 case 8:
  {
   __ZN4wasm6WalkerIZNS_13ReorderLocals13visitFunctionEPNS_8FunctionEE9ReIndexerNS_7VisitorIS4_vEEE8pushTaskEPFvPS4_PPNS_10ExpressionEESB_(i5, 286, i1);
   i3 = __ZN4wasm10Expression4castINS_12CallIndirectEEEPT_v(i4) | 0;
   i1 = i3 + 8 | 0;
   i3 = (HEAP32[i3 + 12 >> 2] | 0) - (HEAP32[i1 >> 2] | 0) >> 2;
   while (1) {
    i2 = i3 + -1 | 0;
    if ((i3 | 0) <= 0) break;
    __ZN4wasm6WalkerIZNS_13ReorderLocals13visitFunctionEPNS_8FunctionEE9ReIndexerNS_7VisitorIS4_vEEE8pushTaskEPFvPS4_PPNS_10ExpressionEESB_(i5, 278, (HEAP32[i1 >> 2] | 0) + (i2 << 2) | 0);
    i3 = i2;
   }
   __ZN4wasm6WalkerIZNS_13ReorderLocals13visitFunctionEPNS_8FunctionEE9ReIndexerNS_7VisitorIS4_vEEE8pushTaskEPFvPS4_PPNS_10ExpressionEESB_(i5, 278, (__ZN4wasm10Expression4castINS_12CallIndirectEEEPT_v(i4) | 0) + 24 | 0);
   break;
  }
 case 9:
  {
   __ZN4wasm6WalkerIZNS_13ReorderLocals13visitFunctionEPNS_8FunctionEE9ReIndexerNS_7VisitorIS4_vEEE8pushTaskEPFvPS4_PPNS_10ExpressionEESB_(i5, 287, i1);
   break;
  }
 case 10:
  {
   __ZN4wasm6WalkerIZNS_13ReorderLocals13visitFunctionEPNS_8FunctionEE9ReIndexerNS_7VisitorIS4_vEEE8pushTaskEPFvPS4_PPNS_10ExpressionEESB_(i5, 288, i1);
   __ZN4wasm6WalkerIZNS_13ReorderLocals13visitFunctionEPNS_8FunctionEE9ReIndexerNS_7VisitorIS4_vEEE8pushTaskEPFvPS4_PPNS_10ExpressionEESB_(i5, 278, (__ZN4wasm10Expression4castINS_8SetLocalEEEPT_v(i4) | 0) + 12 | 0);
   break;
  }
 case 11:
  {
   __ZN4wasm6WalkerIZNS_13ReorderLocals13visitFunctionEPNS_8FunctionEE9ReIndexerNS_7VisitorIS4_vEEE8pushTaskEPFvPS4_PPNS_10ExpressionEESB_(i5, 289, i1);
   __ZN4wasm6WalkerIZNS_13ReorderLocals13visitFunctionEPNS_8FunctionEE9ReIndexerNS_7VisitorIS4_vEEE8pushTaskEPFvPS4_PPNS_10ExpressionEESB_(i5, 278, (__ZN4wasm10Expression4castINS_4LoadEEEPT_v(i4) | 0) + 24 | 0);
   break;
  }
 case 12:
  {
   __ZN4wasm6WalkerIZNS_13ReorderLocals13visitFunctionEPNS_8FunctionEE9ReIndexerNS_7VisitorIS4_vEEE8pushTaskEPFvPS4_PPNS_10ExpressionEESB_(i5, 290, i1);
   __ZN4wasm6WalkerIZNS_13ReorderLocals13visitFunctionEPNS_8FunctionEE9ReIndexerNS_7VisitorIS4_vEEE8pushTaskEPFvPS4_PPNS_10ExpressionEESB_(i5, 278, (__ZN4wasm10Expression4castINS_5StoreEEEPT_v(i4) | 0) + 24 | 0);
   __ZN4wasm6WalkerIZNS_13ReorderLocals13visitFunctionEPNS_8FunctionEE9ReIndexerNS_7VisitorIS4_vEEE8pushTaskEPFvPS4_PPNS_10ExpressionEESB_(i5, 278, (__ZN4wasm10Expression4castINS_5StoreEEEPT_v(i4) | 0) + 20 | 0);
   break;
  }
 case 13:
  {
   __ZN4wasm6WalkerIZNS_13ReorderLocals13visitFunctionEPNS_8FunctionEE9ReIndexerNS_7VisitorIS4_vEEE8pushTaskEPFvPS4_PPNS_10ExpressionEESB_(i5, 291, i1);
   break;
  }
 case 14:
  {
   __ZN4wasm6WalkerIZNS_13ReorderLocals13visitFunctionEPNS_8FunctionEE9ReIndexerNS_7VisitorIS4_vEEE8pushTaskEPFvPS4_PPNS_10ExpressionEESB_(i5, 292, i1);
   __ZN4wasm6WalkerIZNS_13ReorderLocals13visitFunctionEPNS_8FunctionEE9ReIndexerNS_7VisitorIS4_vEEE8pushTaskEPFvPS4_PPNS_10ExpressionEESB_(i5, 278, (__ZN4wasm10Expression4castINS_5UnaryEEEPT_v(i4) | 0) + 12 | 0);
   break;
  }
 case 15:
  {
   __ZN4wasm6WalkerIZNS_13ReorderLocals13visitFunctionEPNS_8FunctionEE9ReIndexerNS_7VisitorIS4_vEEE8pushTaskEPFvPS4_PPNS_10ExpressionEESB_(i5, 293, i1);
   __ZN4wasm6WalkerIZNS_13ReorderLocals13visitFunctionEPNS_8FunctionEE9ReIndexerNS_7VisitorIS4_vEEE8pushTaskEPFvPS4_PPNS_10ExpressionEESB_(i5, 278, (__ZN4wasm10Expression4castINS_6BinaryEEEPT_v(i4) | 0) + 16 | 0);
   __ZN4wasm6WalkerIZNS_13ReorderLocals13visitFunctionEPNS_8FunctionEE9ReIndexerNS_7VisitorIS4_vEEE8pushTaskEPFvPS4_PPNS_10ExpressionEESB_(i5, 278, (__ZN4wasm10Expression4castINS_6BinaryEEEPT_v(i4) | 0) + 12 | 0);
   break;
  }
 case 16:
  {
   __ZN4wasm6WalkerIZNS_13ReorderLocals13visitFunctionEPNS_8FunctionEE9ReIndexerNS_7VisitorIS4_vEEE8pushTaskEPFvPS4_PPNS_10ExpressionEESB_(i5, 294, i1);
   __ZN4wasm6WalkerIZNS_13ReorderLocals13visitFunctionEPNS_8FunctionEE9ReIndexerNS_7VisitorIS4_vEEE8pushTaskEPFvPS4_PPNS_10ExpressionEESB_(i5, 278, (__ZN4wasm10Expression4castINS_6SelectEEEPT_v(i4) | 0) + 16 | 0);
   __ZN4wasm6WalkerIZNS_13ReorderLocals13visitFunctionEPNS_8FunctionEE9ReIndexerNS_7VisitorIS4_vEEE8pushTaskEPFvPS4_PPNS_10ExpressionEESB_(i5, 278, (__ZN4wasm10Expression4castINS_6SelectEEEPT_v(i4) | 0) + 12 | 0);
   __ZN4wasm6WalkerIZNS_13ReorderLocals13visitFunctionEPNS_8FunctionEE9ReIndexerNS_7VisitorIS4_vEEE8pushTaskEPFvPS4_PPNS_10ExpressionEESB_(i5, 278, (__ZN4wasm10Expression4castINS_6SelectEEEPT_v(i4) | 0) + 8 | 0);
   break;
  }
 case 17:
  {
   __ZN4wasm6WalkerIZNS_13ReorderLocals13visitFunctionEPNS_8FunctionEE9ReIndexerNS_7VisitorIS4_vEEE8pushTaskEPFvPS4_PPNS_10ExpressionEESB_(i5, 295, i1);
   __ZN4wasm6WalkerIZNS_13ReorderLocals13visitFunctionEPNS_8FunctionEE9ReIndexerNS_7VisitorIS4_vEEE13maybePushTaskEPFvPS4_PPNS_10ExpressionEESB_(i5, 278, (__ZN4wasm10Expression4castINS_6ReturnEEEPT_v(i4) | 0) + 8 | 0);
   break;
  }
 case 18:
  {
   __ZN4wasm6WalkerIZNS_13ReorderLocals13visitFunctionEPNS_8FunctionEE9ReIndexerNS_7VisitorIS4_vEEE8pushTaskEPFvPS4_PPNS_10ExpressionEESB_(i5, 296, i1);
   i3 = __ZN4wasm10Expression4castINS_4HostEEEPT_v(i4) | 0;
   i1 = i3 + 16 | 0;
   i3 = (HEAP32[i3 + 20 >> 2] | 0) - (HEAP32[i1 >> 2] | 0) >> 2;
   while (1) {
    i2 = i3 + -1 | 0;
    if ((i3 | 0) <= 0) break L1;
    __ZN4wasm6WalkerIZNS_13ReorderLocals13visitFunctionEPNS_8FunctionEE9ReIndexerNS_7VisitorIS4_vEEE8pushTaskEPFvPS4_PPNS_10ExpressionEESB_(i5, 278, (HEAP32[i1 >> 2] | 0) + (i2 << 2) | 0);
    i3 = i2;
   }
  }
 case 19:
  {
   __ZN4wasm6WalkerIZNS_13ReorderLocals13visitFunctionEPNS_8FunctionEE9ReIndexerNS_7VisitorIS4_vEEE8pushTaskEPFvPS4_PPNS_10ExpressionEESB_(i5, 297, i1);
   break;
  }
 case 20:
  {
   __ZN4wasm6WalkerIZNS_13ReorderLocals13visitFunctionEPNS_8FunctionEE9ReIndexerNS_7VisitorIS4_vEEE8pushTaskEPFvPS4_PPNS_10ExpressionEESB_(i5, 298, i1);
   break;
  }
 default:
  {}
 } while (0);
 return;
}

function __ZNKSt3__18time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_getES4_S4_RNS_8ios_baseERjP2tmcc(i41, i35, i36, i39, i37, i40, i38, i1) {
 i41 = i41 | 0;
 i35 = i35 | 0;
 i36 = i36 | 0;
 i39 = i39 | 0;
 i37 = i37 | 0;
 i40 = i40 | 0;
 i38 = i38 | 0;
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, i18 = 0, i19 = 0, i20 = 0, i21 = 0, i22 = 0, i23 = 0, i24 = 0, i25 = 0, i26 = 0, i27 = 0, i28 = 0, i29 = 0, i30 = 0, i31 = 0, i32 = 0, i33 = 0, i34 = 0, i42 = 0, i43 = 0, i44 = 0;
 i42 = STACKTOP;
 STACKTOP = STACKTOP + 144 | 0;
 i2 = i42 + 132 | 0;
 i1 = i42 + 116 | 0;
 i28 = i42 + 128 | 0;
 i13 = i42 + 124 | 0;
 i24 = i42 + 120 | 0;
 i29 = i42 + 112 | 0;
 i30 = i42 + 108 | 0;
 i31 = i42 + 104 | 0;
 i32 = i42 + 100 | 0;
 i33 = i42 + 96 | 0;
 i34 = i42 + 92 | 0;
 i3 = i42 + 88 | 0;
 i4 = i42 + 84 | 0;
 i5 = i42 + 80 | 0;
 i6 = i42 + 76 | 0;
 i7 = i42 + 72 | 0;
 i8 = i42 + 68 | 0;
 i9 = i42 + 64 | 0;
 i10 = i42 + 60 | 0;
 i11 = i42 + 56 | 0;
 i12 = i42 + 52 | 0;
 i14 = i42 + 48 | 0;
 i15 = i42 + 44 | 0;
 i16 = i42 + 40 | 0;
 i17 = i42 + 36 | 0;
 i18 = i42 + 32 | 0;
 i19 = i42 + 28 | 0;
 i20 = i42 + 24 | 0;
 i21 = i42 + 20 | 0;
 i22 = i42 + 16 | 0;
 i23 = i42 + 12 | 0;
 i25 = i42 + 8 | 0;
 i26 = i42 + 4 | 0;
 i27 = i42;
 HEAP32[i37 >> 2] = 0;
 i44 = __ZNKSt3__18ios_base6getlocEv(i39) | 0;
 HEAP32[i28 >> 2] = i44;
 i28 = __ZNKSt3__16locale9use_facetERNS0_2idE(i28, 38408) | 0;
 __ZNSt3__114__shared_count16__release_sharedEv(i44) | 0;
 do switch (i38 << 24 >> 24 | 0) {
 case 65:
 case 97:
  {
   HEAP32[i13 >> 2] = HEAP32[i36 >> 2];
   HEAP32[i2 >> 2] = HEAP32[i13 >> 2];
   __ZNKSt3__18time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE17__get_weekdaynameERiRS4_S4_RjRKNS_5ctypeIwEE(i41, i40 + 24 | 0, i35, i2, i37, i28);
   i43 = 26;
   break;
  }
 case 104:
 case 66:
 case 98:
  {
   HEAP32[i24 >> 2] = HEAP32[i36 >> 2];
   HEAP32[i2 >> 2] = HEAP32[i24 >> 2];
   __ZNKSt3__18time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE15__get_monthnameERiRS4_S4_RjRKNS_5ctypeIwEE(i41, i40 + 16 | 0, i35, i2, i37, i28);
   i43 = 26;
   break;
  }
 case 99:
  {
   i44 = i41 + 8 | 0;
   i44 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i44 >> 2] | 0) + 12 >> 2] & 127](i44) | 0;
   HEAP32[i29 >> 2] = HEAP32[i35 >> 2];
   HEAP32[i30 >> 2] = HEAP32[i36 >> 2];
   i38 = HEAP8[i44 >> 0] | 0;
   i36 = (i38 & 1) == 0;
   i43 = i44 + 4 | 0;
   i44 = i36 ? i43 : HEAP32[i44 + 8 >> 2] | 0;
   i43 = i44 + ((i36 ? (i38 & 255) >>> 1 : HEAP32[i43 >> 2] | 0) << 2) | 0;
   HEAP32[i1 >> 2] = HEAP32[i29 >> 2];
   HEAP32[i2 >> 2] = HEAP32[i30 >> 2];
   i43 = __ZNKSt3__18time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE3getES4_S4_RNS_8ios_baseERjP2tmPKwSC_(i41, i1, i2, i39, i37, i40, i44, i43) | 0;
   HEAP32[i35 >> 2] = i43;
   i43 = 26;
   break;
  }
 case 101:
 case 100:
  {
   HEAP32[i31 >> 2] = HEAP32[i36 >> 2];
   HEAP32[i2 >> 2] = HEAP32[i31 >> 2];
   __ZNKSt3__18time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE9__get_dayERiRS4_S4_RjRKNS_5ctypeIwEE(i41, i40 + 12 | 0, i35, i2, i37, i28);
   i43 = 26;
   break;
  }
 case 68:
  {
   HEAP32[i32 >> 2] = HEAP32[i35 >> 2];
   HEAP32[i33 >> 2] = HEAP32[i36 >> 2];
   HEAP32[i1 >> 2] = HEAP32[i32 >> 2];
   HEAP32[i2 >> 2] = HEAP32[i33 >> 2];
   i43 = __ZNKSt3__18time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE3getES4_S4_RNS_8ios_baseERjP2tmPKwSC_(i41, i1, i2, i39, i37, i40, 10060, 10092) | 0;
   HEAP32[i35 >> 2] = i43;
   i43 = 26;
   break;
  }
 case 70:
  {
   HEAP32[i34 >> 2] = HEAP32[i35 >> 2];
   HEAP32[i3 >> 2] = HEAP32[i36 >> 2];
   HEAP32[i1 >> 2] = HEAP32[i34 >> 2];
   HEAP32[i2 >> 2] = HEAP32[i3 >> 2];
   i43 = __ZNKSt3__18time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE3getES4_S4_RNS_8ios_baseERjP2tmPKwSC_(i41, i1, i2, i39, i37, i40, 10092, 10124) | 0;
   HEAP32[i35 >> 2] = i43;
   i43 = 26;
   break;
  }
 case 72:
  {
   HEAP32[i4 >> 2] = HEAP32[i36 >> 2];
   HEAP32[i2 >> 2] = HEAP32[i4 >> 2];
   __ZNKSt3__18time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE10__get_hourERiRS4_S4_RjRKNS_5ctypeIwEE(i41, i40 + 8 | 0, i35, i2, i37, i28);
   i43 = 26;
   break;
  }
 case 73:
  {
   HEAP32[i5 >> 2] = HEAP32[i36 >> 2];
   HEAP32[i2 >> 2] = HEAP32[i5 >> 2];
   __ZNKSt3__18time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE13__get_12_hourERiRS4_S4_RjRKNS_5ctypeIwEE(i41, i40 + 8 | 0, i35, i2, i37, i28);
   i43 = 26;
   break;
  }
 case 106:
  {
   HEAP32[i6 >> 2] = HEAP32[i36 >> 2];
   HEAP32[i2 >> 2] = HEAP32[i6 >> 2];
   __ZNKSt3__18time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE18__get_day_year_numERiRS4_S4_RjRKNS_5ctypeIwEE(i41, i40 + 28 | 0, i35, i2, i37, i28);
   i43 = 26;
   break;
  }
 case 109:
  {
   HEAP32[i7 >> 2] = HEAP32[i36 >> 2];
   HEAP32[i2 >> 2] = HEAP32[i7 >> 2];
   __ZNKSt3__18time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE11__get_monthERiRS4_S4_RjRKNS_5ctypeIwEE(i41, i40 + 16 | 0, i35, i2, i37, i28);
   i43 = 26;
   break;
  }
 case 77:
  {
   HEAP32[i8 >> 2] = HEAP32[i36 >> 2];
   HEAP32[i2 >> 2] = HEAP32[i8 >> 2];
   __ZNKSt3__18time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE12__get_minuteERiRS4_S4_RjRKNS_5ctypeIwEE(i41, i40 + 4 | 0, i35, i2, i37, i28);
   i43 = 26;
   break;
  }
 case 116:
 case 110:
  {
   HEAP32[i9 >> 2] = HEAP32[i36 >> 2];
   HEAP32[i2 >> 2] = HEAP32[i9 >> 2];
   __ZNKSt3__18time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE17__get_white_spaceERS4_S4_RjRKNS_5ctypeIwEE(i41, i35, i2, i37, i28);
   i43 = 26;
   break;
  }
 case 112:
  {
   HEAP32[i10 >> 2] = HEAP32[i36 >> 2];
   HEAP32[i2 >> 2] = HEAP32[i10 >> 2];
   __ZNKSt3__18time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE11__get_am_pmERiRS4_S4_RjRKNS_5ctypeIwEE(i41, i40 + 8 | 0, i35, i2, i37, i28);
   i43 = 26;
   break;
  }
 case 114:
  {
   HEAP32[i11 >> 2] = HEAP32[i35 >> 2];
   HEAP32[i12 >> 2] = HEAP32[i36 >> 2];
   HEAP32[i1 >> 2] = HEAP32[i11 >> 2];
   HEAP32[i2 >> 2] = HEAP32[i12 >> 2];
   i43 = __ZNKSt3__18time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE3getES4_S4_RNS_8ios_baseERjP2tmPKwSC_(i41, i1, i2, i39, i37, i40, 10124, 10168) | 0;
   HEAP32[i35 >> 2] = i43;
   i43 = 26;
   break;
  }
 case 82:
  {
   HEAP32[i14 >> 2] = HEAP32[i35 >> 2];
   HEAP32[i15 >> 2] = HEAP32[i36 >> 2];
   HEAP32[i1 >> 2] = HEAP32[i14 >> 2];
   HEAP32[i2 >> 2] = HEAP32[i15 >> 2];
   i43 = __ZNKSt3__18time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE3getES4_S4_RNS_8ios_baseERjP2tmPKwSC_(i41, i1, i2, i39, i37, i40, 10168, 10188) | 0;
   HEAP32[i35 >> 2] = i43;
   i43 = 26;
   break;
  }
 case 83:
  {
   HEAP32[i16 >> 2] = HEAP32[i36 >> 2];
   HEAP32[i2 >> 2] = HEAP32[i16 >> 2];
   __ZNKSt3__18time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE12__get_secondERiRS4_S4_RjRKNS_5ctypeIwEE(i41, i40, i35, i2, i37, i28);
   i43 = 26;
   break;
  }
 case 84:
  {
   HEAP32[i17 >> 2] = HEAP32[i35 >> 2];
   HEAP32[i18 >> 2] = HEAP32[i36 >> 2];
   HEAP32[i1 >> 2] = HEAP32[i17 >> 2];
   HEAP32[i2 >> 2] = HEAP32[i18 >> 2];
   i43 = __ZNKSt3__18time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE3getES4_S4_RNS_8ios_baseERjP2tmPKwSC_(i41, i1, i2, i39, i37, i40, 10188, 10220) | 0;
   HEAP32[i35 >> 2] = i43;
   i43 = 26;
   break;
  }
 case 119:
  {
   HEAP32[i19 >> 2] = HEAP32[i36 >> 2];
   HEAP32[i2 >> 2] = HEAP32[i19 >> 2];
   __ZNKSt3__18time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE13__get_weekdayERiRS4_S4_RjRKNS_5ctypeIwEE(i41, i40 + 24 | 0, i35, i2, i37, i28);
   i43 = 26;
   break;
  }
 case 120:
  {
   i44 = HEAP32[(HEAP32[i41 >> 2] | 0) + 20 >> 2] | 0;
   HEAP32[i20 >> 2] = HEAP32[i35 >> 2];
   HEAP32[i21 >> 2] = HEAP32[i36 >> 2];
   HEAP32[i1 >> 2] = HEAP32[i20 >> 2];
   HEAP32[i2 >> 2] = HEAP32[i21 >> 2];
   i1 = FUNCTION_TABLE_iiiiiii[i44 & 63](i41, i1, i2, i39, i37, i40) | 0;
   break;
  }
 case 88:
  {
   i44 = i41 + 8 | 0;
   i44 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i44 >> 2] | 0) + 24 >> 2] & 127](i44) | 0;
   HEAP32[i22 >> 2] = HEAP32[i35 >> 2];
   HEAP32[i23 >> 2] = HEAP32[i36 >> 2];
   i38 = HEAP8[i44 >> 0] | 0;
   i36 = (i38 & 1) == 0;
   i43 = i44 + 4 | 0;
   i44 = i36 ? i43 : HEAP32[i44 + 8 >> 2] | 0;
   i43 = i44 + ((i36 ? (i38 & 255) >>> 1 : HEAP32[i43 >> 2] | 0) << 2) | 0;
   HEAP32[i1 >> 2] = HEAP32[i22 >> 2];
   HEAP32[i2 >> 2] = HEAP32[i23 >> 2];
   i43 = __ZNKSt3__18time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE3getES4_S4_RNS_8ios_baseERjP2tmPKwSC_(i41, i1, i2, i39, i37, i40, i44, i43) | 0;
   HEAP32[i35 >> 2] = i43;
   i43 = 26;
   break;
  }
 case 121:
  {
   HEAP32[i25 >> 2] = HEAP32[i36 >> 2];
   HEAP32[i2 >> 2] = HEAP32[i25 >> 2];
   __ZNKSt3__18time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE10__get_yearERiRS4_S4_RjRKNS_5ctypeIwEE(i41, i40 + 20 | 0, i35, i2, i37, i28);
   i43 = 26;
   break;
  }
 case 89:
  {
   HEAP32[i26 >> 2] = HEAP32[i36 >> 2];
   HEAP32[i2 >> 2] = HEAP32[i26 >> 2];
   __ZNKSt3__18time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE11__get_year4ERiRS4_S4_RjRKNS_5ctypeIwEE(i41, i40 + 20 | 0, i35, i2, i37, i28);
   i43 = 26;
   break;
  }
 case 37:
  {
   HEAP32[i27 >> 2] = HEAP32[i36 >> 2];
   HEAP32[i2 >> 2] = HEAP32[i27 >> 2];
   __ZNKSt3__18time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE13__get_percentERS4_S4_RjRKNS_5ctypeIwEE(i41, i35, i2, i37, i28);
   i43 = 26;
   break;
  }
 default:
  {
   HEAP32[i37 >> 2] = HEAP32[i37 >> 2] | 4;
   i43 = 26;
  }
 } while (0);
 if ((i43 | 0) == 26) i1 = HEAP32[i35 >> 2] | 0;
 STACKTOP = i42;
 return i1 | 0;
}

function __ZNKSt3__18time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_getES4_S4_RNS_8ios_baseERjP2tmcc(i41, i35, i36, i39, i37, i40, i38, i1) {
 i41 = i41 | 0;
 i35 = i35 | 0;
 i36 = i36 | 0;
 i39 = i39 | 0;
 i37 = i37 | 0;
 i40 = i40 | 0;
 i38 = i38 | 0;
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, i18 = 0, i19 = 0, i20 = 0, i21 = 0, i22 = 0, i23 = 0, i24 = 0, i25 = 0, i26 = 0, i27 = 0, i28 = 0, i29 = 0, i30 = 0, i31 = 0, i32 = 0, i33 = 0, i34 = 0, i42 = 0, i43 = 0, i44 = 0;
 i42 = STACKTOP;
 STACKTOP = STACKTOP + 144 | 0;
 i2 = i42 + 132 | 0;
 i1 = i42 + 116 | 0;
 i28 = i42 + 128 | 0;
 i13 = i42 + 124 | 0;
 i24 = i42 + 120 | 0;
 i29 = i42 + 112 | 0;
 i30 = i42 + 108 | 0;
 i31 = i42 + 104 | 0;
 i32 = i42 + 100 | 0;
 i33 = i42 + 96 | 0;
 i34 = i42 + 92 | 0;
 i3 = i42 + 88 | 0;
 i4 = i42 + 84 | 0;
 i5 = i42 + 80 | 0;
 i6 = i42 + 76 | 0;
 i7 = i42 + 72 | 0;
 i8 = i42 + 68 | 0;
 i9 = i42 + 64 | 0;
 i10 = i42 + 60 | 0;
 i11 = i42 + 56 | 0;
 i12 = i42 + 52 | 0;
 i14 = i42 + 48 | 0;
 i15 = i42 + 44 | 0;
 i16 = i42 + 40 | 0;
 i17 = i42 + 36 | 0;
 i18 = i42 + 32 | 0;
 i19 = i42 + 28 | 0;
 i20 = i42 + 24 | 0;
 i21 = i42 + 20 | 0;
 i22 = i42 + 16 | 0;
 i23 = i42 + 12 | 0;
 i25 = i42 + 8 | 0;
 i26 = i42 + 4 | 0;
 i27 = i42;
 HEAP32[i37 >> 2] = 0;
 i44 = __ZNKSt3__18ios_base6getlocEv(i39) | 0;
 HEAP32[i28 >> 2] = i44;
 i28 = __ZNKSt3__16locale9use_facetERNS0_2idE(i28, 38376) | 0;
 __ZNSt3__114__shared_count16__release_sharedEv(i44) | 0;
 do switch (i38 << 24 >> 24 | 0) {
 case 65:
 case 97:
  {
   HEAP32[i13 >> 2] = HEAP32[i36 >> 2];
   HEAP32[i2 >> 2] = HEAP32[i13 >> 2];
   __ZNKSt3__18time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE17__get_weekdaynameERiRS4_S4_RjRKNS_5ctypeIcEE(i41, i40 + 24 | 0, i35, i2, i37, i28);
   i43 = 26;
   break;
  }
 case 104:
 case 66:
 case 98:
  {
   HEAP32[i24 >> 2] = HEAP32[i36 >> 2];
   HEAP32[i2 >> 2] = HEAP32[i24 >> 2];
   __ZNKSt3__18time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE15__get_monthnameERiRS4_S4_RjRKNS_5ctypeIcEE(i41, i40 + 16 | 0, i35, i2, i37, i28);
   i43 = 26;
   break;
  }
 case 99:
  {
   i43 = i41 + 8 | 0;
   i43 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i43 >> 2] | 0) + 12 >> 2] & 127](i43) | 0;
   HEAP32[i29 >> 2] = HEAP32[i35 >> 2];
   HEAP32[i30 >> 2] = HEAP32[i36 >> 2];
   i38 = HEAP8[i43 >> 0] | 0;
   i36 = (i38 & 1) == 0;
   i44 = i36 ? i43 + 1 | 0 : HEAP32[i43 + 8 >> 2] | 0;
   i43 = i44 + (i36 ? (i38 & 255) >>> 1 : HEAP32[i43 + 4 >> 2] | 0) | 0;
   HEAP32[i1 >> 2] = HEAP32[i29 >> 2];
   HEAP32[i2 >> 2] = HEAP32[i30 >> 2];
   i43 = __ZNKSt3__18time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE3getES4_S4_RNS_8ios_baseERjP2tmPKcSC_(i41, i1, i2, i39, i37, i40, i44, i43) | 0;
   HEAP32[i35 >> 2] = i43;
   i43 = 26;
   break;
  }
 case 101:
 case 100:
  {
   HEAP32[i31 >> 2] = HEAP32[i36 >> 2];
   HEAP32[i2 >> 2] = HEAP32[i31 >> 2];
   __ZNKSt3__18time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE9__get_dayERiRS4_S4_RjRKNS_5ctypeIcEE(i41, i40 + 12 | 0, i35, i2, i37, i28);
   i43 = 26;
   break;
  }
 case 68:
  {
   HEAP32[i32 >> 2] = HEAP32[i35 >> 2];
   HEAP32[i33 >> 2] = HEAP32[i36 >> 2];
   HEAP32[i1 >> 2] = HEAP32[i32 >> 2];
   HEAP32[i2 >> 2] = HEAP32[i33 >> 2];
   i43 = __ZNKSt3__18time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE3getES4_S4_RNS_8ios_baseERjP2tmPKcSC_(i41, i1, i2, i39, i37, i40, 30925, 30933) | 0;
   HEAP32[i35 >> 2] = i43;
   i43 = 26;
   break;
  }
 case 70:
  {
   HEAP32[i34 >> 2] = HEAP32[i35 >> 2];
   HEAP32[i3 >> 2] = HEAP32[i36 >> 2];
   HEAP32[i1 >> 2] = HEAP32[i34 >> 2];
   HEAP32[i2 >> 2] = HEAP32[i3 >> 2];
   i43 = __ZNKSt3__18time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE3getES4_S4_RNS_8ios_baseERjP2tmPKcSC_(i41, i1, i2, i39, i37, i40, 30933, 30941) | 0;
   HEAP32[i35 >> 2] = i43;
   i43 = 26;
   break;
  }
 case 72:
  {
   HEAP32[i4 >> 2] = HEAP32[i36 >> 2];
   HEAP32[i2 >> 2] = HEAP32[i4 >> 2];
   __ZNKSt3__18time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE10__get_hourERiRS4_S4_RjRKNS_5ctypeIcEE(i41, i40 + 8 | 0, i35, i2, i37, i28);
   i43 = 26;
   break;
  }
 case 73:
  {
   HEAP32[i5 >> 2] = HEAP32[i36 >> 2];
   HEAP32[i2 >> 2] = HEAP32[i5 >> 2];
   __ZNKSt3__18time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE13__get_12_hourERiRS4_S4_RjRKNS_5ctypeIcEE(i41, i40 + 8 | 0, i35, i2, i37, i28);
   i43 = 26;
   break;
  }
 case 106:
  {
   HEAP32[i6 >> 2] = HEAP32[i36 >> 2];
   HEAP32[i2 >> 2] = HEAP32[i6 >> 2];
   __ZNKSt3__18time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE18__get_day_year_numERiRS4_S4_RjRKNS_5ctypeIcEE(i41, i40 + 28 | 0, i35, i2, i37, i28);
   i43 = 26;
   break;
  }
 case 109:
  {
   HEAP32[i7 >> 2] = HEAP32[i36 >> 2];
   HEAP32[i2 >> 2] = HEAP32[i7 >> 2];
   __ZNKSt3__18time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE11__get_monthERiRS4_S4_RjRKNS_5ctypeIcEE(i41, i40 + 16 | 0, i35, i2, i37, i28);
   i43 = 26;
   break;
  }
 case 77:
  {
   HEAP32[i8 >> 2] = HEAP32[i36 >> 2];
   HEAP32[i2 >> 2] = HEAP32[i8 >> 2];
   __ZNKSt3__18time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE12__get_minuteERiRS4_S4_RjRKNS_5ctypeIcEE(i41, i40 + 4 | 0, i35, i2, i37, i28);
   i43 = 26;
   break;
  }
 case 116:
 case 110:
  {
   HEAP32[i9 >> 2] = HEAP32[i36 >> 2];
   HEAP32[i2 >> 2] = HEAP32[i9 >> 2];
   __ZNKSt3__18time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE17__get_white_spaceERS4_S4_RjRKNS_5ctypeIcEE(i41, i35, i2, i37, i28);
   i43 = 26;
   break;
  }
 case 112:
  {
   HEAP32[i10 >> 2] = HEAP32[i36 >> 2];
   HEAP32[i2 >> 2] = HEAP32[i10 >> 2];
   __ZNKSt3__18time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE11__get_am_pmERiRS4_S4_RjRKNS_5ctypeIcEE(i41, i40 + 8 | 0, i35, i2, i37, i28);
   i43 = 26;
   break;
  }
 case 114:
  {
   HEAP32[i11 >> 2] = HEAP32[i35 >> 2];
   HEAP32[i12 >> 2] = HEAP32[i36 >> 2];
   HEAP32[i1 >> 2] = HEAP32[i11 >> 2];
   HEAP32[i2 >> 2] = HEAP32[i12 >> 2];
   i43 = __ZNKSt3__18time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE3getES4_S4_RNS_8ios_baseERjP2tmPKcSC_(i41, i1, i2, i39, i37, i40, 30941, 30952) | 0;
   HEAP32[i35 >> 2] = i43;
   i43 = 26;
   break;
  }
 case 82:
  {
   HEAP32[i14 >> 2] = HEAP32[i35 >> 2];
   HEAP32[i15 >> 2] = HEAP32[i36 >> 2];
   HEAP32[i1 >> 2] = HEAP32[i14 >> 2];
   HEAP32[i2 >> 2] = HEAP32[i15 >> 2];
   i43 = __ZNKSt3__18time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE3getES4_S4_RNS_8ios_baseERjP2tmPKcSC_(i41, i1, i2, i39, i37, i40, 30952, 30957) | 0;
   HEAP32[i35 >> 2] = i43;
   i43 = 26;
   break;
  }
 case 83:
  {
   HEAP32[i16 >> 2] = HEAP32[i36 >> 2];
   HEAP32[i2 >> 2] = HEAP32[i16 >> 2];
   __ZNKSt3__18time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE12__get_secondERiRS4_S4_RjRKNS_5ctypeIcEE(i41, i40, i35, i2, i37, i28);
   i43 = 26;
   break;
  }
 case 84:
  {
   HEAP32[i17 >> 2] = HEAP32[i35 >> 2];
   HEAP32[i18 >> 2] = HEAP32[i36 >> 2];
   HEAP32[i1 >> 2] = HEAP32[i17 >> 2];
   HEAP32[i2 >> 2] = HEAP32[i18 >> 2];
   i43 = __ZNKSt3__18time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE3getES4_S4_RNS_8ios_baseERjP2tmPKcSC_(i41, i1, i2, i39, i37, i40, 30957, 30965) | 0;
   HEAP32[i35 >> 2] = i43;
   i43 = 26;
   break;
  }
 case 119:
  {
   HEAP32[i19 >> 2] = HEAP32[i36 >> 2];
   HEAP32[i2 >> 2] = HEAP32[i19 >> 2];
   __ZNKSt3__18time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE13__get_weekdayERiRS4_S4_RjRKNS_5ctypeIcEE(i41, i40 + 24 | 0, i35, i2, i37, i28);
   i43 = 26;
   break;
  }
 case 120:
  {
   i44 = HEAP32[(HEAP32[i41 >> 2] | 0) + 20 >> 2] | 0;
   HEAP32[i20 >> 2] = HEAP32[i35 >> 2];
   HEAP32[i21 >> 2] = HEAP32[i36 >> 2];
   HEAP32[i1 >> 2] = HEAP32[i20 >> 2];
   HEAP32[i2 >> 2] = HEAP32[i21 >> 2];
   i1 = FUNCTION_TABLE_iiiiiii[i44 & 63](i41, i1, i2, i39, i37, i40) | 0;
   break;
  }
 case 88:
  {
   i43 = i41 + 8 | 0;
   i43 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i43 >> 2] | 0) + 24 >> 2] & 127](i43) | 0;
   HEAP32[i22 >> 2] = HEAP32[i35 >> 2];
   HEAP32[i23 >> 2] = HEAP32[i36 >> 2];
   i38 = HEAP8[i43 >> 0] | 0;
   i36 = (i38 & 1) == 0;
   i44 = i36 ? i43 + 1 | 0 : HEAP32[i43 + 8 >> 2] | 0;
   i43 = i44 + (i36 ? (i38 & 255) >>> 1 : HEAP32[i43 + 4 >> 2] | 0) | 0;
   HEAP32[i1 >> 2] = HEAP32[i22 >> 2];
   HEAP32[i2 >> 2] = HEAP32[i23 >> 2];
   i43 = __ZNKSt3__18time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE3getES4_S4_RNS_8ios_baseERjP2tmPKcSC_(i41, i1, i2, i39, i37, i40, i44, i43) | 0;
   HEAP32[i35 >> 2] = i43;
   i43 = 26;
   break;
  }
 case 121:
  {
   HEAP32[i25 >> 2] = HEAP32[i36 >> 2];
   HEAP32[i2 >> 2] = HEAP32[i25 >> 2];
   __ZNKSt3__18time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE10__get_yearERiRS4_S4_RjRKNS_5ctypeIcEE(i41, i40 + 20 | 0, i35, i2, i37, i28);
   i43 = 26;
   break;
  }
 case 89:
  {
   HEAP32[i26 >> 2] = HEAP32[i36 >> 2];
   HEAP32[i2 >> 2] = HEAP32[i26 >> 2];
   __ZNKSt3__18time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE11__get_year4ERiRS4_S4_RjRKNS_5ctypeIcEE(i41, i40 + 20 | 0, i35, i2, i37, i28);
   i43 = 26;
   break;
  }
 case 37:
  {
   HEAP32[i27 >> 2] = HEAP32[i36 >> 2];
   HEAP32[i2 >> 2] = HEAP32[i27 >> 2];
   __ZNKSt3__18time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE13__get_percentERS4_S4_RjRKNS_5ctypeIcEE(i41, i35, i2, i37, i28);
   i43 = 26;
   break;
  }
 default:
  {
   HEAP32[i37 >> 2] = HEAP32[i37 >> 2] | 4;
   i43 = 26;
  }
 } while (0);
 if ((i43 | 0) == 26) i1 = HEAP32[i35 >> 2] | 0;
 STACKTOP = i42;
 return i1 | 0;
}
function _free(i1) {
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0;
 if (!i1) return;
 i3 = i1 + -8 | 0;
 i7 = HEAP32[9192] | 0;
 if (i3 >>> 0 < i7 >>> 0) _abort();
 i1 = HEAP32[i1 + -4 >> 2] | 0;
 i2 = i1 & 3;
 if ((i2 | 0) == 1) _abort();
 i4 = i1 & -8;
 i12 = i3 + i4 | 0;
 do if (!(i1 & 1)) {
  i1 = HEAP32[i3 >> 2] | 0;
  if (!i2) return;
  i10 = i3 + (0 - i1) | 0;
  i9 = i1 + i4 | 0;
  if (i10 >>> 0 < i7 >>> 0) _abort();
  if ((i10 | 0) == (HEAP32[9193] | 0)) {
   i1 = i12 + 4 | 0;
   i2 = HEAP32[i1 >> 2] | 0;
   if ((i2 & 3 | 0) != 3) {
    i16 = i10;
    i6 = i9;
    break;
   }
   HEAP32[9190] = i9;
   HEAP32[i1 >> 2] = i2 & -2;
   HEAP32[i10 + 4 >> 2] = i9 | 1;
   HEAP32[i10 + i9 >> 2] = i9;
   return;
  }
  i4 = i1 >>> 3;
  if (i1 >>> 0 < 256) {
   i2 = HEAP32[i10 + 8 >> 2] | 0;
   i3 = HEAP32[i10 + 12 >> 2] | 0;
   i1 = 36792 + (i4 << 1 << 2) | 0;
   if ((i2 | 0) != (i1 | 0)) {
    if (i2 >>> 0 < i7 >>> 0) _abort();
    if ((HEAP32[i2 + 12 >> 2] | 0) != (i10 | 0)) _abort();
   }
   if ((i3 | 0) == (i2 | 0)) {
    HEAP32[9188] = HEAP32[9188] & ~(1 << i4);
    i16 = i10;
    i6 = i9;
    break;
   }
   if ((i3 | 0) != (i1 | 0)) {
    if (i3 >>> 0 < i7 >>> 0) _abort();
    i1 = i3 + 8 | 0;
    if ((HEAP32[i1 >> 2] | 0) == (i10 | 0)) i5 = i1; else _abort();
   } else i5 = i3 + 8 | 0;
   HEAP32[i2 + 12 >> 2] = i3;
   HEAP32[i5 >> 2] = i2;
   i16 = i10;
   i6 = i9;
   break;
  }
  i5 = HEAP32[i10 + 24 >> 2] | 0;
  i3 = HEAP32[i10 + 12 >> 2] | 0;
  do if ((i3 | 0) == (i10 | 0)) {
   i2 = i10 + 16 | 0;
   i3 = i2 + 4 | 0;
   i1 = HEAP32[i3 >> 2] | 0;
   if (!i1) {
    i1 = HEAP32[i2 >> 2] | 0;
    if (!i1) {
     i8 = 0;
     break;
    }
   } else i2 = i3;
   while (1) {
    i3 = i1 + 20 | 0;
    i4 = HEAP32[i3 >> 2] | 0;
    if (i4 | 0) {
     i1 = i4;
     i2 = i3;
     continue;
    }
    i3 = i1 + 16 | 0;
    i4 = HEAP32[i3 >> 2] | 0;
    if (!i4) break; else {
     i1 = i4;
     i2 = i3;
    }
   }
   if (i2 >>> 0 < i7 >>> 0) _abort(); else {
    HEAP32[i2 >> 2] = 0;
    i8 = i1;
    break;
   }
  } else {
   i4 = HEAP32[i10 + 8 >> 2] | 0;
   if (i4 >>> 0 < i7 >>> 0) _abort();
   i1 = i4 + 12 | 0;
   if ((HEAP32[i1 >> 2] | 0) != (i10 | 0)) _abort();
   i2 = i3 + 8 | 0;
   if ((HEAP32[i2 >> 2] | 0) == (i10 | 0)) {
    HEAP32[i1 >> 2] = i3;
    HEAP32[i2 >> 2] = i4;
    i8 = i3;
    break;
   } else _abort();
  } while (0);
  if (i5) {
   i1 = HEAP32[i10 + 28 >> 2] | 0;
   i2 = 37056 + (i1 << 2) | 0;
   if ((i10 | 0) == (HEAP32[i2 >> 2] | 0)) {
    HEAP32[i2 >> 2] = i8;
    if (!i8) {
     HEAP32[9189] = HEAP32[9189] & ~(1 << i1);
     i16 = i10;
     i6 = i9;
     break;
    }
   } else {
    if (i5 >>> 0 < (HEAP32[9192] | 0) >>> 0) _abort();
    i1 = i5 + 16 | 0;
    if ((HEAP32[i1 >> 2] | 0) == (i10 | 0)) HEAP32[i1 >> 2] = i8; else HEAP32[i5 + 20 >> 2] = i8;
    if (!i8) {
     i16 = i10;
     i6 = i9;
     break;
    }
   }
   i3 = HEAP32[9192] | 0;
   if (i8 >>> 0 < i3 >>> 0) _abort();
   HEAP32[i8 + 24 >> 2] = i5;
   i1 = i10 + 16 | 0;
   i2 = HEAP32[i1 >> 2] | 0;
   do if (i2 | 0) if (i2 >>> 0 < i3 >>> 0) _abort(); else {
    HEAP32[i8 + 16 >> 2] = i2;
    HEAP32[i2 + 24 >> 2] = i8;
    break;
   } while (0);
   i1 = HEAP32[i1 + 4 >> 2] | 0;
   if (i1) if (i1 >>> 0 < (HEAP32[9192] | 0) >>> 0) _abort(); else {
    HEAP32[i8 + 20 >> 2] = i1;
    HEAP32[i1 + 24 >> 2] = i8;
    i16 = i10;
    i6 = i9;
    break;
   } else {
    i16 = i10;
    i6 = i9;
   }
  } else {
   i16 = i10;
   i6 = i9;
  }
 } else {
  i16 = i3;
  i6 = i4;
 } while (0);
 if (i16 >>> 0 >= i12 >>> 0) _abort();
 i1 = i12 + 4 | 0;
 i2 = HEAP32[i1 >> 2] | 0;
 if (!(i2 & 1)) _abort();
 if (!(i2 & 2)) {
  if ((i12 | 0) == (HEAP32[9194] | 0)) {
   i15 = (HEAP32[9191] | 0) + i6 | 0;
   HEAP32[9191] = i15;
   HEAP32[9194] = i16;
   HEAP32[i16 + 4 >> 2] = i15 | 1;
   if ((i16 | 0) != (HEAP32[9193] | 0)) return;
   HEAP32[9193] = 0;
   HEAP32[9190] = 0;
   return;
  }
  if ((i12 | 0) == (HEAP32[9193] | 0)) {
   i15 = (HEAP32[9190] | 0) + i6 | 0;
   HEAP32[9190] = i15;
   HEAP32[9193] = i16;
   HEAP32[i16 + 4 >> 2] = i15 | 1;
   HEAP32[i16 + i15 >> 2] = i15;
   return;
  }
  i6 = (i2 & -8) + i6 | 0;
  i4 = i2 >>> 3;
  do if (i2 >>> 0 >= 256) {
   i5 = HEAP32[i12 + 24 >> 2] | 0;
   i1 = HEAP32[i12 + 12 >> 2] | 0;
   do if ((i1 | 0) == (i12 | 0)) {
    i2 = i12 + 16 | 0;
    i3 = i2 + 4 | 0;
    i1 = HEAP32[i3 >> 2] | 0;
    if (!i1) {
     i1 = HEAP32[i2 >> 2] | 0;
     if (!i1) {
      i13 = 0;
      break;
     }
    } else i2 = i3;
    while (1) {
     i3 = i1 + 20 | 0;
     i4 = HEAP32[i3 >> 2] | 0;
     if (i4 | 0) {
      i1 = i4;
      i2 = i3;
      continue;
     }
     i3 = i1 + 16 | 0;
     i4 = HEAP32[i3 >> 2] | 0;
     if (!i4) break; else {
      i1 = i4;
      i2 = i3;
     }
    }
    if (i2 >>> 0 < (HEAP32[9192] | 0) >>> 0) _abort(); else {
     HEAP32[i2 >> 2] = 0;
     i13 = i1;
     break;
    }
   } else {
    i2 = HEAP32[i12 + 8 >> 2] | 0;
    if (i2 >>> 0 < (HEAP32[9192] | 0) >>> 0) _abort();
    i3 = i2 + 12 | 0;
    if ((HEAP32[i3 >> 2] | 0) != (i12 | 0)) _abort();
    i4 = i1 + 8 | 0;
    if ((HEAP32[i4 >> 2] | 0) == (i12 | 0)) {
     HEAP32[i3 >> 2] = i1;
     HEAP32[i4 >> 2] = i2;
     i13 = i1;
     break;
    } else _abort();
   } while (0);
   if (i5 | 0) {
    i1 = HEAP32[i12 + 28 >> 2] | 0;
    i2 = 37056 + (i1 << 2) | 0;
    if ((i12 | 0) == (HEAP32[i2 >> 2] | 0)) {
     HEAP32[i2 >> 2] = i13;
     if (!i13) {
      HEAP32[9189] = HEAP32[9189] & ~(1 << i1);
      break;
     }
    } else {
     if (i5 >>> 0 < (HEAP32[9192] | 0) >>> 0) _abort();
     i1 = i5 + 16 | 0;
     if ((HEAP32[i1 >> 2] | 0) == (i12 | 0)) HEAP32[i1 >> 2] = i13; else HEAP32[i5 + 20 >> 2] = i13;
     if (!i13) break;
    }
    i3 = HEAP32[9192] | 0;
    if (i13 >>> 0 < i3 >>> 0) _abort();
    HEAP32[i13 + 24 >> 2] = i5;
    i1 = i12 + 16 | 0;
    i2 = HEAP32[i1 >> 2] | 0;
    do if (i2 | 0) if (i2 >>> 0 < i3 >>> 0) _abort(); else {
     HEAP32[i13 + 16 >> 2] = i2;
     HEAP32[i2 + 24 >> 2] = i13;
     break;
    } while (0);
    i1 = HEAP32[i1 + 4 >> 2] | 0;
    if (i1 | 0) if (i1 >>> 0 < (HEAP32[9192] | 0) >>> 0) _abort(); else {
     HEAP32[i13 + 20 >> 2] = i1;
     HEAP32[i1 + 24 >> 2] = i13;
     break;
    }
   }
  } else {
   i2 = HEAP32[i12 + 8 >> 2] | 0;
   i3 = HEAP32[i12 + 12 >> 2] | 0;
   i1 = 36792 + (i4 << 1 << 2) | 0;
   if ((i2 | 0) != (i1 | 0)) {
    if (i2 >>> 0 < (HEAP32[9192] | 0) >>> 0) _abort();
    if ((HEAP32[i2 + 12 >> 2] | 0) != (i12 | 0)) _abort();
   }
   if ((i3 | 0) == (i2 | 0)) {
    HEAP32[9188] = HEAP32[9188] & ~(1 << i4);
    break;
   }
   if ((i3 | 0) != (i1 | 0)) {
    if (i3 >>> 0 < (HEAP32[9192] | 0) >>> 0) _abort();
    i1 = i3 + 8 | 0;
    if ((HEAP32[i1 >> 2] | 0) == (i12 | 0)) i11 = i1; else _abort();
   } else i11 = i3 + 8 | 0;
   HEAP32[i2 + 12 >> 2] = i3;
   HEAP32[i11 >> 2] = i2;
  } while (0);
  HEAP32[i16 + 4 >> 2] = i6 | 1;
  HEAP32[i16 + i6 >> 2] = i6;
  if ((i16 | 0) == (HEAP32[9193] | 0)) {
   HEAP32[9190] = i6;
   return;
  }
 } else {
  HEAP32[i1 >> 2] = i2 & -2;
  HEAP32[i16 + 4 >> 2] = i6 | 1;
  HEAP32[i16 + i6 >> 2] = i6;
 }
 i1 = i6 >>> 3;
 if (i6 >>> 0 < 256) {
  i3 = 36792 + (i1 << 1 << 2) | 0;
  i2 = HEAP32[9188] | 0;
  i1 = 1 << i1;
  if (i2 & i1) {
   i1 = i3 + 8 | 0;
   i2 = HEAP32[i1 >> 2] | 0;
   if (i2 >>> 0 < (HEAP32[9192] | 0) >>> 0) _abort(); else {
    i14 = i1;
    i15 = i2;
   }
  } else {
   HEAP32[9188] = i2 | i1;
   i14 = i3 + 8 | 0;
   i15 = i3;
  }
  HEAP32[i14 >> 2] = i16;
  HEAP32[i15 + 12 >> 2] = i16;
  HEAP32[i16 + 8 >> 2] = i15;
  HEAP32[i16 + 12 >> 2] = i3;
  return;
 }
 i1 = i6 >>> 8;
 if (i1) if (i6 >>> 0 > 16777215) i3 = 31; else {
  i14 = (i1 + 1048320 | 0) >>> 16 & 8;
  i15 = i1 << i14;
  i13 = (i15 + 520192 | 0) >>> 16 & 4;
  i15 = i15 << i13;
  i3 = (i15 + 245760 | 0) >>> 16 & 2;
  i3 = 14 - (i13 | i14 | i3) + (i15 << i3 >>> 15) | 0;
  i3 = i6 >>> (i3 + 7 | 0) & 1 | i3 << 1;
 } else i3 = 0;
 i4 = 37056 + (i3 << 2) | 0;
 HEAP32[i16 + 28 >> 2] = i3;
 HEAP32[i16 + 20 >> 2] = 0;
 HEAP32[i16 + 16 >> 2] = 0;
 i1 = HEAP32[9189] | 0;
 i2 = 1 << i3;
 do if (i1 & i2) {
  i5 = i6 << ((i3 | 0) == 31 ? 0 : 25 - (i3 >>> 1) | 0);
  i1 = HEAP32[i4 >> 2] | 0;
  while (1) {
   if ((HEAP32[i1 + 4 >> 2] & -8 | 0) == (i6 | 0)) {
    i3 = i1;
    i4 = 130;
    break;
   }
   i2 = i1 + 16 + (i5 >>> 31 << 2) | 0;
   i3 = HEAP32[i2 >> 2] | 0;
   if (!i3) {
    i4 = 127;
    break;
   } else {
    i5 = i5 << 1;
    i1 = i3;
   }
  }
  if ((i4 | 0) == 127) if (i2 >>> 0 < (HEAP32[9192] | 0) >>> 0) _abort(); else {
   HEAP32[i2 >> 2] = i16;
   HEAP32[i16 + 24 >> 2] = i1;
   HEAP32[i16 + 12 >> 2] = i16;
   HEAP32[i16 + 8 >> 2] = i16;
   break;
  } else if ((i4 | 0) == 130) {
   i1 = i3 + 8 | 0;
   i2 = HEAP32[i1 >> 2] | 0;
   i15 = HEAP32[9192] | 0;
   if (i2 >>> 0 >= i15 >>> 0 & i3 >>> 0 >= i15 >>> 0) {
    HEAP32[i2 + 12 >> 2] = i16;
    HEAP32[i1 >> 2] = i16;
    HEAP32[i16 + 8 >> 2] = i2;
    HEAP32[i16 + 12 >> 2] = i3;
    HEAP32[i16 + 24 >> 2] = 0;
    break;
   } else _abort();
  }
 } else {
  HEAP32[9189] = i1 | i2;
  HEAP32[i4 >> 2] = i16;
  HEAP32[i16 + 24 >> 2] = i4;
  HEAP32[i16 + 12 >> 2] = i16;
  HEAP32[i16 + 8 >> 2] = i16;
 } while (0);
 i16 = (HEAP32[9196] | 0) + -1 | 0;
 HEAP32[9196] = i16;
 if (!i16) i1 = 37208; else return;
 while (1) {
  i1 = HEAP32[i1 >> 2] | 0;
  if (!i1) break; else i1 = i1 + 8 | 0;
 }
 HEAP32[9196] = -1;
 return;
}

function __ZN10__cxxabiv112_GLOBAL__N_120parse_template_paramINS0_2DbEEEPKcS4_S4_RT_(i18, i13, i20) {
 i18 = i18 | 0;
 i13 = i13 | 0;
 i20 = i20 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, i19 = 0, i21 = 0;
 i21 = STACKTOP;
 STACKTOP = STACKTOP + 96 | 0;
 i19 = i21 + 64 | 0;
 i5 = i21 + 40 | 0;
 i16 = i21 + 16 | 0;
 i17 = i21;
 i15 = i18;
 L1 : do if ((i13 - i15 | 0) > 1 ? (HEAP8[i18 >> 0] | 0) == 84 : 0) {
  i12 = HEAP8[i18 + 1 >> 0] | 0;
  if (i12 << 24 >> 24 == 95) {
   i1 = HEAP32[i20 + 36 >> 2] | 0;
   if ((HEAP32[i20 + 32 >> 2] | 0) == (i1 | 0)) {
    i1 = i18;
    break;
   }
   i2 = HEAP32[i1 + -16 >> 2] | 0;
   if ((i2 | 0) != (HEAP32[i1 + -12 >> 2] | 0)) {
    i7 = HEAP32[i2 + 4 >> 2] | 0;
    i8 = i20 + 4 | 0;
    i9 = i20 + 8 | 0;
    i10 = i20 + 12 | 0;
    i11 = i19 + 8 | 0;
    i6 = HEAP32[i2 >> 2] | 0;
    while (1) {
     if ((i6 | 0) == (i7 | 0)) {
      i1 = 8;
      break;
     }
     i1 = HEAP32[i8 >> 2] | 0;
     i5 = HEAP32[i9 >> 2] | 0;
     i2 = i5;
     if ((i1 | 0) == (i5 | 0)) {
      i3 = HEAP32[i20 >> 2] | 0;
      i1 = i1 - i3 | 0;
      i5 = (i1 | 0) / 24 | 0;
      i4 = i5 + 1 | 0;
      if ((i1 | 0) < -24) {
       i1 = 12;
       break;
      }
      i1 = (i2 - i3 | 0) / 24 | 0;
      if (i1 >>> 0 < 1073741823) {
       i1 = i1 << 1;
       i1 = i1 >>> 0 < i4 >>> 0 ? i4 : i1;
      } else i1 = 2147483647;
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_(i19, i1, i5, i10);
      i5 = HEAP32[i11 >> 2] | 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_(i5, i6);
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_(i5 + 12 | 0, i6 + 12 | 0);
      HEAP32[i11 >> 2] = i5 + 24;
      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i20, i19);
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev(i19);
     } else {
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_(i1, i6);
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_(i1 + 12 | 0, i6 + 12 | 0);
      HEAP32[i8 >> 2] = (HEAP32[i8 >> 2] | 0) + 24;
     }
     i6 = i6 + 24 | 0;
    }
    if ((i1 | 0) == 8) {
     i1 = i18 + 2 | 0;
     break;
    } else if ((i1 | 0) == 12) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i20);
   } else {
    HEAP8[i5 >> 0] = 4;
    i1 = i5 + 1 | 0;
    HEAP8[i1 >> 0] = 84;
    HEAP8[i1 + 1 >> 0] = 95;
    HEAP8[i5 + 3 >> 0] = 0;
    i1 = i5 + 12 | 0;
    i2 = 0;
    while (1) {
     if ((i2 | 0) == 3) break;
     HEAP32[i1 + (i2 << 2) >> 2] = 0;
     i2 = i2 + 1 | 0;
    }
    i1 = i20 + 4 | 0;
    i2 = HEAP32[i1 >> 2] | 0;
    i17 = HEAP32[i20 + 8 >> 2] | 0;
    i3 = i17;
    if (i2 >>> 0 < i17 >>> 0) {
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i2, i5);
     HEAP32[i1 >> 2] = (HEAP32[i1 >> 2] | 0) + 24;
    } else {
     i1 = HEAP32[i20 >> 2] | 0;
     i17 = i2 - i1 | 0;
     i4 = (i17 | 0) / 24 | 0;
     i2 = i4 + 1 | 0;
     if ((i17 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i20);
     i1 = (i3 - i1 | 0) / 24 | 0;
     if (i1 >>> 0 < 1073741823) {
      i1 = i1 << 1;
      i1 = i1 >>> 0 < i2 >>> 0 ? i2 : i1;
     } else i1 = 2147483647;
     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_(i19, i1, i4, i20 + 12 | 0);
     i17 = i19 + 8 | 0;
     i16 = HEAP32[i17 >> 2] | 0;
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i16, i5);
     HEAP32[i17 >> 2] = i16 + 24;
     __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i20, i19);
     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev(i19);
    }
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i5);
    HEAP8[i20 + 62 >> 0] = 1;
    i1 = i18 + 2 | 0;
    break;
   }
  }
  i1 = (i12 << 24 >> 24) + -48 | 0;
  if (i1 >>> 0 < 10) {
   i4 = i18 + 2 | 0;
   while (1) {
    if ((i4 | 0) == (i13 | 0)) {
     i1 = i18;
     break L1;
    }
    i2 = HEAP8[i4 >> 0] | 0;
    i3 = (i2 << 24 >> 24) + -48 | 0;
    if (i3 >>> 0 >= 10) break;
    i1 = i3 + (i1 * 10 | 0) | 0;
    i4 = i4 + 1 | 0;
   }
   if (i2 << 24 >> 24 == 95 ? (i14 = HEAP32[i20 + 36 >> 2] | 0, (HEAP32[i20 + 32 >> 2] | 0) != (i14 | 0)) : 0) {
    i1 = i1 + 1 | 0;
    i13 = HEAP32[i14 + -16 >> 2] | 0;
    i2 = i13;
    if (i1 >>> 0 < (HEAP32[i14 + -12 >> 2] | 0) - i13 >> 4 >>> 0) {
     i8 = HEAP32[i2 + (i1 << 4) + 4 >> 2] | 0;
     i9 = i20 + 4 | 0;
     i10 = i20 + 8 | 0;
     i11 = i20 + 12 | 0;
     i12 = i19 + 8 | 0;
     i7 = HEAP32[i2 + (i1 << 4) >> 2] | 0;
     while (1) {
      if ((i7 | 0) == (i8 | 0)) {
       i1 = 38;
       break;
      }
      i1 = HEAP32[i9 >> 2] | 0;
      i14 = HEAP32[i10 >> 2] | 0;
      i2 = i14;
      if ((i1 | 0) == (i14 | 0)) {
       i3 = HEAP32[i20 >> 2] | 0;
       i14 = i1 - i3 | 0;
       i6 = (i14 | 0) / 24 | 0;
       i5 = i6 + 1 | 0;
       if ((i14 | 0) < -24) {
        i1 = 42;
        break;
       }
       i1 = (i2 - i3 | 0) / 24 | 0;
       if (i1 >>> 0 < 1073741823) {
        i1 = i1 << 1;
        i1 = i1 >>> 0 < i5 >>> 0 ? i5 : i1;
       } else i1 = 2147483647;
       __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_(i19, i1, i6, i11);
       i14 = HEAP32[i12 >> 2] | 0;
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_(i14, i7);
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_(i14 + 12 | 0, i7 + 12 | 0);
       HEAP32[i12 >> 2] = i14 + 24;
       __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i20, i19);
       __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev(i19);
      } else {
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_(i1, i7);
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_(i1 + 12 | 0, i7 + 12 | 0);
       HEAP32[i9 >> 2] = (HEAP32[i9 >> 2] | 0) + 24;
      }
      i7 = i7 + 24 | 0;
     }
     if ((i1 | 0) == 38) {
      i1 = i4 + 1 | 0;
      break;
     } else if ((i1 | 0) == 42) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i20);
    }
    i1 = i4 + 1 | 0;
    i4 = i1 - i15 | 0;
    if (i4 >>> 0 > 4294967279) __ZNKSt3__121__basic_string_commonILb1EE20__throw_length_errorEv(i17);
    if (i4 >>> 0 < 11) {
     HEAP8[i17 >> 0] = i4 << 1;
     i5 = i17 + 1 | 0;
    } else {
     i15 = i4 + 16 & -16;
     i5 = _malloc(i15) | 0;
     HEAP32[i17 + 8 >> 2] = i5;
     HEAP32[i17 >> 2] = i15 | 1;
     HEAP32[i17 + 4 >> 2] = i4;
    }
    i2 = i18;
    i3 = i5;
    while (1) {
     if ((i2 | 0) == (i1 | 0)) break;
     HEAP8[i3 >> 0] = HEAP8[i2 >> 0] | 0;
     i2 = i2 + 1 | 0;
     i3 = i3 + 1 | 0;
    }
    HEAP8[i5 + i4 >> 0] = 0;
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE(i16, i17);
    i2 = i20 + 4 | 0;
    i3 = HEAP32[i2 >> 2] | 0;
    i18 = HEAP32[i20 + 8 >> 2] | 0;
    i4 = i18;
    if (i3 >>> 0 < i18 >>> 0) {
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i3, i16);
     HEAP32[i2 >> 2] = (HEAP32[i2 >> 2] | 0) + 24;
    } else {
     i2 = HEAP32[i20 >> 2] | 0;
     i18 = i3 - i2 | 0;
     i5 = (i18 | 0) / 24 | 0;
     i3 = i5 + 1 | 0;
     if ((i18 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i20);
     i2 = (i4 - i2 | 0) / 24 | 0;
     if (i2 >>> 0 < 1073741823) {
      i2 = i2 << 1;
      i2 = i2 >>> 0 < i3 >>> 0 ? i3 : i2;
     } else i2 = 2147483647;
     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_(i19, i2, i5, i20 + 12 | 0);
     i18 = i19 + 8 | 0;
     i15 = HEAP32[i18 >> 2] | 0;
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i15, i16);
     HEAP32[i18 >> 2] = i15 + 24;
     __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i20, i19);
     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev(i19);
    }
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i16);
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i17);
    HEAP8[i20 + 62 >> 0] = 1;
   } else i1 = i18;
  } else i1 = i18;
 } else i1 = i18; while (0);
 STACKTOP = i21;
 return i1 | 0;
}

function _dispose_chunk(i2, i3) {
 i2 = i2 | 0;
 i3 = i3 | 0;
 var i1 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0;
 i14 = i2 + i3 | 0;
 i1 = HEAP32[i2 + 4 >> 2] | 0;
 do if (!(i1 & 1)) {
  i5 = HEAP32[i2 >> 2] | 0;
  if (!(i1 & 3)) return;
  i11 = i2 + (0 - i5) | 0;
  i10 = i5 + i3 | 0;
  i8 = HEAP32[9192] | 0;
  if (i11 >>> 0 < i8 >>> 0) _abort();
  if ((i11 | 0) == (HEAP32[9193] | 0)) {
   i2 = i14 + 4 | 0;
   i1 = HEAP32[i2 >> 2] | 0;
   if ((i1 & 3 | 0) != 3) {
    i17 = i11;
    i6 = i10;
    break;
   }
   HEAP32[9190] = i10;
   HEAP32[i2 >> 2] = i1 & -2;
   HEAP32[i11 + 4 >> 2] = i10 | 1;
   HEAP32[i11 + i10 >> 2] = i10;
   return;
  }
  i4 = i5 >>> 3;
  if (i5 >>> 0 < 256) {
   i2 = HEAP32[i11 + 8 >> 2] | 0;
   i3 = HEAP32[i11 + 12 >> 2] | 0;
   i1 = 36792 + (i4 << 1 << 2) | 0;
   if ((i2 | 0) != (i1 | 0)) {
    if (i2 >>> 0 < i8 >>> 0) _abort();
    if ((HEAP32[i2 + 12 >> 2] | 0) != (i11 | 0)) _abort();
   }
   if ((i3 | 0) == (i2 | 0)) {
    HEAP32[9188] = HEAP32[9188] & ~(1 << i4);
    i17 = i11;
    i6 = i10;
    break;
   }
   if ((i3 | 0) != (i1 | 0)) {
    if (i3 >>> 0 < i8 >>> 0) _abort();
    i1 = i3 + 8 | 0;
    if ((HEAP32[i1 >> 2] | 0) == (i11 | 0)) i7 = i1; else _abort();
   } else i7 = i3 + 8 | 0;
   HEAP32[i2 + 12 >> 2] = i3;
   HEAP32[i7 >> 2] = i2;
   i17 = i11;
   i6 = i10;
   break;
  }
  i5 = HEAP32[i11 + 24 >> 2] | 0;
  i3 = HEAP32[i11 + 12 >> 2] | 0;
  do if ((i3 | 0) == (i11 | 0)) {
   i2 = i11 + 16 | 0;
   i3 = i2 + 4 | 0;
   i1 = HEAP32[i3 >> 2] | 0;
   if (!i1) {
    i1 = HEAP32[i2 >> 2] | 0;
    if (!i1) {
     i9 = 0;
     break;
    }
   } else i2 = i3;
   while (1) {
    i3 = i1 + 20 | 0;
    i4 = HEAP32[i3 >> 2] | 0;
    if (i4 | 0) {
     i1 = i4;
     i2 = i3;
     continue;
    }
    i3 = i1 + 16 | 0;
    i4 = HEAP32[i3 >> 2] | 0;
    if (!i4) break; else {
     i1 = i4;
     i2 = i3;
    }
   }
   if (i2 >>> 0 < i8 >>> 0) _abort(); else {
    HEAP32[i2 >> 2] = 0;
    i9 = i1;
    break;
   }
  } else {
   i4 = HEAP32[i11 + 8 >> 2] | 0;
   if (i4 >>> 0 < i8 >>> 0) _abort();
   i1 = i4 + 12 | 0;
   if ((HEAP32[i1 >> 2] | 0) != (i11 | 0)) _abort();
   i2 = i3 + 8 | 0;
   if ((HEAP32[i2 >> 2] | 0) == (i11 | 0)) {
    HEAP32[i1 >> 2] = i3;
    HEAP32[i2 >> 2] = i4;
    i9 = i3;
    break;
   } else _abort();
  } while (0);
  if (i5) {
   i1 = HEAP32[i11 + 28 >> 2] | 0;
   i2 = 37056 + (i1 << 2) | 0;
   if ((i11 | 0) == (HEAP32[i2 >> 2] | 0)) {
    HEAP32[i2 >> 2] = i9;
    if (!i9) {
     HEAP32[9189] = HEAP32[9189] & ~(1 << i1);
     i17 = i11;
     i6 = i10;
     break;
    }
   } else {
    if (i5 >>> 0 < (HEAP32[9192] | 0) >>> 0) _abort();
    i1 = i5 + 16 | 0;
    if ((HEAP32[i1 >> 2] | 0) == (i11 | 0)) HEAP32[i1 >> 2] = i9; else HEAP32[i5 + 20 >> 2] = i9;
    if (!i9) {
     i17 = i11;
     i6 = i10;
     break;
    }
   }
   i3 = HEAP32[9192] | 0;
   if (i9 >>> 0 < i3 >>> 0) _abort();
   HEAP32[i9 + 24 >> 2] = i5;
   i1 = i11 + 16 | 0;
   i2 = HEAP32[i1 >> 2] | 0;
   do if (i2 | 0) if (i2 >>> 0 < i3 >>> 0) _abort(); else {
    HEAP32[i9 + 16 >> 2] = i2;
    HEAP32[i2 + 24 >> 2] = i9;
    break;
   } while (0);
   i1 = HEAP32[i1 + 4 >> 2] | 0;
   if (i1) if (i1 >>> 0 < (HEAP32[9192] | 0) >>> 0) _abort(); else {
    HEAP32[i9 + 20 >> 2] = i1;
    HEAP32[i1 + 24 >> 2] = i9;
    i17 = i11;
    i6 = i10;
    break;
   } else {
    i17 = i11;
    i6 = i10;
   }
  } else {
   i17 = i11;
   i6 = i10;
  }
 } else {
  i17 = i2;
  i6 = i3;
 } while (0);
 i7 = HEAP32[9192] | 0;
 if (i14 >>> 0 < i7 >>> 0) _abort();
 i1 = i14 + 4 | 0;
 i2 = HEAP32[i1 >> 2] | 0;
 if (!(i2 & 2)) {
  if ((i14 | 0) == (HEAP32[9194] | 0)) {
   i16 = (HEAP32[9191] | 0) + i6 | 0;
   HEAP32[9191] = i16;
   HEAP32[9194] = i17;
   HEAP32[i17 + 4 >> 2] = i16 | 1;
   if ((i17 | 0) != (HEAP32[9193] | 0)) return;
   HEAP32[9193] = 0;
   HEAP32[9190] = 0;
   return;
  }
  if ((i14 | 0) == (HEAP32[9193] | 0)) {
   i16 = (HEAP32[9190] | 0) + i6 | 0;
   HEAP32[9190] = i16;
   HEAP32[9193] = i17;
   HEAP32[i17 + 4 >> 2] = i16 | 1;
   HEAP32[i17 + i16 >> 2] = i16;
   return;
  }
  i6 = (i2 & -8) + i6 | 0;
  i4 = i2 >>> 3;
  do if (i2 >>> 0 >= 256) {
   i5 = HEAP32[i14 + 24 >> 2] | 0;
   i3 = HEAP32[i14 + 12 >> 2] | 0;
   do if ((i3 | 0) == (i14 | 0)) {
    i2 = i14 + 16 | 0;
    i3 = i2 + 4 | 0;
    i1 = HEAP32[i3 >> 2] | 0;
    if (!i1) {
     i1 = HEAP32[i2 >> 2] | 0;
     if (!i1) {
      i13 = 0;
      break;
     }
    } else i2 = i3;
    while (1) {
     i3 = i1 + 20 | 0;
     i4 = HEAP32[i3 >> 2] | 0;
     if (i4 | 0) {
      i1 = i4;
      i2 = i3;
      continue;
     }
     i3 = i1 + 16 | 0;
     i4 = HEAP32[i3 >> 2] | 0;
     if (!i4) break; else {
      i1 = i4;
      i2 = i3;
     }
    }
    if (i2 >>> 0 < i7 >>> 0) _abort(); else {
     HEAP32[i2 >> 2] = 0;
     i13 = i1;
     break;
    }
   } else {
    i4 = HEAP32[i14 + 8 >> 2] | 0;
    if (i4 >>> 0 < i7 >>> 0) _abort();
    i1 = i4 + 12 | 0;
    if ((HEAP32[i1 >> 2] | 0) != (i14 | 0)) _abort();
    i2 = i3 + 8 | 0;
    if ((HEAP32[i2 >> 2] | 0) == (i14 | 0)) {
     HEAP32[i1 >> 2] = i3;
     HEAP32[i2 >> 2] = i4;
     i13 = i3;
     break;
    } else _abort();
   } while (0);
   if (i5 | 0) {
    i1 = HEAP32[i14 + 28 >> 2] | 0;
    i2 = 37056 + (i1 << 2) | 0;
    if ((i14 | 0) == (HEAP32[i2 >> 2] | 0)) {
     HEAP32[i2 >> 2] = i13;
     if (!i13) {
      HEAP32[9189] = HEAP32[9189] & ~(1 << i1);
      break;
     }
    } else {
     if (i5 >>> 0 < (HEAP32[9192] | 0) >>> 0) _abort();
     i1 = i5 + 16 | 0;
     if ((HEAP32[i1 >> 2] | 0) == (i14 | 0)) HEAP32[i1 >> 2] = i13; else HEAP32[i5 + 20 >> 2] = i13;
     if (!i13) break;
    }
    i3 = HEAP32[9192] | 0;
    if (i13 >>> 0 < i3 >>> 0) _abort();
    HEAP32[i13 + 24 >> 2] = i5;
    i1 = i14 + 16 | 0;
    i2 = HEAP32[i1 >> 2] | 0;
    do if (i2 | 0) if (i2 >>> 0 < i3 >>> 0) _abort(); else {
     HEAP32[i13 + 16 >> 2] = i2;
     HEAP32[i2 + 24 >> 2] = i13;
     break;
    } while (0);
    i1 = HEAP32[i1 + 4 >> 2] | 0;
    if (i1 | 0) if (i1 >>> 0 < (HEAP32[9192] | 0) >>> 0) _abort(); else {
     HEAP32[i13 + 20 >> 2] = i1;
     HEAP32[i1 + 24 >> 2] = i13;
     break;
    }
   }
  } else {
   i2 = HEAP32[i14 + 8 >> 2] | 0;
   i3 = HEAP32[i14 + 12 >> 2] | 0;
   i1 = 36792 + (i4 << 1 << 2) | 0;
   if ((i2 | 0) != (i1 | 0)) {
    if (i2 >>> 0 < i7 >>> 0) _abort();
    if ((HEAP32[i2 + 12 >> 2] | 0) != (i14 | 0)) _abort();
   }
   if ((i3 | 0) == (i2 | 0)) {
    HEAP32[9188] = HEAP32[9188] & ~(1 << i4);
    break;
   }
   if ((i3 | 0) != (i1 | 0)) {
    if (i3 >>> 0 < i7 >>> 0) _abort();
    i1 = i3 + 8 | 0;
    if ((HEAP32[i1 >> 2] | 0) == (i14 | 0)) i12 = i1; else _abort();
   } else i12 = i3 + 8 | 0;
   HEAP32[i2 + 12 >> 2] = i3;
   HEAP32[i12 >> 2] = i2;
  } while (0);
  HEAP32[i17 + 4 >> 2] = i6 | 1;
  HEAP32[i17 + i6 >> 2] = i6;
  if ((i17 | 0) == (HEAP32[9193] | 0)) {
   HEAP32[9190] = i6;
   return;
  }
 } else {
  HEAP32[i1 >> 2] = i2 & -2;
  HEAP32[i17 + 4 >> 2] = i6 | 1;
  HEAP32[i17 + i6 >> 2] = i6;
 }
 i1 = i6 >>> 3;
 if (i6 >>> 0 < 256) {
  i3 = 36792 + (i1 << 1 << 2) | 0;
  i2 = HEAP32[9188] | 0;
  i1 = 1 << i1;
  if (i2 & i1) {
   i1 = i3 + 8 | 0;
   i2 = HEAP32[i1 >> 2] | 0;
   if (i2 >>> 0 < (HEAP32[9192] | 0) >>> 0) _abort(); else {
    i15 = i1;
    i16 = i2;
   }
  } else {
   HEAP32[9188] = i2 | i1;
   i15 = i3 + 8 | 0;
   i16 = i3;
  }
  HEAP32[i15 >> 2] = i17;
  HEAP32[i16 + 12 >> 2] = i17;
  HEAP32[i17 + 8 >> 2] = i16;
  HEAP32[i17 + 12 >> 2] = i3;
  return;
 }
 i1 = i6 >>> 8;
 if (i1) if (i6 >>> 0 > 16777215) i3 = 31; else {
  i15 = (i1 + 1048320 | 0) >>> 16 & 8;
  i16 = i1 << i15;
  i14 = (i16 + 520192 | 0) >>> 16 & 4;
  i16 = i16 << i14;
  i3 = (i16 + 245760 | 0) >>> 16 & 2;
  i3 = 14 - (i14 | i15 | i3) + (i16 << i3 >>> 15) | 0;
  i3 = i6 >>> (i3 + 7 | 0) & 1 | i3 << 1;
 } else i3 = 0;
 i4 = 37056 + (i3 << 2) | 0;
 HEAP32[i17 + 28 >> 2] = i3;
 HEAP32[i17 + 20 >> 2] = 0;
 HEAP32[i17 + 16 >> 2] = 0;
 i1 = HEAP32[9189] | 0;
 i2 = 1 << i3;
 if (!(i1 & i2)) {
  HEAP32[9189] = i1 | i2;
  HEAP32[i4 >> 2] = i17;
  HEAP32[i17 + 24 >> 2] = i4;
  HEAP32[i17 + 12 >> 2] = i17;
  HEAP32[i17 + 8 >> 2] = i17;
  return;
 }
 i5 = i6 << ((i3 | 0) == 31 ? 0 : 25 - (i3 >>> 1) | 0);
 i1 = HEAP32[i4 >> 2] | 0;
 while (1) {
  if ((HEAP32[i1 + 4 >> 2] & -8 | 0) == (i6 | 0)) {
   i3 = i1;
   i4 = 127;
   break;
  }
  i2 = i1 + 16 + (i5 >>> 31 << 2) | 0;
  i3 = HEAP32[i2 >> 2] | 0;
  if (!i3) {
   i4 = 124;
   break;
  } else {
   i5 = i5 << 1;
   i1 = i3;
  }
 }
 if ((i4 | 0) == 124) {
  if (i2 >>> 0 < (HEAP32[9192] | 0) >>> 0) _abort();
  HEAP32[i2 >> 2] = i17;
  HEAP32[i17 + 24 >> 2] = i1;
  HEAP32[i17 + 12 >> 2] = i17;
  HEAP32[i17 + 8 >> 2] = i17;
  return;
 } else if ((i4 | 0) == 127) {
  i1 = i3 + 8 | 0;
  i2 = HEAP32[i1 >> 2] | 0;
  i16 = HEAP32[9192] | 0;
  if (!(i2 >>> 0 >= i16 >>> 0 & i3 >>> 0 >= i16 >>> 0)) _abort();
  HEAP32[i2 + 12 >> 2] = i17;
  HEAP32[i1 >> 2] = i17;
  HEAP32[i17 + 8 >> 2] = i2;
  HEAP32[i17 + 12 >> 2] = i3;
  HEAP32[i17 + 24 >> 2] = 0;
  return;
 }
}

function __ZNSt3__112__next_primeEj(i5) {
 i5 = i5 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i6 = 0, i7 = 0, i8 = 0;
 L1 : do if (i5 >>> 0 < 212) {
  i1 = 8876;
  i2 = 48;
  L2 : while (1) {
   while (1) {
    if (!i2) break L2;
    i3 = (i2 | 0) / 2 | 0;
    i4 = i1 + (i3 << 2) | 0;
    if ((HEAP32[i4 >> 2] | 0) >>> 0 < i5 >>> 0) {
     i1 = i4;
     break;
    } else i2 = i3;
   }
   i1 = i1 + 4 | 0;
   i2 = i2 + -1 - i3 | 0;
  }
  i1 = HEAP32[i1 >> 2] | 0;
 } else {
  i6 = (i5 >>> 0) / 210 | 0;
  i7 = i6 * 210 | 0;
  i5 = i5 - i7 | 0;
  i1 = 9068;
  i2 = 48;
  L10 : while (1) {
   while (1) {
    if (!i2) break L10;
    i3 = (i2 | 0) / 2 | 0;
    i4 = i1 + (i3 << 2) | 0;
    if ((HEAP32[i4 >> 2] | 0) >>> 0 < i5 >>> 0) {
     i1 = i4;
     break;
    } else i2 = i3;
   }
   i1 = i1 + 4 | 0;
   i2 = i2 + -1 - i3 | 0;
  }
  i1 = i1 - 9068 >> 2;
  i5 = i1;
  i1 = (HEAP32[9068 + (i1 << 2) >> 2] | 0) + i7 | 0;
  while (1) {
   i4 = 5;
   while (1) {
    if (i4 >>> 0 >= 47) {
     i4 = 211;
     i8 = 17;
     break;
    }
    i2 = HEAP32[8876 + (i4 << 2) >> 2] | 0;
    i3 = (i1 >>> 0) / (i2 >>> 0) | 0;
    if (i3 >>> 0 < i2 >>> 0) break L1;
    if ((i1 | 0) == (Math_imul(i3, i2) | 0)) break; else i4 = i4 + 1 | 0;
   }
   L23 : do if ((i8 | 0) == 17) while (1) {
    i8 = 0;
    i2 = (i1 >>> 0) / (i4 >>> 0) | 0;
    if (i2 >>> 0 < i4 >>> 0) break L1;
    if ((i1 | 0) == (Math_imul(i2, i4) | 0)) break L23;
    i2 = i4 + 10 | 0;
    i3 = (i1 >>> 0) / (i2 >>> 0) | 0;
    if (i3 >>> 0 < i2 >>> 0) break L1;
    if ((i1 | 0) == (Math_imul(i3, i2) | 0)) break L23;
    i2 = i4 + 12 | 0;
    i3 = (i1 >>> 0) / (i2 >>> 0) | 0;
    if (i3 >>> 0 < i2 >>> 0) break L1;
    if ((i1 | 0) == (Math_imul(i3, i2) | 0)) break L23;
    i2 = i4 + 16 | 0;
    i3 = (i1 >>> 0) / (i2 >>> 0) | 0;
    if (i3 >>> 0 < i2 >>> 0) break L1;
    if ((i1 | 0) == (Math_imul(i3, i2) | 0)) break L23;
    i2 = i4 + 18 | 0;
    i3 = (i1 >>> 0) / (i2 >>> 0) | 0;
    if (i3 >>> 0 < i2 >>> 0) break L1;
    if ((i1 | 0) == (Math_imul(i3, i2) | 0)) break L23;
    i2 = i4 + 22 | 0;
    i3 = (i1 >>> 0) / (i2 >>> 0) | 0;
    if (i3 >>> 0 < i2 >>> 0) break L1;
    if ((i1 | 0) == (Math_imul(i3, i2) | 0)) break L23;
    i2 = i4 + 28 | 0;
    i3 = (i1 >>> 0) / (i2 >>> 0) | 0;
    if (i3 >>> 0 < i2 >>> 0) break L1;
    if ((i1 | 0) == (Math_imul(i3, i2) | 0)) break L23;
    i2 = i4 + 30 | 0;
    i3 = (i1 >>> 0) / (i2 >>> 0) | 0;
    if (i3 >>> 0 < i2 >>> 0) break L1;
    if ((i1 | 0) == (Math_imul(i3, i2) | 0)) break L23;
    i2 = i4 + 36 | 0;
    i3 = (i1 >>> 0) / (i2 >>> 0) | 0;
    if (i3 >>> 0 < i2 >>> 0) break L1;
    if ((i1 | 0) == (Math_imul(i3, i2) | 0)) break L23;
    i2 = i4 + 40 | 0;
    i3 = (i1 >>> 0) / (i2 >>> 0) | 0;
    if (i3 >>> 0 < i2 >>> 0) break L1;
    if ((i1 | 0) == (Math_imul(i3, i2) | 0)) break L23;
    i2 = i4 + 42 | 0;
    i3 = (i1 >>> 0) / (i2 >>> 0) | 0;
    if (i3 >>> 0 < i2 >>> 0) break L1;
    if ((i1 | 0) == (Math_imul(i3, i2) | 0)) break L23;
    i2 = i4 + 46 | 0;
    i3 = (i1 >>> 0) / (i2 >>> 0) | 0;
    if (i3 >>> 0 < i2 >>> 0) break L1;
    if ((i1 | 0) == (Math_imul(i3, i2) | 0)) break L23;
    i2 = i4 + 52 | 0;
    i3 = (i1 >>> 0) / (i2 >>> 0) | 0;
    if (i3 >>> 0 < i2 >>> 0) break L1;
    if ((i1 | 0) == (Math_imul(i3, i2) | 0)) break L23;
    i2 = i4 + 58 | 0;
    i3 = (i1 >>> 0) / (i2 >>> 0) | 0;
    if (i3 >>> 0 < i2 >>> 0) break L1;
    if ((i1 | 0) == (Math_imul(i3, i2) | 0)) break L23;
    i2 = i4 + 60 | 0;
    i3 = (i1 >>> 0) / (i2 >>> 0) | 0;
    if (i3 >>> 0 < i2 >>> 0) break L1;
    if ((i1 | 0) == (Math_imul(i3, i2) | 0)) break L23;
    i2 = i4 + 66 | 0;
    i3 = (i1 >>> 0) / (i2 >>> 0) | 0;
    if (i3 >>> 0 < i2 >>> 0) break L1;
    if ((i1 | 0) == (Math_imul(i3, i2) | 0)) break L23;
    i2 = i4 + 70 | 0;
    i3 = (i1 >>> 0) / (i2 >>> 0) | 0;
    if (i3 >>> 0 < i2 >>> 0) break L1;
    if ((i1 | 0) == (Math_imul(i3, i2) | 0)) break L23;
    i2 = i4 + 72 | 0;
    i3 = (i1 >>> 0) / (i2 >>> 0) | 0;
    if (i3 >>> 0 < i2 >>> 0) break L1;
    if ((i1 | 0) == (Math_imul(i3, i2) | 0)) break L23;
    i2 = i4 + 78 | 0;
    i3 = (i1 >>> 0) / (i2 >>> 0) | 0;
    if (i3 >>> 0 < i2 >>> 0) break L1;
    if ((i1 | 0) == (Math_imul(i3, i2) | 0)) break L23;
    i2 = i4 + 82 | 0;
    i3 = (i1 >>> 0) / (i2 >>> 0) | 0;
    if (i3 >>> 0 < i2 >>> 0) break L1;
    if ((i1 | 0) == (Math_imul(i3, i2) | 0)) break L23;
    i2 = i4 + 88 | 0;
    i3 = (i1 >>> 0) / (i2 >>> 0) | 0;
    if (i3 >>> 0 < i2 >>> 0) break L1;
    if ((i1 | 0) == (Math_imul(i3, i2) | 0)) break L23;
    i2 = i4 + 96 | 0;
    i3 = (i1 >>> 0) / (i2 >>> 0) | 0;
    if (i3 >>> 0 < i2 >>> 0) break L1;
    if ((i1 | 0) == (Math_imul(i3, i2) | 0)) break L23;
    i2 = i4 + 100 | 0;
    i3 = (i1 >>> 0) / (i2 >>> 0) | 0;
    if (i3 >>> 0 < i2 >>> 0) break L1;
    if ((i1 | 0) == (Math_imul(i3, i2) | 0)) break L23;
    i2 = i4 + 102 | 0;
    i3 = (i1 >>> 0) / (i2 >>> 0) | 0;
    if (i3 >>> 0 < i2 >>> 0) break L1;
    if ((i1 | 0) == (Math_imul(i3, i2) | 0)) break L23;
    i2 = i4 + 106 | 0;
    i3 = (i1 >>> 0) / (i2 >>> 0) | 0;
    if (i3 >>> 0 < i2 >>> 0) break L1;
    if ((i1 | 0) == (Math_imul(i3, i2) | 0)) break L23;
    i2 = i4 + 108 | 0;
    i3 = (i1 >>> 0) / (i2 >>> 0) | 0;
    if (i3 >>> 0 < i2 >>> 0) break L1;
    if ((i1 | 0) == (Math_imul(i3, i2) | 0)) break L23;
    i2 = i4 + 112 | 0;
    i3 = (i1 >>> 0) / (i2 >>> 0) | 0;
    if (i3 >>> 0 < i2 >>> 0) break L1;
    if ((i1 | 0) == (Math_imul(i3, i2) | 0)) break L23;
    i2 = i4 + 120 | 0;
    i3 = (i1 >>> 0) / (i2 >>> 0) | 0;
    if (i3 >>> 0 < i2 >>> 0) break L1;
    if ((i1 | 0) == (Math_imul(i3, i2) | 0)) break L23;
    i2 = i4 + 126 | 0;
    i3 = (i1 >>> 0) / (i2 >>> 0) | 0;
    if (i3 >>> 0 < i2 >>> 0) break L1;
    if ((i1 | 0) == (Math_imul(i3, i2) | 0)) break L23;
    i2 = i4 + 130 | 0;
    i3 = (i1 >>> 0) / (i2 >>> 0) | 0;
    if (i3 >>> 0 < i2 >>> 0) break L1;
    if ((i1 | 0) == (Math_imul(i3, i2) | 0)) break L23;
    i2 = i4 + 136 | 0;
    i3 = (i1 >>> 0) / (i2 >>> 0) | 0;
    if (i3 >>> 0 < i2 >>> 0) break L1;
    if ((i1 | 0) == (Math_imul(i3, i2) | 0)) break L23;
    i2 = i4 + 138 | 0;
    i3 = (i1 >>> 0) / (i2 >>> 0) | 0;
    if (i3 >>> 0 < i2 >>> 0) break L1;
    if ((i1 | 0) == (Math_imul(i3, i2) | 0)) break L23;
    i2 = i4 + 142 | 0;
    i3 = (i1 >>> 0) / (i2 >>> 0) | 0;
    if (i3 >>> 0 < i2 >>> 0) break L1;
    if ((i1 | 0) == (Math_imul(i3, i2) | 0)) break L23;
    i2 = i4 + 148 | 0;
    i3 = (i1 >>> 0) / (i2 >>> 0) | 0;
    if (i3 >>> 0 < i2 >>> 0) break L1;
    if ((i1 | 0) == (Math_imul(i3, i2) | 0)) break L23;
    i2 = i4 + 150 | 0;
    i3 = (i1 >>> 0) / (i2 >>> 0) | 0;
    if (i3 >>> 0 < i2 >>> 0) break L1;
    if ((i1 | 0) == (Math_imul(i3, i2) | 0)) break L23;
    i2 = i4 + 156 | 0;
    i3 = (i1 >>> 0) / (i2 >>> 0) | 0;
    if (i3 >>> 0 < i2 >>> 0) break L1;
    if ((i1 | 0) == (Math_imul(i3, i2) | 0)) break L23;
    i2 = i4 + 162 | 0;
    i3 = (i1 >>> 0) / (i2 >>> 0) | 0;
    if (i3 >>> 0 < i2 >>> 0) break L1;
    if ((i1 | 0) == (Math_imul(i3, i2) | 0)) break L23;
    i2 = i4 + 166 | 0;
    i3 = (i1 >>> 0) / (i2 >>> 0) | 0;
    if (i3 >>> 0 < i2 >>> 0) break L1;
    if ((i1 | 0) == (Math_imul(i3, i2) | 0)) break L23;
    i2 = i4 + 168 | 0;
    i3 = (i1 >>> 0) / (i2 >>> 0) | 0;
    if (i3 >>> 0 < i2 >>> 0) break L1;
    if ((i1 | 0) == (Math_imul(i3, i2) | 0)) break L23;
    i2 = i4 + 172 | 0;
    i3 = (i1 >>> 0) / (i2 >>> 0) | 0;
    if (i3 >>> 0 < i2 >>> 0) break L1;
    if ((i1 | 0) == (Math_imul(i3, i2) | 0)) break L23;
    i2 = i4 + 178 | 0;
    i3 = (i1 >>> 0) / (i2 >>> 0) | 0;
    if (i3 >>> 0 < i2 >>> 0) break L1;
    if ((i1 | 0) == (Math_imul(i3, i2) | 0)) break L23;
    i2 = i4 + 180 | 0;
    i3 = (i1 >>> 0) / (i2 >>> 0) | 0;
    if (i3 >>> 0 < i2 >>> 0) break L1;
    if ((i1 | 0) == (Math_imul(i3, i2) | 0)) break L23;
    i2 = i4 + 186 | 0;
    i3 = (i1 >>> 0) / (i2 >>> 0) | 0;
    if (i3 >>> 0 < i2 >>> 0) break L1;
    if ((i1 | 0) == (Math_imul(i3, i2) | 0)) break L23;
    i2 = i4 + 190 | 0;
    i3 = (i1 >>> 0) / (i2 >>> 0) | 0;
    if (i3 >>> 0 < i2 >>> 0) break L1;
    if ((i1 | 0) == (Math_imul(i3, i2) | 0)) break L23;
    i2 = i4 + 192 | 0;
    i3 = (i1 >>> 0) / (i2 >>> 0) | 0;
    if (i3 >>> 0 < i2 >>> 0) break L1;
    if ((i1 | 0) == (Math_imul(i3, i2) | 0)) break L23;
    i2 = i4 + 196 | 0;
    i3 = (i1 >>> 0) / (i2 >>> 0) | 0;
    if (i3 >>> 0 < i2 >>> 0) break L1;
    if ((i1 | 0) == (Math_imul(i3, i2) | 0)) break L23;
    i2 = i4 + 198 | 0;
    i3 = (i1 >>> 0) / (i2 >>> 0) | 0;
    if (i3 >>> 0 < i2 >>> 0) break L1;
    if ((i1 | 0) == (Math_imul(i3, i2) | 0)) break L23;
    i2 = i4 + 208 | 0;
    i3 = (i1 >>> 0) / (i2 >>> 0) | 0;
    if (i3 >>> 0 < i2 >>> 0) break L1;
    if ((i1 | 0) == (Math_imul(i3, i2) | 0)) break; else {
     i4 = i4 + 210 | 0;
     i8 = 17;
    }
   } while (0);
   i7 = i5 + 1 | 0;
   i4 = (i7 | 0) == 48;
   i1 = (i4 & 1) + i6 | 0;
   i7 = i4 ? 0 : i7;
   i5 = i7;
   i6 = i1;
   i1 = (HEAP32[9068 + (i7 << 2) >> 2] | 0) + (i1 * 210 | 0) | 0;
  }
 } while (0);
 return i1 | 0;
}
function __ZN4wasm10PostWalkerINS_17RemoveUnusedNamesENS_7VisitorIS1_vEEE4scanEPS1_PPNS_10ExpressionE(i1, i2) {
 i1 = i1 | 0;
 i2 = i2 | 0;
 var i3 = 0, i4 = 0, i5 = 0;
 i5 = HEAP32[i2 >> 2] | 0;
 L1 : do switch (HEAP32[i5 >> 2] | 0) {
 case 0:
  {
   _abort();
   break;
  }
 case 1:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_17RemoveUnusedNamesENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 126, i2);
   i3 = __ZN4wasm10Expression4castINS_5BlockEEEPT_v(i5) | 0;
   i1 = i3 + 12 | 0;
   i3 = (HEAP32[i3 + 16 >> 2] | 0) - (HEAP32[i1 >> 2] | 0) >> 2;
   while (1) {
    i2 = i3 + -1 | 0;
    if ((i3 | 0) <= 0) break L1;
    __ZN4wasm6WalkerINS_17RemoveUnusedNamesENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 125, (HEAP32[i1 >> 2] | 0) + (i2 << 2) | 0);
    i3 = i2;
   }
  }
 case 2:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_17RemoveUnusedNamesENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 127, i2);
   __ZN4wasm6WalkerINS_17RemoveUnusedNamesENS_7VisitorIS1_vEEE13maybePushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 125, (__ZN4wasm10Expression4castINS_2IfEEEPT_v(i5) | 0) + 16 | 0);
   __ZN4wasm6WalkerINS_17RemoveUnusedNamesENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 125, (__ZN4wasm10Expression4castINS_2IfEEEPT_v(i5) | 0) + 12 | 0);
   __ZN4wasm6WalkerINS_17RemoveUnusedNamesENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 125, (__ZN4wasm10Expression4castINS_2IfEEEPT_v(i5) | 0) + 8 | 0);
   break;
  }
 case 3:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_17RemoveUnusedNamesENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 128, i2);
   __ZN4wasm6WalkerINS_17RemoveUnusedNamesENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 125, (__ZN4wasm10Expression4castINS_4LoopEEEPT_v(i5) | 0) + 16 | 0);
   break;
  }
 case 4:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_17RemoveUnusedNamesENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 129, i2);
   __ZN4wasm6WalkerINS_17RemoveUnusedNamesENS_7VisitorIS1_vEEE13maybePushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 125, (__ZN4wasm10Expression4castINS_5BreakEEEPT_v(i5) | 0) + 16 | 0);
   __ZN4wasm6WalkerINS_17RemoveUnusedNamesENS_7VisitorIS1_vEEE13maybePushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 125, (__ZN4wasm10Expression4castINS_5BreakEEEPT_v(i5) | 0) + 12 | 0);
   break;
  }
 case 5:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_17RemoveUnusedNamesENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 130, i2);
   __ZN4wasm6WalkerINS_17RemoveUnusedNamesENS_7VisitorIS1_vEEE13maybePushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 125, (__ZN4wasm10Expression4castINS_6SwitchEEEPT_v(i5) | 0) + 28 | 0);
   __ZN4wasm6WalkerINS_17RemoveUnusedNamesENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 125, (__ZN4wasm10Expression4castINS_6SwitchEEEPT_v(i5) | 0) + 24 | 0);
   break;
  }
 case 6:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_17RemoveUnusedNamesENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 131, i2);
   i3 = __ZN4wasm10Expression4castINS_4CallEEEPT_v(i5) | 0;
   i1 = i3 + 8 | 0;
   i3 = (HEAP32[i3 + 12 >> 2] | 0) - (HEAP32[i1 >> 2] | 0) >> 2;
   while (1) {
    i2 = i3 + -1 | 0;
    if ((i3 | 0) <= 0) break L1;
    __ZN4wasm6WalkerINS_17RemoveUnusedNamesENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 125, (HEAP32[i1 >> 2] | 0) + (i2 << 2) | 0);
    i3 = i2;
   }
  }
 case 7:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_17RemoveUnusedNamesENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 132, i2);
   i3 = __ZN4wasm10Expression4castINS_10CallImportEEEPT_v(i5) | 0;
   i1 = i3 + 8 | 0;
   i3 = (HEAP32[i3 + 12 >> 2] | 0) - (HEAP32[i1 >> 2] | 0) >> 2;
   while (1) {
    i2 = i3 + -1 | 0;
    if ((i3 | 0) <= 0) break L1;
    __ZN4wasm6WalkerINS_17RemoveUnusedNamesENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 125, (HEAP32[i1 >> 2] | 0) + (i2 << 2) | 0);
    i3 = i2;
   }
  }
 case 8:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_17RemoveUnusedNamesENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 133, i2);
   i3 = __ZN4wasm10Expression4castINS_12CallIndirectEEEPT_v(i5) | 0;
   i1 = i3 + 8 | 0;
   i3 = (HEAP32[i3 + 12 >> 2] | 0) - (HEAP32[i1 >> 2] | 0) >> 2;
   while (1) {
    i2 = i3 + -1 | 0;
    if ((i3 | 0) <= 0) break;
    __ZN4wasm6WalkerINS_17RemoveUnusedNamesENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 125, (HEAP32[i1 >> 2] | 0) + (i2 << 2) | 0);
    i3 = i2;
   }
   __ZN4wasm6WalkerINS_17RemoveUnusedNamesENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 125, (__ZN4wasm10Expression4castINS_12CallIndirectEEEPT_v(i5) | 0) + 24 | 0);
   break;
  }
 case 9:
  {
   __ZN4wasm6WalkerINS_17RemoveUnusedNamesENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i1 + 16 | 0, 134, i2);
   break;
  }
 case 10:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_17RemoveUnusedNamesENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 135, i2);
   __ZN4wasm6WalkerINS_17RemoveUnusedNamesENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 125, (__ZN4wasm10Expression4castINS_8SetLocalEEEPT_v(i5) | 0) + 12 | 0);
   break;
  }
 case 11:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_17RemoveUnusedNamesENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 136, i2);
   __ZN4wasm6WalkerINS_17RemoveUnusedNamesENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 125, (__ZN4wasm10Expression4castINS_4LoadEEEPT_v(i5) | 0) + 24 | 0);
   break;
  }
 case 12:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_17RemoveUnusedNamesENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 137, i2);
   __ZN4wasm6WalkerINS_17RemoveUnusedNamesENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 125, (__ZN4wasm10Expression4castINS_5StoreEEEPT_v(i5) | 0) + 24 | 0);
   __ZN4wasm6WalkerINS_17RemoveUnusedNamesENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 125, (__ZN4wasm10Expression4castINS_5StoreEEEPT_v(i5) | 0) + 20 | 0);
   break;
  }
 case 13:
  {
   __ZN4wasm6WalkerINS_17RemoveUnusedNamesENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i1 + 16 | 0, 138, i2);
   break;
  }
 case 14:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_17RemoveUnusedNamesENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 139, i2);
   __ZN4wasm6WalkerINS_17RemoveUnusedNamesENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 125, (__ZN4wasm10Expression4castINS_5UnaryEEEPT_v(i5) | 0) + 12 | 0);
   break;
  }
 case 15:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_17RemoveUnusedNamesENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 140, i2);
   __ZN4wasm6WalkerINS_17RemoveUnusedNamesENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 125, (__ZN4wasm10Expression4castINS_6BinaryEEEPT_v(i5) | 0) + 16 | 0);
   __ZN4wasm6WalkerINS_17RemoveUnusedNamesENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 125, (__ZN4wasm10Expression4castINS_6BinaryEEEPT_v(i5) | 0) + 12 | 0);
   break;
  }
 case 16:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_17RemoveUnusedNamesENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 141, i2);
   __ZN4wasm6WalkerINS_17RemoveUnusedNamesENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 125, (__ZN4wasm10Expression4castINS_6SelectEEEPT_v(i5) | 0) + 16 | 0);
   __ZN4wasm6WalkerINS_17RemoveUnusedNamesENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 125, (__ZN4wasm10Expression4castINS_6SelectEEEPT_v(i5) | 0) + 12 | 0);
   __ZN4wasm6WalkerINS_17RemoveUnusedNamesENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 125, (__ZN4wasm10Expression4castINS_6SelectEEEPT_v(i5) | 0) + 8 | 0);
   break;
  }
 case 17:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_17RemoveUnusedNamesENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 142, i2);
   __ZN4wasm6WalkerINS_17RemoveUnusedNamesENS_7VisitorIS1_vEEE13maybePushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 125, (__ZN4wasm10Expression4castINS_6ReturnEEEPT_v(i5) | 0) + 8 | 0);
   break;
  }
 case 18:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_17RemoveUnusedNamesENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 143, i2);
   i3 = __ZN4wasm10Expression4castINS_4HostEEEPT_v(i5) | 0;
   i1 = i3 + 16 | 0;
   i3 = (HEAP32[i3 + 20 >> 2] | 0) - (HEAP32[i1 >> 2] | 0) >> 2;
   while (1) {
    i2 = i3 + -1 | 0;
    if ((i3 | 0) <= 0) break L1;
    __ZN4wasm6WalkerINS_17RemoveUnusedNamesENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 125, (HEAP32[i1 >> 2] | 0) + (i2 << 2) | 0);
    i3 = i2;
   }
  }
 case 19:
  {
   __ZN4wasm6WalkerINS_17RemoveUnusedNamesENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i1 + 16 | 0, 144, i2);
   break;
  }
 case 20:
  {
   __ZN4wasm6WalkerINS_17RemoveUnusedNamesENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i1 + 16 | 0, 145, i2);
   break;
  }
 default:
  {}
 } while (0);
 return;
}

function __ZN4wasm10PostWalkerINS_15SetLocalRemoverENS_7VisitorIS1_vEEE4scanEPS1_PPNS_10ExpressionE(i1, i2) {
 i1 = i1 | 0;
 i2 = i2 | 0;
 var i3 = 0, i4 = 0, i5 = 0;
 i5 = HEAP32[i2 >> 2] | 0;
 L1 : do switch (HEAP32[i5 >> 2] | 0) {
 case 0:
  {
   _abort();
   break;
  }
 case 1:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_15SetLocalRemoverENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 237, i2);
   i3 = __ZN4wasm10Expression4castINS_5BlockEEEPT_v(i5) | 0;
   i1 = i3 + 12 | 0;
   i3 = (HEAP32[i3 + 16 >> 2] | 0) - (HEAP32[i1 >> 2] | 0) >> 2;
   while (1) {
    i2 = i3 + -1 | 0;
    if ((i3 | 0) <= 0) break L1;
    __ZN4wasm6WalkerINS_15SetLocalRemoverENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 236, (HEAP32[i1 >> 2] | 0) + (i2 << 2) | 0);
    i3 = i2;
   }
  }
 case 2:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_15SetLocalRemoverENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 238, i2);
   __ZN4wasm6WalkerINS_15SetLocalRemoverENS_7VisitorIS1_vEEE13maybePushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 236, (__ZN4wasm10Expression4castINS_2IfEEEPT_v(i5) | 0) + 16 | 0);
   __ZN4wasm6WalkerINS_15SetLocalRemoverENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 236, (__ZN4wasm10Expression4castINS_2IfEEEPT_v(i5) | 0) + 12 | 0);
   __ZN4wasm6WalkerINS_15SetLocalRemoverENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 236, (__ZN4wasm10Expression4castINS_2IfEEEPT_v(i5) | 0) + 8 | 0);
   break;
  }
 case 3:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_15SetLocalRemoverENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 239, i2);
   __ZN4wasm6WalkerINS_15SetLocalRemoverENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 236, (__ZN4wasm10Expression4castINS_4LoopEEEPT_v(i5) | 0) + 16 | 0);
   break;
  }
 case 4:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_15SetLocalRemoverENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 240, i2);
   __ZN4wasm6WalkerINS_15SetLocalRemoverENS_7VisitorIS1_vEEE13maybePushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 236, (__ZN4wasm10Expression4castINS_5BreakEEEPT_v(i5) | 0) + 16 | 0);
   __ZN4wasm6WalkerINS_15SetLocalRemoverENS_7VisitorIS1_vEEE13maybePushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 236, (__ZN4wasm10Expression4castINS_5BreakEEEPT_v(i5) | 0) + 12 | 0);
   break;
  }
 case 5:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_15SetLocalRemoverENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 241, i2);
   __ZN4wasm6WalkerINS_15SetLocalRemoverENS_7VisitorIS1_vEEE13maybePushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 236, (__ZN4wasm10Expression4castINS_6SwitchEEEPT_v(i5) | 0) + 28 | 0);
   __ZN4wasm6WalkerINS_15SetLocalRemoverENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 236, (__ZN4wasm10Expression4castINS_6SwitchEEEPT_v(i5) | 0) + 24 | 0);
   break;
  }
 case 6:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_15SetLocalRemoverENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 242, i2);
   i3 = __ZN4wasm10Expression4castINS_4CallEEEPT_v(i5) | 0;
   i1 = i3 + 8 | 0;
   i3 = (HEAP32[i3 + 12 >> 2] | 0) - (HEAP32[i1 >> 2] | 0) >> 2;
   while (1) {
    i2 = i3 + -1 | 0;
    if ((i3 | 0) <= 0) break L1;
    __ZN4wasm6WalkerINS_15SetLocalRemoverENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 236, (HEAP32[i1 >> 2] | 0) + (i2 << 2) | 0);
    i3 = i2;
   }
  }
 case 7:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_15SetLocalRemoverENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 243, i2);
   i3 = __ZN4wasm10Expression4castINS_10CallImportEEEPT_v(i5) | 0;
   i1 = i3 + 8 | 0;
   i3 = (HEAP32[i3 + 12 >> 2] | 0) - (HEAP32[i1 >> 2] | 0) >> 2;
   while (1) {
    i2 = i3 + -1 | 0;
    if ((i3 | 0) <= 0) break L1;
    __ZN4wasm6WalkerINS_15SetLocalRemoverENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 236, (HEAP32[i1 >> 2] | 0) + (i2 << 2) | 0);
    i3 = i2;
   }
  }
 case 8:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_15SetLocalRemoverENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 244, i2);
   i3 = __ZN4wasm10Expression4castINS_12CallIndirectEEEPT_v(i5) | 0;
   i1 = i3 + 8 | 0;
   i3 = (HEAP32[i3 + 12 >> 2] | 0) - (HEAP32[i1 >> 2] | 0) >> 2;
   while (1) {
    i2 = i3 + -1 | 0;
    if ((i3 | 0) <= 0) break;
    __ZN4wasm6WalkerINS_15SetLocalRemoverENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 236, (HEAP32[i1 >> 2] | 0) + (i2 << 2) | 0);
    i3 = i2;
   }
   __ZN4wasm6WalkerINS_15SetLocalRemoverENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 236, (__ZN4wasm10Expression4castINS_12CallIndirectEEEPT_v(i5) | 0) + 24 | 0);
   break;
  }
 case 9:
  {
   __ZN4wasm6WalkerINS_15SetLocalRemoverENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i1 + 16 | 0, 245, i2);
   break;
  }
 case 10:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_15SetLocalRemoverENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 246, i2);
   __ZN4wasm6WalkerINS_15SetLocalRemoverENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 236, (__ZN4wasm10Expression4castINS_8SetLocalEEEPT_v(i5) | 0) + 12 | 0);
   break;
  }
 case 11:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_15SetLocalRemoverENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 247, i2);
   __ZN4wasm6WalkerINS_15SetLocalRemoverENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 236, (__ZN4wasm10Expression4castINS_4LoadEEEPT_v(i5) | 0) + 24 | 0);
   break;
  }
 case 12:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_15SetLocalRemoverENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 248, i2);
   __ZN4wasm6WalkerINS_15SetLocalRemoverENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 236, (__ZN4wasm10Expression4castINS_5StoreEEEPT_v(i5) | 0) + 24 | 0);
   __ZN4wasm6WalkerINS_15SetLocalRemoverENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 236, (__ZN4wasm10Expression4castINS_5StoreEEEPT_v(i5) | 0) + 20 | 0);
   break;
  }
 case 13:
  {
   __ZN4wasm6WalkerINS_15SetLocalRemoverENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i1 + 16 | 0, 249, i2);
   break;
  }
 case 14:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_15SetLocalRemoverENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 250, i2);
   __ZN4wasm6WalkerINS_15SetLocalRemoverENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 236, (__ZN4wasm10Expression4castINS_5UnaryEEEPT_v(i5) | 0) + 12 | 0);
   break;
  }
 case 15:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_15SetLocalRemoverENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 251, i2);
   __ZN4wasm6WalkerINS_15SetLocalRemoverENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 236, (__ZN4wasm10Expression4castINS_6BinaryEEEPT_v(i5) | 0) + 16 | 0);
   __ZN4wasm6WalkerINS_15SetLocalRemoverENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 236, (__ZN4wasm10Expression4castINS_6BinaryEEEPT_v(i5) | 0) + 12 | 0);
   break;
  }
 case 16:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_15SetLocalRemoverENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 252, i2);
   __ZN4wasm6WalkerINS_15SetLocalRemoverENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 236, (__ZN4wasm10Expression4castINS_6SelectEEEPT_v(i5) | 0) + 16 | 0);
   __ZN4wasm6WalkerINS_15SetLocalRemoverENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 236, (__ZN4wasm10Expression4castINS_6SelectEEEPT_v(i5) | 0) + 12 | 0);
   __ZN4wasm6WalkerINS_15SetLocalRemoverENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 236, (__ZN4wasm10Expression4castINS_6SelectEEEPT_v(i5) | 0) + 8 | 0);
   break;
  }
 case 17:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_15SetLocalRemoverENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 253, i2);
   __ZN4wasm6WalkerINS_15SetLocalRemoverENS_7VisitorIS1_vEEE13maybePushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 236, (__ZN4wasm10Expression4castINS_6ReturnEEEPT_v(i5) | 0) + 8 | 0);
   break;
  }
 case 18:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_15SetLocalRemoverENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 254, i2);
   i3 = __ZN4wasm10Expression4castINS_4HostEEEPT_v(i5) | 0;
   i1 = i3 + 16 | 0;
   i3 = (HEAP32[i3 + 20 >> 2] | 0) - (HEAP32[i1 >> 2] | 0) >> 2;
   while (1) {
    i2 = i3 + -1 | 0;
    if ((i3 | 0) <= 0) break L1;
    __ZN4wasm6WalkerINS_15SetLocalRemoverENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 236, (HEAP32[i1 >> 2] | 0) + (i2 << 2) | 0);
    i3 = i2;
   }
  }
 case 19:
  {
   __ZN4wasm6WalkerINS_15SetLocalRemoverENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i1 + 16 | 0, 255, i2);
   break;
  }
 case 20:
  {
   __ZN4wasm6WalkerINS_15SetLocalRemoverENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i1 + 16 | 0, 256, i2);
   break;
  }
 default:
  {}
 } while (0);
 return;
}

function __ZN4wasm10PostWalkerINS_15RemoveUnusedBrsENS_7VisitorIS1_vEEE4scanEPS1_PPNS_10ExpressionE(i1, i2) {
 i1 = i1 | 0;
 i2 = i2 | 0;
 var i3 = 0, i4 = 0, i5 = 0;
 i5 = HEAP32[i2 >> 2] | 0;
 L1 : do switch (HEAP32[i5 >> 2] | 0) {
 case 0:
  {
   _abort();
   break;
  }
 case 1:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_15RemoveUnusedBrsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 106, i2);
   i3 = __ZN4wasm10Expression4castINS_5BlockEEEPT_v(i5) | 0;
   i1 = i3 + 12 | 0;
   i3 = (HEAP32[i3 + 16 >> 2] | 0) - (HEAP32[i1 >> 2] | 0) >> 2;
   while (1) {
    i2 = i3 + -1 | 0;
    if ((i3 | 0) <= 0) break L1;
    __ZN4wasm6WalkerINS_15RemoveUnusedBrsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 101, (HEAP32[i1 >> 2] | 0) + (i2 << 2) | 0);
    i3 = i2;
   }
  }
 case 2:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_15RemoveUnusedBrsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 103, i2);
   __ZN4wasm6WalkerINS_15RemoveUnusedBrsENS_7VisitorIS1_vEEE13maybePushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 101, (__ZN4wasm10Expression4castINS_2IfEEEPT_v(i5) | 0) + 16 | 0);
   __ZN4wasm6WalkerINS_15RemoveUnusedBrsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 101, (__ZN4wasm10Expression4castINS_2IfEEEPT_v(i5) | 0) + 12 | 0);
   __ZN4wasm6WalkerINS_15RemoveUnusedBrsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 101, (__ZN4wasm10Expression4castINS_2IfEEEPT_v(i5) | 0) + 8 | 0);
   break;
  }
 case 3:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_15RemoveUnusedBrsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 107, i2);
   __ZN4wasm6WalkerINS_15RemoveUnusedBrsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 101, (__ZN4wasm10Expression4castINS_4LoopEEEPT_v(i5) | 0) + 16 | 0);
   break;
  }
 case 4:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_15RemoveUnusedBrsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 108, i2);
   __ZN4wasm6WalkerINS_15RemoveUnusedBrsENS_7VisitorIS1_vEEE13maybePushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 101, (__ZN4wasm10Expression4castINS_5BreakEEEPT_v(i5) | 0) + 16 | 0);
   __ZN4wasm6WalkerINS_15RemoveUnusedBrsENS_7VisitorIS1_vEEE13maybePushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 101, (__ZN4wasm10Expression4castINS_5BreakEEEPT_v(i5) | 0) + 12 | 0);
   break;
  }
 case 5:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_15RemoveUnusedBrsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 109, i2);
   __ZN4wasm6WalkerINS_15RemoveUnusedBrsENS_7VisitorIS1_vEEE13maybePushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 101, (__ZN4wasm10Expression4castINS_6SwitchEEEPT_v(i5) | 0) + 28 | 0);
   __ZN4wasm6WalkerINS_15RemoveUnusedBrsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 101, (__ZN4wasm10Expression4castINS_6SwitchEEEPT_v(i5) | 0) + 24 | 0);
   break;
  }
 case 6:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_15RemoveUnusedBrsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 110, i2);
   i3 = __ZN4wasm10Expression4castINS_4CallEEEPT_v(i5) | 0;
   i1 = i3 + 8 | 0;
   i3 = (HEAP32[i3 + 12 >> 2] | 0) - (HEAP32[i1 >> 2] | 0) >> 2;
   while (1) {
    i2 = i3 + -1 | 0;
    if ((i3 | 0) <= 0) break L1;
    __ZN4wasm6WalkerINS_15RemoveUnusedBrsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 101, (HEAP32[i1 >> 2] | 0) + (i2 << 2) | 0);
    i3 = i2;
   }
  }
 case 7:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_15RemoveUnusedBrsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 111, i2);
   i3 = __ZN4wasm10Expression4castINS_10CallImportEEEPT_v(i5) | 0;
   i1 = i3 + 8 | 0;
   i3 = (HEAP32[i3 + 12 >> 2] | 0) - (HEAP32[i1 >> 2] | 0) >> 2;
   while (1) {
    i2 = i3 + -1 | 0;
    if ((i3 | 0) <= 0) break L1;
    __ZN4wasm6WalkerINS_15RemoveUnusedBrsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 101, (HEAP32[i1 >> 2] | 0) + (i2 << 2) | 0);
    i3 = i2;
   }
  }
 case 8:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_15RemoveUnusedBrsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 112, i2);
   i3 = __ZN4wasm10Expression4castINS_12CallIndirectEEEPT_v(i5) | 0;
   i1 = i3 + 8 | 0;
   i3 = (HEAP32[i3 + 12 >> 2] | 0) - (HEAP32[i1 >> 2] | 0) >> 2;
   while (1) {
    i2 = i3 + -1 | 0;
    if ((i3 | 0) <= 0) break;
    __ZN4wasm6WalkerINS_15RemoveUnusedBrsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 101, (HEAP32[i1 >> 2] | 0) + (i2 << 2) | 0);
    i3 = i2;
   }
   __ZN4wasm6WalkerINS_15RemoveUnusedBrsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 101, (__ZN4wasm10Expression4castINS_12CallIndirectEEEPT_v(i5) | 0) + 24 | 0);
   break;
  }
 case 9:
  {
   __ZN4wasm6WalkerINS_15RemoveUnusedBrsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i1 + 16 | 0, 113, i2);
   break;
  }
 case 10:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_15RemoveUnusedBrsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 114, i2);
   __ZN4wasm6WalkerINS_15RemoveUnusedBrsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 101, (__ZN4wasm10Expression4castINS_8SetLocalEEEPT_v(i5) | 0) + 12 | 0);
   break;
  }
 case 11:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_15RemoveUnusedBrsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 115, i2);
   __ZN4wasm6WalkerINS_15RemoveUnusedBrsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 101, (__ZN4wasm10Expression4castINS_4LoadEEEPT_v(i5) | 0) + 24 | 0);
   break;
  }
 case 12:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_15RemoveUnusedBrsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 116, i2);
   __ZN4wasm6WalkerINS_15RemoveUnusedBrsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 101, (__ZN4wasm10Expression4castINS_5StoreEEEPT_v(i5) | 0) + 24 | 0);
   __ZN4wasm6WalkerINS_15RemoveUnusedBrsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 101, (__ZN4wasm10Expression4castINS_5StoreEEEPT_v(i5) | 0) + 20 | 0);
   break;
  }
 case 13:
  {
   __ZN4wasm6WalkerINS_15RemoveUnusedBrsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i1 + 16 | 0, 117, i2);
   break;
  }
 case 14:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_15RemoveUnusedBrsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 118, i2);
   __ZN4wasm6WalkerINS_15RemoveUnusedBrsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 101, (__ZN4wasm10Expression4castINS_5UnaryEEEPT_v(i5) | 0) + 12 | 0);
   break;
  }
 case 15:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_15RemoveUnusedBrsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 119, i2);
   __ZN4wasm6WalkerINS_15RemoveUnusedBrsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 101, (__ZN4wasm10Expression4castINS_6BinaryEEEPT_v(i5) | 0) + 16 | 0);
   __ZN4wasm6WalkerINS_15RemoveUnusedBrsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 101, (__ZN4wasm10Expression4castINS_6BinaryEEEPT_v(i5) | 0) + 12 | 0);
   break;
  }
 case 16:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_15RemoveUnusedBrsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 120, i2);
   __ZN4wasm6WalkerINS_15RemoveUnusedBrsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 101, (__ZN4wasm10Expression4castINS_6SelectEEEPT_v(i5) | 0) + 16 | 0);
   __ZN4wasm6WalkerINS_15RemoveUnusedBrsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 101, (__ZN4wasm10Expression4castINS_6SelectEEEPT_v(i5) | 0) + 12 | 0);
   __ZN4wasm6WalkerINS_15RemoveUnusedBrsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 101, (__ZN4wasm10Expression4castINS_6SelectEEEPT_v(i5) | 0) + 8 | 0);
   break;
  }
 case 17:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_15RemoveUnusedBrsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 121, i2);
   __ZN4wasm6WalkerINS_15RemoveUnusedBrsENS_7VisitorIS1_vEEE13maybePushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 101, (__ZN4wasm10Expression4castINS_6ReturnEEEPT_v(i5) | 0) + 8 | 0);
   break;
  }
 case 18:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_15RemoveUnusedBrsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 122, i2);
   i3 = __ZN4wasm10Expression4castINS_4HostEEEPT_v(i5) | 0;
   i1 = i3 + 16 | 0;
   i3 = (HEAP32[i3 + 20 >> 2] | 0) - (HEAP32[i1 >> 2] | 0) >> 2;
   while (1) {
    i2 = i3 + -1 | 0;
    if ((i3 | 0) <= 0) break L1;
    __ZN4wasm6WalkerINS_15RemoveUnusedBrsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 101, (HEAP32[i1 >> 2] | 0) + (i2 << 2) | 0);
    i3 = i2;
   }
  }
 case 19:
  {
   __ZN4wasm6WalkerINS_15RemoveUnusedBrsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i1 + 16 | 0, 123, i2);
   break;
  }
 case 20:
  {
   __ZN4wasm6WalkerINS_15RemoveUnusedBrsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i1 + 16 | 0, 124, i2);
   break;
  }
 default:
  {}
 } while (0);
 return;
}

function __ZN4wasm10PostWalkerINS_15GetLocalCounterENS_7VisitorIS1_vEEE4scanEPS1_PPNS_10ExpressionE(i1, i2) {
 i1 = i1 | 0;
 i2 = i2 | 0;
 var i3 = 0, i4 = 0, i5 = 0;
 i5 = HEAP32[i2 >> 2] | 0;
 L1 : do switch (HEAP32[i5 >> 2] | 0) {
 case 0:
  {
   _abort();
   break;
  }
 case 1:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_15GetLocalCounterENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 216, i2);
   i3 = __ZN4wasm10Expression4castINS_5BlockEEEPT_v(i5) | 0;
   i1 = i3 + 12 | 0;
   i3 = (HEAP32[i3 + 16 >> 2] | 0) - (HEAP32[i1 >> 2] | 0) >> 2;
   while (1) {
    i2 = i3 + -1 | 0;
    if ((i3 | 0) <= 0) break L1;
    __ZN4wasm6WalkerINS_15GetLocalCounterENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 215, (HEAP32[i1 >> 2] | 0) + (i2 << 2) | 0);
    i3 = i2;
   }
  }
 case 2:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_15GetLocalCounterENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 217, i2);
   __ZN4wasm6WalkerINS_15GetLocalCounterENS_7VisitorIS1_vEEE13maybePushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 215, (__ZN4wasm10Expression4castINS_2IfEEEPT_v(i5) | 0) + 16 | 0);
   __ZN4wasm6WalkerINS_15GetLocalCounterENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 215, (__ZN4wasm10Expression4castINS_2IfEEEPT_v(i5) | 0) + 12 | 0);
   __ZN4wasm6WalkerINS_15GetLocalCounterENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 215, (__ZN4wasm10Expression4castINS_2IfEEEPT_v(i5) | 0) + 8 | 0);
   break;
  }
 case 3:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_15GetLocalCounterENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 218, i2);
   __ZN4wasm6WalkerINS_15GetLocalCounterENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 215, (__ZN4wasm10Expression4castINS_4LoopEEEPT_v(i5) | 0) + 16 | 0);
   break;
  }
 case 4:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_15GetLocalCounterENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 219, i2);
   __ZN4wasm6WalkerINS_15GetLocalCounterENS_7VisitorIS1_vEEE13maybePushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 215, (__ZN4wasm10Expression4castINS_5BreakEEEPT_v(i5) | 0) + 16 | 0);
   __ZN4wasm6WalkerINS_15GetLocalCounterENS_7VisitorIS1_vEEE13maybePushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 215, (__ZN4wasm10Expression4castINS_5BreakEEEPT_v(i5) | 0) + 12 | 0);
   break;
  }
 case 5:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_15GetLocalCounterENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 220, i2);
   __ZN4wasm6WalkerINS_15GetLocalCounterENS_7VisitorIS1_vEEE13maybePushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 215, (__ZN4wasm10Expression4castINS_6SwitchEEEPT_v(i5) | 0) + 28 | 0);
   __ZN4wasm6WalkerINS_15GetLocalCounterENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 215, (__ZN4wasm10Expression4castINS_6SwitchEEEPT_v(i5) | 0) + 24 | 0);
   break;
  }
 case 6:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_15GetLocalCounterENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 221, i2);
   i3 = __ZN4wasm10Expression4castINS_4CallEEEPT_v(i5) | 0;
   i1 = i3 + 8 | 0;
   i3 = (HEAP32[i3 + 12 >> 2] | 0) - (HEAP32[i1 >> 2] | 0) >> 2;
   while (1) {
    i2 = i3 + -1 | 0;
    if ((i3 | 0) <= 0) break L1;
    __ZN4wasm6WalkerINS_15GetLocalCounterENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 215, (HEAP32[i1 >> 2] | 0) + (i2 << 2) | 0);
    i3 = i2;
   }
  }
 case 7:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_15GetLocalCounterENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 222, i2);
   i3 = __ZN4wasm10Expression4castINS_10CallImportEEEPT_v(i5) | 0;
   i1 = i3 + 8 | 0;
   i3 = (HEAP32[i3 + 12 >> 2] | 0) - (HEAP32[i1 >> 2] | 0) >> 2;
   while (1) {
    i2 = i3 + -1 | 0;
    if ((i3 | 0) <= 0) break L1;
    __ZN4wasm6WalkerINS_15GetLocalCounterENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 215, (HEAP32[i1 >> 2] | 0) + (i2 << 2) | 0);
    i3 = i2;
   }
  }
 case 8:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_15GetLocalCounterENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 223, i2);
   i3 = __ZN4wasm10Expression4castINS_12CallIndirectEEEPT_v(i5) | 0;
   i1 = i3 + 8 | 0;
   i3 = (HEAP32[i3 + 12 >> 2] | 0) - (HEAP32[i1 >> 2] | 0) >> 2;
   while (1) {
    i2 = i3 + -1 | 0;
    if ((i3 | 0) <= 0) break;
    __ZN4wasm6WalkerINS_15GetLocalCounterENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 215, (HEAP32[i1 >> 2] | 0) + (i2 << 2) | 0);
    i3 = i2;
   }
   __ZN4wasm6WalkerINS_15GetLocalCounterENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 215, (__ZN4wasm10Expression4castINS_12CallIndirectEEEPT_v(i5) | 0) + 24 | 0);
   break;
  }
 case 9:
  {
   __ZN4wasm6WalkerINS_15GetLocalCounterENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i1 + 16 | 0, 224, i2);
   break;
  }
 case 10:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_15GetLocalCounterENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 225, i2);
   __ZN4wasm6WalkerINS_15GetLocalCounterENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 215, (__ZN4wasm10Expression4castINS_8SetLocalEEEPT_v(i5) | 0) + 12 | 0);
   break;
  }
 case 11:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_15GetLocalCounterENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 226, i2);
   __ZN4wasm6WalkerINS_15GetLocalCounterENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 215, (__ZN4wasm10Expression4castINS_4LoadEEEPT_v(i5) | 0) + 24 | 0);
   break;
  }
 case 12:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_15GetLocalCounterENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 227, i2);
   __ZN4wasm6WalkerINS_15GetLocalCounterENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 215, (__ZN4wasm10Expression4castINS_5StoreEEEPT_v(i5) | 0) + 24 | 0);
   __ZN4wasm6WalkerINS_15GetLocalCounterENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 215, (__ZN4wasm10Expression4castINS_5StoreEEEPT_v(i5) | 0) + 20 | 0);
   break;
  }
 case 13:
  {
   __ZN4wasm6WalkerINS_15GetLocalCounterENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i1 + 16 | 0, 228, i2);
   break;
  }
 case 14:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_15GetLocalCounterENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 229, i2);
   __ZN4wasm6WalkerINS_15GetLocalCounterENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 215, (__ZN4wasm10Expression4castINS_5UnaryEEEPT_v(i5) | 0) + 12 | 0);
   break;
  }
 case 15:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_15GetLocalCounterENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 230, i2);
   __ZN4wasm6WalkerINS_15GetLocalCounterENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 215, (__ZN4wasm10Expression4castINS_6BinaryEEEPT_v(i5) | 0) + 16 | 0);
   __ZN4wasm6WalkerINS_15GetLocalCounterENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 215, (__ZN4wasm10Expression4castINS_6BinaryEEEPT_v(i5) | 0) + 12 | 0);
   break;
  }
 case 16:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_15GetLocalCounterENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 231, i2);
   __ZN4wasm6WalkerINS_15GetLocalCounterENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 215, (__ZN4wasm10Expression4castINS_6SelectEEEPT_v(i5) | 0) + 16 | 0);
   __ZN4wasm6WalkerINS_15GetLocalCounterENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 215, (__ZN4wasm10Expression4castINS_6SelectEEEPT_v(i5) | 0) + 12 | 0);
   __ZN4wasm6WalkerINS_15GetLocalCounterENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 215, (__ZN4wasm10Expression4castINS_6SelectEEEPT_v(i5) | 0) + 8 | 0);
   break;
  }
 case 17:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_15GetLocalCounterENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 232, i2);
   __ZN4wasm6WalkerINS_15GetLocalCounterENS_7VisitorIS1_vEEE13maybePushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 215, (__ZN4wasm10Expression4castINS_6ReturnEEEPT_v(i5) | 0) + 8 | 0);
   break;
  }
 case 18:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_15GetLocalCounterENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 233, i2);
   i3 = __ZN4wasm10Expression4castINS_4HostEEEPT_v(i5) | 0;
   i1 = i3 + 16 | 0;
   i3 = (HEAP32[i3 + 20 >> 2] | 0) - (HEAP32[i1 >> 2] | 0) >> 2;
   while (1) {
    i2 = i3 + -1 | 0;
    if ((i3 | 0) <= 0) break L1;
    __ZN4wasm6WalkerINS_15GetLocalCounterENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 215, (HEAP32[i1 >> 2] | 0) + (i2 << 2) | 0);
    i3 = i2;
   }
  }
 case 19:
  {
   __ZN4wasm6WalkerINS_15GetLocalCounterENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i1 + 16 | 0, 234, i2);
   break;
  }
 case 20:
  {
   __ZN4wasm6WalkerINS_15GetLocalCounterENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i1 + 16 | 0, 235, i2);
   break;
  }
 default:
  {}
 } while (0);
 return;
}

function __ZN4wasm10PostWalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE4scanEPS1_PPNS_10ExpressionE(i1, i2) {
 i1 = i1 | 0;
 i2 = i2 | 0;
 var i3 = 0, i4 = 0, i5 = 0;
 i5 = HEAP32[i2 >> 2] | 0;
 L1 : do switch (HEAP32[i5 >> 2] | 0) {
 case 0:
  {
   _abort();
   break;
  }
 case 1:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 194, i2);
   i3 = __ZN4wasm10Expression4castINS_5BlockEEEPT_v(i5) | 0;
   i1 = i3 + 12 | 0;
   i3 = (HEAP32[i3 + 16 >> 2] | 0) - (HEAP32[i1 >> 2] | 0) >> 2;
   while (1) {
    i2 = i3 + -1 | 0;
    if ((i3 | 0) <= 0) break L1;
    __ZN4wasm6WalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 167, (HEAP32[i1 >> 2] | 0) + (i2 << 2) | 0);
    i3 = i2;
   }
  }
 case 2:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 196, i2);
   __ZN4wasm6WalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE13maybePushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 167, (__ZN4wasm10Expression4castINS_2IfEEEPT_v(i5) | 0) + 16 | 0);
   __ZN4wasm6WalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 167, (__ZN4wasm10Expression4castINS_2IfEEEPT_v(i5) | 0) + 12 | 0);
   __ZN4wasm6WalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 167, (__ZN4wasm10Expression4castINS_2IfEEEPT_v(i5) | 0) + 8 | 0);
   break;
  }
 case 3:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 197, i2);
   __ZN4wasm6WalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 167, (__ZN4wasm10Expression4castINS_4LoopEEEPT_v(i5) | 0) + 16 | 0);
   break;
  }
 case 4:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 198, i2);
   __ZN4wasm6WalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE13maybePushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 167, (__ZN4wasm10Expression4castINS_5BreakEEEPT_v(i5) | 0) + 16 | 0);
   __ZN4wasm6WalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE13maybePushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 167, (__ZN4wasm10Expression4castINS_5BreakEEEPT_v(i5) | 0) + 12 | 0);
   break;
  }
 case 5:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 199, i2);
   __ZN4wasm6WalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE13maybePushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 167, (__ZN4wasm10Expression4castINS_6SwitchEEEPT_v(i5) | 0) + 28 | 0);
   __ZN4wasm6WalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 167, (__ZN4wasm10Expression4castINS_6SwitchEEEPT_v(i5) | 0) + 24 | 0);
   break;
  }
 case 6:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 201, i2);
   i3 = __ZN4wasm10Expression4castINS_4CallEEEPT_v(i5) | 0;
   i1 = i3 + 8 | 0;
   i3 = (HEAP32[i3 + 12 >> 2] | 0) - (HEAP32[i1 >> 2] | 0) >> 2;
   while (1) {
    i2 = i3 + -1 | 0;
    if ((i3 | 0) <= 0) break L1;
    __ZN4wasm6WalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 167, (HEAP32[i1 >> 2] | 0) + (i2 << 2) | 0);
    i3 = i2;
   }
  }
 case 7:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 202, i2);
   i3 = __ZN4wasm10Expression4castINS_10CallImportEEEPT_v(i5) | 0;
   i1 = i3 + 8 | 0;
   i3 = (HEAP32[i3 + 12 >> 2] | 0) - (HEAP32[i1 >> 2] | 0) >> 2;
   while (1) {
    i2 = i3 + -1 | 0;
    if ((i3 | 0) <= 0) break L1;
    __ZN4wasm6WalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 167, (HEAP32[i1 >> 2] | 0) + (i2 << 2) | 0);
    i3 = i2;
   }
  }
 case 8:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 203, i2);
   i3 = __ZN4wasm10Expression4castINS_12CallIndirectEEEPT_v(i5) | 0;
   i1 = i3 + 8 | 0;
   i3 = (HEAP32[i3 + 12 >> 2] | 0) - (HEAP32[i1 >> 2] | 0) >> 2;
   while (1) {
    i2 = i3 + -1 | 0;
    if ((i3 | 0) <= 0) break;
    __ZN4wasm6WalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 167, (HEAP32[i1 >> 2] | 0) + (i2 << 2) | 0);
    i3 = i2;
   }
   __ZN4wasm6WalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 167, (__ZN4wasm10Expression4castINS_12CallIndirectEEEPT_v(i5) | 0) + 24 | 0);
   break;
  }
 case 9:
  {
   __ZN4wasm6WalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i1 + 16 | 0, 204, i2);
   break;
  }
 case 10:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 205, i2);
   __ZN4wasm6WalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 167, (__ZN4wasm10Expression4castINS_8SetLocalEEEPT_v(i5) | 0) + 12 | 0);
   break;
  }
 case 11:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 206, i2);
   __ZN4wasm6WalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 167, (__ZN4wasm10Expression4castINS_4LoadEEEPT_v(i5) | 0) + 24 | 0);
   break;
  }
 case 12:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 207, i2);
   __ZN4wasm6WalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 167, (__ZN4wasm10Expression4castINS_5StoreEEEPT_v(i5) | 0) + 24 | 0);
   __ZN4wasm6WalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 167, (__ZN4wasm10Expression4castINS_5StoreEEEPT_v(i5) | 0) + 20 | 0);
   break;
  }
 case 13:
  {
   __ZN4wasm6WalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i1 + 16 | 0, 208, i2);
   break;
  }
 case 14:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 209, i2);
   __ZN4wasm6WalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 167, (__ZN4wasm10Expression4castINS_5UnaryEEEPT_v(i5) | 0) + 12 | 0);
   break;
  }
 case 15:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 210, i2);
   __ZN4wasm6WalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 167, (__ZN4wasm10Expression4castINS_6BinaryEEEPT_v(i5) | 0) + 16 | 0);
   __ZN4wasm6WalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 167, (__ZN4wasm10Expression4castINS_6BinaryEEEPT_v(i5) | 0) + 12 | 0);
   break;
  }
 case 16:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 211, i2);
   __ZN4wasm6WalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 167, (__ZN4wasm10Expression4castINS_6SelectEEEPT_v(i5) | 0) + 16 | 0);
   __ZN4wasm6WalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 167, (__ZN4wasm10Expression4castINS_6SelectEEEPT_v(i5) | 0) + 12 | 0);
   __ZN4wasm6WalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 167, (__ZN4wasm10Expression4castINS_6SelectEEEPT_v(i5) | 0) + 8 | 0);
   break;
  }
 case 17:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 200, i2);
   __ZN4wasm6WalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE13maybePushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 167, (__ZN4wasm10Expression4castINS_6ReturnEEEPT_v(i5) | 0) + 8 | 0);
   break;
  }
 case 18:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 212, i2);
   i3 = __ZN4wasm10Expression4castINS_4HostEEEPT_v(i5) | 0;
   i1 = i3 + 16 | 0;
   i3 = (HEAP32[i3 + 20 >> 2] | 0) - (HEAP32[i1 >> 2] | 0) >> 2;
   while (1) {
    i2 = i3 + -1 | 0;
    if ((i3 | 0) <= 0) break L1;
    __ZN4wasm6WalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 167, (HEAP32[i1 >> 2] | 0) + (i2 << 2) | 0);
    i3 = i2;
   }
  }
 case 19:
  {
   __ZN4wasm6WalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i1 + 16 | 0, 213, i2);
   break;
  }
 case 20:
  {
   __ZN4wasm6WalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i1 + 16 | 0, 214, i2);
   break;
  }
 default:
  {}
 } while (0);
 return;
}

function __ZN4wasm10PostWalkerINS_14PostEmscriptenENS_7VisitorIS1_vEEE4scanEPS1_PPNS_10ExpressionE(i1, i2) {
 i1 = i1 | 0;
 i2 = i2 | 0;
 var i3 = 0, i4 = 0, i5 = 0;
 i5 = HEAP32[i2 >> 2] | 0;
 L1 : do switch (HEAP32[i5 >> 2] | 0) {
 case 0:
  {
   _abort();
   break;
  }
 case 1:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_14PostEmscriptenENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 147, i2);
   i3 = __ZN4wasm10Expression4castINS_5BlockEEEPT_v(i5) | 0;
   i1 = i3 + 12 | 0;
   i3 = (HEAP32[i3 + 16 >> 2] | 0) - (HEAP32[i1 >> 2] | 0) >> 2;
   while (1) {
    i2 = i3 + -1 | 0;
    if ((i3 | 0) <= 0) break L1;
    __ZN4wasm6WalkerINS_14PostEmscriptenENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 146, (HEAP32[i1 >> 2] | 0) + (i2 << 2) | 0);
    i3 = i2;
   }
  }
 case 2:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_14PostEmscriptenENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 148, i2);
   __ZN4wasm6WalkerINS_14PostEmscriptenENS_7VisitorIS1_vEEE13maybePushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 146, (__ZN4wasm10Expression4castINS_2IfEEEPT_v(i5) | 0) + 16 | 0);
   __ZN4wasm6WalkerINS_14PostEmscriptenENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 146, (__ZN4wasm10Expression4castINS_2IfEEEPT_v(i5) | 0) + 12 | 0);
   __ZN4wasm6WalkerINS_14PostEmscriptenENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 146, (__ZN4wasm10Expression4castINS_2IfEEEPT_v(i5) | 0) + 8 | 0);
   break;
  }
 case 3:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_14PostEmscriptenENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 149, i2);
   __ZN4wasm6WalkerINS_14PostEmscriptenENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 146, (__ZN4wasm10Expression4castINS_4LoopEEEPT_v(i5) | 0) + 16 | 0);
   break;
  }
 case 4:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_14PostEmscriptenENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 150, i2);
   __ZN4wasm6WalkerINS_14PostEmscriptenENS_7VisitorIS1_vEEE13maybePushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 146, (__ZN4wasm10Expression4castINS_5BreakEEEPT_v(i5) | 0) + 16 | 0);
   __ZN4wasm6WalkerINS_14PostEmscriptenENS_7VisitorIS1_vEEE13maybePushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 146, (__ZN4wasm10Expression4castINS_5BreakEEEPT_v(i5) | 0) + 12 | 0);
   break;
  }
 case 5:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_14PostEmscriptenENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 151, i2);
   __ZN4wasm6WalkerINS_14PostEmscriptenENS_7VisitorIS1_vEEE13maybePushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 146, (__ZN4wasm10Expression4castINS_6SwitchEEEPT_v(i5) | 0) + 28 | 0);
   __ZN4wasm6WalkerINS_14PostEmscriptenENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 146, (__ZN4wasm10Expression4castINS_6SwitchEEEPT_v(i5) | 0) + 24 | 0);
   break;
  }
 case 6:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_14PostEmscriptenENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 152, i2);
   i3 = __ZN4wasm10Expression4castINS_4CallEEEPT_v(i5) | 0;
   i1 = i3 + 8 | 0;
   i3 = (HEAP32[i3 + 12 >> 2] | 0) - (HEAP32[i1 >> 2] | 0) >> 2;
   while (1) {
    i2 = i3 + -1 | 0;
    if ((i3 | 0) <= 0) break L1;
    __ZN4wasm6WalkerINS_14PostEmscriptenENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 146, (HEAP32[i1 >> 2] | 0) + (i2 << 2) | 0);
    i3 = i2;
   }
  }
 case 7:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_14PostEmscriptenENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 153, i2);
   i3 = __ZN4wasm10Expression4castINS_10CallImportEEEPT_v(i5) | 0;
   i1 = i3 + 8 | 0;
   i3 = (HEAP32[i3 + 12 >> 2] | 0) - (HEAP32[i1 >> 2] | 0) >> 2;
   while (1) {
    i2 = i3 + -1 | 0;
    if ((i3 | 0) <= 0) break L1;
    __ZN4wasm6WalkerINS_14PostEmscriptenENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 146, (HEAP32[i1 >> 2] | 0) + (i2 << 2) | 0);
    i3 = i2;
   }
  }
 case 8:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_14PostEmscriptenENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 154, i2);
   i3 = __ZN4wasm10Expression4castINS_12CallIndirectEEEPT_v(i5) | 0;
   i1 = i3 + 8 | 0;
   i3 = (HEAP32[i3 + 12 >> 2] | 0) - (HEAP32[i1 >> 2] | 0) >> 2;
   while (1) {
    i2 = i3 + -1 | 0;
    if ((i3 | 0) <= 0) break;
    __ZN4wasm6WalkerINS_14PostEmscriptenENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 146, (HEAP32[i1 >> 2] | 0) + (i2 << 2) | 0);
    i3 = i2;
   }
   __ZN4wasm6WalkerINS_14PostEmscriptenENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 146, (__ZN4wasm10Expression4castINS_12CallIndirectEEEPT_v(i5) | 0) + 24 | 0);
   break;
  }
 case 9:
  {
   __ZN4wasm6WalkerINS_14PostEmscriptenENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i1 + 16 | 0, 155, i2);
   break;
  }
 case 10:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_14PostEmscriptenENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 156, i2);
   __ZN4wasm6WalkerINS_14PostEmscriptenENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 146, (__ZN4wasm10Expression4castINS_8SetLocalEEEPT_v(i5) | 0) + 12 | 0);
   break;
  }
 case 11:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_14PostEmscriptenENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 157, i2);
   __ZN4wasm6WalkerINS_14PostEmscriptenENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 146, (__ZN4wasm10Expression4castINS_4LoadEEEPT_v(i5) | 0) + 24 | 0);
   break;
  }
 case 12:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_14PostEmscriptenENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 158, i2);
   __ZN4wasm6WalkerINS_14PostEmscriptenENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 146, (__ZN4wasm10Expression4castINS_5StoreEEEPT_v(i5) | 0) + 24 | 0);
   __ZN4wasm6WalkerINS_14PostEmscriptenENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 146, (__ZN4wasm10Expression4castINS_5StoreEEEPT_v(i5) | 0) + 20 | 0);
   break;
  }
 case 13:
  {
   __ZN4wasm6WalkerINS_14PostEmscriptenENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i1 + 16 | 0, 159, i2);
   break;
  }
 case 14:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_14PostEmscriptenENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 160, i2);
   __ZN4wasm6WalkerINS_14PostEmscriptenENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 146, (__ZN4wasm10Expression4castINS_5UnaryEEEPT_v(i5) | 0) + 12 | 0);
   break;
  }
 case 15:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_14PostEmscriptenENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 161, i2);
   __ZN4wasm6WalkerINS_14PostEmscriptenENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 146, (__ZN4wasm10Expression4castINS_6BinaryEEEPT_v(i5) | 0) + 16 | 0);
   __ZN4wasm6WalkerINS_14PostEmscriptenENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 146, (__ZN4wasm10Expression4castINS_6BinaryEEEPT_v(i5) | 0) + 12 | 0);
   break;
  }
 case 16:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_14PostEmscriptenENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 162, i2);
   __ZN4wasm6WalkerINS_14PostEmscriptenENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 146, (__ZN4wasm10Expression4castINS_6SelectEEEPT_v(i5) | 0) + 16 | 0);
   __ZN4wasm6WalkerINS_14PostEmscriptenENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 146, (__ZN4wasm10Expression4castINS_6SelectEEEPT_v(i5) | 0) + 12 | 0);
   __ZN4wasm6WalkerINS_14PostEmscriptenENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 146, (__ZN4wasm10Expression4castINS_6SelectEEEPT_v(i5) | 0) + 8 | 0);
   break;
  }
 case 17:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_14PostEmscriptenENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 163, i2);
   __ZN4wasm6WalkerINS_14PostEmscriptenENS_7VisitorIS1_vEEE13maybePushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 146, (__ZN4wasm10Expression4castINS_6ReturnEEEPT_v(i5) | 0) + 8 | 0);
   break;
  }
 case 18:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_14PostEmscriptenENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 164, i2);
   i3 = __ZN4wasm10Expression4castINS_4HostEEEPT_v(i5) | 0;
   i1 = i3 + 16 | 0;
   i3 = (HEAP32[i3 + 20 >> 2] | 0) - (HEAP32[i1 >> 2] | 0) >> 2;
   while (1) {
    i2 = i3 + -1 | 0;
    if ((i3 | 0) <= 0) break L1;
    __ZN4wasm6WalkerINS_14PostEmscriptenENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 146, (HEAP32[i1 >> 2] | 0) + (i2 << 2) | 0);
    i3 = i2;
   }
  }
 case 19:
  {
   __ZN4wasm6WalkerINS_14PostEmscriptenENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i1 + 16 | 0, 165, i2);
   break;
  }
 case 20:
  {
   __ZN4wasm6WalkerINS_14PostEmscriptenENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i1 + 16 | 0, 166, i2);
   break;
  }
 default:
  {}
 } while (0);
 return;
}

function __ZN4wasm10PostWalkerINS_13ReorderLocalsENS_7VisitorIS1_vEEE4scanEPS1_PPNS_10ExpressionE(i1, i2) {
 i1 = i1 | 0;
 i2 = i2 | 0;
 var i3 = 0, i4 = 0, i5 = 0;
 i5 = HEAP32[i2 >> 2] | 0;
 L1 : do switch (HEAP32[i5 >> 2] | 0) {
 case 0:
  {
   _abort();
   break;
  }
 case 1:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_13ReorderLocalsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 258, i2);
   i3 = __ZN4wasm10Expression4castINS_5BlockEEEPT_v(i5) | 0;
   i1 = i3 + 12 | 0;
   i3 = (HEAP32[i3 + 16 >> 2] | 0) - (HEAP32[i1 >> 2] | 0) >> 2;
   while (1) {
    i2 = i3 + -1 | 0;
    if ((i3 | 0) <= 0) break L1;
    __ZN4wasm6WalkerINS_13ReorderLocalsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 257, (HEAP32[i1 >> 2] | 0) + (i2 << 2) | 0);
    i3 = i2;
   }
  }
 case 2:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_13ReorderLocalsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 259, i2);
   __ZN4wasm6WalkerINS_13ReorderLocalsENS_7VisitorIS1_vEEE13maybePushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 257, (__ZN4wasm10Expression4castINS_2IfEEEPT_v(i5) | 0) + 16 | 0);
   __ZN4wasm6WalkerINS_13ReorderLocalsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 257, (__ZN4wasm10Expression4castINS_2IfEEEPT_v(i5) | 0) + 12 | 0);
   __ZN4wasm6WalkerINS_13ReorderLocalsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 257, (__ZN4wasm10Expression4castINS_2IfEEEPT_v(i5) | 0) + 8 | 0);
   break;
  }
 case 3:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_13ReorderLocalsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 260, i2);
   __ZN4wasm6WalkerINS_13ReorderLocalsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 257, (__ZN4wasm10Expression4castINS_4LoopEEEPT_v(i5) | 0) + 16 | 0);
   break;
  }
 case 4:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_13ReorderLocalsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 261, i2);
   __ZN4wasm6WalkerINS_13ReorderLocalsENS_7VisitorIS1_vEEE13maybePushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 257, (__ZN4wasm10Expression4castINS_5BreakEEEPT_v(i5) | 0) + 16 | 0);
   __ZN4wasm6WalkerINS_13ReorderLocalsENS_7VisitorIS1_vEEE13maybePushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 257, (__ZN4wasm10Expression4castINS_5BreakEEEPT_v(i5) | 0) + 12 | 0);
   break;
  }
 case 5:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_13ReorderLocalsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 262, i2);
   __ZN4wasm6WalkerINS_13ReorderLocalsENS_7VisitorIS1_vEEE13maybePushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 257, (__ZN4wasm10Expression4castINS_6SwitchEEEPT_v(i5) | 0) + 28 | 0);
   __ZN4wasm6WalkerINS_13ReorderLocalsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 257, (__ZN4wasm10Expression4castINS_6SwitchEEEPT_v(i5) | 0) + 24 | 0);
   break;
  }
 case 6:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_13ReorderLocalsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 263, i2);
   i3 = __ZN4wasm10Expression4castINS_4CallEEEPT_v(i5) | 0;
   i1 = i3 + 8 | 0;
   i3 = (HEAP32[i3 + 12 >> 2] | 0) - (HEAP32[i1 >> 2] | 0) >> 2;
   while (1) {
    i2 = i3 + -1 | 0;
    if ((i3 | 0) <= 0) break L1;
    __ZN4wasm6WalkerINS_13ReorderLocalsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 257, (HEAP32[i1 >> 2] | 0) + (i2 << 2) | 0);
    i3 = i2;
   }
  }
 case 7:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_13ReorderLocalsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 264, i2);
   i3 = __ZN4wasm10Expression4castINS_10CallImportEEEPT_v(i5) | 0;
   i1 = i3 + 8 | 0;
   i3 = (HEAP32[i3 + 12 >> 2] | 0) - (HEAP32[i1 >> 2] | 0) >> 2;
   while (1) {
    i2 = i3 + -1 | 0;
    if ((i3 | 0) <= 0) break L1;
    __ZN4wasm6WalkerINS_13ReorderLocalsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 257, (HEAP32[i1 >> 2] | 0) + (i2 << 2) | 0);
    i3 = i2;
   }
  }
 case 8:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_13ReorderLocalsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 265, i2);
   i3 = __ZN4wasm10Expression4castINS_12CallIndirectEEEPT_v(i5) | 0;
   i1 = i3 + 8 | 0;
   i3 = (HEAP32[i3 + 12 >> 2] | 0) - (HEAP32[i1 >> 2] | 0) >> 2;
   while (1) {
    i2 = i3 + -1 | 0;
    if ((i3 | 0) <= 0) break;
    __ZN4wasm6WalkerINS_13ReorderLocalsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 257, (HEAP32[i1 >> 2] | 0) + (i2 << 2) | 0);
    i3 = i2;
   }
   __ZN4wasm6WalkerINS_13ReorderLocalsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 257, (__ZN4wasm10Expression4castINS_12CallIndirectEEEPT_v(i5) | 0) + 24 | 0);
   break;
  }
 case 9:
  {
   __ZN4wasm6WalkerINS_13ReorderLocalsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i1 + 16 | 0, 266, i2);
   break;
  }
 case 10:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_13ReorderLocalsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 267, i2);
   __ZN4wasm6WalkerINS_13ReorderLocalsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 257, (__ZN4wasm10Expression4castINS_8SetLocalEEEPT_v(i5) | 0) + 12 | 0);
   break;
  }
 case 11:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_13ReorderLocalsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 268, i2);
   __ZN4wasm6WalkerINS_13ReorderLocalsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 257, (__ZN4wasm10Expression4castINS_4LoadEEEPT_v(i5) | 0) + 24 | 0);
   break;
  }
 case 12:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_13ReorderLocalsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 269, i2);
   __ZN4wasm6WalkerINS_13ReorderLocalsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 257, (__ZN4wasm10Expression4castINS_5StoreEEEPT_v(i5) | 0) + 24 | 0);
   __ZN4wasm6WalkerINS_13ReorderLocalsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 257, (__ZN4wasm10Expression4castINS_5StoreEEEPT_v(i5) | 0) + 20 | 0);
   break;
  }
 case 13:
  {
   __ZN4wasm6WalkerINS_13ReorderLocalsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i1 + 16 | 0, 270, i2);
   break;
  }
 case 14:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_13ReorderLocalsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 271, i2);
   __ZN4wasm6WalkerINS_13ReorderLocalsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 257, (__ZN4wasm10Expression4castINS_5UnaryEEEPT_v(i5) | 0) + 12 | 0);
   break;
  }
 case 15:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_13ReorderLocalsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 272, i2);
   __ZN4wasm6WalkerINS_13ReorderLocalsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 257, (__ZN4wasm10Expression4castINS_6BinaryEEEPT_v(i5) | 0) + 16 | 0);
   __ZN4wasm6WalkerINS_13ReorderLocalsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 257, (__ZN4wasm10Expression4castINS_6BinaryEEEPT_v(i5) | 0) + 12 | 0);
   break;
  }
 case 16:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_13ReorderLocalsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 273, i2);
   __ZN4wasm6WalkerINS_13ReorderLocalsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 257, (__ZN4wasm10Expression4castINS_6SelectEEEPT_v(i5) | 0) + 16 | 0);
   __ZN4wasm6WalkerINS_13ReorderLocalsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 257, (__ZN4wasm10Expression4castINS_6SelectEEEPT_v(i5) | 0) + 12 | 0);
   __ZN4wasm6WalkerINS_13ReorderLocalsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 257, (__ZN4wasm10Expression4castINS_6SelectEEEPT_v(i5) | 0) + 8 | 0);
   break;
  }
 case 17:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_13ReorderLocalsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 274, i2);
   __ZN4wasm6WalkerINS_13ReorderLocalsENS_7VisitorIS1_vEEE13maybePushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 257, (__ZN4wasm10Expression4castINS_6ReturnEEEPT_v(i5) | 0) + 8 | 0);
   break;
  }
 case 18:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_13ReorderLocalsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 275, i2);
   i3 = __ZN4wasm10Expression4castINS_4HostEEEPT_v(i5) | 0;
   i1 = i3 + 16 | 0;
   i3 = (HEAP32[i3 + 20 >> 2] | 0) - (HEAP32[i1 >> 2] | 0) >> 2;
   while (1) {
    i2 = i3 + -1 | 0;
    if ((i3 | 0) <= 0) break L1;
    __ZN4wasm6WalkerINS_13ReorderLocalsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 257, (HEAP32[i1 >> 2] | 0) + (i2 << 2) | 0);
    i3 = i2;
   }
  }
 case 19:
  {
   __ZN4wasm6WalkerINS_13ReorderLocalsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i1 + 16 | 0, 276, i2);
   break;
  }
 case 20:
  {
   __ZN4wasm6WalkerINS_13ReorderLocalsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i1 + 16 | 0, 277, i2);
   break;
  }
 default:
  {}
 } while (0);
 return;
}

function __ZN4wasm10PostWalkerINS_11MergeBlocksENS_7VisitorIS1_vEEE4scanEPS1_PPNS_10ExpressionE(i1, i2) {
 i1 = i1 | 0;
 i2 = i2 | 0;
 var i3 = 0, i4 = 0, i5 = 0;
 i5 = HEAP32[i2 >> 2] | 0;
 L1 : do switch (HEAP32[i5 >> 2] | 0) {
 case 0:
  {
   _abort();
   break;
  }
 case 1:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_11MergeBlocksENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 81, i2);
   i3 = __ZN4wasm10Expression4castINS_5BlockEEEPT_v(i5) | 0;
   i1 = i3 + 12 | 0;
   i3 = (HEAP32[i3 + 16 >> 2] | 0) - (HEAP32[i1 >> 2] | 0) >> 2;
   while (1) {
    i2 = i3 + -1 | 0;
    if ((i3 | 0) <= 0) break L1;
    __ZN4wasm6WalkerINS_11MergeBlocksENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 80, (HEAP32[i1 >> 2] | 0) + (i2 << 2) | 0);
    i3 = i2;
   }
  }
 case 2:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_11MergeBlocksENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 82, i2);
   __ZN4wasm6WalkerINS_11MergeBlocksENS_7VisitorIS1_vEEE13maybePushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 80, (__ZN4wasm10Expression4castINS_2IfEEEPT_v(i5) | 0) + 16 | 0);
   __ZN4wasm6WalkerINS_11MergeBlocksENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 80, (__ZN4wasm10Expression4castINS_2IfEEEPT_v(i5) | 0) + 12 | 0);
   __ZN4wasm6WalkerINS_11MergeBlocksENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 80, (__ZN4wasm10Expression4castINS_2IfEEEPT_v(i5) | 0) + 8 | 0);
   break;
  }
 case 3:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_11MergeBlocksENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 83, i2);
   __ZN4wasm6WalkerINS_11MergeBlocksENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 80, (__ZN4wasm10Expression4castINS_4LoopEEEPT_v(i5) | 0) + 16 | 0);
   break;
  }
 case 4:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_11MergeBlocksENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 84, i2);
   __ZN4wasm6WalkerINS_11MergeBlocksENS_7VisitorIS1_vEEE13maybePushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 80, (__ZN4wasm10Expression4castINS_5BreakEEEPT_v(i5) | 0) + 16 | 0);
   __ZN4wasm6WalkerINS_11MergeBlocksENS_7VisitorIS1_vEEE13maybePushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 80, (__ZN4wasm10Expression4castINS_5BreakEEEPT_v(i5) | 0) + 12 | 0);
   break;
  }
 case 5:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_11MergeBlocksENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 85, i2);
   __ZN4wasm6WalkerINS_11MergeBlocksENS_7VisitorIS1_vEEE13maybePushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 80, (__ZN4wasm10Expression4castINS_6SwitchEEEPT_v(i5) | 0) + 28 | 0);
   __ZN4wasm6WalkerINS_11MergeBlocksENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 80, (__ZN4wasm10Expression4castINS_6SwitchEEEPT_v(i5) | 0) + 24 | 0);
   break;
  }
 case 6:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_11MergeBlocksENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 86, i2);
   i3 = __ZN4wasm10Expression4castINS_4CallEEEPT_v(i5) | 0;
   i1 = i3 + 8 | 0;
   i3 = (HEAP32[i3 + 12 >> 2] | 0) - (HEAP32[i1 >> 2] | 0) >> 2;
   while (1) {
    i2 = i3 + -1 | 0;
    if ((i3 | 0) <= 0) break L1;
    __ZN4wasm6WalkerINS_11MergeBlocksENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 80, (HEAP32[i1 >> 2] | 0) + (i2 << 2) | 0);
    i3 = i2;
   }
  }
 case 7:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_11MergeBlocksENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 87, i2);
   i3 = __ZN4wasm10Expression4castINS_10CallImportEEEPT_v(i5) | 0;
   i1 = i3 + 8 | 0;
   i3 = (HEAP32[i3 + 12 >> 2] | 0) - (HEAP32[i1 >> 2] | 0) >> 2;
   while (1) {
    i2 = i3 + -1 | 0;
    if ((i3 | 0) <= 0) break L1;
    __ZN4wasm6WalkerINS_11MergeBlocksENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 80, (HEAP32[i1 >> 2] | 0) + (i2 << 2) | 0);
    i3 = i2;
   }
  }
 case 8:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_11MergeBlocksENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 88, i2);
   i3 = __ZN4wasm10Expression4castINS_12CallIndirectEEEPT_v(i5) | 0;
   i1 = i3 + 8 | 0;
   i3 = (HEAP32[i3 + 12 >> 2] | 0) - (HEAP32[i1 >> 2] | 0) >> 2;
   while (1) {
    i2 = i3 + -1 | 0;
    if ((i3 | 0) <= 0) break;
    __ZN4wasm6WalkerINS_11MergeBlocksENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 80, (HEAP32[i1 >> 2] | 0) + (i2 << 2) | 0);
    i3 = i2;
   }
   __ZN4wasm6WalkerINS_11MergeBlocksENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 80, (__ZN4wasm10Expression4castINS_12CallIndirectEEEPT_v(i5) | 0) + 24 | 0);
   break;
  }
 case 9:
  {
   __ZN4wasm6WalkerINS_11MergeBlocksENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i1 + 16 | 0, 89, i2);
   break;
  }
 case 10:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_11MergeBlocksENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 90, i2);
   __ZN4wasm6WalkerINS_11MergeBlocksENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 80, (__ZN4wasm10Expression4castINS_8SetLocalEEEPT_v(i5) | 0) + 12 | 0);
   break;
  }
 case 11:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_11MergeBlocksENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 91, i2);
   __ZN4wasm6WalkerINS_11MergeBlocksENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 80, (__ZN4wasm10Expression4castINS_4LoadEEEPT_v(i5) | 0) + 24 | 0);
   break;
  }
 case 12:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_11MergeBlocksENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 92, i2);
   __ZN4wasm6WalkerINS_11MergeBlocksENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 80, (__ZN4wasm10Expression4castINS_5StoreEEEPT_v(i5) | 0) + 24 | 0);
   __ZN4wasm6WalkerINS_11MergeBlocksENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 80, (__ZN4wasm10Expression4castINS_5StoreEEEPT_v(i5) | 0) + 20 | 0);
   break;
  }
 case 13:
  {
   __ZN4wasm6WalkerINS_11MergeBlocksENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i1 + 16 | 0, 93, i2);
   break;
  }
 case 14:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_11MergeBlocksENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 94, i2);
   __ZN4wasm6WalkerINS_11MergeBlocksENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 80, (__ZN4wasm10Expression4castINS_5UnaryEEEPT_v(i5) | 0) + 12 | 0);
   break;
  }
 case 15:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_11MergeBlocksENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 95, i2);
   __ZN4wasm6WalkerINS_11MergeBlocksENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 80, (__ZN4wasm10Expression4castINS_6BinaryEEEPT_v(i5) | 0) + 16 | 0);
   __ZN4wasm6WalkerINS_11MergeBlocksENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 80, (__ZN4wasm10Expression4castINS_6BinaryEEEPT_v(i5) | 0) + 12 | 0);
   break;
  }
 case 16:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_11MergeBlocksENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 96, i2);
   __ZN4wasm6WalkerINS_11MergeBlocksENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 80, (__ZN4wasm10Expression4castINS_6SelectEEEPT_v(i5) | 0) + 16 | 0);
   __ZN4wasm6WalkerINS_11MergeBlocksENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 80, (__ZN4wasm10Expression4castINS_6SelectEEEPT_v(i5) | 0) + 12 | 0);
   __ZN4wasm6WalkerINS_11MergeBlocksENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 80, (__ZN4wasm10Expression4castINS_6SelectEEEPT_v(i5) | 0) + 8 | 0);
   break;
  }
 case 17:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_11MergeBlocksENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 97, i2);
   __ZN4wasm6WalkerINS_11MergeBlocksENS_7VisitorIS1_vEEE13maybePushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 80, (__ZN4wasm10Expression4castINS_6ReturnEEEPT_v(i5) | 0) + 8 | 0);
   break;
  }
 case 18:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_11MergeBlocksENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 98, i2);
   i3 = __ZN4wasm10Expression4castINS_4HostEEEPT_v(i5) | 0;
   i1 = i3 + 16 | 0;
   i3 = (HEAP32[i3 + 20 >> 2] | 0) - (HEAP32[i1 >> 2] | 0) >> 2;
   while (1) {
    i2 = i3 + -1 | 0;
    if ((i3 | 0) <= 0) break L1;
    __ZN4wasm6WalkerINS_11MergeBlocksENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 80, (HEAP32[i1 >> 2] | 0) + (i2 << 2) | 0);
    i3 = i2;
   }
  }
 case 19:
  {
   __ZN4wasm6WalkerINS_11MergeBlocksENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i1 + 16 | 0, 99, i2);
   break;
  }
 case 20:
  {
   __ZN4wasm6WalkerINS_11MergeBlocksENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i1 + 16 | 0, 100, i2);
   break;
  }
 default:
  {}
 } while (0);
 return;
}

function __ZN4wasm22SExpressionWasmBuilder13parseFunctionERNS_7ElementE(i32, i26) {
 i32 = i32 | 0;
 i26 = i26 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, i18 = 0, i19 = 0, i20 = 0, i21 = 0, i22 = 0, i23 = 0, i24 = 0, i25 = 0, i27 = 0, i28 = 0, i29 = 0, i30 = 0, i31 = 0, i33 = 0, i34 = 0, i35 = 0, i36 = 0;
 i36 = STACKTOP;
 STACKTOP = STACKTOP + 96 | 0;
 i19 = i36 + 88 | 0;
 i2 = i36 + 84 | 0;
 i29 = i36 + 80 | 0;
 i34 = i36 + 68 | 0;
 i33 = i36 + 56 | 0;
 i35 = i36 + 44 | 0;
 i30 = i36 + 40 | 0;
 i28 = i36 + 20 | 0;
 i27 = i36 + 12 | 0;
 i20 = i36 + 16 | 0;
 i21 = i36 + 8 | 0;
 i22 = i36 + 4 | 0;
 i23 = i36;
 HEAP32[i2 >> 2] = 0;
 i31 = __ZN4wasm7Element4listEv(i26) | 0;
 if (!(HEAP8[HEAP32[(HEAP32[i31 >> 2] | 0) + 4 >> 2] >> 0] | 0)) {
  i1 = __ZN4wasm7Element4listEv(i26) | 0;
  i1 = __ZN4wasm7Element3strEv(HEAP32[(HEAP32[i1 >> 2] | 0) + 4 >> 2] | 0) | 0;
  HEAP32[i2 >> 2] = i1;
  i1 = i32 + 44 | 0;
  i3 = 2;
 } else {
  i1 = i32 + 44 | 0;
  i3 = __ZN4wasm4Name7fromIntEj(HEAP32[i1 >> 2] | 0) | 0;
  HEAP32[i2 >> 2] = i3;
  i3 = 1;
 }
 HEAP32[i1 >> 2] = (HEAP32[i1 >> 2] | 0) + 1;
 HEAP32[i29 >> 2] = 0;
 i15 = i32 + 80 | 0;
 HEAP32[i15 >> 2] = 0;
 HEAP32[i32 + 84 >> 2] = 0;
 HEAP32[i34 >> 2] = 0;
 i16 = i34 + 4 | 0;
 HEAP32[i16 >> 2] = 0;
 HEAP32[i34 + 8 >> 2] = 0;
 HEAP32[i33 >> 2] = 0;
 i17 = i33 + 4 | 0;
 HEAP32[i17 >> 2] = 0;
 HEAP32[i33 + 8 >> 2] = 0;
 HEAP32[i35 >> 2] = 0;
 i18 = i35 + 4 | 0;
 HEAP32[i18 >> 2] = 0;
 HEAP32[i35 + 8 >> 2] = 0;
 HEAP32[i30 >> 2] = 0;
 HEAP32[i28 >> 2] = i32;
 HEAP32[i28 + 4 >> 2] = i2;
 HEAP32[i28 + 8 >> 2] = i33;
 HEAP32[i28 + 12 >> 2] = i30;
 HEAP32[i28 + 16 >> 2] = i35;
 i10 = i32 + 8 | 0;
 i11 = i34 + 8 | 0;
 i12 = i32 + 68 | 0;
 i31 = i32 + 64 | 0;
 i24 = i32 + 4 | 0;
 i13 = i33 + 8 | 0;
 i14 = i35 + 8 | 0;
 i1 = 0;
 i2 = 0;
 while (1) {
  if (i3 >>> 0 >= (__ZN4wasm7Element4sizeEv(i26) | 0) >>> 0) break;
  i9 = __ZN4wasm7ElementixEj(i26, i3) | 0;
  i7 = __ZN4wasm7Element4listEv(i9) | 0;
  i7 = __ZN4wasm7Element3strEv(HEAP32[HEAP32[i7 >> 2] >> 2] | 0) | 0;
  L8 : do if ((i7 | 0) == (HEAP32[9008] | 0) | (i7 | 0) == (HEAP32[9015] | 0)) {
   i4 = 1;
   while (1) {
    if (i4 >>> 0 >= (__ZN4wasm7Element4sizeEv(i9) | 0) >>> 0) break L8;
    HEAP32[i19 >> 2] = 0;
    HEAP32[i27 >> 2] = 0;
    i8 = (__ZN4wasm7ElementixEj(i9, i4) | 0) + 20 | 0;
    if ((HEAP8[i8 >> 0] | 0) == 0 ? (i25 = __ZN4wasm22SExpressionWasmBuilder16stringToWasmTypeEPKcbb(i32, __ZN4wasm7Element3strEv(__ZN4wasm7ElementixEj(i9, i4) | 0) | 0, 1, 0) | 0, HEAP32[i27 >> 2] = i25, (i25 | 0) != 0) : 0) {
     i5 = __ZN4wasm4Name7fromIntEj(HEAP32[i15 >> 2] | 0) | 0;
     HEAP32[i19 >> 2] = i5;
     i8 = i25;
    } else {
     i5 = __ZN4wasm7Element3strEv(__ZN4wasm7ElementixEj(i9, i4) | 0) | 0;
     HEAP32[i19 >> 2] = i5;
     i4 = i4 + 1 | 0;
     i8 = __ZN4wasm22SExpressionWasmBuilder16stringToWasmTypeEPKcbb(i32, __ZN4wasm7Element3strEv(__ZN4wasm7ElementixEj(i9, i4) | 0) | 0, 0, 0) | 0;
     HEAP32[i27 >> 2] = i8;
    }
    i4 = i4 + 1 | 0;
    do if ((i7 | 0) == (HEAP32[9008] | 0)) {
     i6 = HEAP32[i17 >> 2] | 0;
     if (i6 >>> 0 < (HEAP32[i13 >> 2] | 0) >>> 0) {
      HEAP32[i6 >> 2] = i5;
      HEAP32[i6 + 4 >> 2] = i8;
      HEAP32[i17 >> 2] = (HEAP32[i17 >> 2] | 0) + 8;
      break;
     } else {
      __ZNSt3__16vectorIN4wasm8NameTypeENS_9allocatorIS2_EEE24__emplace_back_slow_pathIJRN6cashew7IStringERNS1_8WasmTypeEEEEvDpOT_(i33, i19, i27);
      break;
     }
    } else {
     i6 = HEAP32[i18 >> 2] | 0;
     if (i6 >>> 0 < (HEAP32[i14 >> 2] | 0) >>> 0) {
      HEAP32[i6 >> 2] = i5;
      HEAP32[i6 + 4 >> 2] = i8;
      HEAP32[i18 >> 2] = (HEAP32[i18 >> 2] | 0) + 8;
      break;
     } else {
      __ZNSt3__16vectorIN4wasm8NameTypeENS_9allocatorIS2_EEE24__emplace_back_slow_pathIJRN6cashew7IStringERNS1_8WasmTypeEEEEvDpOT_(i35, i19, i27);
      break;
     }
    } while (0);
    HEAP32[i15 >> 2] = (HEAP32[i15 >> 2] | 0) + 1;
    HEAP32[i20 >> 2] = i5;
    i6 = __ZNSt3__13mapIN4wasm4NameENS1_8WasmTypeENS_4lessIS2_EENS_9allocatorINS_4pairIKS2_S3_EEEEEixEOS2_(i12, i20) | 0;
    HEAP32[i6 >> 2] = i8;
   }
  } else {
   if ((i7 | 0) == (HEAP32[9009] | 0)) {
    i9 = __ZN4wasm7Element4listEv(i9) | 0;
    i9 = __ZN4wasm22SExpressionWasmBuilder16stringToWasmTypeEPKcbb(i32, __ZN4wasm7Element3strEv(HEAP32[(HEAP32[i9 >> 2] | 0) + 4 >> 2] | 0) | 0, 0, 0) | 0;
    HEAP32[i30 >> 2] = i9;
    break;
   }
   if ((i7 | 0) == (HEAP32[9016] | 0)) {
    i2 = __ZN4wasm7Element4listEv(i9) | 0;
    i2 = __ZN4wasm7Element3strEv(HEAP32[(HEAP32[i2 >> 2] | 0) + 4 >> 2] | 0) | 0;
    i9 = HEAP32[i32 >> 2] | 0;
    HEAP32[i21 >> 2] = i2;
    HEAP32[i19 >> 2] = HEAP32[i21 >> 2];
    if (!(__ZN4wasm6Module17checkFunctionTypeENS_4NameE(i9, i19) | 0)) __ZNKSt3__18functionIFvvEEclEv(i10);
    i5 = HEAP32[i32 >> 2] | 0;
    HEAP32[i22 >> 2] = i2;
    HEAP32[i19 >> 2] = HEAP32[i22 >> 2];
    i5 = __ZN4wasm6Module15getFunctionTypeENS_4NameE(i5, i19) | 0;
    HEAP32[i30 >> 2] = HEAP32[i5 + 4 >> 2];
    i4 = i5 + 8 | 0;
    i5 = i5 + 12 | 0;
    i9 = 0;
    while (1) {
     if (i9 >>> 0 >= (HEAP32[i5 >> 2] | 0) - (HEAP32[i4 >> 2] | 0) >> 2 >>> 0) break L8;
     i8 = __ZN4wasm4Name7fromIntEj(i9) | 0;
     HEAP32[i19 >> 2] = i8;
     i6 = HEAP32[(HEAP32[i4 >> 2] | 0) + (i9 << 2) >> 2] | 0;
     HEAP32[i27 >> 2] = i6;
     i7 = HEAP32[i16 >> 2] | 0;
     if (i7 >>> 0 < (HEAP32[i11 >> 2] | 0) >>> 0) {
      HEAP32[i7 >> 2] = i8;
      HEAP32[i7 + 4 >> 2] = i6;
      HEAP32[i16 >> 2] = (HEAP32[i16 >> 2] | 0) + 8;
     } else __ZNSt3__16vectorIN4wasm8NameTypeENS_9allocatorIS2_EEE24__emplace_back_slow_pathIJRN6cashew7IStringERNS1_8WasmTypeEEEEvDpOT_(i34, i19, i27);
     HEAP32[i23 >> 2] = i8;
     i8 = __ZNSt3__13mapIN4wasm4NameENS1_8WasmTypeENS_4lessIS2_EENS_9allocatorINS_4pairIKS2_S3_EEEEEixEOS2_(i12, i23) | 0;
     HEAP32[i8 >> 2] = i6;
     i9 = i9 + 1 | 0;
    }
   }
   i7 = HEAP32[i16 >> 2] | 0;
   i8 = HEAP32[i34 >> 2] | 0;
   i4 = i8;
   i5 = i7;
   if ((i7 | 0) != (i8 | 0) ? (HEAP32[i17 >> 2] | 0) == (HEAP32[i33 >> 2] | 0) : 0) __ZNSt3__16vectorIN4wasm8NameTypeENS_9allocatorIS2_EEE6assignIPS2_EENS_9enable_ifIXaasr21__is_forward_iteratorIT_EE5valuesr16is_constructibleIS2_NS_15iterator_traitsIS9_E9referenceEEE5valueEvE4typeES9_S9_(i33, i4, i5);
   if (!(HEAP32[i31 >> 2] | 0)) __ZZN4wasm22SExpressionWasmBuilder13parseFunctionERNS_7ElementEENKUlvE_clEv(i28);
   i4 = __ZN4wasm22SExpressionWasmBuilder15parseExpressionERNS_7ElementE(i32, i9) | 0;
   HEAP32[i19 >> 2] = i4;
   i9 = HEAP32[i29 >> 2] | 0;
   i6 = i9;
   i7 = i4;
   do if (i9) {
    if (!i1) {
     i1 = __ZN10MixedArena5allocIN4wasm5BlockEEEPT_v(HEAP32[i24 >> 2] | 0) | 0;
     i4 = i1 + 16 | 0;
     i5 = HEAP32[i4 >> 2] | 0;
     if ((i5 | 0) == (HEAP32[i1 + 20 >> 2] | 0)) __ZNSt3__16vectorIPN4wasm10ExpressionENS_9allocatorIS3_EEE21__push_back_slow_pathIRKS3_EEvOT_(i1 + 12 | 0, i29); else {
      HEAP32[i5 >> 2] = i6;
      HEAP32[i4 >> 2] = (HEAP32[i4 >> 2] | 0) + 4;
     }
     __ZN4wasm5Block8finalizeEv(i1);
     HEAP32[i29 >> 2] = i1;
    }
    i4 = i1 + 16 | 0;
    i5 = HEAP32[i4 >> 2] | 0;
    if ((i5 | 0) == (HEAP32[i1 + 20 >> 2] | 0)) {
     __ZNSt3__16vectorIPN4wasm10ExpressionENS_9allocatorIS3_EEE21__push_back_slow_pathIRKS3_EEvOT_(i1 + 12 | 0, i19);
     break;
    } else {
     HEAP32[i5 >> 2] = i7;
     HEAP32[i4 >> 2] = (HEAP32[i4 >> 2] | 0) + 4;
     break;
    }
   } else HEAP32[i29 >> 2] = i4; while (0);
  } while (0);
  i3 = i3 + 1 | 0;
 }
 i1 = HEAP32[i31 >> 2] | 0;
 if (!i1) {
  __ZZN4wasm22SExpressionWasmBuilder13parseFunctionERNS_7ElementEENKUlvE_clEv(i28);
  i1 = __ZN10MixedArena5allocIN4wasm3NopEEEPT_v(HEAP32[i24 >> 2] | 0) | 0;
  HEAP32[i29 >> 2] = i1;
  i1 = HEAP32[i31 >> 2] | 0;
 }
 if ((HEAP32[i1 + 4 >> 2] | 0) != (HEAP32[i30 >> 2] | 0)) ___assert_fail(14815, 14303, 438, 14846);
 HEAP32[i1 + 36 >> 2] = HEAP32[i29 >> 2];
 HEAP32[i1 + 32 >> 2] = i2;
 __ZN4wasm6Module11addFunctionEPNS_8FunctionE(HEAP32[i32 >> 2] | 0, HEAP32[i31 >> 2] | 0);
 __ZNSt3__16__treeINS_12__value_typeIN4wasm4NameENS2_8WasmTypeEEENS_19__map_value_compareIS3_S5_NS_4lessIS3_EELb1EEENS_9allocatorIS5_EEE5clearEv(i32 + 68 | 0);
 i3 = HEAP32[i32 + 88 >> 2] | 0;
 i1 = i32 + 92 | 0;
 i2 = HEAP32[i1 >> 2] | 0;
 while (1) {
  if ((i2 | 0) == (i3 | 0)) break;
  i32 = i2 + -4 | 0;
  HEAP32[i1 >> 2] = i32;
  i2 = i32;
 }
 HEAP32[i31 >> 2] = 0;
 __ZNSt3__113__vector_baseIN4wasm8NameTypeENS_9allocatorIS2_EEED2Ev(i35);
 __ZNSt3__113__vector_baseIN4wasm8NameTypeENS_9allocatorIS2_EEED2Ev(i33);
 __ZNSt3__113__vector_baseIN4wasm8NameTypeENS_9allocatorIS2_EEED2Ev(i34);
 STACKTOP = i36;
 return;
}

function __ZN4wasm10PostWalkerINS_14EffectAnalyzerENS_7VisitorIS1_vEEE4scanEPS1_PPNS_10ExpressionE(i5, i1) {
 i5 = i5 | 0;
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i4 = 0;
 i4 = HEAP32[i1 >> 2] | 0;
 L1 : do switch (HEAP32[i4 >> 2] | 0) {
 case 0:
  {
   _abort();
   break;
  }
 case 1:
  {
   __ZN4wasm6WalkerINS_14EffectAnalyzerENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i5, 174, i1);
   i3 = __ZN4wasm10Expression4castINS_5BlockEEEPT_v(i4) | 0;
   i1 = i3 + 12 | 0;
   i3 = (HEAP32[i3 + 16 >> 2] | 0) - (HEAP32[i1 >> 2] | 0) >> 2;
   while (1) {
    i2 = i3 + -1 | 0;
    if ((i3 | 0) <= 0) break L1;
    __ZN4wasm6WalkerINS_14EffectAnalyzerENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i5, 173, (HEAP32[i1 >> 2] | 0) + (i2 << 2) | 0);
    i3 = i2;
   }
  }
 case 2:
  {
   __ZN4wasm6WalkerINS_14EffectAnalyzerENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i5, 175, i1);
   __ZN4wasm6WalkerINS_14EffectAnalyzerENS_7VisitorIS1_vEEE13maybePushTaskEPFvPS1_PPNS_10ExpressionEES8_(i5, 173, (__ZN4wasm10Expression4castINS_2IfEEEPT_v(i4) | 0) + 16 | 0);
   __ZN4wasm6WalkerINS_14EffectAnalyzerENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i5, 173, (__ZN4wasm10Expression4castINS_2IfEEEPT_v(i4) | 0) + 12 | 0);
   __ZN4wasm6WalkerINS_14EffectAnalyzerENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i5, 173, (__ZN4wasm10Expression4castINS_2IfEEEPT_v(i4) | 0) + 8 | 0);
   break;
  }
 case 3:
  {
   __ZN4wasm6WalkerINS_14EffectAnalyzerENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i5, 176, i1);
   __ZN4wasm6WalkerINS_14EffectAnalyzerENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i5, 173, (__ZN4wasm10Expression4castINS_4LoopEEEPT_v(i4) | 0) + 16 | 0);
   break;
  }
 case 4:
  {
   __ZN4wasm6WalkerINS_14EffectAnalyzerENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i5, 177, i1);
   __ZN4wasm6WalkerINS_14EffectAnalyzerENS_7VisitorIS1_vEEE13maybePushTaskEPFvPS1_PPNS_10ExpressionEES8_(i5, 173, (__ZN4wasm10Expression4castINS_5BreakEEEPT_v(i4) | 0) + 16 | 0);
   __ZN4wasm6WalkerINS_14EffectAnalyzerENS_7VisitorIS1_vEEE13maybePushTaskEPFvPS1_PPNS_10ExpressionEES8_(i5, 173, (__ZN4wasm10Expression4castINS_5BreakEEEPT_v(i4) | 0) + 12 | 0);
   break;
  }
 case 5:
  {
   __ZN4wasm6WalkerINS_14EffectAnalyzerENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i5, 178, i1);
   __ZN4wasm6WalkerINS_14EffectAnalyzerENS_7VisitorIS1_vEEE13maybePushTaskEPFvPS1_PPNS_10ExpressionEES8_(i5, 173, (__ZN4wasm10Expression4castINS_6SwitchEEEPT_v(i4) | 0) + 28 | 0);
   __ZN4wasm6WalkerINS_14EffectAnalyzerENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i5, 173, (__ZN4wasm10Expression4castINS_6SwitchEEEPT_v(i4) | 0) + 24 | 0);
   break;
  }
 case 6:
  {
   __ZN4wasm6WalkerINS_14EffectAnalyzerENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i5, 179, i1);
   i3 = __ZN4wasm10Expression4castINS_4CallEEEPT_v(i4) | 0;
   i1 = i3 + 8 | 0;
   i3 = (HEAP32[i3 + 12 >> 2] | 0) - (HEAP32[i1 >> 2] | 0) >> 2;
   while (1) {
    i2 = i3 + -1 | 0;
    if ((i3 | 0) <= 0) break L1;
    __ZN4wasm6WalkerINS_14EffectAnalyzerENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i5, 173, (HEAP32[i1 >> 2] | 0) + (i2 << 2) | 0);
    i3 = i2;
   }
  }
 case 7:
  {
   __ZN4wasm6WalkerINS_14EffectAnalyzerENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i5, 180, i1);
   i3 = __ZN4wasm10Expression4castINS_10CallImportEEEPT_v(i4) | 0;
   i1 = i3 + 8 | 0;
   i3 = (HEAP32[i3 + 12 >> 2] | 0) - (HEAP32[i1 >> 2] | 0) >> 2;
   while (1) {
    i2 = i3 + -1 | 0;
    if ((i3 | 0) <= 0) break L1;
    __ZN4wasm6WalkerINS_14EffectAnalyzerENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i5, 173, (HEAP32[i1 >> 2] | 0) + (i2 << 2) | 0);
    i3 = i2;
   }
  }
 case 8:
  {
   __ZN4wasm6WalkerINS_14EffectAnalyzerENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i5, 181, i1);
   i3 = __ZN4wasm10Expression4castINS_12CallIndirectEEEPT_v(i4) | 0;
   i1 = i3 + 8 | 0;
   i3 = (HEAP32[i3 + 12 >> 2] | 0) - (HEAP32[i1 >> 2] | 0) >> 2;
   while (1) {
    i2 = i3 + -1 | 0;
    if ((i3 | 0) <= 0) break;
    __ZN4wasm6WalkerINS_14EffectAnalyzerENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i5, 173, (HEAP32[i1 >> 2] | 0) + (i2 << 2) | 0);
    i3 = i2;
   }
   __ZN4wasm6WalkerINS_14EffectAnalyzerENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i5, 173, (__ZN4wasm10Expression4castINS_12CallIndirectEEEPT_v(i4) | 0) + 24 | 0);
   break;
  }
 case 9:
  {
   __ZN4wasm6WalkerINS_14EffectAnalyzerENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i5, 182, i1);
   break;
  }
 case 10:
  {
   __ZN4wasm6WalkerINS_14EffectAnalyzerENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i5, 183, i1);
   __ZN4wasm6WalkerINS_14EffectAnalyzerENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i5, 173, (__ZN4wasm10Expression4castINS_8SetLocalEEEPT_v(i4) | 0) + 12 | 0);
   break;
  }
 case 11:
  {
   __ZN4wasm6WalkerINS_14EffectAnalyzerENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i5, 184, i1);
   __ZN4wasm6WalkerINS_14EffectAnalyzerENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i5, 173, (__ZN4wasm10Expression4castINS_4LoadEEEPT_v(i4) | 0) + 24 | 0);
   break;
  }
 case 12:
  {
   __ZN4wasm6WalkerINS_14EffectAnalyzerENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i5, 185, i1);
   __ZN4wasm6WalkerINS_14EffectAnalyzerENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i5, 173, (__ZN4wasm10Expression4castINS_5StoreEEEPT_v(i4) | 0) + 24 | 0);
   __ZN4wasm6WalkerINS_14EffectAnalyzerENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i5, 173, (__ZN4wasm10Expression4castINS_5StoreEEEPT_v(i4) | 0) + 20 | 0);
   break;
  }
 case 13:
  {
   __ZN4wasm6WalkerINS_14EffectAnalyzerENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i5, 186, i1);
   break;
  }
 case 14:
  {
   __ZN4wasm6WalkerINS_14EffectAnalyzerENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i5, 187, i1);
   __ZN4wasm6WalkerINS_14EffectAnalyzerENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i5, 173, (__ZN4wasm10Expression4castINS_5UnaryEEEPT_v(i4) | 0) + 12 | 0);
   break;
  }
 case 15:
  {
   __ZN4wasm6WalkerINS_14EffectAnalyzerENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i5, 188, i1);
   __ZN4wasm6WalkerINS_14EffectAnalyzerENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i5, 173, (__ZN4wasm10Expression4castINS_6BinaryEEEPT_v(i4) | 0) + 16 | 0);
   __ZN4wasm6WalkerINS_14EffectAnalyzerENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i5, 173, (__ZN4wasm10Expression4castINS_6BinaryEEEPT_v(i4) | 0) + 12 | 0);
   break;
  }
 case 16:
  {
   __ZN4wasm6WalkerINS_14EffectAnalyzerENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i5, 189, i1);
   __ZN4wasm6WalkerINS_14EffectAnalyzerENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i5, 173, (__ZN4wasm10Expression4castINS_6SelectEEEPT_v(i4) | 0) + 16 | 0);
   __ZN4wasm6WalkerINS_14EffectAnalyzerENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i5, 173, (__ZN4wasm10Expression4castINS_6SelectEEEPT_v(i4) | 0) + 12 | 0);
   __ZN4wasm6WalkerINS_14EffectAnalyzerENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i5, 173, (__ZN4wasm10Expression4castINS_6SelectEEEPT_v(i4) | 0) + 8 | 0);
   break;
  }
 case 17:
  {
   __ZN4wasm6WalkerINS_14EffectAnalyzerENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i5, 190, i1);
   __ZN4wasm6WalkerINS_14EffectAnalyzerENS_7VisitorIS1_vEEE13maybePushTaskEPFvPS1_PPNS_10ExpressionEES8_(i5, 173, (__ZN4wasm10Expression4castINS_6ReturnEEEPT_v(i4) | 0) + 8 | 0);
   break;
  }
 case 18:
  {
   __ZN4wasm6WalkerINS_14EffectAnalyzerENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i5, 191, i1);
   i3 = __ZN4wasm10Expression4castINS_4HostEEEPT_v(i4) | 0;
   i1 = i3 + 16 | 0;
   i3 = (HEAP32[i3 + 20 >> 2] | 0) - (HEAP32[i1 >> 2] | 0) >> 2;
   while (1) {
    i2 = i3 + -1 | 0;
    if ((i3 | 0) <= 0) break L1;
    __ZN4wasm6WalkerINS_14EffectAnalyzerENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i5, 173, (HEAP32[i1 >> 2] | 0) + (i2 << 2) | 0);
    i3 = i2;
   }
  }
 case 19:
  {
   __ZN4wasm6WalkerINS_14EffectAnalyzerENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i5, 192, i1);
   break;
  }
 case 20:
  {
   __ZN4wasm6WalkerINS_14EffectAnalyzerENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i5, 193, i1);
   break;
  }
 default:
  {}
 } while (0);
 return;
}

function __ZN10__cxxabiv112_GLOBAL__N_121parse_unresolved_typeINS0_2DbEEEPKcS4_S4_RT_(i6, i2, i12) {
 i6 = i6 | 0;
 i2 = i2 | 0;
 i12 = i12 | 0;
 var i1 = 0, i3 = 0, i4 = 0, i5 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i13 = 0;
 i13 = STACKTOP;
 STACKTOP = STACKTOP + 96 | 0;
 i11 = i13 + 72 | 0;
 i10 = i13 + 56 | 0;
 i7 = i13 + 48 | 0;
 i8 = i13 + 32 | 0;
 i3 = i13 + 24 | 0;
 i9 = i13 + 8 | 0;
 i4 = i13;
 L1 : do if ((i6 | 0) == (i2 | 0)) i1 = i6; else switch (HEAP8[i6 >> 0] | 0) {
 case 84:
  {
   i5 = i12 + 4 | 0;
   i4 = ((HEAP32[i5 >> 2] | 0) - (HEAP32[i12 >> 2] | 0) | 0) / 24 | 0;
   i1 = __ZN10__cxxabiv112_GLOBAL__N_120parse_template_paramINS0_2DbEEEPKcS4_S4_RT_(i6, i2, i12) | 0;
   i2 = HEAP32[i5 >> 2] | 0;
   i3 = (i2 - (HEAP32[i12 >> 2] | 0) | 0) / 24 | 0;
   if (!((i1 | 0) != (i6 | 0) & (i3 | 0) == (i4 + 1 | 0))) {
    i1 = i2;
    while (1) {
     if ((i3 | 0) == (i4 | 0)) {
      i1 = i6;
      break L1;
     }
     i2 = i1 + -24 | 0;
     while (1) {
      if ((i1 | 0) == (i2 | 0)) break;
      i12 = i1 + -24 | 0;
      HEAP32[i5 >> 2] = i12;
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i12);
      i1 = HEAP32[i5 >> 2] | 0;
     }
     i1 = i2;
     i3 = i3 + -1 | 0;
    }
   }
   i6 = i12 + 16 | 0;
   HEAP32[i7 >> 2] = HEAP32[i12 + 12 >> 2];
   __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEC2EjRKS3_RKS5_(i10, i2 + -24 | 0, i7);
   i2 = i12 + 20 | 0;
   i3 = HEAP32[i2 >> 2] | 0;
   i9 = HEAP32[i12 + 24 >> 2] | 0;
   i4 = i9;
   if (i3 >>> 0 < i9 >>> 0) {
    HEAP32[i3 + 12 >> 2] = HEAP32[i10 + 12 >> 2];
    HEAP32[i3 >> 2] = HEAP32[i10 >> 2];
    i12 = i10 + 4 | 0;
    HEAP32[i3 + 4 >> 2] = HEAP32[i12 >> 2];
    i11 = i10 + 8 | 0;
    HEAP32[i3 + 8 >> 2] = HEAP32[i11 >> 2];
    HEAP32[i11 >> 2] = 0;
    HEAP32[i12 >> 2] = 0;
    HEAP32[i10 >> 2] = 0;
    HEAP32[i2 >> 2] = (HEAP32[i2 >> 2] | 0) + 16;
   } else {
    i2 = HEAP32[i6 >> 2] | 0;
    i9 = i3 - i2 | 0;
    i5 = i9 >> 4;
    i3 = i5 + 1 | 0;
    if ((i9 | 0) < -16) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i6);
    i2 = i4 - i2 | 0;
    if (i2 >> 4 >>> 0 < 1073741823) {
     i2 = i2 >> 3;
     i2 = i2 >>> 0 < i3 >>> 0 ? i3 : i2;
    } else i2 = 2147483647;
    __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEEC2EjjS9_(i11, i2, i5, i12 + 28 | 0);
    i12 = i11 + 8 | 0;
    i9 = HEAP32[i12 >> 2] | 0;
    HEAP32[i9 + 12 >> 2] = HEAP32[i10 + 12 >> 2];
    HEAP32[i9 >> 2] = HEAP32[i10 >> 2];
    i8 = i10 + 4 | 0;
    HEAP32[i9 + 4 >> 2] = HEAP32[i8 >> 2];
    i7 = i10 + 8 | 0;
    HEAP32[i9 + 8 >> 2] = HEAP32[i7 >> 2];
    HEAP32[i7 >> 2] = 0;
    HEAP32[i8 >> 2] = 0;
    HEAP32[i10 >> 2] = 0;
    HEAP32[i12 >> 2] = i9 + 16;
    __ZNSt3__16vectorINS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS7_EE(i6, i11);
    __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEED2Ev(i11);
   }
   __ZNSt3__113__vector_baseIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEED2Ev(i10);
   break L1;
  }
 case 68:
  {
   i1 = __ZN10__cxxabiv112_GLOBAL__N_114parse_decltypeINS0_2DbEEEPKcS4_S4_RT_(i6, i2, i12) | 0;
   if ((i1 | 0) == (i6 | 0)) {
    i1 = i6;
    break L1;
   }
   i2 = HEAP32[i12 + 4 >> 2] | 0;
   if ((HEAP32[i12 >> 2] | 0) == (i2 | 0)) {
    i1 = i6;
    break L1;
   }
   i6 = i12 + 16 | 0;
   HEAP32[i3 >> 2] = HEAP32[i12 + 12 >> 2];
   __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEC2EjRKS3_RKS5_(i8, i2 + -24 | 0, i3);
   i2 = i12 + 20 | 0;
   i3 = HEAP32[i2 >> 2] | 0;
   i10 = HEAP32[i12 + 24 >> 2] | 0;
   i5 = i10;
   if (i3 >>> 0 < i10 >>> 0) {
    HEAP32[i3 + 12 >> 2] = HEAP32[i8 + 12 >> 2];
    HEAP32[i3 >> 2] = HEAP32[i8 >> 2];
    i12 = i8 + 4 | 0;
    HEAP32[i3 + 4 >> 2] = HEAP32[i12 >> 2];
    i11 = i8 + 8 | 0;
    HEAP32[i3 + 8 >> 2] = HEAP32[i11 >> 2];
    HEAP32[i11 >> 2] = 0;
    HEAP32[i12 >> 2] = 0;
    HEAP32[i8 >> 2] = 0;
    HEAP32[i2 >> 2] = (HEAP32[i2 >> 2] | 0) + 16;
   } else {
    i2 = HEAP32[i6 >> 2] | 0;
    i10 = i3 - i2 | 0;
    i4 = i10 >> 4;
    i3 = i4 + 1 | 0;
    if ((i10 | 0) < -16) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i6);
    i2 = i5 - i2 | 0;
    if (i2 >> 4 >>> 0 < 1073741823) {
     i2 = i2 >> 3;
     i2 = i2 >>> 0 < i3 >>> 0 ? i3 : i2;
    } else i2 = 2147483647;
    __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEEC2EjjS9_(i11, i2, i4, i12 + 28 | 0);
    i12 = i11 + 8 | 0;
    i10 = HEAP32[i12 >> 2] | 0;
    HEAP32[i10 + 12 >> 2] = HEAP32[i8 + 12 >> 2];
    HEAP32[i10 >> 2] = HEAP32[i8 >> 2];
    i9 = i8 + 4 | 0;
    HEAP32[i10 + 4 >> 2] = HEAP32[i9 >> 2];
    i7 = i8 + 8 | 0;
    HEAP32[i10 + 8 >> 2] = HEAP32[i7 >> 2];
    HEAP32[i7 >> 2] = 0;
    HEAP32[i9 >> 2] = 0;
    HEAP32[i8 >> 2] = 0;
    HEAP32[i12 >> 2] = i10 + 16;
    __ZNSt3__16vectorINS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS7_EE(i6, i11);
    __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEED2Ev(i11);
   }
   __ZNSt3__113__vector_baseIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEED2Ev(i8);
   break L1;
  }
 case 83:
  {
   i1 = __ZN10__cxxabiv112_GLOBAL__N_118parse_substitutionINS0_2DbEEEPKcS4_S4_RT_(i6, i2, i12) | 0;
   if ((i1 | 0) != (i6 | 0)) break L1;
   if ((i2 - i6 | 0) <= 2) {
    i1 = i6;
    break L1;
   }
   if ((HEAP8[i6 + 1 >> 0] | 0) != 116) {
    i1 = i6;
    break L1;
   }
   i10 = i6 + 2 | 0;
   i1 = __ZN10__cxxabiv112_GLOBAL__N_122parse_unqualified_nameINS0_2DbEEEPKcS4_S4_RT_(i10, i2, i12) | 0;
   if ((i1 | 0) == (i10 | 0)) {
    i1 = i6;
    break L1;
   }
   i3 = i12 + 4 | 0;
   i2 = HEAP32[i3 >> 2] | 0;
   if ((HEAP32[i12 >> 2] | 0) == (i2 | 0)) {
    i1 = i6;
    break L1;
   }
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc(i2 + -24 | 0, 0, 34651) | 0;
   i6 = i12 + 16 | 0;
   i2 = (HEAP32[i3 >> 2] | 0) + -24 | 0;
   HEAP32[i4 >> 2] = HEAP32[i12 + 12 >> 2];
   __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEC2EjRKS3_RKS5_(i9, i2, i4);
   i2 = i12 + 20 | 0;
   i3 = HEAP32[i2 >> 2] | 0;
   i10 = HEAP32[i12 + 24 >> 2] | 0;
   i4 = i10;
   if (i3 >>> 0 < i10 >>> 0) {
    HEAP32[i3 + 12 >> 2] = HEAP32[i9 + 12 >> 2];
    HEAP32[i3 >> 2] = HEAP32[i9 >> 2];
    i12 = i9 + 4 | 0;
    HEAP32[i3 + 4 >> 2] = HEAP32[i12 >> 2];
    i11 = i9 + 8 | 0;
    HEAP32[i3 + 8 >> 2] = HEAP32[i11 >> 2];
    HEAP32[i11 >> 2] = 0;
    HEAP32[i12 >> 2] = 0;
    HEAP32[i9 >> 2] = 0;
    HEAP32[i2 >> 2] = (HEAP32[i2 >> 2] | 0) + 16;
   } else {
    i2 = HEAP32[i6 >> 2] | 0;
    i10 = i3 - i2 | 0;
    i5 = i10 >> 4;
    i3 = i5 + 1 | 0;
    if ((i10 | 0) < -16) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i6);
    i2 = i4 - i2 | 0;
    if (i2 >> 4 >>> 0 < 1073741823) {
     i2 = i2 >> 3;
     i2 = i2 >>> 0 < i3 >>> 0 ? i3 : i2;
    } else i2 = 2147483647;
    __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEEC2EjjS9_(i11, i2, i5, i12 + 28 | 0);
    i12 = i11 + 8 | 0;
    i10 = HEAP32[i12 >> 2] | 0;
    HEAP32[i10 + 12 >> 2] = HEAP32[i9 + 12 >> 2];
    HEAP32[i10 >> 2] = HEAP32[i9 >> 2];
    i8 = i9 + 4 | 0;
    HEAP32[i10 + 4 >> 2] = HEAP32[i8 >> 2];
    i7 = i9 + 8 | 0;
    HEAP32[i10 + 8 >> 2] = HEAP32[i7 >> 2];
    HEAP32[i7 >> 2] = 0;
    HEAP32[i8 >> 2] = 0;
    HEAP32[i9 >> 2] = 0;
    HEAP32[i12 >> 2] = i10 + 16;
    __ZNSt3__16vectorINS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS7_EE(i6, i11);
    __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEED2Ev(i11);
   }
   __ZNSt3__113__vector_baseIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEED2Ev(i9);
   break L1;
  }
 default:
  {
   i1 = i6;
   break L1;
  }
 } while (0);
 STACKTOP = i13;
 return i1 | 0;
}

function __ZN4wasm10PostWalkerINS_6VacuumENS_7VisitorIS1_vEEE4scanEPS1_PPNS_10ExpressionE(i1, i2) {
 i1 = i1 | 0;
 i2 = i2 | 0;
 var i3 = 0, i4 = 0, i5 = 0;
 i5 = HEAP32[i2 >> 2] | 0;
 L1 : do switch (HEAP32[i5 >> 2] | 0) {
 case 0:
  {
   _abort();
   break;
  }
 case 1:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_6VacuumENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 300, i2);
   i3 = __ZN4wasm10Expression4castINS_5BlockEEEPT_v(i5) | 0;
   i1 = i3 + 12 | 0;
   i3 = (HEAP32[i3 + 16 >> 2] | 0) - (HEAP32[i1 >> 2] | 0) >> 2;
   while (1) {
    i2 = i3 + -1 | 0;
    if ((i3 | 0) <= 0) break L1;
    __ZN4wasm6WalkerINS_6VacuumENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 299, (HEAP32[i1 >> 2] | 0) + (i2 << 2) | 0);
    i3 = i2;
   }
  }
 case 2:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_6VacuumENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 301, i2);
   __ZN4wasm6WalkerINS_6VacuumENS_7VisitorIS1_vEEE13maybePushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 299, (__ZN4wasm10Expression4castINS_2IfEEEPT_v(i5) | 0) + 16 | 0);
   __ZN4wasm6WalkerINS_6VacuumENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 299, (__ZN4wasm10Expression4castINS_2IfEEEPT_v(i5) | 0) + 12 | 0);
   __ZN4wasm6WalkerINS_6VacuumENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 299, (__ZN4wasm10Expression4castINS_2IfEEEPT_v(i5) | 0) + 8 | 0);
   break;
  }
 case 3:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_6VacuumENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 302, i2);
   __ZN4wasm6WalkerINS_6VacuumENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 299, (__ZN4wasm10Expression4castINS_4LoopEEEPT_v(i5) | 0) + 16 | 0);
   break;
  }
 case 4:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_6VacuumENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 303, i2);
   __ZN4wasm6WalkerINS_6VacuumENS_7VisitorIS1_vEEE13maybePushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 299, (__ZN4wasm10Expression4castINS_5BreakEEEPT_v(i5) | 0) + 16 | 0);
   __ZN4wasm6WalkerINS_6VacuumENS_7VisitorIS1_vEEE13maybePushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 299, (__ZN4wasm10Expression4castINS_5BreakEEEPT_v(i5) | 0) + 12 | 0);
   break;
  }
 case 5:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_6VacuumENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 304, i2);
   __ZN4wasm6WalkerINS_6VacuumENS_7VisitorIS1_vEEE13maybePushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 299, (__ZN4wasm10Expression4castINS_6SwitchEEEPT_v(i5) | 0) + 28 | 0);
   __ZN4wasm6WalkerINS_6VacuumENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 299, (__ZN4wasm10Expression4castINS_6SwitchEEEPT_v(i5) | 0) + 24 | 0);
   break;
  }
 case 6:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_6VacuumENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 305, i2);
   i3 = __ZN4wasm10Expression4castINS_4CallEEEPT_v(i5) | 0;
   i1 = i3 + 8 | 0;
   i3 = (HEAP32[i3 + 12 >> 2] | 0) - (HEAP32[i1 >> 2] | 0) >> 2;
   while (1) {
    i2 = i3 + -1 | 0;
    if ((i3 | 0) <= 0) break L1;
    __ZN4wasm6WalkerINS_6VacuumENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 299, (HEAP32[i1 >> 2] | 0) + (i2 << 2) | 0);
    i3 = i2;
   }
  }
 case 7:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_6VacuumENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 306, i2);
   i3 = __ZN4wasm10Expression4castINS_10CallImportEEEPT_v(i5) | 0;
   i1 = i3 + 8 | 0;
   i3 = (HEAP32[i3 + 12 >> 2] | 0) - (HEAP32[i1 >> 2] | 0) >> 2;
   while (1) {
    i2 = i3 + -1 | 0;
    if ((i3 | 0) <= 0) break L1;
    __ZN4wasm6WalkerINS_6VacuumENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 299, (HEAP32[i1 >> 2] | 0) + (i2 << 2) | 0);
    i3 = i2;
   }
  }
 case 8:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_6VacuumENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 307, i2);
   i3 = __ZN4wasm10Expression4castINS_12CallIndirectEEEPT_v(i5) | 0;
   i1 = i3 + 8 | 0;
   i3 = (HEAP32[i3 + 12 >> 2] | 0) - (HEAP32[i1 >> 2] | 0) >> 2;
   while (1) {
    i2 = i3 + -1 | 0;
    if ((i3 | 0) <= 0) break;
    __ZN4wasm6WalkerINS_6VacuumENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 299, (HEAP32[i1 >> 2] | 0) + (i2 << 2) | 0);
    i3 = i2;
   }
   __ZN4wasm6WalkerINS_6VacuumENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 299, (__ZN4wasm10Expression4castINS_12CallIndirectEEEPT_v(i5) | 0) + 24 | 0);
   break;
  }
 case 9:
  {
   __ZN4wasm6WalkerINS_6VacuumENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i1 + 16 | 0, 308, i2);
   break;
  }
 case 10:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_6VacuumENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 309, i2);
   __ZN4wasm6WalkerINS_6VacuumENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 299, (__ZN4wasm10Expression4castINS_8SetLocalEEEPT_v(i5) | 0) + 12 | 0);
   break;
  }
 case 11:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_6VacuumENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 310, i2);
   __ZN4wasm6WalkerINS_6VacuumENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 299, (__ZN4wasm10Expression4castINS_4LoadEEEPT_v(i5) | 0) + 24 | 0);
   break;
  }
 case 12:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_6VacuumENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 311, i2);
   __ZN4wasm6WalkerINS_6VacuumENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 299, (__ZN4wasm10Expression4castINS_5StoreEEEPT_v(i5) | 0) + 24 | 0);
   __ZN4wasm6WalkerINS_6VacuumENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 299, (__ZN4wasm10Expression4castINS_5StoreEEEPT_v(i5) | 0) + 20 | 0);
   break;
  }
 case 13:
  {
   __ZN4wasm6WalkerINS_6VacuumENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i1 + 16 | 0, 312, i2);
   break;
  }
 case 14:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_6VacuumENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 313, i2);
   __ZN4wasm6WalkerINS_6VacuumENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 299, (__ZN4wasm10Expression4castINS_5UnaryEEEPT_v(i5) | 0) + 12 | 0);
   break;
  }
 case 15:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_6VacuumENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 314, i2);
   __ZN4wasm6WalkerINS_6VacuumENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 299, (__ZN4wasm10Expression4castINS_6BinaryEEEPT_v(i5) | 0) + 16 | 0);
   __ZN4wasm6WalkerINS_6VacuumENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 299, (__ZN4wasm10Expression4castINS_6BinaryEEEPT_v(i5) | 0) + 12 | 0);
   break;
  }
 case 16:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_6VacuumENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 315, i2);
   __ZN4wasm6WalkerINS_6VacuumENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 299, (__ZN4wasm10Expression4castINS_6SelectEEEPT_v(i5) | 0) + 16 | 0);
   __ZN4wasm6WalkerINS_6VacuumENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 299, (__ZN4wasm10Expression4castINS_6SelectEEEPT_v(i5) | 0) + 12 | 0);
   __ZN4wasm6WalkerINS_6VacuumENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 299, (__ZN4wasm10Expression4castINS_6SelectEEEPT_v(i5) | 0) + 8 | 0);
   break;
  }
 case 17:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_6VacuumENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 316, i2);
   __ZN4wasm6WalkerINS_6VacuumENS_7VisitorIS1_vEEE13maybePushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 299, (__ZN4wasm10Expression4castINS_6ReturnEEEPT_v(i5) | 0) + 8 | 0);
   break;
  }
 case 18:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_6VacuumENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 317, i2);
   i3 = __ZN4wasm10Expression4castINS_4HostEEEPT_v(i5) | 0;
   i1 = i3 + 16 | 0;
   i3 = (HEAP32[i3 + 20 >> 2] | 0) - (HEAP32[i1 >> 2] | 0) >> 2;
   while (1) {
    i2 = i3 + -1 | 0;
    if ((i3 | 0) <= 0) break L1;
    __ZN4wasm6WalkerINS_6VacuumENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 299, (HEAP32[i1 >> 2] | 0) + (i2 << 2) | 0);
    i3 = i2;
   }
  }
 case 19:
  {
   __ZN4wasm6WalkerINS_6VacuumENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i1 + 16 | 0, 318, i2);
   break;
  }
 case 20:
  {
   __ZN4wasm6WalkerINS_6VacuumENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i1 + 16 | 0, 319, i2);
   break;
  }
 default:
  {}
 } while (0);
 return;
}

function __ZN4wasm10PostWalkerINS_11BreakSeekerENS_7VisitorIS1_vEEE4scanEPS1_PPNS_10ExpressionE(i5, i1) {
 i5 = i5 | 0;
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i4 = 0;
 i4 = HEAP32[i1 >> 2] | 0;
 L1 : do switch (HEAP32[i4 >> 2] | 0) {
 case 0:
  {
   _abort();
   break;
  }
 case 1:
  {
   __ZN4wasm6WalkerINS_11BreakSeekerENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i5, 60, i1);
   i3 = __ZN4wasm10Expression4castINS_5BlockEEEPT_v(i4) | 0;
   i1 = i3 + 12 | 0;
   i3 = (HEAP32[i3 + 16 >> 2] | 0) - (HEAP32[i1 >> 2] | 0) >> 2;
   while (1) {
    i2 = i3 + -1 | 0;
    if ((i3 | 0) <= 0) break L1;
    __ZN4wasm6WalkerINS_11BreakSeekerENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i5, 59, (HEAP32[i1 >> 2] | 0) + (i2 << 2) | 0);
    i3 = i2;
   }
  }
 case 2:
  {
   __ZN4wasm6WalkerINS_11BreakSeekerENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i5, 61, i1);
   __ZN4wasm6WalkerINS_11BreakSeekerENS_7VisitorIS1_vEEE13maybePushTaskEPFvPS1_PPNS_10ExpressionEES8_(i5, 59, (__ZN4wasm10Expression4castINS_2IfEEEPT_v(i4) | 0) + 16 | 0);
   __ZN4wasm6WalkerINS_11BreakSeekerENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i5, 59, (__ZN4wasm10Expression4castINS_2IfEEEPT_v(i4) | 0) + 12 | 0);
   __ZN4wasm6WalkerINS_11BreakSeekerENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i5, 59, (__ZN4wasm10Expression4castINS_2IfEEEPT_v(i4) | 0) + 8 | 0);
   break;
  }
 case 3:
  {
   __ZN4wasm6WalkerINS_11BreakSeekerENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i5, 62, i1);
   __ZN4wasm6WalkerINS_11BreakSeekerENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i5, 59, (__ZN4wasm10Expression4castINS_4LoopEEEPT_v(i4) | 0) + 16 | 0);
   break;
  }
 case 4:
  {
   __ZN4wasm6WalkerINS_11BreakSeekerENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i5, 63, i1);
   __ZN4wasm6WalkerINS_11BreakSeekerENS_7VisitorIS1_vEEE13maybePushTaskEPFvPS1_PPNS_10ExpressionEES8_(i5, 59, (__ZN4wasm10Expression4castINS_5BreakEEEPT_v(i4) | 0) + 16 | 0);
   __ZN4wasm6WalkerINS_11BreakSeekerENS_7VisitorIS1_vEEE13maybePushTaskEPFvPS1_PPNS_10ExpressionEES8_(i5, 59, (__ZN4wasm10Expression4castINS_5BreakEEEPT_v(i4) | 0) + 12 | 0);
   break;
  }
 case 5:
  {
   __ZN4wasm6WalkerINS_11BreakSeekerENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i5, 64, i1);
   __ZN4wasm6WalkerINS_11BreakSeekerENS_7VisitorIS1_vEEE13maybePushTaskEPFvPS1_PPNS_10ExpressionEES8_(i5, 59, (__ZN4wasm10Expression4castINS_6SwitchEEEPT_v(i4) | 0) + 28 | 0);
   __ZN4wasm6WalkerINS_11BreakSeekerENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i5, 59, (__ZN4wasm10Expression4castINS_6SwitchEEEPT_v(i4) | 0) + 24 | 0);
   break;
  }
 case 6:
  {
   __ZN4wasm6WalkerINS_11BreakSeekerENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i5, 65, i1);
   i3 = __ZN4wasm10Expression4castINS_4CallEEEPT_v(i4) | 0;
   i1 = i3 + 8 | 0;
   i3 = (HEAP32[i3 + 12 >> 2] | 0) - (HEAP32[i1 >> 2] | 0) >> 2;
   while (1) {
    i2 = i3 + -1 | 0;
    if ((i3 | 0) <= 0) break L1;
    __ZN4wasm6WalkerINS_11BreakSeekerENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i5, 59, (HEAP32[i1 >> 2] | 0) + (i2 << 2) | 0);
    i3 = i2;
   }
  }
 case 7:
  {
   __ZN4wasm6WalkerINS_11BreakSeekerENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i5, 66, i1);
   i3 = __ZN4wasm10Expression4castINS_10CallImportEEEPT_v(i4) | 0;
   i1 = i3 + 8 | 0;
   i3 = (HEAP32[i3 + 12 >> 2] | 0) - (HEAP32[i1 >> 2] | 0) >> 2;
   while (1) {
    i2 = i3 + -1 | 0;
    if ((i3 | 0) <= 0) break L1;
    __ZN4wasm6WalkerINS_11BreakSeekerENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i5, 59, (HEAP32[i1 >> 2] | 0) + (i2 << 2) | 0);
    i3 = i2;
   }
  }
 case 8:
  {
   __ZN4wasm6WalkerINS_11BreakSeekerENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i5, 67, i1);
   i3 = __ZN4wasm10Expression4castINS_12CallIndirectEEEPT_v(i4) | 0;
   i1 = i3 + 8 | 0;
   i3 = (HEAP32[i3 + 12 >> 2] | 0) - (HEAP32[i1 >> 2] | 0) >> 2;
   while (1) {
    i2 = i3 + -1 | 0;
    if ((i3 | 0) <= 0) break;
    __ZN4wasm6WalkerINS_11BreakSeekerENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i5, 59, (HEAP32[i1 >> 2] | 0) + (i2 << 2) | 0);
    i3 = i2;
   }
   __ZN4wasm6WalkerINS_11BreakSeekerENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i5, 59, (__ZN4wasm10Expression4castINS_12CallIndirectEEEPT_v(i4) | 0) + 24 | 0);
   break;
  }
 case 9:
  {
   __ZN4wasm6WalkerINS_11BreakSeekerENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i5, 68, i1);
   break;
  }
 case 10:
  {
   __ZN4wasm6WalkerINS_11BreakSeekerENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i5, 69, i1);
   __ZN4wasm6WalkerINS_11BreakSeekerENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i5, 59, (__ZN4wasm10Expression4castINS_8SetLocalEEEPT_v(i4) | 0) + 12 | 0);
   break;
  }
 case 11:
  {
   __ZN4wasm6WalkerINS_11BreakSeekerENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i5, 70, i1);
   __ZN4wasm6WalkerINS_11BreakSeekerENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i5, 59, (__ZN4wasm10Expression4castINS_4LoadEEEPT_v(i4) | 0) + 24 | 0);
   break;
  }
 case 12:
  {
   __ZN4wasm6WalkerINS_11BreakSeekerENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i5, 71, i1);
   __ZN4wasm6WalkerINS_11BreakSeekerENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i5, 59, (__ZN4wasm10Expression4castINS_5StoreEEEPT_v(i4) | 0) + 24 | 0);
   __ZN4wasm6WalkerINS_11BreakSeekerENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i5, 59, (__ZN4wasm10Expression4castINS_5StoreEEEPT_v(i4) | 0) + 20 | 0);
   break;
  }
 case 13:
  {
   __ZN4wasm6WalkerINS_11BreakSeekerENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i5, 72, i1);
   break;
  }
 case 14:
  {
   __ZN4wasm6WalkerINS_11BreakSeekerENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i5, 73, i1);
   __ZN4wasm6WalkerINS_11BreakSeekerENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i5, 59, (__ZN4wasm10Expression4castINS_5UnaryEEEPT_v(i4) | 0) + 12 | 0);
   break;
  }
 case 15:
  {
   __ZN4wasm6WalkerINS_11BreakSeekerENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i5, 74, i1);
   __ZN4wasm6WalkerINS_11BreakSeekerENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i5, 59, (__ZN4wasm10Expression4castINS_6BinaryEEEPT_v(i4) | 0) + 16 | 0);
   __ZN4wasm6WalkerINS_11BreakSeekerENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i5, 59, (__ZN4wasm10Expression4castINS_6BinaryEEEPT_v(i4) | 0) + 12 | 0);
   break;
  }
 case 16:
  {
   __ZN4wasm6WalkerINS_11BreakSeekerENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i5, 75, i1);
   __ZN4wasm6WalkerINS_11BreakSeekerENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i5, 59, (__ZN4wasm10Expression4castINS_6SelectEEEPT_v(i4) | 0) + 16 | 0);
   __ZN4wasm6WalkerINS_11BreakSeekerENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i5, 59, (__ZN4wasm10Expression4castINS_6SelectEEEPT_v(i4) | 0) + 12 | 0);
   __ZN4wasm6WalkerINS_11BreakSeekerENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i5, 59, (__ZN4wasm10Expression4castINS_6SelectEEEPT_v(i4) | 0) + 8 | 0);
   break;
  }
 case 17:
  {
   __ZN4wasm6WalkerINS_11BreakSeekerENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i5, 76, i1);
   __ZN4wasm6WalkerINS_11BreakSeekerENS_7VisitorIS1_vEEE13maybePushTaskEPFvPS1_PPNS_10ExpressionEES8_(i5, 59, (__ZN4wasm10Expression4castINS_6ReturnEEEPT_v(i4) | 0) + 8 | 0);
   break;
  }
 case 18:
  {
   __ZN4wasm6WalkerINS_11BreakSeekerENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i5, 77, i1);
   i3 = __ZN4wasm10Expression4castINS_4HostEEEPT_v(i4) | 0;
   i1 = i3 + 16 | 0;
   i3 = (HEAP32[i3 + 20 >> 2] | 0) - (HEAP32[i1 >> 2] | 0) >> 2;
   while (1) {
    i2 = i3 + -1 | 0;
    if ((i3 | 0) <= 0) break L1;
    __ZN4wasm6WalkerINS_11BreakSeekerENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i5, 59, (HEAP32[i1 >> 2] | 0) + (i2 << 2) | 0);
    i3 = i2;
   }
  }
 case 19:
  {
   __ZN4wasm6WalkerINS_11BreakSeekerENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i5, 78, i1);
   break;
  }
 case 20:
  {
   __ZN4wasm6WalkerINS_11BreakSeekerENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i5, 79, i1);
   break;
  }
 default:
  {}
 } while (0);
 return;
}

function __ZN4wasm16PrintSExpression11visitModuleEPNS_6ModuleE(i16, i14) {
 i16 = i16 | 0;
 i14 = i14 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i15 = 0, i17 = 0, i18 = 0;
 i17 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i11 = i17 + 4 | 0;
 i12 = i17;
 __Z12printOpeningRNSt3__113basic_ostreamIcNS_11char_traitsIcEEEEPKcb(HEAP32[i16 >> 2] | 0, 18049, 1) | 0;
 __ZN4wasm16PrintSExpression9incIndentEv(i16);
 i15 = i16 + 4 | 0;
 __Z8doIndentRNSt3__113basic_ostreamIcNS_11char_traitsIcEEEEj(HEAP32[i16 >> 2] | 0, HEAP32[i15 >> 2] | 0) | 0;
 i1 = __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(__Z12printOpeningRNSt3__113basic_ostreamIcNS_11char_traitsIcEEEEPKcb(HEAP32[i16 >> 2] | 0, 18081, 0) | 0, 34710) | 0;
 __ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEElsEj(i1, HEAP32[i14 + 60 >> 2] | 0) | 0;
 i1 = i14 + 64 | 0;
 switch (HEAP32[i1 >> 2] | 0) {
 case -1:
 case 0:
  break;
 default:
  __ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEElsEj(__ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(HEAP32[i16 >> 2] | 0, 34710) | 0, HEAP32[i1 >> 2] | 0) | 0;
 }
 i1 = i14 + 68 | 0;
 i2 = i14 + 72 | 0;
 i3 = HEAP32[i2 >> 2] | 0;
 i13 = i16 + 16 | 0;
 i4 = i16 + 8 | 0;
 i9 = HEAP32[i1 >> 2] | 0;
 while (1) {
  if ((i9 | 0) == (i3 | 0)) break;
  i10 = HEAP32[i9 >> 2] | 0;
  i5 = HEAP32[i9 + 4 >> 2] | 0;
  i6 = HEAP32[i9 + 8 >> 2] | 0;
  __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(HEAP32[i16 >> 2] | 0, HEAP32[i13 >> 2] | 0) | 0;
  __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(__ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEElsEj(__ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(__ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(HEAP32[i16 >> 2] | 0, HEAP8[i4 >> 0] | 0 ? 44318 : 18088) | 0, 18093) | 0, i10) | 0, 18103) | 0;
  i10 = 0;
  while (1) {
   if ((i10 | 0) == (i6 | 0)) break;
   i7 = HEAP8[i5 + i10 >> 0] | 0;
   L10 : do switch (i7 & 255 | 0) {
   case 10:
    {
     __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(HEAP32[i16 >> 2] | 0, 18109) | 0;
     break;
    }
   case 13:
    {
     __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(HEAP32[i16 >> 2] | 0, 18112) | 0;
     break;
    }
   case 9:
    {
     __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(HEAP32[i16 >> 2] | 0, 18116) | 0;
     break;
    }
   case 12:
    {
     __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(HEAP32[i16 >> 2] | 0, 18119) | 0;
     break;
    }
   case 8:
    {
     __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(HEAP32[i16 >> 2] | 0, 18123) | 0;
     break;
    }
   case 92:
    {
     __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(HEAP32[i16 >> 2] | 0, 18127) | 0;
     break;
    }
   case 34:
    {
     __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(HEAP32[i16 >> 2] | 0, 18130) | 0;
     break;
    }
   case 39:
    {
     __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(HEAP32[i16 >> 2] | 0, 18133) | 0;
     break;
    }
   default:
    {
     i8 = HEAP32[i16 >> 2] | 0;
     if ((i7 + -32 & 255) < 95) {
      __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_h(i8, i7) | 0;
      break L10;
     } else {
      i18 = i8 + (HEAP32[(HEAP32[i8 >> 2] | 0) + -12 >> 2] | 0) + 4 | 0;
      HEAP32[i18 >> 2] = HEAP32[i18 >> 2] & -75 | 8;
      i8 = __ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEElsEi(__ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEElsEi(__ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_c(i8, 92) | 0, (i7 & 255) >>> 4 & 255) | 0, i7 & 15) | 0;
      i8 = i8 + (HEAP32[(HEAP32[i8 >> 2] | 0) + -12 >> 2] | 0) + 4 | 0;
      HEAP32[i8 >> 2] = HEAP32[i8 >> 2] & -75 | 2;
      break L10;
     }
    }
   } while (0);
   i10 = i10 + 1 | 0;
  }
  __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(HEAP32[i16 >> 2] | 0, 18106) | 0;
  i9 = i9 + 12 | 0;
 }
 if ((HEAP32[i2 >> 2] | 0) == (HEAP32[i1 >> 2] | 0)) i1 = 44318; else i1 = HEAP8[i4 >> 0] | 0 ? 44318 : 18136;
 __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(__ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(HEAP32[i16 >> 2] | 0, i1) | 0, 33621) | 0;
 __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(HEAP32[i16 >> 2] | 0, HEAP32[i13 >> 2] | 0) | 0;
 i1 = i14 + 80 | 0;
 if (HEAP32[i1 >> 2] | 0) {
  __Z8doIndentRNSt3__113basic_ostreamIcNS_11char_traitsIcEEEEj(HEAP32[i16 >> 2] | 0, HEAP32[i15 >> 2] | 0) | 0;
  __Z12printOpeningRNSt3__113basic_ostreamIcNS_11char_traitsIcEEEEPKcb(HEAP32[i16 >> 2] | 0, 18140, 0) | 0;
  __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(__Z9printTextRNSt3__113basic_ostreamIcNS_11char_traitsIcEEEEPKc(HEAP32[i16 >> 2] | 0, HEAP32[i1 >> 2] | 0) | 0, 18154) | 0;
  __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(HEAP32[i16 >> 2] | 0, HEAP32[i13 >> 2] | 0) | 0;
 }
 i1 = i14 + 84 | 0;
 if (HEAP32[i1 >> 2] | 0) {
  __Z8doIndentRNSt3__113basic_ostreamIcNS_11char_traitsIcEEEEj(HEAP32[i16 >> 2] | 0, HEAP32[i15 >> 2] | 0) | 0;
  i18 = __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(__Z12printOpeningRNSt3__113basic_ostreamIcNS_11char_traitsIcEEEEPKcb(HEAP32[i16 >> 2] | 0, 18163, 0) | 0, 34710) | 0;
  HEAP32[i12 >> 2] = HEAP32[i1 >> 2];
  HEAP32[i11 >> 2] = HEAP32[i12 >> 2];
  __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(__ZN4wasmlsERNSt3__113basic_ostreamIcNS0_11char_traitsIcEEEENS_4NameE(i18, i11) | 0, 33621) | 0;
  __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(HEAP32[i16 >> 2] | 0, HEAP32[i13 >> 2] | 0) | 0;
 }
 i1 = HEAP32[i14 + 4 >> 2] | 0;
 i2 = HEAP32[i14 >> 2] | 0;
 while (1) {
  if ((i2 | 0) == (i1 | 0)) break;
  __Z8doIndentRNSt3__113basic_ostreamIcNS_11char_traitsIcEEEEj(HEAP32[i16 >> 2] | 0, HEAP32[i15 >> 2] | 0) | 0;
  __ZN4wasm16PrintSExpression17visitFunctionTypeEPNS_12FunctionTypeEb(i16, HEAP32[i2 >> 2] | 0, 1);
  __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(HEAP32[i16 >> 2] | 0, HEAP32[i13 >> 2] | 0) | 0;
  i2 = i2 + 4 | 0;
 }
 i1 = HEAP32[i14 + 16 >> 2] | 0;
 i2 = HEAP32[i14 + 12 >> 2] | 0;
 while (1) {
  if ((i2 | 0) == (i1 | 0)) break;
  __Z8doIndentRNSt3__113basic_ostreamIcNS_11char_traitsIcEEEEj(HEAP32[i16 >> 2] | 0, HEAP32[i15 >> 2] | 0) | 0;
  __ZN4wasm16PrintSExpression11visitImportEPNS_6ImportE(i16, HEAP32[i2 >> 2] | 0);
  __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(HEAP32[i16 >> 2] | 0, HEAP32[i13 >> 2] | 0) | 0;
  i2 = i2 + 4 | 0;
 }
 i1 = HEAP32[i14 + 28 >> 2] | 0;
 i2 = HEAP32[i14 + 24 >> 2] | 0;
 while (1) {
  if ((i2 | 0) == (i1 | 0)) break;
  __Z8doIndentRNSt3__113basic_ostreamIcNS_11char_traitsIcEEEEj(HEAP32[i16 >> 2] | 0, HEAP32[i15 >> 2] | 0) | 0;
  __ZN4wasm16PrintSExpression11visitExportEPNS_6ExportE(i16, HEAP32[i2 >> 2] | 0);
  __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(HEAP32[i16 >> 2] | 0, HEAP32[i13 >> 2] | 0) | 0;
  i2 = i2 + 4 | 0;
 }
 i1 = i14 + 48 | 0;
 if ((HEAP32[i14 + 52 >> 2] | 0) != (HEAP32[i1 >> 2] | 0)) {
  __Z8doIndentRNSt3__113basic_ostreamIcNS_11char_traitsIcEEEEj(HEAP32[i16 >> 2] | 0, HEAP32[i15 >> 2] | 0) | 0;
  __ZN4wasm16PrintSExpression10visitTableEPNS_5TableE(i16, i1);
  __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(HEAP32[i16 >> 2] | 0, HEAP32[i13 >> 2] | 0) | 0;
 }
 i2 = HEAP32[i14 + 40 >> 2] | 0;
 i1 = HEAP32[i14 + 36 >> 2] | 0;
 while (1) {
  if ((i1 | 0) == (i2 | 0)) break;
  __Z8doIndentRNSt3__113basic_ostreamIcNS_11char_traitsIcEEEEj(HEAP32[i16 >> 2] | 0, HEAP32[i15 >> 2] | 0) | 0;
  __ZN4wasm16PrintSExpression13visitFunctionEPNS_8FunctionE(i16, HEAP32[i1 >> 2] | 0);
  __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(HEAP32[i16 >> 2] | 0, HEAP32[i13 >> 2] | 0) | 0;
  i1 = i1 + 4 | 0;
 }
 __ZN4wasm16PrintSExpression9decIndentEv(i16);
 __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(HEAP32[i16 >> 2] | 0, HEAP32[i13 >> 2] | 0) | 0;
 STACKTOP = i17;
 return;
}

function __ZNSt3__111__money_putIcE13__gather_infoEbbRKNS_6localeERNS_10money_base7patternERcS8_RNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEESF_SF_Ri(i1, i12, i2, i13, i19, i21, i20, i22, i14, i23) {
 i1 = i1 | 0;
 i12 = i12 | 0;
 i2 = i2 | 0;
 i13 = i13 | 0;
 i19 = i19 | 0;
 i21 = i21 | 0;
 i20 = i20 | 0;
 i22 = i22 | 0;
 i14 = i14 | 0;
 i23 = i23 | 0;
 var i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i15 = 0, i16 = 0, i17 = 0, i18 = 0, i24 = 0;
 i24 = STACKTOP;
 STACKTOP = STACKTOP + 112 | 0;
 i4 = i24 + 108 | 0;
 i8 = i24 + 96 | 0;
 i5 = i24 + 92 | 0;
 i9 = i24 + 80 | 0;
 i16 = i24 + 68 | 0;
 i18 = i24 + 56 | 0;
 i6 = i24 + 52 | 0;
 i10 = i24 + 40 | 0;
 i7 = i24 + 36 | 0;
 i11 = i24 + 24 | 0;
 i15 = i24 + 12 | 0;
 i17 = i24;
 if (i1) {
  i3 = __ZNKSt3__16locale9use_facetERNS0_2idE(i2, 40096) | 0;
  i1 = HEAP32[i3 >> 2] | 0;
  if (i12) {
   FUNCTION_TABLE_vii[HEAP32[i1 + 44 >> 2] & 511](i4, i3);
   i17 = HEAP32[i4 >> 2] | 0;
   HEAP8[i13 >> 0] = i17;
   HEAP8[i13 + 1 >> 0] = i17 >> 8;
   HEAP8[i13 + 2 >> 0] = i17 >> 16;
   HEAP8[i13 + 3 >> 0] = i17 >> 24;
   FUNCTION_TABLE_vii[HEAP32[(HEAP32[i3 >> 2] | 0) + 32 >> 2] & 511](i8, i3);
   if (!(HEAP8[i14 >> 0] & 1)) {
    HEAP8[i14 + 1 >> 0] = 0;
    HEAP8[i14 >> 0] = 0;
   } else {
    HEAP8[HEAP32[i14 + 8 >> 2] >> 0] = 0;
    HEAP32[i14 + 4 >> 2] = 0;
   }
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE7reserveEj(i14, 0);
   HEAP32[i14 >> 2] = HEAP32[i8 >> 2];
   HEAP32[i14 + 4 >> 2] = HEAP32[i8 + 4 >> 2];
   HEAP32[i14 + 8 >> 2] = HEAP32[i8 + 8 >> 2];
   i1 = 0;
   while (1) {
    if ((i1 | 0) == 3) break;
    HEAP32[i8 + (i1 << 2) >> 2] = 0;
    i1 = i1 + 1 | 0;
   }
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i8);
   i2 = i3;
  } else {
   FUNCTION_TABLE_vii[HEAP32[i1 + 40 >> 2] & 511](i5, i3);
   i17 = HEAP32[i5 >> 2] | 0;
   HEAP8[i13 >> 0] = i17;
   HEAP8[i13 + 1 >> 0] = i17 >> 8;
   HEAP8[i13 + 2 >> 0] = i17 >> 16;
   HEAP8[i13 + 3 >> 0] = i17 >> 24;
   FUNCTION_TABLE_vii[HEAP32[(HEAP32[i3 >> 2] | 0) + 28 >> 2] & 511](i9, i3);
   if (!(HEAP8[i14 >> 0] & 1)) {
    HEAP8[i14 + 1 >> 0] = 0;
    HEAP8[i14 >> 0] = 0;
   } else {
    HEAP8[HEAP32[i14 + 8 >> 2] >> 0] = 0;
    HEAP32[i14 + 4 >> 2] = 0;
   }
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE7reserveEj(i14, 0);
   HEAP32[i14 >> 2] = HEAP32[i9 >> 2];
   HEAP32[i14 + 4 >> 2] = HEAP32[i9 + 4 >> 2];
   HEAP32[i14 + 8 >> 2] = HEAP32[i9 + 8 >> 2];
   i1 = 0;
   while (1) {
    if ((i1 | 0) == 3) break;
    HEAP32[i9 + (i1 << 2) >> 2] = 0;
    i1 = i1 + 1 | 0;
   }
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i9);
   i2 = i3;
  }
  i17 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i3 >> 2] | 0) + 12 >> 2] & 127](i3) | 0;
  HEAP8[i19 >> 0] = i17;
  i19 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i3 >> 2] | 0) + 16 >> 2] & 127](i3) | 0;
  HEAP8[i21 >> 0] = i19;
  FUNCTION_TABLE_vii[HEAP32[(HEAP32[i2 >> 2] | 0) + 20 >> 2] & 511](i16, i3);
  if (!(HEAP8[i20 >> 0] & 1)) {
   HEAP8[i20 + 1 >> 0] = 0;
   HEAP8[i20 >> 0] = 0;
  } else {
   HEAP8[HEAP32[i20 + 8 >> 2] >> 0] = 0;
   HEAP32[i20 + 4 >> 2] = 0;
  }
  __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE7reserveEj(i20, 0);
  HEAP32[i20 >> 2] = HEAP32[i16 >> 2];
  HEAP32[i20 + 4 >> 2] = HEAP32[i16 + 4 >> 2];
  HEAP32[i20 + 8 >> 2] = HEAP32[i16 + 8 >> 2];
  i1 = 0;
  while (1) {
   if ((i1 | 0) == 3) break;
   HEAP32[i16 + (i1 << 2) >> 2] = 0;
   i1 = i1 + 1 | 0;
  }
  __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i16);
  FUNCTION_TABLE_vii[HEAP32[(HEAP32[i2 >> 2] | 0) + 24 >> 2] & 511](i18, i3);
  if (!(HEAP8[i22 >> 0] & 1)) {
   HEAP8[i22 + 1 >> 0] = 0;
   HEAP8[i22 >> 0] = 0;
  } else {
   HEAP8[HEAP32[i22 + 8 >> 2] >> 0] = 0;
   HEAP32[i22 + 4 >> 2] = 0;
  }
  __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE7reserveEj(i22, 0);
  HEAP32[i22 >> 2] = HEAP32[i18 >> 2];
  HEAP32[i22 + 4 >> 2] = HEAP32[i18 + 4 >> 2];
  HEAP32[i22 + 8 >> 2] = HEAP32[i18 + 8 >> 2];
  i1 = 0;
  while (1) {
   if ((i1 | 0) == 3) break;
   HEAP32[i18 + (i1 << 2) >> 2] = 0;
   i1 = i1 + 1 | 0;
  }
  __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i18);
  i1 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i3 >> 2] | 0) + 36 >> 2] & 127](i3) | 0;
 } else {
  i3 = __ZNKSt3__16locale9use_facetERNS0_2idE(i2, 40088) | 0;
  i1 = HEAP32[i3 >> 2] | 0;
  if (i12) {
   FUNCTION_TABLE_vii[HEAP32[i1 + 44 >> 2] & 511](i6, i3);
   i18 = HEAP32[i6 >> 2] | 0;
   HEAP8[i13 >> 0] = i18;
   HEAP8[i13 + 1 >> 0] = i18 >> 8;
   HEAP8[i13 + 2 >> 0] = i18 >> 16;
   HEAP8[i13 + 3 >> 0] = i18 >> 24;
   FUNCTION_TABLE_vii[HEAP32[(HEAP32[i3 >> 2] | 0) + 32 >> 2] & 511](i10, i3);
   if (!(HEAP8[i14 >> 0] & 1)) {
    HEAP8[i14 + 1 >> 0] = 0;
    HEAP8[i14 >> 0] = 0;
   } else {
    HEAP8[HEAP32[i14 + 8 >> 2] >> 0] = 0;
    HEAP32[i14 + 4 >> 2] = 0;
   }
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE7reserveEj(i14, 0);
   HEAP32[i14 >> 2] = HEAP32[i10 >> 2];
   HEAP32[i14 + 4 >> 2] = HEAP32[i10 + 4 >> 2];
   HEAP32[i14 + 8 >> 2] = HEAP32[i10 + 8 >> 2];
   i1 = 0;
   while (1) {
    if ((i1 | 0) == 3) break;
    HEAP32[i10 + (i1 << 2) >> 2] = 0;
    i1 = i1 + 1 | 0;
   }
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i10);
   i2 = i3;
  } else {
   FUNCTION_TABLE_vii[HEAP32[i1 + 40 >> 2] & 511](i7, i3);
   i18 = HEAP32[i7 >> 2] | 0;
   HEAP8[i13 >> 0] = i18;
   HEAP8[i13 + 1 >> 0] = i18 >> 8;
   HEAP8[i13 + 2 >> 0] = i18 >> 16;
   HEAP8[i13 + 3 >> 0] = i18 >> 24;
   FUNCTION_TABLE_vii[HEAP32[(HEAP32[i3 >> 2] | 0) + 28 >> 2] & 511](i11, i3);
   if (!(HEAP8[i14 >> 0] & 1)) {
    HEAP8[i14 + 1 >> 0] = 0;
    HEAP8[i14 >> 0] = 0;
   } else {
    HEAP8[HEAP32[i14 + 8 >> 2] >> 0] = 0;
    HEAP32[i14 + 4 >> 2] = 0;
   }
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE7reserveEj(i14, 0);
   HEAP32[i14 >> 2] = HEAP32[i11 >> 2];
   HEAP32[i14 + 4 >> 2] = HEAP32[i11 + 4 >> 2];
   HEAP32[i14 + 8 >> 2] = HEAP32[i11 + 8 >> 2];
   i1 = 0;
   while (1) {
    if ((i1 | 0) == 3) break;
    HEAP32[i11 + (i1 << 2) >> 2] = 0;
    i1 = i1 + 1 | 0;
   }
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i11);
   i2 = i3;
  }
  i18 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i3 >> 2] | 0) + 12 >> 2] & 127](i3) | 0;
  HEAP8[i19 >> 0] = i18;
  i19 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i3 >> 2] | 0) + 16 >> 2] & 127](i3) | 0;
  HEAP8[i21 >> 0] = i19;
  FUNCTION_TABLE_vii[HEAP32[(HEAP32[i2 >> 2] | 0) + 20 >> 2] & 511](i15, i3);
  if (!(HEAP8[i20 >> 0] & 1)) {
   HEAP8[i20 + 1 >> 0] = 0;
   HEAP8[i20 >> 0] = 0;
  } else {
   HEAP8[HEAP32[i20 + 8 >> 2] >> 0] = 0;
   HEAP32[i20 + 4 >> 2] = 0;
  }
  __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE7reserveEj(i20, 0);
  HEAP32[i20 >> 2] = HEAP32[i15 >> 2];
  HEAP32[i20 + 4 >> 2] = HEAP32[i15 + 4 >> 2];
  HEAP32[i20 + 8 >> 2] = HEAP32[i15 + 8 >> 2];
  i1 = 0;
  while (1) {
   if ((i1 | 0) == 3) break;
   HEAP32[i15 + (i1 << 2) >> 2] = 0;
   i1 = i1 + 1 | 0;
  }
  __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i15);
  FUNCTION_TABLE_vii[HEAP32[(HEAP32[i2 >> 2] | 0) + 24 >> 2] & 511](i17, i3);
  if (!(HEAP8[i22 >> 0] & 1)) {
   HEAP8[i22 + 1 >> 0] = 0;
   HEAP8[i22 >> 0] = 0;
  } else {
   HEAP8[HEAP32[i22 + 8 >> 2] >> 0] = 0;
   HEAP32[i22 + 4 >> 2] = 0;
  }
  __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE7reserveEj(i22, 0);
  HEAP32[i22 >> 2] = HEAP32[i17 >> 2];
  HEAP32[i22 + 4 >> 2] = HEAP32[i17 + 4 >> 2];
  HEAP32[i22 + 8 >> 2] = HEAP32[i17 + 8 >> 2];
  i1 = 0;
  while (1) {
   if ((i1 | 0) == 3) break;
   HEAP32[i17 + (i1 << 2) >> 2] = 0;
   i1 = i1 + 1 | 0;
  }
  __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i17);
  i1 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i3 >> 2] | 0) + 36 >> 2] & 127](i3) | 0;
 }
 HEAP32[i23 >> 2] = i1;
 STACKTOP = i24;
 return;
}

function ___intscan(i13, i3, i6, i1, i2) {
 i13 = i13 | 0;
 i3 = i3 | 0;
 i6 = i6 | 0;
 i1 = i1 | 0;
 i2 = i2 | 0;
 var i4 = 0, i5 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i14 = 0, i15 = 0;
 L1 : do if (i3 >>> 0 > 36) {
  i2 = ___errno_location() | 0;
  HEAP32[i2 >> 2] = 22;
  i2 = 0;
  i1 = 0;
 } else {
  i15 = i13 + 4 | 0;
  i14 = i13 + 100 | 0;
  do {
   i4 = HEAP32[i15 >> 2] | 0;
   if (i4 >>> 0 < (HEAP32[i14 >> 2] | 0) >>> 0) {
    HEAP32[i15 >> 2] = i4 + 1;
    i4 = HEAPU8[i4 >> 0] | 0;
   } else i4 = ___shgetc(i13) | 0;
  } while ((_isspace(i4) | 0) != 0);
  L11 : do switch (i4 | 0) {
  case 43:
  case 45:
   {
    i5 = ((i4 | 0) == 45) << 31 >> 31;
    i4 = HEAP32[i15 >> 2] | 0;
    if (i4 >>> 0 < (HEAP32[i14 >> 2] | 0) >>> 0) {
     HEAP32[i15 >> 2] = i4 + 1;
     i4 = HEAPU8[i4 >> 0] | 0;
     i12 = i5;
     break L11;
    } else {
     i4 = ___shgetc(i13) | 0;
     i12 = i5;
     break L11;
    }
   }
  default:
   i12 = 0;
  } while (0);
  i5 = (i3 | 0) == 0;
  do if ((i3 | 16 | 0) == 16 & (i4 | 0) == 48) {
   i4 = HEAP32[i15 >> 2] | 0;
   if (i4 >>> 0 < (HEAP32[i14 >> 2] | 0) >>> 0) {
    HEAP32[i15 >> 2] = i4 + 1;
    i4 = HEAPU8[i4 >> 0] | 0;
   } else i4 = ___shgetc(i13) | 0;
   if ((i4 | 32 | 0) != 120) if (i5) {
    i3 = 8;
    i10 = 46;
    break;
   } else {
    i10 = 32;
    break;
   }
   i3 = HEAP32[i15 >> 2] | 0;
   if (i3 >>> 0 < (HEAP32[i14 >> 2] | 0) >>> 0) {
    HEAP32[i15 >> 2] = i3 + 1;
    i4 = HEAPU8[i3 >> 0] | 0;
   } else i4 = ___shgetc(i13) | 0;
   if ((HEAPU8[26525 + i4 >> 0] | 0) > 15) {
    i1 = (HEAP32[i14 >> 2] | 0) == 0;
    if (!i1) HEAP32[i15 >> 2] = (HEAP32[i15 >> 2] | 0) + -1;
    if (!i6) {
     ___shlim(i13, 0);
     i2 = 0;
     i1 = 0;
     break L1;
    }
    if (i1) {
     i2 = 0;
     i1 = 0;
     break L1;
    }
    HEAP32[i15 >> 2] = (HEAP32[i15 >> 2] | 0) + -1;
    i2 = 0;
    i1 = 0;
    break L1;
   } else {
    i3 = 16;
    i10 = 46;
   }
  } else {
   i3 = i5 ? 10 : i3;
   if ((HEAPU8[26525 + i4 >> 0] | 0) >>> 0 < i3 >>> 0) i10 = 32; else {
    if (HEAP32[i14 >> 2] | 0) HEAP32[i15 >> 2] = (HEAP32[i15 >> 2] | 0) + -1;
    ___shlim(i13, 0);
    i2 = ___errno_location() | 0;
    HEAP32[i2 >> 2] = 22;
    i2 = 0;
    i1 = 0;
    break L1;
   }
  } while (0);
  if ((i10 | 0) == 32) if ((i3 | 0) == 10) {
   i3 = i4 + -48 | 0;
   if (i3 >>> 0 < 10) {
    i4 = 0;
    while (1) {
     i5 = (i4 * 10 | 0) + i3 | 0;
     i3 = HEAP32[i15 >> 2] | 0;
     if (i3 >>> 0 < (HEAP32[i14 >> 2] | 0) >>> 0) {
      HEAP32[i15 >> 2] = i3 + 1;
      i4 = HEAPU8[i3 >> 0] | 0;
     } else i4 = ___shgetc(i13) | 0;
     i3 = i4 + -48 | 0;
     if (!(i3 >>> 0 < 10 & i5 >>> 0 < 429496729)) {
      i3 = i5;
      break;
     } else i4 = i5;
    }
    i5 = 0;
   } else {
    i3 = 0;
    i5 = 0;
   }
   i6 = i4 + -48 | 0;
   if (i6 >>> 0 < 10) {
    while (1) {
     i7 = ___muldi3(i3 | 0, i5 | 0, 10, 0) | 0;
     i8 = tempRet0;
     i9 = ((i6 | 0) < 0) << 31 >> 31;
     i11 = ~i9;
     if (i8 >>> 0 > i11 >>> 0 | (i8 | 0) == (i11 | 0) & i7 >>> 0 > ~i6 >>> 0) {
      i7 = i3;
      break;
     }
     i3 = _i64Add(i7 | 0, i8 | 0, i6 | 0, i9 | 0) | 0;
     i5 = tempRet0;
     i4 = HEAP32[i15 >> 2] | 0;
     if (i4 >>> 0 < (HEAP32[i14 >> 2] | 0) >>> 0) {
      HEAP32[i15 >> 2] = i4 + 1;
      i4 = HEAPU8[i4 >> 0] | 0;
     } else i4 = ___shgetc(i13) | 0;
     i6 = i4 + -48 | 0;
     if (!(i6 >>> 0 < 10 & (i5 >>> 0 < 429496729 | (i5 | 0) == 429496729 & i3 >>> 0 < 2576980378))) {
      i7 = i3;
      break;
     }
    }
    if (i6 >>> 0 > 9) {
     i4 = i7;
     i3 = i12;
    } else {
     i3 = 10;
     i10 = 72;
    }
   } else {
    i4 = i3;
    i3 = i12;
   }
  } else i10 = 46;
  L63 : do if ((i10 | 0) == 46) {
   if (!(i3 + -1 & i3)) {
    i10 = HEAP8[26781 + ((i3 * 23 | 0) >>> 5 & 7) >> 0] | 0;
    i5 = HEAP8[26525 + i4 >> 0] | 0;
    i6 = i5 & 255;
    if (i6 >>> 0 < i3 >>> 0) {
     i4 = 0;
     while (1) {
      i7 = i6 | i4 << i10;
      i4 = HEAP32[i15 >> 2] | 0;
      if (i4 >>> 0 < (HEAP32[i14 >> 2] | 0) >>> 0) {
       HEAP32[i15 >> 2] = i4 + 1;
       i4 = HEAPU8[i4 >> 0] | 0;
      } else i4 = ___shgetc(i13) | 0;
      i5 = HEAP8[26525 + i4 >> 0] | 0;
      i6 = i5 & 255;
      if (!(i7 >>> 0 < 134217728 & i6 >>> 0 < i3 >>> 0)) break; else i4 = i7;
     }
     i6 = 0;
    } else {
     i6 = 0;
     i7 = 0;
    }
    i8 = _bitshift64Lshr(-1, -1, i10 | 0) | 0;
    i9 = tempRet0;
    if ((i5 & 255) >>> 0 >= i3 >>> 0 | (i6 >>> 0 > i9 >>> 0 | (i6 | 0) == (i9 | 0) & i7 >>> 0 > i8 >>> 0)) {
     i5 = i6;
     i10 = 72;
     break;
    } else i4 = i6;
    while (1) {
     i7 = _bitshift64Shl(i7 | 0, i4 | 0, i10 | 0) | 0;
     i6 = tempRet0;
     i7 = i5 & 255 | i7;
     i4 = HEAP32[i15 >> 2] | 0;
     if (i4 >>> 0 < (HEAP32[i14 >> 2] | 0) >>> 0) {
      HEAP32[i15 >> 2] = i4 + 1;
      i4 = HEAPU8[i4 >> 0] | 0;
     } else i4 = ___shgetc(i13) | 0;
     i5 = HEAP8[26525 + i4 >> 0] | 0;
     if ((i5 & 255) >>> 0 >= i3 >>> 0 | (i6 >>> 0 > i9 >>> 0 | (i6 | 0) == (i9 | 0) & i7 >>> 0 > i8 >>> 0)) {
      i5 = i6;
      i10 = 72;
      break L63;
     } else i4 = i6;
    }
   }
   i5 = HEAP8[26525 + i4 >> 0] | 0;
   i6 = i5 & 255;
   if (i6 >>> 0 < i3 >>> 0) {
    i4 = 0;
    while (1) {
     i7 = i6 + (Math_imul(i4, i3) | 0) | 0;
     i4 = HEAP32[i15 >> 2] | 0;
     if (i4 >>> 0 < (HEAP32[i14 >> 2] | 0) >>> 0) {
      HEAP32[i15 >> 2] = i4 + 1;
      i4 = HEAPU8[i4 >> 0] | 0;
     } else i4 = ___shgetc(i13) | 0;
     i5 = HEAP8[26525 + i4 >> 0] | 0;
     i6 = i5 & 255;
     if (!(i7 >>> 0 < 119304647 & i6 >>> 0 < i3 >>> 0)) break; else i4 = i7;
    }
    i6 = 0;
   } else {
    i7 = 0;
    i6 = 0;
   }
   if ((i5 & 255) >>> 0 < i3 >>> 0) {
    i10 = ___udivdi3(-1, -1, i3 | 0, 0) | 0;
    i11 = tempRet0;
    i9 = i6;
    while (1) {
     if (i9 >>> 0 > i11 >>> 0 | (i9 | 0) == (i11 | 0) & i7 >>> 0 > i10 >>> 0) {
      i5 = i9;
      i10 = 72;
      break L63;
     }
     i6 = ___muldi3(i7 | 0, i9 | 0, i3 | 0, 0) | 0;
     i8 = tempRet0;
     i5 = i5 & 255;
     if (i8 >>> 0 > 4294967295 | (i8 | 0) == -1 & i6 >>> 0 > ~i5 >>> 0) {
      i5 = i9;
      i10 = 72;
      break L63;
     }
     i7 = _i64Add(i5 | 0, 0, i6 | 0, i8 | 0) | 0;
     i6 = tempRet0;
     i4 = HEAP32[i15 >> 2] | 0;
     if (i4 >>> 0 < (HEAP32[i14 >> 2] | 0) >>> 0) {
      HEAP32[i15 >> 2] = i4 + 1;
      i4 = HEAPU8[i4 >> 0] | 0;
     } else i4 = ___shgetc(i13) | 0;
     i5 = HEAP8[26525 + i4 >> 0] | 0;
     if ((i5 & 255) >>> 0 >= i3 >>> 0) {
      i5 = i6;
      i10 = 72;
      break;
     } else i9 = i6;
    }
   } else {
    i5 = i6;
    i10 = 72;
   }
  } while (0);
  if ((i10 | 0) == 72) if ((HEAPU8[26525 + i4 >> 0] | 0) >>> 0 < i3 >>> 0) {
   do {
    i4 = HEAP32[i15 >> 2] | 0;
    if (i4 >>> 0 < (HEAP32[i14 >> 2] | 0) >>> 0) {
     HEAP32[i15 >> 2] = i4 + 1;
     i4 = HEAPU8[i4 >> 0] | 0;
    } else i4 = ___shgetc(i13) | 0;
   } while ((HEAPU8[26525 + i4 >> 0] | 0) >>> 0 < i3 >>> 0);
   i5 = ___errno_location() | 0;
   HEAP32[i5 >> 2] = 34;
   i5 = i2;
   i4 = i1;
   i3 = (i1 & 1 | 0) == 0 & 0 == 0 ? i12 : 0;
  } else {
   i4 = i7;
   i3 = i12;
  }
  if (HEAP32[i14 >> 2] | 0) HEAP32[i15 >> 2] = (HEAP32[i15 >> 2] | 0) + -1;
  if (!(i5 >>> 0 < i2 >>> 0 | (i5 | 0) == (i2 | 0) & i4 >>> 0 < i1 >>> 0)) {
   if (!((i1 & 1 | 0) != 0 | 0 != 0 | (i3 | 0) != 0)) {
    i15 = ___errno_location() | 0;
    HEAP32[i15 >> 2] = 34;
    i1 = _i64Add(i1 | 0, i2 | 0, -1, -1) | 0;
    i2 = tempRet0;
    break;
   }
   if (i5 >>> 0 > i2 >>> 0 | (i5 | 0) == (i2 | 0) & i4 >>> 0 > i1 >>> 0) {
    i15 = ___errno_location() | 0;
    HEAP32[i15 >> 2] = 34;
    break;
   }
  }
  i1 = ((i3 | 0) < 0) << 31 >> 31;
  i1 = _i64Subtract(i4 ^ i3 | 0, i5 ^ i1 | 0, i3 | 0, i1 | 0) | 0;
  i2 = tempRet0;
 } while (0);
 tempRet0 = i2;
 return i1 | 0;
}

function __ZNSt3__111__money_putIwE13__gather_infoEbbRKNS_6localeERNS_10money_base7patternERwS8_RNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEERNS9_IwNSA_IwEENSC_IwEEEESJ_Ri(i1, i11, i2, i12, i18, i20, i19, i21, i13, i22) {
 i1 = i1 | 0;
 i11 = i11 | 0;
 i2 = i2 | 0;
 i12 = i12 | 0;
 i18 = i18 | 0;
 i20 = i20 | 0;
 i19 = i19 | 0;
 i21 = i21 | 0;
 i13 = i13 | 0;
 i22 = i22 | 0;
 var i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, i23 = 0;
 i23 = STACKTOP;
 STACKTOP = STACKTOP + 112 | 0;
 i3 = i23 + 108 | 0;
 i7 = i23 + 96 | 0;
 i4 = i23 + 92 | 0;
 i8 = i23 + 80 | 0;
 i15 = i23 + 68 | 0;
 i17 = i23 + 56 | 0;
 i5 = i23 + 52 | 0;
 i9 = i23 + 40 | 0;
 i6 = i23 + 36 | 0;
 i10 = i23 + 24 | 0;
 i14 = i23 + 12 | 0;
 i16 = i23;
 if (i1) {
  i2 = __ZNKSt3__16locale9use_facetERNS0_2idE(i2, 40112) | 0;
  i1 = HEAP32[i2 >> 2] | 0;
  if (i11) {
   FUNCTION_TABLE_vii[HEAP32[i1 + 44 >> 2] & 511](i3, i2);
   i16 = HEAP32[i3 >> 2] | 0;
   HEAP8[i12 >> 0] = i16;
   HEAP8[i12 + 1 >> 0] = i16 >> 8;
   HEAP8[i12 + 2 >> 0] = i16 >> 16;
   HEAP8[i12 + 3 >> 0] = i16 >> 24;
   FUNCTION_TABLE_vii[HEAP32[(HEAP32[i2 >> 2] | 0) + 32 >> 2] & 511](i7, i2);
   if (!(HEAP8[i13 >> 0] & 1)) HEAP8[i13 >> 0] = 0; else HEAP32[HEAP32[i13 + 8 >> 2] >> 2] = 0;
   HEAP32[i13 + 4 >> 2] = 0;
   __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE7reserveEj(i13, 0);
   HEAP32[i13 >> 2] = HEAP32[i7 >> 2];
   HEAP32[i13 + 4 >> 2] = HEAP32[i7 + 4 >> 2];
   HEAP32[i13 + 8 >> 2] = HEAP32[i7 + 8 >> 2];
   i1 = 0;
   while (1) {
    if ((i1 | 0) == 3) break;
    HEAP32[i7 + (i1 << 2) >> 2] = 0;
    i1 = i1 + 1 | 0;
   }
   __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev(i7);
  } else {
   FUNCTION_TABLE_vii[HEAP32[i1 + 40 >> 2] & 511](i4, i2);
   i16 = HEAP32[i4 >> 2] | 0;
   HEAP8[i12 >> 0] = i16;
   HEAP8[i12 + 1 >> 0] = i16 >> 8;
   HEAP8[i12 + 2 >> 0] = i16 >> 16;
   HEAP8[i12 + 3 >> 0] = i16 >> 24;
   FUNCTION_TABLE_vii[HEAP32[(HEAP32[i2 >> 2] | 0) + 28 >> 2] & 511](i8, i2);
   if (!(HEAP8[i13 >> 0] & 1)) HEAP8[i13 >> 0] = 0; else HEAP32[HEAP32[i13 + 8 >> 2] >> 2] = 0;
   HEAP32[i13 + 4 >> 2] = 0;
   __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE7reserveEj(i13, 0);
   HEAP32[i13 >> 2] = HEAP32[i8 >> 2];
   HEAP32[i13 + 4 >> 2] = HEAP32[i8 + 4 >> 2];
   HEAP32[i13 + 8 >> 2] = HEAP32[i8 + 8 >> 2];
   i1 = 0;
   while (1) {
    if ((i1 | 0) == 3) break;
    HEAP32[i8 + (i1 << 2) >> 2] = 0;
    i1 = i1 + 1 | 0;
   }
   __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev(i8);
  }
  i16 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i2 >> 2] | 0) + 12 >> 2] & 127](i2) | 0;
  HEAP32[i18 >> 2] = i16;
  i18 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i2 >> 2] | 0) + 16 >> 2] & 127](i2) | 0;
  HEAP32[i20 >> 2] = i18;
  FUNCTION_TABLE_vii[HEAP32[(HEAP32[i2 >> 2] | 0) + 20 >> 2] & 511](i15, i2);
  if (!(HEAP8[i19 >> 0] & 1)) {
   HEAP8[i19 + 1 >> 0] = 0;
   HEAP8[i19 >> 0] = 0;
  } else {
   HEAP8[HEAP32[i19 + 8 >> 2] >> 0] = 0;
   HEAP32[i19 + 4 >> 2] = 0;
  }
  __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE7reserveEj(i19, 0);
  HEAP32[i19 >> 2] = HEAP32[i15 >> 2];
  HEAP32[i19 + 4 >> 2] = HEAP32[i15 + 4 >> 2];
  HEAP32[i19 + 8 >> 2] = HEAP32[i15 + 8 >> 2];
  i1 = 0;
  while (1) {
   if ((i1 | 0) == 3) break;
   HEAP32[i15 + (i1 << 2) >> 2] = 0;
   i1 = i1 + 1 | 0;
  }
  __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i15);
  FUNCTION_TABLE_vii[HEAP32[(HEAP32[i2 >> 2] | 0) + 24 >> 2] & 511](i17, i2);
  if (!(HEAP8[i21 >> 0] & 1)) HEAP8[i21 >> 0] = 0; else HEAP32[HEAP32[i21 + 8 >> 2] >> 2] = 0;
  HEAP32[i21 + 4 >> 2] = 0;
  __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE7reserveEj(i21, 0);
  HEAP32[i21 >> 2] = HEAP32[i17 >> 2];
  HEAP32[i21 + 4 >> 2] = HEAP32[i17 + 4 >> 2];
  HEAP32[i21 + 8 >> 2] = HEAP32[i17 + 8 >> 2];
  i1 = 0;
  while (1) {
   if ((i1 | 0) == 3) break;
   HEAP32[i17 + (i1 << 2) >> 2] = 0;
   i1 = i1 + 1 | 0;
  }
  __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev(i17);
  i1 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i2 >> 2] | 0) + 36 >> 2] & 127](i2) | 0;
 } else {
  i2 = __ZNKSt3__16locale9use_facetERNS0_2idE(i2, 40104) | 0;
  i1 = HEAP32[i2 >> 2] | 0;
  if (i11) {
   FUNCTION_TABLE_vii[HEAP32[i1 + 44 >> 2] & 511](i5, i2);
   i17 = HEAP32[i5 >> 2] | 0;
   HEAP8[i12 >> 0] = i17;
   HEAP8[i12 + 1 >> 0] = i17 >> 8;
   HEAP8[i12 + 2 >> 0] = i17 >> 16;
   HEAP8[i12 + 3 >> 0] = i17 >> 24;
   FUNCTION_TABLE_vii[HEAP32[(HEAP32[i2 >> 2] | 0) + 32 >> 2] & 511](i9, i2);
   if (!(HEAP8[i13 >> 0] & 1)) HEAP8[i13 >> 0] = 0; else HEAP32[HEAP32[i13 + 8 >> 2] >> 2] = 0;
   HEAP32[i13 + 4 >> 2] = 0;
   __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE7reserveEj(i13, 0);
   HEAP32[i13 >> 2] = HEAP32[i9 >> 2];
   HEAP32[i13 + 4 >> 2] = HEAP32[i9 + 4 >> 2];
   HEAP32[i13 + 8 >> 2] = HEAP32[i9 + 8 >> 2];
   i1 = 0;
   while (1) {
    if ((i1 | 0) == 3) break;
    HEAP32[i9 + (i1 << 2) >> 2] = 0;
    i1 = i1 + 1 | 0;
   }
   __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev(i9);
  } else {
   FUNCTION_TABLE_vii[HEAP32[i1 + 40 >> 2] & 511](i6, i2);
   i17 = HEAP32[i6 >> 2] | 0;
   HEAP8[i12 >> 0] = i17;
   HEAP8[i12 + 1 >> 0] = i17 >> 8;
   HEAP8[i12 + 2 >> 0] = i17 >> 16;
   HEAP8[i12 + 3 >> 0] = i17 >> 24;
   FUNCTION_TABLE_vii[HEAP32[(HEAP32[i2 >> 2] | 0) + 28 >> 2] & 511](i10, i2);
   if (!(HEAP8[i13 >> 0] & 1)) HEAP8[i13 >> 0] = 0; else HEAP32[HEAP32[i13 + 8 >> 2] >> 2] = 0;
   HEAP32[i13 + 4 >> 2] = 0;
   __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE7reserveEj(i13, 0);
   HEAP32[i13 >> 2] = HEAP32[i10 >> 2];
   HEAP32[i13 + 4 >> 2] = HEAP32[i10 + 4 >> 2];
   HEAP32[i13 + 8 >> 2] = HEAP32[i10 + 8 >> 2];
   i1 = 0;
   while (1) {
    if ((i1 | 0) == 3) break;
    HEAP32[i10 + (i1 << 2) >> 2] = 0;
    i1 = i1 + 1 | 0;
   }
   __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev(i10);
  }
  i17 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i2 >> 2] | 0) + 12 >> 2] & 127](i2) | 0;
  HEAP32[i18 >> 2] = i17;
  i18 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i2 >> 2] | 0) + 16 >> 2] & 127](i2) | 0;
  HEAP32[i20 >> 2] = i18;
  FUNCTION_TABLE_vii[HEAP32[(HEAP32[i2 >> 2] | 0) + 20 >> 2] & 511](i14, i2);
  if (!(HEAP8[i19 >> 0] & 1)) {
   HEAP8[i19 + 1 >> 0] = 0;
   HEAP8[i19 >> 0] = 0;
  } else {
   HEAP8[HEAP32[i19 + 8 >> 2] >> 0] = 0;
   HEAP32[i19 + 4 >> 2] = 0;
  }
  __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE7reserveEj(i19, 0);
  HEAP32[i19 >> 2] = HEAP32[i14 >> 2];
  HEAP32[i19 + 4 >> 2] = HEAP32[i14 + 4 >> 2];
  HEAP32[i19 + 8 >> 2] = HEAP32[i14 + 8 >> 2];
  i1 = 0;
  while (1) {
   if ((i1 | 0) == 3) break;
   HEAP32[i14 + (i1 << 2) >> 2] = 0;
   i1 = i1 + 1 | 0;
  }
  __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i14);
  FUNCTION_TABLE_vii[HEAP32[(HEAP32[i2 >> 2] | 0) + 24 >> 2] & 511](i16, i2);
  if (!(HEAP8[i21 >> 0] & 1)) HEAP8[i21 >> 0] = 0; else HEAP32[HEAP32[i21 + 8 >> 2] >> 2] = 0;
  HEAP32[i21 + 4 >> 2] = 0;
  __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE7reserveEj(i21, 0);
  HEAP32[i21 >> 2] = HEAP32[i16 >> 2];
  HEAP32[i21 + 4 >> 2] = HEAP32[i16 + 4 >> 2];
  HEAP32[i21 + 8 >> 2] = HEAP32[i16 + 8 >> 2];
  i1 = 0;
  while (1) {
   if ((i1 | 0) == 3) break;
   HEAP32[i16 + (i1 << 2) >> 2] = 0;
   i1 = i1 + 1 | 0;
  }
  __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev(i16);
  i1 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i2 >> 2] | 0) + 36 >> 2] & 127](i2) | 0;
 }
 HEAP32[i22 >> 2] = i1;
 STACKTOP = i23;
 return;
}

function __ZN6cashew4InitC2Ev(i1) {
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0;
 i16 = STACKTOP;
 STACKTOP = STACKTOP + 368 | 0;
 i1 = i16 + 340 | 0;
 i3 = i16 + 308 | 0;
 i4 = i16 + 280 | 0;
 i5 = i16 + 252 | 0;
 i6 = i16 + 224 | 0;
 i7 = i16 + 196 | 0;
 i8 = i16 + 168 | 0;
 i9 = i16 + 140 | 0;
 i10 = i16 + 112 | 0;
 i11 = i16 + 84 | 0;
 i12 = i16 + 56 | 0;
 i13 = i16 + 28 | 0;
 i14 = i16;
 i15 = i16 + 336 | 0;
 __ZN6cashew10IStringSetC2EPKc(i1, 34660);
 HEAP8[i1 + 20 >> 0] = 0;
 HEAP32[i1 + 24 >> 2] = 0;
 i2 = HEAP32[9147] | 0;
 if (i2 >>> 0 < (HEAP32[9148] | 0) >>> 0) {
  __ZN6cashew13OperatorClassC2EOS0_(i2, i1);
  HEAP32[9147] = (HEAP32[9147] | 0) + 28;
 } else __ZNSt3__16vectorIN6cashew13OperatorClassENS_9allocatorIS2_EEE21__push_back_slow_pathIS2_EEvOT_(36584, i1);
 __ZNSt3__112__hash_tableIN6cashew7IStringENS_4hashIS2_EENS_8equal_toIS2_EENS_9allocatorIS2_EEED2Ev(i1);
 __ZN6cashew10IStringSetC2EPKc(i3, 26001);
 HEAP8[i3 + 20 >> 0] = 1;
 HEAP32[i3 + 24 >> 2] = 1;
 i1 = HEAP32[9147] | 0;
 if (i1 >>> 0 < (HEAP32[9148] | 0) >>> 0) {
  __ZN6cashew13OperatorClassC2EOS0_(i1, i3);
  HEAP32[9147] = (HEAP32[9147] | 0) + 28;
 } else __ZNSt3__16vectorIN6cashew13OperatorClassENS_9allocatorIS2_EEE21__push_back_slow_pathIS2_EEvOT_(36584, i3);
 __ZNSt3__112__hash_tableIN6cashew7IStringENS_4hashIS2_EENS_8equal_toIS2_EENS_9allocatorIS2_EEED2Ev(i3);
 __ZN6cashew10IStringSetC2EPKc(i4, 26009);
 HEAP8[i4 + 20 >> 0] = 0;
 HEAP32[i4 + 24 >> 2] = 0;
 i1 = HEAP32[9147] | 0;
 if (i1 >>> 0 < (HEAP32[9148] | 0) >>> 0) {
  __ZN6cashew13OperatorClassC2EOS0_(i1, i4);
  HEAP32[9147] = (HEAP32[9147] | 0) + 28;
 } else __ZNSt3__16vectorIN6cashew13OperatorClassENS_9allocatorIS2_EEE21__push_back_slow_pathIS2_EEvOT_(36584, i4);
 __ZNSt3__112__hash_tableIN6cashew7IStringENS_4hashIS2_EENS_8equal_toIS2_EENS_9allocatorIS2_EEED2Ev(i4);
 __ZN6cashew10IStringSetC2EPKc(i5, 26015);
 HEAP8[i5 + 20 >> 0] = 0;
 HEAP32[i5 + 24 >> 2] = 0;
 i1 = HEAP32[9147] | 0;
 if (i1 >>> 0 < (HEAP32[9148] | 0) >>> 0) {
  __ZN6cashew13OperatorClassC2EOS0_(i1, i5);
  HEAP32[9147] = (HEAP32[9147] | 0) + 28;
 } else __ZNSt3__16vectorIN6cashew13OperatorClassENS_9allocatorIS2_EEE21__push_back_slow_pathIS2_EEvOT_(36584, i5);
 __ZNSt3__112__hash_tableIN6cashew7IStringENS_4hashIS2_EENS_8equal_toIS2_EENS_9allocatorIS2_EEED2Ev(i5);
 __ZN6cashew10IStringSetC2EPKc(i6, 26019);
 HEAP8[i6 + 20 >> 0] = 0;
 HEAP32[i6 + 24 >> 2] = 0;
 i1 = HEAP32[9147] | 0;
 if (i1 >>> 0 < (HEAP32[9148] | 0) >>> 0) {
  __ZN6cashew13OperatorClassC2EOS0_(i1, i6);
  HEAP32[9147] = (HEAP32[9147] | 0) + 28;
 } else __ZNSt3__16vectorIN6cashew13OperatorClassENS_9allocatorIS2_EEE21__push_back_slow_pathIS2_EEvOT_(36584, i6);
 __ZNSt3__112__hash_tableIN6cashew7IStringENS_4hashIS2_EENS_8equal_toIS2_EENS_9allocatorIS2_EEED2Ev(i6);
 __ZN6cashew10IStringSetC2EPKc(i7, 26029);
 HEAP8[i7 + 20 >> 0] = 0;
 HEAP32[i7 + 24 >> 2] = 0;
 i1 = HEAP32[9147] | 0;
 if (i1 >>> 0 < (HEAP32[9148] | 0) >>> 0) {
  __ZN6cashew13OperatorClassC2EOS0_(i1, i7);
  HEAP32[9147] = (HEAP32[9147] | 0) + 28;
 } else __ZNSt3__16vectorIN6cashew13OperatorClassENS_9allocatorIS2_EEE21__push_back_slow_pathIS2_EEvOT_(36584, i7);
 __ZNSt3__112__hash_tableIN6cashew7IStringENS_4hashIS2_EENS_8equal_toIS2_EENS_9allocatorIS2_EEED2Ev(i7);
 __ZN6cashew10IStringSetC2EPKc(i8, 26039);
 HEAP8[i8 + 20 >> 0] = 0;
 HEAP32[i8 + 24 >> 2] = 0;
 i1 = HEAP32[9147] | 0;
 if (i1 >>> 0 < (HEAP32[9148] | 0) >>> 0) {
  __ZN6cashew13OperatorClassC2EOS0_(i1, i8);
  HEAP32[9147] = (HEAP32[9147] | 0) + 28;
 } else __ZNSt3__16vectorIN6cashew13OperatorClassENS_9allocatorIS2_EEE21__push_back_slow_pathIS2_EEvOT_(36584, i8);
 __ZNSt3__112__hash_tableIN6cashew7IStringENS_4hashIS2_EENS_8equal_toIS2_EENS_9allocatorIS2_EEED2Ev(i8);
 __ZN6cashew10IStringSetC2EPKc(i9, 33674);
 HEAP8[i9 + 20 >> 0] = 0;
 HEAP32[i9 + 24 >> 2] = 0;
 i1 = HEAP32[9147] | 0;
 if (i1 >>> 0 < (HEAP32[9148] | 0) >>> 0) {
  __ZN6cashew13OperatorClassC2EOS0_(i1, i9);
  HEAP32[9147] = (HEAP32[9147] | 0) + 28;
 } else __ZNSt3__16vectorIN6cashew13OperatorClassENS_9allocatorIS2_EEE21__push_back_slow_pathIS2_EEvOT_(36584, i9);
 __ZNSt3__112__hash_tableIN6cashew7IStringENS_4hashIS2_EENS_8equal_toIS2_EENS_9allocatorIS2_EEED2Ev(i9);
 __ZN6cashew10IStringSetC2EPKc(i10, 34667);
 HEAP8[i10 + 20 >> 0] = 0;
 HEAP32[i10 + 24 >> 2] = 0;
 i1 = HEAP32[9147] | 0;
 if (i1 >>> 0 < (HEAP32[9148] | 0) >>> 0) {
  __ZN6cashew13OperatorClassC2EOS0_(i1, i10);
  HEAP32[9147] = (HEAP32[9147] | 0) + 28;
 } else __ZNSt3__16vectorIN6cashew13OperatorClassENS_9allocatorIS2_EEE21__push_back_slow_pathIS2_EEvOT_(36584, i10);
 __ZNSt3__112__hash_tableIN6cashew7IStringENS_4hashIS2_EENS_8equal_toIS2_EENS_9allocatorIS2_EEED2Ev(i10);
 __ZN6cashew10IStringSetC2EPKc(i11, 34731);
 HEAP8[i11 + 20 >> 0] = 0;
 HEAP32[i11 + 24 >> 2] = 0;
 i1 = HEAP32[9147] | 0;
 if (i1 >>> 0 < (HEAP32[9148] | 0) >>> 0) {
  __ZN6cashew13OperatorClassC2EOS0_(i1, i11);
  HEAP32[9147] = (HEAP32[9147] | 0) + 28;
 } else __ZNSt3__16vectorIN6cashew13OperatorClassENS_9allocatorIS2_EEE21__push_back_slow_pathIS2_EEvOT_(36584, i11);
 __ZNSt3__112__hash_tableIN6cashew7IStringENS_4hashIS2_EENS_8equal_toIS2_EENS_9allocatorIS2_EEED2Ev(i11);
 __ZN6cashew10IStringSetC2EPKc(i12, 26045);
 HEAP8[i12 + 20 >> 0] = 1;
 HEAP32[i12 + 24 >> 2] = 3;
 i1 = HEAP32[9147] | 0;
 if (i1 >>> 0 < (HEAP32[9148] | 0) >>> 0) {
  __ZN6cashew13OperatorClassC2EOS0_(i1, i12);
  HEAP32[9147] = (HEAP32[9147] | 0) + 28;
 } else __ZNSt3__16vectorIN6cashew13OperatorClassENS_9allocatorIS2_EEE21__push_back_slow_pathIS2_EEvOT_(36584, i12);
 __ZNSt3__112__hash_tableIN6cashew7IStringENS_4hashIS2_EENS_8equal_toIS2_EENS_9allocatorIS2_EEED2Ev(i12);
 __ZN6cashew10IStringSetC2EPKc(i13, 33679);
 HEAP8[i13 + 20 >> 0] = 1;
 HEAP32[i13 + 24 >> 2] = 0;
 i1 = HEAP32[9147] | 0;
 if (i1 >>> 0 < (HEAP32[9148] | 0) >>> 0) {
  __ZN6cashew13OperatorClassC2EOS0_(i1, i13);
  HEAP32[9147] = (HEAP32[9147] | 0) + 28;
 } else __ZNSt3__16vectorIN6cashew13OperatorClassENS_9allocatorIS2_EEE21__push_back_slow_pathIS2_EEvOT_(36584, i13);
 __ZNSt3__112__hash_tableIN6cashew7IStringENS_4hashIS2_EENS_8equal_toIS2_EENS_9allocatorIS2_EEED2Ev(i13);
 __ZN6cashew10IStringSetC2EPKc(i14, 33706);
 HEAP8[i14 + 20 >> 0] = 1;
 HEAP32[i14 + 24 >> 2] = 0;
 i1 = HEAP32[9147] | 0;
 if (i1 >>> 0 < (HEAP32[9148] | 0) >>> 0) {
  __ZN6cashew13OperatorClassC2EOS0_(i1, i14);
  HEAP32[9147] = (HEAP32[9147] | 0) + 28;
 } else __ZNSt3__16vectorIN6cashew13OperatorClassENS_9allocatorIS2_EEE21__push_back_slow_pathIS2_EEvOT_(36584, i14);
 __ZNSt3__112__hash_tableIN6cashew7IStringENS_4hashIS2_EENS_8equal_toIS2_EENS_9allocatorIS2_EEED2Ev(i14);
 __ZNSt3__16vectorINS_13unordered_mapIN6cashew7IStringEiNS_4hashIS3_EENS_8equal_toIS3_EENS_9allocatorINS_4pairIKS3_iEEEEEENS8_ISD_EEE6resizeEj(36596, 4);
 i2 = 0;
 while (1) {
  i1 = HEAP32[9146] | 0;
  if (i2 >>> 0 >= (((HEAP32[9147] | 0) - i1 | 0) / 28 | 0) >>> 0) break;
  i1 = i1 + (i2 * 28 | 0) + 8 | 0;
  while (1) {
   i1 = HEAP32[i1 >> 2] | 0;
   if (!i1) break;
   HEAP32[i15 >> 2] = HEAP32[i1 + 8 >> 2];
   i14 = __ZNSt3__113unordered_mapIN6cashew7IStringEiNS_4hashIS2_EENS_8equal_toIS2_EENS_9allocatorINS_4pairIKS2_iEEEEEixERS9_((HEAP32[9149] | 0) + ((HEAP32[(HEAP32[9146] | 0) + (i2 * 28 | 0) + 24 >> 2] | 0) * 20 | 0) | 0, i15) | 0;
   HEAP32[i14 >> 2] = i2;
  }
  i2 = i2 + 1 | 0;
 }
 STACKTOP = i16;
 return;
}

function __ZNSt3__111__money_getIcE13__gather_infoEbRKNS_6localeERNS_10money_base7patternERcS8_RNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEESF_SF_SF_Ri(i1, i2, i8, i16, i18, i17, i19, i13, i7, i20) {
 i1 = i1 | 0;
 i2 = i2 | 0;
 i8 = i8 | 0;
 i16 = i16 | 0;
 i18 = i18 | 0;
 i17 = i17 | 0;
 i19 = i19 | 0;
 i13 = i13 | 0;
 i7 = i7 | 0;
 i20 = i20 | 0;
 var i3 = 0, i4 = 0, i5 = 0, i6 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i14 = 0, i15 = 0, i21 = 0;
 i21 = STACKTOP;
 STACKTOP = STACKTOP + 112 | 0;
 i3 = i21 + 100 | 0;
 i5 = i21 + 88 | 0;
 i9 = i21 + 76 | 0;
 i11 = i21 + 64 | 0;
 i14 = i21 + 52 | 0;
 i4 = i21 + 48 | 0;
 i6 = i21 + 36 | 0;
 i10 = i21 + 24 | 0;
 i12 = i21 + 12 | 0;
 i15 = i21;
 if (i1) {
  i2 = __ZNKSt3__16locale9use_facetERNS0_2idE(i2, 40096) | 0;
  FUNCTION_TABLE_vii[HEAP32[(HEAP32[i2 >> 2] | 0) + 44 >> 2] & 511](i3, i2);
  i15 = HEAP32[i3 >> 2] | 0;
  HEAP8[i8 >> 0] = i15;
  HEAP8[i8 + 1 >> 0] = i15 >> 8;
  HEAP8[i8 + 2 >> 0] = i15 >> 16;
  HEAP8[i8 + 3 >> 0] = i15 >> 24;
  FUNCTION_TABLE_vii[HEAP32[(HEAP32[i2 >> 2] | 0) + 32 >> 2] & 511](i5, i2);
  if (!(HEAP8[i7 >> 0] & 1)) {
   HEAP8[i7 + 1 >> 0] = 0;
   HEAP8[i7 >> 0] = 0;
  } else {
   HEAP8[HEAP32[i7 + 8 >> 2] >> 0] = 0;
   HEAP32[i7 + 4 >> 2] = 0;
  }
  __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE7reserveEj(i7, 0);
  HEAP32[i7 >> 2] = HEAP32[i5 >> 2];
  HEAP32[i7 + 4 >> 2] = HEAP32[i5 + 4 >> 2];
  HEAP32[i7 + 8 >> 2] = HEAP32[i5 + 8 >> 2];
  i1 = 0;
  while (1) {
   if ((i1 | 0) == 3) break;
   HEAP32[i5 + (i1 << 2) >> 2] = 0;
   i1 = i1 + 1 | 0;
  }
  __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i5);
  FUNCTION_TABLE_vii[HEAP32[(HEAP32[i2 >> 2] | 0) + 28 >> 2] & 511](i9, i2);
  if (!(HEAP8[i13 >> 0] & 1)) {
   HEAP8[i13 + 1 >> 0] = 0;
   HEAP8[i13 >> 0] = 0;
  } else {
   HEAP8[HEAP32[i13 + 8 >> 2] >> 0] = 0;
   HEAP32[i13 + 4 >> 2] = 0;
  }
  __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE7reserveEj(i13, 0);
  HEAP32[i13 >> 2] = HEAP32[i9 >> 2];
  HEAP32[i13 + 4 >> 2] = HEAP32[i9 + 4 >> 2];
  HEAP32[i13 + 8 >> 2] = HEAP32[i9 + 8 >> 2];
  i1 = 0;
  while (1) {
   if ((i1 | 0) == 3) break;
   HEAP32[i9 + (i1 << 2) >> 2] = 0;
   i1 = i1 + 1 | 0;
  }
  __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i9);
  i15 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i2 >> 2] | 0) + 12 >> 2] & 127](i2) | 0;
  HEAP8[i16 >> 0] = i15;
  i16 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i2 >> 2] | 0) + 16 >> 2] & 127](i2) | 0;
  HEAP8[i18 >> 0] = i16;
  FUNCTION_TABLE_vii[HEAP32[(HEAP32[i2 >> 2] | 0) + 20 >> 2] & 511](i11, i2);
  if (!(HEAP8[i17 >> 0] & 1)) {
   HEAP8[i17 + 1 >> 0] = 0;
   HEAP8[i17 >> 0] = 0;
  } else {
   HEAP8[HEAP32[i17 + 8 >> 2] >> 0] = 0;
   HEAP32[i17 + 4 >> 2] = 0;
  }
  __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE7reserveEj(i17, 0);
  HEAP32[i17 >> 2] = HEAP32[i11 >> 2];
  HEAP32[i17 + 4 >> 2] = HEAP32[i11 + 4 >> 2];
  HEAP32[i17 + 8 >> 2] = HEAP32[i11 + 8 >> 2];
  i1 = 0;
  while (1) {
   if ((i1 | 0) == 3) break;
   HEAP32[i11 + (i1 << 2) >> 2] = 0;
   i1 = i1 + 1 | 0;
  }
  __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i11);
  FUNCTION_TABLE_vii[HEAP32[(HEAP32[i2 >> 2] | 0) + 24 >> 2] & 511](i14, i2);
  if (!(HEAP8[i19 >> 0] & 1)) {
   HEAP8[i19 + 1 >> 0] = 0;
   HEAP8[i19 >> 0] = 0;
  } else {
   HEAP8[HEAP32[i19 + 8 >> 2] >> 0] = 0;
   HEAP32[i19 + 4 >> 2] = 0;
  }
  __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE7reserveEj(i19, 0);
  HEAP32[i19 >> 2] = HEAP32[i14 >> 2];
  HEAP32[i19 + 4 >> 2] = HEAP32[i14 + 4 >> 2];
  HEAP32[i19 + 8 >> 2] = HEAP32[i14 + 8 >> 2];
  i1 = 0;
  while (1) {
   if ((i1 | 0) == 3) break;
   HEAP32[i14 + (i1 << 2) >> 2] = 0;
   i1 = i1 + 1 | 0;
  }
  __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i14);
  i1 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i2 >> 2] | 0) + 36 >> 2] & 127](i2) | 0;
 } else {
  i2 = __ZNKSt3__16locale9use_facetERNS0_2idE(i2, 40088) | 0;
  FUNCTION_TABLE_vii[HEAP32[(HEAP32[i2 >> 2] | 0) + 44 >> 2] & 511](i4, i2);
  i14 = HEAP32[i4 >> 2] | 0;
  HEAP8[i8 >> 0] = i14;
  HEAP8[i8 + 1 >> 0] = i14 >> 8;
  HEAP8[i8 + 2 >> 0] = i14 >> 16;
  HEAP8[i8 + 3 >> 0] = i14 >> 24;
  FUNCTION_TABLE_vii[HEAP32[(HEAP32[i2 >> 2] | 0) + 32 >> 2] & 511](i6, i2);
  if (!(HEAP8[i7 >> 0] & 1)) {
   HEAP8[i7 + 1 >> 0] = 0;
   HEAP8[i7 >> 0] = 0;
  } else {
   HEAP8[HEAP32[i7 + 8 >> 2] >> 0] = 0;
   HEAP32[i7 + 4 >> 2] = 0;
  }
  __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE7reserveEj(i7, 0);
  HEAP32[i7 >> 2] = HEAP32[i6 >> 2];
  HEAP32[i7 + 4 >> 2] = HEAP32[i6 + 4 >> 2];
  HEAP32[i7 + 8 >> 2] = HEAP32[i6 + 8 >> 2];
  i1 = 0;
  while (1) {
   if ((i1 | 0) == 3) break;
   HEAP32[i6 + (i1 << 2) >> 2] = 0;
   i1 = i1 + 1 | 0;
  }
  __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i6);
  FUNCTION_TABLE_vii[HEAP32[(HEAP32[i2 >> 2] | 0) + 28 >> 2] & 511](i10, i2);
  if (!(HEAP8[i13 >> 0] & 1)) {
   HEAP8[i13 + 1 >> 0] = 0;
   HEAP8[i13 >> 0] = 0;
  } else {
   HEAP8[HEAP32[i13 + 8 >> 2] >> 0] = 0;
   HEAP32[i13 + 4 >> 2] = 0;
  }
  __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE7reserveEj(i13, 0);
  HEAP32[i13 >> 2] = HEAP32[i10 >> 2];
  HEAP32[i13 + 4 >> 2] = HEAP32[i10 + 4 >> 2];
  HEAP32[i13 + 8 >> 2] = HEAP32[i10 + 8 >> 2];
  i1 = 0;
  while (1) {
   if ((i1 | 0) == 3) break;
   HEAP32[i10 + (i1 << 2) >> 2] = 0;
   i1 = i1 + 1 | 0;
  }
  __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i10);
  i14 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i2 >> 2] | 0) + 12 >> 2] & 127](i2) | 0;
  HEAP8[i16 >> 0] = i14;
  i16 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i2 >> 2] | 0) + 16 >> 2] & 127](i2) | 0;
  HEAP8[i18 >> 0] = i16;
  FUNCTION_TABLE_vii[HEAP32[(HEAP32[i2 >> 2] | 0) + 20 >> 2] & 511](i12, i2);
  if (!(HEAP8[i17 >> 0] & 1)) {
   HEAP8[i17 + 1 >> 0] = 0;
   HEAP8[i17 >> 0] = 0;
  } else {
   HEAP8[HEAP32[i17 + 8 >> 2] >> 0] = 0;
   HEAP32[i17 + 4 >> 2] = 0;
  }
  __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE7reserveEj(i17, 0);
  HEAP32[i17 >> 2] = HEAP32[i12 >> 2];
  HEAP32[i17 + 4 >> 2] = HEAP32[i12 + 4 >> 2];
  HEAP32[i17 + 8 >> 2] = HEAP32[i12 + 8 >> 2];
  i1 = 0;
  while (1) {
   if ((i1 | 0) == 3) break;
   HEAP32[i12 + (i1 << 2) >> 2] = 0;
   i1 = i1 + 1 | 0;
  }
  __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i12);
  FUNCTION_TABLE_vii[HEAP32[(HEAP32[i2 >> 2] | 0) + 24 >> 2] & 511](i15, i2);
  if (!(HEAP8[i19 >> 0] & 1)) {
   HEAP8[i19 + 1 >> 0] = 0;
   HEAP8[i19 >> 0] = 0;
  } else {
   HEAP8[HEAP32[i19 + 8 >> 2] >> 0] = 0;
   HEAP32[i19 + 4 >> 2] = 0;
  }
  __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE7reserveEj(i19, 0);
  HEAP32[i19 >> 2] = HEAP32[i15 >> 2];
  HEAP32[i19 + 4 >> 2] = HEAP32[i15 + 4 >> 2];
  HEAP32[i19 + 8 >> 2] = HEAP32[i15 + 8 >> 2];
  i1 = 0;
  while (1) {
   if ((i1 | 0) == 3) break;
   HEAP32[i15 + (i1 << 2) >> 2] = 0;
   i1 = i1 + 1 | 0;
  }
  __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i15);
  i1 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i2 >> 2] | 0) + 36 >> 2] & 127](i2) | 0;
 }
 HEAP32[i20 >> 2] = i1;
 STACKTOP = i21;
 return;
}

function __ZNSt3__111__money_getIwE13__gather_infoEbRKNS_6localeERNS_10money_base7patternERwS8_RNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEERNS9_IwNSA_IwEENSC_IwEEEESJ_SJ_Ri(i1, i2, i8, i16, i18, i17, i19, i13, i7, i20) {
 i1 = i1 | 0;
 i2 = i2 | 0;
 i8 = i8 | 0;
 i16 = i16 | 0;
 i18 = i18 | 0;
 i17 = i17 | 0;
 i19 = i19 | 0;
 i13 = i13 | 0;
 i7 = i7 | 0;
 i20 = i20 | 0;
 var i3 = 0, i4 = 0, i5 = 0, i6 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i14 = 0, i15 = 0, i21 = 0;
 i21 = STACKTOP;
 STACKTOP = STACKTOP + 112 | 0;
 i3 = i21 + 100 | 0;
 i5 = i21 + 88 | 0;
 i9 = i21 + 76 | 0;
 i11 = i21 + 64 | 0;
 i14 = i21 + 52 | 0;
 i4 = i21 + 48 | 0;
 i6 = i21 + 36 | 0;
 i10 = i21 + 24 | 0;
 i12 = i21 + 12 | 0;
 i15 = i21;
 if (i1) {
  i2 = __ZNKSt3__16locale9use_facetERNS0_2idE(i2, 40112) | 0;
  FUNCTION_TABLE_vii[HEAP32[(HEAP32[i2 >> 2] | 0) + 44 >> 2] & 511](i3, i2);
  i15 = HEAP32[i3 >> 2] | 0;
  HEAP8[i8 >> 0] = i15;
  HEAP8[i8 + 1 >> 0] = i15 >> 8;
  HEAP8[i8 + 2 >> 0] = i15 >> 16;
  HEAP8[i8 + 3 >> 0] = i15 >> 24;
  FUNCTION_TABLE_vii[HEAP32[(HEAP32[i2 >> 2] | 0) + 32 >> 2] & 511](i5, i2);
  if (!(HEAP8[i7 >> 0] & 1)) HEAP8[i7 >> 0] = 0; else HEAP32[HEAP32[i7 + 8 >> 2] >> 2] = 0;
  HEAP32[i7 + 4 >> 2] = 0;
  __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE7reserveEj(i7, 0);
  HEAP32[i7 >> 2] = HEAP32[i5 >> 2];
  HEAP32[i7 + 4 >> 2] = HEAP32[i5 + 4 >> 2];
  HEAP32[i7 + 8 >> 2] = HEAP32[i5 + 8 >> 2];
  i1 = 0;
  while (1) {
   if ((i1 | 0) == 3) break;
   HEAP32[i5 + (i1 << 2) >> 2] = 0;
   i1 = i1 + 1 | 0;
  }
  __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev(i5);
  FUNCTION_TABLE_vii[HEAP32[(HEAP32[i2 >> 2] | 0) + 28 >> 2] & 511](i9, i2);
  if (!(HEAP8[i13 >> 0] & 1)) HEAP8[i13 >> 0] = 0; else HEAP32[HEAP32[i13 + 8 >> 2] >> 2] = 0;
  HEAP32[i13 + 4 >> 2] = 0;
  __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE7reserveEj(i13, 0);
  HEAP32[i13 >> 2] = HEAP32[i9 >> 2];
  HEAP32[i13 + 4 >> 2] = HEAP32[i9 + 4 >> 2];
  HEAP32[i13 + 8 >> 2] = HEAP32[i9 + 8 >> 2];
  i1 = 0;
  while (1) {
   if ((i1 | 0) == 3) break;
   HEAP32[i9 + (i1 << 2) >> 2] = 0;
   i1 = i1 + 1 | 0;
  }
  __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev(i9);
  i15 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i2 >> 2] | 0) + 12 >> 2] & 127](i2) | 0;
  HEAP32[i16 >> 2] = i15;
  i16 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i2 >> 2] | 0) + 16 >> 2] & 127](i2) | 0;
  HEAP32[i18 >> 2] = i16;
  FUNCTION_TABLE_vii[HEAP32[(HEAP32[i2 >> 2] | 0) + 20 >> 2] & 511](i11, i2);
  if (!(HEAP8[i17 >> 0] & 1)) {
   HEAP8[i17 + 1 >> 0] = 0;
   HEAP8[i17 >> 0] = 0;
  } else {
   HEAP8[HEAP32[i17 + 8 >> 2] >> 0] = 0;
   HEAP32[i17 + 4 >> 2] = 0;
  }
  __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE7reserveEj(i17, 0);
  HEAP32[i17 >> 2] = HEAP32[i11 >> 2];
  HEAP32[i17 + 4 >> 2] = HEAP32[i11 + 4 >> 2];
  HEAP32[i17 + 8 >> 2] = HEAP32[i11 + 8 >> 2];
  i1 = 0;
  while (1) {
   if ((i1 | 0) == 3) break;
   HEAP32[i11 + (i1 << 2) >> 2] = 0;
   i1 = i1 + 1 | 0;
  }
  __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i11);
  FUNCTION_TABLE_vii[HEAP32[(HEAP32[i2 >> 2] | 0) + 24 >> 2] & 511](i14, i2);
  if (!(HEAP8[i19 >> 0] & 1)) HEAP8[i19 >> 0] = 0; else HEAP32[HEAP32[i19 + 8 >> 2] >> 2] = 0;
  HEAP32[i19 + 4 >> 2] = 0;
  __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE7reserveEj(i19, 0);
  HEAP32[i19 >> 2] = HEAP32[i14 >> 2];
  HEAP32[i19 + 4 >> 2] = HEAP32[i14 + 4 >> 2];
  HEAP32[i19 + 8 >> 2] = HEAP32[i14 + 8 >> 2];
  i1 = 0;
  while (1) {
   if ((i1 | 0) == 3) break;
   HEAP32[i14 + (i1 << 2) >> 2] = 0;
   i1 = i1 + 1 | 0;
  }
  __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev(i14);
  i1 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i2 >> 2] | 0) + 36 >> 2] & 127](i2) | 0;
 } else {
  i2 = __ZNKSt3__16locale9use_facetERNS0_2idE(i2, 40104) | 0;
  FUNCTION_TABLE_vii[HEAP32[(HEAP32[i2 >> 2] | 0) + 44 >> 2] & 511](i4, i2);
  i14 = HEAP32[i4 >> 2] | 0;
  HEAP8[i8 >> 0] = i14;
  HEAP8[i8 + 1 >> 0] = i14 >> 8;
  HEAP8[i8 + 2 >> 0] = i14 >> 16;
  HEAP8[i8 + 3 >> 0] = i14 >> 24;
  FUNCTION_TABLE_vii[HEAP32[(HEAP32[i2 >> 2] | 0) + 32 >> 2] & 511](i6, i2);
  if (!(HEAP8[i7 >> 0] & 1)) HEAP8[i7 >> 0] = 0; else HEAP32[HEAP32[i7 + 8 >> 2] >> 2] = 0;
  HEAP32[i7 + 4 >> 2] = 0;
  __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE7reserveEj(i7, 0);
  HEAP32[i7 >> 2] = HEAP32[i6 >> 2];
  HEAP32[i7 + 4 >> 2] = HEAP32[i6 + 4 >> 2];
  HEAP32[i7 + 8 >> 2] = HEAP32[i6 + 8 >> 2];
  i1 = 0;
  while (1) {
   if ((i1 | 0) == 3) break;
   HEAP32[i6 + (i1 << 2) >> 2] = 0;
   i1 = i1 + 1 | 0;
  }
  __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev(i6);
  FUNCTION_TABLE_vii[HEAP32[(HEAP32[i2 >> 2] | 0) + 28 >> 2] & 511](i10, i2);
  if (!(HEAP8[i13 >> 0] & 1)) HEAP8[i13 >> 0] = 0; else HEAP32[HEAP32[i13 + 8 >> 2] >> 2] = 0;
  HEAP32[i13 + 4 >> 2] = 0;
  __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE7reserveEj(i13, 0);
  HEAP32[i13 >> 2] = HEAP32[i10 >> 2];
  HEAP32[i13 + 4 >> 2] = HEAP32[i10 + 4 >> 2];
  HEAP32[i13 + 8 >> 2] = HEAP32[i10 + 8 >> 2];
  i1 = 0;
  while (1) {
   if ((i1 | 0) == 3) break;
   HEAP32[i10 + (i1 << 2) >> 2] = 0;
   i1 = i1 + 1 | 0;
  }
  __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev(i10);
  i14 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i2 >> 2] | 0) + 12 >> 2] & 127](i2) | 0;
  HEAP32[i16 >> 2] = i14;
  i16 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i2 >> 2] | 0) + 16 >> 2] & 127](i2) | 0;
  HEAP32[i18 >> 2] = i16;
  FUNCTION_TABLE_vii[HEAP32[(HEAP32[i2 >> 2] | 0) + 20 >> 2] & 511](i12, i2);
  if (!(HEAP8[i17 >> 0] & 1)) {
   HEAP8[i17 + 1 >> 0] = 0;
   HEAP8[i17 >> 0] = 0;
  } else {
   HEAP8[HEAP32[i17 + 8 >> 2] >> 0] = 0;
   HEAP32[i17 + 4 >> 2] = 0;
  }
  __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE7reserveEj(i17, 0);
  HEAP32[i17 >> 2] = HEAP32[i12 >> 2];
  HEAP32[i17 + 4 >> 2] = HEAP32[i12 + 4 >> 2];
  HEAP32[i17 + 8 >> 2] = HEAP32[i12 + 8 >> 2];
  i1 = 0;
  while (1) {
   if ((i1 | 0) == 3) break;
   HEAP32[i12 + (i1 << 2) >> 2] = 0;
   i1 = i1 + 1 | 0;
  }
  __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i12);
  FUNCTION_TABLE_vii[HEAP32[(HEAP32[i2 >> 2] | 0) + 24 >> 2] & 511](i15, i2);
  if (!(HEAP8[i19 >> 0] & 1)) HEAP8[i19 >> 0] = 0; else HEAP32[HEAP32[i19 + 8 >> 2] >> 2] = 0;
  HEAP32[i19 + 4 >> 2] = 0;
  __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE7reserveEj(i19, 0);
  HEAP32[i19 >> 2] = HEAP32[i15 >> 2];
  HEAP32[i19 + 4 >> 2] = HEAP32[i15 + 4 >> 2];
  HEAP32[i19 + 8 >> 2] = HEAP32[i15 + 8 >> 2];
  i1 = 0;
  while (1) {
   if ((i1 | 0) == 3) break;
   HEAP32[i15 + (i1 << 2) >> 2] = 0;
   i1 = i1 + 1 | 0;
  }
  __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev(i15);
  i1 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i2 >> 2] | 0) + 36 >> 2] & 127](i2) | 0;
 }
 HEAP32[i20 >> 2] = i1;
 STACKTOP = i21;
 return;
}

function __ZNKSt3__18time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE3getES4_S4_RNS_8ios_baseERjP2tmPKwSC_(i17, i18, i19, i15, i20, i16, i1, i14) {
 i17 = i17 | 0;
 i18 = i18 | 0;
 i19 = i19 | 0;
 i15 = i15 | 0;
 i20 = i20 | 0;
 i16 = i16 | 0;
 i1 = i1 | 0;
 i14 = i14 | 0;
 var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i21 = 0, i22 = 0;
 i22 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i10 = i22 + 16 | 0;
 i9 = i22 + 12 | 0;
 i13 = i22 + 8 | 0;
 i11 = i22 + 4 | 0;
 i12 = i22;
 i2 = __ZNKSt3__18ios_base6getlocEv(i15) | 0;
 HEAP32[i13 >> 2] = i2;
 i13 = __ZNKSt3__16locale9use_facetERNS0_2idE(i13, 38408) | 0;
 __ZNSt3__114__shared_count16__release_sharedEv(i2) | 0;
 HEAP32[i20 >> 2] = 0;
 i2 = i1;
 i1 = 0;
 L1 : while (1) {
  i8 = (i2 | 0) != (i14 | 0);
  i3 = i1;
  while (1) {
   i1 = HEAP32[i18 >> 2] | 0;
   if (!(i8 & (i3 | 0) == 0)) break L1;
   i4 = i1;
   if (i1) {
    i3 = HEAP32[i1 + 12 >> 2] | 0;
    if ((i3 | 0) == (HEAP32[i1 + 16 >> 2] | 0)) i3 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 36 >> 2] & 127](i1) | 0; else i3 = HEAP32[i3 >> 2] | 0;
    if ((i3 | 0) == -1) {
     HEAP32[i18 >> 2] = 0;
     i1 = 0;
     i4 = 0;
     i7 = 1;
    } else i7 = 0;
   } else {
    i1 = 0;
    i7 = 1;
   }
   i6 = HEAP32[i19 >> 2] | 0;
   i3 = i6;
   do if (i6) {
    i5 = HEAP32[i6 + 12 >> 2] | 0;
    if ((i5 | 0) == (HEAP32[i6 + 16 >> 2] | 0)) i5 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i6 >> 2] | 0) + 36 >> 2] & 127](i6) | 0; else i5 = HEAP32[i5 >> 2] | 0;
    if ((i5 | 0) != -1) if (i7) {
     i5 = i6;
     break;
    } else {
     i21 = 18;
     break L1;
    } else {
     HEAP32[i19 >> 2] = 0;
     i3 = 0;
     i21 = 16;
     break;
    }
   } else i21 = 16; while (0);
   if ((i21 | 0) == 16) {
    i21 = 0;
    if (i7) {
     i21 = 18;
     break L1;
    } else i5 = 0;
   }
   if ((FUNCTION_TABLE_iiii[HEAP32[(HEAP32[i13 >> 2] | 0) + 52 >> 2] & 31](i13, HEAP32[i2 >> 2] | 0, 0) | 0) << 24 >> 24 == 37) {
    i7 = i3;
    i21 = 20;
    break;
   }
   if (FUNCTION_TABLE_iiii[HEAP32[(HEAP32[i13 >> 2] | 0) + 12 >> 2] & 31](i13, 8192, HEAP32[i2 >> 2] | 0) | 0) {
    i4 = i5;
    i21 = 28;
    break;
   }
   i5 = i1 + 12 | 0;
   i4 = HEAP32[i5 >> 2] | 0;
   i3 = i1 + 16 | 0;
   if ((i4 | 0) == (HEAP32[i3 >> 2] | 0)) i4 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 36 >> 2] & 127](i1) | 0; else i4 = HEAP32[i4 >> 2] | 0;
   i7 = FUNCTION_TABLE_iii[HEAP32[(HEAP32[i13 >> 2] | 0) + 28 >> 2] & 63](i13, i4) | 0;
   if ((i7 | 0) == (FUNCTION_TABLE_iii[HEAP32[(HEAP32[i13 >> 2] | 0) + 28 >> 2] & 63](i13, HEAP32[i2 >> 2] | 0) | 0)) {
    i21 = 57;
    break;
   }
   HEAP32[i20 >> 2] = 4;
   i3 = 4;
  }
  L33 : do if ((i21 | 0) == 20) {
   i21 = 0;
   i3 = i2 + 4 | 0;
   if ((i3 | 0) == (i14 | 0)) {
    i21 = 21;
    break L1;
   }
   i6 = FUNCTION_TABLE_iiii[HEAP32[(HEAP32[i13 >> 2] | 0) + 52 >> 2] & 31](i13, HEAP32[i3 >> 2] | 0, 0) | 0;
   switch (i6 << 24 >> 24) {
   case 48:
   case 69:
    {
     i5 = i2 + 8 | 0;
     if ((i5 | 0) == (i14 | 0)) {
      i21 = 26;
      break L1;
     }
     i2 = i3;
     i3 = FUNCTION_TABLE_iiii[HEAP32[(HEAP32[i13 >> 2] | 0) + 52 >> 2] & 31](i13, HEAP32[i5 >> 2] | 0, 0) | 0;
     i1 = i6;
     break;
    }
   default:
    {
     i3 = i6;
     i1 = 0;
    }
   }
   i8 = HEAP32[(HEAP32[i17 >> 2] | 0) + 36 >> 2] | 0;
   HEAP32[i11 >> 2] = i4;
   HEAP32[i12 >> 2] = i7;
   HEAP32[i9 >> 2] = HEAP32[i11 >> 2];
   HEAP32[i10 >> 2] = HEAP32[i12 >> 2];
   i1 = FUNCTION_TABLE_iiiiiiiii[i8 & 15](i17, i9, i10, i15, i20, i16, i3, i1) | 0;
   HEAP32[i18 >> 2] = i1;
   i1 = i2 + 8 | 0;
  } else if ((i21 | 0) == 28) {
   i21 = 0;
   do {
    i2 = i2 + 4 | 0;
    if ((i2 | 0) == (i14 | 0)) {
     i2 = i14;
     break;
    }
   } while (FUNCTION_TABLE_iiii[HEAP32[(HEAP32[i13 >> 2] | 0) + 12 >> 2] & 31](i13, 8192, HEAP32[i2 >> 2] | 0) | 0);
   i3 = i4;
   i6 = i4;
   while (1) {
    if (i1) {
     i4 = HEAP32[i1 + 12 >> 2] | 0;
     if ((i4 | 0) == (HEAP32[i1 + 16 >> 2] | 0)) i4 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 36 >> 2] & 127](i1) | 0; else i4 = HEAP32[i4 >> 2] | 0;
     if ((i4 | 0) == -1) {
      HEAP32[i18 >> 2] = 0;
      i1 = 0;
      i5 = 1;
     } else i5 = 0;
    } else {
     i1 = 0;
     i5 = 1;
    }
    do if (i6) {
     i4 = HEAP32[i6 + 12 >> 2] | 0;
     if ((i4 | 0) == (HEAP32[i6 + 16 >> 2] | 0)) i4 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i6 >> 2] | 0) + 36 >> 2] & 127](i6) | 0; else i4 = HEAP32[i4 >> 2] | 0;
     if ((i4 | 0) != -1) if (i5 ^ (i3 | 0) == 0) {
      i7 = i3;
      i6 = i3;
      break;
     } else {
      i1 = i2;
      break L33;
     } else {
      HEAP32[i19 >> 2] = 0;
      i3 = 0;
      i21 = 44;
      break;
     }
    } else i21 = 44; while (0);
    if ((i21 | 0) == 44) {
     i21 = 0;
     if (i5) {
      i1 = i2;
      break L33;
     } else {
      i7 = i3;
      i6 = 0;
     }
    }
    i5 = i1 + 12 | 0;
    i3 = HEAP32[i5 >> 2] | 0;
    i4 = i1 + 16 | 0;
    if ((i3 | 0) == (HEAP32[i4 >> 2] | 0)) i3 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 36 >> 2] & 127](i1) | 0; else i3 = HEAP32[i3 >> 2] | 0;
    if (!(FUNCTION_TABLE_iiii[HEAP32[(HEAP32[i13 >> 2] | 0) + 12 >> 2] & 31](i13, 8192, i3) | 0)) {
     i1 = i2;
     break L33;
    }
    i3 = HEAP32[i5 >> 2] | 0;
    if ((i3 | 0) == (HEAP32[i4 >> 2] | 0)) {
     FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 40 >> 2] & 127](i1) | 0;
     i3 = i7;
     continue;
    } else {
     HEAP32[i5 >> 2] = i3 + 4;
     i3 = i7;
     continue;
    }
   }
  } else if ((i21 | 0) == 57) {
   i21 = 0;
   i4 = HEAP32[i5 >> 2] | 0;
   if ((i4 | 0) == (HEAP32[i3 >> 2] | 0)) FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 40 >> 2] & 127](i1) | 0; else HEAP32[i5 >> 2] = i4 + 4;
   i1 = i2 + 4 | 0;
  } while (0);
  i2 = i1;
  i1 = HEAP32[i20 >> 2] | 0;
 }
 if ((i21 | 0) == 18) HEAP32[i20 >> 2] = 4; else if ((i21 | 0) == 21) HEAP32[i20 >> 2] = 4; else if ((i21 | 0) == 26) HEAP32[i20 >> 2] = 4;
 if (i1) {
  i2 = HEAP32[i1 + 12 >> 2] | 0;
  if ((i2 | 0) == (HEAP32[i1 + 16 >> 2] | 0)) i2 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 36 >> 2] & 127](i1) | 0; else i2 = HEAP32[i2 >> 2] | 0;
  if ((i2 | 0) == -1) {
   HEAP32[i18 >> 2] = 0;
   i1 = 0;
   i4 = 1;
  } else i4 = 0;
 } else {
  i1 = 0;
  i4 = 1;
 }
 i2 = HEAP32[i19 >> 2] | 0;
 do if (i2) {
  i3 = HEAP32[i2 + 12 >> 2] | 0;
  if ((i3 | 0) == (HEAP32[i2 + 16 >> 2] | 0)) i2 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i2 >> 2] | 0) + 36 >> 2] & 127](i2) | 0; else i2 = HEAP32[i3 >> 2] | 0;
  if ((i2 | 0) != -1) if (i4) break; else {
   i21 = 77;
   break;
  } else {
   HEAP32[i19 >> 2] = 0;
   i21 = 75;
   break;
  }
 } else i21 = 75; while (0);
 if ((i21 | 0) == 75 ? i4 : 0) i21 = 77;
 if ((i21 | 0) == 77) HEAP32[i20 >> 2] = HEAP32[i20 >> 2] | 2;
 STACKTOP = i22;
 return i1 | 0;
}

function __ZNKSt3__18time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE3getES4_S4_RNS_8ios_baseERjP2tmPKcSC_(i18, i19, i20, i16, i21, i17, i1, i15) {
 i18 = i18 | 0;
 i19 = i19 | 0;
 i20 = i20 | 0;
 i16 = i16 | 0;
 i21 = i21 | 0;
 i17 = i17 | 0;
 i1 = i1 | 0;
 i15 = i15 | 0;
 var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i22 = 0, i23 = 0;
 i23 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i9 = i23 + 16 | 0;
 i8 = i23 + 12 | 0;
 i12 = i23 + 8 | 0;
 i10 = i23 + 4 | 0;
 i11 = i23;
 i13 = __ZNKSt3__18ios_base6getlocEv(i16) | 0;
 HEAP32[i12 >> 2] = i13;
 i12 = __ZNKSt3__16locale9use_facetERNS0_2idE(i12, 38376) | 0;
 __ZNSt3__114__shared_count16__release_sharedEv(i13) | 0;
 HEAP32[i21 >> 2] = 0;
 i13 = i12 + 8 | 0;
 i2 = i1;
 i1 = 0;
 L1 : while (1) {
  i7 = (i2 | 0) != (i15 | 0);
  i3 = i1;
  while (1) {
   i1 = HEAP32[i19 >> 2] | 0;
   if (!(i7 & (i3 | 0) == 0)) break L1;
   i3 = i1;
   if (i1) {
    if ((HEAP32[i1 + 12 >> 2] | 0) == (HEAP32[i1 + 16 >> 2] | 0) ? (FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 36 >> 2] & 127](i1) | 0) == -1 : 0) {
     HEAP32[i19 >> 2] = 0;
     i3 = 0;
     i1 = 0;
    }
   } else i1 = 0;
   i6 = (i1 | 0) == 0;
   i5 = HEAP32[i20 >> 2] | 0;
   i4 = i5;
   do if (i5) {
    if ((HEAP32[i5 + 12 >> 2] | 0) == (HEAP32[i5 + 16 >> 2] | 0) ? (FUNCTION_TABLE_ii[HEAP32[(HEAP32[i5 >> 2] | 0) + 36 >> 2] & 127](i5) | 0) == -1 : 0) {
     HEAP32[i20 >> 2] = 0;
     i4 = 0;
     i22 = 13;
     break;
    }
    if (!i6) {
     i22 = 14;
     break L1;
    }
   } else i22 = 13; while (0);
   if ((i22 | 0) == 13) {
    i22 = 0;
    if (i6) {
     i22 = 14;
     break L1;
    } else i5 = 0;
   }
   if ((FUNCTION_TABLE_iiii[HEAP32[(HEAP32[i12 >> 2] | 0) + 36 >> 2] & 31](i12, HEAP8[i2 >> 0] | 0, 0) | 0) << 24 >> 24 == 37) {
    i7 = i4;
    i22 = 16;
    break;
   }
   i3 = HEAP8[i2 >> 0] | 0;
   if (i3 << 24 >> 24 > -1 ? (i14 = HEAP32[i13 >> 2] | 0, HEAP16[i14 + (i3 << 24 >> 24 << 1) >> 1] & 8192) : 0) {
    i4 = i14;
    i22 = 25;
    break;
   }
   i5 = i1 + 12 | 0;
   i4 = HEAP32[i5 >> 2] | 0;
   i3 = i1 + 16 | 0;
   if ((i4 | 0) == (HEAP32[i3 >> 2] | 0)) i4 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 36 >> 2] & 127](i1) | 0; else i4 = HEAPU8[i4 >> 0] | 0;
   i6 = FUNCTION_TABLE_iii[HEAP32[(HEAP32[i12 >> 2] | 0) + 12 >> 2] & 63](i12, i4 & 255) | 0;
   if (i6 << 24 >> 24 == (FUNCTION_TABLE_iii[HEAP32[(HEAP32[i12 >> 2] | 0) + 12 >> 2] & 63](i12, HEAP8[i2 >> 0] | 0) | 0) << 24 >> 24) {
    i22 = 53;
    break;
   }
   HEAP32[i21 >> 2] = 4;
   i3 = 4;
  }
  L29 : do if ((i22 | 0) == 16) {
   i22 = 0;
   i4 = i2 + 1 | 0;
   if ((i4 | 0) == (i15 | 0)) {
    i22 = 17;
    break L1;
   }
   i6 = FUNCTION_TABLE_iiii[HEAP32[(HEAP32[i12 >> 2] | 0) + 36 >> 2] & 31](i12, HEAP8[i4 >> 0] | 0, 0) | 0;
   switch (i6 << 24 >> 24) {
   case 48:
   case 69:
    {
     i5 = i2 + 2 | 0;
     if ((i5 | 0) == (i15 | 0)) {
      i22 = 22;
      break L1;
     }
     i2 = i4;
     i4 = FUNCTION_TABLE_iiii[HEAP32[(HEAP32[i12 >> 2] | 0) + 36 >> 2] & 31](i12, HEAP8[i5 >> 0] | 0, 0) | 0;
     i1 = i6;
     break;
    }
   default:
    {
     i4 = i6;
     i1 = 0;
    }
   }
   i6 = HEAP32[(HEAP32[i18 >> 2] | 0) + 36 >> 2] | 0;
   HEAP32[i10 >> 2] = i3;
   HEAP32[i11 >> 2] = i7;
   HEAP32[i8 >> 2] = HEAP32[i10 >> 2];
   HEAP32[i9 >> 2] = HEAP32[i11 >> 2];
   i1 = FUNCTION_TABLE_iiiiiiiii[i6 & 15](i18, i8, i9, i16, i21, i17, i4, i1) | 0;
   HEAP32[i19 >> 2] = i1;
   i1 = i2 + 2 | 0;
  } else if ((i22 | 0) == 25) {
   i22 = 0;
   do {
    i2 = i2 + 1 | 0;
    if ((i2 | 0) == (i15 | 0)) {
     i2 = i15;
     break;
    }
    i3 = HEAP8[i2 >> 0] | 0;
    if (i3 << 24 >> 24 <= -1) break;
   } while ((HEAP16[i4 + (i3 << 24 >> 24 << 1) >> 1] & 8192) != 0);
   i3 = i5;
   while (1) {
    if (i1) {
     if ((HEAP32[i1 + 12 >> 2] | 0) == (HEAP32[i1 + 16 >> 2] | 0) ? (FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 36 >> 2] & 127](i1) | 0) == -1 : 0) {
      HEAP32[i19 >> 2] = 0;
      i1 = 0;
     }
    } else i1 = 0;
    i4 = (i1 | 0) == 0;
    do if (i5) {
     if ((HEAP32[i5 + 12 >> 2] | 0) != (HEAP32[i5 + 16 >> 2] | 0)) if (i4) {
      i7 = i3;
      break;
     } else {
      i1 = i2;
      break L29;
     }
     if ((FUNCTION_TABLE_ii[HEAP32[(HEAP32[i5 >> 2] | 0) + 36 >> 2] & 127](i5) | 0) != -1) if (i4 ^ (i3 | 0) == 0) {
      i7 = i3;
      i5 = i3;
      break;
     } else {
      i1 = i2;
      break L29;
     } else {
      HEAP32[i20 >> 2] = 0;
      i3 = 0;
      i22 = 39;
      break;
     }
    } else i22 = 39; while (0);
    if ((i22 | 0) == 39) {
     i22 = 0;
     if (i4) {
      i1 = i2;
      break L29;
     } else {
      i7 = i3;
      i5 = 0;
     }
    }
    i4 = i1 + 12 | 0;
    i3 = HEAP32[i4 >> 2] | 0;
    i6 = i1 + 16 | 0;
    if ((i3 | 0) == (HEAP32[i6 >> 2] | 0)) i3 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 36 >> 2] & 127](i1) | 0; else i3 = HEAPU8[i3 >> 0] | 0;
    if ((i3 & 255) << 24 >> 24 <= -1) {
     i1 = i2;
     break L29;
    }
    if (!(HEAP16[(HEAP32[i13 >> 2] | 0) + (i3 << 24 >> 24 << 1) >> 1] & 8192)) {
     i1 = i2;
     break L29;
    }
    i3 = HEAP32[i4 >> 2] | 0;
    if ((i3 | 0) == (HEAP32[i6 >> 2] | 0)) {
     FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 40 >> 2] & 127](i1) | 0;
     i3 = i7;
     continue;
    } else {
     HEAP32[i4 >> 2] = i3 + 1;
     i3 = i7;
     continue;
    }
   }
  } else if ((i22 | 0) == 53) {
   i22 = 0;
   i4 = HEAP32[i5 >> 2] | 0;
   if ((i4 | 0) == (HEAP32[i3 >> 2] | 0)) FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 40 >> 2] & 127](i1) | 0; else HEAP32[i5 >> 2] = i4 + 1;
   i1 = i2 + 1 | 0;
  } while (0);
  i2 = i1;
  i1 = HEAP32[i21 >> 2] | 0;
 }
 if ((i22 | 0) == 14) HEAP32[i21 >> 2] = 4; else if ((i22 | 0) == 17) HEAP32[i21 >> 2] = 4; else if ((i22 | 0) == 22) HEAP32[i21 >> 2] = 4;
 if (i1) {
  if ((HEAP32[i1 + 12 >> 2] | 0) == (HEAP32[i1 + 16 >> 2] | 0) ? (FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 36 >> 2] & 127](i1) | 0) == -1 : 0) {
   HEAP32[i19 >> 2] = 0;
   i1 = 0;
  }
 } else i1 = 0;
 i2 = (i1 | 0) == 0;
 i3 = HEAP32[i20 >> 2] | 0;
 do if (i3) {
  if ((HEAP32[i3 + 12 >> 2] | 0) == (HEAP32[i3 + 16 >> 2] | 0) ? (FUNCTION_TABLE_ii[HEAP32[(HEAP32[i3 >> 2] | 0) + 36 >> 2] & 127](i3) | 0) == -1 : 0) {
   HEAP32[i20 >> 2] = 0;
   i22 = 68;
   break;
  }
  if (!i2) i22 = 69;
 } else i22 = 68; while (0);
 if ((i22 | 0) == 68 ? i2 : 0) i22 = 69;
 if ((i22 | 0) == 69) HEAP32[i21 >> 2] = HEAP32[i21 >> 2] | 2;
 STACKTOP = i23;
 return i1 | 0;
}

function __ZN10__cxxabiv112_GLOBAL__N_120parse_function_paramINS0_2DbEEEPKcS4_S4_RT_(i1, i4, i14) {
 i1 = i1 | 0;
 i4 = i4 | 0;
 i14 = i14 | 0;
 var i2 = 0, i3 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i15 = 0;
 i15 = STACKTOP;
 STACKTOP = STACKTOP + 128 | 0;
 i13 = i15 + 100 | 0;
 i3 = i15 + 96 | 0;
 i10 = i15 + 72 | 0;
 i11 = i15 + 60 | 0;
 i12 = i15 + 48 | 0;
 i6 = i15 + 24 | 0;
 i7 = i15 + 12 | 0;
 i8 = i15;
 L1 : do if ((i4 - i1 | 0) > 2 ? (HEAP8[i1 >> 0] | 0) == 102 : 0) {
  switch (HEAP8[i1 + 1 >> 0] | 0) {
  case 112:
   {
    i2 = __ZN10__cxxabiv112_GLOBAL__N_119parse_cv_qualifiersEPKcS2_Rj(i1 + 2 | 0, i4, i3) | 0;
    i5 = __ZN10__cxxabiv112_GLOBAL__N_112parse_numberEPKcS2_(i2, i4) | 0;
    if ((i5 | 0) != (i4 | 0) ? (HEAP8[i5 >> 0] | 0) == 95 : 0) {
     i3 = i5 - i2 | 0;
     if (i3 >>> 0 > 4294967279) __ZNKSt3__121__basic_string_commonILb1EE20__throw_length_errorEv(i12);
     if (i3 >>> 0 < 11) {
      HEAP8[i12 >> 0] = i3 << 1;
      i4 = i12 + 1 | 0;
     } else {
      i9 = i3 + 16 & -16;
      i4 = _malloc(i9) | 0;
      HEAP32[i12 + 8 >> 2] = i4;
      HEAP32[i12 >> 2] = i9 | 1;
      HEAP32[i12 + 4 >> 2] = i3;
     }
     i1 = i2;
     i2 = i4;
     while (1) {
      if ((i1 | 0) == (i5 | 0)) break;
      HEAP8[i2 >> 0] = HEAP8[i1 >> 0] | 0;
      i1 = i1 + 1 | 0;
      i2 = i2 + 1 | 0;
     }
     HEAP8[i4 + i3 >> 0] = 0;
     i1 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc(i12, 0, 33660) | 0;
     HEAP32[i11 >> 2] = HEAP32[i1 >> 2];
     HEAP32[i11 + 4 >> 2] = HEAP32[i1 + 4 >> 2];
     HEAP32[i11 + 8 >> 2] = HEAP32[i1 + 8 >> 2];
     i2 = 0;
     while (1) {
      if ((i2 | 0) == 3) break;
      HEAP32[i1 + (i2 << 2) >> 2] = 0;
      i2 = i2 + 1 | 0;
     }
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE(i10, i11);
     i1 = i14 + 4 | 0;
     i2 = HEAP32[i1 >> 2] | 0;
     i9 = HEAP32[i14 + 8 >> 2] | 0;
     i3 = i9;
     if (i2 >>> 0 < i9 >>> 0) {
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i2, i10);
      HEAP32[i1 >> 2] = (HEAP32[i1 >> 2] | 0) + 24;
     } else {
      i1 = HEAP32[i14 >> 2] | 0;
      i9 = i2 - i1 | 0;
      i4 = (i9 | 0) / 24 | 0;
      i2 = i4 + 1 | 0;
      if ((i9 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i14);
      i1 = (i3 - i1 | 0) / 24 | 0;
      if (i1 >>> 0 < 1073741823) {
       i1 = i1 << 1;
       i1 = i1 >>> 0 < i2 >>> 0 ? i2 : i1;
      } else i1 = 2147483647;
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_(i13, i1, i4, i14 + 12 | 0);
      i9 = i13 + 8 | 0;
      i8 = HEAP32[i9 >> 2] | 0;
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i8, i10);
      HEAP32[i9 >> 2] = i8 + 24;
      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i14, i13);
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev(i13);
     }
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i10);
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i11);
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i12);
     i1 = i5 + 1 | 0;
    }
    break L1;
   }
  case 76:
   break;
  default:
   break L1;
  }
  i2 = __ZN10__cxxabiv112_GLOBAL__N_112parse_numberEPKcS2_(i1 + 2 | 0, i4) | 0;
  if ((((i2 | 0) != (i4 | 0) ? (HEAP8[i2 >> 0] | 0) == 112 : 0) ? (i5 = __ZN10__cxxabiv112_GLOBAL__N_119parse_cv_qualifiersEPKcS2_Rj(i2 + 1 | 0, i4, i3) | 0, i9 = __ZN10__cxxabiv112_GLOBAL__N_112parse_numberEPKcS2_(i5, i4) | 0, (i9 | 0) != (i4 | 0)) : 0) ? (HEAP8[i9 >> 0] | 0) == 95 : 0) {
   i3 = i9 - i5 | 0;
   if (i3 >>> 0 > 4294967279) __ZNKSt3__121__basic_string_commonILb1EE20__throw_length_errorEv(i8);
   if (i3 >>> 0 < 11) {
    HEAP8[i8 >> 0] = i3 << 1;
    i4 = i8 + 1 | 0;
   } else {
    i12 = i3 + 16 & -16;
    i4 = _malloc(i12) | 0;
    HEAP32[i8 + 8 >> 2] = i4;
    HEAP32[i8 >> 2] = i12 | 1;
    HEAP32[i8 + 4 >> 2] = i3;
   }
   i1 = i5;
   i2 = i4;
   while (1) {
    if ((i1 | 0) == (i9 | 0)) break;
    HEAP8[i2 >> 0] = HEAP8[i1 >> 0] | 0;
    i1 = i1 + 1 | 0;
    i2 = i2 + 1 | 0;
   }
   HEAP8[i4 + i3 >> 0] = 0;
   i1 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc(i8, 0, 33660) | 0;
   HEAP32[i7 >> 2] = HEAP32[i1 >> 2];
   HEAP32[i7 + 4 >> 2] = HEAP32[i1 + 4 >> 2];
   HEAP32[i7 + 8 >> 2] = HEAP32[i1 + 8 >> 2];
   i2 = 0;
   while (1) {
    if ((i2 | 0) == 3) break;
    HEAP32[i1 + (i2 << 2) >> 2] = 0;
    i2 = i2 + 1 | 0;
   }
   __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE(i6, i7);
   i1 = i14 + 4 | 0;
   i2 = HEAP32[i1 >> 2] | 0;
   i12 = HEAP32[i14 + 8 >> 2] | 0;
   i3 = i12;
   if (i2 >>> 0 < i12 >>> 0) {
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i2, i6);
    HEAP32[i1 >> 2] = (HEAP32[i1 >> 2] | 0) + 24;
   } else {
    i1 = HEAP32[i14 >> 2] | 0;
    i12 = i2 - i1 | 0;
    i4 = (i12 | 0) / 24 | 0;
    i2 = i4 + 1 | 0;
    if ((i12 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i14);
    i1 = (i3 - i1 | 0) / 24 | 0;
    if (i1 >>> 0 < 1073741823) {
     i1 = i1 << 1;
     i1 = i1 >>> 0 < i2 >>> 0 ? i2 : i1;
    } else i1 = 2147483647;
    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_(i13, i1, i4, i14 + 12 | 0);
    i12 = i13 + 8 | 0;
    i11 = HEAP32[i12 >> 2] | 0;
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i11, i6);
    HEAP32[i12 >> 2] = i11 + 24;
    __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i14, i13);
    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev(i13);
   }
   __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i6);
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i7);
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i8);
   i1 = i9 + 1 | 0;
  }
 } while (0);
 STACKTOP = i15;
 return i1 | 0;
}

function __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_(i4, i1, i14, i3) {
 i4 = i4 | 0;
 i1 = i1 | 0;
 i14 = i14 | 0;
 i3 = i3 | 0;
 var i2 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i15 = 0, i16 = 0, i17 = 0, i18 = 0;
 i17 = STACKTOP;
 STACKTOP = STACKTOP + 96 | 0;
 i16 = i17 + 84 | 0;
 i15 = i17 + 72 | 0;
 i8 = i17 + 60 | 0;
 i9 = i17 + 48 | 0;
 i10 = i17 + 36 | 0;
 i11 = i17 + 24 | 0;
 i12 = i17 + 12 | 0;
 i13 = i17;
 i2 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_(i4, i1, i3) | 0;
 L1 : do if ((i2 | 0) != (i4 | 0)) {
  i1 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_(i2, i1, i3) | 0;
  i5 = i3 + 4 | 0;
  if ((i1 | 0) == (i2 | 0)) {
   i2 = HEAP32[i5 >> 2] | 0;
   i1 = i2 + -24 | 0;
   while (1) {
    if ((i2 | 0) == (i1 | 0)) {
     i1 = i4;
     break L1;
    }
    i16 = i2 + -24 | 0;
    HEAP32[i5 >> 2] = i16;
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i16);
    i2 = HEAP32[i5 >> 2] | 0;
   }
  }
  i2 = HEAP32[i5 >> 2] | 0;
  if (((i2 - (HEAP32[i3 >> 2] | 0) | 0) / 24 | 0) >>> 0 >= 2) {
   __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv(i16, i2 + -24 | 0);
   i2 = HEAP32[i5 >> 2] | 0;
   i3 = i2 + -24 | 0;
   i4 = i2;
   while (1) {
    if ((i4 | 0) == (i3 | 0)) break;
    i7 = i4 + -24 | 0;
    HEAP32[i5 >> 2] = i7;
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i7);
    i4 = HEAP32[i5 >> 2] | 0;
   }
   __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv(i15, i2 + -48 | 0);
   i2 = HEAP32[i5 >> 2] | 0;
   i7 = i2 + -24 | 0;
   if (!(HEAP8[i7 >> 0] & 1)) {
    HEAP8[i7 + 1 >> 0] = 0;
    HEAP8[i7 >> 0] = 0;
   } else {
    HEAP8[HEAP32[i2 + -16 >> 2] >> 0] = 0;
    HEAP32[i2 + -20 >> 2] = 0;
   }
   i18 = HEAP8[i14 >> 0] | 0;
   i3 = (i18 & 1) == 0;
   i4 = i14 + 4 | 0;
   i18 = i3 ? (i18 & 255) >>> 1 : HEAP32[i4 >> 2] | 0;
   i5 = i14 + 8 | 0;
   i6 = i14 + 1 | 0;
   i2 = i18 >>> 0 > 1;
   i3 = _memcmp(i3 ? i6 : HEAP32[i5 >> 2] | 0, 33666, i2 ? 1 : i18) | 0;
   if (!(((i3 | 0) == 0 ? ((i18 | 0) == 0 ? -1 : i2 & 1) : i3) | 0)) __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE9push_backEc(i7, 40);
   __ZNSt3__1plIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEENS_12basic_stringIT_T0_T1_EEPKS8_RKSB_(i13, 33619, i15);
   i2 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc(i13, 33668) | 0;
   HEAP32[i12 >> 2] = HEAP32[i2 >> 2];
   HEAP32[i12 + 4 >> 2] = HEAP32[i2 + 4 >> 2];
   HEAP32[i12 + 8 >> 2] = HEAP32[i2 + 8 >> 2];
   i3 = 0;
   while (1) {
    if ((i3 | 0) == 3) break;
    HEAP32[i2 + (i3 << 2) >> 2] = 0;
    i3 = i3 + 1 | 0;
   }
   i2 = HEAP8[i14 >> 0] | 0;
   i3 = (i2 & 1) == 0;
   i2 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj(i12, i3 ? i6 : HEAP32[i5 >> 2] | 0, i3 ? (i2 & 255) >>> 1 : HEAP32[i4 >> 2] | 0) | 0;
   HEAP32[i11 >> 2] = HEAP32[i2 >> 2];
   HEAP32[i11 + 4 >> 2] = HEAP32[i2 + 4 >> 2];
   HEAP32[i11 + 8 >> 2] = HEAP32[i2 + 8 >> 2];
   i3 = 0;
   while (1) {
    if ((i3 | 0) == 3) break;
    HEAP32[i2 + (i3 << 2) >> 2] = 0;
    i3 = i3 + 1 | 0;
   }
   i2 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc(i11, 33671) | 0;
   HEAP32[i10 >> 2] = HEAP32[i2 >> 2];
   HEAP32[i10 + 4 >> 2] = HEAP32[i2 + 4 >> 2];
   HEAP32[i10 + 8 >> 2] = HEAP32[i2 + 8 >> 2];
   i3 = 0;
   while (1) {
    if ((i3 | 0) == 3) break;
    HEAP32[i2 + (i3 << 2) >> 2] = 0;
    i3 = i3 + 1 | 0;
   }
   i2 = HEAP8[i16 >> 0] | 0;
   i3 = (i2 & 1) == 0;
   i2 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj(i10, i3 ? i16 + 1 | 0 : HEAP32[i16 + 8 >> 2] | 0, i3 ? (i2 & 255) >>> 1 : HEAP32[i16 + 4 >> 2] | 0) | 0;
   HEAP32[i9 >> 2] = HEAP32[i2 >> 2];
   HEAP32[i9 + 4 >> 2] = HEAP32[i2 + 4 >> 2];
   HEAP32[i9 + 8 >> 2] = HEAP32[i2 + 8 >> 2];
   i3 = 0;
   while (1) {
    if ((i3 | 0) == 3) break;
    HEAP32[i2 + (i3 << 2) >> 2] = 0;
    i3 = i3 + 1 | 0;
   }
   i2 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc(i9, 33621) | 0;
   HEAP32[i8 >> 2] = HEAP32[i2 >> 2];
   HEAP32[i8 + 4 >> 2] = HEAP32[i2 + 4 >> 2];
   HEAP32[i8 + 8 >> 2] = HEAP32[i2 + 8 >> 2];
   i3 = 0;
   while (1) {
    if ((i3 | 0) == 3) break;
    HEAP32[i2 + (i3 << 2) >> 2] = 0;
    i3 = i3 + 1 | 0;
   }
   i18 = HEAP8[i8 >> 0] | 0;
   i3 = (i18 & 1) == 0;
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj(i7, i3 ? i8 + 1 | 0 : HEAP32[i8 + 8 >> 2] | 0, i3 ? (i18 & 255) >>> 1 : HEAP32[i8 + 4 >> 2] | 0) | 0;
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i8);
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i9);
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i10);
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i11);
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i12);
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i13);
   i13 = HEAP8[i14 >> 0] | 0;
   i18 = (i13 & 1) == 0;
   i13 = i18 ? (i13 & 255) >>> 1 : HEAP32[i4 >> 2] | 0;
   i14 = i13 >>> 0 > 1;
   i18 = _memcmp(i18 ? i6 : HEAP32[i5 >> 2] | 0, 33666, i14 ? 1 : i13) | 0;
   if (!(((i18 | 0) == 0 ? ((i13 | 0) == 0 ? -1 : i14 & 1) : i18) | 0)) __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE9push_backEc(i7, 41);
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i15);
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i16);
  } else i1 = i4;
 } else i1 = i4; while (0);
 STACKTOP = i17;
 return i1 | 0;
}

function __ZN4wasm13ReorderLocals13visitFunctionEPNS_8FunctionE(i9, i15) {
 i9 = i9 | 0;
 i15 = i15 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i16 = 0, i17 = 0, i18 = 0, i19 = 0, i20 = 0, i21 = 0, i22 = 0, i23 = 0;
 i23 = STACKTOP;
 STACKTOP = STACKTOP + 112 | 0;
 i13 = i23;
 i14 = i23 + 108 | 0;
 i17 = i23 + 96 | 0;
 i21 = i23 + 84 | 0;
 i20 = i23 + 72 | 0;
 i22 = i23 + 40 | 0;
 i19 = i23 + 24 | 0;
 i18 = i23 + 12 | 0;
 i8 = __ZN4wasm8Function12getNumLocalsEv(i15) | 0;
 HEAP32[i17 >> 2] = 0;
 i16 = i17 + 4 | 0;
 HEAP32[i16 >> 2] = 0;
 HEAP32[i17 + 8 >> 2] = 0;
 i2 = i17 + 8 | 0;
 i3 = 0;
 while (1) {
  HEAP32[i13 >> 2] = i3;
  if (i3 >>> 0 >= i8 >>> 0) break;
  i1 = HEAP32[i16 >> 2] | 0;
  if ((i1 | 0) == (HEAP32[i2 >> 2] | 0)) __ZNSt3__16vectorIjNS_9allocatorIjEEE21__push_back_slow_pathIRKjEEvOT_(i17, i13); else {
   HEAP32[i1 >> 2] = i3;
   HEAP32[i16 >> 2] = i1 + 4;
  }
  i3 = i3 + 1 | 0;
 }
 i12 = HEAP32[i17 >> 2] | 0;
 i11 = HEAP32[i16 >> 2] | 0;
 HEAP32[i13 >> 2] = i9;
 HEAP32[i13 + 4 >> 2] = i15;
 HEAP32[i13 + 8 >> 2] = i17;
 __ZNSt3__16__sortIRZN4wasm13ReorderLocals13visitFunctionEPNS1_8FunctionEEUljjE_PjEEvT0_S8_T_(i12, i11, i13);
 i11 = i15 + 8 | 0;
 i12 = i15 + 12 | 0;
 i1 = (HEAP32[i12 >> 2] | 0) - (HEAP32[i11 >> 2] | 0) >> 2;
 i2 = HEAP32[i17 >> 2] | 0;
 i3 = 0;
 while (1) {
  if (i3 >>> 0 >= i1 >>> 0) {
   i4 = 0;
   break;
  }
  if ((HEAP32[i2 + (i3 << 2) >> 2] | 0) >>> 0 < i1 >>> 0) i3 = i3 + 1 | 0; else {
   i10 = 10;
   break;
  }
 }
 if ((i10 | 0) == 10) ___assert_fail(24501, 24535, 54, 24564);
 while (1) {
  if ((i4 | 0) == (i1 | 0)) break;
  HEAP32[i2 + (i4 << 2) >> 2] = i4;
  i4 = i4 + 1 | 0;
 }
 i6 = i15 + 20 | 0;
 __ZNSt3__16vectorIN4wasm8WasmTypeENS_9allocatorIS2_EEEC2ERKS5_(i21, i6);
 i1 = HEAP32[i6 >> 2] | 0;
 i7 = i15 + 24 | 0;
 i2 = HEAP32[i7 >> 2] | 0;
 while (1) {
  if ((i2 | 0) == (i1 | 0)) break;
  i5 = i2 + -4 | 0;
  HEAP32[i7 >> 2] = i5;
  i2 = i5;
 }
 i4 = i9 + 40 | 0;
 i5 = i15 + 28 | 0;
 i1 = (HEAP32[i12 >> 2] | 0) - (HEAP32[i11 >> 2] | 0) >> 2;
 while (1) {
  i2 = HEAP32[i17 >> 2] | 0;
  if (i1 >>> 0 >= (HEAP32[i16 >> 2] | 0) - i2 >> 2 >>> 0) break;
  i2 = HEAP32[i2 + (i1 << 2) >> 2] | 0;
  HEAP32[i13 >> 2] = i2;
  i3 = __ZNSt3__13mapIjjNS_4lessIjEENS_9allocatorINS_4pairIKjjEEEEEixERS5_(i4, i13) | 0;
  if (!(HEAP32[i3 >> 2] | 0)) {
   i10 = 22;
   break;
  }
  i2 = (HEAP32[i21 >> 2] | 0) + (i2 - ((HEAP32[i12 >> 2] | 0) - (HEAP32[i11 >> 2] | 0) >> 2) << 2) | 0;
  i3 = HEAP32[i7 >> 2] | 0;
  if ((i3 | 0) == (HEAP32[i5 >> 2] | 0)) __ZNSt3__16vectorIN4wasm8WasmTypeENS_9allocatorIS2_EEE21__push_back_slow_pathIRKS2_EEvOT_(i6, i2); else {
   HEAP32[i3 >> 2] = HEAP32[i2 >> 2];
   HEAP32[i7 >> 2] = i3 + 4;
  }
  i1 = i1 + 1 | 0;
 }
 if ((i10 | 0) == 22) __ZNSt3__16vectorIjNS_9allocatorIjEEE6resizeEj(i17, i1);
 __ZNSt3__16__treeINS_12__value_typeIjjEENS_19__map_value_compareIjS2_NS_4lessIjEELb1EEENS_9allocatorIS2_EEE5clearEv(i9 + 40 | 0);
 HEAP32[i20 >> 2] = 0;
 HEAP32[i20 + 4 >> 2] = 0;
 HEAP32[i20 + 8 >> 2] = 0;
 __ZNSt3__16vectorIjNS_9allocatorIjEEE6resizeEj(i20, i8);
 i1 = HEAP32[i17 >> 2] | 0;
 i2 = (HEAP32[i16 >> 2] | 0) - i1 >> 2;
 i3 = HEAP32[i20 >> 2] | 0;
 i4 = 0;
 while (1) {
  if ((i4 | 0) == (i2 | 0)) break;
  if ((HEAP32[i12 >> 2] | 0) - (HEAP32[i11 >> 2] | 0) >> 2 >>> 0 > i4 >>> 0) HEAP32[i3 + (i4 << 2) >> 2] = i4; else HEAP32[i3 + (HEAP32[i1 + (i4 << 2) >> 2] << 2) >> 2] = i4;
  i4 = i4 + 1 | 0;
 }
 HEAP32[i22 >> 2] = 0;
 HEAP32[i22 + 4 >> 2] = 0;
 HEAP32[i22 + 8 >> 2] = 0;
 HEAP32[i22 + 12 >> 2] = 0;
 HEAP32[i22 + 16 >> 2] = 0;
 HEAP32[i22 + 20 >> 2] = 0;
 HEAP32[i22 + 24 >> 2] = i15;
 HEAP32[i22 + 28 >> 2] = i20;
 __ZN4wasm6WalkerIZNS_13ReorderLocals13visitFunctionEPNS_8FunctionEE9ReIndexerNS_7VisitorIS4_vEEE4walkERPNS_10ExpressionE(i22, i15 + 36 | 0);
 i5 = i15 + 40 | 0;
 __ZNSt3__16vectorIN4wasm4NameENS_9allocatorIS2_EEEC2ERKS5_(i19, i5);
 i6 = i15 + 52 | 0;
 HEAP32[i18 + 4 >> 2] = 0;
 HEAP32[i18 + 8 >> 2] = 0;
 i2 = i18 + 4 | 0;
 HEAP32[i18 >> 2] = i2;
 i4 = HEAP32[i6 >> 2] | 0;
 i1 = i15 + 56 | 0;
 i3 = i4;
 while (1) {
  if ((i3 | 0) == (i1 | 0)) break;
  HEAP32[i14 >> 2] = i2;
  HEAP32[i13 >> 2] = HEAP32[i14 >> 2];
  __ZNSt3__16__treeINS_12__value_typeIN4wasm4NameEjEENS_19__map_value_compareIS3_S4_NS_4lessIS3_EELb1EEENS_9allocatorIS4_EEE15__insert_uniqueIRKNS_4pairIKS3_jEEEENS_15__tree_iteratorIS4_PNS_11__tree_nodeIS4_PvEEiEENS_21__tree_const_iteratorIS4_SM_iEEOT_(i18, i13, i3 + 16 | 0) | 0;
  i12 = __ZNSt3__111__tree_nextIPNS_16__tree_node_baseIPvEEEET_S5_(i4) | 0;
  i3 = i12;
  i4 = i12;
 }
 i3 = HEAP32[i5 >> 2] | 0;
 i1 = i15 + 44 | 0;
 i2 = HEAP32[i1 >> 2] | 0;
 while (1) {
  if ((i2 | 0) == (i3 | 0)) break;
  i15 = i2 + -4 | 0;
  HEAP32[i1 >> 2] = i15;
  i2 = i15;
 }
 __ZNSt3__16vectorIN4wasm4NameENS_9allocatorIS2_EEE6resizeEj(i5, (HEAP32[i16 >> 2] | 0) - (HEAP32[i17 >> 2] | 0) >> 2);
 __ZNSt3__16__treeINS_12__value_typeIN4wasm4NameEjEENS_19__map_value_compareIS3_S4_NS_4lessIS3_EELb1EEENS_9allocatorIS4_EEE5clearEv(i6);
 i2 = 0;
 while (1) {
  i1 = HEAP32[i17 >> 2] | 0;
  if (i2 >>> 0 >= (HEAP32[i16 >> 2] | 0) - i1 >> 2 >>> 0) break;
  HEAP32[(HEAP32[i5 >> 2] | 0) + (i2 << 2) >> 2] = HEAP32[(HEAP32[i19 >> 2] | 0) + (HEAP32[i1 + (i2 << 2) >> 2] << 2) >> 2];
  i15 = __ZNSt3__13mapIN4wasm4NameEjNS_4lessIS2_EENS_9allocatorINS_4pairIKS2_jEEEEEixERS7_(i6, (HEAP32[i19 >> 2] | 0) + (HEAP32[(HEAP32[i17 >> 2] | 0) + (i2 << 2) >> 2] << 2) | 0) | 0;
  HEAP32[i15 >> 2] = i2;
  i2 = i2 + 1 | 0;
 }
 __ZNSt3__16__treeINS_12__value_typeIN4wasm4NameEjEENS_19__map_value_compareIS3_S4_NS_4lessIS3_EELb1EEENS_9allocatorIS4_EEED2Ev(i18);
 __ZNSt3__113__vector_baseIN4wasm4NameENS_9allocatorIS2_EEED2Ev(i19);
 __ZNSt3__113__vector_baseIN4wasm6WalkerIZNS1_13ReorderLocals13visitFunctionEPNS1_8FunctionEE9ReIndexerNS1_7VisitorIS6_vEEE4TaskENS_9allocatorISA_EEED2Ev(i22 + 4 | 0);
 __ZNSt3__113__vector_baseIjNS_9allocatorIjEEED2Ev(i20);
 __ZNSt3__113__vector_baseIN4wasm8WasmTypeENS_9allocatorIS2_EEED2Ev(i21);
 __ZNSt3__113__vector_baseIjNS_9allocatorIjEEED2Ev(i17);
 STACKTOP = i23;
 return;
}

function __ZNSt3__16__sortIRZN4wasm13ReorderLocals13visitFunctionEPNS1_8FunctionEEUljjE_PjEEvT0_S8_T_(i2, i1, i12) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 i12 = i12 | 0;
 var i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i13 = 0;
 L1 : while (1) {
  i10 = i1;
  i11 = i1 + -4 | 0;
  L3 : while (1) {
   i9 = i2;
   i3 = i10 - i9 | 0;
   i4 = i3 >> 2;
   switch (i4 | 0) {
   case 1:
   case 0:
    break L1;
   case 2:
    {
     i1 = i11;
     i13 = 4;
     break L1;
    }
   case 3:
    {
     i1 = i11;
     i13 = 6;
     break L1;
    }
   case 4:
    {
     i1 = i11;
     i13 = 7;
     break L1;
    }
   case 5:
    {
     i1 = i11;
     i13 = 8;
     break L1;
    }
   default:
    {}
   }
   if ((i3 | 0) < 124) {
    i13 = 10;
    break L1;
   }
   i5 = i2 + (((i4 | 0) / 2 | 0) << 2) | 0;
   if ((i3 | 0) > 3996) {
    i4 = (i4 | 0) / 4 | 0;
    i4 = __ZNSt3__17__sort5IRZN4wasm13ReorderLocals13visitFunctionEPNS1_8FunctionEEUljjE_PjEEjT0_S8_S8_S8_S8_T_(i2, i2 + (i4 << 2) | 0, i5, i5 + (i4 << 2) | 0, i11, i12) | 0;
   } else i4 = __ZNSt3__17__sort3IRZN4wasm13ReorderLocals13visitFunctionEPNS1_8FunctionEEUljjE_PjEEjT0_S8_S8_T_(i2, i5, i11, i12) | 0;
   do if (__ZZN4wasm13ReorderLocals13visitFunctionEPNS_8FunctionEENKUljjE_clEjj(i12, HEAP32[i2 >> 2] | 0, HEAP32[i5 >> 2] | 0) | 0) i6 = i11; else {
    i3 = i11;
    while (1) {
     i3 = i3 + -4 | 0;
     if ((i2 | 0) == (i3 | 0)) break;
     if (__ZZN4wasm13ReorderLocals13visitFunctionEPNS_8FunctionEENKUljjE_clEjj(i12, HEAP32[i3 >> 2] | 0, HEAP32[i5 >> 2] | 0) | 0) {
      i13 = 29;
      break;
     }
    }
    if ((i13 | 0) == 29) {
     i13 = 0;
     i6 = HEAP32[i2 >> 2] | 0;
     HEAP32[i2 >> 2] = HEAP32[i3 >> 2];
     HEAP32[i3 >> 2] = i6;
     i6 = i3;
     i4 = i4 + 1 | 0;
     break;
    }
    i3 = i2 + 4 | 0;
    if (!(__ZZN4wasm13ReorderLocals13visitFunctionEPNS_8FunctionEENKUljjE_clEjj(i12, HEAP32[i2 >> 2] | 0, HEAP32[i11 >> 2] | 0) | 0)) {
     while (1) {
      if ((i3 | 0) == (i11 | 0)) break L1;
      if (__ZZN4wasm13ReorderLocals13visitFunctionEPNS_8FunctionEENKUljjE_clEjj(i12, HEAP32[i2 >> 2] | 0, HEAP32[i3 >> 2] | 0) | 0) break;
      i3 = i3 + 4 | 0;
     }
     i9 = HEAP32[i3 >> 2] | 0;
     HEAP32[i3 >> 2] = HEAP32[i11 >> 2];
     HEAP32[i11 >> 2] = i9;
     i3 = i3 + 4 | 0;
    }
    if ((i3 | 0) == (i11 | 0)) break L1; else i4 = i11;
    while (1) {
     i5 = i3;
     while (1) {
      i3 = i5 + 4 | 0;
      if (__ZZN4wasm13ReorderLocals13visitFunctionEPNS_8FunctionEENKUljjE_clEjj(i12, HEAP32[i2 >> 2] | 0, HEAP32[i5 >> 2] | 0) | 0) break; else i5 = i3;
     }
     do i4 = i4 + -4 | 0; while (__ZZN4wasm13ReorderLocals13visitFunctionEPNS_8FunctionEENKUljjE_clEjj(i12, HEAP32[i2 >> 2] | 0, HEAP32[i4 >> 2] | 0) | 0);
     if (i5 >>> 0 >= i4 >>> 0) {
      i2 = i5;
      continue L3;
     }
     i9 = HEAP32[i5 >> 2] | 0;
     HEAP32[i5 >> 2] = HEAP32[i4 >> 2];
     HEAP32[i4 >> 2] = i9;
    }
   } while (0);
   i3 = i2 + 4 | 0;
   L35 : do if (i3 >>> 0 < i6 >>> 0) {
    i8 = i5;
    while (1) {
     i5 = i3;
     while (1) {
      i3 = i5 + 4 | 0;
      if (__ZZN4wasm13ReorderLocals13visitFunctionEPNS_8FunctionEENKUljjE_clEjj(i12, HEAP32[i5 >> 2] | 0, HEAP32[i8 >> 2] | 0) | 0) i5 = i3; else {
       i7 = i5;
       break;
      }
     }
     i5 = i6;
     do i5 = i5 + -4 | 0; while (!(__ZZN4wasm13ReorderLocals13visitFunctionEPNS_8FunctionEENKUljjE_clEjj(i12, HEAP32[i5 >> 2] | 0, HEAP32[i8 >> 2] | 0) | 0));
     if (i7 >>> 0 > i5 >>> 0) {
      i3 = i7;
      i5 = i8;
      break L35;
     }
     i6 = HEAP32[i7 >> 2] | 0;
     HEAP32[i7 >> 2] = HEAP32[i5 >> 2];
     HEAP32[i5 >> 2] = i6;
     i6 = i5;
     i8 = (i8 | 0) == (i7 | 0) ? i5 : i8;
     i4 = i4 + 1 | 0;
    }
   } while (0);
   if ((i3 | 0) != (i5 | 0) ? __ZZN4wasm13ReorderLocals13visitFunctionEPNS_8FunctionEENKUljjE_clEjj(i12, HEAP32[i5 >> 2] | 0, HEAP32[i3 >> 2] | 0) | 0 : 0) {
    i8 = HEAP32[i3 >> 2] | 0;
    HEAP32[i3 >> 2] = HEAP32[i5 >> 2];
    HEAP32[i5 >> 2] = i8;
    i4 = i4 + 1 | 0;
   }
   if (!i4) {
    i4 = __ZNSt3__127__insertion_sort_incompleteIRZN4wasm13ReorderLocals13visitFunctionEPNS1_8FunctionEEUljjE_PjEEbT0_S8_T_(i2, i3, i12) | 0;
    i5 = i3 + 4 | 0;
    if (__ZNSt3__127__insertion_sort_incompleteIRZN4wasm13ReorderLocals13visitFunctionEPNS1_8FunctionEEUljjE_PjEEbT0_S8_T_(i5, i1, i12) | 0) {
     i13 = 46;
     break;
    }
    if (i4) {
     i2 = i5;
     continue;
    }
   }
   i8 = i3;
   if ((i8 - i9 | 0) >= (i10 - i8 | 0)) {
    i13 = 45;
    break;
   }
   __ZNSt3__16__sortIRZN4wasm13ReorderLocals13visitFunctionEPNS1_8FunctionEEUljjE_PjEEvT0_S8_T_(i2, i3, i12);
   i2 = i3 + 4 | 0;
  }
  if ((i13 | 0) == 45) {
   i13 = 0;
   __ZNSt3__16__sortIRZN4wasm13ReorderLocals13visitFunctionEPNS1_8FunctionEEUljjE_PjEEvT0_S8_T_(i3 + 4 | 0, i1, i12);
   i1 = i3;
   continue;
  } else if ((i13 | 0) == 46) {
   i13 = 0;
   if (i4) break; else {
    i1 = i3;
    continue;
   }
  }
 }
 if ((i13 | 0) == 4) {
  if (__ZZN4wasm13ReorderLocals13visitFunctionEPNS_8FunctionEENKUljjE_clEjj(i12, HEAP32[i1 >> 2] | 0, HEAP32[i2 >> 2] | 0) | 0) {
   i13 = HEAP32[i2 >> 2] | 0;
   HEAP32[i2 >> 2] = HEAP32[i1 >> 2];
   HEAP32[i1 >> 2] = i13;
  }
 } else if ((i13 | 0) == 6) __ZNSt3__17__sort3IRZN4wasm13ReorderLocals13visitFunctionEPNS1_8FunctionEEUljjE_PjEEjT0_S8_S8_T_(i2, i2 + 4 | 0, i1, i12) | 0; else if ((i13 | 0) == 7) __ZNSt3__17__sort4IRZN4wasm13ReorderLocals13visitFunctionEPNS1_8FunctionEEUljjE_PjEEjT0_S8_S8_S8_T_(i2, i2 + 4 | 0, i2 + 8 | 0, i1, i12) | 0; else if ((i13 | 0) == 8) __ZNSt3__17__sort5IRZN4wasm13ReorderLocals13visitFunctionEPNS1_8FunctionEEUljjE_PjEEjT0_S8_S8_S8_S8_T_(i2, i2 + 4 | 0, i2 + 8 | 0, i2 + 12 | 0, i1, i12) | 0; else if ((i13 | 0) == 10) __ZNSt3__118__insertion_sort_3IRZN4wasm13ReorderLocals13visitFunctionEPNS1_8FunctionEEUljjE_PjEEvT0_S8_T_(i2, i1, i12);
 return;
}

function __ZN10__cxxabiv112_GLOBAL__N_121parse_integer_literalINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_(i1, i2, i13, i10) {
 i1 = i1 | 0;
 i2 = i2 | 0;
 i13 = i13 | 0;
 i10 = i10 | 0;
 var i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i11 = 0, i12 = 0, i14 = 0, i15 = 0;
 i14 = STACKTOP;
 STACKTOP = STACKTOP + 80 | 0;
 i9 = i14 + 48 | 0;
 i6 = i14 + 24 | 0;
 i7 = i14 + 12 | 0;
 i8 = i14;
 i12 = __ZN10__cxxabiv112_GLOBAL__N_112parse_numberEPKcS2_(i1, i2) | 0;
 if (!((i12 | 0) == (i1 | 0) | (i12 | 0) == (i2 | 0)) ? (HEAP8[i12 >> 0] | 0) == 69 : 0) {
  i5 = HEAP8[i13 >> 0] | 0;
  i11 = i13 + 4 | 0;
  do if (((i5 & 1) == 0 ? (i5 & 255) >>> 1 : HEAP32[i11 >> 2] | 0) >>> 0 > 3) {
   __ZNSt3__1plIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEENS_12basic_stringIT_T0_T1_EEPKS8_RKSB_(i8, 33619, i13);
   i2 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc(i8, 33621) | 0;
   HEAP32[i7 >> 2] = HEAP32[i2 >> 2];
   HEAP32[i7 + 4 >> 2] = HEAP32[i2 + 4 >> 2];
   HEAP32[i7 + 8 >> 2] = HEAP32[i2 + 8 >> 2];
   i3 = 0;
   while (1) {
    if ((i3 | 0) == 3) break;
    HEAP32[i2 + (i3 << 2) >> 2] = 0;
    i3 = i3 + 1 | 0;
   }
   __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE(i6, i7);
   i2 = i10 + 4 | 0;
   i3 = HEAP32[i2 >> 2] | 0;
   i5 = HEAP32[i10 + 8 >> 2] | 0;
   i4 = i5;
   if (i3 >>> 0 < i5 >>> 0) {
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i3, i6);
    HEAP32[i2 >> 2] = (HEAP32[i2 >> 2] | 0) + 24;
   } else {
    i2 = HEAP32[i10 >> 2] | 0;
    i15 = i3 - i2 | 0;
    i5 = (i15 | 0) / 24 | 0;
    i3 = i5 + 1 | 0;
    if ((i15 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i10);
    i2 = (i4 - i2 | 0) / 24 | 0;
    if (i2 >>> 0 < 1073741823) {
     i2 = i2 << 1;
     i2 = i2 >>> 0 < i3 >>> 0 ? i3 : i2;
    } else i2 = 2147483647;
    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_(i9, i2, i5, i10 + 12 | 0);
    i15 = i9 + 8 | 0;
    i5 = HEAP32[i15 >> 2] | 0;
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i5, i6);
    HEAP32[i15 >> 2] = i5 + 24;
    __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i10, i9);
    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev(i9);
   }
   __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i6);
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i7);
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i8);
  } else {
   i4 = i10 + 4 | 0;
   i3 = HEAP32[i4 >> 2] | 0;
   i15 = HEAP32[i10 + 8 >> 2] | 0;
   i5 = i15;
   if (i3 >>> 0 < i15 >>> 0) {
    HEAP32[i3 >> 2] = 0;
    HEAP32[i3 + 4 >> 2] = 0;
    HEAP32[i3 + 8 >> 2] = 0;
    HEAP32[i3 + 12 >> 2] = 0;
    HEAP32[i3 + 16 >> 2] = 0;
    HEAP32[i3 + 20 >> 2] = 0;
    i2 = 0;
    while (1) {
     if ((i2 | 0) == 3) break;
     HEAP32[i3 + (i2 << 2) >> 2] = 0;
     i2 = i2 + 1 | 0;
    }
    i2 = i3 + 12 | 0;
    i3 = 0;
    while (1) {
     if ((i3 | 0) == 3) break;
     HEAP32[i2 + (i3 << 2) >> 2] = 0;
     i3 = i3 + 1 | 0;
    }
    HEAP32[i4 >> 2] = (HEAP32[i4 >> 2] | 0) + 24;
    break;
   }
   i2 = HEAP32[i10 >> 2] | 0;
   i15 = i3 - i2 | 0;
   i4 = (i15 | 0) / 24 | 0;
   i3 = i4 + 1 | 0;
   if ((i15 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i10);
   i2 = (i5 - i2 | 0) / 24 | 0;
   if (i2 >>> 0 < 1073741823) {
    i2 = i2 << 1;
    i2 = i2 >>> 0 < i3 >>> 0 ? i3 : i2;
   } else i2 = 2147483647;
   __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_(i9, i2, i4, i10 + 12 | 0);
   i4 = i9 + 8 | 0;
   i5 = HEAP32[i4 >> 2] | 0;
   HEAP32[i5 >> 2] = 0;
   HEAP32[i5 + 4 >> 2] = 0;
   HEAP32[i5 + 8 >> 2] = 0;
   HEAP32[i5 + 12 >> 2] = 0;
   HEAP32[i5 + 16 >> 2] = 0;
   HEAP32[i5 + 20 >> 2] = 0;
   i2 = 0;
   while (1) {
    if ((i2 | 0) == 3) break;
    HEAP32[i5 + (i2 << 2) >> 2] = 0;
    i2 = i2 + 1 | 0;
   }
   i2 = i5 + 12 | 0;
   i3 = 0;
   while (1) {
    if ((i3 | 0) == 3) break;
    HEAP32[i2 + (i3 << 2) >> 2] = 0;
    i3 = i3 + 1 | 0;
   }
   HEAP32[i4 >> 2] = i5 + 24;
   __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i10, i9);
   __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev(i9);
  } while (0);
  i3 = i10 + 4 | 0;
  if ((HEAP8[i1 >> 0] | 0) == 110) {
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE9push_backEc((HEAP32[i3 >> 2] | 0) + -24 | 0, 45);
   i1 = i1 + 1 | 0;
  }
  __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendIPKcEENS_9enable_ifIXsr21__is_forward_iteratorIT_EE5valueERS7_E4typeESC_SC_((HEAP32[i3 >> 2] | 0) + -24 | 0, i1, i12);
  i1 = HEAP8[i13 >> 0] | 0;
  i2 = (i1 & 1) == 0;
  i1 = i2 ? (i1 & 255) >>> 1 : HEAP32[i11 >> 2] | 0;
  if (i1 >>> 0 < 4) __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj((HEAP32[i3 >> 2] | 0) + -24 | 0, i2 ? i13 + 1 | 0 : HEAP32[i13 + 8 >> 2] | 0, i1) | 0;
  i1 = i12 + 1 | 0;
 }
 STACKTOP = i14;
 return i1 | 0;
}

function __ZNSt3__111__money_putIwE8__formatEPwRS2_S3_jPKwS5_RKNS_5ctypeIwEEbRKNS_10money_base7patternEwwRKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEERKNSE_IwNSF_IwEENSH_IwEEEESQ_i(i31, i33, i32, i30, i1, i19, i18, i23, i24, i20, i27, i22, i26, i25, i21) {
 i31 = i31 | 0;
 i33 = i33 | 0;
 i32 = i32 | 0;
 i30 = i30 | 0;
 i1 = i1 | 0;
 i19 = i19 | 0;
 i18 = i18 | 0;
 i23 = i23 | 0;
 i24 = i24 | 0;
 i20 = i20 | 0;
 i27 = i27 | 0;
 i22 = i22 | 0;
 i26 = i26 | 0;
 i25 = i25 | 0;
 i21 = i21 | 0;
 var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, i28 = 0, i29 = 0, i34 = 0;
 HEAP32[i32 >> 2] = i31;
 i28 = i25 + 4 | 0;
 i29 = i25 + 8 | 0;
 i11 = i26 + 4 | 0;
 i12 = (i30 & 512 | 0) == 0;
 i13 = i26 + 8 | 0;
 i14 = (i21 | 0) > 0;
 i15 = i22 + 4 | 0;
 i16 = i22 + 8 | 0;
 i17 = i22 + 1 | 0;
 i10 = 0;
 while (1) {
  if ((i10 | 0) == 4) break;
  L4 : do switch (HEAP8[i24 + i10 >> 0] | 0) {
  case 0:
   {
    HEAP32[i33 >> 2] = HEAP32[i32 >> 2];
    break;
   }
  case 1:
   {
    HEAP32[i33 >> 2] = HEAP32[i32 >> 2];
    i8 = FUNCTION_TABLE_iii[HEAP32[(HEAP32[i18 >> 2] | 0) + 44 >> 2] & 63](i18, 32) | 0;
    i9 = HEAP32[i32 >> 2] | 0;
    HEAP32[i32 >> 2] = i9 + 4;
    HEAP32[i9 >> 2] = i8;
    break;
   }
  case 3:
   {
    i9 = HEAP8[i25 >> 0] | 0;
    i2 = (i9 & 1) == 0;
    if ((i2 ? (i9 & 255) >>> 1 : HEAP32[i28 >> 2] | 0) | 0) {
     i8 = HEAP32[(i2 ? i28 : HEAP32[i29 >> 2] | 0) >> 2] | 0;
     i9 = HEAP32[i32 >> 2] | 0;
     HEAP32[i32 >> 2] = i9 + 4;
     HEAP32[i9 >> 2] = i8;
    }
    break;
   }
  case 2:
   {
    i6 = HEAP8[i26 >> 0] | 0;
    i2 = (i6 & 1) == 0;
    i6 = i2 ? (i6 & 255) >>> 1 : HEAP32[i11 >> 2] | 0;
    if (!(i12 | (i6 | 0) == 0)) {
     i5 = i2 ? i11 : HEAP32[i13 >> 2] | 0;
     i3 = i5 + (i6 << 2) | 0;
     i4 = HEAP32[i32 >> 2] | 0;
     i2 = i4;
     while (1) {
      if ((i5 | 0) == (i3 | 0)) break;
      HEAP32[i2 >> 2] = HEAP32[i5 >> 2];
      i2 = i2 + 4 | 0;
      i5 = i5 + 4 | 0;
     }
     HEAP32[i32 >> 2] = i4 + (i6 << 2);
    }
    break;
   }
  case 4:
   {
    i3 = HEAP32[i32 >> 2] | 0;
    i1 = i23 ? i1 + 4 | 0 : i1;
    i2 = i1;
    while (1) {
     if (i2 >>> 0 >= i19 >>> 0) break;
     if (!(FUNCTION_TABLE_iiii[HEAP32[(HEAP32[i18 >> 2] | 0) + 12 >> 2] & 31](i18, 2048, HEAP32[i2 >> 2] | 0) | 0)) break;
     i2 = i2 + 4 | 0;
    }
    if (i14) {
     i6 = i21;
     while (1) {
      i4 = (i6 | 0) > 0;
      if (!(i2 >>> 0 > i1 >>> 0 & i4)) break;
      i9 = i2 + -4 | 0;
      i7 = HEAP32[i9 >> 2] | 0;
      i8 = HEAP32[i32 >> 2] | 0;
      HEAP32[i32 >> 2] = i8 + 4;
      HEAP32[i8 >> 2] = i7;
      i2 = i9;
      i6 = i6 + -1 | 0;
     }
     if (i4) i7 = FUNCTION_TABLE_iii[HEAP32[(HEAP32[i18 >> 2] | 0) + 44 >> 2] & 63](i18, 48) | 0; else i7 = 0;
     i5 = HEAP32[i32 >> 2] | 0;
     while (1) {
      i4 = i5 + 4 | 0;
      if ((i6 | 0) <= 0) break;
      HEAP32[i5 >> 2] = i7;
      i5 = i4;
      i6 = i6 + -1 | 0;
     }
     HEAP32[i32 >> 2] = i4;
     HEAP32[i5 >> 2] = i20;
    }
    if ((i2 | 0) == (i1 | 0)) {
     i8 = FUNCTION_TABLE_iii[HEAP32[(HEAP32[i18 >> 2] | 0) + 44 >> 2] & 63](i18, 48) | 0;
     i9 = HEAP32[i32 >> 2] | 0;
     i2 = i9 + 4 | 0;
     HEAP32[i32 >> 2] = i2;
     HEAP32[i9 >> 2] = i8;
    } else {
     i8 = HEAP8[i22 >> 0] | 0;
     i4 = (i8 & 1) == 0;
     i9 = HEAP32[i15 >> 2] | 0;
     if (!((i4 ? (i8 & 255) >>> 1 : i9) | 0)) {
      i7 = -1;
      i6 = 0;
      i8 = 0;
     } else {
      i7 = HEAP8[(i4 ? i17 : HEAP32[i16 >> 2] | 0) >> 0] | 0;
      i6 = 0;
      i8 = 0;
     }
     while (1) {
      if ((i2 | 0) == (i1 | 0)) break;
      i4 = HEAP32[i32 >> 2] | 0;
      if ((i8 | 0) == (i7 | 0)) {
       i5 = i4 + 4 | 0;
       HEAP32[i32 >> 2] = i5;
       HEAP32[i4 >> 2] = i27;
       i6 = i6 + 1 | 0;
       i7 = HEAP8[i22 >> 0] | 0;
       i4 = (i7 & 1) == 0;
       if (i6 >>> 0 < (i4 ? (i7 & 255) >>> 1 : i9) >>> 0) {
        i7 = HEAP8[(i4 ? i17 : HEAP32[i16 >> 2] | 0) + i6 >> 0] | 0;
        i4 = i5;
        i7 = i7 << 24 >> 24 == 127 ? -1 : i7 << 24 >> 24;
        i5 = 0;
       } else {
        i4 = i5;
        i7 = i8;
        i5 = 0;
       }
      } else i5 = i8;
      i8 = i2 + -4 | 0;
      i34 = HEAP32[i8 >> 2] | 0;
      HEAP32[i32 >> 2] = i4 + 4;
      HEAP32[i4 >> 2] = i34;
      i2 = i8;
      i8 = i5 + 1 | 0;
     }
     i2 = HEAP32[i32 >> 2] | 0;
    }
    if ((i3 | 0) != (i2 | 0)) while (1) {
     i2 = i2 + -4 | 0;
     if (i3 >>> 0 >= i2 >>> 0) break L4;
     i34 = HEAP32[i3 >> 2] | 0;
     HEAP32[i3 >> 2] = HEAP32[i2 >> 2];
     HEAP32[i2 >> 2] = i34;
     i3 = i3 + 4 | 0;
    }
    break;
   }
  default:
   {}
  } while (0);
  i10 = i10 + 1 | 0;
 }
 i2 = HEAP8[i25 >> 0] | 0;
 i1 = (i2 & 1) == 0;
 i2 = i1 ? (i2 & 255) >>> 1 : HEAP32[i28 >> 2] | 0;
 if (i2 >>> 0 > 1) {
  i3 = i1 ? i28 : HEAP32[i29 >> 2] | 0;
  i5 = i3 + 4 | 0;
  i2 = i3 + (i2 << 2) | 0;
  i3 = HEAP32[i32 >> 2] | 0;
  i4 = i2 - i5 | 0;
  i1 = i3;
  while (1) {
   if ((i5 | 0) == (i2 | 0)) break;
   HEAP32[i1 >> 2] = HEAP32[i5 >> 2];
   i1 = i1 + 4 | 0;
   i5 = i5 + 4 | 0;
  }
  HEAP32[i32 >> 2] = i3 + (i4 >>> 2 << 2);
 }
 switch (i30 & 176 | 0) {
 case 32:
  {
   HEAP32[i33 >> 2] = HEAP32[i32 >> 2];
   break;
  }
 case 16:
  break;
 default:
  HEAP32[i33 >> 2] = i31;
 }
 return;
}

function __ZN4wasm16PrintSExpression11visitBinaryEPNS_6BinaryE(i5, i4) {
 i5 = i5 | 0;
 i4 = i4 | 0;
 var i1 = 0, i2 = 0, i3 = 0;
 __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_c(HEAP32[i5 >> 2] | 0, 40) | 0;
 i2 = __Z12prepareColorRNSt3__113basic_ostreamIcNS_11char_traitsIcEEEE(HEAP32[i5 >> 2] | 0) | 0;
 i3 = i4 + 8 | 0;
 if ((HEAP32[i3 >> 2] | 0) > 18) i1 = (HEAP32[i4 + 12 >> 2] | 0) + 4 | 0; else i1 = i4 + 4 | 0;
 __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_c(__ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(i2, __ZN4wasm13printWasmTypeENS_8WasmTypeE(HEAP32[i1 >> 2] | 0) | 0) | 0, 46) | 0;
 do switch (HEAP32[i3 >> 2] | 0) {
 case 0:
  {
   __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(HEAP32[i5 >> 2] | 0, 18661) | 0;
   break;
  }
 case 1:
  {
   __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(HEAP32[i5 >> 2] | 0, 25536) | 0;
   break;
  }
 case 2:
  {
   __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(HEAP32[i5 >> 2] | 0, 18665) | 0;
   break;
  }
 case 3:
  {
   __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(HEAP32[i5 >> 2] | 0, 18669) | 0;
   break;
  }
 case 4:
  {
   __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(HEAP32[i5 >> 2] | 0, 18675) | 0;
   break;
  }
 case 5:
  {
   __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(HEAP32[i5 >> 2] | 0, 18681) | 0;
   break;
  }
 case 6:
  {
   __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(HEAP32[i5 >> 2] | 0, 18687) | 0;
   break;
  }
 case 7:
  {
   __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(HEAP32[i5 >> 2] | 0, 18693) | 0;
   break;
  }
 case 8:
  {
   __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(HEAP32[i5 >> 2] | 0, 18697) | 0;
   break;
  }
 case 9:
  {
   __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(HEAP32[i5 >> 2] | 0, 18700) | 0;
   break;
  }
 case 10:
  {
   __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(HEAP32[i5 >> 2] | 0, 18704) | 0;
   break;
  }
 case 11:
  {
   __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(HEAP32[i5 >> 2] | 0, 18708) | 0;
   break;
  }
 case 12:
  {
   __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(HEAP32[i5 >> 2] | 0, 18714) | 0;
   break;
  }
 case 13:
  {
   __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(HEAP32[i5 >> 2] | 0, 18720) | 0;
   break;
  }
 case 14:
  {
   __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(HEAP32[i5 >> 2] | 0, 18725) | 0;
   break;
  }
 case 15:
  {
   __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(HEAP32[i5 >> 2] | 0, 18730) | 0;
   break;
  }
 case 16:
  {
   __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(HEAP32[i5 >> 2] | 0, 18734) | 0;
   break;
  }
 case 17:
  {
   __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(HEAP32[i5 >> 2] | 0, 18743) | 0;
   break;
  }
 case 18:
  {
   __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(HEAP32[i5 >> 2] | 0, 18747) | 0;
   break;
  }
 case 19:
  {
   __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(HEAP32[i5 >> 2] | 0, 18751) | 0;
   break;
  }
 case 20:
  {
   __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(HEAP32[i5 >> 2] | 0, 18754) | 0;
   break;
  }
 case 21:
  {
   __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(HEAP32[i5 >> 2] | 0, 18757) | 0;
   break;
  }
 case 22:
  {
   __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(HEAP32[i5 >> 2] | 0, 18762) | 0;
   break;
  }
 case 23:
  {
   __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(HEAP32[i5 >> 2] | 0, 18767) | 0;
   break;
  }
 case 24:
  {
   __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(HEAP32[i5 >> 2] | 0, 18772) | 0;
   break;
  }
 case 25:
  {
   __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(HEAP32[i5 >> 2] | 0, 18777) | 0;
   break;
  }
 case 26:
  {
   __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(HEAP32[i5 >> 2] | 0, 18782) | 0;
   break;
  }
 case 27:
  {
   __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(HEAP32[i5 >> 2] | 0, 18787) | 0;
   break;
  }
 case 28:
  {
   __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(HEAP32[i5 >> 2] | 0, 18792) | 0;
   break;
  }
 case 29:
  {
   __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(HEAP32[i5 >> 2] | 0, 18797) | 0;
   break;
  }
 case 30:
  {
   __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(HEAP32[i5 >> 2] | 0, 18800) | 0;
   break;
  }
 case 31:
  {
   __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(HEAP32[i5 >> 2] | 0, 18803) | 0;
   break;
  }
 case 32:
  {
   __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(HEAP32[i5 >> 2] | 0, 18806) | 0;
   break;
  }
 default:
  _abort();
 } while (0);
 __ZN4wasm16PrintSExpression9incIndentEv(i5);
 __ZN4wasm16PrintSExpression13printFullLineEPNS_10ExpressionE(i5, HEAP32[i4 + 12 >> 2] | 0);
 __ZN4wasm16PrintSExpression13printFullLineEPNS_10ExpressionE(i5, HEAP32[i4 + 16 >> 2] | 0);
 __ZN4wasm16PrintSExpression9decIndentEv(i5);
 return;
}

function __ZN4wasm14SimplifyLocals4walkERPNS_10ExpressionE(i28, i27) {
 i28 = i28 | 0;
 i27 = i27 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, i18 = 0, i19 = 0, i20 = 0, i21 = 0, i22 = 0, i23 = 0, i24 = 0, i25 = 0, i26 = 0, i29 = 0, i30 = 0;
 i30 = STACKTOP;
 STACKTOP = STACKTOP + 128 | 0;
 i9 = i30 + 116 | 0;
 i10 = i30 + 56 | 0;
 i16 = i30 + 52 | 0;
 i17 = i30 + 4 | 0;
 i18 = i30;
 i25 = i30 + 104 | 0;
 i24 = i30 + 60 | 0;
 i26 = i30 + 8 | 0;
 i19 = i28 + 88 | 0;
 i20 = i28 + 16 | 0;
 i21 = i28 + 104 | 0;
 i22 = i28 + 108 | 0;
 i23 = i28 + 116 | 0;
 i11 = i28 + 120 | 0;
 i12 = i28 + 40 | 0;
 i13 = i28 + 52 | 0;
 i14 = i28 + 64 | 0;
 i15 = i28 + 36 | 0;
 do {
  HEAP8[i19 >> 0] = 0;
  __ZN4wasm6WalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE4walkERPNS_10ExpressionE(i20, i27);
  i8 = HEAP32[i22 >> 2] | 0;
  i1 = HEAP32[i21 >> 2] | 0;
  i6 = i8;
  if ((i8 | 0) != (i1 | 0)) {
   while (1) {
    if ((i1 | 0) == (i6 | 0)) break;
    i2 = HEAP32[i1 >> 2] | 0;
    i3 = __ZN10MixedArena5allocIN4wasm3NopEEEPT_v((HEAP32[i15 >> 2] | 0) + 88 | 0) | 0;
    HEAP32[i9 >> 2] = i3;
    i4 = i2 + 16 | 0;
    i5 = HEAP32[i4 >> 2] | 0;
    if (i5 >>> 0 < (HEAP32[i2 + 20 >> 2] | 0) >>> 0) {
     HEAP32[i5 >> 2] = i3;
     HEAP32[i4 >> 2] = (HEAP32[i4 >> 2] | 0) + 4;
    } else __ZNSt3__16vectorIPN4wasm10ExpressionENS_9allocatorIS3_EEE21__push_back_slow_pathIS3_EEvOT_(i2 + 12 | 0, i9);
    i1 = i1 + 4 | 0;
   }
   i1 = HEAP32[i21 >> 2] | 0;
   i2 = HEAP32[i22 >> 2] | 0;
   while (1) {
    if ((i2 | 0) == (i1 | 0)) break;
    i8 = i2 + -4 | 0;
    HEAP32[i22 >> 2] = i8;
    i2 = i8;
   }
   HEAP8[i19 >> 0] = 1;
  }
  i7 = HEAP32[i11 >> 2] | 0;
  i1 = HEAP32[i23 >> 2] | 0;
  i8 = i7;
  if ((i7 | 0) != (i1 | 0)) {
   while (1) {
    if ((i1 | 0) == (i8 | 0)) break;
    i2 = HEAP32[i1 >> 2] | 0;
    HEAP32[i10 >> 2] = (HEAP32[i15 >> 2] | 0) + 88;
    i4 = i2 + 12 | 0;
    i3 = __ZN4wasm7Builder8blockifyEPNS_10ExpressionE(i10, HEAP32[i4 >> 2] | 0) | 0;
    HEAP32[i4 >> 2] = i3;
    i4 = i3 + 12 | 0;
    i5 = i3 + 16 | 0;
    i7 = HEAP32[i5 >> 2] | 0;
    if (!((i7 | 0) != (HEAP32[i4 >> 2] | 0) ? (HEAP32[HEAP32[i7 + -4 >> 2] >> 2] | 0) == 19 : 0)) i29 = 22;
    do if ((i29 | 0) == 22) {
     i29 = 0;
     i6 = __ZN10MixedArena5allocIN4wasm3NopEEEPT_v((HEAP32[i15 >> 2] | 0) + 88 | 0) | 0;
     HEAP32[i16 >> 2] = i6;
     i7 = HEAP32[i5 >> 2] | 0;
     if (i7 >>> 0 < (HEAP32[i3 + 20 >> 2] | 0) >>> 0) {
      HEAP32[i7 >> 2] = i6;
      HEAP32[i5 >> 2] = (HEAP32[i5 >> 2] | 0) + 4;
      break;
     } else {
      __ZNSt3__16vectorIPN4wasm10ExpressionENS_9allocatorIS3_EEE21__push_back_slow_pathIS3_EEvOT_(i4, i16);
      break;
     }
    } while (0);
    HEAP32[i17 >> 2] = (HEAP32[i15 >> 2] | 0) + 88;
    i3 = i2 + 16 | 0;
    i2 = __ZN4wasm7Builder8blockifyEPNS_10ExpressionE(i17, HEAP32[i3 >> 2] | 0) | 0;
    HEAP32[i3 >> 2] = i2;
    i3 = i2 + 12 | 0;
    i4 = i2 + 16 | 0;
    i7 = HEAP32[i4 >> 2] | 0;
    if (!((i7 | 0) != (HEAP32[i3 >> 2] | 0) ? (HEAP32[HEAP32[i7 + -4 >> 2] >> 2] | 0) == 19 : 0)) i29 = 27;
    do if ((i29 | 0) == 27) {
     i29 = 0;
     i5 = __ZN10MixedArena5allocIN4wasm3NopEEEPT_v((HEAP32[i15 >> 2] | 0) + 88 | 0) | 0;
     HEAP32[i18 >> 2] = i5;
     i6 = HEAP32[i4 >> 2] | 0;
     if (i6 >>> 0 < (HEAP32[i2 + 20 >> 2] | 0) >>> 0) {
      HEAP32[i6 >> 2] = i5;
      HEAP32[i4 >> 2] = (HEAP32[i4 >> 2] | 0) + 4;
      break;
     } else {
      __ZNSt3__16vectorIPN4wasm10ExpressionENS_9allocatorIS3_EEE21__push_back_slow_pathIS3_EEvOT_(i3, i18);
      break;
     }
    } while (0);
    i1 = i1 + 4 | 0;
   }
   i1 = HEAP32[i23 >> 2] | 0;
   i2 = HEAP32[i11 >> 2] | 0;
   while (1) {
    if ((i2 | 0) == (i1 | 0)) break;
    i8 = i2 + -4 | 0;
    HEAP32[i11 >> 2] = i8;
    i2 = i8;
   }
   HEAP8[i19 >> 0] = 1;
  }
  __ZNSt3__16__treeINS_12__value_typeIjN4wasm14SimplifyLocals12SinkableInfoEEENS_19__map_value_compareIjS5_NS_4lessIjEELb1EEENS_9allocatorIS5_EEE5clearEv(i12);
  __ZNSt3__16__treeINS_12__value_typeIN4wasm4NameENS_6vectorINS2_14SimplifyLocals10BlockBreakENS_9allocatorIS6_EEEEEENS_19__map_value_compareIS3_SA_NS_4lessIS3_EELb1EEENS7_ISA_EEE5clearEv(i13);
  __ZNSt3__16__treeIN4wasm4NameENS_4lessIS2_EENS_9allocatorIS2_EEE5clearEv(i14);
 } while ((HEAP8[i19 >> 0] | 0) != 0);
 HEAP32[i25 >> 2] = 0;
 HEAP32[i25 + 4 >> 2] = 0;
 HEAP32[i25 + 8 >> 2] = 0;
 __ZNSt3__16vectorIiNS_9allocatorIiEEE6resizeEj(i25, __ZN4wasm8Function12getNumLocalsEv(HEAP32[i28 + 32 >> 2] | 0) | 0);
 __ZN4wasm10WalkerPassINS_10PostWalkerINS_15GetLocalCounterENS_7VisitorIS2_vEEEEEC2Ev(i24);
 HEAP32[i24 >> 2] = 4444;
 HEAP32[i24 + 40 >> 2] = i25;
 __ZN4wasm6WalkerINS_15GetLocalCounterENS_7VisitorIS1_vEEE4walkERPNS_10ExpressionE(i24 + 16 | 0, i27);
 __ZN4wasm10WalkerPassINS_10PostWalkerINS_15SetLocalRemoverENS_7VisitorIS2_vEEEEEC2Ev(i26);
 HEAP32[i26 >> 2] = 4500;
 HEAP32[i26 + 40 >> 2] = i25;
 __ZN4wasm6WalkerINS_15SetLocalRemoverENS_7VisitorIS1_vEEE4walkERPNS_10ExpressionE(i26 + 16 | 0, i27);
 __ZN4wasm10WalkerPassINS_10PostWalkerINS_15SetLocalRemoverENS_7VisitorIS2_vEEEEED2Ev(i26);
 __ZN4wasm10WalkerPassINS_10PostWalkerINS_15GetLocalCounterENS_7VisitorIS2_vEEEEED2Ev(i24);
 __ZNSt3__113__vector_baseIiNS_9allocatorIiEEED2Ev(i25);
 STACKTOP = i30;
 return;
}

function __ZN10__cxxabiv112_GLOBAL__N_117parse_source_nameINS0_2DbEEEPKcS4_S4_RT_(i1, i6, i13) {
 i1 = i1 | 0;
 i6 = i6 | 0;
 i13 = i13 | 0;
 var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i14 = 0, i15 = 0;
 i15 = STACKTOP;
 STACKTOP = STACKTOP + 112 | 0;
 i12 = i15 + 88 | 0;
 i14 = i15 + 64 | 0;
 i5 = i15 + 76 | 0;
 i9 = i15 + 40 | 0;
 i7 = i15 + 16 | 0;
 i8 = i15;
 L1 : do if (((i1 | 0) != (i6 | 0) ? (i3 = (HEAP8[i1 >> 0] | 0) + -48 | 0, i3 >>> 0 < 10) : 0) ? (i2 = i1 + 1 | 0, (i2 | 0) != (i6 | 0)) : 0) {
  while (1) {
   i4 = (HEAP8[i2 >> 0] | 0) + -48 | 0;
   if (i4 >>> 0 >= 10) {
    i11 = i2;
    i10 = i3;
    break;
   }
   i2 = i2 + 1 | 0;
   if ((i2 | 0) == (i6 | 0)) break L1;
   i3 = i4 + (i3 * 10 | 0) | 0;
  }
  if ((i6 - i11 | 0) >>> 0 >= i10 >>> 0) {
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj(i14, i11, i10);
   i3 = HEAP8[i14 >> 0] | 0;
   i6 = (i3 & 1) == 0;
   i3 = i6 ? (i3 & 255) >>> 1 : HEAP32[i14 + 4 >> 2] | 0;
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj(i5, i6 ? i14 + 1 | 0 : HEAP32[i14 + 8 >> 2] | 0, i3 >>> 0 < 10 ? i3 : 10);
   i3 = HEAP8[i5 >> 0] | 0;
   i6 = (i3 & 1) == 0;
   i3 = i6 ? (i3 & 255) >>> 1 : HEAP32[i5 + 4 >> 2] | 0;
   i4 = i3 >>> 0 > 10;
   i6 = _memcmp(i6 ? i5 + 1 | 0 : HEAP32[i5 + 8 >> 2] | 0, 33498, i4 ? 10 : i3) | 0;
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i5);
   if (!(((i6 | 0) == 0 ? (i3 >>> 0 < 10 ? -1 : i4 & 1) : i6) | 0)) {
    i1 = _malloc(32) | 0;
    HEAP32[i9 + 8 >> 2] = i1;
    HEAP32[i9 >> 2] = 33;
    HEAP32[i9 + 4 >> 2] = 21;
    i2 = i1;
    i3 = 33509;
    i4 = i2 + 21 | 0;
    do {
     HEAP8[i2 >> 0] = HEAP8[i3 >> 0] | 0;
     i2 = i2 + 1 | 0;
     i3 = i3 + 1 | 0;
    } while ((i2 | 0) < (i4 | 0));
    HEAP8[i1 + 21 >> 0] = 0;
    i1 = i9 + 12 | 0;
    i2 = 0;
    while (1) {
     if ((i2 | 0) == 3) break;
     HEAP32[i1 + (i2 << 2) >> 2] = 0;
     i2 = i2 + 1 | 0;
    }
    i1 = i13 + 4 | 0;
    i2 = HEAP32[i1 >> 2] | 0;
    i8 = HEAP32[i13 + 8 >> 2] | 0;
    i3 = i8;
    if (i2 >>> 0 < i8 >>> 0) {
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i2, i9);
     HEAP32[i1 >> 2] = (HEAP32[i1 >> 2] | 0) + 24;
    } else {
     i1 = HEAP32[i13 >> 2] | 0;
     i8 = i2 - i1 | 0;
     i4 = (i8 | 0) / 24 | 0;
     i2 = i4 + 1 | 0;
     if ((i8 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i13);
     i1 = (i3 - i1 | 0) / 24 | 0;
     if (i1 >>> 0 < 1073741823) {
      i1 = i1 << 1;
      i1 = i1 >>> 0 < i2 >>> 0 ? i2 : i1;
     } else i1 = 2147483647;
     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_(i12, i1, i4, i13 + 12 | 0);
     i8 = i12 + 8 | 0;
     i7 = HEAP32[i8 >> 2] | 0;
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i7, i9);
     HEAP32[i8 >> 2] = i7 + 24;
     __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i13, i12);
     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev(i12);
    }
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i9);
   } else {
    HEAP32[i8 >> 2] = HEAP32[i14 >> 2];
    HEAP32[i8 + 4 >> 2] = HEAP32[i14 + 4 >> 2];
    HEAP32[i8 + 8 >> 2] = HEAP32[i14 + 8 >> 2];
    i1 = 0;
    while (1) {
     if ((i1 | 0) == 3) break;
     HEAP32[i14 + (i1 << 2) >> 2] = 0;
     i1 = i1 + 1 | 0;
    }
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE(i7, i8);
    i1 = i13 + 4 | 0;
    i2 = HEAP32[i1 >> 2] | 0;
    i9 = HEAP32[i13 + 8 >> 2] | 0;
    i3 = i9;
    if (i2 >>> 0 < i9 >>> 0) {
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i2, i7);
     HEAP32[i1 >> 2] = (HEAP32[i1 >> 2] | 0) + 24;
    } else {
     i1 = HEAP32[i13 >> 2] | 0;
     i9 = i2 - i1 | 0;
     i4 = (i9 | 0) / 24 | 0;
     i2 = i4 + 1 | 0;
     if ((i9 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i13);
     i1 = (i3 - i1 | 0) / 24 | 0;
     if (i1 >>> 0 < 1073741823) {
      i1 = i1 << 1;
      i1 = i1 >>> 0 < i2 >>> 0 ? i2 : i1;
     } else i1 = 2147483647;
     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_(i12, i1, i4, i13 + 12 | 0);
     i9 = i12 + 8 | 0;
     i6 = HEAP32[i9 >> 2] | 0;
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i6, i7);
     HEAP32[i9 >> 2] = i6 + 24;
     __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i13, i12);
     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev(i12);
    }
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i7);
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i8);
   }
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i14);
   i1 = i11 + i10 | 0;
  }
 } while (0);
 STACKTOP = i15;
 return i1 | 0;
}

function __ZNSt3__111__money_putIcE8__formatEPcRS2_S3_jPKcS5_RKNS_5ctypeIcEEbRKNS_10money_base7patternEccRKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEESL_SL_i(i31, i33, i32, i30, i1, i18, i17, i22, i23, i19, i26, i21, i25, i24, i20) {
 i31 = i31 | 0;
 i33 = i33 | 0;
 i32 = i32 | 0;
 i30 = i30 | 0;
 i1 = i1 | 0;
 i18 = i18 | 0;
 i17 = i17 | 0;
 i22 = i22 | 0;
 i23 = i23 | 0;
 i19 = i19 | 0;
 i26 = i26 | 0;
 i21 = i21 | 0;
 i25 = i25 | 0;
 i24 = i24 | 0;
 i20 = i20 | 0;
 var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i27 = 0, i28 = 0, i29 = 0, i34 = 0, i35 = 0, i36 = 0;
 HEAP32[i32 >> 2] = i31;
 i27 = i24 + 4 | 0;
 i28 = i24 + 8 | 0;
 i29 = i24 + 1 | 0;
 i11 = i25 + 4 | 0;
 i12 = (i30 & 512 | 0) == 0;
 i13 = i25 + 8 | 0;
 i14 = i25 + 1 | 0;
 i15 = i17 + 8 | 0;
 i16 = (i20 | 0) > 0;
 i8 = i21 + 4 | 0;
 i9 = i21 + 8 | 0;
 i10 = i21 + 1 | 0;
 i7 = 0;
 while (1) {
  if ((i7 | 0) == 4) break;
  L4 : do switch (HEAP8[i23 + i7 >> 0] | 0) {
  case 0:
   {
    HEAP32[i33 >> 2] = HEAP32[i32 >> 2];
    break;
   }
  case 1:
   {
    HEAP32[i33 >> 2] = HEAP32[i32 >> 2];
    i5 = FUNCTION_TABLE_iii[HEAP32[(HEAP32[i17 >> 2] | 0) + 28 >> 2] & 63](i17, 32) | 0;
    i6 = HEAP32[i32 >> 2] | 0;
    HEAP32[i32 >> 2] = i6 + 1;
    HEAP8[i6 >> 0] = i5;
    break;
   }
  case 3:
   {
    i6 = HEAP8[i24 >> 0] | 0;
    i2 = (i6 & 1) == 0;
    if ((i2 ? (i6 & 255) >>> 1 : HEAP32[i27 >> 2] | 0) | 0) {
     i5 = HEAP8[(i2 ? i29 : HEAP32[i28 >> 2] | 0) >> 0] | 0;
     i6 = HEAP32[i32 >> 2] | 0;
     HEAP32[i32 >> 2] = i6 + 1;
     HEAP8[i6 >> 0] = i5;
    }
    break;
   }
  case 2:
   {
    i3 = HEAP8[i25 >> 0] | 0;
    i2 = (i3 & 1) == 0;
    i3 = i2 ? (i3 & 255) >>> 1 : HEAP32[i11 >> 2] | 0;
    if (!(i12 | (i3 | 0) == 0)) {
     i6 = i2 ? i14 : HEAP32[i13 >> 2] | 0;
     i4 = i6 + i3 | 0;
     i2 = HEAP32[i32 >> 2] | 0;
     i3 = i6;
     while (1) {
      if ((i3 | 0) == (i4 | 0)) break;
      HEAP8[i2 >> 0] = HEAP8[i3 >> 0] | 0;
      i2 = i2 + 1 | 0;
      i3 = i3 + 1 | 0;
     }
     HEAP32[i32 >> 2] = i2;
    }
    break;
   }
  case 4:
   {
    i3 = HEAP32[i32 >> 2] | 0;
    i1 = i22 ? i1 + 1 | 0 : i1;
    i2 = i1;
    while (1) {
     if (i2 >>> 0 >= i18 >>> 0) break;
     i4 = HEAP8[i2 >> 0] | 0;
     if (i4 << 24 >> 24 <= -1) break;
     if (!(HEAP16[(HEAP32[i15 >> 2] | 0) + (i4 << 24 >> 24 << 1) >> 1] & 2048)) break;
     i2 = i2 + 1 | 0;
    }
    if (i16) {
     i5 = i20;
     while (1) {
      i4 = (i5 | 0) > 0;
      if (!(i2 >>> 0 > i1 >>> 0 & i4)) break;
      i6 = i2 + -1 | 0;
      i34 = HEAP8[i6 >> 0] | 0;
      i4 = HEAP32[i32 >> 2] | 0;
      HEAP32[i32 >> 2] = i4 + 1;
      HEAP8[i4 >> 0] = i34;
      i2 = i6;
      i5 = i5 + -1 | 0;
     }
     if (i4) i6 = FUNCTION_TABLE_iii[HEAP32[(HEAP32[i17 >> 2] | 0) + 28 >> 2] & 63](i17, 48) | 0; else i6 = 0;
     while (1) {
      i4 = HEAP32[i32 >> 2] | 0;
      HEAP32[i32 >> 2] = i4 + 1;
      if ((i5 | 0) <= 0) break;
      HEAP8[i4 >> 0] = i6;
      i5 = i5 + -1 | 0;
     }
     HEAP8[i4 >> 0] = i19;
    }
    L35 : do if ((i2 | 0) == (i1 | 0)) {
     i6 = FUNCTION_TABLE_iii[HEAP32[(HEAP32[i17 >> 2] | 0) + 28 >> 2] & 63](i17, 48) | 0;
     i34 = HEAP32[i32 >> 2] | 0;
     HEAP32[i32 >> 2] = i34 + 1;
     HEAP8[i34 >> 0] = i6;
    } else {
     i34 = HEAP8[i21 >> 0] | 0;
     i4 = (i34 & 1) == 0;
     if (!((i4 ? (i34 & 255) >>> 1 : HEAP32[i8 >> 2] | 0) | 0)) {
      i4 = -1;
      i5 = 0;
      i6 = 0;
     } else {
      i4 = HEAP8[(i4 ? i10 : HEAP32[i9 >> 2] | 0) >> 0] | 0;
      i5 = 0;
      i6 = 0;
     }
     while (1) {
      if ((i2 | 0) == (i1 | 0)) break L35;
      if ((i6 | 0) == (i4 | 0)) {
       i34 = HEAP32[i32 >> 2] | 0;
       HEAP32[i32 >> 2] = i34 + 1;
       HEAP8[i34 >> 0] = i26;
       i5 = i5 + 1 | 0;
       i34 = HEAP8[i21 >> 0] | 0;
       i4 = (i34 & 1) == 0;
       if (i5 >>> 0 < (i4 ? (i34 & 255) >>> 1 : HEAP32[i8 >> 2] | 0) >>> 0) {
        i4 = HEAP8[(i4 ? i10 : HEAP32[i9 >> 2] | 0) + i5 >> 0] | 0;
        i4 = i4 << 24 >> 24 == 127 ? -1 : i4 << 24 >> 24;
        i6 = 0;
       } else {
        i4 = i6;
        i6 = 0;
       }
      }
      i34 = i2 + -1 | 0;
      i36 = HEAP8[i34 >> 0] | 0;
      i35 = HEAP32[i32 >> 2] | 0;
      HEAP32[i32 >> 2] = i35 + 1;
      HEAP8[i35 >> 0] = i36;
      i2 = i34;
      i6 = i6 + 1 | 0;
     }
    } while (0);
    i2 = HEAP32[i32 >> 2] | 0;
    if ((i3 | 0) != (i2 | 0)) while (1) {
     i2 = i2 + -1 | 0;
     if (i3 >>> 0 >= i2 >>> 0) break L4;
     i36 = HEAP8[i3 >> 0] | 0;
     HEAP8[i3 >> 0] = HEAP8[i2 >> 0] | 0;
     HEAP8[i2 >> 0] = i36;
     i3 = i3 + 1 | 0;
    }
    break;
   }
  default:
   {}
  } while (0);
  i7 = i7 + 1 | 0;
 }
 i1 = HEAP8[i24 >> 0] | 0;
 i2 = (i1 & 1) == 0;
 i1 = i2 ? (i1 & 255) >>> 1 : HEAP32[i27 >> 2] | 0;
 if (i1 >>> 0 > 1) {
  i2 = i2 ? i29 : HEAP32[i28 >> 2] | 0;
  i3 = i2 + i1 | 0;
  i1 = HEAP32[i32 >> 2] | 0;
  while (1) {
   i2 = i2 + 1 | 0;
   if ((i2 | 0) == (i3 | 0)) break;
   HEAP8[i1 >> 0] = HEAP8[i2 >> 0] | 0;
   i1 = i1 + 1 | 0;
  }
  HEAP32[i32 >> 2] = i1;
 }
 switch (i30 & 176 | 0) {
 case 32:
  {
   HEAP32[i33 >> 2] = HEAP32[i32 >> 2];
   break;
  }
 case 16:
  break;
 default:
  HEAP32[i33 >> 2] = i31;
 }
 return;
}

function __ZNSt3__113__tree_removeIPNS_16__tree_node_baseIPvEEEEvT_S5_(i1, i11) {
 i1 = i1 | 0;
 i11 = i11 | 0;
 var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i12 = 0;
 i2 = HEAP32[i11 >> 2] | 0;
 do if (i2) if (HEAP32[i11 + 4 >> 2] | 0) {
  i3 = __ZNSt3__111__tree_nextIPNS_16__tree_node_baseIPvEEEET_S5_(i11) | 0;
  i2 = HEAP32[i3 >> 2] | 0;
  if (!i2) {
   i4 = i3;
   i6 = 6;
   break;
  } else {
   i5 = i3;
   i4 = i3;
   i6 = 8;
   break;
  }
 } else {
  i5 = i11;
  i4 = i11;
  i6 = 8;
  break;
 } else {
  i4 = i11;
  i3 = i11;
  i6 = 6;
 } while (0);
 if ((i6 | 0) == 6) {
  i2 = HEAP32[i3 + 4 >> 2] | 0;
  if (!i2) {
   i9 = i3 + 8 | 0;
   i10 = 0;
   i2 = 0;
   i8 = i4;
  } else {
   i5 = i3;
   i6 = 8;
  }
 }
 if ((i6 | 0) == 8) {
  i9 = i5 + 8 | 0;
  HEAP32[i2 + 8 >> 2] = HEAP32[i9 >> 2];
  i10 = 1;
  i3 = i5;
  i8 = i4;
 }
 i4 = HEAP32[i9 >> 2] | 0;
 i5 = HEAP32[i4 >> 2] | 0;
 if ((i5 | 0) == (i3 | 0)) {
  HEAP32[i4 >> 2] = i2;
  if ((i3 | 0) == (i1 | 0)) {
   i1 = i2;
   i5 = 0;
  } else i5 = HEAP32[i4 + 4 >> 2] | 0;
 } else HEAP32[i4 + 4 >> 2] = i2;
 i6 = i3 + 12 | 0;
 i7 = (HEAP8[i6 >> 0] | 0) != 0;
 if ((i3 | 0) != (i11 | 0)) {
  i12 = i11 + 8 | 0;
  i4 = HEAP32[i12 >> 2] | 0;
  HEAP32[i9 >> 2] = i4;
  if ((HEAP32[HEAP32[i12 >> 2] >> 2] | 0) == (i11 | 0)) HEAP32[i4 >> 2] = i3; else HEAP32[i4 + 4 >> 2] = i3;
  i4 = HEAP32[i11 >> 2] | 0;
  HEAP32[i8 >> 2] = i4;
  HEAP32[i4 + 8 >> 2] = i3;
  i4 = HEAP32[i11 + 4 >> 2] | 0;
  HEAP32[i3 + 4 >> 2] = i4;
  if (i4 | 0) HEAP32[i4 + 8 >> 2] = i3;
  HEAP8[i6 >> 0] = HEAP8[i11 + 12 >> 0] | 0;
  i1 = (i1 | 0) == (i11 | 0) ? i3 : i1;
 }
 do if (i7 & (i1 | 0) != 0) {
  if (i10) {
   HEAP8[i2 + 12 >> 0] = 1;
   break;
  }
  while (1) {
   i2 = HEAP32[i5 + 8 >> 2] | 0;
   i3 = i5 + 12 | 0;
   i4 = (HEAP8[i3 >> 0] | 0) != 0;
   if ((HEAP32[i2 >> 2] | 0) == (i5 | 0)) {
    if (i4) {
     i4 = i1;
     i1 = i5;
    } else {
     HEAP8[i3 >> 0] = 1;
     HEAP8[i2 + 12 >> 0] = 0;
     __ZNSt3__119__tree_right_rotateIPNS_16__tree_node_baseIPvEEEEvT_(i2);
     i12 = HEAP32[i5 + 4 >> 2] | 0;
     i4 = (i1 | 0) == (i12 | 0) ? i5 : i1;
     i1 = HEAP32[i12 >> 2] | 0;
    }
    i2 = HEAP32[i1 >> 2] | 0;
    i3 = (i2 | 0) == 0;
    if (!i3 ? (HEAP8[i2 + 12 >> 0] | 0) == 0 : 0) {
     i6 = 49;
     break;
    }
    i12 = HEAP32[i1 + 4 >> 2] | 0;
    if (i12 | 0 ? (HEAP8[i12 + 12 >> 0] | 0) == 0 : 0) {
     i6 = 48;
     break;
    }
    HEAP8[i1 + 12 >> 0] = 0;
    i2 = HEAP32[i1 + 8 >> 2] | 0;
    i1 = i2 + 12 | 0;
    if ((i2 | 0) == (i4 | 0) | (HEAP8[i1 >> 0] | 0) == 0) {
     i6 = 45;
     break;
    }
    i12 = HEAP32[i2 + 8 >> 2] | 0;
    i1 = i4;
    i2 = (HEAP32[i12 >> 2] | 0) == (i2 | 0) ? i12 + 4 | 0 : i12;
   } else {
    if (!i4) {
     HEAP8[i3 >> 0] = 1;
     HEAP8[i2 + 12 >> 0] = 0;
     __ZNSt3__118__tree_left_rotateIPNS_16__tree_node_baseIPvEEEEvT_(i2);
     i12 = HEAP32[i5 >> 2] | 0;
     i1 = (i1 | 0) == (i12 | 0) ? i5 : i1;
     i5 = HEAP32[i12 + 4 >> 2] | 0;
    }
    i3 = HEAP32[i5 >> 2] | 0;
    if (i3 | 0 ? (HEAP8[i3 + 12 >> 0] | 0) == 0 : 0) {
     i1 = i5;
     i6 = 34;
     break;
    }
    i2 = HEAP32[i5 + 4 >> 2] | 0;
    if (i2 | 0 ? (HEAP8[i2 + 12 >> 0] | 0) == 0 : 0) {
     i1 = i5;
     i6 = 35;
     break;
    }
    HEAP8[i5 + 12 >> 0] = 0;
    i2 = HEAP32[i5 + 8 >> 2] | 0;
    if ((i2 | 0) == (i1 | 0)) {
     i6 = 32;
     break;
    }
    if (!(HEAP8[i2 + 12 >> 0] | 0)) {
     i1 = i2;
     i6 = 32;
     break;
    }
    i12 = HEAP32[i2 + 8 >> 2] | 0;
    i2 = (HEAP32[i12 >> 2] | 0) == (i2 | 0) ? i12 + 4 | 0 : i12;
   }
   i5 = HEAP32[i2 >> 2] | 0;
  }
  if ((i6 | 0) == 32) {
   HEAP8[i1 + 12 >> 0] = 1;
   break;
  } else if ((i6 | 0) == 34) {
   i2 = HEAP32[i1 + 4 >> 2] | 0;
   if (!i2) i6 = 36; else i6 = 35;
  } else if ((i6 | 0) == 45) {
   HEAP8[i1 >> 0] = 1;
   break;
  } else if ((i6 | 0) == 48) if (i3) i6 = 50; else i6 = 49;
  if ((i6 | 0) == 35) if (!(HEAP8[i2 + 12 >> 0] | 0)) i6 = 37; else i6 = 36; else if ((i6 | 0) == 49) if (!(HEAP8[i2 + 12 >> 0] | 0)) i6 = 51; else i6 = 50;
  if ((i6 | 0) == 36) {
   HEAP8[i3 + 12 >> 0] = 1;
   HEAP8[i1 + 12 >> 0] = 0;
   __ZNSt3__119__tree_right_rotateIPNS_16__tree_node_baseIPvEEEEvT_(i1);
   i1 = HEAP32[i1 + 8 >> 2] | 0;
   i2 = HEAP32[i1 + 4 >> 2] | 0;
   i6 = 37;
  } else if ((i6 | 0) == 50) {
   HEAP8[(HEAP32[i1 + 4 >> 2] | 0) + 12 >> 0] = 1;
   HEAP8[i1 + 12 >> 0] = 0;
   __ZNSt3__118__tree_left_rotateIPNS_16__tree_node_baseIPvEEEEvT_(i1);
   i1 = HEAP32[i1 + 8 >> 2] | 0;
   i2 = HEAP32[i1 >> 2] | 0;
   i6 = 51;
  }
  if ((i6 | 0) == 37) {
   i12 = HEAP32[i1 + 8 >> 2] | 0;
   i11 = i12 + 12 | 0;
   HEAP8[i1 + 12 >> 0] = HEAP8[i11 >> 0] | 0;
   HEAP8[i11 >> 0] = 1;
   HEAP8[i2 + 12 >> 0] = 1;
   __ZNSt3__118__tree_left_rotateIPNS_16__tree_node_baseIPvEEEEvT_(i12);
   break;
  } else if ((i6 | 0) == 51) {
   i12 = HEAP32[i1 + 8 >> 2] | 0;
   i11 = i12 + 12 | 0;
   HEAP8[i1 + 12 >> 0] = HEAP8[i11 >> 0] | 0;
   HEAP8[i11 >> 0] = 1;
   HEAP8[i2 + 12 >> 0] = 1;
   __ZNSt3__119__tree_right_rotateIPNS_16__tree_node_baseIPvEEEEvT_(i12);
   break;
  }
 } while (0);
 return;
}

function __ZNSt3__114__scan_keywordINS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEPKNS_12basic_stringIwS3_NS_9allocatorIwEEEENS_5ctypeIwEEEET0_RT_SE_SD_SD_RKT1_Rjb(i16, i17, i1, i19, i15, i18, i14) {
 i16 = i16 | 0;
 i17 = i17 | 0;
 i1 = i1 | 0;
 i19 = i19 | 0;
 i15 = i15 | 0;
 i18 = i18 | 0;
 i14 = i14 | 0;
 var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i20 = 0, i21 = 0, i22 = 0;
 i22 = STACKTOP;
 STACKTOP = STACKTOP + 112 | 0;
 i3 = i22;
 i4 = (i19 - i1 | 0) / 12 | 0;
 if (i4 >>> 0 > 100) {
  i3 = _malloc(i4) | 0;
  if (!i3) __ZSt17__throw_bad_allocv(); else {
   i20 = i3;
   i2 = i3;
  }
 } else {
  i20 = 0;
  i2 = i3;
 }
 i7 = i1;
 i3 = 0;
 i6 = i2;
 while (1) {
  if ((i7 | 0) == (i19 | 0)) break;
  i5 = HEAP8[i7 >> 0] | 0;
  if (!(i5 & 1)) i5 = (i5 & 255) >>> 1; else i5 = HEAP32[i7 + 4 >> 2] | 0;
  if (!i5) {
   HEAP8[i6 >> 0] = 2;
   i3 = i3 + 1 | 0;
   i4 = i4 + -1 | 0;
  } else HEAP8[i6 >> 0] = 1;
  i7 = i7 + 12 | 0;
  i6 = i6 + 1 | 0;
 }
 i13 = 0;
 i10 = i3;
 i8 = i4;
 L17 : while (1) {
  i3 = HEAP32[i16 >> 2] | 0;
  do if (i3) {
   i4 = HEAP32[i3 + 12 >> 2] | 0;
   if ((i4 | 0) == (HEAP32[i3 + 16 >> 2] | 0)) i3 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i3 >> 2] | 0) + 36 >> 2] & 127](i3) | 0; else i3 = HEAP32[i4 >> 2] | 0;
   if ((i3 | 0) == -1) {
    HEAP32[i16 >> 2] = 0;
    i6 = 1;
    break;
   } else {
    i6 = (HEAP32[i16 >> 2] | 0) == 0;
    break;
   }
  } else i6 = 1; while (0);
  i5 = HEAP32[i17 >> 2] | 0;
  if (i5) {
   i3 = HEAP32[i5 + 12 >> 2] | 0;
   if ((i3 | 0) == (HEAP32[i5 + 16 >> 2] | 0)) i3 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i5 >> 2] | 0) + 36 >> 2] & 127](i5) | 0; else i3 = HEAP32[i3 >> 2] | 0;
   if ((i3 | 0) == -1) {
    HEAP32[i17 >> 2] = 0;
    i5 = 0;
    i3 = 1;
   } else i3 = 0;
  } else {
   i5 = 0;
   i3 = 1;
  }
  i4 = HEAP32[i16 >> 2] | 0;
  if (!((i8 | 0) != 0 & (i6 ^ i3))) break;
  i3 = HEAP32[i4 + 12 >> 2] | 0;
  if ((i3 | 0) == (HEAP32[i4 + 16 >> 2] | 0)) i3 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i4 >> 2] | 0) + 36 >> 2] & 127](i4) | 0; else i3 = HEAP32[i3 >> 2] | 0;
  if (!i14) i3 = FUNCTION_TABLE_iii[HEAP32[(HEAP32[i15 >> 2] | 0) + 28 >> 2] & 63](i15, i3) | 0;
  i12 = i13 + 1 | 0;
  i7 = 0;
  i9 = i1;
  i11 = i8;
  i8 = i2;
  while (1) {
   if ((i9 | 0) == (i19 | 0)) break;
   do if ((HEAP8[i8 >> 0] | 0) == 1) {
    if (!(HEAP8[i9 >> 0] & 1)) i4 = i9 + 4 | 0; else i4 = HEAP32[i9 + 8 >> 2] | 0;
    i4 = HEAP32[i4 + (i13 << 2) >> 2] | 0;
    if (!i14) i4 = FUNCTION_TABLE_iii[HEAP32[(HEAP32[i15 >> 2] | 0) + 28 >> 2] & 63](i15, i4) | 0;
    if ((i3 | 0) != (i4 | 0)) {
     HEAP8[i8 >> 0] = 0;
     i4 = i7;
     i5 = i10;
     i6 = i11 + -1 | 0;
     break;
    }
    i4 = HEAP8[i9 >> 0] | 0;
    if (!(i4 & 1)) i4 = (i4 & 255) >>> 1; else i4 = HEAP32[i9 + 4 >> 2] | 0;
    if ((i4 | 0) == (i12 | 0)) {
     HEAP8[i8 >> 0] = 2;
     i4 = 1;
     i5 = i10 + 1 | 0;
     i6 = i11 + -1 | 0;
    } else {
     i4 = 1;
     i5 = i10;
     i6 = i11;
    }
   } else {
    i4 = i7;
    i5 = i10;
    i6 = i11;
   } while (0);
   i7 = i4;
   i9 = i9 + 12 | 0;
   i10 = i5;
   i11 = i6;
   i8 = i8 + 1 | 0;
  }
  if (!i7) {
   i13 = i12;
   i8 = i11;
   continue;
  }
  i3 = HEAP32[i16 >> 2] | 0;
  i4 = i3 + 12 | 0;
  i5 = HEAP32[i4 >> 2] | 0;
  if ((i5 | 0) == (HEAP32[i3 + 16 >> 2] | 0)) FUNCTION_TABLE_ii[HEAP32[(HEAP32[i3 >> 2] | 0) + 40 >> 2] & 127](i3) | 0; else HEAP32[i4 >> 2] = i5 + 4;
  if ((i10 + i11 | 0) >>> 0 > 1) {
   i6 = i1;
   i3 = i10;
   i5 = i2;
  } else {
   i13 = i12;
   i8 = i11;
   continue;
  }
  while (1) {
   if ((i6 | 0) == (i19 | 0)) {
    i13 = i12;
    i10 = i3;
    i8 = i11;
    continue L17;
   }
   if ((HEAP8[i5 >> 0] | 0) == 2) {
    i4 = HEAP8[i6 >> 0] | 0;
    if (!(i4 & 1)) i4 = (i4 & 255) >>> 1; else i4 = HEAP32[i6 + 4 >> 2] | 0;
    if ((i4 | 0) != (i12 | 0)) {
     HEAP8[i5 >> 0] = 0;
     i3 = i3 + -1 | 0;
    }
   }
   i6 = i6 + 12 | 0;
   i5 = i5 + 1 | 0;
  }
 }
 do if (i4) {
  i3 = HEAP32[i4 + 12 >> 2] | 0;
  if ((i3 | 0) == (HEAP32[i4 + 16 >> 2] | 0)) i3 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i4 >> 2] | 0) + 36 >> 2] & 127](i4) | 0; else i3 = HEAP32[i3 >> 2] | 0;
  if ((i3 | 0) == -1) {
   HEAP32[i16 >> 2] = 0;
   i4 = 1;
   break;
  } else {
   i4 = (HEAP32[i16 >> 2] | 0) == 0;
   break;
  }
 } else i4 = 1; while (0);
 do if (i5) {
  i3 = HEAP32[i5 + 12 >> 2] | 0;
  if ((i3 | 0) == (HEAP32[i5 + 16 >> 2] | 0)) i3 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i5 >> 2] | 0) + 36 >> 2] & 127](i5) | 0; else i3 = HEAP32[i3 >> 2] | 0;
  if ((i3 | 0) != -1) if (i4) break; else {
   i21 = 77;
   break;
  } else {
   HEAP32[i17 >> 2] = 0;
   i21 = 41;
   break;
  }
 } else i21 = 41; while (0);
 if ((i21 | 0) == 41) if (i4) i21 = 77;
 if ((i21 | 0) == 77) HEAP32[i18 >> 2] = HEAP32[i18 >> 2] | 2;
 while (1) {
  if ((i1 | 0) == (i19 | 0)) {
   i21 = 81;
   break;
  }
  if ((HEAP8[i2 >> 0] | 0) == 2) break;
  i1 = i1 + 12 | 0;
  i2 = i2 + 1 | 0;
 }
 if ((i21 | 0) == 81) {
  HEAP32[i18 >> 2] = HEAP32[i18 >> 2] | 4;
  i1 = i19;
 }
 _free(i20);
 STACKTOP = i22;
 return i1 | 0;
}

function __ZN10__cxxabiv112_GLOBAL__N_18demangleINS0_2DbEEEvPKcS4_RT_Ri(i1, i10, i9, i11) {
 i1 = i1 | 0;
 i10 = i10 | 0;
 i9 = i9 | 0;
 i11 = i11 | 0;
 var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i12 = 0;
 i12 = STACKTOP;
 STACKTOP = STACKTOP + 48 | 0;
 i6 = i12 + 24 | 0;
 i7 = i12 + 12 | 0;
 i8 = i12;
 L1 : do if (i1 >>> 0 < i10 >>> 0) {
  L3 : do if ((HEAP8[i1 >> 0] | 0) != 95) {
   if ((__ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_(i1, i10, i9) | 0) != (i10 | 0)) {
    HEAP32[i11 >> 2] = -2;
    break L1;
   }
  } else {
   i3 = i10;
   if ((i3 - i1 | 0) <= 3) {
    HEAP32[i11 >> 2] = -2;
    break L1;
   }
   switch (HEAP8[i1 + 1 >> 0] | 0) {
   case 90:
    {
     i5 = i1 + 2 | 0;
     i1 = __ZN10__cxxabiv112_GLOBAL__N_114parse_encodingINS0_2DbEEEPKcS4_S4_RT_(i5, i10, i9) | 0;
     if (!((i1 | 0) == (i5 | 0) | (i1 | 0) == (i10 | 0)) ? (HEAP8[i1 >> 0] | 0) == 46 : 0) {
      i2 = HEAP32[i9 + 4 >> 2] | 0;
      if ((HEAP32[i9 >> 2] | 0) != (i2 | 0)) {
       i5 = i2 + -24 | 0;
       i3 = i3 - i1 | 0;
       if (i3 >>> 0 > 4294967279) __ZNKSt3__121__basic_string_commonILb1EE20__throw_length_errorEv(i8);
       if (i3 >>> 0 < 11) {
        HEAP8[i8 >> 0] = i3 << 1;
        i4 = i8 + 1 | 0;
       } else {
        i2 = i3 + 16 & -16;
        i4 = _malloc(i2) | 0;
        HEAP32[i8 + 8 >> 2] = i4;
        HEAP32[i8 >> 2] = i2 | 1;
        HEAP32[i8 + 4 >> 2] = i3;
       }
       i2 = i4;
       while (1) {
        if ((i1 | 0) == (i10 | 0)) break;
        HEAP8[i2 >> 0] = HEAP8[i1 >> 0] | 0;
        i1 = i1 + 1 | 0;
        i2 = i2 + 1 | 0;
       }
       HEAP8[i4 + i3 >> 0] = 0;
       i1 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc(i8, 0, 33671) | 0;
       HEAP32[i7 >> 2] = HEAP32[i1 >> 2];
       HEAP32[i7 + 4 >> 2] = HEAP32[i1 + 4 >> 2];
       HEAP32[i7 + 8 >> 2] = HEAP32[i1 + 8 >> 2];
       i2 = 0;
       while (1) {
        if ((i2 | 0) == 3) break;
        HEAP32[i1 + (i2 << 2) >> 2] = 0;
        i2 = i2 + 1 | 0;
       }
       i1 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc(i7, 33621) | 0;
       HEAP32[i6 >> 2] = HEAP32[i1 >> 2];
       HEAP32[i6 + 4 >> 2] = HEAP32[i1 + 4 >> 2];
       HEAP32[i6 + 8 >> 2] = HEAP32[i1 + 8 >> 2];
       i2 = 0;
       while (1) {
        if ((i2 | 0) == 3) break;
        HEAP32[i1 + (i2 << 2) >> 2] = 0;
        i2 = i2 + 1 | 0;
       }
       i1 = HEAP8[i6 >> 0] | 0;
       i4 = (i1 & 1) == 0;
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj(i5, i4 ? i6 + 1 | 0 : HEAP32[i6 + 8 >> 2] | 0, i4 ? (i1 & 255) >>> 1 : HEAP32[i6 + 4 >> 2] | 0) | 0;
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i6);
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i7);
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i8);
       i1 = i10;
      }
     }
     if ((i1 | 0) == (i10 | 0)) break L3;
     HEAP32[i11 >> 2] = -2;
     break L1;
    }
   case 95:
    {
     if ((HEAP8[i1 + 2 >> 0] | 0) == 95 ? (HEAP8[i1 + 3 >> 0] | 0) == 90 : 0) {
      i8 = i1 + 4 | 0;
      i1 = __ZN10__cxxabiv112_GLOBAL__N_114parse_encodingINS0_2DbEEEPKcS4_S4_RT_(i8, i10, i9) | 0;
      if ((i1 | 0) == (i8 | 0) | (i1 | 0) == (i10 | 0)) {
       HEAP32[i11 >> 2] = -2;
       break L1;
      }
      L43 : do if ((i3 - i1 | 0) > 12) {
       i3 = 0;
       i2 = i1;
       while (1) {
        if ((i3 | 0) >= 13) break;
        if ((HEAP8[i2 >> 0] | 0) != (HEAP8[35148 + i3 >> 0] | 0)) break L43;
        i3 = i3 + 1 | 0;
        i2 = i2 + 1 | 0;
       }
       L49 : do if ((i2 | 0) == (i10 | 0)) i2 = i10; else {
        if ((HEAP8[i2 >> 0] | 0) == 95) {
         i3 = i2 + 1 | 0;
         if ((i3 | 0) == (i10 | 0)) break L43;
         if (((HEAP8[i3 >> 0] | 0) + -48 | 0) >>> 0 >= 10) break L43;
         i2 = i2 + 2 | 0;
        }
        while (1) {
         if ((i2 | 0) == (i10 | 0)) {
          i2 = i10;
          break L49;
         }
         if (((HEAP8[i2 >> 0] | 0) + -48 | 0) >>> 0 >= 10) break L49;
         i2 = i2 + 1 | 0;
        }
       } while (0);
       i3 = HEAP32[i9 + 4 >> 2] | 0;
       if ((HEAP32[i9 >> 2] | 0) != (i3 | 0)) {
        __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc(i3 + -24 | 0, 0, 35162) | 0;
        i1 = i2;
       }
      } while (0);
      if ((i1 | 0) == (i10 | 0)) break L3;
      HEAP32[i11 >> 2] = -2;
      break L1;
     }
     break;
    }
   default:
    {}
   }
   HEAP32[i11 >> 2] = -2;
   break L1;
  } while (0);
  if ((HEAP32[i11 >> 2] | 0) == 0 ? (HEAP32[i9 >> 2] | 0) == (HEAP32[i9 + 4 >> 2] | 0) : 0) HEAP32[i11 >> 2] = -2;
 } else HEAP32[i11 >> 2] = -2; while (0);
 STACKTOP = i12;
 return;
}

function __ZNKSt3__17num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE17__do_get_unsignedIyEES4_S4_S4_RNS_8ios_baseERjRT_(i1, i21, i22, i2, i23, i17) {
 i1 = i1 | 0;
 i21 = i21 | 0;
 i22 = i22 | 0;
 i2 = i2 | 0;
 i23 = i23 | 0;
 i17 = i17 | 0;
 var i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i18 = 0, i19 = 0, i20 = 0, i24 = 0;
 i20 = STACKTOP;
 STACKTOP = STACKTOP + 304 | 0;
 i11 = i20 + 200 | 0;
 i3 = i20 + 196 | 0;
 i19 = i20 + 184 | 0;
 i18 = i20 + 172 | 0;
 i15 = i20 + 168 | 0;
 i16 = i20 + 8 | 0;
 i13 = i20 + 4 | 0;
 i12 = i20;
 switch (HEAP32[i2 + 4 >> 2] & 74 | 0) {
 case 64:
  {
   i14 = 8;
   break;
  }
 case 8:
  {
   i14 = 16;
   break;
  }
 case 0:
  {
   i14 = 0;
   break;
  }
 default:
  i14 = 10;
 }
 __ZNSt3__19__num_getIwE17__stage2_int_prepERNS_8ios_baseEPwRw(i19, i2, i11, i3);
 i1 = 0;
 while (1) {
  if ((i1 | 0) == 3) break;
  HEAP32[i18 + (i1 << 2) >> 2] = 0;
  i1 = i1 + 1 | 0;
 }
 if (!(HEAP8[i18 >> 0] & 1)) i1 = 10; else i1 = (HEAP32[i18 >> 2] & -2) + -1 | 0;
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6resizeEjc(i18, i1, 0);
 i8 = i18 + 8 | 0;
 i9 = i18 + 1 | 0;
 i2 = (HEAP8[i18 >> 0] & 1) == 0 ? i9 : HEAP32[i8 >> 2] | 0;
 HEAP32[i15 >> 2] = i2;
 HEAP32[i13 >> 2] = i16;
 HEAP32[i12 >> 2] = 0;
 i10 = i18 + 4 | 0;
 i7 = HEAP32[i3 >> 2] | 0;
 i3 = HEAP32[i21 >> 2] | 0;
 L13 : while (1) {
  if (i3) {
   i1 = HEAP32[i3 + 12 >> 2] | 0;
   if ((i1 | 0) == (HEAP32[i3 + 16 >> 2] | 0)) i1 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i3 >> 2] | 0) + 36 >> 2] & 127](i3) | 0; else i1 = HEAP32[i1 >> 2] | 0;
   if ((i1 | 0) == -1) {
    HEAP32[i21 >> 2] = 0;
    i3 = 0;
    i5 = 1;
   } else i5 = 0;
  } else {
   i3 = 0;
   i5 = 1;
  }
  i4 = HEAP32[i22 >> 2] | 0;
  do if (i4) {
   i1 = HEAP32[i4 + 12 >> 2] | 0;
   if ((i1 | 0) == (HEAP32[i4 + 16 >> 2] | 0)) i1 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i4 >> 2] | 0) + 36 >> 2] & 127](i4) | 0; else i1 = HEAP32[i1 >> 2] | 0;
   if ((i1 | 0) != -1) if (i5) {
    i6 = i4;
    break;
   } else break L13; else {
    HEAP32[i22 >> 2] = 0;
    i24 = 23;
    break;
   }
  } else i24 = 23; while (0);
  if ((i24 | 0) == 23) {
   i24 = 0;
   if (i5) {
    i4 = 0;
    break;
   } else i6 = 0;
  }
  i4 = HEAP8[i18 >> 0] | 0;
  i4 = (i4 & 1) == 0 ? (i4 & 255) >>> 1 : HEAP32[i10 >> 2] | 0;
  if ((HEAP32[i15 >> 2] | 0) == (i2 + i4 | 0)) {
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6resizeEjc(i18, i4 << 1, 0);
   if (!(HEAP8[i18 >> 0] & 1)) i1 = 10; else i1 = (HEAP32[i18 >> 2] & -2) + -1 | 0;
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6resizeEjc(i18, i1, 0);
   i2 = (HEAP8[i18 >> 0] & 1) == 0 ? i9 : HEAP32[i8 >> 2] | 0;
   HEAP32[i15 >> 2] = i2 + i4;
  }
  i4 = i3 + 12 | 0;
  i1 = HEAP32[i4 >> 2] | 0;
  i5 = i3 + 16 | 0;
  if ((i1 | 0) == (HEAP32[i5 >> 2] | 0)) i1 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i3 >> 2] | 0) + 36 >> 2] & 127](i3) | 0; else i1 = HEAP32[i1 >> 2] | 0;
  if (__ZNSt3__19__num_getIwE17__stage2_int_loopEwiPcRS2_RjwRKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEPjRSD_Pw(i1, i14, i2, i15, i12, i7, i19, i16, i13, i11) | 0) {
   i4 = i6;
   break;
  }
  i1 = HEAP32[i4 >> 2] | 0;
  if ((i1 | 0) == (HEAP32[i5 >> 2] | 0)) {
   FUNCTION_TABLE_ii[HEAP32[(HEAP32[i3 >> 2] | 0) + 40 >> 2] & 127](i3) | 0;
   continue;
  } else {
   HEAP32[i4 >> 2] = i1 + 4;
   continue;
  }
 }
 i11 = HEAP8[i19 >> 0] | 0;
 i1 = HEAP32[i13 >> 2] | 0;
 if ((((i11 & 1) == 0 ? (i11 & 255) >>> 1 : HEAP32[i19 + 4 >> 2] | 0) | 0) != 0 ? (i1 - i16 | 0) < 160 : 0) {
  i11 = HEAP32[i12 >> 2] | 0;
  i12 = i1 + 4 | 0;
  HEAP32[i13 >> 2] = i12;
  HEAP32[i1 >> 2] = i11;
  i1 = i12;
 }
 i15 = __ZNSt3__127__num_get_unsigned_integralIyEET_PKcS3_Rji(i2, HEAP32[i15 >> 2] | 0, i23, i14) | 0;
 HEAP32[i17 >> 2] = i15;
 HEAP32[i17 + 4 >> 2] = tempRet0;
 __ZNSt3__116__check_groupingERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEPjS8_Rj(i19, i16, i1, i23);
 if (i3) {
  i1 = HEAP32[i3 + 12 >> 2] | 0;
  if ((i1 | 0) == (HEAP32[i3 + 16 >> 2] | 0)) i1 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i3 >> 2] | 0) + 36 >> 2] & 127](i3) | 0; else i1 = HEAP32[i1 >> 2] | 0;
  if ((i1 | 0) == -1) {
   HEAP32[i21 >> 2] = 0;
   i2 = 1;
  } else i2 = 0;
 } else i2 = 1;
 do if (i4) {
  i1 = HEAP32[i4 + 12 >> 2] | 0;
  if ((i1 | 0) == (HEAP32[i4 + 16 >> 2] | 0)) i1 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i4 >> 2] | 0) + 36 >> 2] & 127](i4) | 0; else i1 = HEAP32[i1 >> 2] | 0;
  if ((i1 | 0) != -1) if (i2) break; else {
   i24 = 53;
   break;
  } else {
   HEAP32[i22 >> 2] = 0;
   i24 = 51;
   break;
  }
 } else i24 = 51; while (0);
 if ((i24 | 0) == 51 ? i2 : 0) i24 = 53;
 if ((i24 | 0) == 53) HEAP32[i23 >> 2] = HEAP32[i23 >> 2] | 2;
 i24 = HEAP32[i21 >> 2] | 0;
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i18);
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i19);
 STACKTOP = i20;
 return i24 | 0;
}

function __ZNKSt3__17num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE15__do_get_signedIxEES4_S4_S4_RNS_8ios_baseERjRT_(i1, i21, i22, i2, i23, i17) {
 i1 = i1 | 0;
 i21 = i21 | 0;
 i22 = i22 | 0;
 i2 = i2 | 0;
 i23 = i23 | 0;
 i17 = i17 | 0;
 var i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i18 = 0, i19 = 0, i20 = 0, i24 = 0;
 i20 = STACKTOP;
 STACKTOP = STACKTOP + 304 | 0;
 i11 = i20 + 200 | 0;
 i3 = i20 + 196 | 0;
 i19 = i20 + 184 | 0;
 i18 = i20 + 172 | 0;
 i15 = i20 + 168 | 0;
 i16 = i20 + 8 | 0;
 i13 = i20 + 4 | 0;
 i12 = i20;
 switch (HEAP32[i2 + 4 >> 2] & 74 | 0) {
 case 64:
  {
   i14 = 8;
   break;
  }
 case 8:
  {
   i14 = 16;
   break;
  }
 case 0:
  {
   i14 = 0;
   break;
  }
 default:
  i14 = 10;
 }
 __ZNSt3__19__num_getIwE17__stage2_int_prepERNS_8ios_baseEPwRw(i19, i2, i11, i3);
 i1 = 0;
 while (1) {
  if ((i1 | 0) == 3) break;
  HEAP32[i18 + (i1 << 2) >> 2] = 0;
  i1 = i1 + 1 | 0;
 }
 if (!(HEAP8[i18 >> 0] & 1)) i1 = 10; else i1 = (HEAP32[i18 >> 2] & -2) + -1 | 0;
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6resizeEjc(i18, i1, 0);
 i8 = i18 + 8 | 0;
 i9 = i18 + 1 | 0;
 i2 = (HEAP8[i18 >> 0] & 1) == 0 ? i9 : HEAP32[i8 >> 2] | 0;
 HEAP32[i15 >> 2] = i2;
 HEAP32[i13 >> 2] = i16;
 HEAP32[i12 >> 2] = 0;
 i10 = i18 + 4 | 0;
 i7 = HEAP32[i3 >> 2] | 0;
 i3 = HEAP32[i21 >> 2] | 0;
 L13 : while (1) {
  if (i3) {
   i1 = HEAP32[i3 + 12 >> 2] | 0;
   if ((i1 | 0) == (HEAP32[i3 + 16 >> 2] | 0)) i1 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i3 >> 2] | 0) + 36 >> 2] & 127](i3) | 0; else i1 = HEAP32[i1 >> 2] | 0;
   if ((i1 | 0) == -1) {
    HEAP32[i21 >> 2] = 0;
    i3 = 0;
    i5 = 1;
   } else i5 = 0;
  } else {
   i3 = 0;
   i5 = 1;
  }
  i4 = HEAP32[i22 >> 2] | 0;
  do if (i4) {
   i1 = HEAP32[i4 + 12 >> 2] | 0;
   if ((i1 | 0) == (HEAP32[i4 + 16 >> 2] | 0)) i1 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i4 >> 2] | 0) + 36 >> 2] & 127](i4) | 0; else i1 = HEAP32[i1 >> 2] | 0;
   if ((i1 | 0) != -1) if (i5) {
    i6 = i4;
    break;
   } else break L13; else {
    HEAP32[i22 >> 2] = 0;
    i24 = 23;
    break;
   }
  } else i24 = 23; while (0);
  if ((i24 | 0) == 23) {
   i24 = 0;
   if (i5) {
    i4 = 0;
    break;
   } else i6 = 0;
  }
  i4 = HEAP8[i18 >> 0] | 0;
  i4 = (i4 & 1) == 0 ? (i4 & 255) >>> 1 : HEAP32[i10 >> 2] | 0;
  if ((HEAP32[i15 >> 2] | 0) == (i2 + i4 | 0)) {
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6resizeEjc(i18, i4 << 1, 0);
   if (!(HEAP8[i18 >> 0] & 1)) i1 = 10; else i1 = (HEAP32[i18 >> 2] & -2) + -1 | 0;
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6resizeEjc(i18, i1, 0);
   i2 = (HEAP8[i18 >> 0] & 1) == 0 ? i9 : HEAP32[i8 >> 2] | 0;
   HEAP32[i15 >> 2] = i2 + i4;
  }
  i4 = i3 + 12 | 0;
  i1 = HEAP32[i4 >> 2] | 0;
  i5 = i3 + 16 | 0;
  if ((i1 | 0) == (HEAP32[i5 >> 2] | 0)) i1 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i3 >> 2] | 0) + 36 >> 2] & 127](i3) | 0; else i1 = HEAP32[i1 >> 2] | 0;
  if (__ZNSt3__19__num_getIwE17__stage2_int_loopEwiPcRS2_RjwRKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEPjRSD_Pw(i1, i14, i2, i15, i12, i7, i19, i16, i13, i11) | 0) {
   i4 = i6;
   break;
  }
  i1 = HEAP32[i4 >> 2] | 0;
  if ((i1 | 0) == (HEAP32[i5 >> 2] | 0)) {
   FUNCTION_TABLE_ii[HEAP32[(HEAP32[i3 >> 2] | 0) + 40 >> 2] & 127](i3) | 0;
   continue;
  } else {
   HEAP32[i4 >> 2] = i1 + 4;
   continue;
  }
 }
 i11 = HEAP8[i19 >> 0] | 0;
 i1 = HEAP32[i13 >> 2] | 0;
 if ((((i11 & 1) == 0 ? (i11 & 255) >>> 1 : HEAP32[i19 + 4 >> 2] | 0) | 0) != 0 ? (i1 - i16 | 0) < 160 : 0) {
  i11 = HEAP32[i12 >> 2] | 0;
  i12 = i1 + 4 | 0;
  HEAP32[i13 >> 2] = i12;
  HEAP32[i1 >> 2] = i11;
  i1 = i12;
 }
 i15 = __ZNSt3__125__num_get_signed_integralIxEET_PKcS3_Rji(i2, HEAP32[i15 >> 2] | 0, i23, i14) | 0;
 HEAP32[i17 >> 2] = i15;
 HEAP32[i17 + 4 >> 2] = tempRet0;
 __ZNSt3__116__check_groupingERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEPjS8_Rj(i19, i16, i1, i23);
 if (i3) {
  i1 = HEAP32[i3 + 12 >> 2] | 0;
  if ((i1 | 0) == (HEAP32[i3 + 16 >> 2] | 0)) i1 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i3 >> 2] | 0) + 36 >> 2] & 127](i3) | 0; else i1 = HEAP32[i1 >> 2] | 0;
  if ((i1 | 0) == -1) {
   HEAP32[i21 >> 2] = 0;
   i2 = 1;
  } else i2 = 0;
 } else i2 = 1;
 do if (i4) {
  i1 = HEAP32[i4 + 12 >> 2] | 0;
  if ((i1 | 0) == (HEAP32[i4 + 16 >> 2] | 0)) i1 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i4 >> 2] | 0) + 36 >> 2] & 127](i4) | 0; else i1 = HEAP32[i1 >> 2] | 0;
  if ((i1 | 0) != -1) if (i2) break; else {
   i24 = 53;
   break;
  } else {
   HEAP32[i22 >> 2] = 0;
   i24 = 51;
   break;
  }
 } else i24 = 51; while (0);
 if ((i24 | 0) == 51 ? i2 : 0) i24 = 53;
 if ((i24 | 0) == 53) HEAP32[i23 >> 2] = HEAP32[i23 >> 2] | 2;
 i24 = HEAP32[i21 >> 2] | 0;
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i18);
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i19);
 STACKTOP = i20;
 return i24 | 0;
}

function __ZNKSt3__17num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE17__do_get_unsignedItEES4_S4_S4_RNS_8ios_baseERjRT_(i1, i21, i22, i2, i23, i17) {
 i1 = i1 | 0;
 i21 = i21 | 0;
 i22 = i22 | 0;
 i2 = i2 | 0;
 i23 = i23 | 0;
 i17 = i17 | 0;
 var i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i18 = 0, i19 = 0, i20 = 0, i24 = 0;
 i20 = STACKTOP;
 STACKTOP = STACKTOP + 304 | 0;
 i11 = i20 + 200 | 0;
 i3 = i20 + 196 | 0;
 i19 = i20 + 184 | 0;
 i18 = i20 + 172 | 0;
 i15 = i20 + 168 | 0;
 i16 = i20 + 8 | 0;
 i13 = i20 + 4 | 0;
 i12 = i20;
 switch (HEAP32[i2 + 4 >> 2] & 74 | 0) {
 case 64:
  {
   i14 = 8;
   break;
  }
 case 8:
  {
   i14 = 16;
   break;
  }
 case 0:
  {
   i14 = 0;
   break;
  }
 default:
  i14 = 10;
 }
 __ZNSt3__19__num_getIwE17__stage2_int_prepERNS_8ios_baseEPwRw(i19, i2, i11, i3);
 i1 = 0;
 while (1) {
  if ((i1 | 0) == 3) break;
  HEAP32[i18 + (i1 << 2) >> 2] = 0;
  i1 = i1 + 1 | 0;
 }
 if (!(HEAP8[i18 >> 0] & 1)) i1 = 10; else i1 = (HEAP32[i18 >> 2] & -2) + -1 | 0;
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6resizeEjc(i18, i1, 0);
 i8 = i18 + 8 | 0;
 i9 = i18 + 1 | 0;
 i2 = (HEAP8[i18 >> 0] & 1) == 0 ? i9 : HEAP32[i8 >> 2] | 0;
 HEAP32[i15 >> 2] = i2;
 HEAP32[i13 >> 2] = i16;
 HEAP32[i12 >> 2] = 0;
 i10 = i18 + 4 | 0;
 i7 = HEAP32[i3 >> 2] | 0;
 i3 = HEAP32[i21 >> 2] | 0;
 L13 : while (1) {
  if (i3) {
   i1 = HEAP32[i3 + 12 >> 2] | 0;
   if ((i1 | 0) == (HEAP32[i3 + 16 >> 2] | 0)) i1 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i3 >> 2] | 0) + 36 >> 2] & 127](i3) | 0; else i1 = HEAP32[i1 >> 2] | 0;
   if ((i1 | 0) == -1) {
    HEAP32[i21 >> 2] = 0;
    i3 = 0;
    i5 = 1;
   } else i5 = 0;
  } else {
   i3 = 0;
   i5 = 1;
  }
  i4 = HEAP32[i22 >> 2] | 0;
  do if (i4) {
   i1 = HEAP32[i4 + 12 >> 2] | 0;
   if ((i1 | 0) == (HEAP32[i4 + 16 >> 2] | 0)) i1 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i4 >> 2] | 0) + 36 >> 2] & 127](i4) | 0; else i1 = HEAP32[i1 >> 2] | 0;
   if ((i1 | 0) != -1) if (i5) {
    i6 = i4;
    break;
   } else break L13; else {
    HEAP32[i22 >> 2] = 0;
    i24 = 23;
    break;
   }
  } else i24 = 23; while (0);
  if ((i24 | 0) == 23) {
   i24 = 0;
   if (i5) {
    i4 = 0;
    break;
   } else i6 = 0;
  }
  i4 = HEAP8[i18 >> 0] | 0;
  i4 = (i4 & 1) == 0 ? (i4 & 255) >>> 1 : HEAP32[i10 >> 2] | 0;
  if ((HEAP32[i15 >> 2] | 0) == (i2 + i4 | 0)) {
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6resizeEjc(i18, i4 << 1, 0);
   if (!(HEAP8[i18 >> 0] & 1)) i1 = 10; else i1 = (HEAP32[i18 >> 2] & -2) + -1 | 0;
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6resizeEjc(i18, i1, 0);
   i2 = (HEAP8[i18 >> 0] & 1) == 0 ? i9 : HEAP32[i8 >> 2] | 0;
   HEAP32[i15 >> 2] = i2 + i4;
  }
  i4 = i3 + 12 | 0;
  i1 = HEAP32[i4 >> 2] | 0;
  i5 = i3 + 16 | 0;
  if ((i1 | 0) == (HEAP32[i5 >> 2] | 0)) i1 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i3 >> 2] | 0) + 36 >> 2] & 127](i3) | 0; else i1 = HEAP32[i1 >> 2] | 0;
  if (__ZNSt3__19__num_getIwE17__stage2_int_loopEwiPcRS2_RjwRKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEPjRSD_Pw(i1, i14, i2, i15, i12, i7, i19, i16, i13, i11) | 0) {
   i4 = i6;
   break;
  }
  i1 = HEAP32[i4 >> 2] | 0;
  if ((i1 | 0) == (HEAP32[i5 >> 2] | 0)) {
   FUNCTION_TABLE_ii[HEAP32[(HEAP32[i3 >> 2] | 0) + 40 >> 2] & 127](i3) | 0;
   continue;
  } else {
   HEAP32[i4 >> 2] = i1 + 4;
   continue;
  }
 }
 i11 = HEAP8[i19 >> 0] | 0;
 i1 = HEAP32[i13 >> 2] | 0;
 if ((((i11 & 1) == 0 ? (i11 & 255) >>> 1 : HEAP32[i19 + 4 >> 2] | 0) | 0) != 0 ? (i1 - i16 | 0) < 160 : 0) {
  i11 = HEAP32[i12 >> 2] | 0;
  i12 = i1 + 4 | 0;
  HEAP32[i13 >> 2] = i12;
  HEAP32[i1 >> 2] = i11;
  i1 = i12;
 }
 i15 = __ZNSt3__127__num_get_unsigned_integralItEET_PKcS3_Rji(i2, HEAP32[i15 >> 2] | 0, i23, i14) | 0;
 HEAP16[i17 >> 1] = i15;
 __ZNSt3__116__check_groupingERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEPjS8_Rj(i19, i16, i1, i23);
 if (i3) {
  i1 = HEAP32[i3 + 12 >> 2] | 0;
  if ((i1 | 0) == (HEAP32[i3 + 16 >> 2] | 0)) i1 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i3 >> 2] | 0) + 36 >> 2] & 127](i3) | 0; else i1 = HEAP32[i1 >> 2] | 0;
  if ((i1 | 0) == -1) {
   HEAP32[i21 >> 2] = 0;
   i2 = 1;
  } else i2 = 0;
 } else i2 = 1;
 do if (i4) {
  i1 = HEAP32[i4 + 12 >> 2] | 0;
  if ((i1 | 0) == (HEAP32[i4 + 16 >> 2] | 0)) i1 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i4 >> 2] | 0) + 36 >> 2] & 127](i4) | 0; else i1 = HEAP32[i1 >> 2] | 0;
  if ((i1 | 0) != -1) if (i2) break; else {
   i24 = 53;
   break;
  } else {
   HEAP32[i22 >> 2] = 0;
   i24 = 51;
   break;
  }
 } else i24 = 51; while (0);
 if ((i24 | 0) == 51 ? i2 : 0) i24 = 53;
 if ((i24 | 0) == 53) HEAP32[i23 >> 2] = HEAP32[i23 >> 2] | 2;
 i24 = HEAP32[i21 >> 2] | 0;
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i18);
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i19);
 STACKTOP = i20;
 return i24 | 0;
}

function __ZNKSt3__17num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE17__do_get_unsignedImEES4_S4_S4_RNS_8ios_baseERjRT_(i1, i21, i22, i2, i23, i17) {
 i1 = i1 | 0;
 i21 = i21 | 0;
 i22 = i22 | 0;
 i2 = i2 | 0;
 i23 = i23 | 0;
 i17 = i17 | 0;
 var i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i18 = 0, i19 = 0, i20 = 0, i24 = 0;
 i20 = STACKTOP;
 STACKTOP = STACKTOP + 304 | 0;
 i11 = i20 + 200 | 0;
 i3 = i20 + 196 | 0;
 i19 = i20 + 184 | 0;
 i18 = i20 + 172 | 0;
 i15 = i20 + 168 | 0;
 i16 = i20 + 8 | 0;
 i13 = i20 + 4 | 0;
 i12 = i20;
 switch (HEAP32[i2 + 4 >> 2] & 74 | 0) {
 case 64:
  {
   i14 = 8;
   break;
  }
 case 8:
  {
   i14 = 16;
   break;
  }
 case 0:
  {
   i14 = 0;
   break;
  }
 default:
  i14 = 10;
 }
 __ZNSt3__19__num_getIwE17__stage2_int_prepERNS_8ios_baseEPwRw(i19, i2, i11, i3);
 i1 = 0;
 while (1) {
  if ((i1 | 0) == 3) break;
  HEAP32[i18 + (i1 << 2) >> 2] = 0;
  i1 = i1 + 1 | 0;
 }
 if (!(HEAP8[i18 >> 0] & 1)) i1 = 10; else i1 = (HEAP32[i18 >> 2] & -2) + -1 | 0;
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6resizeEjc(i18, i1, 0);
 i8 = i18 + 8 | 0;
 i9 = i18 + 1 | 0;
 i2 = (HEAP8[i18 >> 0] & 1) == 0 ? i9 : HEAP32[i8 >> 2] | 0;
 HEAP32[i15 >> 2] = i2;
 HEAP32[i13 >> 2] = i16;
 HEAP32[i12 >> 2] = 0;
 i10 = i18 + 4 | 0;
 i7 = HEAP32[i3 >> 2] | 0;
 i3 = HEAP32[i21 >> 2] | 0;
 L13 : while (1) {
  if (i3) {
   i1 = HEAP32[i3 + 12 >> 2] | 0;
   if ((i1 | 0) == (HEAP32[i3 + 16 >> 2] | 0)) i1 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i3 >> 2] | 0) + 36 >> 2] & 127](i3) | 0; else i1 = HEAP32[i1 >> 2] | 0;
   if ((i1 | 0) == -1) {
    HEAP32[i21 >> 2] = 0;
    i3 = 0;
    i5 = 1;
   } else i5 = 0;
  } else {
   i3 = 0;
   i5 = 1;
  }
  i4 = HEAP32[i22 >> 2] | 0;
  do if (i4) {
   i1 = HEAP32[i4 + 12 >> 2] | 0;
   if ((i1 | 0) == (HEAP32[i4 + 16 >> 2] | 0)) i1 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i4 >> 2] | 0) + 36 >> 2] & 127](i4) | 0; else i1 = HEAP32[i1 >> 2] | 0;
   if ((i1 | 0) != -1) if (i5) {
    i6 = i4;
    break;
   } else break L13; else {
    HEAP32[i22 >> 2] = 0;
    i24 = 23;
    break;
   }
  } else i24 = 23; while (0);
  if ((i24 | 0) == 23) {
   i24 = 0;
   if (i5) {
    i4 = 0;
    break;
   } else i6 = 0;
  }
  i4 = HEAP8[i18 >> 0] | 0;
  i4 = (i4 & 1) == 0 ? (i4 & 255) >>> 1 : HEAP32[i10 >> 2] | 0;
  if ((HEAP32[i15 >> 2] | 0) == (i2 + i4 | 0)) {
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6resizeEjc(i18, i4 << 1, 0);
   if (!(HEAP8[i18 >> 0] & 1)) i1 = 10; else i1 = (HEAP32[i18 >> 2] & -2) + -1 | 0;
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6resizeEjc(i18, i1, 0);
   i2 = (HEAP8[i18 >> 0] & 1) == 0 ? i9 : HEAP32[i8 >> 2] | 0;
   HEAP32[i15 >> 2] = i2 + i4;
  }
  i4 = i3 + 12 | 0;
  i1 = HEAP32[i4 >> 2] | 0;
  i5 = i3 + 16 | 0;
  if ((i1 | 0) == (HEAP32[i5 >> 2] | 0)) i1 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i3 >> 2] | 0) + 36 >> 2] & 127](i3) | 0; else i1 = HEAP32[i1 >> 2] | 0;
  if (__ZNSt3__19__num_getIwE17__stage2_int_loopEwiPcRS2_RjwRKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEPjRSD_Pw(i1, i14, i2, i15, i12, i7, i19, i16, i13, i11) | 0) {
   i4 = i6;
   break;
  }
  i1 = HEAP32[i4 >> 2] | 0;
  if ((i1 | 0) == (HEAP32[i5 >> 2] | 0)) {
   FUNCTION_TABLE_ii[HEAP32[(HEAP32[i3 >> 2] | 0) + 40 >> 2] & 127](i3) | 0;
   continue;
  } else {
   HEAP32[i4 >> 2] = i1 + 4;
   continue;
  }
 }
 i11 = HEAP8[i19 >> 0] | 0;
 i1 = HEAP32[i13 >> 2] | 0;
 if ((((i11 & 1) == 0 ? (i11 & 255) >>> 1 : HEAP32[i19 + 4 >> 2] | 0) | 0) != 0 ? (i1 - i16 | 0) < 160 : 0) {
  i11 = HEAP32[i12 >> 2] | 0;
  i12 = i1 + 4 | 0;
  HEAP32[i13 >> 2] = i12;
  HEAP32[i1 >> 2] = i11;
  i1 = i12;
 }
 i15 = __ZNSt3__127__num_get_unsigned_integralImEET_PKcS3_Rji(i2, HEAP32[i15 >> 2] | 0, i23, i14) | 0;
 HEAP32[i17 >> 2] = i15;
 __ZNSt3__116__check_groupingERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEPjS8_Rj(i19, i16, i1, i23);
 if (i3) {
  i1 = HEAP32[i3 + 12 >> 2] | 0;
  if ((i1 | 0) == (HEAP32[i3 + 16 >> 2] | 0)) i1 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i3 >> 2] | 0) + 36 >> 2] & 127](i3) | 0; else i1 = HEAP32[i1 >> 2] | 0;
  if ((i1 | 0) == -1) {
   HEAP32[i21 >> 2] = 0;
   i2 = 1;
  } else i2 = 0;
 } else i2 = 1;
 do if (i4) {
  i1 = HEAP32[i4 + 12 >> 2] | 0;
  if ((i1 | 0) == (HEAP32[i4 + 16 >> 2] | 0)) i1 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i4 >> 2] | 0) + 36 >> 2] & 127](i4) | 0; else i1 = HEAP32[i1 >> 2] | 0;
  if ((i1 | 0) != -1) if (i2) break; else {
   i24 = 53;
   break;
  } else {
   HEAP32[i22 >> 2] = 0;
   i24 = 51;
   break;
  }
 } else i24 = 51; while (0);
 if ((i24 | 0) == 51 ? i2 : 0) i24 = 53;
 if ((i24 | 0) == 53) HEAP32[i23 >> 2] = HEAP32[i23 >> 2] | 2;
 i24 = HEAP32[i21 >> 2] | 0;
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i18);
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i19);
 STACKTOP = i20;
 return i24 | 0;
}

function __ZNKSt3__17num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE17__do_get_unsignedIjEES4_S4_S4_RNS_8ios_baseERjRT_(i1, i21, i22, i2, i23, i17) {
 i1 = i1 | 0;
 i21 = i21 | 0;
 i22 = i22 | 0;
 i2 = i2 | 0;
 i23 = i23 | 0;
 i17 = i17 | 0;
 var i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i18 = 0, i19 = 0, i20 = 0, i24 = 0;
 i20 = STACKTOP;
 STACKTOP = STACKTOP + 304 | 0;
 i11 = i20 + 200 | 0;
 i3 = i20 + 196 | 0;
 i19 = i20 + 184 | 0;
 i18 = i20 + 172 | 0;
 i15 = i20 + 168 | 0;
 i16 = i20 + 8 | 0;
 i13 = i20 + 4 | 0;
 i12 = i20;
 switch (HEAP32[i2 + 4 >> 2] & 74 | 0) {
 case 64:
  {
   i14 = 8;
   break;
  }
 case 8:
  {
   i14 = 16;
   break;
  }
 case 0:
  {
   i14 = 0;
   break;
  }
 default:
  i14 = 10;
 }
 __ZNSt3__19__num_getIwE17__stage2_int_prepERNS_8ios_baseEPwRw(i19, i2, i11, i3);
 i1 = 0;
 while (1) {
  if ((i1 | 0) == 3) break;
  HEAP32[i18 + (i1 << 2) >> 2] = 0;
  i1 = i1 + 1 | 0;
 }
 if (!(HEAP8[i18 >> 0] & 1)) i1 = 10; else i1 = (HEAP32[i18 >> 2] & -2) + -1 | 0;
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6resizeEjc(i18, i1, 0);
 i8 = i18 + 8 | 0;
 i9 = i18 + 1 | 0;
 i2 = (HEAP8[i18 >> 0] & 1) == 0 ? i9 : HEAP32[i8 >> 2] | 0;
 HEAP32[i15 >> 2] = i2;
 HEAP32[i13 >> 2] = i16;
 HEAP32[i12 >> 2] = 0;
 i10 = i18 + 4 | 0;
 i7 = HEAP32[i3 >> 2] | 0;
 i3 = HEAP32[i21 >> 2] | 0;
 L13 : while (1) {
  if (i3) {
   i1 = HEAP32[i3 + 12 >> 2] | 0;
   if ((i1 | 0) == (HEAP32[i3 + 16 >> 2] | 0)) i1 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i3 >> 2] | 0) + 36 >> 2] & 127](i3) | 0; else i1 = HEAP32[i1 >> 2] | 0;
   if ((i1 | 0) == -1) {
    HEAP32[i21 >> 2] = 0;
    i3 = 0;
    i5 = 1;
   } else i5 = 0;
  } else {
   i3 = 0;
   i5 = 1;
  }
  i4 = HEAP32[i22 >> 2] | 0;
  do if (i4) {
   i1 = HEAP32[i4 + 12 >> 2] | 0;
   if ((i1 | 0) == (HEAP32[i4 + 16 >> 2] | 0)) i1 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i4 >> 2] | 0) + 36 >> 2] & 127](i4) | 0; else i1 = HEAP32[i1 >> 2] | 0;
   if ((i1 | 0) != -1) if (i5) {
    i6 = i4;
    break;
   } else break L13; else {
    HEAP32[i22 >> 2] = 0;
    i24 = 23;
    break;
   }
  } else i24 = 23; while (0);
  if ((i24 | 0) == 23) {
   i24 = 0;
   if (i5) {
    i4 = 0;
    break;
   } else i6 = 0;
  }
  i4 = HEAP8[i18 >> 0] | 0;
  i4 = (i4 & 1) == 0 ? (i4 & 255) >>> 1 : HEAP32[i10 >> 2] | 0;
  if ((HEAP32[i15 >> 2] | 0) == (i2 + i4 | 0)) {
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6resizeEjc(i18, i4 << 1, 0);
   if (!(HEAP8[i18 >> 0] & 1)) i1 = 10; else i1 = (HEAP32[i18 >> 2] & -2) + -1 | 0;
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6resizeEjc(i18, i1, 0);
   i2 = (HEAP8[i18 >> 0] & 1) == 0 ? i9 : HEAP32[i8 >> 2] | 0;
   HEAP32[i15 >> 2] = i2 + i4;
  }
  i4 = i3 + 12 | 0;
  i1 = HEAP32[i4 >> 2] | 0;
  i5 = i3 + 16 | 0;
  if ((i1 | 0) == (HEAP32[i5 >> 2] | 0)) i1 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i3 >> 2] | 0) + 36 >> 2] & 127](i3) | 0; else i1 = HEAP32[i1 >> 2] | 0;
  if (__ZNSt3__19__num_getIwE17__stage2_int_loopEwiPcRS2_RjwRKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEPjRSD_Pw(i1, i14, i2, i15, i12, i7, i19, i16, i13, i11) | 0) {
   i4 = i6;
   break;
  }
  i1 = HEAP32[i4 >> 2] | 0;
  if ((i1 | 0) == (HEAP32[i5 >> 2] | 0)) {
   FUNCTION_TABLE_ii[HEAP32[(HEAP32[i3 >> 2] | 0) + 40 >> 2] & 127](i3) | 0;
   continue;
  } else {
   HEAP32[i4 >> 2] = i1 + 4;
   continue;
  }
 }
 i11 = HEAP8[i19 >> 0] | 0;
 i1 = HEAP32[i13 >> 2] | 0;
 if ((((i11 & 1) == 0 ? (i11 & 255) >>> 1 : HEAP32[i19 + 4 >> 2] | 0) | 0) != 0 ? (i1 - i16 | 0) < 160 : 0) {
  i11 = HEAP32[i12 >> 2] | 0;
  i12 = i1 + 4 | 0;
  HEAP32[i13 >> 2] = i12;
  HEAP32[i1 >> 2] = i11;
  i1 = i12;
 }
 i15 = __ZNSt3__127__num_get_unsigned_integralIjEET_PKcS3_Rji(i2, HEAP32[i15 >> 2] | 0, i23, i14) | 0;
 HEAP32[i17 >> 2] = i15;
 __ZNSt3__116__check_groupingERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEPjS8_Rj(i19, i16, i1, i23);
 if (i3) {
  i1 = HEAP32[i3 + 12 >> 2] | 0;
  if ((i1 | 0) == (HEAP32[i3 + 16 >> 2] | 0)) i1 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i3 >> 2] | 0) + 36 >> 2] & 127](i3) | 0; else i1 = HEAP32[i1 >> 2] | 0;
  if ((i1 | 0) == -1) {
   HEAP32[i21 >> 2] = 0;
   i2 = 1;
  } else i2 = 0;
 } else i2 = 1;
 do if (i4) {
  i1 = HEAP32[i4 + 12 >> 2] | 0;
  if ((i1 | 0) == (HEAP32[i4 + 16 >> 2] | 0)) i1 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i4 >> 2] | 0) + 36 >> 2] & 127](i4) | 0; else i1 = HEAP32[i1 >> 2] | 0;
  if ((i1 | 0) != -1) if (i2) break; else {
   i24 = 53;
   break;
  } else {
   HEAP32[i22 >> 2] = 0;
   i24 = 51;
   break;
  }
 } else i24 = 51; while (0);
 if ((i24 | 0) == 51 ? i2 : 0) i24 = 53;
 if ((i24 | 0) == 53) HEAP32[i23 >> 2] = HEAP32[i23 >> 2] | 2;
 i24 = HEAP32[i21 >> 2] | 0;
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i18);
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i19);
 STACKTOP = i20;
 return i24 | 0;
}

function __ZNKSt3__17num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE15__do_get_signedIlEES4_S4_S4_RNS_8ios_baseERjRT_(i1, i21, i22, i2, i23, i17) {
 i1 = i1 | 0;
 i21 = i21 | 0;
 i22 = i22 | 0;
 i2 = i2 | 0;
 i23 = i23 | 0;
 i17 = i17 | 0;
 var i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i18 = 0, i19 = 0, i20 = 0, i24 = 0;
 i20 = STACKTOP;
 STACKTOP = STACKTOP + 304 | 0;
 i11 = i20 + 200 | 0;
 i3 = i20 + 196 | 0;
 i19 = i20 + 184 | 0;
 i18 = i20 + 172 | 0;
 i15 = i20 + 168 | 0;
 i16 = i20 + 8 | 0;
 i13 = i20 + 4 | 0;
 i12 = i20;
 switch (HEAP32[i2 + 4 >> 2] & 74 | 0) {
 case 64:
  {
   i14 = 8;
   break;
  }
 case 8:
  {
   i14 = 16;
   break;
  }
 case 0:
  {
   i14 = 0;
   break;
  }
 default:
  i14 = 10;
 }
 __ZNSt3__19__num_getIwE17__stage2_int_prepERNS_8ios_baseEPwRw(i19, i2, i11, i3);
 i1 = 0;
 while (1) {
  if ((i1 | 0) == 3) break;
  HEAP32[i18 + (i1 << 2) >> 2] = 0;
  i1 = i1 + 1 | 0;
 }
 if (!(HEAP8[i18 >> 0] & 1)) i1 = 10; else i1 = (HEAP32[i18 >> 2] & -2) + -1 | 0;
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6resizeEjc(i18, i1, 0);
 i8 = i18 + 8 | 0;
 i9 = i18 + 1 | 0;
 i2 = (HEAP8[i18 >> 0] & 1) == 0 ? i9 : HEAP32[i8 >> 2] | 0;
 HEAP32[i15 >> 2] = i2;
 HEAP32[i13 >> 2] = i16;
 HEAP32[i12 >> 2] = 0;
 i10 = i18 + 4 | 0;
 i7 = HEAP32[i3 >> 2] | 0;
 i3 = HEAP32[i21 >> 2] | 0;
 L13 : while (1) {
  if (i3) {
   i1 = HEAP32[i3 + 12 >> 2] | 0;
   if ((i1 | 0) == (HEAP32[i3 + 16 >> 2] | 0)) i1 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i3 >> 2] | 0) + 36 >> 2] & 127](i3) | 0; else i1 = HEAP32[i1 >> 2] | 0;
   if ((i1 | 0) == -1) {
    HEAP32[i21 >> 2] = 0;
    i3 = 0;
    i5 = 1;
   } else i5 = 0;
  } else {
   i3 = 0;
   i5 = 1;
  }
  i4 = HEAP32[i22 >> 2] | 0;
  do if (i4) {
   i1 = HEAP32[i4 + 12 >> 2] | 0;
   if ((i1 | 0) == (HEAP32[i4 + 16 >> 2] | 0)) i1 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i4 >> 2] | 0) + 36 >> 2] & 127](i4) | 0; else i1 = HEAP32[i1 >> 2] | 0;
   if ((i1 | 0) != -1) if (i5) {
    i6 = i4;
    break;
   } else break L13; else {
    HEAP32[i22 >> 2] = 0;
    i24 = 23;
    break;
   }
  } else i24 = 23; while (0);
  if ((i24 | 0) == 23) {
   i24 = 0;
   if (i5) {
    i4 = 0;
    break;
   } else i6 = 0;
  }
  i4 = HEAP8[i18 >> 0] | 0;
  i4 = (i4 & 1) == 0 ? (i4 & 255) >>> 1 : HEAP32[i10 >> 2] | 0;
  if ((HEAP32[i15 >> 2] | 0) == (i2 + i4 | 0)) {
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6resizeEjc(i18, i4 << 1, 0);
   if (!(HEAP8[i18 >> 0] & 1)) i1 = 10; else i1 = (HEAP32[i18 >> 2] & -2) + -1 | 0;
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6resizeEjc(i18, i1, 0);
   i2 = (HEAP8[i18 >> 0] & 1) == 0 ? i9 : HEAP32[i8 >> 2] | 0;
   HEAP32[i15 >> 2] = i2 + i4;
  }
  i4 = i3 + 12 | 0;
  i1 = HEAP32[i4 >> 2] | 0;
  i5 = i3 + 16 | 0;
  if ((i1 | 0) == (HEAP32[i5 >> 2] | 0)) i1 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i3 >> 2] | 0) + 36 >> 2] & 127](i3) | 0; else i1 = HEAP32[i1 >> 2] | 0;
  if (__ZNSt3__19__num_getIwE17__stage2_int_loopEwiPcRS2_RjwRKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEPjRSD_Pw(i1, i14, i2, i15, i12, i7, i19, i16, i13, i11) | 0) {
   i4 = i6;
   break;
  }
  i1 = HEAP32[i4 >> 2] | 0;
  if ((i1 | 0) == (HEAP32[i5 >> 2] | 0)) {
   FUNCTION_TABLE_ii[HEAP32[(HEAP32[i3 >> 2] | 0) + 40 >> 2] & 127](i3) | 0;
   continue;
  } else {
   HEAP32[i4 >> 2] = i1 + 4;
   continue;
  }
 }
 i11 = HEAP8[i19 >> 0] | 0;
 i1 = HEAP32[i13 >> 2] | 0;
 if ((((i11 & 1) == 0 ? (i11 & 255) >>> 1 : HEAP32[i19 + 4 >> 2] | 0) | 0) != 0 ? (i1 - i16 | 0) < 160 : 0) {
  i11 = HEAP32[i12 >> 2] | 0;
  i12 = i1 + 4 | 0;
  HEAP32[i13 >> 2] = i12;
  HEAP32[i1 >> 2] = i11;
  i1 = i12;
 }
 i15 = __ZNSt3__125__num_get_signed_integralIlEET_PKcS3_Rji(i2, HEAP32[i15 >> 2] | 0, i23, i14) | 0;
 HEAP32[i17 >> 2] = i15;
 __ZNSt3__116__check_groupingERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEPjS8_Rj(i19, i16, i1, i23);
 if (i3) {
  i1 = HEAP32[i3 + 12 >> 2] | 0;
  if ((i1 | 0) == (HEAP32[i3 + 16 >> 2] | 0)) i1 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i3 >> 2] | 0) + 36 >> 2] & 127](i3) | 0; else i1 = HEAP32[i1 >> 2] | 0;
  if ((i1 | 0) == -1) {
   HEAP32[i21 >> 2] = 0;
   i2 = 1;
  } else i2 = 0;
 } else i2 = 1;
 do if (i4) {
  i1 = HEAP32[i4 + 12 >> 2] | 0;
  if ((i1 | 0) == (HEAP32[i4 + 16 >> 2] | 0)) i1 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i4 >> 2] | 0) + 36 >> 2] & 127](i4) | 0; else i1 = HEAP32[i1 >> 2] | 0;
  if ((i1 | 0) != -1) if (i2) break; else {
   i24 = 53;
   break;
  } else {
   HEAP32[i22 >> 2] = 0;
   i24 = 51;
   break;
  }
 } else i24 = 51; while (0);
 if ((i24 | 0) == 51 ? i2 : 0) i24 = 53;
 if ((i24 | 0) == 53) HEAP32[i23 >> 2] = HEAP32[i23 >> 2] | 2;
 i24 = HEAP32[i21 >> 2] | 0;
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i18);
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i19);
 STACKTOP = i20;
 return i24 | 0;
}

function _try_realloc_chunk(i14, i13) {
 i14 = i14 | 0;
 i13 = i13 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0;
 i11 = i14 + 4 | 0;
 i12 = HEAP32[i11 >> 2] | 0;
 i1 = i12 & -8;
 i8 = i14 + i1 | 0;
 i6 = HEAP32[9192] | 0;
 i2 = i12 & 3;
 if (!((i2 | 0) != 1 & i14 >>> 0 >= i6 >>> 0 & i14 >>> 0 < i8 >>> 0)) _abort();
 i3 = HEAP32[i8 + 4 >> 2] | 0;
 if (!(i3 & 1)) _abort();
 if (!i2) {
  if (i13 >>> 0 < 256) {
   i14 = 0;
   return i14 | 0;
  }
  if (i1 >>> 0 >= (i13 + 4 | 0) >>> 0 ? (i1 - i13 | 0) >>> 0 <= HEAP32[9308] << 1 >>> 0 : 0) return i14 | 0;
  i14 = 0;
  return i14 | 0;
 }
 if (i1 >>> 0 >= i13 >>> 0) {
  i1 = i1 - i13 | 0;
  if (i1 >>> 0 <= 15) return i14 | 0;
  i10 = i14 + i13 | 0;
  HEAP32[i11 >> 2] = i12 & 1 | i13 | 2;
  HEAP32[i10 + 4 >> 2] = i1 | 3;
  i13 = i10 + i1 + 4 | 0;
  HEAP32[i13 >> 2] = HEAP32[i13 >> 2] | 1;
  _dispose_chunk(i10, i1);
  return i14 | 0;
 }
 if ((i8 | 0) == (HEAP32[9194] | 0)) {
  i1 = (HEAP32[9191] | 0) + i1 | 0;
  if (i1 >>> 0 <= i13 >>> 0) {
   i14 = 0;
   return i14 | 0;
  }
  i10 = i1 - i13 | 0;
  i9 = i14 + i13 | 0;
  HEAP32[i11 >> 2] = i12 & 1 | i13 | 2;
  HEAP32[i9 + 4 >> 2] = i10 | 1;
  HEAP32[9194] = i9;
  HEAP32[9191] = i10;
  return i14 | 0;
 }
 if ((i8 | 0) == (HEAP32[9193] | 0)) {
  i2 = (HEAP32[9190] | 0) + i1 | 0;
  if (i2 >>> 0 < i13 >>> 0) {
   i14 = 0;
   return i14 | 0;
  }
  i1 = i2 - i13 | 0;
  if (i1 >>> 0 > 15) {
   i2 = i14 + i13 | 0;
   i10 = i2 + i1 | 0;
   HEAP32[i11 >> 2] = i12 & 1 | i13 | 2;
   HEAP32[i2 + 4 >> 2] = i1 | 1;
   HEAP32[i10 >> 2] = i1;
   i13 = i10 + 4 | 0;
   HEAP32[i13 >> 2] = HEAP32[i13 >> 2] & -2;
  } else {
   HEAP32[i11 >> 2] = i12 & 1 | i2 | 2;
   i2 = i14 + i2 + 4 | 0;
   HEAP32[i2 >> 2] = HEAP32[i2 >> 2] | 1;
   i2 = 0;
   i1 = 0;
  }
  HEAP32[9190] = i1;
  HEAP32[9193] = i2;
  return i14 | 0;
 }
 if (i3 & 2 | 0) {
  i14 = 0;
  return i14 | 0;
 }
 i9 = (i3 & -8) + i1 | 0;
 if (i9 >>> 0 < i13 >>> 0) {
  i14 = 0;
  return i14 | 0;
 }
 i10 = i9 - i13 | 0;
 i4 = i3 >>> 3;
 do if (i3 >>> 0 >= 256) {
  i5 = HEAP32[i8 + 24 >> 2] | 0;
  i3 = HEAP32[i8 + 12 >> 2] | 0;
  do if ((i3 | 0) == (i8 | 0)) {
   i2 = i8 + 16 | 0;
   i3 = i2 + 4 | 0;
   i1 = HEAP32[i3 >> 2] | 0;
   if (!i1) {
    i1 = HEAP32[i2 >> 2] | 0;
    if (!i1) {
     i7 = 0;
     break;
    }
   } else i2 = i3;
   while (1) {
    i3 = i1 + 20 | 0;
    i4 = HEAP32[i3 >> 2] | 0;
    if (i4 | 0) {
     i1 = i4;
     i2 = i3;
     continue;
    }
    i3 = i1 + 16 | 0;
    i4 = HEAP32[i3 >> 2] | 0;
    if (!i4) break; else {
     i1 = i4;
     i2 = i3;
    }
   }
   if (i2 >>> 0 < i6 >>> 0) _abort(); else {
    HEAP32[i2 >> 2] = 0;
    i7 = i1;
    break;
   }
  } else {
   i4 = HEAP32[i8 + 8 >> 2] | 0;
   if (i4 >>> 0 < i6 >>> 0) _abort();
   i1 = i4 + 12 | 0;
   if ((HEAP32[i1 >> 2] | 0) != (i8 | 0)) _abort();
   i2 = i3 + 8 | 0;
   if ((HEAP32[i2 >> 2] | 0) == (i8 | 0)) {
    HEAP32[i1 >> 2] = i3;
    HEAP32[i2 >> 2] = i4;
    i7 = i3;
    break;
   } else _abort();
  } while (0);
  if (i5 | 0) {
   i1 = HEAP32[i8 + 28 >> 2] | 0;
   i2 = 37056 + (i1 << 2) | 0;
   if ((i8 | 0) == (HEAP32[i2 >> 2] | 0)) {
    HEAP32[i2 >> 2] = i7;
    if (!i7) {
     HEAP32[9189] = HEAP32[9189] & ~(1 << i1);
     break;
    }
   } else {
    if (i5 >>> 0 < (HEAP32[9192] | 0) >>> 0) _abort();
    i1 = i5 + 16 | 0;
    if ((HEAP32[i1 >> 2] | 0) == (i8 | 0)) HEAP32[i1 >> 2] = i7; else HEAP32[i5 + 20 >> 2] = i7;
    if (!i7) break;
   }
   i3 = HEAP32[9192] | 0;
   if (i7 >>> 0 < i3 >>> 0) _abort();
   HEAP32[i7 + 24 >> 2] = i5;
   i1 = i8 + 16 | 0;
   i2 = HEAP32[i1 >> 2] | 0;
   do if (i2 | 0) if (i2 >>> 0 < i3 >>> 0) _abort(); else {
    HEAP32[i7 + 16 >> 2] = i2;
    HEAP32[i2 + 24 >> 2] = i7;
    break;
   } while (0);
   i1 = HEAP32[i1 + 4 >> 2] | 0;
   if (i1 | 0) if (i1 >>> 0 < (HEAP32[9192] | 0) >>> 0) _abort(); else {
    HEAP32[i7 + 20 >> 2] = i1;
    HEAP32[i1 + 24 >> 2] = i7;
    break;
   }
  }
 } else {
  i2 = HEAP32[i8 + 8 >> 2] | 0;
  i3 = HEAP32[i8 + 12 >> 2] | 0;
  i1 = 36792 + (i4 << 1 << 2) | 0;
  if ((i2 | 0) != (i1 | 0)) {
   if (i2 >>> 0 < i6 >>> 0) _abort();
   if ((HEAP32[i2 + 12 >> 2] | 0) != (i8 | 0)) _abort();
  }
  if ((i3 | 0) == (i2 | 0)) {
   HEAP32[9188] = HEAP32[9188] & ~(1 << i4);
   break;
  }
  if ((i3 | 0) != (i1 | 0)) {
   if (i3 >>> 0 < i6 >>> 0) _abort();
   i1 = i3 + 8 | 0;
   if ((HEAP32[i1 >> 2] | 0) == (i8 | 0)) i5 = i1; else _abort();
  } else i5 = i3 + 8 | 0;
  HEAP32[i2 + 12 >> 2] = i3;
  HEAP32[i5 >> 2] = i2;
 } while (0);
 if (i10 >>> 0 < 16) {
  HEAP32[i11 >> 2] = i9 | i12 & 1 | 2;
  i13 = i14 + i9 + 4 | 0;
  HEAP32[i13 >> 2] = HEAP32[i13 >> 2] | 1;
  return i14 | 0;
 } else {
  i9 = i14 + i13 | 0;
  HEAP32[i11 >> 2] = i12 & 1 | i13 | 2;
  HEAP32[i9 + 4 >> 2] = i10 | 3;
  i13 = i9 + i10 + 4 | 0;
  HEAP32[i13 >> 2] = HEAP32[i13 >> 2] | 1;
  _dispose_chunk(i9, i10);
  return i14 | 0;
 }
 return 0;
}

function __ZZN4wasm14ModuleInstance12callFunctionEN6cashew7IStringERNSt3__16vectorINS_7LiteralENS3_9allocatorIS5_EEEEEN13FunctionScopeC2EPNS_8FunctionES9_(i9, i15, i14) {
 i9 = i9 | 0;
 i15 = i15 | 0;
 i14 = i14 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i16 = 0;
 i10 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i11 = i10 + 16 | 0;
 i1 = i10 + 12 | 0;
 i12 = i10 + 8 | 0;
 i6 = i10 + 4 | 0;
 i7 = i10;
 HEAP32[i9 + 4 >> 2] = 0;
 HEAP32[i9 + 8 >> 2] = 0;
 HEAP32[i9 >> 2] = i9 + 4;
 HEAP32[i9 + 12 >> 2] = i15;
 i13 = i15 + 8 | 0;
 i8 = i15 + 12 | 0;
 i5 = i14 + 4 | 0;
 if (((HEAP32[i8 >> 2] | 0) - (HEAP32[i13 >> 2] | 0) >> 2 | 0) != ((HEAP32[i5 >> 2] | 0) - (HEAP32[i14 >> 2] | 0) >> 4 | 0)) {
  i4 = __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(37420, 15945) | 0;
  HEAP32[i1 >> 2] = HEAP32[i15 >> 2];
  HEAP32[i11 >> 2] = HEAP32[i1 >> 2];
  i4 = __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(__ZN4wasmlsERNSt3__113basic_ostreamIcNS0_11char_traitsIcEEEENS_4NameE(i4, i11) | 0, 15956) | 0;
  i4 = __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(__ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEElsEj(i4, (HEAP32[i8 >> 2] | 0) - (HEAP32[i13 >> 2] | 0) >> 2) | 0, 15967) | 0;
  i4 = __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(__ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEElsEj(i4, (HEAP32[i5 >> 2] | 0) - (HEAP32[i14 >> 2] | 0) >> 4) | 0, 15985) | 0;
  i3 = __ZNKSt3__18ios_base6getlocEv(i4 + (HEAP32[(HEAP32[i4 >> 2] | 0) + -12 >> 2] | 0) | 0) | 0;
  HEAP32[i11 >> 2] = i3;
  i3 = __ZNKSt3__16locale9use_facetERNS0_2idE(i11, 38376) | 0;
  i3 = FUNCTION_TABLE_iii[HEAP32[(HEAP32[i3 >> 2] | 0) + 28 >> 2] & 63](i3, 10) | 0;
  __ZNSt3__16localeD2Ev(i11);
  __ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEE3putEc(i4, i3) | 0;
  __ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEE5flushEv(i4) | 0;
  _abort();
 }
 i1 = 0;
 while (1) {
  if (i1 >>> 0 >= (__ZN4wasm8Function12getNumLocalsEv(i15) | 0) >>> 0) {
   i2 = 5;
   break;
  }
  i16 = HEAP32[i14 >> 2] | 0;
  i3 = HEAP32[i13 >> 2] | 0;
  i2 = (HEAP32[i8 >> 2] | 0) - i3 >> 2 >>> 0 > i1 >>> 0;
  i4 = i16;
  if (i1 >>> 0 < (HEAP32[i5 >> 2] | 0) - i16 >> 4 >>> 0) {
   if (!i2) {
    i2 = 8;
    break;
   }
   if ((HEAP32[i3 + (i1 << 2) >> 2] | 0) != (HEAP32[i4 + (i1 << 4) >> 2] | 0)) {
    i2 = 10;
    break;
   }
   i16 = __ZN4wasm8Function12getLocalNameEj(i15, i1) | 0;
   HEAP32[i6 >> 2] = i16;
   i16 = __ZNSt3__13mapIN6cashew7IStringEN4wasm7LiteralENS_4lessIS2_EENS_9allocatorINS_4pairIKS2_S4_EEEEEixEOS2_(i9, i6) | 0;
   i4 = (HEAP32[i14 >> 2] | 0) + (i1 << 4) | 0;
   HEAP32[i16 >> 2] = HEAP32[i4 >> 2];
   HEAP32[i16 + 4 >> 2] = HEAP32[i4 + 4 >> 2];
   HEAP32[i16 + 8 >> 2] = HEAP32[i4 + 8 >> 2];
   HEAP32[i16 + 12 >> 2] = HEAP32[i4 + 12 >> 2];
  } else {
   if (i2) {
    i2 = 13;
    break;
   }
   i4 = __ZN4wasm8Function12getLocalTypeEj(i15, i1) | 0;
   i16 = __ZN4wasm8Function12getLocalNameEj(i15, i1) | 0;
   HEAP32[i7 >> 2] = i16;
   i16 = __ZNSt3__13mapIN6cashew7IStringEN4wasm7LiteralENS_4lessIS2_EENS_9allocatorINS_4pairIKS2_S4_EEEEEixEOS2_(i9, i7) | 0;
   HEAP32[i16 >> 2] = i4;
  }
  i1 = i1 + 1 | 0;
 }
 if ((i2 | 0) == 5) {
  STACKTOP = i10;
  return;
 } else if ((i2 | 0) == 8) ___assert_fail(15997, 15772, 161, 16018); else if ((i2 | 0) == 10) {
  i16 = __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(37420, 15945) | 0;
  HEAP32[i12 >> 2] = HEAP32[i15 >> 2];
  HEAP32[i11 >> 2] = HEAP32[i12 >> 2];
  i16 = __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(__ZN4wasmlsERNSt3__113basic_ostreamIcNS0_11char_traitsIcEEEENS_4NameE(i16, i11) | 0, 16032) | 0;
  i16 = __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(__ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEElsEj(__ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(__ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(i16, __ZN4wasm13printWasmTypeENS_8WasmTypeE(HEAP32[(HEAP32[i13 >> 2] | 0) + (i1 << 2) >> 2] | 0) | 0) | 0, 16048) | 0, i1) | 0, 16064) | 0;
  i16 = __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(__ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(i16, __ZN4wasm13printWasmTypeENS_8WasmTypeE(HEAP32[(HEAP32[i14 >> 2] | 0) + (i1 << 4) >> 2] | 0) | 0) | 0, 34660) | 0;
  i15 = __ZNKSt3__18ios_base6getlocEv(i16 + (HEAP32[(HEAP32[i16 >> 2] | 0) + -12 >> 2] | 0) | 0) | 0;
  HEAP32[i11 >> 2] = i15;
  i15 = __ZNKSt3__16locale9use_facetERNS0_2idE(i11, 38376) | 0;
  i15 = FUNCTION_TABLE_iii[HEAP32[(HEAP32[i15 >> 2] | 0) + 28 >> 2] & 63](i15, 10) | 0;
  __ZNSt3__16localeD2Ev(i11);
  __ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEE3putEc(i16, i15) | 0;
  __ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEE5flushEv(i16) | 0;
  _abort();
 } else if ((i2 | 0) == 13) ___assert_fail(16071, 15772, 171, 16018);
}

function __ZNKSt3__17num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE23__do_get_floating_pointIfEES4_S4_S4_RNS_8ios_baseERjRT_(i1, i23, i24, i2, i25, i19) {
 i1 = i1 | 0;
 i23 = i23 | 0;
 i24 = i24 | 0;
 i2 = i2 | 0;
 i25 = i25 | 0;
 i19 = i19 | 0;
 var i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, i18 = 0, i20 = 0, i21 = 0, i22 = 0, i26 = 0, d27 = 0.0;
 i22 = STACKTOP;
 STACKTOP = STACKTOP + 352 | 0;
 i12 = i22 + 208 | 0;
 i3 = i22 + 200 | 0;
 i4 = i22 + 196 | 0;
 i21 = i22 + 184 | 0;
 i20 = i22 + 172 | 0;
 i17 = i22 + 168 | 0;
 i18 = i22 + 8 | 0;
 i15 = i22 + 4 | 0;
 i14 = i22;
 i16 = i22 + 337 | 0;
 i13 = i22 + 336 | 0;
 __ZNSt3__19__num_getIwE19__stage2_float_prepERNS_8ios_baseEPwRwS5_(i21, i2, i12, i3, i4);
 i1 = 0;
 while (1) {
  if ((i1 | 0) == 3) break;
  HEAP32[i20 + (i1 << 2) >> 2] = 0;
  i1 = i1 + 1 | 0;
 }
 if (!(HEAP8[i20 >> 0] & 1)) i1 = 10; else i1 = (HEAP32[i20 >> 2] & -2) + -1 | 0;
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6resizeEjc(i20, i1, 0);
 i9 = i20 + 8 | 0;
 i10 = i20 + 1 | 0;
 i2 = (HEAP8[i20 >> 0] & 1) == 0 ? i10 : HEAP32[i9 >> 2] | 0;
 HEAP32[i17 >> 2] = i2;
 HEAP32[i15 >> 2] = i18;
 HEAP32[i14 >> 2] = 0;
 HEAP8[i16 >> 0] = 1;
 HEAP8[i13 >> 0] = 69;
 i11 = i20 + 4 | 0;
 i8 = HEAP32[i3 >> 2] | 0;
 i7 = HEAP32[i4 >> 2] | 0;
 i3 = HEAP32[i23 >> 2] | 0;
 L8 : while (1) {
  if (i3) {
   i1 = HEAP32[i3 + 12 >> 2] | 0;
   if ((i1 | 0) == (HEAP32[i3 + 16 >> 2] | 0)) i1 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i3 >> 2] | 0) + 36 >> 2] & 127](i3) | 0; else i1 = HEAP32[i1 >> 2] | 0;
   if ((i1 | 0) == -1) {
    HEAP32[i23 >> 2] = 0;
    i3 = 0;
    i5 = 1;
   } else i5 = 0;
  } else {
   i3 = 0;
   i5 = 1;
  }
  i4 = HEAP32[i24 >> 2] | 0;
  do if (i4) {
   i1 = HEAP32[i4 + 12 >> 2] | 0;
   if ((i1 | 0) == (HEAP32[i4 + 16 >> 2] | 0)) i1 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i4 >> 2] | 0) + 36 >> 2] & 127](i4) | 0; else i1 = HEAP32[i1 >> 2] | 0;
   if ((i1 | 0) != -1) if (i5) break; else break L8; else {
    HEAP32[i24 >> 2] = 0;
    i26 = 19;
    break;
   }
  } else i26 = 19; while (0);
  if ((i26 | 0) == 19) {
   i26 = 0;
   if (i5) {
    i4 = 0;
    break;
   } else i4 = 0;
  }
  i5 = HEAP8[i20 >> 0] | 0;
  i5 = (i5 & 1) == 0 ? (i5 & 255) >>> 1 : HEAP32[i11 >> 2] | 0;
  if ((HEAP32[i17 >> 2] | 0) == (i2 + i5 | 0)) {
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6resizeEjc(i20, i5 << 1, 0);
   if (!(HEAP8[i20 >> 0] & 1)) i1 = 10; else i1 = (HEAP32[i20 >> 2] & -2) + -1 | 0;
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6resizeEjc(i20, i1, 0);
   i2 = (HEAP8[i20 >> 0] & 1) == 0 ? i10 : HEAP32[i9 >> 2] | 0;
   HEAP32[i17 >> 2] = i2 + i5;
  }
  i5 = i3 + 12 | 0;
  i1 = HEAP32[i5 >> 2] | 0;
  i6 = i3 + 16 | 0;
  if ((i1 | 0) == (HEAP32[i6 >> 2] | 0)) i1 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i3 >> 2] | 0) + 36 >> 2] & 127](i3) | 0; else i1 = HEAP32[i1 >> 2] | 0;
  if (__ZNSt3__19__num_getIwE19__stage2_float_loopEwRbRcPcRS4_wwRKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEPjRSE_RjPw(i1, i16, i13, i2, i17, i8, i7, i21, i18, i15, i14, i12) | 0) break;
  i1 = HEAP32[i5 >> 2] | 0;
  if ((i1 | 0) == (HEAP32[i6 >> 2] | 0)) {
   FUNCTION_TABLE_ii[HEAP32[(HEAP32[i3 >> 2] | 0) + 40 >> 2] & 127](i3) | 0;
   continue;
  } else {
   HEAP32[i5 >> 2] = i1 + 4;
   continue;
  }
 }
 i13 = HEAP8[i21 >> 0] | 0;
 i1 = HEAP32[i15 >> 2] | 0;
 if (!((HEAP8[i16 >> 0] | 0) == 0 ? 1 : (((i13 & 1) == 0 ? (i13 & 255) >>> 1 : HEAP32[i21 + 4 >> 2] | 0) | 0) == 0) ? (i1 - i18 | 0) < 160 : 0) {
  i14 = HEAP32[i14 >> 2] | 0;
  i16 = i1 + 4 | 0;
  HEAP32[i15 >> 2] = i16;
  HEAP32[i1 >> 2] = i14;
  i1 = i16;
 }
 d27 = +__ZNSt3__115__num_get_floatIfEET_PKcS3_Rj(i2, HEAP32[i17 >> 2] | 0, i25);
 HEAPF32[i19 >> 2] = d27;
 __ZNSt3__116__check_groupingERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEPjS8_Rj(i21, i18, i1, i25);
 if (i3) {
  i1 = HEAP32[i3 + 12 >> 2] | 0;
  if ((i1 | 0) == (HEAP32[i3 + 16 >> 2] | 0)) i1 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i3 >> 2] | 0) + 36 >> 2] & 127](i3) | 0; else i1 = HEAP32[i1 >> 2] | 0;
  if ((i1 | 0) == -1) {
   HEAP32[i23 >> 2] = 0;
   i2 = 1;
  } else i2 = 0;
 } else i2 = 1;
 do if (i4) {
  i1 = HEAP32[i4 + 12 >> 2] | 0;
  if ((i1 | 0) == (HEAP32[i4 + 16 >> 2] | 0)) i1 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i4 >> 2] | 0) + 36 >> 2] & 127](i4) | 0; else i1 = HEAP32[i1 >> 2] | 0;
  if ((i1 | 0) != -1) if (i2) break; else {
   i26 = 49;
   break;
  } else {
   HEAP32[i24 >> 2] = 0;
   i26 = 47;
   break;
  }
 } else i26 = 47; while (0);
 if ((i26 | 0) == 47 ? i2 : 0) i26 = 49;
 if ((i26 | 0) == 49) HEAP32[i25 >> 2] = HEAP32[i25 >> 2] | 2;
 i26 = HEAP32[i23 >> 2] | 0;
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i20);
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i21);
 STACKTOP = i22;
 return i26 | 0;
}

function __ZNKSt3__17num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE23__do_get_floating_pointIeEES4_S4_S4_RNS_8ios_baseERjRT_(i1, i23, i24, i2, i25, i19) {
 i1 = i1 | 0;
 i23 = i23 | 0;
 i24 = i24 | 0;
 i2 = i2 | 0;
 i25 = i25 | 0;
 i19 = i19 | 0;
 var i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, i18 = 0, i20 = 0, i21 = 0, i22 = 0, i26 = 0, d27 = 0.0;
 i22 = STACKTOP;
 STACKTOP = STACKTOP + 352 | 0;
 i12 = i22 + 208 | 0;
 i3 = i22 + 200 | 0;
 i4 = i22 + 196 | 0;
 i21 = i22 + 184 | 0;
 i20 = i22 + 172 | 0;
 i17 = i22 + 168 | 0;
 i18 = i22 + 8 | 0;
 i15 = i22 + 4 | 0;
 i14 = i22;
 i16 = i22 + 337 | 0;
 i13 = i22 + 336 | 0;
 __ZNSt3__19__num_getIwE19__stage2_float_prepERNS_8ios_baseEPwRwS5_(i21, i2, i12, i3, i4);
 i1 = 0;
 while (1) {
  if ((i1 | 0) == 3) break;
  HEAP32[i20 + (i1 << 2) >> 2] = 0;
  i1 = i1 + 1 | 0;
 }
 if (!(HEAP8[i20 >> 0] & 1)) i1 = 10; else i1 = (HEAP32[i20 >> 2] & -2) + -1 | 0;
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6resizeEjc(i20, i1, 0);
 i9 = i20 + 8 | 0;
 i10 = i20 + 1 | 0;
 i2 = (HEAP8[i20 >> 0] & 1) == 0 ? i10 : HEAP32[i9 >> 2] | 0;
 HEAP32[i17 >> 2] = i2;
 HEAP32[i15 >> 2] = i18;
 HEAP32[i14 >> 2] = 0;
 HEAP8[i16 >> 0] = 1;
 HEAP8[i13 >> 0] = 69;
 i11 = i20 + 4 | 0;
 i8 = HEAP32[i3 >> 2] | 0;
 i7 = HEAP32[i4 >> 2] | 0;
 i3 = HEAP32[i23 >> 2] | 0;
 L8 : while (1) {
  if (i3) {
   i1 = HEAP32[i3 + 12 >> 2] | 0;
   if ((i1 | 0) == (HEAP32[i3 + 16 >> 2] | 0)) i1 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i3 >> 2] | 0) + 36 >> 2] & 127](i3) | 0; else i1 = HEAP32[i1 >> 2] | 0;
   if ((i1 | 0) == -1) {
    HEAP32[i23 >> 2] = 0;
    i3 = 0;
    i5 = 1;
   } else i5 = 0;
  } else {
   i3 = 0;
   i5 = 1;
  }
  i4 = HEAP32[i24 >> 2] | 0;
  do if (i4) {
   i1 = HEAP32[i4 + 12 >> 2] | 0;
   if ((i1 | 0) == (HEAP32[i4 + 16 >> 2] | 0)) i1 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i4 >> 2] | 0) + 36 >> 2] & 127](i4) | 0; else i1 = HEAP32[i1 >> 2] | 0;
   if ((i1 | 0) != -1) if (i5) break; else break L8; else {
    HEAP32[i24 >> 2] = 0;
    i26 = 19;
    break;
   }
  } else i26 = 19; while (0);
  if ((i26 | 0) == 19) {
   i26 = 0;
   if (i5) {
    i4 = 0;
    break;
   } else i4 = 0;
  }
  i5 = HEAP8[i20 >> 0] | 0;
  i5 = (i5 & 1) == 0 ? (i5 & 255) >>> 1 : HEAP32[i11 >> 2] | 0;
  if ((HEAP32[i17 >> 2] | 0) == (i2 + i5 | 0)) {
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6resizeEjc(i20, i5 << 1, 0);
   if (!(HEAP8[i20 >> 0] & 1)) i1 = 10; else i1 = (HEAP32[i20 >> 2] & -2) + -1 | 0;
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6resizeEjc(i20, i1, 0);
   i2 = (HEAP8[i20 >> 0] & 1) == 0 ? i10 : HEAP32[i9 >> 2] | 0;
   HEAP32[i17 >> 2] = i2 + i5;
  }
  i5 = i3 + 12 | 0;
  i1 = HEAP32[i5 >> 2] | 0;
  i6 = i3 + 16 | 0;
  if ((i1 | 0) == (HEAP32[i6 >> 2] | 0)) i1 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i3 >> 2] | 0) + 36 >> 2] & 127](i3) | 0; else i1 = HEAP32[i1 >> 2] | 0;
  if (__ZNSt3__19__num_getIwE19__stage2_float_loopEwRbRcPcRS4_wwRKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEPjRSE_RjPw(i1, i16, i13, i2, i17, i8, i7, i21, i18, i15, i14, i12) | 0) break;
  i1 = HEAP32[i5 >> 2] | 0;
  if ((i1 | 0) == (HEAP32[i6 >> 2] | 0)) {
   FUNCTION_TABLE_ii[HEAP32[(HEAP32[i3 >> 2] | 0) + 40 >> 2] & 127](i3) | 0;
   continue;
  } else {
   HEAP32[i5 >> 2] = i1 + 4;
   continue;
  }
 }
 i13 = HEAP8[i21 >> 0] | 0;
 i1 = HEAP32[i15 >> 2] | 0;
 if (!((HEAP8[i16 >> 0] | 0) == 0 ? 1 : (((i13 & 1) == 0 ? (i13 & 255) >>> 1 : HEAP32[i21 + 4 >> 2] | 0) | 0) == 0) ? (i1 - i18 | 0) < 160 : 0) {
  i14 = HEAP32[i14 >> 2] | 0;
  i16 = i1 + 4 | 0;
  HEAP32[i15 >> 2] = i16;
  HEAP32[i1 >> 2] = i14;
  i1 = i16;
 }
 d27 = +__ZNSt3__115__num_get_floatIeEET_PKcS3_Rj(i2, HEAP32[i17 >> 2] | 0, i25);
 HEAPF64[i19 >> 3] = d27;
 __ZNSt3__116__check_groupingERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEPjS8_Rj(i21, i18, i1, i25);
 if (i3) {
  i1 = HEAP32[i3 + 12 >> 2] | 0;
  if ((i1 | 0) == (HEAP32[i3 + 16 >> 2] | 0)) i1 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i3 >> 2] | 0) + 36 >> 2] & 127](i3) | 0; else i1 = HEAP32[i1 >> 2] | 0;
  if ((i1 | 0) == -1) {
   HEAP32[i23 >> 2] = 0;
   i2 = 1;
  } else i2 = 0;
 } else i2 = 1;
 do if (i4) {
  i1 = HEAP32[i4 + 12 >> 2] | 0;
  if ((i1 | 0) == (HEAP32[i4 + 16 >> 2] | 0)) i1 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i4 >> 2] | 0) + 36 >> 2] & 127](i4) | 0; else i1 = HEAP32[i1 >> 2] | 0;
  if ((i1 | 0) != -1) if (i2) break; else {
   i26 = 49;
   break;
  } else {
   HEAP32[i24 >> 2] = 0;
   i26 = 47;
   break;
  }
 } else i26 = 47; while (0);
 if ((i26 | 0) == 47 ? i2 : 0) i26 = 49;
 if ((i26 | 0) == 49) HEAP32[i25 >> 2] = HEAP32[i25 >> 2] | 2;
 i26 = HEAP32[i23 >> 2] | 0;
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i20);
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i21);
 STACKTOP = i22;
 return i26 | 0;
}

function __ZNKSt3__17num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE23__do_get_floating_pointIdEES4_S4_S4_RNS_8ios_baseERjRT_(i1, i23, i24, i2, i25, i19) {
 i1 = i1 | 0;
 i23 = i23 | 0;
 i24 = i24 | 0;
 i2 = i2 | 0;
 i25 = i25 | 0;
 i19 = i19 | 0;
 var i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, i18 = 0, i20 = 0, i21 = 0, i22 = 0, i26 = 0, d27 = 0.0;
 i22 = STACKTOP;
 STACKTOP = STACKTOP + 352 | 0;
 i12 = i22 + 208 | 0;
 i3 = i22 + 200 | 0;
 i4 = i22 + 196 | 0;
 i21 = i22 + 184 | 0;
 i20 = i22 + 172 | 0;
 i17 = i22 + 168 | 0;
 i18 = i22 + 8 | 0;
 i15 = i22 + 4 | 0;
 i14 = i22;
 i16 = i22 + 337 | 0;
 i13 = i22 + 336 | 0;
 __ZNSt3__19__num_getIwE19__stage2_float_prepERNS_8ios_baseEPwRwS5_(i21, i2, i12, i3, i4);
 i1 = 0;
 while (1) {
  if ((i1 | 0) == 3) break;
  HEAP32[i20 + (i1 << 2) >> 2] = 0;
  i1 = i1 + 1 | 0;
 }
 if (!(HEAP8[i20 >> 0] & 1)) i1 = 10; else i1 = (HEAP32[i20 >> 2] & -2) + -1 | 0;
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6resizeEjc(i20, i1, 0);
 i9 = i20 + 8 | 0;
 i10 = i20 + 1 | 0;
 i2 = (HEAP8[i20 >> 0] & 1) == 0 ? i10 : HEAP32[i9 >> 2] | 0;
 HEAP32[i17 >> 2] = i2;
 HEAP32[i15 >> 2] = i18;
 HEAP32[i14 >> 2] = 0;
 HEAP8[i16 >> 0] = 1;
 HEAP8[i13 >> 0] = 69;
 i11 = i20 + 4 | 0;
 i8 = HEAP32[i3 >> 2] | 0;
 i7 = HEAP32[i4 >> 2] | 0;
 i3 = HEAP32[i23 >> 2] | 0;
 L8 : while (1) {
  if (i3) {
   i1 = HEAP32[i3 + 12 >> 2] | 0;
   if ((i1 | 0) == (HEAP32[i3 + 16 >> 2] | 0)) i1 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i3 >> 2] | 0) + 36 >> 2] & 127](i3) | 0; else i1 = HEAP32[i1 >> 2] | 0;
   if ((i1 | 0) == -1) {
    HEAP32[i23 >> 2] = 0;
    i3 = 0;
    i5 = 1;
   } else i5 = 0;
  } else {
   i3 = 0;
   i5 = 1;
  }
  i4 = HEAP32[i24 >> 2] | 0;
  do if (i4) {
   i1 = HEAP32[i4 + 12 >> 2] | 0;
   if ((i1 | 0) == (HEAP32[i4 + 16 >> 2] | 0)) i1 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i4 >> 2] | 0) + 36 >> 2] & 127](i4) | 0; else i1 = HEAP32[i1 >> 2] | 0;
   if ((i1 | 0) != -1) if (i5) break; else break L8; else {
    HEAP32[i24 >> 2] = 0;
    i26 = 19;
    break;
   }
  } else i26 = 19; while (0);
  if ((i26 | 0) == 19) {
   i26 = 0;
   if (i5) {
    i4 = 0;
    break;
   } else i4 = 0;
  }
  i5 = HEAP8[i20 >> 0] | 0;
  i5 = (i5 & 1) == 0 ? (i5 & 255) >>> 1 : HEAP32[i11 >> 2] | 0;
  if ((HEAP32[i17 >> 2] | 0) == (i2 + i5 | 0)) {
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6resizeEjc(i20, i5 << 1, 0);
   if (!(HEAP8[i20 >> 0] & 1)) i1 = 10; else i1 = (HEAP32[i20 >> 2] & -2) + -1 | 0;
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6resizeEjc(i20, i1, 0);
   i2 = (HEAP8[i20 >> 0] & 1) == 0 ? i10 : HEAP32[i9 >> 2] | 0;
   HEAP32[i17 >> 2] = i2 + i5;
  }
  i5 = i3 + 12 | 0;
  i1 = HEAP32[i5 >> 2] | 0;
  i6 = i3 + 16 | 0;
  if ((i1 | 0) == (HEAP32[i6 >> 2] | 0)) i1 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i3 >> 2] | 0) + 36 >> 2] & 127](i3) | 0; else i1 = HEAP32[i1 >> 2] | 0;
  if (__ZNSt3__19__num_getIwE19__stage2_float_loopEwRbRcPcRS4_wwRKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEPjRSE_RjPw(i1, i16, i13, i2, i17, i8, i7, i21, i18, i15, i14, i12) | 0) break;
  i1 = HEAP32[i5 >> 2] | 0;
  if ((i1 | 0) == (HEAP32[i6 >> 2] | 0)) {
   FUNCTION_TABLE_ii[HEAP32[(HEAP32[i3 >> 2] | 0) + 40 >> 2] & 127](i3) | 0;
   continue;
  } else {
   HEAP32[i5 >> 2] = i1 + 4;
   continue;
  }
 }
 i13 = HEAP8[i21 >> 0] | 0;
 i1 = HEAP32[i15 >> 2] | 0;
 if (!((HEAP8[i16 >> 0] | 0) == 0 ? 1 : (((i13 & 1) == 0 ? (i13 & 255) >>> 1 : HEAP32[i21 + 4 >> 2] | 0) | 0) == 0) ? (i1 - i18 | 0) < 160 : 0) {
  i14 = HEAP32[i14 >> 2] | 0;
  i16 = i1 + 4 | 0;
  HEAP32[i15 >> 2] = i16;
  HEAP32[i1 >> 2] = i14;
  i1 = i16;
 }
 d27 = +__ZNSt3__115__num_get_floatIdEET_PKcS3_Rj(i2, HEAP32[i17 >> 2] | 0, i25);
 HEAPF64[i19 >> 3] = d27;
 __ZNSt3__116__check_groupingERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEPjS8_Rj(i21, i18, i1, i25);
 if (i3) {
  i1 = HEAP32[i3 + 12 >> 2] | 0;
  if ((i1 | 0) == (HEAP32[i3 + 16 >> 2] | 0)) i1 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i3 >> 2] | 0) + 36 >> 2] & 127](i3) | 0; else i1 = HEAP32[i1 >> 2] | 0;
  if ((i1 | 0) == -1) {
   HEAP32[i23 >> 2] = 0;
   i2 = 1;
  } else i2 = 0;
 } else i2 = 1;
 do if (i4) {
  i1 = HEAP32[i4 + 12 >> 2] | 0;
  if ((i1 | 0) == (HEAP32[i4 + 16 >> 2] | 0)) i1 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i4 >> 2] | 0) + 36 >> 2] & 127](i4) | 0; else i1 = HEAP32[i1 >> 2] | 0;
  if ((i1 | 0) != -1) if (i2) break; else {
   i26 = 49;
   break;
  } else {
   HEAP32[i24 >> 2] = 0;
   i26 = 47;
   break;
  }
 } else i26 = 47; while (0);
 if ((i26 | 0) == 47 ? i2 : 0) i26 = 49;
 if ((i26 | 0) == 49) HEAP32[i25 >> 2] = HEAP32[i25 >> 2] | 2;
 i26 = HEAP32[i23 >> 2] | 0;
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i20);
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i21);
 STACKTOP = i22;
 return i26 | 0;
}

function __ZNKSt3__17num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_getES4_S4_RNS_8ios_baseERjRPv(i1, i20, i21, i3, i22, i16) {
 i1 = i1 | 0;
 i20 = i20 | 0;
 i21 = i21 | 0;
 i3 = i3 | 0;
 i22 = i22 | 0;
 i16 = i16 | 0;
 var i2 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i17 = 0, i18 = 0, i19 = 0, i23 = 0;
 i19 = STACKTOP;
 STACKTOP = STACKTOP + 320 | 0;
 i15 = i19;
 i10 = i19 + 208 | 0;
 i18 = i19 + 196 | 0;
 i1 = i19 + 192 | 0;
 i17 = i19 + 180 | 0;
 i14 = i19 + 176 | 0;
 i12 = i19 + 16 | 0;
 i13 = i19 + 8 | 0;
 i11 = i19 + 4 | 0;
 i2 = 0;
 while (1) {
  if ((i2 | 0) == 3) break;
  HEAP32[i18 + (i2 << 2) >> 2] = 0;
  i2 = i2 + 1 | 0;
 }
 i9 = __ZNKSt3__18ios_base6getlocEv(i3) | 0;
 HEAP32[i1 >> 2] = i9;
 i1 = __ZNKSt3__16locale9use_facetERNS0_2idE(i1, 38408) | 0;
 FUNCTION_TABLE_iiiii[HEAP32[(HEAP32[i1 >> 2] | 0) + 48 >> 2] & 7](i1, 30448, 30474, i10) | 0;
 __ZNSt3__114__shared_count16__release_sharedEv(i9) | 0;
 i1 = 0;
 while (1) {
  if ((i1 | 0) == 3) break;
  HEAP32[i17 + (i1 << 2) >> 2] = 0;
  i1 = i1 + 1 | 0;
 }
 if (!(HEAP8[i17 >> 0] & 1)) i1 = 10; else i1 = (HEAP32[i17 >> 2] & -2) + -1 | 0;
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6resizeEjc(i17, i1, 0);
 i8 = i17 + 8 | 0;
 i9 = i17 + 1 | 0;
 i1 = (HEAP8[i17 >> 0] & 1) == 0 ? i9 : HEAP32[i8 >> 2] | 0;
 HEAP32[i14 >> 2] = i1;
 HEAP32[i13 >> 2] = i12;
 HEAP32[i11 >> 2] = 0;
 i7 = i17 + 4 | 0;
 i3 = HEAP32[i20 >> 2] | 0;
 L12 : while (1) {
  if (i3) {
   i2 = HEAP32[i3 + 12 >> 2] | 0;
   if ((i2 | 0) == (HEAP32[i3 + 16 >> 2] | 0)) i2 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i3 >> 2] | 0) + 36 >> 2] & 127](i3) | 0; else i2 = HEAP32[i2 >> 2] | 0;
   if ((i2 | 0) == -1) {
    HEAP32[i20 >> 2] = 0;
    i2 = 0;
    i5 = 1;
   } else {
    i2 = i3;
    i5 = 0;
   }
  } else {
   i2 = 0;
   i5 = 1;
  }
  i3 = HEAP32[i21 >> 2] | 0;
  do if (i3) {
   i4 = HEAP32[i3 + 12 >> 2] | 0;
   if ((i4 | 0) == (HEAP32[i3 + 16 >> 2] | 0)) i4 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i3 >> 2] | 0) + 36 >> 2] & 127](i3) | 0; else i4 = HEAP32[i4 >> 2] | 0;
   if ((i4 | 0) != -1) if (i5) break; else break L12; else {
    HEAP32[i21 >> 2] = 0;
    i23 = 22;
    break;
   }
  } else i23 = 22; while (0);
  if ((i23 | 0) == 22) {
   i23 = 0;
   if (i5) {
    i3 = 0;
    break;
   } else i3 = 0;
  }
  i4 = HEAP8[i17 >> 0] | 0;
  i4 = (i4 & 1) == 0 ? (i4 & 255) >>> 1 : HEAP32[i7 >> 2] | 0;
  if ((HEAP32[i14 >> 2] | 0) == (i1 + i4 | 0)) {
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6resizeEjc(i17, i4 << 1, 0);
   if (!(HEAP8[i17 >> 0] & 1)) i1 = 10; else i1 = (HEAP32[i17 >> 2] & -2) + -1 | 0;
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6resizeEjc(i17, i1, 0);
   i1 = (HEAP8[i17 >> 0] & 1) == 0 ? i9 : HEAP32[i8 >> 2] | 0;
   HEAP32[i14 >> 2] = i1 + i4;
  }
  i5 = i2 + 12 | 0;
  i4 = HEAP32[i5 >> 2] | 0;
  i6 = i2 + 16 | 0;
  if ((i4 | 0) == (HEAP32[i6 >> 2] | 0)) i4 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i2 >> 2] | 0) + 36 >> 2] & 127](i2) | 0; else i4 = HEAP32[i4 >> 2] | 0;
  if (__ZNSt3__19__num_getIwE17__stage2_int_loopEwiPcRS2_RjwRKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEPjRSD_Pw(i4, 16, i1, i14, i11, 0, i18, i12, i13, i10) | 0) break;
  i3 = HEAP32[i5 >> 2] | 0;
  if ((i3 | 0) == (HEAP32[i6 >> 2] | 0)) {
   FUNCTION_TABLE_ii[HEAP32[(HEAP32[i2 >> 2] | 0) + 40 >> 2] & 127](i2) | 0;
   i3 = i2;
   continue;
  } else {
   HEAP32[i5 >> 2] = i3 + 4;
   i3 = i2;
   continue;
  }
 }
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6resizeEjc(i17, (HEAP32[i14 >> 2] | 0) - i1 | 0, 0);
 i13 = (HEAP8[i17 >> 0] & 1) == 0 ? i9 : HEAP32[i8 >> 2] | 0;
 i14 = __ZNSt3__16__clocEv() | 0;
 HEAP32[i15 >> 2] = i16;
 if ((__ZNSt3__110__sscanf_lEPKcP15__locale_structS1_z(i13, i14, 30483, i15) | 0) != 1) HEAP32[i22 >> 2] = 4;
 if (i2) {
  i1 = HEAP32[i2 + 12 >> 2] | 0;
  if ((i1 | 0) == (HEAP32[i2 + 16 >> 2] | 0)) i1 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i2 >> 2] | 0) + 36 >> 2] & 127](i2) | 0; else i1 = HEAP32[i1 >> 2] | 0;
  if ((i1 | 0) == -1) {
   HEAP32[i20 >> 2] = 0;
   i2 = 1;
  } else i2 = 0;
 } else i2 = 1;
 do if (i3) {
  i1 = HEAP32[i3 + 12 >> 2] | 0;
  if ((i1 | 0) == (HEAP32[i3 + 16 >> 2] | 0)) i1 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i3 >> 2] | 0) + 36 >> 2] & 127](i3) | 0; else i1 = HEAP32[i1 >> 2] | 0;
  if ((i1 | 0) != -1) if (i2) break; else {
   i23 = 51;
   break;
  } else {
   HEAP32[i21 >> 2] = 0;
   i23 = 49;
   break;
  }
 } else i23 = 49; while (0);
 if ((i23 | 0) == 49 ? i2 : 0) i23 = 51;
 if ((i23 | 0) == 51) HEAP32[i22 >> 2] = HEAP32[i22 >> 2] | 2;
 i23 = HEAP32[i20 >> 2] | 0;
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i17);
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i18);
 STACKTOP = i19;
 return i23 | 0;
}

function __ZNSt3__19__num_putIwE23__widen_and_group_floatEPcS2_S2_PwRS3_S4_RKNS_6localeE(i14, i16, i15, i17, i19, i18, i1) {
 i14 = i14 | 0;
 i16 = i16 | 0;
 i15 = i15 | 0;
 i17 = i17 | 0;
 i19 = i19 | 0;
 i18 = i18 | 0;
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i20 = 0, i21 = 0, i22 = 0, i23 = 0;
 i21 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i13 = i21;
 i12 = __ZNKSt3__16locale9use_facetERNS0_2idE(i1, 38408) | 0;
 i10 = __ZNKSt3__16locale9use_facetERNS0_2idE(i1, 38416) | 0;
 FUNCTION_TABLE_vii[HEAP32[(HEAP32[i10 >> 2] | 0) + 20 >> 2] & 511](i13, i10);
 HEAP32[i18 >> 2] = i17;
 i1 = HEAP8[i14 >> 0] | 0;
 switch (i1 << 24 >> 24) {
 case 43:
 case 45:
  {
   i11 = FUNCTION_TABLE_iii[HEAP32[(HEAP32[i12 >> 2] | 0) + 44 >> 2] & 63](i12, i1) | 0;
   i2 = HEAP32[i18 >> 2] | 0;
   HEAP32[i18 >> 2] = i2 + 4;
   HEAP32[i2 >> 2] = i11;
   i2 = i14 + 1 | 0;
   break;
  }
 default:
  i2 = i14;
 }
 i11 = i15;
 L4 : do if ((i11 - i2 | 0) > 1 ? (HEAP8[i2 >> 0] | 0) == 48 : 0) {
  i1 = i2 + 1 | 0;
  switch (HEAP8[i1 >> 0] | 0) {
  case 88:
  case 120:
   break;
  default:
   {
    i1 = i2;
    i20 = 10;
    break L4;
   }
  }
  i8 = FUNCTION_TABLE_iii[HEAP32[(HEAP32[i12 >> 2] | 0) + 44 >> 2] & 63](i12, 48) | 0;
  i9 = HEAP32[i18 >> 2] | 0;
  HEAP32[i18 >> 2] = i9 + 4;
  HEAP32[i9 >> 2] = i8;
  i2 = i2 + 2 | 0;
  i9 = FUNCTION_TABLE_iii[HEAP32[(HEAP32[i12 >> 2] | 0) + 44 >> 2] & 63](i12, HEAP8[i1 >> 0] | 0) | 0;
  i1 = HEAP32[i18 >> 2] | 0;
  HEAP32[i18 >> 2] = i1 + 4;
  HEAP32[i1 >> 2] = i9;
  i1 = i2;
  while (1) {
   if (i1 >>> 0 >= i15 >>> 0) break L4;
   i9 = HEAP8[i1 >> 0] | 0;
   if (!(_isxdigit_l(i9, __ZNSt3__16__clocEv() | 0) | 0)) break L4;
   i1 = i1 + 1 | 0;
  }
 } else {
  i1 = i2;
  i20 = 10;
 } while (0);
 L12 : do if ((i20 | 0) == 10) while (1) {
  i20 = 0;
  if (i1 >>> 0 >= i15 >>> 0) break L12;
  i9 = HEAP8[i1 >> 0] | 0;
  if (!(_isdigit_l(i9, __ZNSt3__16__clocEv() | 0) | 0)) break L12;
  i1 = i1 + 1 | 0;
  i20 = 10;
 } while (0);
 i8 = HEAP8[i13 >> 0] | 0;
 i9 = i13 + 4 | 0;
 L18 : do if (((i8 & 1) == 0 ? (i8 & 255) >>> 1 : HEAP32[i9 >> 2] | 0) | 0) {
  L21 : do if ((i2 | 0) != (i1 | 0)) {
   i3 = i1;
   i4 = i2;
   while (1) {
    i3 = i3 + -1 | 0;
    if (i4 >>> 0 >= i3 >>> 0) break L21;
    i8 = HEAP8[i4 >> 0] | 0;
    HEAP8[i4 >> 0] = HEAP8[i3 >> 0] | 0;
    HEAP8[i3 >> 0] = i8;
    i4 = i4 + 1 | 0;
   }
  } while (0);
  i5 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i10 >> 2] | 0) + 16 >> 2] & 127](i10) | 0;
  i6 = i13 + 8 | 0;
  i7 = i13 + 1 | 0;
  i3 = 0;
  i4 = 0;
  i8 = i2;
  while (1) {
   if (i8 >>> 0 >= i1 >>> 0) break;
   i22 = HEAP8[((HEAP8[i13 >> 0] & 1) == 0 ? i7 : HEAP32[i6 >> 2] | 0) + i4 >> 0] | 0;
   if (i22 << 24 >> 24 > 0 & (i3 | 0) == (i22 << 24 >> 24 | 0)) {
    i22 = HEAP32[i18 >> 2] | 0;
    HEAP32[i18 >> 2] = i22 + 4;
    HEAP32[i22 >> 2] = i5;
    i22 = HEAP8[i13 >> 0] | 0;
    i3 = 0;
    i4 = (i4 >>> 0 < (((i22 & 1) == 0 ? (i22 & 255) >>> 1 : HEAP32[i9 >> 2] | 0) + -1 | 0) >>> 0 & 1) + i4 | 0;
   }
   i23 = FUNCTION_TABLE_iii[HEAP32[(HEAP32[i12 >> 2] | 0) + 44 >> 2] & 63](i12, HEAP8[i8 >> 0] | 0) | 0;
   i22 = HEAP32[i18 >> 2] | 0;
   HEAP32[i18 >> 2] = i22 + 4;
   HEAP32[i22 >> 2] = i23;
   i3 = i3 + 1 | 0;
   i8 = i8 + 1 | 0;
  }
  i2 = i17 + (i2 - i14 << 2) | 0;
  i4 = HEAP32[i18 >> 2] | 0;
  if ((i2 | 0) == (i4 | 0)) i3 = i12; else {
   i3 = i4;
   while (1) {
    i3 = i3 + -4 | 0;
    if (i2 >>> 0 >= i3 >>> 0) {
     i3 = i12;
     i2 = i4;
     break L18;
    }
    i23 = HEAP32[i2 >> 2] | 0;
    HEAP32[i2 >> 2] = HEAP32[i3 >> 2];
    HEAP32[i3 >> 2] = i23;
    i2 = i2 + 4 | 0;
   }
  }
 } else {
  FUNCTION_TABLE_iiiii[HEAP32[(HEAP32[i12 >> 2] | 0) + 48 >> 2] & 7](i12, i2, i1, HEAP32[i18 >> 2] | 0) | 0;
  i2 = (HEAP32[i18 >> 2] | 0) + (i1 - i2 << 2) | 0;
  HEAP32[i18 >> 2] = i2;
  i3 = i12;
 } while (0);
 while (1) {
  if (i1 >>> 0 >= i15 >>> 0) break;
  i2 = HEAP8[i1 >> 0] | 0;
  if (i2 << 24 >> 24 == 46) {
   i20 = 29;
   break;
  }
  i22 = FUNCTION_TABLE_iii[HEAP32[(HEAP32[i3 >> 2] | 0) + 44 >> 2] & 63](i12, i2) | 0;
  i23 = HEAP32[i18 >> 2] | 0;
  i2 = i23 + 4 | 0;
  HEAP32[i18 >> 2] = i2;
  HEAP32[i23 >> 2] = i22;
  i1 = i1 + 1 | 0;
 }
 if ((i20 | 0) == 29) {
  i22 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i10 >> 2] | 0) + 12 >> 2] & 127](i10) | 0;
  i23 = HEAP32[i18 >> 2] | 0;
  i2 = i23 + 4 | 0;
  HEAP32[i18 >> 2] = i2;
  HEAP32[i23 >> 2] = i22;
  i1 = i1 + 1 | 0;
 }
 FUNCTION_TABLE_iiiii[HEAP32[(HEAP32[i12 >> 2] | 0) + 48 >> 2] & 7](i12, i1, i15, i2) | 0;
 i23 = (HEAP32[i18 >> 2] | 0) + (i11 - i1 << 2) | 0;
 HEAP32[i18 >> 2] = i23;
 HEAP32[i19 >> 2] = (i16 | 0) == (i15 | 0) ? i23 : i17 + (i16 - i14 << 2) | 0;
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i13);
 STACKTOP = i21;
 return;
}

function __ZNSt3__114__scan_keywordINS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEPKNS_12basic_stringIcS3_NS_9allocatorIcEEEENS_5ctypeIcEEEET0_RT_SE_SD_SD_RKT1_Rjb(i16, i17, i1, i19, i15, i18, i14) {
 i16 = i16 | 0;
 i17 = i17 | 0;
 i1 = i1 | 0;
 i19 = i19 | 0;
 i15 = i15 | 0;
 i18 = i18 | 0;
 i14 = i14 | 0;
 var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i20 = 0, i21 = 0, i22 = 0;
 i22 = STACKTOP;
 STACKTOP = STACKTOP + 112 | 0;
 i3 = i22;
 i4 = (i19 - i1 | 0) / 12 | 0;
 if (i4 >>> 0 > 100) {
  i3 = _malloc(i4) | 0;
  if (!i3) __ZSt17__throw_bad_allocv(); else {
   i20 = i3;
   i2 = i3;
  }
 } else {
  i20 = 0;
  i2 = i3;
 }
 i7 = i1;
 i3 = 0;
 i6 = i2;
 while (1) {
  if ((i7 | 0) == (i19 | 0)) break;
  i5 = HEAP8[i7 >> 0] | 0;
  if (!(i5 & 1)) i5 = (i5 & 255) >>> 1; else i5 = HEAP32[i7 + 4 >> 2] | 0;
  if (!i5) {
   HEAP8[i6 >> 0] = 2;
   i3 = i3 + 1 | 0;
   i4 = i4 + -1 | 0;
  } else HEAP8[i6 >> 0] = 1;
  i7 = i7 + 12 | 0;
  i6 = i6 + 1 | 0;
 }
 i13 = 0;
 i10 = i3;
 i8 = i4;
 L17 : while (1) {
  i3 = HEAP32[i16 >> 2] | 0;
  do if (i3) {
   if ((HEAP32[i3 + 12 >> 2] | 0) == (HEAP32[i3 + 16 >> 2] | 0)) if ((FUNCTION_TABLE_ii[HEAP32[(HEAP32[i3 >> 2] | 0) + 36 >> 2] & 127](i3) | 0) == -1) {
    HEAP32[i16 >> 2] = 0;
    i3 = 0;
    break;
   } else {
    i3 = HEAP32[i16 >> 2] | 0;
    break;
   }
  } else i3 = 0; while (0);
  i6 = (i3 | 0) == 0;
  i4 = HEAP32[i17 >> 2] | 0;
  if (i4) {
   if ((HEAP32[i4 + 12 >> 2] | 0) == (HEAP32[i4 + 16 >> 2] | 0) ? (FUNCTION_TABLE_ii[HEAP32[(HEAP32[i4 >> 2] | 0) + 36 >> 2] & 127](i4) | 0) == -1 : 0) {
    HEAP32[i17 >> 2] = 0;
    i4 = 0;
   }
  } else i4 = 0;
  i5 = (i4 | 0) == 0;
  i3 = HEAP32[i16 >> 2] | 0;
  if (!((i8 | 0) != 0 & (i6 ^ i5))) break;
  i4 = HEAP32[i3 + 12 >> 2] | 0;
  if ((i4 | 0) == (HEAP32[i3 + 16 >> 2] | 0)) i3 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i3 >> 2] | 0) + 36 >> 2] & 127](i3) | 0; else i3 = HEAPU8[i4 >> 0] | 0;
  i3 = i3 & 255;
  if (!i14) i3 = FUNCTION_TABLE_iii[HEAP32[(HEAP32[i15 >> 2] | 0) + 12 >> 2] & 63](i15, i3) | 0;
  i12 = i13 + 1 | 0;
  i7 = 0;
  i9 = i1;
  i11 = i8;
  i8 = i2;
  while (1) {
   if ((i9 | 0) == (i19 | 0)) break;
   do if ((HEAP8[i8 >> 0] | 0) == 1) {
    if (!(HEAP8[i9 >> 0] & 1)) i4 = i9 + 1 | 0; else i4 = HEAP32[i9 + 8 >> 2] | 0;
    i4 = HEAP8[i4 + i13 >> 0] | 0;
    if (!i14) i4 = FUNCTION_TABLE_iii[HEAP32[(HEAP32[i15 >> 2] | 0) + 12 >> 2] & 63](i15, i4) | 0;
    if (i3 << 24 >> 24 != i4 << 24 >> 24) {
     HEAP8[i8 >> 0] = 0;
     i4 = i7;
     i5 = i10;
     i6 = i11 + -1 | 0;
     break;
    }
    i4 = HEAP8[i9 >> 0] | 0;
    if (!(i4 & 1)) i4 = (i4 & 255) >>> 1; else i4 = HEAP32[i9 + 4 >> 2] | 0;
    if ((i4 | 0) == (i12 | 0)) {
     HEAP8[i8 >> 0] = 2;
     i4 = 1;
     i5 = i10 + 1 | 0;
     i6 = i11 + -1 | 0;
    } else {
     i4 = 1;
     i5 = i10;
     i6 = i11;
    }
   } else {
    i4 = i7;
    i5 = i10;
    i6 = i11;
   } while (0);
   i7 = i4;
   i9 = i9 + 12 | 0;
   i10 = i5;
   i11 = i6;
   i8 = i8 + 1 | 0;
  }
  if (!i7) {
   i13 = i12;
   i8 = i11;
   continue;
  }
  i3 = HEAP32[i16 >> 2] | 0;
  i4 = i3 + 12 | 0;
  i5 = HEAP32[i4 >> 2] | 0;
  if ((i5 | 0) == (HEAP32[i3 + 16 >> 2] | 0)) FUNCTION_TABLE_ii[HEAP32[(HEAP32[i3 >> 2] | 0) + 40 >> 2] & 127](i3) | 0; else HEAP32[i4 >> 2] = i5 + 1;
  if ((i10 + i11 | 0) >>> 0 > 1) {
   i6 = i1;
   i3 = i10;
   i5 = i2;
  } else {
   i13 = i12;
   i8 = i11;
   continue;
  }
  while (1) {
   if ((i6 | 0) == (i19 | 0)) {
    i13 = i12;
    i10 = i3;
    i8 = i11;
    continue L17;
   }
   if ((HEAP8[i5 >> 0] | 0) == 2) {
    i4 = HEAP8[i6 >> 0] | 0;
    if (!(i4 & 1)) i4 = (i4 & 255) >>> 1; else i4 = HEAP32[i6 + 4 >> 2] | 0;
    if ((i4 | 0) != (i12 | 0)) {
     HEAP8[i5 >> 0] = 0;
     i3 = i3 + -1 | 0;
    }
   }
   i6 = i6 + 12 | 0;
   i5 = i5 + 1 | 0;
  }
 }
 do if (i3) {
  if ((HEAP32[i3 + 12 >> 2] | 0) == (HEAP32[i3 + 16 >> 2] | 0)) if ((FUNCTION_TABLE_ii[HEAP32[(HEAP32[i3 >> 2] | 0) + 36 >> 2] & 127](i3) | 0) == -1) {
   HEAP32[i16 >> 2] = 0;
   i3 = 0;
   break;
  } else {
   i3 = HEAP32[i16 >> 2] | 0;
   break;
  }
 } else i3 = 0; while (0);
 i3 = (i3 | 0) == 0;
 do if (!i5) {
  if ((HEAP32[i4 + 12 >> 2] | 0) == (HEAP32[i4 + 16 >> 2] | 0) ? (FUNCTION_TABLE_ii[HEAP32[(HEAP32[i4 >> 2] | 0) + 36 >> 2] & 127](i4) | 0) == -1 : 0) {
   HEAP32[i17 >> 2] = 0;
   i21 = 34;
   break;
  }
  if (!i3) i21 = 69;
 } else i21 = 34; while (0);
 if ((i21 | 0) == 34) if (i3) i21 = 69;
 if ((i21 | 0) == 69) HEAP32[i18 >> 2] = HEAP32[i18 >> 2] | 2;
 while (1) {
  if ((i1 | 0) == (i19 | 0)) {
   i21 = 73;
   break;
  }
  if ((HEAP8[i2 >> 0] | 0) == 2) break;
  i1 = i1 + 12 | 0;
  i2 = i2 + 1 | 0;
 }
 if ((i21 | 0) == 73) {
  HEAP32[i18 >> 2] = HEAP32[i18 >> 2] | 4;
  i1 = i19;
 }
 _free(i20);
 STACKTOP = i22;
 return i1 | 0;
}

function __ZNSt3__120__get_up_to_n_digitsIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEEEiRT0_S5_RjRKNS_5ctypeIT_EEi(i12, i13, i14, i10, i6) {
 i12 = i12 | 0;
 i13 = i13 | 0;
 i14 = i14 | 0;
 i10 = i10 | 0;
 i6 = i6 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i7 = 0, i8 = 0, i9 = 0, i11 = 0;
 i1 = HEAP32[i12 >> 2] | 0;
 do if (i1) {
  i2 = HEAP32[i1 + 12 >> 2] | 0;
  if ((i2 | 0) == (HEAP32[i1 + 16 >> 2] | 0)) i1 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 36 >> 2] & 127](i1) | 0; else i1 = HEAP32[i2 >> 2] | 0;
  if ((i1 | 0) == -1) {
   HEAP32[i12 >> 2] = 0;
   i3 = 1;
   break;
  } else {
   i3 = (HEAP32[i12 >> 2] | 0) == 0;
   break;
  }
 } else i3 = 1; while (0);
 i2 = HEAP32[i13 >> 2] | 0;
 do if (i2) {
  i1 = HEAP32[i2 + 12 >> 2] | 0;
  if ((i1 | 0) == (HEAP32[i2 + 16 >> 2] | 0)) i1 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i2 >> 2] | 0) + 36 >> 2] & 127](i2) | 0; else i1 = HEAP32[i1 >> 2] | 0;
  if ((i1 | 0) != -1) if (i3) {
   i11 = 17;
   break;
  } else {
   i11 = 16;
   break;
  } else {
   HEAP32[i13 >> 2] = 0;
   i11 = 14;
   break;
  }
 } else i11 = 14; while (0);
 if ((i11 | 0) == 14) if (i3) i11 = 16; else {
  i2 = 0;
  i11 = 17;
 }
 L22 : do if ((i11 | 0) == 16) {
  HEAP32[i14 >> 2] = HEAP32[i14 >> 2] | 6;
  i1 = 0;
 } else if ((i11 | 0) == 17) {
  i1 = HEAP32[i12 >> 2] | 0;
  i3 = HEAP32[i1 + 12 >> 2] | 0;
  if ((i3 | 0) == (HEAP32[i1 + 16 >> 2] | 0)) i1 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 36 >> 2] & 127](i1) | 0; else i1 = HEAP32[i3 >> 2] | 0;
  if (!(FUNCTION_TABLE_iiii[HEAP32[(HEAP32[i10 >> 2] | 0) + 12 >> 2] & 31](i10, 2048, i1) | 0)) {
   HEAP32[i14 >> 2] = HEAP32[i14 >> 2] | 4;
   i1 = 0;
   break;
  }
  i1 = (FUNCTION_TABLE_iiii[HEAP32[(HEAP32[i10 >> 2] | 0) + 52 >> 2] & 31](i10, i1, 0) | 0) << 24 >> 24;
  i3 = HEAP32[i12 >> 2] | 0;
  i4 = i3 + 12 | 0;
  i5 = HEAP32[i4 >> 2] | 0;
  if ((i5 | 0) == (HEAP32[i3 + 16 >> 2] | 0)) {
   FUNCTION_TABLE_ii[HEAP32[(HEAP32[i3 >> 2] | 0) + 40 >> 2] & 127](i3) | 0;
   i8 = i6;
   i7 = i2;
   i4 = i2;
  } else {
   HEAP32[i4 >> 2] = i5 + 4;
   i8 = i6;
   i7 = i2;
   i4 = i2;
  }
  while (1) {
   i1 = i1 + -48 | 0;
   i9 = i8 + -1 | 0;
   i2 = HEAP32[i12 >> 2] | 0;
   do if (i2) {
    i3 = HEAP32[i2 + 12 >> 2] | 0;
    if ((i3 | 0) == (HEAP32[i2 + 16 >> 2] | 0)) i2 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i2 >> 2] | 0) + 36 >> 2] & 127](i2) | 0; else i2 = HEAP32[i3 >> 2] | 0;
    if ((i2 | 0) == -1) {
     HEAP32[i12 >> 2] = 0;
     i5 = 1;
     break;
    } else {
     i5 = (HEAP32[i12 >> 2] | 0) == 0;
     break;
    }
   } else i5 = 1; while (0);
   do if (i4) {
    i2 = HEAP32[i4 + 12 >> 2] | 0;
    if ((i2 | 0) == (HEAP32[i4 + 16 >> 2] | 0)) i2 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i4 >> 2] | 0) + 36 >> 2] & 127](i4) | 0; else i2 = HEAP32[i2 >> 2] | 0;
    if ((i2 | 0) == -1) {
     HEAP32[i13 >> 2] = 0;
     i4 = 0;
     i6 = 0;
     i2 = 1;
     break;
    } else {
     i4 = i7;
     i6 = i7;
     i2 = (i7 | 0) == 0;
     break;
    }
   } else {
    i4 = i7;
    i6 = 0;
    i2 = 1;
   } while (0);
   i3 = HEAP32[i12 >> 2] | 0;
   if (!((i8 | 0) > 1 & (i5 ^ i2))) break;
   i2 = HEAP32[i3 + 12 >> 2] | 0;
   if ((i2 | 0) == (HEAP32[i3 + 16 >> 2] | 0)) i2 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i3 >> 2] | 0) + 36 >> 2] & 127](i3) | 0; else i2 = HEAP32[i2 >> 2] | 0;
   if (!(FUNCTION_TABLE_iiii[HEAP32[(HEAP32[i10 >> 2] | 0) + 12 >> 2] & 31](i10, 2048, i2) | 0)) break L22;
   i1 = ((FUNCTION_TABLE_iiii[HEAP32[(HEAP32[i10 >> 2] | 0) + 52 >> 2] & 31](i10, i2, 0) | 0) << 24 >> 24) + (i1 * 10 | 0) | 0;
   i2 = HEAP32[i12 >> 2] | 0;
   i3 = i2 + 12 | 0;
   i5 = HEAP32[i3 >> 2] | 0;
   if ((i5 | 0) == (HEAP32[i2 + 16 >> 2] | 0)) {
    FUNCTION_TABLE_ii[HEAP32[(HEAP32[i2 >> 2] | 0) + 40 >> 2] & 127](i2) | 0;
    i8 = i9;
    i7 = i4;
    i4 = i6;
    continue;
   } else {
    HEAP32[i3 >> 2] = i5 + 4;
    i8 = i9;
    i7 = i4;
    i4 = i6;
    continue;
   }
  }
  do if (i3) {
   i2 = HEAP32[i3 + 12 >> 2] | 0;
   if ((i2 | 0) == (HEAP32[i3 + 16 >> 2] | 0)) i2 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i3 >> 2] | 0) + 36 >> 2] & 127](i3) | 0; else i2 = HEAP32[i2 >> 2] | 0;
   if ((i2 | 0) == -1) {
    HEAP32[i12 >> 2] = 0;
    i3 = 1;
    break;
   } else {
    i3 = (HEAP32[i12 >> 2] | 0) == 0;
    break;
   }
  } else i3 = 1; while (0);
  do if (i4) {
   i2 = HEAP32[i4 + 12 >> 2] | 0;
   if ((i2 | 0) == (HEAP32[i4 + 16 >> 2] | 0)) i2 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i4 >> 2] | 0) + 36 >> 2] & 127](i4) | 0; else i2 = HEAP32[i2 >> 2] | 0;
   if ((i2 | 0) != -1) if (i3) break L22; else break; else {
    HEAP32[i13 >> 2] = 0;
    i11 = 60;
    break;
   }
  } else i11 = 60; while (0);
  if ((i11 | 0) == 60 ? !i3 : 0) break;
  HEAP32[i14 >> 2] = HEAP32[i14 >> 2] | 2;
 } while (0);
 return i1 | 0;
}

function __ZNSt3__19__num_putIcE23__widen_and_group_floatEPcS2_S2_S2_RS2_S3_RKNS_6localeE(i14, i16, i15, i17, i19, i18, i1) {
 i14 = i14 | 0;
 i16 = i16 | 0;
 i15 = i15 | 0;
 i17 = i17 | 0;
 i19 = i19 | 0;
 i18 = i18 | 0;
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i20 = 0, i21 = 0, i22 = 0, i23 = 0;
 i21 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i13 = i21;
 i12 = __ZNKSt3__16locale9use_facetERNS0_2idE(i1, 38376) | 0;
 i10 = __ZNKSt3__16locale9use_facetERNS0_2idE(i1, 38388) | 0;
 FUNCTION_TABLE_vii[HEAP32[(HEAP32[i10 >> 2] | 0) + 20 >> 2] & 511](i13, i10);
 HEAP32[i18 >> 2] = i17;
 i1 = HEAP8[i14 >> 0] | 0;
 switch (i1 << 24 >> 24) {
 case 43:
 case 45:
  {
   i11 = FUNCTION_TABLE_iii[HEAP32[(HEAP32[i12 >> 2] | 0) + 28 >> 2] & 63](i12, i1) | 0;
   i2 = HEAP32[i18 >> 2] | 0;
   HEAP32[i18 >> 2] = i2 + 1;
   HEAP8[i2 >> 0] = i11;
   i2 = i14 + 1 | 0;
   break;
  }
 default:
  i2 = i14;
 }
 i11 = i15;
 L4 : do if ((i11 - i2 | 0) > 1 ? (HEAP8[i2 >> 0] | 0) == 48 : 0) {
  i1 = i2 + 1 | 0;
  switch (HEAP8[i1 >> 0] | 0) {
  case 88:
  case 120:
   break;
  default:
   {
    i1 = i2;
    i20 = 10;
    break L4;
   }
  }
  i8 = FUNCTION_TABLE_iii[HEAP32[(HEAP32[i12 >> 2] | 0) + 28 >> 2] & 63](i12, 48) | 0;
  i9 = HEAP32[i18 >> 2] | 0;
  HEAP32[i18 >> 2] = i9 + 1;
  HEAP8[i9 >> 0] = i8;
  i2 = i2 + 2 | 0;
  i9 = FUNCTION_TABLE_iii[HEAP32[(HEAP32[i12 >> 2] | 0) + 28 >> 2] & 63](i12, HEAP8[i1 >> 0] | 0) | 0;
  i1 = HEAP32[i18 >> 2] | 0;
  HEAP32[i18 >> 2] = i1 + 1;
  HEAP8[i1 >> 0] = i9;
  i1 = i2;
  while (1) {
   if (i1 >>> 0 >= i15 >>> 0) break L4;
   i9 = HEAP8[i1 >> 0] | 0;
   if (!(_isxdigit_l(i9, __ZNSt3__16__clocEv() | 0) | 0)) break L4;
   i1 = i1 + 1 | 0;
  }
 } else {
  i1 = i2;
  i20 = 10;
 } while (0);
 L12 : do if ((i20 | 0) == 10) while (1) {
  i20 = 0;
  if (i1 >>> 0 >= i15 >>> 0) break L12;
  i9 = HEAP8[i1 >> 0] | 0;
  if (!(_isdigit_l(i9, __ZNSt3__16__clocEv() | 0) | 0)) break L12;
  i1 = i1 + 1 | 0;
  i20 = 10;
 } while (0);
 i8 = HEAP8[i13 >> 0] | 0;
 i9 = i13 + 4 | 0;
 L18 : do if (((i8 & 1) == 0 ? (i8 & 255) >>> 1 : HEAP32[i9 >> 2] | 0) | 0) {
  L21 : do if ((i2 | 0) != (i1 | 0)) {
   i3 = i1;
   i4 = i2;
   while (1) {
    i3 = i3 + -1 | 0;
    if (i4 >>> 0 >= i3 >>> 0) break L21;
    i8 = HEAP8[i4 >> 0] | 0;
    HEAP8[i4 >> 0] = HEAP8[i3 >> 0] | 0;
    HEAP8[i3 >> 0] = i8;
    i4 = i4 + 1 | 0;
   }
  } while (0);
  i5 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i10 >> 2] | 0) + 16 >> 2] & 127](i10) | 0;
  i6 = i13 + 8 | 0;
  i7 = i13 + 1 | 0;
  i3 = 0;
  i4 = 0;
  i8 = i2;
  while (1) {
   if (i8 >>> 0 >= i1 >>> 0) break;
   i22 = HEAP8[((HEAP8[i13 >> 0] & 1) == 0 ? i7 : HEAP32[i6 >> 2] | 0) + i4 >> 0] | 0;
   if (i22 << 24 >> 24 > 0 & (i3 | 0) == (i22 << 24 >> 24 | 0)) {
    i22 = HEAP32[i18 >> 2] | 0;
    HEAP32[i18 >> 2] = i22 + 1;
    HEAP8[i22 >> 0] = i5;
    i22 = HEAP8[i13 >> 0] | 0;
    i3 = 0;
    i4 = (i4 >>> 0 < (((i22 & 1) == 0 ? (i22 & 255) >>> 1 : HEAP32[i9 >> 2] | 0) + -1 | 0) >>> 0 & 1) + i4 | 0;
   }
   i23 = FUNCTION_TABLE_iii[HEAP32[(HEAP32[i12 >> 2] | 0) + 28 >> 2] & 63](i12, HEAP8[i8 >> 0] | 0) | 0;
   i22 = HEAP32[i18 >> 2] | 0;
   HEAP32[i18 >> 2] = i22 + 1;
   HEAP8[i22 >> 0] = i23;
   i3 = i3 + 1 | 0;
   i8 = i8 + 1 | 0;
  }
  i3 = i17 + (i2 - i14) | 0;
  i2 = HEAP32[i18 >> 2] | 0;
  if ((i3 | 0) == (i2 | 0)) i3 = i12; else while (1) {
   i2 = i2 + -1 | 0;
   if (i3 >>> 0 >= i2 >>> 0) {
    i3 = i12;
    break L18;
   }
   i23 = HEAP8[i3 >> 0] | 0;
   HEAP8[i3 >> 0] = HEAP8[i2 >> 0] | 0;
   HEAP8[i2 >> 0] = i23;
   i3 = i3 + 1 | 0;
  }
 } else {
  FUNCTION_TABLE_iiiii[HEAP32[(HEAP32[i12 >> 2] | 0) + 32 >> 2] & 7](i12, i2, i1, HEAP32[i18 >> 2] | 0) | 0;
  HEAP32[i18 >> 2] = (HEAP32[i18 >> 2] | 0) + (i1 - i2);
  i3 = i12;
 } while (0);
 while (1) {
  if (i1 >>> 0 >= i15 >>> 0) break;
  i2 = HEAP8[i1 >> 0] | 0;
  if (i2 << 24 >> 24 == 46) {
   i20 = 29;
   break;
  }
  i22 = FUNCTION_TABLE_iii[HEAP32[(HEAP32[i3 >> 2] | 0) + 28 >> 2] & 63](i12, i2) | 0;
  i23 = HEAP32[i18 >> 2] | 0;
  HEAP32[i18 >> 2] = i23 + 1;
  HEAP8[i23 >> 0] = i22;
  i1 = i1 + 1 | 0;
 }
 if ((i20 | 0) == 29) {
  i22 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i10 >> 2] | 0) + 12 >> 2] & 127](i10) | 0;
  i23 = HEAP32[i18 >> 2] | 0;
  HEAP32[i18 >> 2] = i23 + 1;
  HEAP8[i23 >> 0] = i22;
  i1 = i1 + 1 | 0;
 }
 FUNCTION_TABLE_iiiii[HEAP32[(HEAP32[i12 >> 2] | 0) + 32 >> 2] & 7](i12, i1, i15, HEAP32[i18 >> 2] | 0) | 0;
 i23 = (HEAP32[i18 >> 2] | 0) + (i11 - i1) | 0;
 HEAP32[i18 >> 2] = i23;
 HEAP32[i19 >> 2] = (i16 | 0) == (i15 | 0) ? i23 : i17 + (i16 - i14) | 0;
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i13);
 STACKTOP = i21;
 return;
}

function __ZNKSt3__17num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE17__do_get_unsignedIyEES4_S4_S4_RNS_8ios_baseERjRT_(i1, i21, i22, i2, i23, i17) {
 i1 = i1 | 0;
 i21 = i21 | 0;
 i22 = i22 | 0;
 i2 = i2 | 0;
 i23 = i23 | 0;
 i17 = i17 | 0;
 var i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i18 = 0, i19 = 0, i20 = 0, i24 = 0;
 i20 = STACKTOP;
 STACKTOP = STACKTOP + 224 | 0;
 i11 = i20 + 198 | 0;
 i3 = i20 + 196 | 0;
 i19 = i20 + 184 | 0;
 i18 = i20 + 172 | 0;
 i15 = i20 + 168 | 0;
 i16 = i20 + 8 | 0;
 i13 = i20 + 4 | 0;
 i12 = i20;
 switch (HEAP32[i2 + 4 >> 2] & 74 | 0) {
 case 64:
  {
   i14 = 8;
   break;
  }
 case 8:
  {
   i14 = 16;
   break;
  }
 case 0:
  {
   i14 = 0;
   break;
  }
 default:
  i14 = 10;
 }
 __ZNSt3__19__num_getIcE17__stage2_int_prepERNS_8ios_baseEPcRc(i19, i2, i11, i3);
 i1 = 0;
 while (1) {
  if ((i1 | 0) == 3) break;
  HEAP32[i18 + (i1 << 2) >> 2] = 0;
  i1 = i1 + 1 | 0;
 }
 if (!(HEAP8[i18 >> 0] & 1)) i1 = 10; else i1 = (HEAP32[i18 >> 2] & -2) + -1 | 0;
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6resizeEjc(i18, i1, 0);
 i8 = i18 + 8 | 0;
 i9 = i18 + 1 | 0;
 i6 = (HEAP8[i18 >> 0] & 1) == 0 ? i9 : HEAP32[i8 >> 2] | 0;
 HEAP32[i15 >> 2] = i6;
 HEAP32[i13 >> 2] = i16;
 HEAP32[i12 >> 2] = 0;
 i10 = i18 + 4 | 0;
 i7 = HEAP8[i3 >> 0] | 0;
 i1 = HEAP32[i21 >> 2] | 0;
 i3 = i6;
 L13 : while (1) {
  if (i1) {
   if ((HEAP32[i1 + 12 >> 2] | 0) == (HEAP32[i1 + 16 >> 2] | 0) ? (FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 36 >> 2] & 127](i1) | 0) == -1 : 0) {
    HEAP32[i21 >> 2] = 0;
    i1 = 0;
   }
  } else i1 = 0;
  i2 = (i1 | 0) == 0;
  i4 = HEAP32[i22 >> 2] | 0;
  do if (i4) {
   if ((HEAP32[i4 + 12 >> 2] | 0) != (HEAP32[i4 + 16 >> 2] | 0)) if (i2) break; else break L13;
   if ((FUNCTION_TABLE_ii[HEAP32[(HEAP32[i4 >> 2] | 0) + 36 >> 2] & 127](i4) | 0) != -1) if (i2) break; else break L13; else {
    HEAP32[i22 >> 2] = 0;
    i24 = 20;
    break;
   }
  } else i24 = 20; while (0);
  if ((i24 | 0) == 20) {
   i24 = 0;
   if (i2) {
    i4 = 0;
    break;
   } else i4 = 0;
  }
  i5 = HEAP8[i18 >> 0] | 0;
  i5 = (i5 & 1) == 0 ? (i5 & 255) >>> 1 : HEAP32[i10 >> 2] | 0;
  if ((HEAP32[i15 >> 2] | 0) == (i3 + i5 | 0)) {
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6resizeEjc(i18, i5 << 1, 0);
   if (!(HEAP8[i18 >> 0] & 1)) i2 = 10; else i2 = (HEAP32[i18 >> 2] & -2) + -1 | 0;
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6resizeEjc(i18, i2, 0);
   i3 = (HEAP8[i18 >> 0] & 1) == 0 ? i9 : HEAP32[i8 >> 2] | 0;
   HEAP32[i15 >> 2] = i3 + i5;
  }
  i5 = i1 + 12 | 0;
  i2 = HEAP32[i5 >> 2] | 0;
  i6 = i1 + 16 | 0;
  if ((i2 | 0) == (HEAP32[i6 >> 2] | 0)) i2 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 36 >> 2] & 127](i1) | 0; else i2 = HEAPU8[i2 >> 0] | 0;
  if (__ZNSt3__19__num_getIcE17__stage2_int_loopEciPcRS2_RjcRKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEPjRSD_S2_(i2 & 255, i14, i3, i15, i12, i7, i19, i16, i13, i11) | 0) break;
  i2 = HEAP32[i5 >> 2] | 0;
  if ((i2 | 0) == (HEAP32[i6 >> 2] | 0)) {
   FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 40 >> 2] & 127](i1) | 0;
   continue;
  } else {
   HEAP32[i5 >> 2] = i2 + 1;
   continue;
  }
 }
 i11 = HEAP8[i19 >> 0] | 0;
 i2 = HEAP32[i13 >> 2] | 0;
 if ((((i11 & 1) == 0 ? (i11 & 255) >>> 1 : HEAP32[i19 + 4 >> 2] | 0) | 0) != 0 ? (i2 - i16 | 0) < 160 : 0) {
  i11 = HEAP32[i12 >> 2] | 0;
  i12 = i2 + 4 | 0;
  HEAP32[i13 >> 2] = i12;
  HEAP32[i2 >> 2] = i11;
  i2 = i12;
 }
 i15 = __ZNSt3__127__num_get_unsigned_integralIyEET_PKcS3_Rji(i3, HEAP32[i15 >> 2] | 0, i23, i14) | 0;
 HEAP32[i17 >> 2] = i15;
 HEAP32[i17 + 4 >> 2] = tempRet0;
 __ZNSt3__116__check_groupingERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEPjS8_Rj(i19, i16, i2, i23);
 if (i1) {
  if ((HEAP32[i1 + 12 >> 2] | 0) == (HEAP32[i1 + 16 >> 2] | 0) ? (FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 36 >> 2] & 127](i1) | 0) == -1 : 0) {
   HEAP32[i21 >> 2] = 0;
   i1 = 0;
  }
 } else i1 = 0;
 i1 = (i1 | 0) == 0;
 do if (i4) {
  if ((HEAP32[i4 + 12 >> 2] | 0) == (HEAP32[i4 + 16 >> 2] | 0) ? (FUNCTION_TABLE_ii[HEAP32[(HEAP32[i4 >> 2] | 0) + 36 >> 2] & 127](i4) | 0) == -1 : 0) {
   HEAP32[i22 >> 2] = 0;
   i24 = 45;
   break;
  }
  if (!i1) i24 = 46;
 } else i24 = 45; while (0);
 if ((i24 | 0) == 45 ? i1 : 0) i24 = 46;
 if ((i24 | 0) == 46) HEAP32[i23 >> 2] = HEAP32[i23 >> 2] | 2;
 i24 = HEAP32[i21 >> 2] | 0;
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i18);
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i19);
 STACKTOP = i20;
 return i24 | 0;
}

function __ZNKSt3__17num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE15__do_get_signedIxEES4_S4_S4_RNS_8ios_baseERjRT_(i1, i21, i22, i2, i23, i17) {
 i1 = i1 | 0;
 i21 = i21 | 0;
 i22 = i22 | 0;
 i2 = i2 | 0;
 i23 = i23 | 0;
 i17 = i17 | 0;
 var i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i18 = 0, i19 = 0, i20 = 0, i24 = 0;
 i20 = STACKTOP;
 STACKTOP = STACKTOP + 224 | 0;
 i11 = i20 + 198 | 0;
 i3 = i20 + 196 | 0;
 i19 = i20 + 184 | 0;
 i18 = i20 + 172 | 0;
 i15 = i20 + 168 | 0;
 i16 = i20 + 8 | 0;
 i13 = i20 + 4 | 0;
 i12 = i20;
 switch (HEAP32[i2 + 4 >> 2] & 74 | 0) {
 case 64:
  {
   i14 = 8;
   break;
  }
 case 8:
  {
   i14 = 16;
   break;
  }
 case 0:
  {
   i14 = 0;
   break;
  }
 default:
  i14 = 10;
 }
 __ZNSt3__19__num_getIcE17__stage2_int_prepERNS_8ios_baseEPcRc(i19, i2, i11, i3);
 i1 = 0;
 while (1) {
  if ((i1 | 0) == 3) break;
  HEAP32[i18 + (i1 << 2) >> 2] = 0;
  i1 = i1 + 1 | 0;
 }
 if (!(HEAP8[i18 >> 0] & 1)) i1 = 10; else i1 = (HEAP32[i18 >> 2] & -2) + -1 | 0;
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6resizeEjc(i18, i1, 0);
 i8 = i18 + 8 | 0;
 i9 = i18 + 1 | 0;
 i6 = (HEAP8[i18 >> 0] & 1) == 0 ? i9 : HEAP32[i8 >> 2] | 0;
 HEAP32[i15 >> 2] = i6;
 HEAP32[i13 >> 2] = i16;
 HEAP32[i12 >> 2] = 0;
 i10 = i18 + 4 | 0;
 i7 = HEAP8[i3 >> 0] | 0;
 i1 = HEAP32[i21 >> 2] | 0;
 i3 = i6;
 L13 : while (1) {
  if (i1) {
   if ((HEAP32[i1 + 12 >> 2] | 0) == (HEAP32[i1 + 16 >> 2] | 0) ? (FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 36 >> 2] & 127](i1) | 0) == -1 : 0) {
    HEAP32[i21 >> 2] = 0;
    i1 = 0;
   }
  } else i1 = 0;
  i2 = (i1 | 0) == 0;
  i4 = HEAP32[i22 >> 2] | 0;
  do if (i4) {
   if ((HEAP32[i4 + 12 >> 2] | 0) != (HEAP32[i4 + 16 >> 2] | 0)) if (i2) break; else break L13;
   if ((FUNCTION_TABLE_ii[HEAP32[(HEAP32[i4 >> 2] | 0) + 36 >> 2] & 127](i4) | 0) != -1) if (i2) break; else break L13; else {
    HEAP32[i22 >> 2] = 0;
    i24 = 20;
    break;
   }
  } else i24 = 20; while (0);
  if ((i24 | 0) == 20) {
   i24 = 0;
   if (i2) {
    i4 = 0;
    break;
   } else i4 = 0;
  }
  i5 = HEAP8[i18 >> 0] | 0;
  i5 = (i5 & 1) == 0 ? (i5 & 255) >>> 1 : HEAP32[i10 >> 2] | 0;
  if ((HEAP32[i15 >> 2] | 0) == (i3 + i5 | 0)) {
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6resizeEjc(i18, i5 << 1, 0);
   if (!(HEAP8[i18 >> 0] & 1)) i2 = 10; else i2 = (HEAP32[i18 >> 2] & -2) + -1 | 0;
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6resizeEjc(i18, i2, 0);
   i3 = (HEAP8[i18 >> 0] & 1) == 0 ? i9 : HEAP32[i8 >> 2] | 0;
   HEAP32[i15 >> 2] = i3 + i5;
  }
  i5 = i1 + 12 | 0;
  i2 = HEAP32[i5 >> 2] | 0;
  i6 = i1 + 16 | 0;
  if ((i2 | 0) == (HEAP32[i6 >> 2] | 0)) i2 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 36 >> 2] & 127](i1) | 0; else i2 = HEAPU8[i2 >> 0] | 0;
  if (__ZNSt3__19__num_getIcE17__stage2_int_loopEciPcRS2_RjcRKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEPjRSD_S2_(i2 & 255, i14, i3, i15, i12, i7, i19, i16, i13, i11) | 0) break;
  i2 = HEAP32[i5 >> 2] | 0;
  if ((i2 | 0) == (HEAP32[i6 >> 2] | 0)) {
   FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 40 >> 2] & 127](i1) | 0;
   continue;
  } else {
   HEAP32[i5 >> 2] = i2 + 1;
   continue;
  }
 }
 i11 = HEAP8[i19 >> 0] | 0;
 i2 = HEAP32[i13 >> 2] | 0;
 if ((((i11 & 1) == 0 ? (i11 & 255) >>> 1 : HEAP32[i19 + 4 >> 2] | 0) | 0) != 0 ? (i2 - i16 | 0) < 160 : 0) {
  i11 = HEAP32[i12 >> 2] | 0;
  i12 = i2 + 4 | 0;
  HEAP32[i13 >> 2] = i12;
  HEAP32[i2 >> 2] = i11;
  i2 = i12;
 }
 i15 = __ZNSt3__125__num_get_signed_integralIxEET_PKcS3_Rji(i3, HEAP32[i15 >> 2] | 0, i23, i14) | 0;
 HEAP32[i17 >> 2] = i15;
 HEAP32[i17 + 4 >> 2] = tempRet0;
 __ZNSt3__116__check_groupingERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEPjS8_Rj(i19, i16, i2, i23);
 if (i1) {
  if ((HEAP32[i1 + 12 >> 2] | 0) == (HEAP32[i1 + 16 >> 2] | 0) ? (FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 36 >> 2] & 127](i1) | 0) == -1 : 0) {
   HEAP32[i21 >> 2] = 0;
   i1 = 0;
  }
 } else i1 = 0;
 i1 = (i1 | 0) == 0;
 do if (i4) {
  if ((HEAP32[i4 + 12 >> 2] | 0) == (HEAP32[i4 + 16 >> 2] | 0) ? (FUNCTION_TABLE_ii[HEAP32[(HEAP32[i4 >> 2] | 0) + 36 >> 2] & 127](i4) | 0) == -1 : 0) {
   HEAP32[i22 >> 2] = 0;
   i24 = 45;
   break;
  }
  if (!i1) i24 = 46;
 } else i24 = 45; while (0);
 if ((i24 | 0) == 45 ? i1 : 0) i24 = 46;
 if ((i24 | 0) == 46) HEAP32[i23 >> 2] = HEAP32[i23 >> 2] | 2;
 i24 = HEAP32[i21 >> 2] | 0;
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i18);
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i19);
 STACKTOP = i20;
 return i24 | 0;
}

function __ZN4wasm16PrintSExpression13visitFunctionEPNS_8FunctionE(i11, i10) {
 i11 = i11 | 0;
 i10 = i10 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i12 = 0, i13 = 0;
 i13 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i8 = i13 + 16 | 0;
 i7 = i13 + 12 | 0;
 i1 = i13 + 8 | 0;
 i5 = i13 + 4 | 0;
 i9 = i13;
 HEAP32[i11 + 24 >> 2] = i10;
 i2 = __Z12printOpeningRNSt3__113basic_ostreamIcNS_11char_traitsIcEEEEPKcb(HEAP32[i11 >> 2] | 0, 18218, 1) | 0;
 HEAP32[i7 >> 2] = HEAP32[i10 >> 2];
 HEAP32[i8 >> 2] = HEAP32[i7 >> 2];
 __ZN4wasmlsERNSt3__113basic_ostreamIcNS0_11char_traitsIcEEEENS_4NameE(i2, i8) | 0;
 i2 = i10 + 32 | 0;
 if (HEAP32[i2 >> 2] | 0) {
  i7 = __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(__ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(HEAP32[i11 >> 2] | 0, HEAP32[i11 + 12 >> 2] | 0) | 0, 18224) | 0;
  HEAP32[i1 >> 2] = HEAP32[i2 >> 2];
  HEAP32[i8 >> 2] = HEAP32[i1 >> 2];
  __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_c(__ZN4wasmlsERNSt3__113basic_ostreamIcNS0_11char_traitsIcEEEENS_4NameE(i7, i8) | 0, 41) | 0;
 }
 i6 = i10 + 8 | 0;
 i7 = i10 + 12 | 0;
 i1 = HEAP32[i7 >> 2] | 0;
 i2 = HEAP32[i6 >> 2] | 0;
 L4 : do if ((i1 | 0) != (i2 | 0)) {
  i4 = i11 + 12 | 0;
  i3 = 0;
  while (1) {
   if (i3 >>> 0 >= i1 - i2 >> 2 >>> 0) break L4;
   __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(HEAP32[i11 >> 2] | 0, HEAP32[i4 >> 2] | 0) | 0;
   i1 = __Z17printMinorOpeningRNSt3__113basic_ostreamIcNS_11char_traitsIcEEEEPKc(HEAP32[i11 >> 2] | 0, 18231) | 0;
   i2 = __ZN4wasm16PrintSExpression14printableLocalEj(i11, i3) | 0;
   HEAP32[i5 >> 2] = i2;
   HEAP32[i8 >> 2] = HEAP32[i5 >> 2];
   i1 = __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_c(__ZN4wasmlsERNSt3__113basic_ostreamIcNS0_11char_traitsIcEEEENS_4NameE(i1, i8) | 0, 32) | 0;
   __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(__ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(i1, __ZN4wasm13printWasmTypeENS_8WasmTypeE(__ZN4wasm8Function12getLocalTypeEj(i10, i3) | 0) | 0) | 0, 33621) | 0;
   i1 = HEAP32[i7 >> 2] | 0;
   i2 = HEAP32[i6 >> 2] | 0;
   i3 = i3 + 1 | 0;
  }
 } while (0);
 i1 = i10 + 4 | 0;
 if (HEAP32[i1 >> 2] | 0) {
  __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(HEAP32[i11 >> 2] | 0, HEAP32[i11 + 12 >> 2] | 0) | 0;
  i5 = __Z17printMinorOpeningRNSt3__113basic_ostreamIcNS_11char_traitsIcEEEEPKc(HEAP32[i11 >> 2] | 0, 18193) | 0;
  __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(__ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(i5, __ZN4wasm13printWasmTypeENS_8WasmTypeE(HEAP32[i1 >> 2] | 0) | 0) | 0, 33621) | 0;
 }
 __ZN4wasm16PrintSExpression9incIndentEv(i11);
 i2 = i11 + 4 | 0;
 i3 = i11 + 16 | 0;
 i1 = (HEAP32[i7 >> 2] | 0) - (HEAP32[i6 >> 2] | 0) >> 2;
 while (1) {
  if (i1 >>> 0 >= (__ZN4wasm8Function12getNumLocalsEv(i10) | 0) >>> 0) break;
  __Z8doIndentRNSt3__113basic_ostreamIcNS_11char_traitsIcEEEEj(HEAP32[i11 >> 2] | 0, HEAP32[i2 >> 2] | 0) | 0;
  i7 = __Z17printMinorOpeningRNSt3__113basic_ostreamIcNS_11char_traitsIcEEEEPKc(HEAP32[i11 >> 2] | 0, 18238) | 0;
  i6 = __ZN4wasm16PrintSExpression14printableLocalEj(i11, i1) | 0;
  HEAP32[i9 >> 2] = i6;
  HEAP32[i8 >> 2] = HEAP32[i9 >> 2];
  i7 = __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_c(__ZN4wasmlsERNSt3__113basic_ostreamIcNS0_11char_traitsIcEEEENS_4NameE(i7, i8) | 0, 32) | 0;
  __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(__ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(i7, __ZN4wasm13printWasmTypeENS_8WasmTypeE(__ZN4wasm8Function12getLocalTypeEj(i10, i1) | 0) | 0) | 0, 33621) | 0;
  __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(HEAP32[i11 >> 2] | 0, HEAP32[i3 >> 2] | 0) | 0;
  i1 = i1 + 1 | 0;
 }
 i1 = i10 + 36 | 0;
 L17 : do if (((HEAP8[i11 + 20 >> 0] | 0) == 0 ? __ZN4wasm10Expression2isINS_5BlockEEEbv(HEAP32[i1 >> 2] | 0) | 0 : 0) ? (i10 = (__ZN4wasm10Expression4castINS_5BlockEEEPT_v(HEAP32[i1 >> 2] | 0) | 0) + 8 | 0, (HEAP32[i10 >> 2] | 0) == 0) : 0) {
  i2 = __ZN4wasm10Expression4castINS_5BlockEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
  i1 = HEAP32[i2 + 16 >> 2] | 0;
  i2 = HEAP32[i2 + 12 >> 2] | 0;
  while (1) {
   if ((i2 | 0) == (i1 | 0)) break L17;
   __ZN4wasm16PrintSExpression13printFullLineEPNS_10ExpressionE(i11, HEAP32[i2 >> 2] | 0);
   i2 = i2 + 4 | 0;
  }
 } else i12 = 18; while (0);
 if ((i12 | 0) == 18) __ZN4wasm16PrintSExpression13printFullLineEPNS_10ExpressionE(i11, HEAP32[i1 >> 2] | 0);
 __ZN4wasm16PrintSExpression9decIndentEv(i11);
 STACKTOP = i13;
 return;
}

function __ZNKSt3__17num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE23__do_get_floating_pointIfEES4_S4_S4_RNS_8ios_baseERjRT_(i1, i23, i24, i2, i25, i19) {
 i1 = i1 | 0;
 i23 = i23 | 0;
 i24 = i24 | 0;
 i2 = i2 | 0;
 i25 = i25 | 0;
 i19 = i19 | 0;
 var i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, i18 = 0, i20 = 0, i21 = 0, i22 = 0, i26 = 0, d27 = 0.0;
 i22 = STACKTOP;
 STACKTOP = STACKTOP + 240 | 0;
 i12 = i22 + 200 | 0;
 i3 = i22 + 199 | 0;
 i4 = i22 + 198 | 0;
 i21 = i22 + 184 | 0;
 i20 = i22 + 172 | 0;
 i17 = i22 + 168 | 0;
 i18 = i22 + 8 | 0;
 i15 = i22 + 4 | 0;
 i14 = i22;
 i16 = i22 + 197 | 0;
 i13 = i22 + 196 | 0;
 __ZNSt3__19__num_getIcE19__stage2_float_prepERNS_8ios_baseEPcRcS5_(i21, i2, i12, i3, i4);
 i1 = 0;
 while (1) {
  if ((i1 | 0) == 3) break;
  HEAP32[i20 + (i1 << 2) >> 2] = 0;
  i1 = i1 + 1 | 0;
 }
 if (!(HEAP8[i20 >> 0] & 1)) i1 = 10; else i1 = (HEAP32[i20 >> 2] & -2) + -1 | 0;
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6resizeEjc(i20, i1, 0);
 i9 = i20 + 8 | 0;
 i10 = i20 + 1 | 0;
 i6 = (HEAP8[i20 >> 0] & 1) == 0 ? i10 : HEAP32[i9 >> 2] | 0;
 HEAP32[i17 >> 2] = i6;
 HEAP32[i15 >> 2] = i18;
 HEAP32[i14 >> 2] = 0;
 HEAP8[i16 >> 0] = 1;
 HEAP8[i13 >> 0] = 69;
 i11 = i20 + 4 | 0;
 i8 = HEAP8[i3 >> 0] | 0;
 i7 = HEAP8[i4 >> 0] | 0;
 i1 = HEAP32[i23 >> 2] | 0;
 i3 = i6;
 L8 : while (1) {
  if (i1) {
   if ((HEAP32[i1 + 12 >> 2] | 0) == (HEAP32[i1 + 16 >> 2] | 0) ? (FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 36 >> 2] & 127](i1) | 0) == -1 : 0) {
    HEAP32[i23 >> 2] = 0;
    i1 = 0;
   }
  } else i1 = 0;
  i2 = (i1 | 0) == 0;
  i4 = HEAP32[i24 >> 2] | 0;
  do if (i4) {
   if ((HEAP32[i4 + 12 >> 2] | 0) != (HEAP32[i4 + 16 >> 2] | 0)) if (i2) break; else break L8;
   if ((FUNCTION_TABLE_ii[HEAP32[(HEAP32[i4 >> 2] | 0) + 36 >> 2] & 127](i4) | 0) != -1) if (i2) break; else break L8; else {
    HEAP32[i24 >> 2] = 0;
    i26 = 16;
    break;
   }
  } else i26 = 16; while (0);
  if ((i26 | 0) == 16) {
   i26 = 0;
   if (i2) {
    i4 = 0;
    break;
   } else i4 = 0;
  }
  i5 = HEAP8[i20 >> 0] | 0;
  i5 = (i5 & 1) == 0 ? (i5 & 255) >>> 1 : HEAP32[i11 >> 2] | 0;
  if ((HEAP32[i17 >> 2] | 0) == (i3 + i5 | 0)) {
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6resizeEjc(i20, i5 << 1, 0);
   if (!(HEAP8[i20 >> 0] & 1)) i2 = 10; else i2 = (HEAP32[i20 >> 2] & -2) + -1 | 0;
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6resizeEjc(i20, i2, 0);
   i3 = (HEAP8[i20 >> 0] & 1) == 0 ? i10 : HEAP32[i9 >> 2] | 0;
   HEAP32[i17 >> 2] = i3 + i5;
  }
  i5 = i1 + 12 | 0;
  i2 = HEAP32[i5 >> 2] | 0;
  i6 = i1 + 16 | 0;
  if ((i2 | 0) == (HEAP32[i6 >> 2] | 0)) i2 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 36 >> 2] & 127](i1) | 0; else i2 = HEAPU8[i2 >> 0] | 0;
  if (__ZNSt3__19__num_getIcE19__stage2_float_loopEcRbRcPcRS4_ccRKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEPjRSE_RjS4_(i2 & 255, i16, i13, i3, i17, i8, i7, i21, i18, i15, i14, i12) | 0) break;
  i2 = HEAP32[i5 >> 2] | 0;
  if ((i2 | 0) == (HEAP32[i6 >> 2] | 0)) {
   FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 40 >> 2] & 127](i1) | 0;
   continue;
  } else {
   HEAP32[i5 >> 2] = i2 + 1;
   continue;
  }
 }
 i13 = HEAP8[i21 >> 0] | 0;
 i2 = HEAP32[i15 >> 2] | 0;
 if (!((HEAP8[i16 >> 0] | 0) == 0 ? 1 : (((i13 & 1) == 0 ? (i13 & 255) >>> 1 : HEAP32[i21 + 4 >> 2] | 0) | 0) == 0) ? (i2 - i18 | 0) < 160 : 0) {
  i14 = HEAP32[i14 >> 2] | 0;
  i16 = i2 + 4 | 0;
  HEAP32[i15 >> 2] = i16;
  HEAP32[i2 >> 2] = i14;
  i2 = i16;
 }
 d27 = +__ZNSt3__115__num_get_floatIfEET_PKcS3_Rj(i3, HEAP32[i17 >> 2] | 0, i25);
 HEAPF32[i19 >> 2] = d27;
 __ZNSt3__116__check_groupingERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEPjS8_Rj(i21, i18, i2, i25);
 if (i1) {
  if ((HEAP32[i1 + 12 >> 2] | 0) == (HEAP32[i1 + 16 >> 2] | 0) ? (FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 36 >> 2] & 127](i1) | 0) == -1 : 0) {
   HEAP32[i23 >> 2] = 0;
   i1 = 0;
  }
 } else i1 = 0;
 i1 = (i1 | 0) == 0;
 do if (i4) {
  if ((HEAP32[i4 + 12 >> 2] | 0) == (HEAP32[i4 + 16 >> 2] | 0) ? (FUNCTION_TABLE_ii[HEAP32[(HEAP32[i4 >> 2] | 0) + 36 >> 2] & 127](i4) | 0) == -1 : 0) {
   HEAP32[i24 >> 2] = 0;
   i26 = 41;
   break;
  }
  if (!i1) i26 = 42;
 } else i26 = 41; while (0);
 if ((i26 | 0) == 41 ? i1 : 0) i26 = 42;
 if ((i26 | 0) == 42) HEAP32[i25 >> 2] = HEAP32[i25 >> 2] | 2;
 i26 = HEAP32[i23 >> 2] | 0;
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i20);
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i21);
 STACKTOP = i22;
 return i26 | 0;
}

function __ZNKSt3__17num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE23__do_get_floating_pointIeEES4_S4_S4_RNS_8ios_baseERjRT_(i1, i23, i24, i2, i25, i19) {
 i1 = i1 | 0;
 i23 = i23 | 0;
 i24 = i24 | 0;
 i2 = i2 | 0;
 i25 = i25 | 0;
 i19 = i19 | 0;
 var i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, i18 = 0, i20 = 0, i21 = 0, i22 = 0, i26 = 0, d27 = 0.0;
 i22 = STACKTOP;
 STACKTOP = STACKTOP + 240 | 0;
 i12 = i22 + 200 | 0;
 i3 = i22 + 199 | 0;
 i4 = i22 + 198 | 0;
 i21 = i22 + 184 | 0;
 i20 = i22 + 172 | 0;
 i17 = i22 + 168 | 0;
 i18 = i22 + 8 | 0;
 i15 = i22 + 4 | 0;
 i14 = i22;
 i16 = i22 + 197 | 0;
 i13 = i22 + 196 | 0;
 __ZNSt3__19__num_getIcE19__stage2_float_prepERNS_8ios_baseEPcRcS5_(i21, i2, i12, i3, i4);
 i1 = 0;
 while (1) {
  if ((i1 | 0) == 3) break;
  HEAP32[i20 + (i1 << 2) >> 2] = 0;
  i1 = i1 + 1 | 0;
 }
 if (!(HEAP8[i20 >> 0] & 1)) i1 = 10; else i1 = (HEAP32[i20 >> 2] & -2) + -1 | 0;
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6resizeEjc(i20, i1, 0);
 i9 = i20 + 8 | 0;
 i10 = i20 + 1 | 0;
 i6 = (HEAP8[i20 >> 0] & 1) == 0 ? i10 : HEAP32[i9 >> 2] | 0;
 HEAP32[i17 >> 2] = i6;
 HEAP32[i15 >> 2] = i18;
 HEAP32[i14 >> 2] = 0;
 HEAP8[i16 >> 0] = 1;
 HEAP8[i13 >> 0] = 69;
 i11 = i20 + 4 | 0;
 i8 = HEAP8[i3 >> 0] | 0;
 i7 = HEAP8[i4 >> 0] | 0;
 i1 = HEAP32[i23 >> 2] | 0;
 i3 = i6;
 L8 : while (1) {
  if (i1) {
   if ((HEAP32[i1 + 12 >> 2] | 0) == (HEAP32[i1 + 16 >> 2] | 0) ? (FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 36 >> 2] & 127](i1) | 0) == -1 : 0) {
    HEAP32[i23 >> 2] = 0;
    i1 = 0;
   }
  } else i1 = 0;
  i2 = (i1 | 0) == 0;
  i4 = HEAP32[i24 >> 2] | 0;
  do if (i4) {
   if ((HEAP32[i4 + 12 >> 2] | 0) != (HEAP32[i4 + 16 >> 2] | 0)) if (i2) break; else break L8;
   if ((FUNCTION_TABLE_ii[HEAP32[(HEAP32[i4 >> 2] | 0) + 36 >> 2] & 127](i4) | 0) != -1) if (i2) break; else break L8; else {
    HEAP32[i24 >> 2] = 0;
    i26 = 16;
    break;
   }
  } else i26 = 16; while (0);
  if ((i26 | 0) == 16) {
   i26 = 0;
   if (i2) {
    i4 = 0;
    break;
   } else i4 = 0;
  }
  i5 = HEAP8[i20 >> 0] | 0;
  i5 = (i5 & 1) == 0 ? (i5 & 255) >>> 1 : HEAP32[i11 >> 2] | 0;
  if ((HEAP32[i17 >> 2] | 0) == (i3 + i5 | 0)) {
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6resizeEjc(i20, i5 << 1, 0);
   if (!(HEAP8[i20 >> 0] & 1)) i2 = 10; else i2 = (HEAP32[i20 >> 2] & -2) + -1 | 0;
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6resizeEjc(i20, i2, 0);
   i3 = (HEAP8[i20 >> 0] & 1) == 0 ? i10 : HEAP32[i9 >> 2] | 0;
   HEAP32[i17 >> 2] = i3 + i5;
  }
  i5 = i1 + 12 | 0;
  i2 = HEAP32[i5 >> 2] | 0;
  i6 = i1 + 16 | 0;
  if ((i2 | 0) == (HEAP32[i6 >> 2] | 0)) i2 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 36 >> 2] & 127](i1) | 0; else i2 = HEAPU8[i2 >> 0] | 0;
  if (__ZNSt3__19__num_getIcE19__stage2_float_loopEcRbRcPcRS4_ccRKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEPjRSE_RjS4_(i2 & 255, i16, i13, i3, i17, i8, i7, i21, i18, i15, i14, i12) | 0) break;
  i2 = HEAP32[i5 >> 2] | 0;
  if ((i2 | 0) == (HEAP32[i6 >> 2] | 0)) {
   FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 40 >> 2] & 127](i1) | 0;
   continue;
  } else {
   HEAP32[i5 >> 2] = i2 + 1;
   continue;
  }
 }
 i13 = HEAP8[i21 >> 0] | 0;
 i2 = HEAP32[i15 >> 2] | 0;
 if (!((HEAP8[i16 >> 0] | 0) == 0 ? 1 : (((i13 & 1) == 0 ? (i13 & 255) >>> 1 : HEAP32[i21 + 4 >> 2] | 0) | 0) == 0) ? (i2 - i18 | 0) < 160 : 0) {
  i14 = HEAP32[i14 >> 2] | 0;
  i16 = i2 + 4 | 0;
  HEAP32[i15 >> 2] = i16;
  HEAP32[i2 >> 2] = i14;
  i2 = i16;
 }
 d27 = +__ZNSt3__115__num_get_floatIeEET_PKcS3_Rj(i3, HEAP32[i17 >> 2] | 0, i25);
 HEAPF64[i19 >> 3] = d27;
 __ZNSt3__116__check_groupingERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEPjS8_Rj(i21, i18, i2, i25);
 if (i1) {
  if ((HEAP32[i1 + 12 >> 2] | 0) == (HEAP32[i1 + 16 >> 2] | 0) ? (FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 36 >> 2] & 127](i1) | 0) == -1 : 0) {
   HEAP32[i23 >> 2] = 0;
   i1 = 0;
  }
 } else i1 = 0;
 i1 = (i1 | 0) == 0;
 do if (i4) {
  if ((HEAP32[i4 + 12 >> 2] | 0) == (HEAP32[i4 + 16 >> 2] | 0) ? (FUNCTION_TABLE_ii[HEAP32[(HEAP32[i4 >> 2] | 0) + 36 >> 2] & 127](i4) | 0) == -1 : 0) {
   HEAP32[i24 >> 2] = 0;
   i26 = 41;
   break;
  }
  if (!i1) i26 = 42;
 } else i26 = 41; while (0);
 if ((i26 | 0) == 41 ? i1 : 0) i26 = 42;
 if ((i26 | 0) == 42) HEAP32[i25 >> 2] = HEAP32[i25 >> 2] | 2;
 i26 = HEAP32[i23 >> 2] | 0;
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i20);
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i21);
 STACKTOP = i22;
 return i26 | 0;
}

function __ZNKSt3__17num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE23__do_get_floating_pointIdEES4_S4_S4_RNS_8ios_baseERjRT_(i1, i23, i24, i2, i25, i19) {
 i1 = i1 | 0;
 i23 = i23 | 0;
 i24 = i24 | 0;
 i2 = i2 | 0;
 i25 = i25 | 0;
 i19 = i19 | 0;
 var i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, i18 = 0, i20 = 0, i21 = 0, i22 = 0, i26 = 0, d27 = 0.0;
 i22 = STACKTOP;
 STACKTOP = STACKTOP + 240 | 0;
 i12 = i22 + 200 | 0;
 i3 = i22 + 199 | 0;
 i4 = i22 + 198 | 0;
 i21 = i22 + 184 | 0;
 i20 = i22 + 172 | 0;
 i17 = i22 + 168 | 0;
 i18 = i22 + 8 | 0;
 i15 = i22 + 4 | 0;
 i14 = i22;
 i16 = i22 + 197 | 0;
 i13 = i22 + 196 | 0;
 __ZNSt3__19__num_getIcE19__stage2_float_prepERNS_8ios_baseEPcRcS5_(i21, i2, i12, i3, i4);
 i1 = 0;
 while (1) {
  if ((i1 | 0) == 3) break;
  HEAP32[i20 + (i1 << 2) >> 2] = 0;
  i1 = i1 + 1 | 0;
 }
 if (!(HEAP8[i20 >> 0] & 1)) i1 = 10; else i1 = (HEAP32[i20 >> 2] & -2) + -1 | 0;
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6resizeEjc(i20, i1, 0);
 i9 = i20 + 8 | 0;
 i10 = i20 + 1 | 0;
 i6 = (HEAP8[i20 >> 0] & 1) == 0 ? i10 : HEAP32[i9 >> 2] | 0;
 HEAP32[i17 >> 2] = i6;
 HEAP32[i15 >> 2] = i18;
 HEAP32[i14 >> 2] = 0;
 HEAP8[i16 >> 0] = 1;
 HEAP8[i13 >> 0] = 69;
 i11 = i20 + 4 | 0;
 i8 = HEAP8[i3 >> 0] | 0;
 i7 = HEAP8[i4 >> 0] | 0;
 i1 = HEAP32[i23 >> 2] | 0;
 i3 = i6;
 L8 : while (1) {
  if (i1) {
   if ((HEAP32[i1 + 12 >> 2] | 0) == (HEAP32[i1 + 16 >> 2] | 0) ? (FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 36 >> 2] & 127](i1) | 0) == -1 : 0) {
    HEAP32[i23 >> 2] = 0;
    i1 = 0;
   }
  } else i1 = 0;
  i2 = (i1 | 0) == 0;
  i4 = HEAP32[i24 >> 2] | 0;
  do if (i4) {
   if ((HEAP32[i4 + 12 >> 2] | 0) != (HEAP32[i4 + 16 >> 2] | 0)) if (i2) break; else break L8;
   if ((FUNCTION_TABLE_ii[HEAP32[(HEAP32[i4 >> 2] | 0) + 36 >> 2] & 127](i4) | 0) != -1) if (i2) break; else break L8; else {
    HEAP32[i24 >> 2] = 0;
    i26 = 16;
    break;
   }
  } else i26 = 16; while (0);
  if ((i26 | 0) == 16) {
   i26 = 0;
   if (i2) {
    i4 = 0;
    break;
   } else i4 = 0;
  }
  i5 = HEAP8[i20 >> 0] | 0;
  i5 = (i5 & 1) == 0 ? (i5 & 255) >>> 1 : HEAP32[i11 >> 2] | 0;
  if ((HEAP32[i17 >> 2] | 0) == (i3 + i5 | 0)) {
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6resizeEjc(i20, i5 << 1, 0);
   if (!(HEAP8[i20 >> 0] & 1)) i2 = 10; else i2 = (HEAP32[i20 >> 2] & -2) + -1 | 0;
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6resizeEjc(i20, i2, 0);
   i3 = (HEAP8[i20 >> 0] & 1) == 0 ? i10 : HEAP32[i9 >> 2] | 0;
   HEAP32[i17 >> 2] = i3 + i5;
  }
  i5 = i1 + 12 | 0;
  i2 = HEAP32[i5 >> 2] | 0;
  i6 = i1 + 16 | 0;
  if ((i2 | 0) == (HEAP32[i6 >> 2] | 0)) i2 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 36 >> 2] & 127](i1) | 0; else i2 = HEAPU8[i2 >> 0] | 0;
  if (__ZNSt3__19__num_getIcE19__stage2_float_loopEcRbRcPcRS4_ccRKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEPjRSE_RjS4_(i2 & 255, i16, i13, i3, i17, i8, i7, i21, i18, i15, i14, i12) | 0) break;
  i2 = HEAP32[i5 >> 2] | 0;
  if ((i2 | 0) == (HEAP32[i6 >> 2] | 0)) {
   FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 40 >> 2] & 127](i1) | 0;
   continue;
  } else {
   HEAP32[i5 >> 2] = i2 + 1;
   continue;
  }
 }
 i13 = HEAP8[i21 >> 0] | 0;
 i2 = HEAP32[i15 >> 2] | 0;
 if (!((HEAP8[i16 >> 0] | 0) == 0 ? 1 : (((i13 & 1) == 0 ? (i13 & 255) >>> 1 : HEAP32[i21 + 4 >> 2] | 0) | 0) == 0) ? (i2 - i18 | 0) < 160 : 0) {
  i14 = HEAP32[i14 >> 2] | 0;
  i16 = i2 + 4 | 0;
  HEAP32[i15 >> 2] = i16;
  HEAP32[i2 >> 2] = i14;
  i2 = i16;
 }
 d27 = +__ZNSt3__115__num_get_floatIdEET_PKcS3_Rj(i3, HEAP32[i17 >> 2] | 0, i25);
 HEAPF64[i19 >> 3] = d27;
 __ZNSt3__116__check_groupingERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEPjS8_Rj(i21, i18, i2, i25);
 if (i1) {
  if ((HEAP32[i1 + 12 >> 2] | 0) == (HEAP32[i1 + 16 >> 2] | 0) ? (FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 36 >> 2] & 127](i1) | 0) == -1 : 0) {
   HEAP32[i23 >> 2] = 0;
   i1 = 0;
  }
 } else i1 = 0;
 i1 = (i1 | 0) == 0;
 do if (i4) {
  if ((HEAP32[i4 + 12 >> 2] | 0) == (HEAP32[i4 + 16 >> 2] | 0) ? (FUNCTION_TABLE_ii[HEAP32[(HEAP32[i4 >> 2] | 0) + 36 >> 2] & 127](i4) | 0) == -1 : 0) {
   HEAP32[i24 >> 2] = 0;
   i26 = 41;
   break;
  }
  if (!i1) i26 = 42;
 } else i26 = 41; while (0);
 if ((i26 | 0) == 41 ? i1 : 0) i26 = 42;
 if ((i26 | 0) == 42) HEAP32[i25 >> 2] = HEAP32[i25 >> 2] | 2;
 i26 = HEAP32[i23 >> 2] | 0;
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i20);
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i21);
 STACKTOP = i22;
 return i26 | 0;
}

function __ZN4wasm14SimplifyLocals19optimizeBlockReturnEPNS_5BlockE(i17, i8) {
 i17 = i17 | 0;
 i8 = i8 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i18 = 0;
 i18 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i14 = i18 + 12 | 0;
 i16 = i18 + 16 | 0;
 i13 = i18 + 8 | 0;
 i7 = i18 + 4 | 0;
 i12 = i18;
 HEAP32[i14 >> 2] = i8;
 i15 = i8;
 if (HEAP32[i8 + 8 >> 2] | 0 ? (i1 = i8 + 8 | 0, (__ZNKSt3__16__treeIN4wasm4NameENS_4lessIS2_EENS_9allocatorIS2_EEE14__count_uniqueIS2_EEjRKT_(i17 + 64 | 0, i1) | 0) == 0) : 0) {
  i5 = i17 + 52 | 0;
  i11 = __ZNSt3__13mapIN4wasm4NameENS_6vectorINS1_14SimplifyLocals10BlockBreakENS_9allocatorIS5_EEEENS_4lessIS2_EENS6_INS_4pairIKS2_S8_EEEEEixERSC_(i5, i1) | 0;
  i10 = i16 + 4 | 0;
  i2 = HEAP32[i11 >> 2] | 0;
  HEAP32[i16 >> 2] = i2;
  i6 = i11 + 4 | 0;
  i3 = HEAP32[i6 >> 2] | 0;
  HEAP32[i10 >> 2] = i3;
  i4 = i11 + 8 | 0;
  HEAP32[i16 + 8 >> 2] = HEAP32[i4 >> 2];
  HEAP32[i4 >> 2] = 0;
  HEAP32[i6 >> 2] = 0;
  HEAP32[i11 >> 2] = 0;
  __ZNSt3__16__treeINS_12__value_typeIN4wasm4NameENS_6vectorINS2_14SimplifyLocals10BlockBreakENS_9allocatorIS6_EEEEEENS_19__map_value_compareIS3_SA_NS_4lessIS3_EELb1EEENS7_ISA_EEE14__erase_uniqueIS3_EEjRKT_(i5, i1) | 0;
  i5 = i2;
  if ((i3 | 0) != (i2 | 0)) {
   if (HEAP32[(HEAP32[i5 >> 2] | 0) + 12 >> 2] | 0) ___assert_fail(23151, 22896, 257, 23172);
   HEAP32[i13 >> 2] = -1;
   i11 = i17 + 40 | 0;
   i6 = i17 + 44 | 0;
   i1 = i3 - i2 >> 4;
   i3 = HEAP32[i11 >> 2] | 0;
   L9 : while (1) {
    if ((i3 | 0) == (i6 | 0)) break;
    i2 = HEAP32[i3 + 16 >> 2] | 0;
    HEAP32[i7 >> 2] = i2;
    i4 = 0;
    while (1) {
     if (i4 >>> 0 >= i1 >>> 0) {
      i7 = i2;
      i9 = 11;
      break L9;
     }
     if (!(__ZNKSt3__16__treeINS_12__value_typeIjN4wasm14SimplifyLocals12SinkableInfoEEENS_19__map_value_compareIjS5_NS_4lessIjEELb1EEENS_9allocatorIS5_EEE14__count_uniqueIjEEjRKT_(i5 + (i4 << 4) + 4 | 0, i7) | 0)) break; else i4 = i4 + 1 | 0;
    }
    i3 = __ZNSt3__111__tree_nextIPNS_16__tree_node_baseIPvEEEET_S5_(i3) | 0;
   }
   do if ((i9 | 0) == 11) {
    HEAP32[i13 >> 2] = i7;
    i2 = i8 + 12 | 0;
    i1 = i8 + 16 | 0;
    i9 = HEAP32[i1 >> 2] | 0;
    if ((i9 | 0) != (HEAP32[i2 >> 2] | 0) ? (HEAP32[HEAP32[i9 + -4 >> 2] >> 2] | 0) == 19 : 0) {
     i5 = __ZNSt3__13mapIjN4wasm14SimplifyLocals12SinkableInfoENS_4lessIjEENS_9allocatorINS_4pairIKjS3_EEEEE2atERS8_(i11, i13) | 0;
     i5 = HEAP32[i5 >> 2] | 0;
     i9 = (__ZN4wasm10Expression4castINS_8SetLocalEEEPT_v(HEAP32[i5 >> 2] | 0) | 0) + 12 | 0;
     i9 = HEAP32[i9 >> 2] | 0;
     i6 = HEAP32[i2 >> 2] | 0;
     HEAP32[i6 + (((HEAP32[i1 >> 2] | 0) - i6 >> 2) + -1 << 2) >> 2] = i9;
     i6 = HEAP32[i14 >> 2] | 0;
     HEAP32[i6 + 4 >> 2] = HEAP32[i9 + 4 >> 2];
     i1 = HEAP32[i5 >> 2] | 0;
     HEAP32[i1 >> 2] = 19;
     HEAP32[i1 + 4 >> 2] = 0;
     i1 = HEAP32[i16 >> 2] | 0;
     i2 = (HEAP32[i10 >> 2] | 0) - i1 >> 4;
     i5 = 0;
     while (1) {
      if (i5 >>> 0 >= i2 >>> 0) {
       i9 = 19;
       break;
      }
      i3 = __ZNSt3__13mapIjN4wasm14SimplifyLocals12SinkableInfoENS_4lessIjEENS_9allocatorINS_4pairIKjS3_EEEEE2atERS8_(i1 + (i5 << 4) + 4 | 0, i13) | 0;
      i3 = HEAP32[i3 >> 2] | 0;
      i4 = i1 + (i5 << 4) | 0;
      if (HEAP32[(HEAP32[i4 >> 2] | 0) + 12 >> 2] | 0) {
       i9 = 21;
       break;
      }
      i10 = (__ZN4wasm10Expression4castINS_8SetLocalEEEPT_v(HEAP32[i3 >> 2] | 0) | 0) + 12 | 0;
      HEAP32[(HEAP32[i4 >> 2] | 0) + 12 >> 2] = HEAP32[i10 >> 2];
      i10 = HEAP32[i3 >> 2] | 0;
      HEAP32[i10 >> 2] = 19;
      HEAP32[i10 + 4 >> 2] = 0;
      i5 = i5 + 1 | 0;
     }
     if ((i9 | 0) == 19) {
      HEAP32[i12 >> 2] = (HEAP32[i17 + 36 >> 2] | 0) + 88;
      i15 = __ZN4wasm7Builder12makeSetLocalEjPNS_10ExpressionE(i12, i7, i6) | 0;
      HEAP32[i17 + 16 >> 2] = i15;
      __ZNSt3__16__treeINS_12__value_typeIjN4wasm14SimplifyLocals12SinkableInfoEEENS_19__map_value_compareIjS5_NS_4lessIjEELb1EEENS_9allocatorIS5_EEE5clearEv(i11);
      HEAP8[i17 + 88 >> 0] = 1;
      break;
     } else if ((i9 | 0) == 21) ___assert_fail(23192, 22896, 295, 23172);
    }
    i1 = i17 + 108 | 0;
    i2 = HEAP32[i1 >> 2] | 0;
    if ((i2 | 0) == (HEAP32[i17 + 112 >> 2] | 0)) {
     __ZNSt3__16vectorIPN4wasm5BlockENS_9allocatorIS3_EEE21__push_back_slow_pathIRKS3_EEvOT_(i17 + 104 | 0, i14);
     break;
    } else {
     HEAP32[i2 >> 2] = i15;
     HEAP32[i1 >> 2] = (HEAP32[i1 >> 2] | 0) + 4;
     break;
    }
   } while (0);
  }
  __ZNSt3__113__vector_baseIN4wasm14SimplifyLocals10BlockBreakENS_9allocatorIS3_EEED2Ev(i16);
 }
 STACKTOP = i18;
 return;
}

function __ZNKSt3__17num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE17__do_get_unsignedItEES4_S4_S4_RNS_8ios_baseERjRT_(i1, i21, i22, i2, i23, i17) {
 i1 = i1 | 0;
 i21 = i21 | 0;
 i22 = i22 | 0;
 i2 = i2 | 0;
 i23 = i23 | 0;
 i17 = i17 | 0;
 var i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i18 = 0, i19 = 0, i20 = 0, i24 = 0;
 i20 = STACKTOP;
 STACKTOP = STACKTOP + 224 | 0;
 i11 = i20 + 198 | 0;
 i3 = i20 + 196 | 0;
 i19 = i20 + 184 | 0;
 i18 = i20 + 172 | 0;
 i15 = i20 + 168 | 0;
 i16 = i20 + 8 | 0;
 i13 = i20 + 4 | 0;
 i12 = i20;
 switch (HEAP32[i2 + 4 >> 2] & 74 | 0) {
 case 64:
  {
   i14 = 8;
   break;
  }
 case 8:
  {
   i14 = 16;
   break;
  }
 case 0:
  {
   i14 = 0;
   break;
  }
 default:
  i14 = 10;
 }
 __ZNSt3__19__num_getIcE17__stage2_int_prepERNS_8ios_baseEPcRc(i19, i2, i11, i3);
 i1 = 0;
 while (1) {
  if ((i1 | 0) == 3) break;
  HEAP32[i18 + (i1 << 2) >> 2] = 0;
  i1 = i1 + 1 | 0;
 }
 if (!(HEAP8[i18 >> 0] & 1)) i1 = 10; else i1 = (HEAP32[i18 >> 2] & -2) + -1 | 0;
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6resizeEjc(i18, i1, 0);
 i8 = i18 + 8 | 0;
 i9 = i18 + 1 | 0;
 i6 = (HEAP8[i18 >> 0] & 1) == 0 ? i9 : HEAP32[i8 >> 2] | 0;
 HEAP32[i15 >> 2] = i6;
 HEAP32[i13 >> 2] = i16;
 HEAP32[i12 >> 2] = 0;
 i10 = i18 + 4 | 0;
 i7 = HEAP8[i3 >> 0] | 0;
 i1 = HEAP32[i21 >> 2] | 0;
 i3 = i6;
 L13 : while (1) {
  if (i1) {
   if ((HEAP32[i1 + 12 >> 2] | 0) == (HEAP32[i1 + 16 >> 2] | 0) ? (FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 36 >> 2] & 127](i1) | 0) == -1 : 0) {
    HEAP32[i21 >> 2] = 0;
    i1 = 0;
   }
  } else i1 = 0;
  i2 = (i1 | 0) == 0;
  i4 = HEAP32[i22 >> 2] | 0;
  do if (i4) {
   if ((HEAP32[i4 + 12 >> 2] | 0) != (HEAP32[i4 + 16 >> 2] | 0)) if (i2) break; else break L13;
   if ((FUNCTION_TABLE_ii[HEAP32[(HEAP32[i4 >> 2] | 0) + 36 >> 2] & 127](i4) | 0) != -1) if (i2) break; else break L13; else {
    HEAP32[i22 >> 2] = 0;
    i24 = 20;
    break;
   }
  } else i24 = 20; while (0);
  if ((i24 | 0) == 20) {
   i24 = 0;
   if (i2) {
    i4 = 0;
    break;
   } else i4 = 0;
  }
  i5 = HEAP8[i18 >> 0] | 0;
  i5 = (i5 & 1) == 0 ? (i5 & 255) >>> 1 : HEAP32[i10 >> 2] | 0;
  if ((HEAP32[i15 >> 2] | 0) == (i3 + i5 | 0)) {
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6resizeEjc(i18, i5 << 1, 0);
   if (!(HEAP8[i18 >> 0] & 1)) i2 = 10; else i2 = (HEAP32[i18 >> 2] & -2) + -1 | 0;
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6resizeEjc(i18, i2, 0);
   i3 = (HEAP8[i18 >> 0] & 1) == 0 ? i9 : HEAP32[i8 >> 2] | 0;
   HEAP32[i15 >> 2] = i3 + i5;
  }
  i5 = i1 + 12 | 0;
  i2 = HEAP32[i5 >> 2] | 0;
  i6 = i1 + 16 | 0;
  if ((i2 | 0) == (HEAP32[i6 >> 2] | 0)) i2 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 36 >> 2] & 127](i1) | 0; else i2 = HEAPU8[i2 >> 0] | 0;
  if (__ZNSt3__19__num_getIcE17__stage2_int_loopEciPcRS2_RjcRKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEPjRSD_S2_(i2 & 255, i14, i3, i15, i12, i7, i19, i16, i13, i11) | 0) break;
  i2 = HEAP32[i5 >> 2] | 0;
  if ((i2 | 0) == (HEAP32[i6 >> 2] | 0)) {
   FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 40 >> 2] & 127](i1) | 0;
   continue;
  } else {
   HEAP32[i5 >> 2] = i2 + 1;
   continue;
  }
 }
 i11 = HEAP8[i19 >> 0] | 0;
 i2 = HEAP32[i13 >> 2] | 0;
 if ((((i11 & 1) == 0 ? (i11 & 255) >>> 1 : HEAP32[i19 + 4 >> 2] | 0) | 0) != 0 ? (i2 - i16 | 0) < 160 : 0) {
  i11 = HEAP32[i12 >> 2] | 0;
  i12 = i2 + 4 | 0;
  HEAP32[i13 >> 2] = i12;
  HEAP32[i2 >> 2] = i11;
  i2 = i12;
 }
 i15 = __ZNSt3__127__num_get_unsigned_integralItEET_PKcS3_Rji(i3, HEAP32[i15 >> 2] | 0, i23, i14) | 0;
 HEAP16[i17 >> 1] = i15;
 __ZNSt3__116__check_groupingERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEPjS8_Rj(i19, i16, i2, i23);
 if (i1) {
  if ((HEAP32[i1 + 12 >> 2] | 0) == (HEAP32[i1 + 16 >> 2] | 0) ? (FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 36 >> 2] & 127](i1) | 0) == -1 : 0) {
   HEAP32[i21 >> 2] = 0;
   i1 = 0;
  }
 } else i1 = 0;
 i1 = (i1 | 0) == 0;
 do if (i4) {
  if ((HEAP32[i4 + 12 >> 2] | 0) == (HEAP32[i4 + 16 >> 2] | 0) ? (FUNCTION_TABLE_ii[HEAP32[(HEAP32[i4 >> 2] | 0) + 36 >> 2] & 127](i4) | 0) == -1 : 0) {
   HEAP32[i22 >> 2] = 0;
   i24 = 45;
   break;
  }
  if (!i1) i24 = 46;
 } else i24 = 45; while (0);
 if ((i24 | 0) == 45 ? i1 : 0) i24 = 46;
 if ((i24 | 0) == 46) HEAP32[i23 >> 2] = HEAP32[i23 >> 2] | 2;
 i24 = HEAP32[i21 >> 2] | 0;
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i18);
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i19);
 STACKTOP = i20;
 return i24 | 0;
}

function __ZNKSt3__17num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE17__do_get_unsignedImEES4_S4_S4_RNS_8ios_baseERjRT_(i1, i21, i22, i2, i23, i17) {
 i1 = i1 | 0;
 i21 = i21 | 0;
 i22 = i22 | 0;
 i2 = i2 | 0;
 i23 = i23 | 0;
 i17 = i17 | 0;
 var i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i18 = 0, i19 = 0, i20 = 0, i24 = 0;
 i20 = STACKTOP;
 STACKTOP = STACKTOP + 224 | 0;
 i11 = i20 + 198 | 0;
 i3 = i20 + 196 | 0;
 i19 = i20 + 184 | 0;
 i18 = i20 + 172 | 0;
 i15 = i20 + 168 | 0;
 i16 = i20 + 8 | 0;
 i13 = i20 + 4 | 0;
 i12 = i20;
 switch (HEAP32[i2 + 4 >> 2] & 74 | 0) {
 case 64:
  {
   i14 = 8;
   break;
  }
 case 8:
  {
   i14 = 16;
   break;
  }
 case 0:
  {
   i14 = 0;
   break;
  }
 default:
  i14 = 10;
 }
 __ZNSt3__19__num_getIcE17__stage2_int_prepERNS_8ios_baseEPcRc(i19, i2, i11, i3);
 i1 = 0;
 while (1) {
  if ((i1 | 0) == 3) break;
  HEAP32[i18 + (i1 << 2) >> 2] = 0;
  i1 = i1 + 1 | 0;
 }
 if (!(HEAP8[i18 >> 0] & 1)) i1 = 10; else i1 = (HEAP32[i18 >> 2] & -2) + -1 | 0;
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6resizeEjc(i18, i1, 0);
 i8 = i18 + 8 | 0;
 i9 = i18 + 1 | 0;
 i6 = (HEAP8[i18 >> 0] & 1) == 0 ? i9 : HEAP32[i8 >> 2] | 0;
 HEAP32[i15 >> 2] = i6;
 HEAP32[i13 >> 2] = i16;
 HEAP32[i12 >> 2] = 0;
 i10 = i18 + 4 | 0;
 i7 = HEAP8[i3 >> 0] | 0;
 i1 = HEAP32[i21 >> 2] | 0;
 i3 = i6;
 L13 : while (1) {
  if (i1) {
   if ((HEAP32[i1 + 12 >> 2] | 0) == (HEAP32[i1 + 16 >> 2] | 0) ? (FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 36 >> 2] & 127](i1) | 0) == -1 : 0) {
    HEAP32[i21 >> 2] = 0;
    i1 = 0;
   }
  } else i1 = 0;
  i2 = (i1 | 0) == 0;
  i4 = HEAP32[i22 >> 2] | 0;
  do if (i4) {
   if ((HEAP32[i4 + 12 >> 2] | 0) != (HEAP32[i4 + 16 >> 2] | 0)) if (i2) break; else break L13;
   if ((FUNCTION_TABLE_ii[HEAP32[(HEAP32[i4 >> 2] | 0) + 36 >> 2] & 127](i4) | 0) != -1) if (i2) break; else break L13; else {
    HEAP32[i22 >> 2] = 0;
    i24 = 20;
    break;
   }
  } else i24 = 20; while (0);
  if ((i24 | 0) == 20) {
   i24 = 0;
   if (i2) {
    i4 = 0;
    break;
   } else i4 = 0;
  }
  i5 = HEAP8[i18 >> 0] | 0;
  i5 = (i5 & 1) == 0 ? (i5 & 255) >>> 1 : HEAP32[i10 >> 2] | 0;
  if ((HEAP32[i15 >> 2] | 0) == (i3 + i5 | 0)) {
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6resizeEjc(i18, i5 << 1, 0);
   if (!(HEAP8[i18 >> 0] & 1)) i2 = 10; else i2 = (HEAP32[i18 >> 2] & -2) + -1 | 0;
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6resizeEjc(i18, i2, 0);
   i3 = (HEAP8[i18 >> 0] & 1) == 0 ? i9 : HEAP32[i8 >> 2] | 0;
   HEAP32[i15 >> 2] = i3 + i5;
  }
  i5 = i1 + 12 | 0;
  i2 = HEAP32[i5 >> 2] | 0;
  i6 = i1 + 16 | 0;
  if ((i2 | 0) == (HEAP32[i6 >> 2] | 0)) i2 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 36 >> 2] & 127](i1) | 0; else i2 = HEAPU8[i2 >> 0] | 0;
  if (__ZNSt3__19__num_getIcE17__stage2_int_loopEciPcRS2_RjcRKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEPjRSD_S2_(i2 & 255, i14, i3, i15, i12, i7, i19, i16, i13, i11) | 0) break;
  i2 = HEAP32[i5 >> 2] | 0;
  if ((i2 | 0) == (HEAP32[i6 >> 2] | 0)) {
   FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 40 >> 2] & 127](i1) | 0;
   continue;
  } else {
   HEAP32[i5 >> 2] = i2 + 1;
   continue;
  }
 }
 i11 = HEAP8[i19 >> 0] | 0;
 i2 = HEAP32[i13 >> 2] | 0;
 if ((((i11 & 1) == 0 ? (i11 & 255) >>> 1 : HEAP32[i19 + 4 >> 2] | 0) | 0) != 0 ? (i2 - i16 | 0) < 160 : 0) {
  i11 = HEAP32[i12 >> 2] | 0;
  i12 = i2 + 4 | 0;
  HEAP32[i13 >> 2] = i12;
  HEAP32[i2 >> 2] = i11;
  i2 = i12;
 }
 i15 = __ZNSt3__127__num_get_unsigned_integralImEET_PKcS3_Rji(i3, HEAP32[i15 >> 2] | 0, i23, i14) | 0;
 HEAP32[i17 >> 2] = i15;
 __ZNSt3__116__check_groupingERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEPjS8_Rj(i19, i16, i2, i23);
 if (i1) {
  if ((HEAP32[i1 + 12 >> 2] | 0) == (HEAP32[i1 + 16 >> 2] | 0) ? (FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 36 >> 2] & 127](i1) | 0) == -1 : 0) {
   HEAP32[i21 >> 2] = 0;
   i1 = 0;
  }
 } else i1 = 0;
 i1 = (i1 | 0) == 0;
 do if (i4) {
  if ((HEAP32[i4 + 12 >> 2] | 0) == (HEAP32[i4 + 16 >> 2] | 0) ? (FUNCTION_TABLE_ii[HEAP32[(HEAP32[i4 >> 2] | 0) + 36 >> 2] & 127](i4) | 0) == -1 : 0) {
   HEAP32[i22 >> 2] = 0;
   i24 = 45;
   break;
  }
  if (!i1) i24 = 46;
 } else i24 = 45; while (0);
 if ((i24 | 0) == 45 ? i1 : 0) i24 = 46;
 if ((i24 | 0) == 46) HEAP32[i23 >> 2] = HEAP32[i23 >> 2] | 2;
 i24 = HEAP32[i21 >> 2] | 0;
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i18);
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i19);
 STACKTOP = i20;
 return i24 | 0;
}

function __ZNKSt3__17num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE17__do_get_unsignedIjEES4_S4_S4_RNS_8ios_baseERjRT_(i1, i21, i22, i2, i23, i17) {
 i1 = i1 | 0;
 i21 = i21 | 0;
 i22 = i22 | 0;
 i2 = i2 | 0;
 i23 = i23 | 0;
 i17 = i17 | 0;
 var i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i18 = 0, i19 = 0, i20 = 0, i24 = 0;
 i20 = STACKTOP;
 STACKTOP = STACKTOP + 224 | 0;
 i11 = i20 + 198 | 0;
 i3 = i20 + 196 | 0;
 i19 = i20 + 184 | 0;
 i18 = i20 + 172 | 0;
 i15 = i20 + 168 | 0;
 i16 = i20 + 8 | 0;
 i13 = i20 + 4 | 0;
 i12 = i20;
 switch (HEAP32[i2 + 4 >> 2] & 74 | 0) {
 case 64:
  {
   i14 = 8;
   break;
  }
 case 8:
  {
   i14 = 16;
   break;
  }
 case 0:
  {
   i14 = 0;
   break;
  }
 default:
  i14 = 10;
 }
 __ZNSt3__19__num_getIcE17__stage2_int_prepERNS_8ios_baseEPcRc(i19, i2, i11, i3);
 i1 = 0;
 while (1) {
  if ((i1 | 0) == 3) break;
  HEAP32[i18 + (i1 << 2) >> 2] = 0;
  i1 = i1 + 1 | 0;
 }
 if (!(HEAP8[i18 >> 0] & 1)) i1 = 10; else i1 = (HEAP32[i18 >> 2] & -2) + -1 | 0;
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6resizeEjc(i18, i1, 0);
 i8 = i18 + 8 | 0;
 i9 = i18 + 1 | 0;
 i6 = (HEAP8[i18 >> 0] & 1) == 0 ? i9 : HEAP32[i8 >> 2] | 0;
 HEAP32[i15 >> 2] = i6;
 HEAP32[i13 >> 2] = i16;
 HEAP32[i12 >> 2] = 0;
 i10 = i18 + 4 | 0;
 i7 = HEAP8[i3 >> 0] | 0;
 i1 = HEAP32[i21 >> 2] | 0;
 i3 = i6;
 L13 : while (1) {
  if (i1) {
   if ((HEAP32[i1 + 12 >> 2] | 0) == (HEAP32[i1 + 16 >> 2] | 0) ? (FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 36 >> 2] & 127](i1) | 0) == -1 : 0) {
    HEAP32[i21 >> 2] = 0;
    i1 = 0;
   }
  } else i1 = 0;
  i2 = (i1 | 0) == 0;
  i4 = HEAP32[i22 >> 2] | 0;
  do if (i4) {
   if ((HEAP32[i4 + 12 >> 2] | 0) != (HEAP32[i4 + 16 >> 2] | 0)) if (i2) break; else break L13;
   if ((FUNCTION_TABLE_ii[HEAP32[(HEAP32[i4 >> 2] | 0) + 36 >> 2] & 127](i4) | 0) != -1) if (i2) break; else break L13; else {
    HEAP32[i22 >> 2] = 0;
    i24 = 20;
    break;
   }
  } else i24 = 20; while (0);
  if ((i24 | 0) == 20) {
   i24 = 0;
   if (i2) {
    i4 = 0;
    break;
   } else i4 = 0;
  }
  i5 = HEAP8[i18 >> 0] | 0;
  i5 = (i5 & 1) == 0 ? (i5 & 255) >>> 1 : HEAP32[i10 >> 2] | 0;
  if ((HEAP32[i15 >> 2] | 0) == (i3 + i5 | 0)) {
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6resizeEjc(i18, i5 << 1, 0);
   if (!(HEAP8[i18 >> 0] & 1)) i2 = 10; else i2 = (HEAP32[i18 >> 2] & -2) + -1 | 0;
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6resizeEjc(i18, i2, 0);
   i3 = (HEAP8[i18 >> 0] & 1) == 0 ? i9 : HEAP32[i8 >> 2] | 0;
   HEAP32[i15 >> 2] = i3 + i5;
  }
  i5 = i1 + 12 | 0;
  i2 = HEAP32[i5 >> 2] | 0;
  i6 = i1 + 16 | 0;
  if ((i2 | 0) == (HEAP32[i6 >> 2] | 0)) i2 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 36 >> 2] & 127](i1) | 0; else i2 = HEAPU8[i2 >> 0] | 0;
  if (__ZNSt3__19__num_getIcE17__stage2_int_loopEciPcRS2_RjcRKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEPjRSD_S2_(i2 & 255, i14, i3, i15, i12, i7, i19, i16, i13, i11) | 0) break;
  i2 = HEAP32[i5 >> 2] | 0;
  if ((i2 | 0) == (HEAP32[i6 >> 2] | 0)) {
   FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 40 >> 2] & 127](i1) | 0;
   continue;
  } else {
   HEAP32[i5 >> 2] = i2 + 1;
   continue;
  }
 }
 i11 = HEAP8[i19 >> 0] | 0;
 i2 = HEAP32[i13 >> 2] | 0;
 if ((((i11 & 1) == 0 ? (i11 & 255) >>> 1 : HEAP32[i19 + 4 >> 2] | 0) | 0) != 0 ? (i2 - i16 | 0) < 160 : 0) {
  i11 = HEAP32[i12 >> 2] | 0;
  i12 = i2 + 4 | 0;
  HEAP32[i13 >> 2] = i12;
  HEAP32[i2 >> 2] = i11;
  i2 = i12;
 }
 i15 = __ZNSt3__127__num_get_unsigned_integralIjEET_PKcS3_Rji(i3, HEAP32[i15 >> 2] | 0, i23, i14) | 0;
 HEAP32[i17 >> 2] = i15;
 __ZNSt3__116__check_groupingERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEPjS8_Rj(i19, i16, i2, i23);
 if (i1) {
  if ((HEAP32[i1 + 12 >> 2] | 0) == (HEAP32[i1 + 16 >> 2] | 0) ? (FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 36 >> 2] & 127](i1) | 0) == -1 : 0) {
   HEAP32[i21 >> 2] = 0;
   i1 = 0;
  }
 } else i1 = 0;
 i1 = (i1 | 0) == 0;
 do if (i4) {
  if ((HEAP32[i4 + 12 >> 2] | 0) == (HEAP32[i4 + 16 >> 2] | 0) ? (FUNCTION_TABLE_ii[HEAP32[(HEAP32[i4 >> 2] | 0) + 36 >> 2] & 127](i4) | 0) == -1 : 0) {
   HEAP32[i22 >> 2] = 0;
   i24 = 45;
   break;
  }
  if (!i1) i24 = 46;
 } else i24 = 45; while (0);
 if ((i24 | 0) == 45 ? i1 : 0) i24 = 46;
 if ((i24 | 0) == 46) HEAP32[i23 >> 2] = HEAP32[i23 >> 2] | 2;
 i24 = HEAP32[i21 >> 2] | 0;
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i18);
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i19);
 STACKTOP = i20;
 return i24 | 0;
}

function __ZNKSt3__17num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE15__do_get_signedIlEES4_S4_S4_RNS_8ios_baseERjRT_(i1, i21, i22, i2, i23, i17) {
 i1 = i1 | 0;
 i21 = i21 | 0;
 i22 = i22 | 0;
 i2 = i2 | 0;
 i23 = i23 | 0;
 i17 = i17 | 0;
 var i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i18 = 0, i19 = 0, i20 = 0, i24 = 0;
 i20 = STACKTOP;
 STACKTOP = STACKTOP + 224 | 0;
 i11 = i20 + 198 | 0;
 i3 = i20 + 196 | 0;
 i19 = i20 + 184 | 0;
 i18 = i20 + 172 | 0;
 i15 = i20 + 168 | 0;
 i16 = i20 + 8 | 0;
 i13 = i20 + 4 | 0;
 i12 = i20;
 switch (HEAP32[i2 + 4 >> 2] & 74 | 0) {
 case 64:
  {
   i14 = 8;
   break;
  }
 case 8:
  {
   i14 = 16;
   break;
  }
 case 0:
  {
   i14 = 0;
   break;
  }
 default:
  i14 = 10;
 }
 __ZNSt3__19__num_getIcE17__stage2_int_prepERNS_8ios_baseEPcRc(i19, i2, i11, i3);
 i1 = 0;
 while (1) {
  if ((i1 | 0) == 3) break;
  HEAP32[i18 + (i1 << 2) >> 2] = 0;
  i1 = i1 + 1 | 0;
 }
 if (!(HEAP8[i18 >> 0] & 1)) i1 = 10; else i1 = (HEAP32[i18 >> 2] & -2) + -1 | 0;
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6resizeEjc(i18, i1, 0);
 i8 = i18 + 8 | 0;
 i9 = i18 + 1 | 0;
 i6 = (HEAP8[i18 >> 0] & 1) == 0 ? i9 : HEAP32[i8 >> 2] | 0;
 HEAP32[i15 >> 2] = i6;
 HEAP32[i13 >> 2] = i16;
 HEAP32[i12 >> 2] = 0;
 i10 = i18 + 4 | 0;
 i7 = HEAP8[i3 >> 0] | 0;
 i1 = HEAP32[i21 >> 2] | 0;
 i3 = i6;
 L13 : while (1) {
  if (i1) {
   if ((HEAP32[i1 + 12 >> 2] | 0) == (HEAP32[i1 + 16 >> 2] | 0) ? (FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 36 >> 2] & 127](i1) | 0) == -1 : 0) {
    HEAP32[i21 >> 2] = 0;
    i1 = 0;
   }
  } else i1 = 0;
  i2 = (i1 | 0) == 0;
  i4 = HEAP32[i22 >> 2] | 0;
  do if (i4) {
   if ((HEAP32[i4 + 12 >> 2] | 0) != (HEAP32[i4 + 16 >> 2] | 0)) if (i2) break; else break L13;
   if ((FUNCTION_TABLE_ii[HEAP32[(HEAP32[i4 >> 2] | 0) + 36 >> 2] & 127](i4) | 0) != -1) if (i2) break; else break L13; else {
    HEAP32[i22 >> 2] = 0;
    i24 = 20;
    break;
   }
  } else i24 = 20; while (0);
  if ((i24 | 0) == 20) {
   i24 = 0;
   if (i2) {
    i4 = 0;
    break;
   } else i4 = 0;
  }
  i5 = HEAP8[i18 >> 0] | 0;
  i5 = (i5 & 1) == 0 ? (i5 & 255) >>> 1 : HEAP32[i10 >> 2] | 0;
  if ((HEAP32[i15 >> 2] | 0) == (i3 + i5 | 0)) {
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6resizeEjc(i18, i5 << 1, 0);
   if (!(HEAP8[i18 >> 0] & 1)) i2 = 10; else i2 = (HEAP32[i18 >> 2] & -2) + -1 | 0;
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6resizeEjc(i18, i2, 0);
   i3 = (HEAP8[i18 >> 0] & 1) == 0 ? i9 : HEAP32[i8 >> 2] | 0;
   HEAP32[i15 >> 2] = i3 + i5;
  }
  i5 = i1 + 12 | 0;
  i2 = HEAP32[i5 >> 2] | 0;
  i6 = i1 + 16 | 0;
  if ((i2 | 0) == (HEAP32[i6 >> 2] | 0)) i2 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 36 >> 2] & 127](i1) | 0; else i2 = HEAPU8[i2 >> 0] | 0;
  if (__ZNSt3__19__num_getIcE17__stage2_int_loopEciPcRS2_RjcRKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEPjRSD_S2_(i2 & 255, i14, i3, i15, i12, i7, i19, i16, i13, i11) | 0) break;
  i2 = HEAP32[i5 >> 2] | 0;
  if ((i2 | 0) == (HEAP32[i6 >> 2] | 0)) {
   FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 40 >> 2] & 127](i1) | 0;
   continue;
  } else {
   HEAP32[i5 >> 2] = i2 + 1;
   continue;
  }
 }
 i11 = HEAP8[i19 >> 0] | 0;
 i2 = HEAP32[i13 >> 2] | 0;
 if ((((i11 & 1) == 0 ? (i11 & 255) >>> 1 : HEAP32[i19 + 4 >> 2] | 0) | 0) != 0 ? (i2 - i16 | 0) < 160 : 0) {
  i11 = HEAP32[i12 >> 2] | 0;
  i12 = i2 + 4 | 0;
  HEAP32[i13 >> 2] = i12;
  HEAP32[i2 >> 2] = i11;
  i2 = i12;
 }
 i15 = __ZNSt3__125__num_get_signed_integralIlEET_PKcS3_Rji(i3, HEAP32[i15 >> 2] | 0, i23, i14) | 0;
 HEAP32[i17 >> 2] = i15;
 __ZNSt3__116__check_groupingERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEPjS8_Rj(i19, i16, i2, i23);
 if (i1) {
  if ((HEAP32[i1 + 12 >> 2] | 0) == (HEAP32[i1 + 16 >> 2] | 0) ? (FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 36 >> 2] & 127](i1) | 0) == -1 : 0) {
   HEAP32[i21 >> 2] = 0;
   i1 = 0;
  }
 } else i1 = 0;
 i1 = (i1 | 0) == 0;
 do if (i4) {
  if ((HEAP32[i4 + 12 >> 2] | 0) == (HEAP32[i4 + 16 >> 2] | 0) ? (FUNCTION_TABLE_ii[HEAP32[(HEAP32[i4 >> 2] | 0) + 36 >> 2] & 127](i4) | 0) == -1 : 0) {
   HEAP32[i22 >> 2] = 0;
   i24 = 45;
   break;
  }
  if (!i1) i24 = 46;
 } else i24 = 45; while (0);
 if ((i24 | 0) == 45 ? i1 : 0) i24 = 46;
 if ((i24 | 0) == 46) HEAP32[i23 >> 2] = HEAP32[i23 >> 2] | 2;
 i24 = HEAP32[i21 >> 2] | 0;
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i18);
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i19);
 STACKTOP = i20;
 return i24 | 0;
}

function __ZN4wasm22SExpressionWasmBuilder9makeBlockERNS_7ElementE(i16, i1) {
 i16 = i16 | 0;
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i17 = 0, i18 = 0;
 i18 = STACKTOP;
 STACKTOP = STACKTOP + 48 | 0;
 i10 = i18 + 36 | 0;
 i11 = i18 + 32 | 0;
 i17 = i18 + 20 | 0;
 i5 = i18 + 8 | 0;
 i12 = i18 + 4 | 0;
 i13 = i18;
 i8 = i16 + 4 | 0;
 i2 = __ZN10MixedArena5allocIN4wasm5BlockEEEPT_v(HEAP32[i8 >> 2] | 0) | 0;
 HEAP32[i10 >> 2] = i2;
 HEAP32[i11 >> 2] = i1;
 HEAP32[i17 >> 2] = 0;
 i14 = i17 + 4 | 0;
 HEAP32[i14 >> 2] = 0;
 HEAP32[i17 + 8 >> 2] = 0;
 i9 = i17 + 8 | 0;
 i15 = i16 + 92 | 0;
 i6 = i16 + 96 | 0;
 i7 = i16 + 88 | 0;
 i3 = 0;
 i4 = 0;
 while (1) {
  if (i3 >>> 0 < i4 >>> 0) {
   HEAP32[i3 >> 2] = i1;
   HEAP32[i3 + 4 >> 2] = i2;
   HEAP32[i14 >> 2] = i3 + 8;
  } else __ZNSt3__16vectorINS_4pairIPN4wasm7ElementEPNS2_5BlockEEENS_9allocatorIS7_EEE24__emplace_back_slow_pathIJRS4_RS6_EEEvDpOT_(i17, i11, i10);
  if ((__ZN4wasm7Element4sizeEv(i1) | 0) >>> 0 > 1 ? (i4 = __ZN4wasm7Element4listEv(i1) | 0, (HEAP8[HEAP32[(HEAP32[i4 >> 2] | 0) + 4 >> 2] >> 0] | 0) == 0) : 0) {
   i2 = i2 + 8 | 0;
   i4 = __ZN4wasm7Element4listEv(i1) | 0;
   i4 = __ZN4wasm7Element3strEv(HEAP32[(HEAP32[i4 >> 2] | 0) + 4 >> 2] | 0) | 0;
   HEAP32[i2 >> 2] = i4;
   i4 = 2;
  } else {
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6__initEPKcj(i5, 25452, 5);
   i4 = __ZN4wasm22SExpressionWasmBuilder15getPrefixedNameENSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEE(i16, i5) | 0;
   HEAP32[i2 + 8 >> 2] = i4;
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i5);
   i2 = i2 + 8 | 0;
   i4 = 1;
  }
  i3 = HEAP32[i15 >> 2] | 0;
  if ((i3 | 0) == (HEAP32[i6 >> 2] | 0)) __ZNSt3__16vectorIN4wasm4NameENS_9allocatorIS2_EEE21__push_back_slow_pathIRKS2_EEvOT_(i7, i2); else {
   HEAP32[i3 >> 2] = HEAP32[i2 >> 2];
   HEAP32[i15 >> 2] = (HEAP32[i15 >> 2] | 0) + 4;
  }
  if (i4 >>> 0 >= (__ZN4wasm7Element4sizeEv(i1) | 0) >>> 0) break;
  i1 = __ZN4wasm7ElementixEj(i1, i4) | 0;
  i4 = __ZN4wasm7Element4listEv(i1) | 0;
  i4 = __ZN4wasm7Element3strEv(HEAP32[HEAP32[i4 >> 2] >> 2] | 0) | 0;
  if ((i4 | 0) != (HEAP32[9020] | 0)) break;
  i2 = __ZN10MixedArena5allocIN4wasm5BlockEEEPT_v(HEAP32[i8 >> 2] | 0) | 0;
  HEAP32[i10 >> 2] = i2;
  HEAP32[i11 >> 2] = i1;
  i3 = HEAP32[i14 >> 2] | 0;
  i4 = HEAP32[i9 >> 2] | 0;
 }
 i2 = HEAP32[i17 >> 2] | 0;
 i1 = i2;
 i2 = (HEAP32[i14 >> 2] | 0) - i2 >> 3;
 while (1) {
  i9 = i2 + -1 | 0;
  if ((i2 | 0) <= 0) {
   i2 = 17;
   break;
  }
  i7 = HEAP32[i1 + (i9 << 3) >> 2] | 0;
  i8 = HEAP32[i1 + (i9 << 3) + 4 >> 2] | 0;
  L23 : do if ((__ZN4wasm7Element4sizeEv(i7) | 0) >>> 0 > 1) {
   i5 = __ZN4wasm7Element4listEv(i7) | 0;
   i5 = (HEAP8[HEAP32[(HEAP32[i5 >> 2] | 0) + 4 >> 2] >> 0] | 0) == 0 ? 2 : 1;
   i1 = HEAP32[i17 >> 2] | 0;
   if ((i2 | 0) < ((HEAP32[i14 >> 2] | 0) - i1 >> 3 | 0)) {
    i1 = HEAP32[i1 + (i2 << 3) + 4 >> 2] | 0;
    HEAP32[i12 >> 2] = i1;
    i2 = i8 + 16 | 0;
    i3 = HEAP32[i2 >> 2] | 0;
    i4 = i8 + 20 | 0;
    if (i3 >>> 0 < (HEAP32[i4 >> 2] | 0) >>> 0) {
     HEAP32[i3 >> 2] = i1;
     HEAP32[i2 >> 2] = (HEAP32[i2 >> 2] | 0) + 4;
    } else __ZNSt3__16vectorIPN4wasm10ExpressionENS_9allocatorIS3_EEE21__push_back_slow_pathIS3_EEvOT_(i8 + 12 | 0, i12);
    i1 = i5 + 1 | 0;
   } else {
    i2 = i8 + 16 | 0;
    i4 = i8 + 20 | 0;
    i1 = i5;
   }
   i6 = i8 + 12 | 0;
   while (1) {
    if (i1 >>> 0 >= (__ZN4wasm7Element4sizeEv(i7) | 0) >>> 0) break L23;
    i3 = __ZN4wasm22SExpressionWasmBuilder15parseExpressionERNS_7ElementE(i16, __ZN4wasm7ElementixEj(i7, i1) | 0) | 0;
    HEAP32[i13 >> 2] = i3;
    i5 = HEAP32[i2 >> 2] | 0;
    if (i5 >>> 0 < (HEAP32[i4 >> 2] | 0) >>> 0) {
     HEAP32[i5 >> 2] = i3;
     HEAP32[i2 >> 2] = (HEAP32[i2 >> 2] | 0) + 4;
    } else __ZNSt3__16vectorIPN4wasm10ExpressionENS_9allocatorIS3_EEE21__push_back_slow_pathIS3_EEvOT_(i6, i13);
    i1 = i1 + 1 | 0;
   }
  } while (0);
  i1 = HEAP32[i15 >> 2] | 0;
  i2 = i1 + -4 | 0;
  if ((HEAP32[i2 >> 2] | 0) != (HEAP32[i8 + 8 >> 2] | 0)) {
   i2 = 32;
   break;
  }
  while (1) {
   if ((i1 | 0) == (i2 | 0)) break;
   i11 = i1 + -4 | 0;
   HEAP32[i15 >> 2] = i11;
   i1 = i11;
  }
  __ZN4wasm5Block8finalizeEv(i8);
  i1 = HEAP32[i17 >> 2] | 0;
  i2 = i9;
 }
 if ((i2 | 0) == 17) {
  i16 = HEAP32[i1 + 4 >> 2] | 0;
  __ZNSt3__113__vector_baseINS_4pairIPN4wasm7ElementEPNS2_5BlockEEENS_9allocatorIS7_EEED2Ev(i17);
  STACKTOP = i18;
  return i16 | 0;
 } else if ((i2 | 0) == 32) ___assert_fail(15024, 14303, 786, 15056);
 return 0;
}
function __ZN6cashew9JSPrinter11numToStringEdb(d2, i1) {
 d2 = +d2;
 i1 = i1 | 0;
 var d3 = 0.0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, i18 = 0, i19 = 0, i20 = 0, i21 = 0, i22 = 0, i23 = 0, i24 = 0, i25 = 0;
 i25 = STACKTOP;
 STACKTOP = STACKTOP + 96 | 0;
 i19 = i25 + 80 | 0;
 i18 = i25 + 72 | 0;
 i17 = i25 + 64 | 0;
 i21 = i25 + 56 | 0;
 i20 = i25 + 48 | 0;
 i16 = i25 + 40 | 0;
 i15 = i25 + 32 | 0;
 i23 = i25 + 24 | 0;
 i12 = i25 + 16 | 0;
 i13 = i25 + 8 | 0;
 i14 = i25;
 i24 = d2 < 0.0;
 d2 = i24 ? -d2 : d2;
 i10 = +_fmod(d2, 1.0) == 0.0;
 HEAPF64[i23 >> 3] = nan;
 HEAPF64[i12 >> 3] = nan;
 i11 = !(d2 >= 0.0);
 i8 = i1 ^ 1;
 i9 = 0;
 L1 : while (1) {
  if ((i9 | 0) >= 2) {
   i22 = 3;
   break;
  }
  i5 = (i9 | 0) != 0;
  i7 = i5 ? HEAP32[814] | 0 : HEAP32[813] | 0;
  L4 : do if (i10) {
   if (i11) {
    i22 = 12;
    break L1;
   }
   if (!(__ZN4wasm12isUInteger64Ed(d2) | 0)) {
    HEAPF64[i18 >> 3] = d2;
    _snprintf(i7, 999, i5 ? 15664 : 15667, i18) | 0;
    HEAP32[i19 >> 2] = i13;
    _sscanf(i7, 15586, i19) | 0;
    break;
   }
   i1 = __ZN4wasm12toUInteger64Ed(d2) | 0;
   i6 = i5 & i8;
   i4 = i20;
   HEAP32[i4 >> 2] = i1;
   HEAP32[i4 + 4 >> 2] = tempRet0;
   _snprintf(i7, 999, i6 ? 15647 : 15654, i20) | 0;
   if (i6) {
    HEAP32[i21 >> 2] = i14;
    _sscanf(i7, 15659, i21) | 0;
    i6 = i14;
    HEAPF64[i13 >> 3] = +((HEAP32[i6 >> 2] | 0) >>> 0) + 4294967296.0 * +((HEAP32[i6 + 4 >> 2] | 0) >>> 0);
    break;
   } else {
    HEAP32[i17 >> 2] = i13;
    _sscanf(i7, 15586, i17) | 0;
    break;
   }
  } else {
   i1 = i5 ? 101 : 102;
   i4 = 0;
   while (1) {
    if ((i4 | 0) >= 19) break L4;
    HEAP8[42228] = 37;
    HEAP8[42229] = 46;
    if ((i4 | 0) < 10) {
     HEAP8[42230] = i4 + 48;
     HEAP8[42231] = i1;
     HEAP8[42232] = 0;
    } else {
     HEAP8[42230] = 49;
     HEAP8[42231] = i4 + 38;
     HEAP8[42232] = i1;
     HEAP8[42233] = 0;
    }
    HEAPF64[i15 >> 3] = d2;
    _snprintf(i7, 999, 42228, i15) | 0;
    HEAP32[i16 >> 2] = i13;
    _sscanf(i7, 15586, i16) | 0;
    if (+HEAPF64[i13 >> 3] == d2) break; else i4 = i4 + 1 | 0;
   }
  } while (0);
  d3 = +Math_abs(+(+HEAPF64[i13 >> 3] - d2));
  HEAPF64[(i5 ? i12 : i23) >> 3] = d3;
  i1 = _strchr(i7, 46) | 0;
  L22 : do if (!i1) {
   if (!(i10 & i5)) {
    i6 = i7 + (_strlen(i7) | 0) + -1 | 0;
    i4 = i7;
    i1 = i6;
    while (1) {
     if ((HEAP8[i1 >> 0] | 0) == 48) {
      if (i1 >>> 0 <= i7 >>> 0) {
       i22 = 30;
       break;
      }
     } else {
      i5 = i1;
      if (!(i1 >>> 0 > i7 >>> 0 & (i5 - i4 | 0) > 24)) {
       i4 = i1;
       break;
      }
     }
     i1 = i1 + -1 | 0;
    }
    if ((i22 | 0) == 30) {
     i22 = 0;
     i5 = i1;
     i4 = i1;
    }
    i1 = i6 - i5 | 0;
    if ((i1 | 0) > 2) {
     HEAP8[i4 + 1 >> 0] = 101;
     if ((i1 | 0) < 10) {
      HEAP8[i4 + 2 >> 0] = i1 + 48;
      HEAP8[i4 + 3 >> 0] = 0;
      break;
     }
     if ((i1 | 0) < 100) {
      HEAP8[i4 + 2 >> 0] = ((i1 | 0) / 10 | 0) + 48;
      HEAP8[i4 + 3 >> 0] = ((i1 | 0) % 10 | 0) + 48;
      HEAP8[i4 + 4 >> 0] = 0;
      break;
     }
     if ((i1 | 0) >= 1e3) {
      i22 = 38;
      break L1;
     }
     HEAP8[i4 + 2 >> 0] = ((i1 | 0) / 100 | 0) + 48;
     HEAP8[i4 + 3 >> 0] = (((i1 | 0) % 100 | 0 | 0) / 10 | 0) + 48;
     HEAP8[i4 + 4 >> 0] = ((i1 | 0) % 10 | 0) + 48;
     HEAP8[i4 + 5 >> 0] = 0;
    }
   }
  } else {
   while (1) {
    i4 = i1 + 1 | 0;
    if (((HEAP8[i4 >> 0] | 0) + -48 & 255) < 10) i1 = i4; else break;
   }
   while (1) {
    if ((HEAP8[i1 >> 0] | 0) == 48) i4 = i1; else break;
    do {
     i5 = i4;
     i4 = i4 + 1 | 0;
     i6 = HEAP8[i4 >> 0] | 0;
     HEAP8[i5 >> 0] = i6;
    } while (i6 << 24 >> 24 != 0);
    i1 = i1 + -1 | 0;
   }
   L49 : while (1) {
    if ((HEAP8[i7 >> 0] | 0) == 48) i4 = i7; else break L22;
    while (1) {
     i1 = i4 + 1 | 0;
     i6 = HEAP8[i1 >> 0] | 0;
     HEAP8[i4 >> 0] = i6;
     if (!(i6 << 24 >> 24)) continue L49; else i4 = i1;
    }
   }
  } while (0);
  i9 = i9 + 1 | 0;
 }
 if ((i22 | 0) == 3) {
  d3 = +HEAPF64[i12 >> 3];
  d2 = +HEAPF64[i23 >> 3];
  if (d3 == d2) {
   i23 = HEAP32[814] | 0;
   i22 = _strlen(i23) | 0;
   i1 = HEAP32[813] | 0;
   i22 = i22 >>> 0 < (_strlen(i1) | 0) >>> 0;
   i1 = i22 ? i23 : i1;
  } else i1 = d3 < d2 ? HEAP32[814] | 0 : HEAP32[813] | 0;
  if (i24) {
   i1 = i1 + -1 | 0;
   HEAP8[i1 >> 0] = 45;
  }
  STACKTOP = i25;
  return i1 | 0;
 } else if ((i22 | 0) == 12) ___assert_fail(15590, 15597, 871, 15635); else if ((i22 | 0) == 38) ___assert_fail(15672, 15597, 934, 15635);
 return 0;
}

function ___cxa_demangle(i10, i1, i16, i18) {
 i10 = i10 | 0;
 i1 = i1 | 0;
 i16 = i16 | 0;
 i18 = i18 | 0;
 var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i17 = 0, i19 = 0;
 i19 = STACKTOP;
 STACKTOP = STACKTOP + 4208 | 0;
 i15 = i19 + 4176 | 0;
 i3 = i19;
 i17 = i19 + 4112 | 0;
 if ((i10 | 0) != 0 ? (i2 = (i1 | 0) != 0, i14 = (i16 | 0) == 0, !(i2 & i14)) : 0) {
  if (i2) i12 = HEAP32[i16 >> 2] | 0; else i12 = 0;
  HEAP32[i3 + 4096 >> 2] = i3;
  i2 = i3;
  HEAP32[i17 >> 2] = 0;
  i13 = i17 + 4 | 0;
  HEAP32[i13 >> 2] = 0;
  HEAP32[i17 + 8 >> 2] = 0;
  HEAP32[i17 + 12 >> 2] = i2;
  i6 = i17 + 16 | 0;
  HEAP32[i6 >> 2] = 0;
  i7 = i17 + 20 | 0;
  HEAP32[i7 >> 2] = 0;
  HEAP32[i17 + 24 >> 2] = 0;
  HEAP32[i17 + 28 >> 2] = i2;
  HEAP32[i17 + 32 >> 2] = 0;
  i3 = i17 + 36 | 0;
  HEAP32[i3 >> 2] = 0;
  HEAP32[i17 + 40 >> 2] = 0;
  i8 = i17 + 44 | 0;
  HEAP32[i8 >> 2] = i2;
  i5 = i17 + 48 | 0;
  i4 = i17 + 61 | 0;
  HEAP32[i5 >> 2] = 0;
  HEAP32[i5 + 4 >> 2] = 0;
  HEAP32[i5 + 8 >> 2] = 0;
  HEAP8[i5 + 12 >> 0] = 0;
  HEAP8[i4 >> 0] = 1;
  i5 = i17 + 32 | 0;
  __ZNSt3__114__split_bufferINS_6vectorINS1_IN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEENS5_IS7_Lj4096EEEEERNS5_IS9_Lj4096EEEEC2EjjSB_(i15, 1, 0, i8);
  i8 = i15 + 8 | 0;
  i9 = HEAP32[i8 >> 2] | 0;
  HEAP32[i9 >> 2] = 0;
  HEAP32[i9 + 4 >> 2] = 0;
  HEAP32[i9 + 8 >> 2] = 0;
  HEAP32[i9 + 12 >> 2] = i2;
  HEAP32[i8 >> 2] = i9 + 16;
  __ZNSt3__16vectorINS0_INS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEEENS4_IS8_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS8_RS9_EE(i5, i15);
  __ZNSt3__114__split_bufferINS_6vectorINS1_IN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEENS5_IS7_Lj4096EEEEERNS5_IS9_Lj4096EEEED2Ev(i15);
  i8 = i17 + 62 | 0;
  HEAP8[i8 >> 0] = 0;
  HEAP8[i17 + 63 >> 0] = 1;
  HEAP32[i15 >> 2] = 0;
  i9 = i10 + (_strlen(i10) | 0) | 0;
  __ZN10__cxxabiv112_GLOBAL__N_18demangleINS0_2DbEEEvPKcS4_RT_Ri(i10, i9, i17, i15);
  i2 = HEAP32[i15 >> 2] | 0;
  do if (!((i2 | 0) != 0 | (HEAP8[i8 >> 0] | 0) == 0)) {
   i5 = HEAP32[i5 >> 2] | 0;
   if ((i5 | 0) != (HEAP32[i3 >> 2] | 0) ? (HEAP32[i5 >> 2] | 0) != (HEAP32[i5 + 4 >> 2] | 0) : 0) {
    HEAP8[i8 >> 0] = 0;
    HEAP8[i4 >> 0] = 0;
    i2 = HEAP32[i17 >> 2] | 0;
    while (1) {
     i3 = HEAP32[i13 >> 2] | 0;
     if ((i3 | 0) == (i2 | 0)) break;
     i5 = i3 + -24 | 0;
     HEAP32[i13 >> 2] = i5;
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i5);
    }
    i2 = HEAP32[i6 >> 2] | 0;
    while (1) {
     i3 = HEAP32[i7 >> 2] | 0;
     if ((i3 | 0) == (i2 | 0)) break;
     i6 = i3 + -16 | 0;
     HEAP32[i7 >> 2] = i6;
     __ZNSt3__113__vector_baseIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEED2Ev(i6);
    }
    __ZN10__cxxabiv112_GLOBAL__N_18demangleINS0_2DbEEEvPKcS4_RT_Ri(i10, i9, i17, i15);
    if (!(HEAP8[i8 >> 0] | 0)) {
     i2 = HEAP32[i15 >> 2] | 0;
     i11 = 19;
     break;
    } else {
     HEAP32[i15 >> 2] = -2;
     i1 = 0;
     i2 = -2;
     break;
    }
   } else i11 = 20;
  } else i11 = 19; while (0);
  if ((i11 | 0) == 19) if (!i2) i11 = 20; else i1 = 0;
  do if ((i11 | 0) == 20) {
   i3 = HEAP32[i13 >> 2] | 0;
   i2 = HEAP8[i3 + -24 >> 0] | 0;
   if (!(i2 & 1)) i4 = (i2 & 255) >>> 1; else i4 = HEAP32[i3 + -20 >> 2] | 0;
   i2 = HEAP8[i3 + -12 >> 0] | 0;
   if (!(i2 & 1)) i2 = (i2 & 255) >>> 1; else i2 = HEAP32[i3 + -8 >> 2] | 0;
   i4 = i2 + i4 | 0;
   i2 = i4 + 1 | 0;
   if (i2 >>> 0 > i12 >>> 0) {
    i1 = _realloc(i1, i2) | 0;
    if (!i1) {
     HEAP32[i15 >> 2] = -1;
     i1 = 0;
     i2 = -1;
     break;
    }
    if (!i14) HEAP32[i16 >> 2] = i2;
   } else if (!i1) {
    i1 = 0;
    i2 = 0;
    break;
   }
   i2 = HEAP32[i13 >> 2] | 0;
   i15 = i2 + -12 | 0;
   i3 = HEAP8[i15 >> 0] | 0;
   i16 = (i3 & 1) == 0;
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj(i2 + -24 | 0, i16 ? i15 + 1 | 0 : HEAP32[i2 + -4 >> 2] | 0, i16 ? (i3 & 255) >>> 1 : HEAP32[i2 + -8 >> 2] | 0) | 0;
   i2 = HEAP32[i13 >> 2] | 0;
   i3 = i2 + -24 | 0;
   if (!(HEAP8[i3 >> 0] & 1)) i2 = i3 + 1 | 0; else i2 = HEAP32[i2 + -16 >> 2] | 0;
   _memcpy(i1 | 0, i2 | 0, i4 | 0) | 0;
   HEAP8[i1 + i4 >> 0] = 0;
   i2 = 0;
  } while (0);
  if (i18 | 0) HEAP32[i18 >> 2] = i2;
  __ZN10__cxxabiv112_GLOBAL__N_12DbD2Ev(i17);
 } else if (!i18) i1 = 0; else {
  HEAP32[i18 >> 2] = -3;
  i1 = 0;
 }
 STACKTOP = i19;
 return i1 | 0;
}

function __ZN4wasm16PrintSExpression10visitUnaryEPNS_5UnaryE(i5, i4) {
 i5 = i5 | 0;
 i4 = i4 | 0;
 var i1 = 0, i2 = 0, i3 = 0;
 __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_c(HEAP32[i5 >> 2] | 0, 40) | 0;
 i2 = __Z12prepareColorRNSt3__113basic_ostreamIcNS_11char_traitsIcEEEE(HEAP32[i5 >> 2] | 0) | 0;
 i3 = i4 + 8 | 0;
 if ((HEAP32[i3 >> 2] | 0) == 10) i1 = (HEAP32[i4 + 12 >> 2] | 0) + 4 | 0; else i1 = i4 + 4 | 0;
 __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_c(__ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(i2, __ZN4wasm13printWasmTypeENS_8WasmTypeE(HEAP32[i1 >> 2] | 0) | 0) | 0, 46) | 0;
 do switch (HEAP32[i3 >> 2] | 0) {
 case 0:
  {
   __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(HEAP32[i5 >> 2] | 0, 18413) | 0;
   break;
  }
 case 1:
  {
   __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(HEAP32[i5 >> 2] | 0, 18417) | 0;
   break;
  }
 case 2:
  {
   __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(HEAP32[i5 >> 2] | 0, 18421) | 0;
   break;
  }
 case 10:
  {
   __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(HEAP32[i5 >> 2] | 0, 18428) | 0;
   break;
  }
 case 3:
  {
   __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(HEAP32[i5 >> 2] | 0, 18432) | 0;
   break;
  }
 case 4:
  {
   __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(HEAP32[i5 >> 2] | 0, 18436) | 0;
   break;
  }
 case 5:
  {
   __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(HEAP32[i5 >> 2] | 0, 18440) | 0;
   break;
  }
 case 6:
  {
   __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(HEAP32[i5 >> 2] | 0, 18445) | 0;
   break;
  }
 case 7:
  {
   __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(HEAP32[i5 >> 2] | 0, 18451) | 0;
   break;
  }
 case 8:
  {
   __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(HEAP32[i5 >> 2] | 0, 18457) | 0;
   break;
  }
 case 9:
  {
   __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(HEAP32[i5 >> 2] | 0, 18465) | 0;
   break;
  }
 case 11:
  {
   __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(HEAP32[i5 >> 2] | 0, 18470) | 0;
   break;
  }
 case 12:
  {
   __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(HEAP32[i5 >> 2] | 0, 18483) | 0;
   break;
  }
 case 13:
  {
   __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(HEAP32[i5 >> 2] | 0, 18496) | 0;
   break;
  }
 case 14:
  {
   __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(HEAP32[i5 >> 2] | 0, 18505) | 0;
   break;
  }
 case 15:
  {
   __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(HEAP32[i5 >> 2] | 0, 18517) | 0;
   break;
  }
 case 16:
  {
   __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(HEAP32[i5 >> 2] | 0, 18529) | 0;
   break;
  }
 case 17:
  {
   __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(HEAP32[i5 >> 2] | 0, 18541) | 0;
   break;
  }
 case 18:
  {
   __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(__ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(HEAP32[i5 >> 2] | 0, 18553) | 0, (HEAP32[i4 + 4 >> 2] | 0) == 2 ? 18566 : 18570) | 0;
   break;
  }
 case 20:
  {
   __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(HEAP32[i5 >> 2] | 0, 18574) | 0;
   break;
  }
 case 19:
  {
   __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(HEAP32[i5 >> 2] | 0, 18588) | 0;
   break;
  }
 case 22:
  {
   __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(HEAP32[i5 >> 2] | 0, 18602) | 0;
   break;
  }
 case 21:
  {
   __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(HEAP32[i5 >> 2] | 0, 18616) | 0;
   break;
  }
 case 23:
  {
   __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(HEAP32[i5 >> 2] | 0, 18630) | 0;
   break;
  }
 case 24:
  {
   __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(HEAP32[i5 >> 2] | 0, 18642) | 0;
   break;
  }
 case 25:
  {
   __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(__ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(HEAP32[i5 >> 2] | 0, 18553) | 0, (HEAP32[i4 + 4 >> 2] | 0) == 4 ? 18653 : 18657) | 0;
   break;
  }
 default:
  _abort();
 } while (0);
 __ZN4wasm16PrintSExpression9incIndentEv(i5);
 __ZN4wasm16PrintSExpression13printFullLineEPNS_10ExpressionE(i5, HEAP32[i4 + 12 >> 2] | 0);
 __ZN4wasm16PrintSExpression9decIndentEv(i5);
 return;
}

function __ZNKSt3__17num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_getES4_S4_RNS_8ios_baseERjRPv(i1, i20, i21, i3, i22, i16) {
 i1 = i1 | 0;
 i20 = i20 | 0;
 i21 = i21 | 0;
 i3 = i3 | 0;
 i22 = i22 | 0;
 i16 = i16 | 0;
 var i2 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i17 = 0, i18 = 0, i19 = 0, i23 = 0;
 i19 = STACKTOP;
 STACKTOP = STACKTOP + 240 | 0;
 i15 = i19;
 i10 = i19 + 208 | 0;
 i18 = i19 + 196 | 0;
 i1 = i19 + 192 | 0;
 i17 = i19 + 180 | 0;
 i14 = i19 + 176 | 0;
 i12 = i19 + 16 | 0;
 i13 = i19 + 8 | 0;
 i11 = i19 + 4 | 0;
 i2 = 0;
 while (1) {
  if ((i2 | 0) == 3) break;
  HEAP32[i18 + (i2 << 2) >> 2] = 0;
  i2 = i2 + 1 | 0;
 }
 i9 = __ZNKSt3__18ios_base6getlocEv(i3) | 0;
 HEAP32[i1 >> 2] = i9;
 i1 = __ZNKSt3__16locale9use_facetERNS0_2idE(i1, 38376) | 0;
 FUNCTION_TABLE_iiiii[HEAP32[(HEAP32[i1 >> 2] | 0) + 32 >> 2] & 7](i1, 30448, 30474, i10) | 0;
 __ZNSt3__114__shared_count16__release_sharedEv(i9) | 0;
 i1 = 0;
 while (1) {
  if ((i1 | 0) == 3) break;
  HEAP32[i17 + (i1 << 2) >> 2] = 0;
  i1 = i1 + 1 | 0;
 }
 if (!(HEAP8[i17 >> 0] & 1)) i1 = 10; else i1 = (HEAP32[i17 >> 2] & -2) + -1 | 0;
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6resizeEjc(i17, i1, 0);
 i8 = i17 + 8 | 0;
 i9 = i17 + 1 | 0;
 i2 = (HEAP8[i17 >> 0] & 1) == 0 ? i9 : HEAP32[i8 >> 2] | 0;
 HEAP32[i14 >> 2] = i2;
 HEAP32[i13 >> 2] = i12;
 HEAP32[i11 >> 2] = 0;
 i7 = i17 + 4 | 0;
 i1 = HEAP32[i20 >> 2] | 0;
 L12 : while (1) {
  if (i1) {
   if ((HEAP32[i1 + 12 >> 2] | 0) == (HEAP32[i1 + 16 >> 2] | 0) ? (FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 36 >> 2] & 127](i1) | 0) == -1 : 0) {
    HEAP32[i20 >> 2] = 0;
    i1 = 0;
   }
  } else i1 = 0;
  i4 = (i1 | 0) == 0;
  i3 = HEAP32[i21 >> 2] | 0;
  do if (i3) {
   if ((HEAP32[i3 + 12 >> 2] | 0) != (HEAP32[i3 + 16 >> 2] | 0)) if (i4) break; else break L12;
   if ((FUNCTION_TABLE_ii[HEAP32[(HEAP32[i3 >> 2] | 0) + 36 >> 2] & 127](i3) | 0) != -1) if (i4) break; else break L12; else {
    HEAP32[i21 >> 2] = 0;
    i23 = 19;
    break;
   }
  } else i23 = 19; while (0);
  if ((i23 | 0) == 19) {
   i23 = 0;
   if (i4) {
    i3 = 0;
    break;
   } else i3 = 0;
  }
  i4 = HEAP8[i17 >> 0] | 0;
  i4 = (i4 & 1) == 0 ? (i4 & 255) >>> 1 : HEAP32[i7 >> 2] | 0;
  if ((HEAP32[i14 >> 2] | 0) == (i2 + i4 | 0)) {
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6resizeEjc(i17, i4 << 1, 0);
   if (!(HEAP8[i17 >> 0] & 1)) i2 = 10; else i2 = (HEAP32[i17 >> 2] & -2) + -1 | 0;
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6resizeEjc(i17, i2, 0);
   i2 = (HEAP8[i17 >> 0] & 1) == 0 ? i9 : HEAP32[i8 >> 2] | 0;
   HEAP32[i14 >> 2] = i2 + i4;
  }
  i5 = i1 + 12 | 0;
  i4 = HEAP32[i5 >> 2] | 0;
  i6 = i1 + 16 | 0;
  if ((i4 | 0) == (HEAP32[i6 >> 2] | 0)) i4 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 36 >> 2] & 127](i1) | 0; else i4 = HEAPU8[i4 >> 0] | 0;
  if (__ZNSt3__19__num_getIcE17__stage2_int_loopEciPcRS2_RjcRKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEPjRSD_S2_(i4 & 255, 16, i2, i14, i11, 0, i18, i12, i13, i10) | 0) break;
  i3 = HEAP32[i5 >> 2] | 0;
  if ((i3 | 0) == (HEAP32[i6 >> 2] | 0)) {
   FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 40 >> 2] & 127](i1) | 0;
   continue;
  } else {
   HEAP32[i5 >> 2] = i3 + 1;
   continue;
  }
 }
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6resizeEjc(i17, (HEAP32[i14 >> 2] | 0) - i2 | 0, 0);
 i13 = (HEAP8[i17 >> 0] & 1) == 0 ? i9 : HEAP32[i8 >> 2] | 0;
 i14 = __ZNSt3__16__clocEv() | 0;
 HEAP32[i15 >> 2] = i16;
 if ((__ZNSt3__110__sscanf_lEPKcP15__locale_structS1_z(i13, i14, 30483, i15) | 0) != 1) HEAP32[i22 >> 2] = 4;
 if (i1) {
  if ((HEAP32[i1 + 12 >> 2] | 0) == (HEAP32[i1 + 16 >> 2] | 0) ? (FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 36 >> 2] & 127](i1) | 0) == -1 : 0) {
   HEAP32[i20 >> 2] = 0;
   i1 = 0;
  }
 } else i1 = 0;
 i1 = (i1 | 0) == 0;
 do if (i3) {
  if ((HEAP32[i3 + 12 >> 2] | 0) == (HEAP32[i3 + 16 >> 2] | 0) ? (FUNCTION_TABLE_ii[HEAP32[(HEAP32[i3 >> 2] | 0) + 36 >> 2] & 127](i3) | 0) == -1 : 0) {
   HEAP32[i21 >> 2] = 0;
   i23 = 43;
   break;
  }
  if (!i1) i23 = 44;
 } else i23 = 43; while (0);
 if ((i23 | 0) == 43 ? i1 : 0) i23 = 44;
 if ((i23 | 0) == 44) HEAP32[i22 >> 2] = HEAP32[i22 >> 2] | 2;
 i23 = HEAP32[i20 >> 2] | 0;
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i17);
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i18);
 STACKTOP = i19;
 return i23 | 0;
}

function __ZNSt3__16locale5__impC2Ej(i4, i1) {
 i4 = i4 | 0;
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i5 = 0;
 HEAP32[i4 + 4 >> 2] = i1 + -1;
 HEAP32[i4 >> 2] = 11908;
 i1 = i4 + 8 | 0;
 __ZNSt3__16vectorIPNS_6locale5facetENS_15__sso_allocatorIS3_Lj28EEEEC2Ej(i1, 28);
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6__initEPKcj(i4 + 144 | 0, 30481, 1);
 i1 = HEAP32[i1 >> 2] | 0;
 i2 = i4 + 12 | 0;
 i3 = HEAP32[i2 >> 2] | 0;
 while (1) {
  if ((i3 | 0) == (i1 | 0)) break;
  i5 = i3 + -4 | 0;
  HEAP32[i2 >> 2] = i5;
  i3 = i5;
 }
 HEAP32[8853] = 0;
 HEAP32[8852] = 9572;
 __ZNSt3__16locale5__imp7installINS_7collateIcEEEEvPT_(i4, 35408);
 HEAP32[8855] = 0;
 HEAP32[8854] = 9604;
 __ZNSt3__16locale5__imp7installINS_7collateIwEEEEvPT_(i4, 35416);
 __ZNSt3__15ctypeIcEC2EPKtbj(35424, 0, 0, 1);
 __ZNSt3__16locale5__imp7installINS_5ctypeIcEEEEvPT_(i4, 35424);
 HEAP32[8861] = 0;
 HEAP32[8860] = 12124;
 __ZNSt3__16locale5__imp7installINS_5ctypeIwEEEEvPT_(i4, 35440);
 HEAP32[8863] = 0;
 HEAP32[8862] = 12192;
 __ZNSt3__16locale5__imp7installINS_7codecvtIcc11__mbstate_tEEEEvPT_(i4, 35448);
 HEAP32[8865] = 0;
 HEAP32[8864] = 11860;
 i5 = __ZNSt3__16__clocEv() | 0;
 HEAP32[8866] = i5;
 __ZNSt3__16locale5__imp7installINS_7codecvtIwc11__mbstate_tEEEEvPT_(i4, 35456);
 HEAP32[8869] = 0;
 HEAP32[8868] = 12240;
 __ZNSt3__16locale5__imp7installINS_7codecvtIDsc11__mbstate_tEEEEvPT_(i4, 35472);
 HEAP32[8871] = 0;
 HEAP32[8870] = 12288;
 __ZNSt3__16locale5__imp7installINS_7codecvtIDic11__mbstate_tEEEEvPT_(i4, 35480);
 __ZNSt3__18numpunctIcEC2Ej(35488, 1);
 __ZNSt3__16locale5__imp7installINS_8numpunctIcEEEEvPT_(i4, 35488);
 __ZNSt3__18numpunctIwEC2Ej(35512, 1);
 __ZNSt3__16locale5__imp7installINS_8numpunctIwEEEEvPT_(i4, 35512);
 HEAP32[8887] = 0;
 HEAP32[8886] = 9636;
 __ZNSt3__16locale5__imp7installINS_7num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEEEEEvPT_(i4, 35544);
 HEAP32[8889] = 0;
 HEAP32[8888] = 9700;
 __ZNSt3__16locale5__imp7installINS_7num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEEEEEvPT_(i4, 35552);
 HEAP32[8891] = 0;
 HEAP32[8890] = 9764;
 __ZNSt3__16locale5__imp7installINS_7num_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEEEEEvPT_(i4, 35560);
 HEAP32[8893] = 0;
 HEAP32[8892] = 9816;
 __ZNSt3__16locale5__imp7installINS_7num_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEEEEEvPT_(i4, 35568);
 HEAP32[8895] = 0;
 HEAP32[8894] = 11364;
 __ZNSt3__16locale5__imp7installINS_10moneypunctIcLb0EEEEEvPT_(i4, 35576);
 HEAP32[8897] = 0;
 HEAP32[8896] = 11420;
 __ZNSt3__16locale5__imp7installINS_10moneypunctIcLb1EEEEEvPT_(i4, 35584);
 HEAP32[8899] = 0;
 HEAP32[8898] = 11476;
 __ZNSt3__16locale5__imp7installINS_10moneypunctIwLb0EEEEEvPT_(i4, 35592);
 HEAP32[8901] = 0;
 HEAP32[8900] = 11532;
 __ZNSt3__16locale5__imp7installINS_10moneypunctIwLb1EEEEEvPT_(i4, 35600);
 HEAP32[8903] = 0;
 HEAP32[8902] = 11588;
 __ZNSt3__16locale5__imp7installINS_9money_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEEEEEvPT_(i4, 35608);
 HEAP32[8905] = 0;
 HEAP32[8904] = 11616;
 __ZNSt3__16locale5__imp7installINS_9money_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEEEEEvPT_(i4, 35616);
 HEAP32[8907] = 0;
 HEAP32[8906] = 11644;
 __ZNSt3__16locale5__imp7installINS_9money_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEEEEEvPT_(i4, 35624);
 HEAP32[8909] = 0;
 HEAP32[8908] = 11672;
 __ZNSt3__16locale5__imp7installINS_9money_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEEEEEvPT_(i4, 35632);
 HEAP32[8911] = 0;
 HEAP32[8910] = 9868;
 HEAP32[8912] = 9916;
 __ZNSt3__16locale5__imp7installINS_8time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEEEEEvPT_(i4, 35640);
 HEAP32[8915] = 0;
 HEAP32[8914] = 9952;
 HEAP32[8916] = 1e4;
 __ZNSt3__16locale5__imp7installINS_8time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEEEEEvPT_(i4, 35656);
 HEAP32[8919] = 0;
 HEAP32[8918] = 12104;
 i5 = __ZNSt3__16__clocEv() | 0;
 HEAP32[8920] = i5;
 HEAP32[8918] = 11316;
 __ZNSt3__16locale5__imp7installINS_8time_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEEEEEvPT_(i4, 35672);
 HEAP32[8923] = 0;
 HEAP32[8922] = 12104;
 i5 = __ZNSt3__16__clocEv() | 0;
 HEAP32[8924] = i5;
 HEAP32[8922] = 11340;
 __ZNSt3__16locale5__imp7installINS_8time_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEEEEEvPT_(i4, 35688);
 HEAP32[8927] = 0;
 HEAP32[8926] = 11700;
 __ZNSt3__16locale5__imp7installINS_8messagesIcEEEEvPT_(i4, 35704);
 HEAP32[8929] = 0;
 HEAP32[8928] = 11732;
 __ZNSt3__16locale5__imp7installINS_8messagesIwEEEEvPT_(i4, 35712);
 return;
}

function __GLOBAL__sub_I_parser_cpp() {
 __ZN6cashew7IString3setEPKcb(36220, 25437, 1);
 __ZN6cashew7IString3setEPKcb(36224, 25446, 1);
 __ZN6cashew7IString3setEPKcb(36228, 25452, 1);
 __ZN6cashew7IString3setEPKcb(36232, 25458, 1);
 __ZN6cashew7IString3setEPKcb(36236, 25463, 1);
 __ZN6cashew7IString3setEPKcb(36240, 25470, 1);
 __ZN6cashew7IString3setEPKcb(36244, 25475, 1);
 __ZN6cashew7IString3setEPKcb(36248, 25479, 1);
 __ZN6cashew7IString3setEPKcb(36252, 25485, 1);
 __ZN6cashew7IString3setEPKcb(36256, 25497, 1);
 __ZN6cashew7IString3setEPKcb(36260, 25504, 1);
 __ZN6cashew7IString3setEPKcb(36264, 25511, 1);
 __ZN6cashew7IString3setEPKcb(36268, 25514, 1);
 __ZN6cashew7IString3setEPKcb(36272, 25519, 1);
 __ZN6cashew7IString3setEPKcb(36276, 25525, 1);
 __ZN6cashew7IString3setEPKcb(36280, 25528, 1);
 __ZN6cashew7IString3setEPKcb(36284, 25532, 1);
 __ZN6cashew7IString3setEPKcb(36288, 25536, 1);
 __ZN6cashew7IString3setEPKcb(36292, 25540, 1);
 __ZN6cashew7IString3setEPKcb(36296, 25545, 1);
 __ZN6cashew7IString3setEPKcb(36300, 25549, 1);
 __ZN6cashew7IString3setEPKcb(36304, 25555, 1);
 __ZN6cashew7IString3setEPKcb(36308, 25561, 1);
 __ZN6cashew7IString3setEPKcb(36312, 25570, 1);
 __ZN6cashew7IString3setEPKcb(36316, 25577, 1);
 __ZN6cashew7IString3setEPKcb(36320, 29198, 1);
 __ZN6cashew7IString3setEPKcb(36324, 29219, 1);
 __ZN6cashew7IString3setEPKcb(36328, 25584, 1);
 __ZN6cashew7IString3setEPKcb(36332, 25593, 1);
 __ZN6cashew7IString3setEPKcb(36336, 25605, 1);
 __ZN6cashew7IString3setEPKcb(36340, 25620, 1);
 __ZN6cashew7IString3setEPKcb(36344, 25634, 1);
 __ZN6cashew7IString3setEPKcb(36348, 25647, 1);
 __ZN6cashew7IString3setEPKcb(36352, 25661, 1);
 __ZN6cashew7IString3setEPKcb(36356, 25673, 1);
 __ZN6cashew7IString3setEPKcb(36360, 25688, 1);
 __ZN6cashew7IString3setEPKcb(36364, 25703, 1);
 __ZN6cashew7IString3setEPKcb(36368, 25716, 1);
 __ZN6cashew7IString3setEPKcb(36372, 25729, 1);
 __ZN6cashew7IString3setEPKcb(36376, 34740, 1);
 __ZN6cashew7IString3setEPKcb(36380, 34691, 1);
 __ZN6cashew7IString3setEPKcb(36384, 34731, 1);
 __ZN6cashew7IString3setEPKcb(36388, 33674, 1);
 __ZN6cashew7IString3setEPKcb(36392, 34667, 1);
 __ZN6cashew7IString3setEPKcb(36396, 34715, 1);
 __ZN6cashew7IString3setEPKcb(36400, 33708, 1);
 __ZN6cashew7IString3setEPKcb(36404, 34251, 1);
 __ZN6cashew7IString3setEPKcb(36408, 34675, 1);
 __ZN6cashew7IString3setEPKcb(36412, 34681, 1);
 __ZN6cashew7IString3setEPKcb(36416, 33666, 1);
 __ZN6cashew7IString3setEPKcb(36420, 34672, 1);
 __ZN6cashew7IString3setEPKcb(36424, 34712, 1);
 __ZN6cashew7IString3setEPKcb(36428, 34662, 1);
 __ZN6cashew7IString3setEPKcb(36432, 34785, 1);
 __ZN6cashew7IString3setEPKcb(36436, 33740, 1);
 __ZN6cashew7IString3setEPKcb(36440, 34790, 1);
 __ZN6cashew7IString3setEPKcb(36444, 34684, 1);
 __ZN6cashew7IString3setEPKcb(36448, 25742, 1);
 __ZN6cashew7IString3setEPKcb(36452, 25746, 1);
 __ZN6cashew7IString3setEPKcb(36456, 25760, 1);
 __ZN6cashew7IString3setEPKcb(36460, 25766, 1);
 __ZN6cashew7IString3setEPKcb(36464, 25773, 1);
 __ZN6cashew7IString3setEPKcb(36468, 25780, 1);
 __ZN6cashew7IString3setEPKcb(36472, 25788, 1);
 __ZN6cashew7IString3setEPKcb(36476, 25795, 1);
 __ZN6cashew7IString3setEPKcb(36480, 25803, 1);
 __ZN6cashew7IString3setEPKcb(36484, 25811, 1);
 __ZN6cashew7IString3setEPKcb(36488, 25819, 1);
 __ZN6cashew7IString3setEPKcb(36492, 44318, 1);
 __ZN6cashew7IString3setEPKcb(36496, 25822, 1);
 __ZN6cashew7IString3setEPKcb(36500, 33619, 1);
 __ZN6cashew7IString3setEPKcb(36504, 25831, 1);
 __ZN6cashew7IString3setEPKcb(36508, 25833, 1);
 __ZN6cashew7IString3setEPKcb(36512, 25835, 1);
 __ZN6cashew7IString3setEPKcb(36516, 33706, 1);
 __ZN6cashew7IString3setEPKcb(36520, 25837, 1);
 __ZN6cashew7IString3setEPKcb(36524, 25839, 1);
 __ZN6cashew7IString3setEPKcb(36528, 25841, 1);
 __ZN6cashew7IString3setEPKcb(36532, 25846, 1);
 __ZN6cashew7IString3setEPKcb(36536, 25854, 1);
 __ZN6cashew7IString3setEPKcb(36540, 34660, 1);
 __ZN6cashew7IString3setEPKcb(36544, 25858, 1);
 __ZN6cashew7IString3setEPKcb(36548, 25862, 1);
 __ZN6cashew7IString3setEPKcb(36552, 25868, 1);
 __ZN6cashew7IString3setEPKcb(36556, 34838, 1);
 __ZN6cashew7IString3setEPKcb(36560, 33679, 1);
 __ZN6cashew10IStringSetC2EPKc(36564, 25875);
 ___cxa_atexit(211, 36564, ___dso_handle | 0) | 0;
 HEAP32[9146] = 0;
 HEAP32[9147] = 0;
 HEAP32[9148] = 0;
 ___cxa_atexit(212, 36584, ___dso_handle | 0) | 0;
 HEAP32[9149] = 0;
 HEAP32[9150] = 0;
 HEAP32[9151] = 0;
 ___cxa_atexit(213, 36596, ___dso_handle | 0) | 0;
 __ZN6cashew4InitC2Ev(42244);
 return;
}

function __ZNSt3__120__get_up_to_n_digitsIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEEEiRT0_S5_RjRKNS_5ctypeIT_EEi(i12, i14, i15, i11, i6) {
 i12 = i12 | 0;
 i14 = i14 | 0;
 i15 = i15 | 0;
 i11 = i11 | 0;
 i6 = i6 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i13 = 0;
 i1 = HEAP32[i12 >> 2] | 0;
 do if (i1) {
  if ((HEAP32[i1 + 12 >> 2] | 0) == (HEAP32[i1 + 16 >> 2] | 0)) if ((FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 36 >> 2] & 127](i1) | 0) == -1) {
   HEAP32[i12 >> 2] = 0;
   i1 = 0;
   break;
  } else {
   i1 = HEAP32[i12 >> 2] | 0;
   break;
  }
 } else i1 = 0; while (0);
 i2 = (i1 | 0) == 0;
 i1 = HEAP32[i14 >> 2] | 0;
 do if (i1) {
  if ((HEAP32[i1 + 12 >> 2] | 0) == (HEAP32[i1 + 16 >> 2] | 0) ? (FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 36 >> 2] & 127](i1) | 0) == -1 : 0) {
   HEAP32[i14 >> 2] = 0;
   i13 = 11;
   break;
  }
  if (i2) i13 = 13; else i13 = 12;
 } else i13 = 11; while (0);
 if ((i13 | 0) == 11) if (i2) i13 = 12; else {
  i1 = 0;
  i13 = 13;
 }
 L16 : do if ((i13 | 0) == 12) {
  HEAP32[i15 >> 2] = HEAP32[i15 >> 2] | 6;
  i1 = 0;
 } else if ((i13 | 0) == 13) {
  i2 = HEAP32[i12 >> 2] | 0;
  i3 = HEAP32[i2 + 12 >> 2] | 0;
  if ((i3 | 0) == (HEAP32[i2 + 16 >> 2] | 0)) i2 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i2 >> 2] | 0) + 36 >> 2] & 127](i2) | 0; else i2 = HEAPU8[i3 >> 0] | 0;
  i3 = i2 & 255;
  if (i3 << 24 >> 24 > -1 ? (i10 = i11 + 8 | 0, HEAP16[(HEAP32[i10 >> 2] | 0) + (i2 << 24 >> 24 << 1) >> 1] & 2048) : 0) {
   i5 = (FUNCTION_TABLE_iiii[HEAP32[(HEAP32[i11 >> 2] | 0) + 36 >> 2] & 31](i11, i3, 0) | 0) << 24 >> 24;
   i2 = HEAP32[i12 >> 2] | 0;
   i3 = i2 + 12 | 0;
   i4 = HEAP32[i3 >> 2] | 0;
   if ((i4 | 0) == (HEAP32[i2 + 16 >> 2] | 0)) {
    FUNCTION_TABLE_ii[HEAP32[(HEAP32[i2 >> 2] | 0) + 40 >> 2] & 127](i2) | 0;
    i8 = i6;
    i7 = i1;
    i6 = i1;
    i1 = i5;
   } else {
    HEAP32[i3 >> 2] = i4 + 1;
    i8 = i6;
    i7 = i1;
    i6 = i1;
    i1 = i5;
   }
   while (1) {
    i1 = i1 + -48 | 0;
    i9 = i8 + -1 | 0;
    i2 = HEAP32[i12 >> 2] | 0;
    do if (i2) {
     if ((HEAP32[i2 + 12 >> 2] | 0) == (HEAP32[i2 + 16 >> 2] | 0)) if ((FUNCTION_TABLE_ii[HEAP32[(HEAP32[i2 >> 2] | 0) + 36 >> 2] & 127](i2) | 0) == -1) {
      HEAP32[i12 >> 2] = 0;
      i2 = 0;
      break;
     } else {
      i2 = HEAP32[i12 >> 2] | 0;
      break;
     }
    } else i2 = 0; while (0);
    i4 = (i2 | 0) == 0;
    if (i6) if ((HEAP32[i6 + 12 >> 2] | 0) == (HEAP32[i6 + 16 >> 2] | 0)) if ((FUNCTION_TABLE_ii[HEAP32[(HEAP32[i6 >> 2] | 0) + 36 >> 2] & 127](i6) | 0) == -1) {
     HEAP32[i14 >> 2] = 0;
     i3 = 0;
     i6 = 0;
    } else {
     i3 = i7;
     i6 = i7;
    } else i3 = i7; else {
     i3 = i7;
     i6 = 0;
    }
    i2 = HEAP32[i12 >> 2] | 0;
    if (!((i8 | 0) > 1 & (i4 ^ (i6 | 0) == 0))) break;
    i4 = HEAP32[i2 + 12 >> 2] | 0;
    if ((i4 | 0) == (HEAP32[i2 + 16 >> 2] | 0)) i2 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i2 >> 2] | 0) + 36 >> 2] & 127](i2) | 0; else i2 = HEAPU8[i4 >> 0] | 0;
    i4 = i2 & 255;
    if (i4 << 24 >> 24 <= -1) break L16;
    if (!(HEAP16[(HEAP32[i10 >> 2] | 0) + (i2 << 24 >> 24 << 1) >> 1] & 2048)) break L16;
    i1 = ((FUNCTION_TABLE_iiii[HEAP32[(HEAP32[i11 >> 2] | 0) + 36 >> 2] & 31](i11, i4, 0) | 0) << 24 >> 24) + (i1 * 10 | 0) | 0;
    i2 = HEAP32[i12 >> 2] | 0;
    i4 = i2 + 12 | 0;
    i5 = HEAP32[i4 >> 2] | 0;
    if ((i5 | 0) == (HEAP32[i2 + 16 >> 2] | 0)) {
     FUNCTION_TABLE_ii[HEAP32[(HEAP32[i2 >> 2] | 0) + 40 >> 2] & 127](i2) | 0;
     i8 = i9;
     i7 = i3;
     continue;
    } else {
     HEAP32[i4 >> 2] = i5 + 1;
     i8 = i9;
     i7 = i3;
     continue;
    }
   }
   do if (i2) {
    if ((HEAP32[i2 + 12 >> 2] | 0) == (HEAP32[i2 + 16 >> 2] | 0)) if ((FUNCTION_TABLE_ii[HEAP32[(HEAP32[i2 >> 2] | 0) + 36 >> 2] & 127](i2) | 0) == -1) {
     HEAP32[i12 >> 2] = 0;
     i2 = 0;
     break;
    } else {
     i2 = HEAP32[i12 >> 2] | 0;
     break;
    }
   } else i2 = 0; while (0);
   i2 = (i2 | 0) == 0;
   do if (i3) {
    if ((HEAP32[i3 + 12 >> 2] | 0) == (HEAP32[i3 + 16 >> 2] | 0) ? (FUNCTION_TABLE_ii[HEAP32[(HEAP32[i3 >> 2] | 0) + 36 >> 2] & 127](i3) | 0) == -1 : 0) {
     HEAP32[i14 >> 2] = 0;
     i13 = 50;
     break;
    }
    if (i2) break L16;
   } else i13 = 50; while (0);
   if ((i13 | 0) == 50 ? !i2 : 0) break;
   HEAP32[i15 >> 2] = HEAP32[i15 >> 2] | 2;
   break;
  }
  HEAP32[i15 >> 2] = HEAP32[i15 >> 2] | 4;
  i1 = 0;
 } while (0);
 return i1 | 0;
}

function __ZN4wasm7VisitorIZNS_14ModuleInstance12callFunctionEN6cashew7IStringERNSt3__16vectorINS_7LiteralENS4_9allocatorIS6_EEEEE16ExpressionRunnerNS_4FlowEE5visitEPNS_10ExpressionE(i1, i3, i2) {
 i1 = i1 | 0;
 i3 = i3 | 0;
 i2 = i2 | 0;
 if (!i2) ___assert_fail(22690, 25274, 68, 22695);
 do switch (HEAP32[i2 >> 2] | 0) {
 case 1:
  {
   __ZZN4wasm14ModuleInstance12callFunctionEN6cashew7IStringERNSt3__16vectorINS_7LiteralENS3_9allocatorIS5_EEEEEN16ExpressionRunner10visitBlockEPNS_5BlockE(i1, i3, i2);
   break;
  }
 case 2:
  {
   __ZZN4wasm14ModuleInstance12callFunctionEN6cashew7IStringERNSt3__16vectorINS_7LiteralENS3_9allocatorIS5_EEEEEN16ExpressionRunner7visitIfEPNS_2IfE(i1, i3, i2);
   break;
  }
 case 3:
  {
   __ZZN4wasm14ModuleInstance12callFunctionEN6cashew7IStringERNSt3__16vectorINS_7LiteralENS3_9allocatorIS5_EEEEEN16ExpressionRunner9visitLoopEPNS_4LoopE(i1, i3, i2);
   break;
  }
 case 4:
  {
   __ZZN4wasm14ModuleInstance12callFunctionEN6cashew7IStringERNSt3__16vectorINS_7LiteralENS3_9allocatorIS5_EEEEEN16ExpressionRunner10visitBreakEPNS_5BreakE(i1, i3, i2);
   break;
  }
 case 5:
  {
   __ZZN4wasm14ModuleInstance12callFunctionEN6cashew7IStringERNSt3__16vectorINS_7LiteralENS3_9allocatorIS5_EEEEEN16ExpressionRunner11visitSwitchEPNS_6SwitchE(i1, i3, i2);
   break;
  }
 case 6:
  {
   __ZZN4wasm14ModuleInstance12callFunctionEN6cashew7IStringERNSt3__16vectorINS_7LiteralENS3_9allocatorIS5_EEEEEN16ExpressionRunner9visitCallEPNS_4CallE(i1, i3, i2);
   break;
  }
 case 7:
  {
   __ZZN4wasm14ModuleInstance12callFunctionEN6cashew7IStringERNSt3__16vectorINS_7LiteralENS3_9allocatorIS5_EEEEEN16ExpressionRunner15visitCallImportEPNS_10CallImportE(i1, i3, i2);
   break;
  }
 case 8:
  {
   __ZZN4wasm14ModuleInstance12callFunctionEN6cashew7IStringERNSt3__16vectorINS_7LiteralENS3_9allocatorIS5_EEEEEN16ExpressionRunner17visitCallIndirectEPNS_12CallIndirectE(i1, i3, i2);
   break;
  }
 case 9:
  {
   __ZZN4wasm14ModuleInstance12callFunctionEN6cashew7IStringERNSt3__16vectorINS_7LiteralENS3_9allocatorIS5_EEEEEN16ExpressionRunner13visitGetLocalEPNS_8GetLocalE(i1, i3, i2);
   break;
  }
 case 10:
  {
   __ZZN4wasm14ModuleInstance12callFunctionEN6cashew7IStringERNSt3__16vectorINS_7LiteralENS3_9allocatorIS5_EEEEEN16ExpressionRunner13visitSetLocalEPNS_8SetLocalE(i1, i3, i2);
   break;
  }
 case 11:
  {
   __ZZN4wasm14ModuleInstance12callFunctionEN6cashew7IStringERNSt3__16vectorINS_7LiteralENS3_9allocatorIS5_EEEEEN16ExpressionRunner9visitLoadEPNS_4LoadE(i1, i3, i2);
   break;
  }
 case 12:
  {
   __ZZN4wasm14ModuleInstance12callFunctionEN6cashew7IStringERNSt3__16vectorINS_7LiteralENS3_9allocatorIS5_EEEEEN16ExpressionRunner10visitStoreEPNS_5StoreE(i1, i3, i2);
   break;
  }
 case 13:
  {
   i3 = i2 + 8 | 0;
   HEAP32[i1 >> 2] = HEAP32[i3 >> 2];
   HEAP32[i1 + 4 >> 2] = HEAP32[i3 + 4 >> 2];
   HEAP32[i1 + 8 >> 2] = HEAP32[i3 + 8 >> 2];
   HEAP32[i1 + 12 >> 2] = HEAP32[i3 + 12 >> 2];
   HEAP32[i1 + 16 >> 2] = 0;
   break;
  }
 case 14:
  {
   __ZZN4wasm14ModuleInstance12callFunctionEN6cashew7IStringERNSt3__16vectorINS_7LiteralENS3_9allocatorIS5_EEEEEN16ExpressionRunner10visitUnaryEPNS_5UnaryE(i1, i3, i2);
   break;
  }
 case 15:
  {
   __ZZN4wasm14ModuleInstance12callFunctionEN6cashew7IStringERNSt3__16vectorINS_7LiteralENS3_9allocatorIS5_EEEEEN16ExpressionRunner11visitBinaryEPNS_6BinaryE(i1, i3, i2);
   break;
  }
 case 16:
  {
   __ZZN4wasm14ModuleInstance12callFunctionEN6cashew7IStringERNSt3__16vectorINS_7LiteralENS3_9allocatorIS5_EEEEEN16ExpressionRunner11visitSelectEPNS_6SelectE(i1, i3, i2);
   break;
  }
 case 17:
  {
   __ZZN4wasm14ModuleInstance12callFunctionEN6cashew7IStringERNSt3__16vectorINS_7LiteralENS3_9allocatorIS5_EEEEEN16ExpressionRunner11visitReturnEPNS_6ReturnE(i1, i3, i2);
   break;
  }
 case 18:
  {
   __ZZN4wasm14ModuleInstance12callFunctionEN6cashew7IStringERNSt3__16vectorINS_7LiteralENS3_9allocatorIS5_EEEEEN16ExpressionRunner9visitHostEPNS_4HostE(i1, i3, i2);
   break;
  }
 case 19:
  {
   HEAP32[i1 >> 2] = 0;
   i3 = i1 + 8 | 0;
   HEAP32[i3 >> 2] = 0;
   HEAP32[i3 + 4 >> 2] = 0;
   HEAP32[i1 + 16 >> 2] = 0;
   break;
  }
 case 20:
  {
   i3 = HEAP32[(HEAP32[i3 >> 2] | 0) + 24 >> 2] | 0;
   FUNCTION_TABLE_vii[HEAP32[(HEAP32[i3 >> 2] | 0) + 20 >> 2] & 511](i3, 18868);
   HEAP32[i1 >> 2] = 0;
   i3 = i1 + 8 | 0;
   HEAP32[i3 >> 2] = 0;
   HEAP32[i3 + 4 >> 2] = 0;
   HEAP32[i1 + 16 >> 2] = 0;
   break;
  }
 default:
  {}
 } while (0);
 return;
}

function __ZN4wasm22SExpressionWasmBuilder11parseImportERNS_7ElementE(i14, i10) {
 i14 = i14 | 0;
 i10 = i10 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i11 = 0, i12 = 0, i13 = 0, i15 = 0, i16 = 0;
 i16 = STACKTOP;
 STACKTOP = STACKTOP + 48 | 0;
 i3 = i16 + 44 | 0;
 i15 = i16 + 20 | 0;
 i8 = i16 + 40 | 0;
 i4 = i16 + 16 | 0;
 i5 = i16 + 12 | 0;
 i11 = i16;
 i12 = i14 + 4 | 0;
 i13 = __ZN10MixedArena5allocIN4wasm6ImportEEEPT_v(HEAP32[i12 >> 2] | 0) | 0;
 if ((__ZN4wasm7Element4sizeEv(i10) | 0) >>> 0 > 3 ? (i9 = __ZN4wasm7Element4listEv(i10) | 0, (HEAP8[HEAP32[(HEAP32[i9 >> 2] | 0) + 12 >> 2] >> 0] | 0) == 0) : 0) {
  i1 = __ZN4wasm7Element4listEv(i10) | 0;
  i1 = __ZN4wasm7Element3strEv(HEAP32[(HEAP32[i1 >> 2] | 0) + 4 >> 2] | 0) | 0;
  HEAP32[i13 >> 2] = i1;
  i1 = i14 + 48 | 0;
  i9 = 2;
 } else {
  i1 = i14 + 48 | 0;
  i9 = __ZN4wasm4Name7fromIntEj(HEAP32[i1 >> 2] | 0) | 0;
  HEAP32[i13 >> 2] = i9;
  i9 = 1;
 }
 HEAP32[i1 >> 2] = (HEAP32[i1 >> 2] | 0) + 1;
 i1 = i9 + 1 | 0;
 i7 = __ZN4wasm7Element3strEv(__ZN4wasm7ElementixEj(i10, i9) | 0) | 0;
 HEAP32[i13 + 4 >> 2] = i7;
 i7 = __ZN4wasm7ElementixEj(i10, i1) | 0;
 if (HEAP8[i7 >> 0] | 0) __ZNKSt3__18functionIFvvEEclEv(i14 + 8 | 0);
 i2 = i9 + 2 | 0;
 i7 = __ZN4wasm7Element3strEv(__ZN4wasm7ElementixEj(i10, i1) | 0) | 0;
 HEAP32[i13 + 8 >> 2] = i7;
 HEAP32[i15 >> 2] = 0;
 HEAP32[i15 + 4 >> 2] = 0;
 HEAP32[i15 + 8 >> 2] = 0;
 HEAP32[i15 + 12 >> 2] = 0;
 HEAP32[i15 + 16 >> 2] = 0;
 do if ((__ZN4wasm7Element4sizeEv(i10) | 0) >>> 0 > i2 >>> 0) {
  i7 = __ZN4wasm7ElementixEj(i10, i2) | 0;
  i1 = __ZN4wasm7Element4listEv(i7) | 0;
  i1 = __ZN4wasm7Element3strEv(HEAP32[HEAP32[i1 >> 2] >> 2] | 0) | 0;
  L12 : do if ((i1 | 0) == (HEAP32[9008] | 0)) {
   i1 = i15 + 8 | 0;
   i2 = i15 + 12 | 0;
   i3 = i15 + 16 | 0;
   i6 = 1;
   while (1) {
    if (i6 >>> 0 >= (__ZN4wasm7Element4sizeEv(i7) | 0) >>> 0) break L12;
    i4 = __ZN4wasm22SExpressionWasmBuilder16stringToWasmTypeEPKcbb(i14, __ZN4wasm7Element3strEv(__ZN4wasm7ElementixEj(i7, i6) | 0) | 0, 0, 0) | 0;
    HEAP32[i8 >> 2] = i4;
    i5 = HEAP32[i2 >> 2] | 0;
    if (i5 >>> 0 < (HEAP32[i3 >> 2] | 0) >>> 0) {
     HEAP32[i5 >> 2] = i4;
     HEAP32[i2 >> 2] = i5 + 4;
    } else __ZNSt3__16vectorIN4wasm8WasmTypeENS_9allocatorIS2_EEE21__push_back_slow_pathIS2_EEvOT_(i1, i8);
    i6 = i6 + 1 | 0;
   }
  } else {
   if ((i1 | 0) == (HEAP32[9009] | 0)) {
    i8 = __ZN4wasm7Element4listEv(i7) | 0;
    i8 = __ZN4wasm22SExpressionWasmBuilder16stringToWasmTypeEPKcbb(i14, __ZN4wasm7Element3strEv(HEAP32[(HEAP32[i8 >> 2] | 0) + 4 >> 2] | 0) | 0, 0, 0) | 0;
    HEAP32[i15 + 4 >> 2] = i8;
    break;
   }
   if ((i1 | 0) != (HEAP32[9016] | 0)) {
    __ZNKSt3__18functionIFvvEEclEv(i14 + 8 | 0);
    break;
   }
   i1 = __ZN4wasm7Element4listEv(i7) | 0;
   i1 = __ZN4wasm7Element3strEv(HEAP32[(HEAP32[i1 >> 2] | 0) + 4 >> 2] | 0) | 0;
   i8 = HEAP32[i14 >> 2] | 0;
   HEAP32[i4 >> 2] = i1;
   HEAP32[i3 >> 2] = HEAP32[i4 >> 2];
   if (!(__ZN4wasm6Module17checkFunctionTypeENS_4NameE(i8, i3) | 0)) __ZNKSt3__18functionIFvvEEclEv(i14 + 8 | 0);
   i8 = HEAP32[i14 >> 2] | 0;
   HEAP32[i5 >> 2] = i1;
   HEAP32[i3 >> 2] = HEAP32[i5 >> 2];
   __ZN4wasm12FunctionTypeaSERKS0_(i15, __ZN4wasm6Module15getFunctionTypeENS_4NameE(i8, i3) | 0) | 0;
  } while (0);
  i1 = i9 + 3 | 0;
  if ((__ZN4wasm7Element4sizeEv(i10) | 0) >>> 0 > i1 >>> 0) {
   i1 = __ZN4wasm7ElementixEj(i10, i1) | 0;
   i10 = __ZN4wasm7Element4listEv(i1) | 0;
   i10 = __ZN4wasm7Element3strEv(HEAP32[HEAP32[i10 >> 2] >> 2] | 0) | 0;
   if ((i10 | 0) == (HEAP32[9009] | 0)) {
    i10 = __ZN4wasm7Element4listEv(i1) | 0;
    i10 = __ZN4wasm22SExpressionWasmBuilder16stringToWasmTypeEPKcbb(i14, __ZN4wasm7Element3strEv(HEAP32[(HEAP32[i10 >> 2] | 0) + 4 >> 2] | 0) | 0, 0, 0) | 0;
    HEAP32[i15 + 4 >> 2] = i10;
    break;
   } else ___assert_fail(14756, 14303, 1153, 14783);
  }
 } while (0);
 __ZN4wasm6getSigEPNS_12FunctionTypeE(i11, i15);
 i12 = __ZN4wasm18ensureFunctionTypeENSt3__112basic_stringIcNS0_11char_traitsIcEENS0_9allocatorIcEEEEPNS_6ModuleER10MixedArena(i11, HEAP32[i14 >> 2] | 0, HEAP32[i12 >> 2] | 0) | 0;
 HEAP32[i13 + 12 >> 2] = i12;
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i11);
 __ZN4wasm6Module9addImportEPNS_6ImportE(HEAP32[i14 >> 2] | 0, i13);
 __ZNSt3__113__vector_baseIN4wasm8WasmTypeENS_9allocatorIS2_EEED2Ev(i15 + 8 | 0);
 STACKTOP = i16;
 return;
}

function _mbsrtowcs(i5, i10, i1, i3) {
 i5 = i5 | 0;
 i10 = i10 | 0;
 i1 = i1 | 0;
 i3 = i3 | 0;
 var i2 = 0, i4 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0;
 i2 = HEAP32[i10 >> 2] | 0;
 if ((i3 | 0) != 0 ? (i4 = HEAP32[i3 >> 2] | 0, (i4 | 0) != 0) : 0) if (!i5) {
  i3 = i1;
  i6 = i2;
  i9 = 16;
 } else {
  HEAP32[i3 >> 2] = 0;
  i8 = i5;
  i3 = i1;
  i7 = i4;
  i9 = 37;
 } else if (!i5) {
  i3 = i1;
  i9 = 7;
 } else {
  i4 = i5;
  i3 = i1;
  i9 = 6;
 }
 L7 : while (1) if ((i9 | 0) == 6) {
  if (!i3) {
   i9 = 26;
   break;
  } else i5 = i4;
  while (1) {
   i4 = HEAP8[i2 >> 0] | 0;
   do if (((i4 & 255) + -1 | 0) >>> 0 < 127 ? i3 >>> 0 > 4 & (i2 & 3 | 0) == 0 : 0) {
    i6 = i2;
    while (1) {
     i2 = HEAP32[i6 >> 2] | 0;
     if ((i2 + -16843009 | i2) & -2139062144 | 0) {
      i4 = i2;
      i2 = i6;
      i9 = 32;
      break;
     }
     HEAP32[i5 >> 2] = i2 & 255;
     HEAP32[i5 + 4 >> 2] = HEAPU8[i6 + 1 >> 0];
     HEAP32[i5 + 8 >> 2] = HEAPU8[i6 + 2 >> 0];
     i2 = i6 + 4 | 0;
     i4 = i5 + 16 | 0;
     HEAP32[i5 + 12 >> 2] = HEAPU8[i6 + 3 >> 0];
     i3 = i3 + -4 | 0;
     if (i3 >>> 0 > 4) {
      i5 = i4;
      i6 = i2;
     } else {
      i9 = 31;
      break;
     }
    }
    if ((i9 | 0) == 31) {
     i5 = i4;
     i4 = HEAP8[i2 >> 0] | 0;
     break;
    } else if ((i9 | 0) == 32) {
     i4 = i4 & 255;
     break;
    }
   } while (0);
   i4 = i4 & 255;
   if ((i4 + -1 | 0) >>> 0 >= 127) break;
   i2 = i2 + 1 | 0;
   HEAP32[i5 >> 2] = i4;
   i3 = i3 + -1 | 0;
   if (!i3) {
    i9 = 26;
    break L7;
   } else i5 = i5 + 4 | 0;
  }
  i4 = i4 + -194 | 0;
  if (i4 >>> 0 > 50) {
   i9 = 48;
   break;
  }
  i8 = i5;
  i7 = HEAP32[4836 + (i4 << 2) >> 2] | 0;
  i2 = i2 + 1 | 0;
  i9 = 37;
  continue;
 } else if ((i9 | 0) == 7) {
  i4 = HEAP8[i2 >> 0] | 0;
  if (((i4 & 255) + -1 | 0) >>> 0 < 127 ? (i2 & 3 | 0) == 0 : 0) {
   i9 = HEAP32[i2 >> 2] | 0;
   i4 = i9 & 255;
   if (!((i9 + -16843009 | i9) & -2139062144)) {
    do {
     i2 = i2 + 4 | 0;
     i3 = i3 + -4 | 0;
     i4 = HEAP32[i2 >> 2] | 0;
    } while (((i4 + -16843009 | i4) & -2139062144 | 0) == 0);
    i4 = i4 & 255;
   }
  }
  i4 = i4 & 255;
  if ((i4 + -1 | 0) >>> 0 < 127) {
   i3 = i3 + -1 | 0;
   i2 = i2 + 1 | 0;
   i9 = 7;
   continue;
  }
  i4 = i4 + -194 | 0;
  if (i4 >>> 0 > 50) {
   i9 = 48;
   break;
  }
  i4 = HEAP32[4836 + (i4 << 2) >> 2] | 0;
  i6 = i2 + 1 | 0;
  i9 = 16;
  continue;
 } else if ((i9 | 0) == 16) {
  i9 = (HEAPU8[i6 >> 0] | 0) >>> 3;
  if ((i9 + -16 | i9 + (i4 >> 26)) >>> 0 > 7) {
   i9 = 17;
   break;
  }
  i2 = i6 + 1 | 0;
  if (i4 & 33554432) {
   if ((HEAP8[i2 >> 0] & -64) << 24 >> 24 != -128) {
    i9 = 20;
    break;
   }
   i2 = i6 + 2 | 0;
   if (i4 & 524288) {
    if ((HEAP8[i2 >> 0] & -64) << 24 >> 24 != -128) {
     i9 = 23;
     break;
    }
    i2 = i6 + 3 | 0;
   }
  }
  i3 = i3 + -1 | 0;
  i9 = 7;
  continue;
 } else if ((i9 | 0) == 37) {
  i4 = HEAPU8[i2 >> 0] | 0;
  i9 = i4 >>> 3;
  if ((i9 + -16 | i9 + (i7 >> 26)) >>> 0 > 7) {
   i9 = 38;
   break;
  }
  i6 = i2 + 1 | 0;
  i5 = i4 + -128 | i7 << 6;
  if ((i5 | 0) < 0) {
   i4 = HEAPU8[i6 >> 0] | 0;
   if ((i4 & 192 | 0) != 128) {
    i9 = 41;
    break;
   }
   i6 = i2 + 2 | 0;
   i5 = i4 + -128 | i5 << 6;
   if ((i5 | 0) < 0) {
    i4 = HEAPU8[i6 >> 0] | 0;
    if ((i4 & 192 | 0) != 128) {
     i9 = 44;
     break;
    }
    i5 = i4 + -128 | i5 << 6;
    i2 = i2 + 3 | 0;
   } else i2 = i6;
  } else i2 = i6;
  HEAP32[i8 >> 2] = i5;
  i4 = i8 + 4 | 0;
  i3 = i3 + -1 | 0;
  i9 = 6;
  continue;
 }
 if ((i9 | 0) == 17) {
  i2 = i6 + -1 | 0;
  i9 = 47;
 } else if ((i9 | 0) == 20) {
  i2 = i6 + -1 | 0;
  i9 = 47;
 } else if ((i9 | 0) == 23) {
  i2 = i6 + -1 | 0;
  i9 = 47;
 } else if ((i9 | 0) == 26) HEAP32[i10 >> 2] = i2; else if ((i9 | 0) == 38) {
  i5 = i8;
  i4 = i7;
  i2 = i2 + -1 | 0;
  i9 = 47;
 } else if ((i9 | 0) == 41) {
  i3 = i8;
  i1 = i2 + -1 | 0;
  i9 = 52;
 } else if ((i9 | 0) == 44) {
  i3 = i8;
  i1 = i2 + -1 | 0;
  i9 = 52;
 }
 if ((i9 | 0) == 47) if (!i4) i9 = 48; else {
  i3 = i5;
  i1 = i2;
  i9 = 52;
 }
 if ((i9 | 0) == 48) if (!(HEAP8[i2 >> 0] | 0)) {
  if (i5 | 0) {
   HEAP32[i5 >> 2] = 0;
   HEAP32[i10 >> 2] = 0;
  }
  i1 = i1 - i3 | 0;
 } else {
  i3 = i5;
  i1 = i2;
  i9 = 52;
 }
 if ((i9 | 0) == 52) {
  i9 = ___errno_location() | 0;
  HEAP32[i9 >> 2] = 84;
  if (!i3) i1 = -1; else {
   HEAP32[i10 >> 2] = i1;
   i1 = -1;
  }
 }
 return i1 | 0;
}

function __ZN4wasm21LinearExecutionWalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE4scanEPS1_PPNS_10ExpressionE(i1, i3) {
 i1 = i1 | 0;
 i3 = i3 | 0;
 var i2 = 0, i4 = 0;
 i2 = HEAP32[i3 >> 2] | 0;
 L1 : do switch (HEAP32[i2 >> 2] | 0) {
 case 0:
  {
   _abort();
   break;
  }
 case 1:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 194, i3);
   __ZN4wasm6WalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 195, i3);
   i3 = __ZN4wasm10Expression4castINS_5BlockEEEPT_v(i2) | 0;
   i1 = i3 + 12 | 0;
   i3 = (HEAP32[i3 + 16 >> 2] | 0) - (HEAP32[i1 >> 2] | 0) >> 2;
   while (1) {
    i2 = i3 + -1 | 0;
    if ((i3 | 0) <= 0) break L1;
    __ZN4wasm6WalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 167, (HEAP32[i1 >> 2] | 0) + (i2 << 2) | 0);
    i3 = i2;
   }
  }
 case 2:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 196, i3);
   __ZN4wasm6WalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 195, i3);
   __ZN4wasm6WalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE13maybePushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 167, (__ZN4wasm10Expression4castINS_2IfEEEPT_v(i2) | 0) + 16 | 0);
   __ZN4wasm6WalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 195, i3);
   __ZN4wasm6WalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 167, (__ZN4wasm10Expression4castINS_2IfEEEPT_v(i2) | 0) + 12 | 0);
   __ZN4wasm6WalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 195, i3);
   __ZN4wasm6WalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 167, (__ZN4wasm10Expression4castINS_2IfEEEPT_v(i2) | 0) + 8 | 0);
   break;
  }
 case 3:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 197, i3);
   __ZN4wasm6WalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 167, (__ZN4wasm10Expression4castINS_4LoopEEEPT_v(i2) | 0) + 16 | 0);
   __ZN4wasm6WalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 195, i3);
   break;
  }
 case 4:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 198, i3);
   __ZN4wasm6WalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 195, i3);
   __ZN4wasm6WalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE13maybePushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 167, (__ZN4wasm10Expression4castINS_5BreakEEEPT_v(i2) | 0) + 16 | 0);
   __ZN4wasm6WalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE13maybePushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 167, (__ZN4wasm10Expression4castINS_5BreakEEEPT_v(i2) | 0) + 12 | 0);
   break;
  }
 case 5:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 199, i3);
   __ZN4wasm6WalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 195, i3);
   __ZN4wasm6WalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE13maybePushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 167, (__ZN4wasm10Expression4castINS_6SwitchEEEPT_v(i2) | 0) + 28 | 0);
   __ZN4wasm6WalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 167, (__ZN4wasm10Expression4castINS_6SwitchEEEPT_v(i2) | 0) + 24 | 0);
   break;
  }
 case 17:
  {
   i4 = i1 + 16 | 0;
   __ZN4wasm6WalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 200, i3);
   __ZN4wasm6WalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 195, i3);
   __ZN4wasm6WalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE13maybePushTaskEPFvPS1_PPNS_10ExpressionEES8_(i4, 167, (__ZN4wasm10Expression4castINS_6ReturnEEEPT_v(i2) | 0) + 8 | 0);
   break;
  }
 default:
  __ZN4wasm10PostWalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE4scanEPS1_PPNS_10ExpressionE(i1, i3);
 } while (0);
 return;
}

function ___udivmoddi4(i5, i6, i8, i11, i13) {
 i5 = i5 | 0;
 i6 = i6 | 0;
 i8 = i8 | 0;
 i11 = i11 | 0;
 i13 = i13 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i7 = 0, i9 = 0, i10 = 0, i12 = 0, i14 = 0, i15 = 0;
 i9 = i5;
 i4 = i6;
 i7 = i4;
 i2 = i8;
 i12 = i11;
 i3 = i12;
 if (!i7) {
  i1 = (i13 | 0) != 0;
  if (!i3) {
   if (i1) {
    HEAP32[i13 >> 2] = (i9 >>> 0) % (i2 >>> 0);
    HEAP32[i13 + 4 >> 2] = 0;
   }
   i12 = 0;
   i13 = (i9 >>> 0) / (i2 >>> 0) >>> 0;
   return (tempRet0 = i12, i13) | 0;
  } else {
   if (!i1) {
    i12 = 0;
    i13 = 0;
    return (tempRet0 = i12, i13) | 0;
   }
   HEAP32[i13 >> 2] = i5 | 0;
   HEAP32[i13 + 4 >> 2] = i6 & 0;
   i12 = 0;
   i13 = 0;
   return (tempRet0 = i12, i13) | 0;
  }
 }
 i1 = (i3 | 0) == 0;
 do if (i2) {
  if (!i1) {
   i1 = (Math_clz32(i3 | 0) | 0) - (Math_clz32(i7 | 0) | 0) | 0;
   if (i1 >>> 0 <= 31) {
    i10 = i1 + 1 | 0;
    i3 = 31 - i1 | 0;
    i6 = i1 - 31 >> 31;
    i2 = i10;
    i5 = i9 >>> (i10 >>> 0) & i6 | i7 << i3;
    i6 = i7 >>> (i10 >>> 0) & i6;
    i1 = 0;
    i3 = i9 << i3;
    break;
   }
   if (!i13) {
    i12 = 0;
    i13 = 0;
    return (tempRet0 = i12, i13) | 0;
   }
   HEAP32[i13 >> 2] = i5 | 0;
   HEAP32[i13 + 4 >> 2] = i4 | i6 & 0;
   i12 = 0;
   i13 = 0;
   return (tempRet0 = i12, i13) | 0;
  }
  i1 = i2 - 1 | 0;
  if (i1 & i2 | 0) {
   i3 = (Math_clz32(i2 | 0) | 0) + 33 - (Math_clz32(i7 | 0) | 0) | 0;
   i15 = 64 - i3 | 0;
   i10 = 32 - i3 | 0;
   i4 = i10 >> 31;
   i14 = i3 - 32 | 0;
   i6 = i14 >> 31;
   i2 = i3;
   i5 = i10 - 1 >> 31 & i7 >>> (i14 >>> 0) | (i7 << i10 | i9 >>> (i3 >>> 0)) & i6;
   i6 = i6 & i7 >>> (i3 >>> 0);
   i1 = i9 << i15 & i4;
   i3 = (i7 << i15 | i9 >>> (i14 >>> 0)) & i4 | i9 << i10 & i3 - 33 >> 31;
   break;
  }
  if (i13 | 0) {
   HEAP32[i13 >> 2] = i1 & i9;
   HEAP32[i13 + 4 >> 2] = 0;
  }
  if ((i2 | 0) == 1) {
   i14 = i4 | i6 & 0;
   i15 = i5 | 0 | 0;
   return (tempRet0 = i14, i15) | 0;
  } else {
   i15 = _llvm_cttz_i32(i2 | 0) | 0;
   i14 = i7 >>> (i15 >>> 0) | 0;
   i15 = i7 << 32 - i15 | i9 >>> (i15 >>> 0) | 0;
   return (tempRet0 = i14, i15) | 0;
  }
 } else {
  if (i1) {
   if (i13 | 0) {
    HEAP32[i13 >> 2] = (i7 >>> 0) % (i2 >>> 0);
    HEAP32[i13 + 4 >> 2] = 0;
   }
   i14 = 0;
   i15 = (i7 >>> 0) / (i2 >>> 0) >>> 0;
   return (tempRet0 = i14, i15) | 0;
  }
  if (!i9) {
   if (i13 | 0) {
    HEAP32[i13 >> 2] = 0;
    HEAP32[i13 + 4 >> 2] = (i7 >>> 0) % (i3 >>> 0);
   }
   i14 = 0;
   i15 = (i7 >>> 0) / (i3 >>> 0) >>> 0;
   return (tempRet0 = i14, i15) | 0;
  }
  i1 = i3 - 1 | 0;
  if (!(i1 & i3)) {
   if (i13 | 0) {
    HEAP32[i13 >> 2] = i5 | 0;
    HEAP32[i13 + 4 >> 2] = i1 & i7 | i6 & 0;
   }
   i14 = 0;
   i15 = i7 >>> ((_llvm_cttz_i32(i3 | 0) | 0) >>> 0);
   return (tempRet0 = i14, i15) | 0;
  }
  i1 = (Math_clz32(i3 | 0) | 0) - (Math_clz32(i7 | 0) | 0) | 0;
  if (i1 >>> 0 <= 30) {
   i6 = i1 + 1 | 0;
   i3 = 31 - i1 | 0;
   i2 = i6;
   i5 = i7 << i3 | i9 >>> (i6 >>> 0);
   i6 = i7 >>> (i6 >>> 0);
   i1 = 0;
   i3 = i9 << i3;
   break;
  }
  if (!i13) {
   i14 = 0;
   i15 = 0;
   return (tempRet0 = i14, i15) | 0;
  }
  HEAP32[i13 >> 2] = i5 | 0;
  HEAP32[i13 + 4 >> 2] = i4 | i6 & 0;
  i14 = 0;
  i15 = 0;
  return (tempRet0 = i14, i15) | 0;
 } while (0);
 if (!i2) {
  i7 = i3;
  i4 = 0;
  i3 = 0;
 } else {
  i10 = i8 | 0 | 0;
  i9 = i12 | i11 & 0;
  i7 = _i64Add(i10 | 0, i9 | 0, -1, -1) | 0;
  i8 = tempRet0;
  i4 = i3;
  i3 = 0;
  do {
   i11 = i4;
   i4 = i1 >>> 31 | i4 << 1;
   i1 = i3 | i1 << 1;
   i11 = i5 << 1 | i11 >>> 31 | 0;
   i12 = i5 >>> 31 | i6 << 1 | 0;
   _i64Subtract(i7 | 0, i8 | 0, i11 | 0, i12 | 0) | 0;
   i15 = tempRet0;
   i14 = i15 >> 31 | ((i15 | 0) < 0 ? -1 : 0) << 1;
   i3 = i14 & 1;
   i5 = _i64Subtract(i11 | 0, i12 | 0, i14 & i10 | 0, (((i15 | 0) < 0 ? -1 : 0) >> 31 | ((i15 | 0) < 0 ? -1 : 0) << 1) & i9 | 0) | 0;
   i6 = tempRet0;
   i2 = i2 - 1 | 0;
  } while ((i2 | 0) != 0);
  i7 = i4;
  i4 = 0;
 }
 i2 = 0;
 if (i13 | 0) {
  HEAP32[i13 >> 2] = i5;
  HEAP32[i13 + 4 >> 2] = i6;
 }
 i14 = (i1 | 0) >>> 31 | (i7 | i2) << 1 | (i2 << 1 | i1 >>> 31) & 0 | i4;
 i15 = (i1 << 1 | 0 >>> 31) & -2 | i3;
 return (tempRet0 = i14, i15) | 0;
}

function __ZN4wasm10PassRunner3runEPNS_6ModuleE(i15, i14) {
 i15 = i15 | 0;
 i14 = i14 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i16 = 0, d17 = 0.0;
 i16 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i12 = i16;
 i13 = i15 + 20 | 0;
 L1 : do if (!(HEAP8[i13 >> 0] | 0)) {
  i3 = HEAP32[i15 + 4 >> 2] | 0;
  i5 = HEAP32[i15 + 8 >> 2] | 0;
  i6 = 0;
  i7 = 0;
  i11 = 0;
 } else {
  i6 = __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(37420, 17128) | 0;
  i7 = __ZNKSt3__18ios_base6getlocEv(i6 + (HEAP32[(HEAP32[i6 >> 2] | 0) + -12 >> 2] | 0) | 0) | 0;
  HEAP32[i12 >> 2] = i7;
  i7 = __ZNKSt3__16locale9use_facetERNS0_2idE(i12, 38376) | 0;
  i7 = FUNCTION_TABLE_iii[HEAP32[(HEAP32[i7 >> 2] | 0) + 28 >> 2] & 63](i7, 10) | 0;
  __ZNSt3__16localeD2Ev(i12);
  __ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEE3putEc(i6, i7) | 0;
  __ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEE5flushEv(i6) | 0;
  i6 = __ZNSt3__16chrono12steady_clock3nowEv() | 0;
  i7 = tempRet0;
  i3 = HEAP32[i15 + 4 >> 2] | 0;
  i5 = HEAP32[i15 + 8 >> 2] | 0;
  i4 = i3;
  i8 = 0;
  while (1) {
   if ((i4 | 0) == (i5 | 0)) {
    i11 = i8;
    break L1;
   }
   i1 = HEAP32[i4 >> 2] | 0;
   i2 = HEAP8[i1 + 4 >> 0] | 0;
   if (!(i2 & 1)) i1 = (i2 & 255) >>> 1; else i1 = HEAP32[i1 + 8 >> 2] | 0;
   i4 = i4 + 4 | 0;
   i8 = i8 >>> 0 < i1 >>> 0 ? i1 : i8;
  }
 } while (0);
 i10 = i15 + 16 | 0;
 while (1) {
  if ((i3 | 0) == (i5 | 0)) break;
  i9 = HEAP32[i3 >> 2] | 0;
  HEAP32[i10 >> 2] = i9;
  if (!(HEAP8[i13 >> 0] | 0)) {
   i1 = 0;
   i2 = 0;
  } else {
   i2 = i9 + 4 | 0;
   __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(__ZNSt3__1lsIcNS_11char_traitsIcEENS_9allocatorIcEEEERNS_13basic_ostreamIT_T0_EES9_RKNS_12basic_stringIS6_S7_T1_EE(__ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(37420, 17159) | 0, i2) | 0, 17189) | 0;
   i4 = i9 + 8 | 0;
   i8 = 0;
   while (1) {
    i1 = HEAP8[i2 >> 0] | 0;
    if (!(i1 & 1)) i1 = (i1 & 255) >>> 1; else i1 = HEAP32[i4 >> 2] | 0;
    if (i8 >>> 0 >= (i11 - i1 | 0) >>> 0) break;
    __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_c(37420, 32) | 0;
    i8 = i8 + 1 | 0;
   }
   i1 = __ZNSt3__16chrono12steady_clock3nowEv() | 0;
   i2 = tempRet0;
  }
  FUNCTION_TABLE_viii[HEAP32[(HEAP32[i9 >> 2] | 0) + 12 >> 2] & 15](i9, i15, i14);
  if (HEAP8[i13 >> 0] | 0) {
   i9 = __ZNSt3__16chrono12steady_clock3nowEv() | 0;
   i9 = _i64Subtract(i9 | 0, tempRet0 | 0, i1 | 0, i2 | 0) | 0;
   i9 = __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(__ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEElsEd(37420, (+(i9 >>> 0) + 4294967296.0 * +(tempRet0 | 0)) / 1.0e9) | 0, 17194) | 0;
   i8 = __ZNKSt3__18ios_base6getlocEv(i9 + (HEAP32[(HEAP32[i9 >> 2] | 0) + -12 >> 2] | 0) | 0) | 0;
   HEAP32[i12 >> 2] = i8;
   i8 = __ZNKSt3__16locale9use_facetERNS0_2idE(i12, 38376) | 0;
   i8 = FUNCTION_TABLE_iii[HEAP32[(HEAP32[i8 >> 2] | 0) + 28 >> 2] & 63](i8, 10) | 0;
   __ZNSt3__16localeD2Ev(i12);
   __ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEE3putEc(i9, i8) | 0;
   __ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEE5flushEv(i9) | 0;
  }
  i3 = i3 + 4 | 0;
 }
 if (HEAP8[i13 >> 0] | 0) {
  i15 = __ZNSt3__16chrono12steady_clock3nowEv() | 0;
  i15 = _i64Subtract(i15 | 0, tempRet0 | 0, i6 | 0, i7 | 0) | 0;
  d17 = (+(i15 >>> 0) + 4294967296.0 * +(tempRet0 | 0)) / 1.0e9;
  i15 = __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(__ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEElsEd(__ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(37420, 17204) | 0, d17) | 0, 17194) | 0;
  i14 = __ZNKSt3__18ios_base6getlocEv(i15 + (HEAP32[(HEAP32[i15 >> 2] | 0) + -12 >> 2] | 0) | 0) | 0;
  HEAP32[i12 >> 2] = i14;
  i14 = __ZNKSt3__16locale9use_facetERNS0_2idE(i12, 38376) | 0;
  i14 = FUNCTION_TABLE_iii[HEAP32[(HEAP32[i14 >> 2] | 0) + 28 >> 2] & 63](i14, 10) | 0;
  __ZNSt3__16localeD2Ev(i12);
  __ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEE3putEc(i15, i14) | 0;
  __ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEE5flushEv(i15) | 0;
 }
 STACKTOP = i16;
 return;
}

function __ZN4wasm14SimplifyLocals16optimizeIfReturnEPNS_2IfEPPNS_10ExpressionERNSt3__13mapIjNS0_12SinkableInfoENS6_4lessIjEENS6_9allocatorINS6_4pairIKjS8_EEEEEE(i21, i5, i18, i13) {
 i21 = i21 | 0;
 i5 = i5 | 0;
 i18 = i18 | 0;
 i13 = i13 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, i19 = 0, i20 = 0, i22 = 0;
 i22 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i19 = i22 + 20 | 0;
 i1 = i22 + 4 | 0;
 i16 = i22 + 24 | 0;
 i4 = i22 + 16 | 0;
 i17 = i22;
 HEAP32[i19 >> 2] = i5;
 i7 = i5 + 16 | 0;
 i20 = i5;
 if (!(HEAP32[i7 >> 2] | 0)) ___assert_fail(22936, 22896, 308, 22967);
 if ((HEAP32[(HEAP32[i21 + 96 >> 2] | 0) + -4 >> 2] | 0) != (i5 | 0)) ___assert_fail(22984, 22896, 310, 22967);
 __ZNSt3__16vectorIPN4wasm10ExpressionENS_9allocatorIS3_EEEC2ERKS6_(i1, i21 + 92 | 0);
 i8 = __ZN4wasm18ExpressionAnalyzer12isResultUsedENSt3__16vectorIPNS_10ExpressionENS1_9allocatorIS4_EEEEPNS_8FunctionE(i1, HEAP32[i21 + 32 >> 2] | 0) | 0;
 __ZNSt3__113__vector_baseIPN4wasm10ExpressionENS_9allocatorIS3_EEED2Ev(i1);
 if (!i8) {
  i8 = i21 + 40 | 0;
  HEAP32[i16 >> 2] = -1;
  i1 = i13 + 4 | 0;
  i3 = HEAP32[i13 >> 2] | 0;
  while (1) {
   if ((i3 | 0) == (i1 | 0)) break;
   i2 = HEAP32[i3 + 16 >> 2] | 0;
   HEAP32[i4 >> 2] = i2;
   if (__ZNKSt3__16__treeINS_12__value_typeIjN4wasm14SimplifyLocals12SinkableInfoEEENS_19__map_value_compareIjS5_NS_4lessIjEELb1EEENS_9allocatorIS5_EEE14__count_uniqueIjEEjRKT_(i8, i4) | 0) {
    i3 = i2;
    i6 = 9;
    break;
   }
   i3 = __ZNSt3__111__tree_nextIPNS_16__tree_node_baseIPvEEEET_S5_(i3) | 0;
  }
  do if ((i6 | 0) == 9) {
   HEAP32[i16 >> 2] = i3;
   i1 = __ZN4wasm10Expression7dynCastINS_5BlockEEEPT_v(HEAP32[i5 + 12 >> 2] | 0) | 0;
   i2 = __ZN4wasm10Expression7dynCastINS_5BlockEEEPT_v(HEAP32[i7 >> 2] | 0) | 0;
   if ((((i1 | 0 ? (i9 = i1 + 12 | 0, i10 = i1 + 16 | 0, i11 = HEAP32[i10 >> 2] | 0, (i11 | 0) != (HEAP32[i9 >> 2] | 0)) : 0) ? (i2 | 0 ? (HEAP32[HEAP32[i11 + -4 >> 2] >> 2] | 0) == 19 : 0) : 0) ? (i14 = i2 + 12 | 0, i15 = i2 + 16 | 0, i12 = HEAP32[i15 >> 2] | 0, (i12 | 0) != (HEAP32[i14 >> 2] | 0)) : 0) ? (HEAP32[HEAP32[i12 + -4 >> 2] >> 2] | 0) == 19 : 0) {
    i13 = __ZNSt3__13mapIjN4wasm14SimplifyLocals12SinkableInfoENS_4lessIjEENS_9allocatorINS_4pairIKjS3_EEEEE2atERS8_(i13, i16) | 0;
    i13 = HEAP32[i13 >> 2] | 0;
    i11 = (__ZN4wasm10Expression4castINS_8SetLocalEEEPT_v(HEAP32[i13 >> 2] | 0) | 0) + 12 | 0;
    i12 = HEAP32[i9 >> 2] | 0;
    HEAP32[i12 + (((HEAP32[i10 >> 2] | 0) - i12 >> 2) + -1 << 2) >> 2] = HEAP32[i11 >> 2];
    i13 = HEAP32[i13 >> 2] | 0;
    HEAP32[i13 >> 2] = 19;
    HEAP32[i13 + 4 >> 2] = 0;
    __ZN4wasm5Block8finalizeEv(i1);
    i1 = i1 + 4 | 0;
    if (!(HEAP32[i1 >> 2] | 0)) ___assert_fail(23038, 22896, 340, 22967);
    i16 = __ZNSt3__13mapIjN4wasm14SimplifyLocals12SinkableInfoENS_4lessIjEENS_9allocatorINS_4pairIKjS3_EEEEE2atERS8_(i8, i16) | 0;
    i16 = HEAP32[i16 >> 2] | 0;
    i13 = (__ZN4wasm10Expression4castINS_8SetLocalEEEPT_v(HEAP32[i16 >> 2] | 0) | 0) + 12 | 0;
    i14 = HEAP32[i14 >> 2] | 0;
    HEAP32[i14 + (((HEAP32[i15 >> 2] | 0) - i14 >> 2) + -1 << 2) >> 2] = HEAP32[i13 >> 2];
    i16 = HEAP32[i16 >> 2] | 0;
    HEAP32[i16 >> 2] = 19;
    HEAP32[i16 + 4 >> 2] = 0;
    __ZN4wasm5Block8finalizeEv(i2);
    if (!(HEAP32[i1 >> 2] | 0)) ___assert_fail(23038, 22896, 345, 22967);
    i1 = HEAP32[i19 >> 2] | 0;
    __ZN4wasm2If8finalizeEv(i1);
    if (!(HEAP32[i1 + 4 >> 2] | 0)) ___assert_fail(23064, 22896, 347, 22967); else {
     HEAP32[i17 >> 2] = (HEAP32[i21 + 36 >> 2] | 0) + 88;
     i20 = __ZN4wasm7Builder12makeSetLocalEjPNS_10ExpressionE(i17, i3, i1) | 0;
     HEAP32[i18 >> 2] = i20;
     HEAP8[i21 + 88 >> 0] = 1;
     break;
    }
   }
   i1 = i21 + 120 | 0;
   i2 = HEAP32[i1 >> 2] | 0;
   if ((i2 | 0) == (HEAP32[i21 + 124 >> 2] | 0)) {
    __ZNSt3__16vectorIPN4wasm2IfENS_9allocatorIS3_EEE21__push_back_slow_pathIRKS3_EEvOT_(i21 + 116 | 0, i19);
    break;
   } else {
    HEAP32[i2 >> 2] = i20;
    HEAP32[i1 >> 2] = (HEAP32[i1 >> 2] | 0) + 4;
    break;
   }
  } while (0);
 }
 STACKTOP = i22;
 return;
}

function __ZN4wasm22ShellExternalInterface4loadEPNS_4LoadEj(i3, i2, i4, i1) {
 i3 = i3 | 0;
 i2 = i2 | 0;
 i4 = i4 | 0;
 i1 = i1 | 0;
 var d5 = 0.0;
 L1 : do switch (HEAP32[i4 + 4 >> 2] | 0) {
 case 1:
  {
   switch (HEAP32[i4 + 8 >> 2] | 0) {
   case 1:
    {
     i1 = HEAP8[(HEAP32[i2 + 4 >> 2] | 0) + i1 >> 0] | 0;
     if (!(HEAP8[i4 + 12 >> 0] | 0)) {
      HEAP32[i3 >> 2] = 1;
      HEAP32[i3 + 8 >> 2] = i1 & 255;
      break L1;
     } else {
      HEAP32[i3 >> 2] = 1;
      HEAP32[i3 + 8 >> 2] = i1 << 24 >> 24;
      break L1;
     }
    }
   case 2:
    {
     i1 = (HEAP32[i2 + 4 >> 2] | 0) + i1 | 0;
     i1 = HEAPU8[i1 >> 0] | HEAPU8[i1 + 1 >> 0] << 8;
     if (!(HEAP8[i4 + 12 >> 0] | 0)) {
      HEAP32[i3 >> 2] = 1;
      HEAP32[i3 + 8 >> 2] = i1 & 65535;
      break L1;
     } else {
      HEAP32[i3 >> 2] = 1;
      HEAP32[i3 + 8 >> 2] = i1 << 16 >> 16;
      break L1;
     }
    }
   case 4:
    {
     i4 = (HEAP32[i2 + 4 >> 2] | 0) + i1 | 0;
     i4 = HEAPU8[i4 >> 0] | HEAPU8[i4 + 1 >> 0] << 8 | HEAPU8[i4 + 2 >> 0] << 16 | HEAPU8[i4 + 3 >> 0] << 24;
     HEAP32[i3 >> 2] = 1;
     HEAP32[i3 + 8 >> 2] = i4;
     break L1;
    }
   default:
    _abort();
   }
   break;
  }
 case 2:
  {
   switch (HEAP32[i4 + 8 >> 2] | 0) {
   case 1:
    {
     i1 = HEAP8[(HEAP32[i2 + 4 >> 2] | 0) + i1 >> 0] | 0;
     if (!(HEAP8[i4 + 12 >> 0] | 0)) {
      HEAP32[i3 >> 2] = 2;
      i4 = i3 + 8 | 0;
      HEAP32[i4 >> 2] = i1 & 255;
      HEAP32[i4 + 4 >> 2] = 0;
      break L1;
     } else {
      i2 = i1 << 24 >> 24;
      HEAP32[i3 >> 2] = 2;
      i4 = i3 + 8 | 0;
      HEAP32[i4 >> 2] = i2;
      HEAP32[i4 + 4 >> 2] = ((i2 | 0) < 0) << 31 >> 31;
      break L1;
     }
    }
   case 2:
    {
     i1 = (HEAP32[i2 + 4 >> 2] | 0) + i1 | 0;
     i1 = HEAPU8[i1 >> 0] | HEAPU8[i1 + 1 >> 0] << 8;
     if (!(HEAP8[i4 + 12 >> 0] | 0)) {
      HEAP32[i3 >> 2] = 2;
      i4 = i3 + 8 | 0;
      HEAP32[i4 >> 2] = i1 & 65535;
      HEAP32[i4 + 4 >> 2] = 0;
      break L1;
     } else {
      i2 = i1 << 16 >> 16;
      HEAP32[i3 >> 2] = 2;
      i4 = i3 + 8 | 0;
      HEAP32[i4 >> 2] = i2;
      HEAP32[i4 + 4 >> 2] = ((i2 | 0) < 0) << 31 >> 31;
      break L1;
     }
    }
   case 4:
    {
     i1 = (HEAP32[i2 + 4 >> 2] | 0) + i1 | 0;
     i1 = HEAPU8[i1 >> 0] | HEAPU8[i1 + 1 >> 0] << 8 | HEAPU8[i1 + 2 >> 0] << 16 | HEAPU8[i1 + 3 >> 0] << 24;
     if (!(HEAP8[i4 + 12 >> 0] | 0)) {
      HEAP32[i3 >> 2] = 2;
      i4 = i3 + 8 | 0;
      HEAP32[i4 >> 2] = i1;
      HEAP32[i4 + 4 >> 2] = 0;
      break L1;
     } else {
      HEAP32[i3 >> 2] = 2;
      i4 = i3 + 8 | 0;
      HEAP32[i4 >> 2] = i1;
      HEAP32[i4 + 4 >> 2] = ((i1 | 0) < 0) << 31 >> 31;
      break L1;
     }
    }
   case 8:
    {
     i2 = (HEAP32[i2 + 4 >> 2] | 0) + i1 | 0;
     i1 = i2;
     i1 = HEAPU8[i1 >> 0] | HEAPU8[i1 + 1 >> 0] << 8 | HEAPU8[i1 + 2 >> 0] << 16 | HEAPU8[i1 + 3 >> 0] << 24;
     i2 = i2 + 4 | 0;
     i2 = HEAPU8[i2 >> 0] | HEAPU8[i2 + 1 >> 0] << 8 | HEAPU8[i2 + 2 >> 0] << 16 | HEAPU8[i2 + 3 >> 0] << 24;
     HEAP32[i3 >> 2] = 2;
     i4 = i3 + 8 | 0;
     HEAP32[i4 >> 2] = i1;
     HEAP32[i4 + 4 >> 2] = i2;
     break L1;
    }
   default:
    _abort();
   }
   break;
  }
 case 3:
  {
   i4 = (HEAP32[i2 + 4 >> 2] | 0) + i1 | 0;
   i4 = HEAPU8[i4 >> 0] | HEAPU8[i4 + 1 >> 0] << 8 | HEAPU8[i4 + 2 >> 0] << 16 | HEAPU8[i4 + 3 >> 0] << 24;
   HEAP32[i3 >> 2] = 3;
   HEAP32[i3 + 8 >> 2] = i4;
   break;
  }
 case 4:
  {
   i4 = (HEAP32[i2 + 4 >> 2] | 0) + i1 | 0;
   HEAP8[tempDoublePtr >> 0] = HEAP8[i4 >> 0];
   HEAP8[tempDoublePtr + 1 >> 0] = HEAP8[i4 + 1 >> 0];
   HEAP8[tempDoublePtr + 2 >> 0] = HEAP8[i4 + 2 >> 0];
   HEAP8[tempDoublePtr + 3 >> 0] = HEAP8[i4 + 3 >> 0];
   HEAP8[tempDoublePtr + 4 >> 0] = HEAP8[i4 + 4 >> 0];
   HEAP8[tempDoublePtr + 5 >> 0] = HEAP8[i4 + 5 >> 0];
   HEAP8[tempDoublePtr + 6 >> 0] = HEAP8[i4 + 6 >> 0];
   HEAP8[tempDoublePtr + 7 >> 0] = HEAP8[i4 + 7 >> 0];
   d5 = +HEAPF64[tempDoublePtr >> 3];
   HEAP32[i3 >> 2] = 4;
   HEAPF64[i3 + 8 >> 3] = d5;
   break;
  }
 default:
  _abort();
 } while (0);
 return;
}

function __ZNKSt3__19money_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_putES4_bRNS_8ios_baseEwe(i1, i23, i8, i19, i18, d4) {
 i1 = i1 | 0;
 i23 = i23 | 0;
 i8 = i8 | 0;
 i19 = i19 | 0;
 i18 = i18 | 0;
 d4 = +d4;
 var i2 = 0, i3 = 0, i5 = 0, i6 = 0, i7 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, i20 = 0, i21 = 0, i22 = 0, i24 = 0, i25 = 0, i26 = 0, i27 = 0, i28 = 0, i29 = 0, i30 = 0;
 i28 = STACKTOP;
 STACKTOP = STACKTOP + 1008 | 0;
 i10 = i28 + 8 | 0;
 i3 = i28;
 i1 = i28 + 896 | 0;
 i5 = i28 + 888 | 0;
 i2 = i28 + 488 | 0;
 i20 = i28 + 480 | 0;
 i15 = i28 + 892 | 0;
 i12 = i28 + 476 | 0;
 i16 = i28 + 472 | 0;
 i24 = i28 + 460 | 0;
 i27 = i28 + 448 | 0;
 i26 = i28 + 436 | 0;
 i7 = i28 + 432 | 0;
 i9 = i28 + 32 | 0;
 i14 = i28 + 24 | 0;
 i13 = i28 + 20 | 0;
 i11 = i28 + 16 | 0;
 HEAP32[i5 >> 2] = i1;
 HEAPF64[i10 >> 3] = d4;
 i1 = _snprintf(i1, 100, 31943, i10) | 0;
 if (i1 >>> 0 > 99) {
  i1 = __ZNSt3__16__clocEv() | 0;
  HEAPF64[i3 >> 3] = d4;
  i1 = __ZNSt3__112__asprintf_lEPPcP15__locale_structPKcz(i5, i1, 31943, i3) | 0;
  i2 = HEAP32[i5 >> 2] | 0;
  if (!i2) __ZSt17__throw_bad_allocv();
  i3 = _malloc(i1 << 2) | 0;
  if (!i3) __ZSt17__throw_bad_allocv(); else {
   i17 = i3;
   i29 = i3;
   i30 = i2;
   i22 = i1;
  }
 } else {
  i17 = i2;
  i29 = 0;
  i30 = 0;
  i22 = i1;
 }
 i1 = __ZNKSt3__18ios_base6getlocEv(i19) | 0;
 HEAP32[i20 >> 2] = i1;
 i6 = __ZNKSt3__16locale9use_facetERNS0_2idE(i20, 38408) | 0;
 i3 = HEAP32[i5 >> 2] | 0;
 FUNCTION_TABLE_iiiii[HEAP32[(HEAP32[i6 >> 2] | 0) + 48 >> 2] & 7](i6, i3, i3 + i22 | 0, i17) | 0;
 if (!i22) i5 = 0; else i5 = (HEAP8[HEAP32[i5 >> 2] >> 0] | 0) == 45;
 i2 = 0;
 while (1) {
  if ((i2 | 0) == 3) break;
  HEAP32[i24 + (i2 << 2) >> 2] = 0;
  i2 = i2 + 1 | 0;
 }
 i2 = 0;
 while (1) {
  if ((i2 | 0) == 3) break;
  HEAP32[i27 + (i2 << 2) >> 2] = 0;
  i2 = i2 + 1 | 0;
 }
 i2 = 0;
 while (1) {
  if ((i2 | 0) == 3) break;
  HEAP32[i26 + (i2 << 2) >> 2] = 0;
  i2 = i2 + 1 | 0;
 }
 __ZNSt3__111__money_putIwE13__gather_infoEbbRKNS_6localeERNS_10money_base7patternERwS8_RNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEERNS9_IwNSA_IwEENSC_IwEEEESJ_Ri(i8, i5, i20, i15, i12, i16, i24, i27, i26, i7);
 i3 = HEAP32[i7 >> 2] | 0;
 if ((i22 | 0) > (i3 | 0)) {
  i8 = HEAP8[i26 >> 0] | 0;
  i2 = HEAP8[i27 >> 0] | 0;
  i2 = (i22 - i3 << 1 | 1) + i3 + ((i8 & 1) == 0 ? (i8 & 255) >>> 1 : HEAP32[i26 + 4 >> 2] | 0) + ((i2 & 1) == 0 ? (i2 & 255) >>> 1 : HEAP32[i27 + 4 >> 2] | 0) | 0;
 } else {
  i8 = HEAP8[i26 >> 0] | 0;
  i2 = HEAP8[i27 >> 0] | 0;
  i2 = i3 + 2 + ((i8 & 1) == 0 ? (i8 & 255) >>> 1 : HEAP32[i26 + 4 >> 2] | 0) + ((i2 & 1) == 0 ? (i2 & 255) >>> 1 : HEAP32[i27 + 4 >> 2] | 0) | 0;
 }
 if (i2 >>> 0 > 100) {
  i2 = _malloc(i2 << 2) | 0;
  if (!i2) __ZSt17__throw_bad_allocv(); else {
   i25 = i2;
   i21 = i2;
  }
 } else {
  i25 = 0;
  i21 = i9;
 }
 __ZNSt3__111__money_putIwE8__formatEPwRS2_S3_jPKwS5_RKNS_5ctypeIwEEbRKNS_10money_base7patternEwwRKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEERKNSE_IwNSF_IwEENSH_IwEEEESQ_i(i21, i14, i13, HEAP32[i19 + 4 >> 2] | 0, i17, i17 + (i22 << 2) | 0, i6, i5, i15, HEAP32[i12 >> 2] | 0, HEAP32[i16 >> 2] | 0, i24, i27, i26, i3);
 HEAP32[i11 >> 2] = HEAP32[i23 >> 2];
 i23 = HEAP32[i14 >> 2] | 0;
 i2 = HEAP32[i13 >> 2] | 0;
 HEAP32[i10 >> 2] = HEAP32[i11 >> 2];
 i2 = __ZNSt3__116__pad_and_outputIwNS_11char_traitsIwEEEENS_19ostreambuf_iteratorIT_T0_EES6_PKS4_S8_S8_RNS_8ios_baseES4_(i10, i21, i23, i2, i19, i18) | 0;
 if (i25) {
  _free(i25);
  i1 = HEAP32[i20 >> 2] | 0;
 }
 __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev(i26);
 __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev(i27);
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i24);
 __ZNSt3__114__shared_count16__release_sharedEv(i1) | 0;
 if (i29 | 0) _free(i29);
 if (i30 | 0) _free(i30);
 STACKTOP = i28;
 return i2 | 0;
}

function __ZNKSt3__19money_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_putES4_bRNS_8ios_baseEce(i1, i23, i8, i19, i18, d4) {
 i1 = i1 | 0;
 i23 = i23 | 0;
 i8 = i8 | 0;
 i19 = i19 | 0;
 i18 = i18 | 0;
 d4 = +d4;
 var i2 = 0, i3 = 0, i5 = 0, i6 = 0, i7 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, i20 = 0, i21 = 0, i22 = 0, i24 = 0, i25 = 0, i26 = 0, i27 = 0, i28 = 0, i29 = 0, i30 = 0;
 i28 = STACKTOP;
 STACKTOP = STACKTOP + 384 | 0;
 i10 = i28 + 8 | 0;
 i3 = i28;
 i1 = i28 + 284 | 0;
 i5 = i28 + 72 | 0;
 i2 = i28 + 184 | 0;
 i20 = i28 + 68 | 0;
 i15 = i28 + 180 | 0;
 i12 = i28 + 177 | 0;
 i16 = i28 + 176 | 0;
 i24 = i28 + 56 | 0;
 i27 = i28 + 44 | 0;
 i26 = i28 + 32 | 0;
 i7 = i28 + 28 | 0;
 i9 = i28 + 76 | 0;
 i14 = i28 + 24 | 0;
 i13 = i28 + 20 | 0;
 i11 = i28 + 16 | 0;
 HEAP32[i5 >> 2] = i1;
 HEAPF64[i10 >> 3] = d4;
 i1 = _snprintf(i1, 100, 31943, i10) | 0;
 if (i1 >>> 0 > 99) {
  i1 = __ZNSt3__16__clocEv() | 0;
  HEAPF64[i3 >> 3] = d4;
  i1 = __ZNSt3__112__asprintf_lEPPcP15__locale_structPKcz(i5, i1, 31943, i3) | 0;
  i2 = HEAP32[i5 >> 2] | 0;
  if (!i2) __ZSt17__throw_bad_allocv();
  i3 = _malloc(i1) | 0;
  if (!i3) __ZSt17__throw_bad_allocv(); else {
   i17 = i3;
   i29 = i3;
   i30 = i2;
   i22 = i1;
  }
 } else {
  i17 = i2;
  i29 = 0;
  i30 = 0;
  i22 = i1;
 }
 i1 = __ZNKSt3__18ios_base6getlocEv(i19) | 0;
 HEAP32[i20 >> 2] = i1;
 i6 = __ZNKSt3__16locale9use_facetERNS0_2idE(i20, 38376) | 0;
 i3 = HEAP32[i5 >> 2] | 0;
 FUNCTION_TABLE_iiiii[HEAP32[(HEAP32[i6 >> 2] | 0) + 32 >> 2] & 7](i6, i3, i3 + i22 | 0, i17) | 0;
 if (!i22) i5 = 0; else i5 = (HEAP8[HEAP32[i5 >> 2] >> 0] | 0) == 45;
 i2 = 0;
 while (1) {
  if ((i2 | 0) == 3) break;
  HEAP32[i24 + (i2 << 2) >> 2] = 0;
  i2 = i2 + 1 | 0;
 }
 i2 = 0;
 while (1) {
  if ((i2 | 0) == 3) break;
  HEAP32[i27 + (i2 << 2) >> 2] = 0;
  i2 = i2 + 1 | 0;
 }
 i2 = 0;
 while (1) {
  if ((i2 | 0) == 3) break;
  HEAP32[i26 + (i2 << 2) >> 2] = 0;
  i2 = i2 + 1 | 0;
 }
 __ZNSt3__111__money_putIcE13__gather_infoEbbRKNS_6localeERNS_10money_base7patternERcS8_RNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEESF_SF_Ri(i8, i5, i20, i15, i12, i16, i24, i27, i26, i7);
 i3 = HEAP32[i7 >> 2] | 0;
 if ((i22 | 0) > (i3 | 0)) {
  i8 = HEAP8[i26 >> 0] | 0;
  i2 = HEAP8[i27 >> 0] | 0;
  i2 = (i22 - i3 << 1 | 1) + i3 + ((i8 & 1) == 0 ? (i8 & 255) >>> 1 : HEAP32[i26 + 4 >> 2] | 0) + ((i2 & 1) == 0 ? (i2 & 255) >>> 1 : HEAP32[i27 + 4 >> 2] | 0) | 0;
 } else {
  i8 = HEAP8[i26 >> 0] | 0;
  i2 = HEAP8[i27 >> 0] | 0;
  i2 = i3 + 2 + ((i8 & 1) == 0 ? (i8 & 255) >>> 1 : HEAP32[i26 + 4 >> 2] | 0) + ((i2 & 1) == 0 ? (i2 & 255) >>> 1 : HEAP32[i27 + 4 >> 2] | 0) | 0;
 }
 if (i2 >>> 0 > 100) {
  i2 = _malloc(i2) | 0;
  if (!i2) __ZSt17__throw_bad_allocv(); else {
   i25 = i2;
   i21 = i2;
  }
 } else {
  i25 = 0;
  i21 = i9;
 }
 __ZNSt3__111__money_putIcE8__formatEPcRS2_S3_jPKcS5_RKNS_5ctypeIcEEbRKNS_10money_base7patternEccRKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEESL_SL_i(i21, i14, i13, HEAP32[i19 + 4 >> 2] | 0, i17, i17 + i22 | 0, i6, i5, i15, HEAP8[i12 >> 0] | 0, HEAP8[i16 >> 0] | 0, i24, i27, i26, i3);
 HEAP32[i11 >> 2] = HEAP32[i23 >> 2];
 i23 = HEAP32[i14 >> 2] | 0;
 i2 = HEAP32[i13 >> 2] | 0;
 HEAP32[i10 >> 2] = HEAP32[i11 >> 2];
 i2 = __ZNSt3__116__pad_and_outputIcNS_11char_traitsIcEEEENS_19ostreambuf_iteratorIT_T0_EES6_PKS4_S8_S8_RNS_8ios_baseES4_(i10, i21, i23, i2, i19, i18) | 0;
 if (i25) {
  _free(i25);
  i1 = HEAP32[i20 >> 2] | 0;
 }
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i26);
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i27);
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i24);
 __ZNSt3__114__shared_count16__release_sharedEv(i1) | 0;
 if (i29 | 0) _free(i29);
 if (i30 | 0) _free(i30);
 STACKTOP = i28;
 return i2 | 0;
}

function __GLOBAL__sub_I_binaryen_js_cpp() {
 __ZN6cashew7IString3setEPKcb(35896, 13284, 1);
 __ZN6cashew7IString3setEPKcb(35900, 13291, 1);
 __ZN6cashew7IString3setEPKcb(35904, 13295, 1);
 __ZN6cashew7IString3setEPKcb(35908, 29219, 1);
 __ZN6cashew7IString3setEPKcb(35912, 29210, 1);
 __ZN6cashew7IString3setEPKcb(35916, 13304, 1);
 __ZN6cashew7IString3setEPKcb(35920, 13312, 1);
 __ZN6cashew7IString3setEPKcb(35924, 13322, 1);
 __ZN6cashew7IString3setEPKcb(35928, 13333, 1);
 __ZN6cashew7IString3setEPKcb(35932, 13344, 1);
 __ZN6cashew7IString3setEPKcb(35936, 13355, 1);
 __ZN6cashew7IString3setEPKcb(35940, 13367, 1);
 __ZN6cashew7IString3setEPKcb(35944, 13379, 1);
 __ZN6cashew7IString3setEPKcb(35948, 13392, 1);
 __ZN6cashew7IString3setEPKcb(35952, 13405, 1);
 __ZN6cashew7IString3setEPKcb(35956, 13425, 1);
 __ZN6cashew7IString3setEPKcb(35960, 13430, 1);
 __ZN6cashew7IString3setEPKcb(35964, 13435, 1);
 __ZN6cashew7IString3setEPKcb(35968, 13441, 1);
 __ZN6cashew7IString3setEPKcb(35972, 13448, 1);
 __ZN6cashew7IString3setEPKcb(35976, 13457, 1);
 __ZN6cashew7IString3setEPKcb(35980, 13465, 1);
 __ZN6cashew7IString3setEPKcb(35984, 13476, 1);
 __ZN6cashew7IString3setEPKcb(35988, 18436, 1);
 __ZN6cashew7IString3setEPKcb(35992, 18445, 1);
 __ZN6cashew7IString3setEPKcb(35996, 18440, 1);
 __ZN6cashew7IString3setEPKcb(36e3, 18465, 1);
 __ZN6cashew7IString3setEPKcb(36004, 13488, 1);
 __ZN6cashew7IString3setEPKcb(36008, 13506, 1);
 __ZN6cashew7IString3setEPKcb(36012, 13515, 1);
 __ZN6cashew7IString3setEPKcb(36016, 13532, 1);
 __ZN6cashew7IString3setEPKcb(36020, 18049, 1);
 __ZN6cashew7IString3setEPKcb(36024, 18163, 1);
 __ZN6cashew7IString3setEPKcb(36028, 13540, 1);
 __ZN6cashew7IString3setEPKcb(36032, 18181, 1);
 __ZN6cashew7IString3setEPKcb(36036, 13545, 1);
 __ZN6cashew7IString3setEPKcb(36040, 18081, 1);
 __ZN6cashew7IString3setEPKcb(36044, 13552, 1);
 __ZN6cashew7IString3setEPKcb(36048, 13560, 1);
 __ZN6cashew7IString3setEPKcb(36052, 13567, 1);
 __ZN6cashew7IString3setEPKcb(36056, 18212, 1);
 __ZN6cashew7IString3setEPKcb(36060, 13574, 1);
 __ZN6cashew7IString3setEPKcb(36064, 18169, 1);
 __ZN6cashew7IString3setEPKcb(36068, 25540, 1);
 __ZN6cashew7IString3setEPKcb(36072, 13580, 1);
 __ZN6cashew7IString3setEPKcb(36076, 13592, 1);
 __ZN6cashew7IString3setEPKcb(36080, 25452, 1);
 __ZN6cashew7IString3setEPKcb(36084, 13606, 1);
 __ZN6cashew7IString3setEPKcb(36088, 13612, 1);
 __ZN6cashew7IString3setEPKcb(36092, 25514, 1);
 __ZN6cashew7IString3setEPKcb(36096, 13617, 1);
 __ZN6cashew7IString3setEPKcb(36100, 13627, 1);
 __ZN6cashew7IString3setEPKcb(36104, 25841, 1);
 __ZN6cashew7IString3setEPKcb(36108, 13632, 1);
 __ZN6cashew7IString3setEPKcb(36112, 13635, 1);
 __ZN6cashew7IString3setEPKcb(36116, 13643, 1);
 __ZN6cashew7IString3setEPKcb(36120, 13650, 1);
 __ZN6cashew7IString3setEPKcb(36124, 13654, 1);
 __ZN6cashew7IString3setEPKcb(36128, 13674, 1);
 __ZN6cashew7IString3setEPKcb(36132, 13684, 1);
 __ZN6cashew7IString3setEPKcb(36136, 13695, 1);
 __ZN6cashew7IString3setEPKcb(36140, 13706, 1);
 __ZN6cashew7IString3setEPKcb(36144, 13720, 1);
 __ZN6cashew7IString3setEPKcb(36148, 13729, 1);
 __ZN6cashew7IString3setEPKcb(36152, 13739, 1);
 __ZN6cashew7IString3setEPKcb(36156, 13750, 1);
 __ZN6cashew7IString3setEPKcb(36160, 13761, 1);
 __ZN6cashew7IString3setEPKcb(36164, 13774, 1);
 __ZN6cashew7IString3setEPKcb(36168, 13784, 1);
 __ZN6cashew7IString3setEPKcb(36172, 13793, 1);
 __ZN6cashew7IString3setEPKcb(36176, 13802, 1);
 __ZN6cashew7IString3setEPKcb(36180, 13816, 1);
 __ZN6cashew7IString3setEPKcb(36184, 13828, 1);
 __ZN6cashew7IString3setEPKcb(36188, 13843, 1);
 __ZN6cashew7IString3setEPKcb(36192, 18880, 1);
 __ZN6cashew7IString3setEPKcb(36196, 13852, 1);
 __ZN6cashew7IString3setEPKcb(36200, 13859, 1);
 __ZN6cashew7IString3setEPKcb(36204, 13864, 1);
 __ZN6cashew7IString3setEPKcb(36208, 13869, 1);
 return;
}

function __ZN4wasm14SimplifyLocals9visitPostEPS0_PPNS_10ExpressionE(i8, i13) {
 i8 = i8 | 0;
 i13 = i13 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i14 = 0, i15 = 0, i16 = 0;
 i15 = STACKTOP;
 STACKTOP = STACKTOP + 224 | 0;
 i14 = i15 + 160 | 0;
 i9 = i15 + 152 | 0;
 i5 = i15 + 148 | 0;
 i6 = i15 + 136 | 0;
 i10 = i15 + 64 | 0;
 i11 = i15;
 i12 = i15 + 128 | 0;
 i1 = HEAP32[i13 >> 2] | 0;
 i7 = (HEAP32[i1 >> 2] | 0) == 10 ? i1 : 0;
 i4 = (i7 | 0) != 0;
 if (i4 ? (i2 = i8 + 40 | 0, i3 = __ZNSt3__16__treeINS_12__value_typeIjN4wasm14SimplifyLocals12SinkableInfoEEENS_19__map_value_compareIjS5_NS_4lessIjEELb1EEENS_9allocatorIS5_EEE4findIjEENS_15__tree_iteratorIS5_PNS_11__tree_nodeIS5_PvEEiEERKT_(i2, i7 + 8 | 0) | 0, (i3 | 0) != (i8 + 44 | 0)) : 0) {
  i1 = i3 + 20 | 0;
  i16 = (__ZN4wasm10Expression4castINS_8SetLocalEEEPT_v(HEAP32[HEAP32[i1 >> 2] >> 2] | 0) | 0) + 12 | 0;
  HEAP32[HEAP32[i1 >> 2] >> 2] = HEAP32[i16 >> 2];
  HEAP32[i9 >> 2] = i3;
  HEAP32[i14 >> 2] = HEAP32[i9 >> 2];
  __ZNSt3__16__treeINS_12__value_typeIjN4wasm14SimplifyLocals12SinkableInfoEEENS_19__map_value_compareIjS5_NS_4lessIjEELb1EEENS_9allocatorIS5_EEE5eraseENS_21__tree_const_iteratorIS5_PNS_11__tree_nodeIS5_PvEEiEE(i2, i14) | 0;
  HEAP8[i8 + 88 >> 0] = 1;
  i1 = HEAP32[i13 >> 2] | 0;
 }
 HEAP32[i14 + 32 >> 2] = 0;
 HEAP32[i14 + 36 >> 2] = 0;
 HEAP32[i14 >> 2] = 0;
 HEAP32[i14 + 4 >> 2] = 0;
 HEAP32[i14 + 8 >> 2] = 0;
 HEAP32[i14 + 12 >> 2] = 0;
 HEAP32[i14 + 16 >> 2] = 0;
 HEAP32[i14 + 20 >> 2] = 0;
 HEAP16[i14 + 24 >> 1] = 0;
 HEAP32[i14 + 28 >> 2] = i14 + 32;
 HEAP32[i14 + 44 >> 2] = 0;
 HEAP32[i14 + 48 >> 2] = 0;
 HEAP32[i14 + 40 >> 2] = i14 + 44;
 HEAP8[i14 + 52 >> 0] = 0;
 HEAP8[i14 + 53 >> 0] = 0;
 if (__ZN4wasm14EffectAnalyzer9checkPostEPNS_10ExpressionE(i14, i1) | 0) __ZN4wasm14SimplifyLocals18checkInvalidationsERNS_14EffectAnalyzerE(i8, i14);
 i3 = i8 + 96 | 0;
 do if (i4) {
  i1 = HEAP32[i3 >> 2] | 0;
  i2 = i1 + -4 | 0;
  while (1) {
   if ((i1 | 0) == (i2 | 0)) break;
   i16 = i1 + -4 | 0;
   HEAP32[i3 >> 2] = i16;
   i1 = i16;
  }
  i1 = i8 + 92 | 0;
  HEAP32[i5 >> 2] = i7;
  if (i2 >>> 0 < (HEAP32[i8 + 100 >> 2] | 0) >>> 0) {
   HEAP32[i2 >> 2] = i7;
   HEAP32[i3 >> 2] = (HEAP32[i3 >> 2] | 0) + 4;
  } else __ZNSt3__16vectorIPN4wasm10ExpressionENS_9allocatorIS3_EEE21__push_back_slow_pathIS3_EEvOT_(i1, i5);
  __ZNSt3__16vectorIPN4wasm10ExpressionENS_9allocatorIS3_EEEC2ERKS6_(i6, i1);
  i16 = __ZN4wasm18ExpressionAnalyzer12isResultUsedENSt3__16vectorIPNS_10ExpressionENS1_9allocatorIS4_EEEEPNS_8FunctionE(i6, HEAP32[i8 + 32 >> 2] | 0) | 0;
  __ZNSt3__113__vector_baseIPN4wasm10ExpressionENS_9allocatorIS3_EEED2Ev(i6);
  if (!i16) {
   i2 = HEAP32[i7 + 8 >> 2] | 0;
   HEAP32[i9 >> 2] = i2;
   i1 = i8 + 40 | 0;
   if (!(__ZNKSt3__16__treeINS_12__value_typeIjN4wasm14SimplifyLocals12SinkableInfoEEENS_19__map_value_compareIjS5_NS_4lessIjEELb1EEENS_9allocatorIS5_EEE14__count_uniqueIjEEjRKT_(i1, i9) | 0)) {
    __ZN4wasm14SimplifyLocals12SinkableInfoC2EPPNS_10ExpressionE(i11, i13);
    HEAP32[i10 >> 2] = i2;
    __ZN4wasm14SimplifyLocals12SinkableInfoC2EOS1_(i10 + 4 | 0, i11);
    __ZNSt3__13mapIjN4wasm14SimplifyLocals12SinkableInfoENS_4lessIjEENS_9allocatorINS_4pairIKjS3_EEEEE7emplaceIJNS7_IjS3_EEEEENS7_INS_14__map_iteratorINS_15__tree_iteratorINS_12__value_typeIjS3_EEPNS_11__tree_nodeISH_PvEEiEEEEbEEDpOT_(i12, i1, i10);
    __ZN4wasm14EffectAnalyzerD2Ev(i10 + 8 | 0);
    __ZN4wasm14EffectAnalyzerD2Ev(i11 + 4 | 0);
    break;
   } else ___assert_fail(22862, 22896, 239, 22926);
  }
 } while (0);
 i2 = HEAP32[i3 >> 2] | 0;
 i1 = i2 + -4 | 0;
 while (1) {
  if ((i2 | 0) == (i1 | 0)) break;
  i16 = i2 + -4 | 0;
  HEAP32[i3 >> 2] = i16;
  i2 = i16;
 }
 __ZN4wasm14EffectAnalyzerD2Ev(i14);
 STACKTOP = i15;
 return;
}

function __ZN10__cxxabiv112_GLOBAL__N_123parse_prefix_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_(i3, i1, i5, i2) {
 i3 = i3 | 0;
 i1 = i1 | 0;
 i5 = i5 | 0;
 i2 = i2 | 0;
 var i4 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0;
 i16 = STACKTOP;
 STACKTOP = STACKTOP + 48 | 0;
 i12 = i16 + 36 | 0;
 i13 = i16 + 24 | 0;
 i14 = i16 + 12 | 0;
 i15 = i16;
 i1 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_(i3, i1, i2) | 0;
 if ((i1 | 0) != (i3 | 0) ? (i4 = i2 + 4 | 0, i6 = HEAP32[i4 >> 2] | 0, (HEAP32[i2 >> 2] | 0) != (i6 | 0)) : 0) {
  i11 = i6 + -24 | 0;
  __ZNSt3__1plIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEENS_12basic_stringIT_T0_T1_EERKSB_PKS8_(i14, i5, 33619);
  __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv(i15, (HEAP32[i4 >> 2] | 0) + -24 | 0);
  i2 = HEAP8[i15 >> 0] | 0;
  i3 = (i2 & 1) == 0;
  i2 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj(i14, i3 ? i15 + 1 | 0 : HEAP32[i15 + 8 >> 2] | 0, i3 ? (i2 & 255) >>> 1 : HEAP32[i15 + 4 >> 2] | 0) | 0;
  HEAP32[i13 >> 2] = HEAP32[i2 >> 2];
  HEAP32[i13 + 4 >> 2] = HEAP32[i2 + 4 >> 2];
  HEAP32[i13 + 8 >> 2] = HEAP32[i2 + 8 >> 2];
  i3 = 0;
  while (1) {
   if ((i3 | 0) == 3) break;
   HEAP32[i2 + (i3 << 2) >> 2] = 0;
   i3 = i3 + 1 | 0;
  }
  i2 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc(i13, 33621) | 0;
  HEAP32[i12 >> 2] = HEAP32[i2 >> 2];
  HEAP32[i12 + 4 >> 2] = HEAP32[i2 + 4 >> 2];
  HEAP32[i12 + 8 >> 2] = HEAP32[i2 + 8 >> 2];
  i3 = 0;
  while (1) {
   if ((i3 | 0) == 3) break;
   HEAP32[i2 + (i3 << 2) >> 2] = 0;
   i3 = i3 + 1 | 0;
  }
  do if (HEAP8[i11 >> 0] & 1) {
   i10 = i6 + -16 | 0;
   HEAP8[HEAP32[i10 >> 2] >> 0] = 0;
   i7 = i6 + -20 | 0;
   HEAP32[i7 >> 2] = 0;
   i2 = HEAP8[i11 >> 0] | 0;
   if (!(i2 & 1)) i6 = 10; else {
    i6 = HEAP32[i11 >> 2] | 0;
    i2 = i6 & 255;
    i6 = (i6 & -2) + -1 | 0;
   }
   if (!(i2 & 1)) {
    i3 = (i2 & 255) >>> 1;
    if ((i2 & 255) < 22) {
     i5 = 10;
     i8 = i3;
     i9 = 1;
    } else {
     i5 = (i3 + 16 & 240) + -1 | 0;
     i8 = i3;
     i9 = 1;
    }
   } else {
    i5 = 10;
    i8 = 0;
    i9 = 0;
   }
   if ((i5 | 0) != (i6 | 0)) {
    if ((i5 | 0) == 10) {
     i4 = i11 + 1 | 0;
     i3 = HEAP32[i10 >> 2] | 0;
     if (i9) {
      _memcpy(i4 | 0, i3 | 0, ((i2 & 255) >>> 1) + 1 | 0) | 0;
      _free(i3);
     } else {
      HEAP8[i4 >> 0] = HEAP8[i3 >> 0] | 0;
      _free(i3);
     }
     HEAP8[i11 >> 0] = i8 << 1;
     break;
    }
    i3 = i5 + 1 | 0;
    i4 = _malloc(i3) | 0;
    if (!(i5 >>> 0 <= i6 >>> 0 & (i4 | 0) == 0)) {
     if (i9) _memcpy(i4 | 0, i11 + 1 | 0, ((i2 & 255) >>> 1) + 1 | 0) | 0; else {
      i9 = HEAP32[i10 >> 2] | 0;
      HEAP8[i4 >> 0] = HEAP8[i9 >> 0] | 0;
      _free(i9);
     }
     HEAP32[i11 >> 2] = i3 | 1;
     HEAP32[i7 >> 2] = i8;
     HEAP32[i10 >> 2] = i4;
    }
   }
  } else {
   HEAP8[i11 + 1 >> 0] = 0;
   HEAP8[i11 >> 0] = 0;
  } while (0);
  HEAP32[i11 >> 2] = HEAP32[i12 >> 2];
  HEAP32[i11 + 4 >> 2] = HEAP32[i12 + 4 >> 2];
  HEAP32[i11 + 8 >> 2] = HEAP32[i12 + 8 >> 2];
  i2 = 0;
  while (1) {
   if ((i2 | 0) == 3) break;
   HEAP32[i12 + (i2 << 2) >> 2] = 0;
   i2 = i2 + 1 | 0;
  }
  __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i12);
  __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i13);
  __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i15);
  __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i14);
 } else i1 = i3;
 STACKTOP = i16;
 return i1 | 0;
}

function __ZN10__cxxabiv112_GLOBAL__N_126parse_base_unresolved_nameINS0_2DbEEEPKcS4_S4_RT_(i5, i4, i6) {
 i5 = i5 | 0;
 i4 = i4 | 0;
 i6 = i6 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i7 = 0, i8 = 0;
 i8 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i7 = i8;
 L1 : do if ((i4 - i5 | 0) > 1) {
  i1 = HEAP8[i5 >> 0] | 0;
  switch (i1 << 24 >> 24) {
  case 100:
  case 111:
   {
    if ((HEAP8[i5 + 1 >> 0] | 0) == 110) {
     i3 = i5 + 2 | 0;
     if (i1 << 24 >> 24 == 111) {
      i1 = __ZN10__cxxabiv112_GLOBAL__N_119parse_operator_nameINS0_2DbEEEPKcS4_S4_RT_(i3, i4, i6) | 0;
      if ((i1 | 0) == (i3 | 0)) {
       i1 = i5;
       break L1;
      }
      i5 = __ZN10__cxxabiv112_GLOBAL__N_119parse_template_argsINS0_2DbEEEPKcS4_S4_RT_(i1, i4, i6) | 0;
      if ((i5 | 0) == (i1 | 0)) break L1;
      i4 = i6 + 4 | 0;
      i1 = HEAP32[i4 >> 2] | 0;
      if (((i1 - (HEAP32[i6 >> 2] | 0) | 0) / 24 | 0) >>> 0 < 2) {
       i1 = i5;
       break L1;
      }
      __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv(i7, i1 + -24 | 0);
      i1 = HEAP32[i4 >> 2] | 0;
      i2 = i1 + -24 | 0;
      i3 = i1;
      while (1) {
       if ((i3 | 0) == (i2 | 0)) break;
       i6 = i3 + -24 | 0;
       HEAP32[i4 >> 2] = i6;
       __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i6);
       i3 = HEAP32[i4 >> 2] | 0;
      }
      i6 = HEAP8[i7 >> 0] | 0;
      i4 = (i6 & 1) == 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj(i1 + -48 | 0, i4 ? i7 + 1 | 0 : HEAP32[i7 + 8 >> 2] | 0, i4 ? (i6 & 255) >>> 1 : HEAP32[i7 + 4 >> 2] | 0) | 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i7);
      i1 = i5;
      break L1;
     } else {
      if ((i3 | 0) != (i4 | 0)) {
       i1 = __ZN10__cxxabiv112_GLOBAL__N_121parse_unresolved_typeINS0_2DbEEEPKcS4_S4_RT_(i3, i4, i6) | 0;
       if ((i1 | 0) == (i3 | 0)) i1 = __ZN10__cxxabiv112_GLOBAL__N_115parse_simple_idINS0_2DbEEEPKcS4_S4_RT_(i3, i4, i6) | 0;
       if ((i1 | 0) != (i3 | 0) ? (i2 = HEAP32[i6 + 4 >> 2] | 0, (HEAP32[i6 >> 2] | 0) != (i2 | 0)) : 0) __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc(i2 + -24 | 0, 0, 33708) | 0; else i1 = i3;
      } else i1 = i4;
      i1 = (i1 | 0) == (i3 | 0) ? i5 : i1;
      break L1;
     }
    }
    break;
   }
  default:
   {}
  }
  i1 = __ZN10__cxxabiv112_GLOBAL__N_115parse_simple_idINS0_2DbEEEPKcS4_S4_RT_(i5, i4, i6) | 0;
  if ((i1 | 0) == (i5 | 0)) {
   i1 = __ZN10__cxxabiv112_GLOBAL__N_119parse_operator_nameINS0_2DbEEEPKcS4_S4_RT_(i5, i4, i6) | 0;
   if ((i1 | 0) != (i5 | 0)) {
    i5 = __ZN10__cxxabiv112_GLOBAL__N_119parse_template_argsINS0_2DbEEEPKcS4_S4_RT_(i1, i4, i6) | 0;
    if ((i5 | 0) != (i1 | 0)) {
     i4 = i6 + 4 | 0;
     i1 = HEAP32[i4 >> 2] | 0;
     if (((i1 - (HEAP32[i6 >> 2] | 0) | 0) / 24 | 0) >>> 0 < 2) i1 = i5; else {
      __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv(i7, i1 + -24 | 0);
      i1 = HEAP32[i4 >> 2] | 0;
      i2 = i1 + -24 | 0;
      i3 = i1;
      while (1) {
       if ((i3 | 0) == (i2 | 0)) break;
       i6 = i3 + -24 | 0;
       HEAP32[i4 >> 2] = i6;
       __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i6);
       i3 = HEAP32[i4 >> 2] | 0;
      }
      i6 = HEAP8[i7 >> 0] | 0;
      i4 = (i6 & 1) == 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj(i1 + -48 | 0, i4 ? i7 + 1 | 0 : HEAP32[i7 + 8 >> 2] | 0, i4 ? (i6 & 255) >>> 1 : HEAP32[i7 + 4 >> 2] | 0) | 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i7);
      i1 = i5;
     }
    }
   } else i1 = i5;
  }
 } else i1 = i5; while (0);
 STACKTOP = i8;
 return i1 | 0;
}

function __ZN4wasm15RemoveUnusedBrs8visitAnyEPS0_PPNS_10ExpressionE(i9, i1) {
 i9 = i9 | 0;
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i10 = 0, i11 = 0;
 i11 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i8 = i11;
 i1 = HEAP32[i1 >> 2] | 0;
 i10 = i9 + 44 | 0;
 L1 : do if ((HEAP32[i1 >> 2] | 0) != 4) {
  if (__ZN4wasm10Expression2isINS_6SwitchEEEbv(i1) | 0) {
   i3 = HEAP32[i10 >> 2] | 0;
   i1 = i9 + 48 | 0;
   i2 = HEAP32[i1 >> 2] | 0;
   while (1) {
    if ((i2 | 0) == (i3 | 0)) break L1;
    i10 = i2 + -4 | 0;
    HEAP32[i1 >> 2] = i10;
    i2 = i10;
   }
  }
  if ((HEAP32[i1 >> 2] | 0) == 2) {
   i7 = (__ZN4wasm10Expression4castINS_2IfEEEPT_v(i1) | 0) + 16 | 0;
   if (!(HEAP32[i7 >> 2] | 0)) break;
   i7 = i9 + 60 | 0;
   i6 = HEAP32[i7 >> 2] | 0;
   i1 = i6;
   if ((i6 | 0) == (HEAP32[i9 + 56 >> 2] | 0)) ___assert_fail(20170, 20195, 57, 20226);
   i5 = HEAP32[i1 + -8 >> 2] | 0;
   i6 = i9 + 48 | 0;
   i4 = i9 + 52 | 0;
   i3 = HEAP32[i1 + -12 >> 2] | 0;
   while (1) {
    if ((i3 | 0) == (i5 | 0)) break;
    i1 = HEAP32[i3 >> 2] | 0;
    HEAP32[i8 >> 2] = i1;
    i2 = HEAP32[i6 >> 2] | 0;
    if ((i2 | 0) == (HEAP32[i4 >> 2] | 0)) __ZNSt3__16vectorIPN4wasm5BreakENS_9allocatorIS3_EEE21__push_back_slow_pathIRKS3_EEvOT_(i10, i8); else {
     HEAP32[i2 >> 2] = i1;
     HEAP32[i6 >> 2] = (HEAP32[i6 >> 2] | 0) + 4;
    }
    i3 = i3 + 4 | 0;
   }
   i2 = HEAP32[i7 >> 2] | 0;
   i1 = i2 + -12 | 0;
   while (1) {
    if ((i2 | 0) == (i1 | 0)) break L1;
    i10 = i2 + -12 | 0;
    HEAP32[i7 >> 2] = i10;
    __ZNSt3__113__vector_baseIPN4wasm5BreakENS_9allocatorIS3_EEED2Ev(i10);
    i2 = HEAP32[i7 >> 2] | 0;
   }
  }
  if (!(__ZN4wasm10Expression2isINS_5BlockEEEbv(i1) | 0)) switch (HEAP32[i1 >> 2] | 0) {
  case 19:
   break L1;
  case 3:
   {
    i3 = HEAP32[i10 >> 2] | 0;
    i1 = i9 + 48 | 0;
    i2 = HEAP32[i1 >> 2] | 0;
    while (1) {
     if ((i2 | 0) == (i3 | 0)) break L1;
     i10 = i2 + -4 | 0;
     HEAP32[i1 >> 2] = i10;
     i2 = i10;
    }
   }
  default:
   {
    i3 = HEAP32[i10 >> 2] | 0;
    i1 = i9 + 48 | 0;
    i2 = HEAP32[i1 >> 2] | 0;
    while (1) {
     if ((i2 | 0) == (i3 | 0)) break L1;
     i10 = i2 + -4 | 0;
     HEAP32[i1 >> 2] = i10;
     i2 = i10;
    }
   }
  }
  i7 = (__ZN4wasm10Expression4castINS_5BlockEEEPT_v(i1) | 0) + 8 | 0;
  i7 = HEAP32[i7 >> 2] | 0;
  if (i7 | 0) {
   i8 = (HEAP32[i9 + 48 >> 2] | 0) - (HEAP32[i10 >> 2] | 0) >> 2;
   i5 = i9 + 40 | 0;
   i6 = 0;
   i1 = 0;
   while (1) {
    if ((i6 | 0) == (i8 | 0)) break;
    i2 = HEAP32[i10 >> 2] | 0;
    i3 = HEAP32[i2 + (i6 << 2) >> 2] | 0;
    i4 = i3;
    if ((HEAP32[i3 + 8 >> 2] | 0) != (i7 | 0)) if (!i1) i1 = 0; else HEAP32[i2 + (i6 - i1 << 2) >> 2] = i4; else {
     i9 = i3;
     HEAP32[i9 >> 2] = 19;
     HEAP32[i9 + 4 >> 2] = 0;
     HEAP8[i5 >> 0] = 1;
     i1 = i1 + 1 | 0;
    }
    i6 = i6 + 1 | 0;
   }
   if (i1 | 0) __ZNSt3__16vectorIPN4wasm5BreakENS_9allocatorIS3_EEE6resizeEj(i10, i8 - i1 | 0);
  }
 } else {
  i2 = HEAP32[i10 >> 2] | 0;
  i4 = i9 + 48 | 0;
  i3 = HEAP32[i4 >> 2] | 0;
  while (1) {
   if ((i3 | 0) == (i2 | 0)) break;
   i7 = i3 + -4 | 0;
   HEAP32[i4 >> 2] = i7;
   i3 = i7;
  }
  i7 = __ZN4wasm10Expression4castINS_5BreakEEEPT_v(i1) | 0;
  HEAP32[i8 >> 2] = i7;
  i1 = i7;
  do if ((HEAP32[i7 + 16 >> 2] | 0) == 0 ? (HEAP32[i7 + 12 >> 2] | 0) == 0 : 0) {
   i2 = HEAP32[i4 >> 2] | 0;
   if ((i2 | 0) == (HEAP32[i9 + 52 >> 2] | 0)) {
    __ZNSt3__16vectorIPN4wasm5BreakENS_9allocatorIS3_EEE21__push_back_slow_pathIRKS3_EEvOT_(i10, i8);
    break;
   } else {
    HEAP32[i2 >> 2] = i1;
    HEAP32[i4 >> 2] = (HEAP32[i4 >> 2] | 0) + 4;
    break;
   }
  } while (0);
 } while (0);
 STACKTOP = i11;
 return;
}

function __ZNKSt3__19money_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_putES4_bRNS_8ios_baseEwRKNS_12basic_stringIwS3_NS_9allocatorIwEEEE(i1, i23, i3, i20, i19, i18) {
 i1 = i1 | 0;
 i23 = i23 | 0;
 i3 = i3 | 0;
 i20 = i20 | 0;
 i19 = i19 | 0;
 i18 = i18 | 0;
 var i2 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, i21 = 0, i22 = 0, i24 = 0, i25 = 0, i26 = 0, i27 = 0, i28 = 0, i29 = 0;
 i28 = STACKTOP;
 STACKTOP = STACKTOP + 480 | 0;
 i9 = i28 + 468 | 0;
 i21 = i28 + 464 | 0;
 i16 = i28 + 472 | 0;
 i13 = i28 + 460 | 0;
 i17 = i28 + 456 | 0;
 i24 = i28 + 444 | 0;
 i27 = i28 + 432 | 0;
 i26 = i28 + 420 | 0;
 i6 = i28 + 416 | 0;
 i8 = i28 + 16 | 0;
 i15 = i28 + 8 | 0;
 i14 = i28 + 4 | 0;
 i10 = i28;
 i1 = __ZNKSt3__18ios_base6getlocEv(i20) | 0;
 HEAP32[i21 >> 2] = i1;
 i11 = __ZNKSt3__16locale9use_facetERNS0_2idE(i21, 38408) | 0;
 i7 = HEAP8[i18 >> 0] | 0;
 i2 = (i7 & 1) == 0;
 i12 = i18 + 4 | 0;
 if (!((i2 ? (i7 & 255) >>> 1 : HEAP32[i12 >> 2] | 0) | 0)) i7 = 0; else {
  i7 = HEAP32[(i2 ? i12 : HEAP32[i18 + 8 >> 2] | 0) >> 2] | 0;
  i7 = (i7 | 0) == (FUNCTION_TABLE_iii[HEAP32[(HEAP32[i11 >> 2] | 0) + 44 >> 2] & 63](i11, 45) | 0);
 }
 i2 = 0;
 while (1) {
  if ((i2 | 0) == 3) break;
  HEAP32[i24 + (i2 << 2) >> 2] = 0;
  i2 = i2 + 1 | 0;
 }
 i2 = 0;
 while (1) {
  if ((i2 | 0) == 3) break;
  HEAP32[i27 + (i2 << 2) >> 2] = 0;
  i2 = i2 + 1 | 0;
 }
 i2 = 0;
 while (1) {
  if ((i2 | 0) == 3) break;
  HEAP32[i26 + (i2 << 2) >> 2] = 0;
  i2 = i2 + 1 | 0;
 }
 __ZNSt3__111__money_putIwE13__gather_infoEbbRKNS_6localeERNS_10money_base7patternERwS8_RNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEERNS9_IwNSA_IwEENSC_IwEEEESJ_Ri(i3, i7, i21, i16, i13, i17, i24, i27, i26, i6);
 i4 = HEAP8[i18 >> 0] | 0;
 i5 = HEAP32[i12 >> 2] | 0;
 i2 = (i4 & 1) == 0 ? (i4 & 255) >>> 1 : i5;
 i3 = HEAP32[i6 >> 2] | 0;
 if ((i2 | 0) > (i3 | 0)) {
  i29 = HEAP8[i26 >> 0] | 0;
  i6 = HEAP8[i27 >> 0] | 0;
  i2 = (i2 - i3 << 1 | 1) + i3 + ((i29 & 1) == 0 ? (i29 & 255) >>> 1 : HEAP32[i26 + 4 >> 2] | 0) + ((i6 & 1) == 0 ? (i6 & 255) >>> 1 : HEAP32[i27 + 4 >> 2] | 0) | 0;
 } else {
  i29 = HEAP8[i26 >> 0] | 0;
  i2 = HEAP8[i27 >> 0] | 0;
  i2 = i3 + 2 + ((i29 & 1) == 0 ? (i29 & 255) >>> 1 : HEAP32[i26 + 4 >> 2] | 0) + ((i2 & 1) == 0 ? (i2 & 255) >>> 1 : HEAP32[i27 + 4 >> 2] | 0) | 0;
 }
 if (i2 >>> 0 > 100) {
  i2 = _malloc(i2 << 2) | 0;
  if (!i2) __ZSt17__throw_bad_allocv(); else {
   i25 = i2;
   i22 = i2;
  }
 } else {
  i25 = 0;
  i22 = i8;
 }
 i29 = (i4 & 1) == 0;
 i2 = i29 ? i12 : HEAP32[i18 + 8 >> 2] | 0;
 __ZNSt3__111__money_putIwE8__formatEPwRS2_S3_jPKwS5_RKNS_5ctypeIwEEbRKNS_10money_base7patternEwwRKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEERKNSE_IwNSF_IwEENSH_IwEEEESQ_i(i22, i15, i14, HEAP32[i20 + 4 >> 2] | 0, i2, i2 + ((i29 ? (i4 & 255) >>> 1 : i5) << 2) | 0, i11, i7, i16, HEAP32[i13 >> 2] | 0, HEAP32[i17 >> 2] | 0, i24, i27, i26, i3);
 HEAP32[i10 >> 2] = HEAP32[i23 >> 2];
 i29 = HEAP32[i15 >> 2] | 0;
 i2 = HEAP32[i14 >> 2] | 0;
 HEAP32[i9 >> 2] = HEAP32[i10 >> 2];
 i2 = __ZNSt3__116__pad_and_outputIwNS_11char_traitsIwEEEENS_19ostreambuf_iteratorIT_T0_EES6_PKS4_S8_S8_RNS_8ios_baseES4_(i9, i22, i29, i2, i20, i19) | 0;
 if (i25) {
  _free(i25);
  i1 = HEAP32[i21 >> 2] | 0;
 }
 __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev(i26);
 __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev(i27);
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i24);
 __ZNSt3__114__shared_count16__release_sharedEv(i1) | 0;
 STACKTOP = i28;
 return i2 | 0;
}

function __ZNKSt3__19money_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_putES4_bRNS_8ios_baseEcRKNS_12basic_stringIcS3_NS_9allocatorIcEEEE(i1, i22, i4, i19, i18, i17) {
 i1 = i1 | 0;
 i22 = i22 | 0;
 i4 = i4 | 0;
 i19 = i19 | 0;
 i18 = i18 | 0;
 i17 = i17 | 0;
 var i2 = 0, i3 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i20 = 0, i21 = 0, i23 = 0, i24 = 0, i25 = 0, i26 = 0, i27 = 0, i28 = 0;
 i27 = STACKTOP;
 STACKTOP = STACKTOP + 176 | 0;
 i9 = i27 + 56 | 0;
 i20 = i27 + 52 | 0;
 i15 = i27 + 164 | 0;
 i12 = i27 + 161 | 0;
 i16 = i27 + 160 | 0;
 i23 = i27 + 40 | 0;
 i26 = i27 + 28 | 0;
 i25 = i27 + 16 | 0;
 i6 = i27 + 12 | 0;
 i8 = i27 + 60 | 0;
 i14 = i27 + 8 | 0;
 i13 = i27 + 4 | 0;
 i10 = i27;
 i1 = __ZNKSt3__18ios_base6getlocEv(i19) | 0;
 HEAP32[i20 >> 2] = i1;
 i11 = __ZNKSt3__16locale9use_facetERNS0_2idE(i20, 38376) | 0;
 i7 = HEAP8[i17 >> 0] | 0;
 i2 = (i7 & 1) == 0;
 i3 = i17 + 4 | 0;
 if (!((i2 ? (i7 & 255) >>> 1 : HEAP32[i3 >> 2] | 0) | 0)) i7 = 0; else {
  i7 = HEAP8[(i2 ? i17 + 1 | 0 : HEAP32[i17 + 8 >> 2] | 0) >> 0] | 0;
  i7 = i7 << 24 >> 24 == (FUNCTION_TABLE_iii[HEAP32[(HEAP32[i11 >> 2] | 0) + 28 >> 2] & 63](i11, 45) | 0) << 24 >> 24;
 }
 i2 = 0;
 while (1) {
  if ((i2 | 0) == 3) break;
  HEAP32[i23 + (i2 << 2) >> 2] = 0;
  i2 = i2 + 1 | 0;
 }
 i2 = 0;
 while (1) {
  if ((i2 | 0) == 3) break;
  HEAP32[i26 + (i2 << 2) >> 2] = 0;
  i2 = i2 + 1 | 0;
 }
 i2 = 0;
 while (1) {
  if ((i2 | 0) == 3) break;
  HEAP32[i25 + (i2 << 2) >> 2] = 0;
  i2 = i2 + 1 | 0;
 }
 __ZNSt3__111__money_putIcE13__gather_infoEbbRKNS_6localeERNS_10money_base7patternERcS8_RNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEESF_SF_Ri(i4, i7, i20, i15, i12, i16, i23, i26, i25, i6);
 i5 = HEAP8[i17 >> 0] | 0;
 i4 = HEAP32[i3 >> 2] | 0;
 i2 = (i5 & 1) == 0 ? (i5 & 255) >>> 1 : i4;
 i3 = HEAP32[i6 >> 2] | 0;
 if ((i2 | 0) > (i3 | 0)) {
  i28 = HEAP8[i25 >> 0] | 0;
  i6 = HEAP8[i26 >> 0] | 0;
  i2 = (i2 - i3 << 1 | 1) + i3 + ((i28 & 1) == 0 ? (i28 & 255) >>> 1 : HEAP32[i25 + 4 >> 2] | 0) + ((i6 & 1) == 0 ? (i6 & 255) >>> 1 : HEAP32[i26 + 4 >> 2] | 0) | 0;
 } else {
  i28 = HEAP8[i25 >> 0] | 0;
  i2 = HEAP8[i26 >> 0] | 0;
  i2 = i3 + 2 + ((i28 & 1) == 0 ? (i28 & 255) >>> 1 : HEAP32[i25 + 4 >> 2] | 0) + ((i2 & 1) == 0 ? (i2 & 255) >>> 1 : HEAP32[i26 + 4 >> 2] | 0) | 0;
 }
 if (i2 >>> 0 > 100) {
  i2 = _malloc(i2) | 0;
  if (!i2) __ZSt17__throw_bad_allocv(); else {
   i24 = i2;
   i21 = i2;
  }
 } else {
  i24 = 0;
  i21 = i8;
 }
 i28 = (i5 & 1) == 0;
 i2 = i28 ? i17 + 1 | 0 : HEAP32[i17 + 8 >> 2] | 0;
 __ZNSt3__111__money_putIcE8__formatEPcRS2_S3_jPKcS5_RKNS_5ctypeIcEEbRKNS_10money_base7patternEccRKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEESL_SL_i(i21, i14, i13, HEAP32[i19 + 4 >> 2] | 0, i2, i2 + (i28 ? (i5 & 255) >>> 1 : i4) | 0, i11, i7, i15, HEAP8[i12 >> 0] | 0, HEAP8[i16 >> 0] | 0, i23, i26, i25, i3);
 HEAP32[i10 >> 2] = HEAP32[i22 >> 2];
 i28 = HEAP32[i14 >> 2] | 0;
 i2 = HEAP32[i13 >> 2] | 0;
 HEAP32[i9 >> 2] = HEAP32[i10 >> 2];
 i2 = __ZNSt3__116__pad_and_outputIcNS_11char_traitsIcEEEENS_19ostreambuf_iteratorIT_T0_EES6_PKS4_S8_S8_RNS_8ios_baseES4_(i9, i21, i28, i2, i19, i18) | 0;
 if (i24) {
  _free(i24);
  i1 = HEAP32[i20 >> 2] | 0;
 }
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i25);
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i26);
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i23);
 __ZNSt3__114__shared_count16__release_sharedEv(i1) | 0;
 STACKTOP = i27;
 return i2 | 0;
}

function __ZNK10__cxxabiv121__vmi_class_type_info16search_below_dstEPNS_19__dynamic_cast_infoEPKvib(i3, i14, i13, i6, i12) {
 i3 = i3 | 0;
 i14 = i14 | 0;
 i13 = i13 | 0;
 i6 = i6 | 0;
 i12 = i12 | 0;
 var i1 = 0, i2 = 0, i4 = 0, i5 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0;
 L1 : do if ((i3 | 0) == (HEAP32[i14 + 8 >> 2] | 0)) {
  if ((HEAP32[i14 + 4 >> 2] | 0) == (i13 | 0) ? (i1 = i14 + 28 | 0, (HEAP32[i1 >> 2] | 0) != 1) : 0) HEAP32[i1 >> 2] = i6;
 } else {
  if ((i3 | 0) != (HEAP32[i14 >> 2] | 0)) {
   i11 = HEAP32[i3 + 12 >> 2] | 0;
   i4 = i3 + 16 + (i11 << 3) | 0;
   __ZNK10__cxxabiv122__base_class_type_info16search_below_dstEPNS_19__dynamic_cast_infoEPKvib(i3 + 16 | 0, i14, i13, i6, i12);
   i1 = i3 + 24 | 0;
   if ((i11 | 0) <= 1) break;
   i2 = HEAP32[i3 + 8 >> 2] | 0;
   if ((i2 & 2 | 0) == 0 ? (i5 = i14 + 36 | 0, (HEAP32[i5 >> 2] | 0) != 1) : 0) {
    if (!(i2 & 1)) {
     i2 = i14 + 54 | 0;
     while (1) {
      if (HEAP8[i2 >> 0] | 0) break L1;
      if ((HEAP32[i5 >> 2] | 0) == 1) break L1;
      __ZNK10__cxxabiv122__base_class_type_info16search_below_dstEPNS_19__dynamic_cast_infoEPKvib(i1, i14, i13, i6, i12);
      i1 = i1 + 8 | 0;
      if (i1 >>> 0 >= i4 >>> 0) break L1;
     }
    }
    i2 = i14 + 24 | 0;
    i3 = i14 + 54 | 0;
    while (1) {
     if (HEAP8[i3 >> 0] | 0) break L1;
     if ((HEAP32[i5 >> 2] | 0) == 1 ? (HEAP32[i2 >> 2] | 0) == 1 : 0) break L1;
     __ZNK10__cxxabiv122__base_class_type_info16search_below_dstEPNS_19__dynamic_cast_infoEPKvib(i1, i14, i13, i6, i12);
     i1 = i1 + 8 | 0;
     if (i1 >>> 0 >= i4 >>> 0) break L1;
    }
   }
   i2 = i14 + 54 | 0;
   while (1) {
    if (HEAP8[i2 >> 0] | 0) break L1;
    __ZNK10__cxxabiv122__base_class_type_info16search_below_dstEPNS_19__dynamic_cast_infoEPKvib(i1, i14, i13, i6, i12);
    i1 = i1 + 8 | 0;
    if (i1 >>> 0 >= i4 >>> 0) break L1;
   }
  }
  if ((HEAP32[i14 + 16 >> 2] | 0) != (i13 | 0) ? (i11 = i14 + 20 | 0, (HEAP32[i11 >> 2] | 0) != (i13 | 0)) : 0) {
   HEAP32[i14 + 32 >> 2] = i6;
   i10 = i14 + 44 | 0;
   if ((HEAP32[i10 >> 2] | 0) == 4) break;
   i4 = i3 + 16 + (HEAP32[i3 + 12 >> 2] << 3) | 0;
   i5 = i14 + 52 | 0;
   i6 = i14 + 53 | 0;
   i8 = i14 + 54 | 0;
   i7 = i3 + 8 | 0;
   i9 = i14 + 24 | 0;
   i2 = 0;
   i1 = 0;
   i3 = i3 + 16 | 0;
   L34 : while (1) {
    if (i3 >>> 0 >= i4 >>> 0) {
     i3 = 20;
     break;
    }
    HEAP8[i5 >> 0] = 0;
    HEAP8[i6 >> 0] = 0;
    __ZNK10__cxxabiv122__base_class_type_info16search_above_dstEPNS_19__dynamic_cast_infoEPKvS4_ib(i3, i14, i13, i13, 1, i12);
    if (HEAP8[i8 >> 0] | 0) {
     i3 = 20;
     break;
    }
    do if (HEAP8[i6 >> 0] | 0) {
     if (!(HEAP8[i5 >> 0] | 0)) if (!(HEAP32[i7 >> 2] & 1)) {
      i1 = 1;
      i3 = 20;
      break L34;
     } else {
      i1 = 1;
      break;
     }
     if ((HEAP32[i9 >> 2] | 0) == 1) {
      i3 = 25;
      break L34;
     }
     if (!(HEAP32[i7 >> 2] & 2)) {
      i3 = 25;
      break L34;
     } else {
      i2 = 1;
      i1 = 1;
     }
    } while (0);
    i3 = i3 + 8 | 0;
   }
   do if ((i3 | 0) == 20) {
    if ((!i2 ? (HEAP32[i11 >> 2] = i13, i13 = i14 + 40 | 0, HEAP32[i13 >> 2] = (HEAP32[i13 >> 2] | 0) + 1, (HEAP32[i14 + 36 >> 2] | 0) == 1) : 0) ? (HEAP32[i9 >> 2] | 0) == 2 : 0) {
     HEAP8[i8 >> 0] = 1;
     if (i1) {
      i3 = 25;
      break;
     } else {
      i1 = 4;
      break;
     }
    }
    if (i1) i3 = 25; else i1 = 4;
   } while (0);
   if ((i3 | 0) == 25) i1 = 3;
   HEAP32[i10 >> 2] = i1;
   break;
  }
  if ((i6 | 0) == 1) HEAP32[i14 + 32 >> 2] = 1;
 } while (0);
 return;
}

function __ZNSt3__1L13utf8_to_utf16EPKhS1_RS1_PtS3_RS3_mNS_12codecvt_modeE(i1, i11, i12, i3, i13, i14, i10, i2) {
 i1 = i1 | 0;
 i11 = i11 | 0;
 i12 = i12 | 0;
 i3 = i3 | 0;
 i13 = i13 | 0;
 i14 = i14 | 0;
 i10 = i10 | 0;
 i2 = i2 | 0;
 var i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i15 = 0;
 HEAP32[i12 >> 2] = i1;
 HEAP32[i14 >> 2] = i3;
 if (i2 & 4) {
  i1 = HEAP32[i12 >> 2] | 0;
  i2 = i11;
  if ((((i2 - i1 | 0) > 2 ? (HEAP8[i1 >> 0] | 0) == -17 : 0) ? (HEAP8[i1 + 1 >> 0] | 0) == -69 : 0) ? (HEAP8[i1 + 2 >> 0] | 0) == -65 : 0) HEAP32[i12 >> 2] = i1 + 3;
 } else i2 = i11;
 i8 = i13;
 L9 : while (1) {
  i5 = HEAP32[i12 >> 2] | 0;
  i1 = i5 >>> 0 < i11 >>> 0;
  if (!i1) {
   i15 = 41;
   break;
  }
  i9 = HEAP32[i14 >> 2] | 0;
  if (i9 >>> 0 >= i13 >>> 0) {
   i15 = 41;
   break;
  }
  i1 = HEAP8[i5 >> 0] | 0;
  i7 = i1 & 255;
  if (i7 >>> 0 > i10 >>> 0) {
   i1 = 2;
   break;
  }
  do if (i1 << 24 >> 24 > -1) {
   HEAP16[i9 >> 1] = i1 & 255;
   HEAP32[i12 >> 2] = i5 + 1;
  } else {
   if ((i1 & 255) < 194) {
    i1 = 2;
    break L9;
   }
   if ((i1 & 255) < 224) {
    if ((i2 - i5 | 0) < 2) {
     i1 = 1;
     break L9;
    }
    i1 = HEAPU8[i5 + 1 >> 0] | 0;
    if ((i1 & 192 | 0) != 128) {
     i1 = 2;
     break L9;
    }
    i1 = i1 & 63 | i7 << 6 & 1984;
    if (i1 >>> 0 > i10 >>> 0) {
     i1 = 2;
     break L9;
    }
    HEAP16[i9 >> 1] = i1;
    HEAP32[i12 >> 2] = i5 + 2;
    break;
   }
   if ((i1 & 255) < 240) {
    if ((i2 - i5 | 0) < 3) {
     i1 = 1;
     break L9;
    }
    i3 = HEAP8[i5 + 1 >> 0] | 0;
    i1 = HEAP8[i5 + 2 >> 0] | 0;
    switch (i7 | 0) {
    case 224:
     {
      if ((i3 & -32) << 24 >> 24 != -96) {
       i1 = 2;
       break L9;
      }
      break;
     }
    case 237:
     {
      if ((i3 & -32) << 24 >> 24 != -128) {
       i1 = 2;
       break L9;
      }
      break;
     }
    default:
     if ((i3 & -64) << 24 >> 24 != -128) {
      i1 = 2;
      break L9;
     }
    }
    i1 = i1 & 255;
    if ((i1 & 192 | 0) != 128) {
     i1 = 2;
     break L9;
    }
    i1 = (i3 & 255) << 6 & 4032 | i7 << 12 | i1 & 63;
    if ((i1 & 65535) >>> 0 > i10 >>> 0) {
     i1 = 2;
     break L9;
    }
    HEAP16[i9 >> 1] = i1;
    HEAP32[i12 >> 2] = i5 + 3;
    break;
   }
   if ((i1 & 255) >= 245) {
    i1 = 2;
    break L9;
   }
   if ((i2 - i5 | 0) < 4) {
    i1 = 1;
    break L9;
   }
   i4 = HEAP8[i5 + 1 >> 0] | 0;
   i1 = HEAP8[i5 + 2 >> 0] | 0;
   i3 = HEAP8[i5 + 3 >> 0] | 0;
   switch (i7 | 0) {
   case 240:
    {
     if ((i4 + 112 & 255) >= 48) {
      i1 = 2;
      break L9;
     }
     break;
    }
   case 244:
    {
     if ((i4 & -16) << 24 >> 24 != -128) {
      i1 = 2;
      break L9;
     }
     break;
    }
   default:
    if ((i4 & -64) << 24 >> 24 != -128) {
     i1 = 2;
     break L9;
    }
   }
   i6 = i1 & 255;
   if ((i6 & 192 | 0) != 128) {
    i1 = 2;
    break L9;
   }
   i1 = i3 & 255;
   if ((i1 & 192 | 0) != 128) {
    i1 = 2;
    break L9;
   }
   if ((i8 - i9 | 0) < 4) {
    i1 = 1;
    break L9;
   }
   i5 = i7 & 7;
   i4 = i4 & 255;
   i3 = i6 << 6;
   i1 = i1 & 63;
   if ((i4 << 12 & 258048 | i5 << 18 | i3 & 4032 | i1) >>> 0 > i10 >>> 0) {
    i1 = 2;
    break L9;
   }
   HEAP16[i9 >> 1] = i4 << 2 & 60 | i6 >>> 4 & 3 | ((i4 >>> 4 & 3 | i5 << 2) << 6) + 16320 | 55296;
   i9 = i9 + 2 | 0;
   HEAP32[i14 >> 2] = i9;
   HEAP16[i9 >> 1] = i1 | i3 & 960 | 56320;
   HEAP32[i12 >> 2] = (HEAP32[i12 >> 2] | 0) + 4;
  } while (0);
  HEAP32[i14 >> 2] = (HEAP32[i14 >> 2] | 0) + 2;
 }
 if ((i15 | 0) == 41) i1 = i1 & 1;
 return i1 | 0;
}

function __ZN4wasm22ShellExternalInterface5storeEPNS_5StoreEjNS_7LiteralE(i5, i1, i4, i2) {
 i5 = i5 | 0;
 i1 = i1 | 0;
 i4 = i4 | 0;
 i2 = i2 | 0;
 var i3 = 0;
 L1 : do switch (HEAP32[i1 + 4 >> 2] | 0) {
 case 1:
  {
   switch (HEAP32[i1 + 8 >> 2] | 0) {
   case 1:
    {
     i3 = (__ZNK4wasm7Literal6geti32Ev(i2) | 0) & 255;
     HEAP8[(HEAP32[i5 + 4 >> 2] | 0) + i4 >> 0] = i3;
     break L1;
    }
   case 2:
    {
     i2 = (__ZNK4wasm7Literal6geti32Ev(i2) | 0) & 65535;
     i1 = (HEAP32[i5 + 4 >> 2] | 0) + i4 | 0;
     if (!(i1 & 1)) {
      HEAP16[i1 >> 1] = i2;
      break L1;
     } else {
      HEAP8[i1 >> 0] = i2;
      HEAP8[i1 + 1 >> 0] = i2 >> 8;
      break L1;
     }
    }
   case 4:
    {
     i2 = __ZNK4wasm7Literal6geti32Ev(i2) | 0;
     i1 = (HEAP32[i5 + 4 >> 2] | 0) + i4 | 0;
     if (!(i1 & 3)) {
      HEAP32[i1 >> 2] = i2;
      break L1;
     } else {
      HEAP8[i1 >> 0] = i2;
      HEAP8[i1 + 1 >> 0] = i2 >> 8;
      HEAP8[i1 + 2 >> 0] = i2 >> 16;
      HEAP8[i1 + 3 >> 0] = i2 >> 24;
      break L1;
     }
    }
   default:
    _abort();
   }
   break;
  }
 case 2:
  {
   switch (HEAP32[i1 + 8 >> 2] | 0) {
   case 1:
    {
     i3 = __ZNK4wasm7Literal6geti64Ev(i2) | 0;
     HEAP8[(HEAP32[i5 + 4 >> 2] | 0) + i4 >> 0] = i3;
     break L1;
    }
   case 2:
    {
     i2 = (__ZNK4wasm7Literal6geti64Ev(i2) | 0) & 65535;
     i1 = (HEAP32[i5 + 4 >> 2] | 0) + i4 | 0;
     if (!(i1 & 1)) {
      HEAP16[i1 >> 1] = i2;
      break L1;
     } else {
      HEAP8[i1 >> 0] = i2;
      HEAP8[i1 + 1 >> 0] = i2 >> 8;
      break L1;
     }
    }
   case 4:
    {
     i2 = __ZNK4wasm7Literal6geti64Ev(i2) | 0;
     i1 = (HEAP32[i5 + 4 >> 2] | 0) + i4 | 0;
     if (!(i1 & 3)) {
      HEAP32[i1 >> 2] = i2;
      break L1;
     } else {
      HEAP8[i1 >> 0] = i2;
      HEAP8[i1 + 1 >> 0] = i2 >> 8;
      HEAP8[i1 + 2 >> 0] = i2 >> 16;
      HEAP8[i1 + 3 >> 0] = i2 >> 24;
      break L1;
     }
    }
   case 8:
    {
     i2 = __ZNK4wasm7Literal6geti64Ev(i2) | 0;
     i3 = tempRet0;
     i1 = (HEAP32[i5 + 4 >> 2] | 0) + i4 | 0;
     if (!(i1 & 7)) {
      i5 = i1;
      HEAP32[i5 >> 2] = i2;
      HEAP32[i5 + 4 >> 2] = i3;
      break L1;
     } else {
      i5 = i1;
      i4 = i5;
      HEAP8[i4 >> 0] = i2;
      HEAP8[i4 + 1 >> 0] = i2 >> 8;
      HEAP8[i4 + 2 >> 0] = i2 >> 16;
      HEAP8[i4 + 3 >> 0] = i2 >> 24;
      i5 = i5 + 4 | 0;
      HEAP8[i5 >> 0] = i3;
      HEAP8[i5 + 1 >> 0] = i3 >> 8;
      HEAP8[i5 + 2 >> 0] = i3 >> 16;
      HEAP8[i5 + 3 >> 0] = i3 >> 24;
      break L1;
     }
    }
   default:
    _abort();
   }
   break;
  }
 case 3:
  {
   i2 = __ZNK4wasm7Literal14reinterpreti32Ev(i2) | 0;
   i1 = (HEAP32[i5 + 4 >> 2] | 0) + i4 | 0;
   if (!(i1 & 3)) {
    HEAP32[i1 >> 2] = i2;
    break L1;
   } else {
    HEAP8[i1 >> 0] = i2;
    HEAP8[i1 + 1 >> 0] = i2 >> 8;
    HEAP8[i1 + 2 >> 0] = i2 >> 16;
    HEAP8[i1 + 3 >> 0] = i2 >> 24;
    break L1;
   }
  }
 case 4:
  {
   i2 = __ZNK4wasm7Literal14reinterpreti64Ev(i2) | 0;
   i3 = tempRet0;
   i1 = (HEAP32[i5 + 4 >> 2] | 0) + i4 | 0;
   if (!(i1 & 7)) {
    i5 = i1;
    HEAP32[i5 >> 2] = i2;
    HEAP32[i5 + 4 >> 2] = i3;
    break L1;
   } else {
    i5 = i1;
    i4 = i5;
    HEAP8[i4 >> 0] = i2;
    HEAP8[i4 + 1 >> 0] = i2 >> 8;
    HEAP8[i4 + 2 >> 0] = i2 >> 16;
    HEAP8[i4 + 3 >> 0] = i2 >> 24;
    i5 = i5 + 4 | 0;
    HEAP8[i5 >> 0] = i3;
    HEAP8[i5 + 1 >> 0] = i3 >> 8;
    HEAP8[i5 + 2 >> 0] = i3 >> 16;
    HEAP8[i5 + 3 >> 0] = i3 >> 24;
    break L1;
   }
  }
 default:
  _abort();
 } while (0);
 return;
}

function __ZN10__cxxabiv112_GLOBAL__N_19base_nameINSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEEEET_RS9_(i6, i5) {
 i6 = i6 | 0;
 i5 = i5 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i7 = 0;
 i4 = HEAP8[i5 >> 0] | 0;
 i1 = (i4 & 1) == 0;
 i4 = i1 ? (i4 & 255) >>> 1 : HEAP32[i5 + 4 >> 2] | 0;
 L1 : do if (!i4) __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_(i6, i5); else {
  i2 = i1 ? i5 + 1 | 0 : HEAP32[i5 + 8 >> 2] | 0;
  i1 = i4 >>> 0 > 11;
  i3 = _memcmp(i2, 34302, i1 ? 11 : i4) | 0;
  if (!(((i3 | 0) == 0 ? (i4 >>> 0 < 11 ? -1 : i1 & 1) : i3) | 0)) {
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6assignEPKcj(i5, 34354, 70);
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj(i6, 34425, 12);
   break;
  }
  i1 = i4 >>> 0 > 12;
  i3 = i1 ? 12 : i4;
  i7 = _memcmp(i2, 34314, i3) | 0;
  i1 = i4 >>> 0 < 12 ? -1 : i1 & 1;
  if (!(((i7 | 0) == 0 ? i1 : i7) | 0)) {
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6assignEPKcj(i5, 34438, 49);
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj(i6, 34488, 13);
   break;
  }
  i7 = _memcmp(i2, 34327, i3) | 0;
  if (!(((i7 | 0) == 0 ? i1 : i7) | 0)) {
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6assignEPKcj(i5, 34502, 49);
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj(i6, 34552, 13);
   break;
  }
  i3 = i4 >>> 0 > 13;
  i7 = _memcmp(i2, 34340, i3 ? 13 : i4) | 0;
  if (!(((i7 | 0) == 0 ? (i4 >>> 0 < 13 ? -1 : i3 & 1) : i7) | 0)) {
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6assignEPKcj(i5, 34566, 50);
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj(i6, 34617, 14);
   break;
  }
  i1 = i2 + i4 | 0;
  L16 : do if ((HEAP8[i1 + -1 >> 0] | 0) == 62) {
   i4 = 1;
   L17 : while (1) {
    i3 = i1;
    L19 : while (1) {
     i1 = i3 + -1 | 0;
     if ((i1 | 0) == (i2 | 0)) break L17;
     i3 = i3 + -2 | 0;
     switch (HEAP8[i3 >> 0] | 0) {
     case 60:
      {
       i5 = 18;
       break L19;
      }
     case 62:
      {
       i5 = 19;
       break L19;
      }
     default:
      i3 = i1;
     }
    }
    if ((i5 | 0) == 18) {
     i4 = i4 + -1 | 0;
     if (!i4) {
      i1 = i3;
      break L16;
     } else continue;
    } else if ((i5 | 0) == 19) {
     i4 = i4 + 1 | 0;
     continue;
    }
   }
   i1 = 0;
   while (1) {
    if ((i1 | 0) == 3) break L1;
    HEAP32[i6 + (i1 << 2) >> 2] = 0;
    i1 = i1 + 1 | 0;
   }
  } while (0);
  i4 = i1;
  while (1) {
   i3 = i4 + -1 | 0;
   if ((i3 | 0) == (i2 | 0)) break;
   if ((HEAP8[i3 >> 0] | 0) == 58) {
    i2 = i4;
    break;
   } else i4 = i3;
  }
  i5 = i1 - i2 | 0;
  if (i5 >>> 0 > 4294967279) __ZNKSt3__121__basic_string_commonILb1EE20__throw_length_errorEv(i6);
  if (i5 >>> 0 < 11) {
   HEAP8[i6 >> 0] = i5 << 1;
   i4 = i6 + 1 | 0;
  } else {
   i7 = i5 + 16 & -16;
   i4 = _malloc(i7) | 0;
   HEAP32[i6 + 8 >> 2] = i4;
   HEAP32[i6 >> 2] = i7 | 1;
   HEAP32[i6 + 4 >> 2] = i5;
  }
  i3 = i4;
  while (1) {
   if ((i2 | 0) == (i1 | 0)) break;
   HEAP8[i3 >> 0] = HEAP8[i2 >> 0] | 0;
   i2 = i2 + 1 | 0;
   i3 = i3 + 1 | 0;
  }
  HEAP8[i4 + i5 >> 0] = 0;
 } while (0);
 return;
}

function __ZNK4wasm7Literal3minERKS0_(i14, i1, i4) {
 i14 = i14 | 0;
 i1 = i1 | 0;
 i4 = i4 | 0;
 var d2 = 0.0, d3 = 0.0, d5 = 0.0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i15 = 0, d16 = 0.0;
 i15 = STACKTOP;
 STACKTOP = STACKTOP + 128 | 0;
 i6 = i15 + 112 | 0;
 i7 = i15 + 96 | 0;
 i10 = i15 + 80 | 0;
 i12 = i15 + 64 | 0;
 i8 = i15 + 48 | 0;
 i9 = i15 + 32 | 0;
 i11 = i15 + 16 | 0;
 i13 = i15;
 do if ((HEAP32[i1 >> 2] | 0) == 3) {
  d5 = +__ZNK4wasm7Literal6getf32Ev(i1);
  d2 = +__ZNK4wasm7Literal6getf32Ev(i4);
  if (d5 == 0.0 & d5 == d2) {
   d5 = ((HEAPF32[tempDoublePtr >> 2] = d5, HEAP32[tempDoublePtr >> 2] | 0) | 0) < 0 ? d5 : d2;
   HEAP32[i14 >> 2] = 3;
   HEAPF32[i14 + 8 >> 2] = d5;
   break;
  }
  d3 = d2 < d5 ? d2 : d5;
  d16 = +Math_abs(+d5);
  i1 = (HEAPF32[tempDoublePtr >> 2] = d16, HEAP32[tempDoublePtr >> 2] | 0) >>> 0 > 2139095040;
  d16 = +Math_abs(+d2);
  i4 = (HEAPF32[tempDoublePtr >> 2] = d16, HEAP32[tempDoublePtr >> 2] | 0) >>> 0 > 2139095040;
  d16 = +Math_abs(+d3);
  if (!(i4 | (i1 | (HEAPF32[tempDoublePtr >> 2] = d16, HEAP32[tempDoublePtr >> 2] | 0) >>> 0 > 2139095040))) {
   HEAP32[i14 >> 2] = 3;
   HEAPF32[i14 + 8 >> 2] = d3;
   break;
  }
  if (!(i1 | i4)) {
   HEAP32[i6 >> 2] = 1;
   HEAP32[i6 + 8 >> 2] = 2143289344;
   __ZN4wasm7Literal9castToF32Ev(i14, i6);
   break;
  }
  HEAP32[i7 >> 2] = 3;
  HEAPF32[i7 + 8 >> 2] = i1 ? d5 : d2;
  __ZN4wasm7Literal9castToI32Ev(i10, i7);
  i1 = i10 + 8 | 0;
  if ((HEAP32[i10 >> 2] | 0) == 1) {
   HEAP32[i12 + 8 >> 2] = HEAP32[i1 >> 2] | 12582912;
   i1 = 1;
  } else {
   i11 = i1;
   i13 = HEAP32[i11 + 4 >> 2] | 0;
   i1 = i12 + 8 | 0;
   HEAP32[i1 >> 2] = HEAP32[i11 >> 2] | 12582912;
   HEAP32[i1 + 4 >> 2] = i13;
   i1 = 2;
  }
  HEAP32[i12 >> 2] = i1;
  __ZN4wasm7Literal9castToF32Ev(i14, i12);
 } else {
  d5 = +__ZNK4wasm7Literal6getf64Ev(i1);
  d2 = +__ZNK4wasm7Literal6getf64Ev(i4);
  if (d5 == 0.0 & d5 == d2) {
   HEAPF64[tempDoublePtr >> 3] = d5;
   d16 = (HEAP32[tempDoublePtr + 4 >> 2] | 0) < 0 ? d5 : d2;
   HEAP32[i14 >> 2] = 4;
   HEAPF64[i14 + 8 >> 3] = d16;
   break;
  }
  d3 = d2 < d5 ? d2 : d5;
  d16 = +Math_abs(+d5);
  HEAPF64[tempDoublePtr >> 3] = d16;
  i1 = HEAP32[tempDoublePtr + 4 >> 2] | 0;
  i1 = i1 >>> 0 > 2146435072 | (i1 | 0) == 2146435072 & (HEAP32[tempDoublePtr >> 2] | 0) >>> 0 > 0;
  d16 = +Math_abs(+d2);
  HEAPF64[tempDoublePtr >> 3] = d16;
  i4 = HEAP32[tempDoublePtr + 4 >> 2] | 0;
  i4 = i4 >>> 0 > 2146435072 | (i4 | 0) == 2146435072 & (HEAP32[tempDoublePtr >> 2] | 0) >>> 0 > 0;
  d16 = +Math_abs(+d3);
  HEAPF64[tempDoublePtr >> 3] = d16;
  i12 = HEAP32[tempDoublePtr + 4 >> 2] | 0;
  if (!(i4 | (i1 | (i12 >>> 0 > 2146435072 | (i12 | 0) == 2146435072 & (HEAP32[tempDoublePtr >> 2] | 0) >>> 0 > 0)))) {
   HEAP32[i14 >> 2] = 4;
   HEAPF64[i14 + 8 >> 3] = d3;
   break;
  }
  if (!(i1 | i4)) {
   HEAP32[i8 >> 2] = 2;
   i13 = i8 + 8 | 0;
   HEAP32[i13 >> 2] = 0;
   HEAP32[i13 + 4 >> 2] = 2146959360;
   __ZN4wasm7Literal9castToF64Ev(i14, i8);
   break;
  }
  HEAP32[i9 >> 2] = 4;
  HEAPF64[i9 + 8 >> 3] = i1 ? d5 : d2;
  __ZN4wasm7Literal9castToI64Ev(i11, i9);
  i1 = i11 + 8 | 0;
  if ((HEAP32[i11 >> 2] | 0) == 1) {
   HEAP32[i13 + 8 >> 2] = HEAP32[i1 >> 2];
   i1 = 1;
  } else {
   i11 = i1;
   i12 = HEAP32[i11 + 4 >> 2] | 524288;
   i1 = i13 + 8 | 0;
   HEAP32[i1 >> 2] = HEAP32[i11 >> 2];
   HEAP32[i1 + 4 >> 2] = i12;
   i1 = 2;
  }
  HEAP32[i13 >> 2] = i1;
  __ZN4wasm7Literal9castToF64Ev(i14, i13);
 } while (0);
 STACKTOP = i15;
 return;
}

function __ZNK4wasm7Literal3maxERKS0_(i14, i1, i4) {
 i14 = i14 | 0;
 i1 = i1 | 0;
 i4 = i4 | 0;
 var d2 = 0.0, d3 = 0.0, d5 = 0.0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i15 = 0, d16 = 0.0;
 i15 = STACKTOP;
 STACKTOP = STACKTOP + 128 | 0;
 i6 = i15 + 112 | 0;
 i7 = i15 + 96 | 0;
 i10 = i15 + 80 | 0;
 i12 = i15 + 64 | 0;
 i8 = i15 + 48 | 0;
 i9 = i15 + 32 | 0;
 i11 = i15 + 16 | 0;
 i13 = i15;
 do if ((HEAP32[i1 >> 2] | 0) == 3) {
  d5 = +__ZNK4wasm7Literal6getf32Ev(i1);
  d2 = +__ZNK4wasm7Literal6getf32Ev(i4);
  if (d5 == 0.0 & d5 == d2) {
   d5 = ((HEAPF32[tempDoublePtr >> 2] = d5, HEAP32[tempDoublePtr >> 2] | 0) | 0) < 0 ? d2 : d5;
   HEAP32[i14 >> 2] = 3;
   HEAPF32[i14 + 8 >> 2] = d5;
   break;
  }
  d3 = d5 < d2 ? d2 : d5;
  d16 = +Math_abs(+d5);
  i1 = (HEAPF32[tempDoublePtr >> 2] = d16, HEAP32[tempDoublePtr >> 2] | 0) >>> 0 > 2139095040;
  d16 = +Math_abs(+d2);
  i4 = (HEAPF32[tempDoublePtr >> 2] = d16, HEAP32[tempDoublePtr >> 2] | 0) >>> 0 > 2139095040;
  d16 = +Math_abs(+d3);
  if (!(i4 | (i1 | (HEAPF32[tempDoublePtr >> 2] = d16, HEAP32[tempDoublePtr >> 2] | 0) >>> 0 > 2139095040))) {
   HEAP32[i14 >> 2] = 3;
   HEAPF32[i14 + 8 >> 2] = d3;
   break;
  }
  if (!(i1 | i4)) {
   HEAP32[i6 >> 2] = 1;
   HEAP32[i6 + 8 >> 2] = 2143289344;
   __ZN4wasm7Literal9castToF32Ev(i14, i6);
   break;
  }
  HEAP32[i7 >> 2] = 3;
  HEAPF32[i7 + 8 >> 2] = i1 ? d5 : d2;
  __ZN4wasm7Literal9castToI32Ev(i10, i7);
  i1 = i10 + 8 | 0;
  if ((HEAP32[i10 >> 2] | 0) == 1) {
   HEAP32[i12 + 8 >> 2] = HEAP32[i1 >> 2] | 12582912;
   i1 = 1;
  } else {
   i11 = i1;
   i13 = HEAP32[i11 + 4 >> 2] | 0;
   i1 = i12 + 8 | 0;
   HEAP32[i1 >> 2] = HEAP32[i11 >> 2] | 12582912;
   HEAP32[i1 + 4 >> 2] = i13;
   i1 = 2;
  }
  HEAP32[i12 >> 2] = i1;
  __ZN4wasm7Literal9castToF32Ev(i14, i12);
 } else {
  d5 = +__ZNK4wasm7Literal6getf64Ev(i1);
  d2 = +__ZNK4wasm7Literal6getf64Ev(i4);
  if (d5 == 0.0 & d5 == d2) {
   HEAPF64[tempDoublePtr >> 3] = d5;
   d16 = (HEAP32[tempDoublePtr + 4 >> 2] | 0) < 0 ? d2 : d5;
   HEAP32[i14 >> 2] = 4;
   HEAPF64[i14 + 8 >> 3] = d16;
   break;
  }
  d3 = d5 < d2 ? d2 : d5;
  d16 = +Math_abs(+d5);
  HEAPF64[tempDoublePtr >> 3] = d16;
  i1 = HEAP32[tempDoublePtr + 4 >> 2] | 0;
  i1 = i1 >>> 0 > 2146435072 | (i1 | 0) == 2146435072 & (HEAP32[tempDoublePtr >> 2] | 0) >>> 0 > 0;
  d16 = +Math_abs(+d2);
  HEAPF64[tempDoublePtr >> 3] = d16;
  i4 = HEAP32[tempDoublePtr + 4 >> 2] | 0;
  i4 = i4 >>> 0 > 2146435072 | (i4 | 0) == 2146435072 & (HEAP32[tempDoublePtr >> 2] | 0) >>> 0 > 0;
  d16 = +Math_abs(+d3);
  HEAPF64[tempDoublePtr >> 3] = d16;
  i12 = HEAP32[tempDoublePtr + 4 >> 2] | 0;
  if (!(i4 | (i1 | (i12 >>> 0 > 2146435072 | (i12 | 0) == 2146435072 & (HEAP32[tempDoublePtr >> 2] | 0) >>> 0 > 0)))) {
   HEAP32[i14 >> 2] = 4;
   HEAPF64[i14 + 8 >> 3] = d3;
   break;
  }
  if (!(i1 | i4)) {
   HEAP32[i8 >> 2] = 2;
   i13 = i8 + 8 | 0;
   HEAP32[i13 >> 2] = 0;
   HEAP32[i13 + 4 >> 2] = 2146959360;
   __ZN4wasm7Literal9castToF64Ev(i14, i8);
   break;
  }
  HEAP32[i9 >> 2] = 4;
  HEAPF64[i9 + 8 >> 3] = i1 ? d5 : d2;
  __ZN4wasm7Literal9castToI64Ev(i11, i9);
  i1 = i11 + 8 | 0;
  if ((HEAP32[i11 >> 2] | 0) == 1) {
   HEAP32[i13 + 8 >> 2] = HEAP32[i1 >> 2];
   i1 = 1;
  } else {
   i11 = i1;
   i12 = HEAP32[i11 + 4 >> 2] | 524288;
   i1 = i13 + 8 | 0;
   HEAP32[i1 >> 2] = HEAP32[i11 >> 2];
   HEAP32[i1 + 4 >> 2] = i12;
   i1 = 2;
  }
  HEAP32[i13 >> 2] = i1;
  __ZN4wasm7Literal9castToF64Ev(i14, i13);
 } while (0);
 STACKTOP = i15;
 return;
}

function _fmod(d12, d1) {
 d12 = +d12;
 d1 = +d1;
 var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i13 = 0, i14 = 0, d15 = 0.0;
 HEAPF64[tempDoublePtr >> 3] = d12;
 i2 = HEAP32[tempDoublePtr >> 2] | 0;
 i9 = HEAP32[tempDoublePtr + 4 >> 2] | 0;
 HEAPF64[tempDoublePtr >> 3] = d1;
 i10 = HEAP32[tempDoublePtr >> 2] | 0;
 i11 = HEAP32[tempDoublePtr + 4 >> 2] | 0;
 i3 = _bitshift64Lshr(i2 | 0, i9 | 0, 52) | 0;
 i3 = i3 & 2047;
 i7 = _bitshift64Lshr(i10 | 0, i11 | 0, 52) | 0;
 i7 = i7 & 2047;
 i13 = i9 & -2147483648;
 i6 = _bitshift64Shl(i10 | 0, i11 | 0, 1) | 0;
 i8 = tempRet0;
 L1 : do if (!((i6 | 0) == 0 & (i8 | 0) == 0) ? (d15 = +Math_abs(+d1), HEAPF64[tempDoublePtr >> 3] = d15, i5 = HEAP32[tempDoublePtr + 4 >> 2] | 0, !(i5 >>> 0 > 2146435072 | (i5 | 0) == 2146435072 & (HEAP32[tempDoublePtr >> 2] | 0) >>> 0 > 0 | (i3 | 0) == 2047)) : 0) {
  i4 = _bitshift64Shl(i2 | 0, i9 | 0, 1) | 0;
  i5 = tempRet0;
  if (!(i5 >>> 0 > i8 >>> 0 | (i5 | 0) == (i8 | 0) & i4 >>> 0 > i6 >>> 0)) return +((i4 | 0) == (i6 | 0) & (i5 | 0) == (i8 | 0) ? d12 * 0.0 : d12);
  if (!i3) {
   i3 = _bitshift64Shl(i2 | 0, i9 | 0, 12) | 0;
   i4 = tempRet0;
   if ((i4 | 0) > -1 | (i4 | 0) == -1 & i3 >>> 0 > 4294967295) {
    i5 = i3;
    i3 = 0;
    do {
     i3 = i3 + -1 | 0;
     i5 = _bitshift64Shl(i5 | 0, i4 | 0, 1) | 0;
     i4 = tempRet0;
    } while ((i4 | 0) > -1 | (i4 | 0) == -1 & i5 >>> 0 > 4294967295);
   } else i3 = 0;
   i2 = _bitshift64Shl(i2 | 0, i9 | 0, 1 - i3 | 0) | 0;
   i4 = tempRet0;
  } else i4 = i9 & 1048575 | 1048576;
  if (!i7) {
   i5 = _bitshift64Shl(i10 | 0, i11 | 0, 12) | 0;
   i6 = tempRet0;
   if ((i6 | 0) > -1 | (i6 | 0) == -1 & i5 >>> 0 > 4294967295) {
    i7 = 0;
    do {
     i7 = i7 + -1 | 0;
     i5 = _bitshift64Shl(i5 | 0, i6 | 0, 1) | 0;
     i6 = tempRet0;
    } while ((i6 | 0) > -1 | (i6 | 0) == -1 & i5 >>> 0 > 4294967295);
   } else i7 = 0;
   i10 = _bitshift64Shl(i10 | 0, i11 | 0, 1 - i7 | 0) | 0;
   i9 = tempRet0;
  } else i9 = i11 & 1048575 | 1048576;
  i8 = _i64Subtract(i2 | 0, i4 | 0, i10 | 0, i9 | 0) | 0;
  i6 = tempRet0;
  i5 = (i6 | 0) > -1 | (i6 | 0) == -1 & i8 >>> 0 > 4294967295;
  L23 : do if ((i3 | 0) > (i7 | 0)) {
   while (1) {
    if (i5) if ((i2 | 0) == (i10 | 0) & (i4 | 0) == (i9 | 0)) break; else {
     i2 = i8;
     i4 = i6;
    }
    i2 = _bitshift64Shl(i2 | 0, i4 | 0, 1) | 0;
    i4 = tempRet0;
    i3 = i3 + -1 | 0;
    i8 = _i64Subtract(i2 | 0, i4 | 0, i10 | 0, i9 | 0) | 0;
    i6 = tempRet0;
    i5 = (i6 | 0) > -1 | (i6 | 0) == -1 & i8 >>> 0 > 4294967295;
    if ((i3 | 0) <= (i7 | 0)) break L23;
   }
   d1 = d12 * 0.0;
   break L1;
  } while (0);
  if (i5) if ((i2 | 0) == (i10 | 0) & (i4 | 0) == (i9 | 0)) {
   d1 = d12 * 0.0;
   break;
  } else {
   i4 = i6;
   i2 = i8;
  }
  if (i4 >>> 0 < 1048576 | (i4 | 0) == 1048576 & i2 >>> 0 < 0) do {
   i2 = _bitshift64Shl(i2 | 0, i4 | 0, 1) | 0;
   i4 = tempRet0;
   i3 = i3 + -1 | 0;
  } while (i4 >>> 0 < 1048576 | (i4 | 0) == 1048576 & i2 >>> 0 < 0);
  if ((i3 | 0) > 0) {
   i11 = _i64Add(i2 | 0, i4 | 0, 0, -1048576) | 0;
   i2 = tempRet0;
   i3 = _bitshift64Shl(i3 | 0, 0, 52) | 0;
   i2 = i2 | tempRet0;
   i3 = i11 | i3;
  } else {
   i3 = _bitshift64Lshr(i2 | 0, i4 | 0, 1 - i3 | 0) | 0;
   i2 = tempRet0;
  }
  HEAP32[tempDoublePtr >> 2] = i3;
  HEAP32[tempDoublePtr + 4 >> 2] = i2 | i13;
  d1 = +HEAPF64[tempDoublePtr >> 3];
 } else i14 = 3; while (0);
 if ((i14 | 0) == 3) {
  d1 = d12 * d1;
  d1 = d1 / d1;
 }
 return +d1;
}

function __ZNSt3__19__num_putIwE21__widen_and_group_intEPcS2_S2_PwRS3_S4_RKNS_6localeE(i2, i14, i13, i15, i16, i11, i1) {
 i2 = i2 | 0;
 i14 = i14 | 0;
 i13 = i13 | 0;
 i15 = i15 | 0;
 i16 = i16 | 0;
 i11 = i11 | 0;
 i1 = i1 | 0;
 var i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i12 = 0, i17 = 0, i18 = 0, i19 = 0;
 i17 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i12 = i17;
 i10 = __ZNKSt3__16locale9use_facetERNS0_2idE(i1, 38408) | 0;
 i5 = __ZNKSt3__16locale9use_facetERNS0_2idE(i1, 38416) | 0;
 FUNCTION_TABLE_vii[HEAP32[(HEAP32[i5 >> 2] | 0) + 20 >> 2] & 511](i12, i5);
 i8 = HEAP8[i12 >> 0] | 0;
 i9 = i12 + 4 | 0;
 L1 : do if (((i8 & 1) == 0 ? (i8 & 255) >>> 1 : HEAP32[i9 >> 2] | 0) | 0) {
  HEAP32[i11 >> 2] = i15;
  i1 = HEAP8[i2 >> 0] | 0;
  switch (i1 << 24 >> 24) {
  case 43:
  case 45:
   {
    i8 = FUNCTION_TABLE_iii[HEAP32[(HEAP32[i10 >> 2] | 0) + 44 >> 2] & 63](i10, i1) | 0;
    i3 = HEAP32[i11 >> 2] | 0;
    HEAP32[i11 >> 2] = i3 + 4;
    HEAP32[i3 >> 2] = i8;
    i3 = i2 + 1 | 0;
    break;
   }
  default:
   i3 = i2;
  }
  L7 : do if ((i13 - i3 | 0) > 1 ? (HEAP8[i3 >> 0] | 0) == 48 : 0) {
   i1 = i3 + 1 | 0;
   switch (HEAP8[i1 >> 0] | 0) {
   case 88:
   case 120:
    break;
   default:
    break L7;
   }
   i8 = FUNCTION_TABLE_iii[HEAP32[(HEAP32[i10 >> 2] | 0) + 44 >> 2] & 63](i10, 48) | 0;
   i7 = HEAP32[i11 >> 2] | 0;
   HEAP32[i11 >> 2] = i7 + 4;
   HEAP32[i7 >> 2] = i8;
   i7 = FUNCTION_TABLE_iii[HEAP32[(HEAP32[i10 >> 2] | 0) + 44 >> 2] & 63](i10, HEAP8[i1 >> 0] | 0) | 0;
   i8 = HEAP32[i11 >> 2] | 0;
   HEAP32[i11 >> 2] = i8 + 4;
   HEAP32[i8 >> 2] = i7;
   i3 = i3 + 2 | 0;
  } while (0);
  L12 : do if ((i3 | 0) != (i13 | 0)) {
   i1 = i13;
   i4 = i3;
   while (1) {
    i1 = i1 + -1 | 0;
    if (i4 >>> 0 >= i1 >>> 0) break L12;
    i8 = HEAP8[i4 >> 0] | 0;
    HEAP8[i4 >> 0] = HEAP8[i1 >> 0] | 0;
    HEAP8[i1 >> 0] = i8;
    i4 = i4 + 1 | 0;
   }
  } while (0);
  i5 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i5 >> 2] | 0) + 16 >> 2] & 127](i5) | 0;
  i6 = i12 + 8 | 0;
  i7 = i12 + 1 | 0;
  i1 = 0;
  i4 = 0;
  i8 = i3;
  while (1) {
   if (i8 >>> 0 >= i13 >>> 0) break;
   i18 = HEAP8[((HEAP8[i12 >> 0] & 1) == 0 ? i7 : HEAP32[i6 >> 2] | 0) + i4 >> 0] | 0;
   if (i18 << 24 >> 24 != 0 & (i1 | 0) == (i18 << 24 >> 24 | 0)) {
    i18 = HEAP32[i11 >> 2] | 0;
    HEAP32[i11 >> 2] = i18 + 4;
    HEAP32[i18 >> 2] = i5;
    i18 = HEAP8[i12 >> 0] | 0;
    i1 = 0;
    i4 = (i4 >>> 0 < (((i18 & 1) == 0 ? (i18 & 255) >>> 1 : HEAP32[i9 >> 2] | 0) + -1 | 0) >>> 0 & 1) + i4 | 0;
   }
   i19 = FUNCTION_TABLE_iii[HEAP32[(HEAP32[i10 >> 2] | 0) + 44 >> 2] & 63](i10, HEAP8[i8 >> 0] | 0) | 0;
   i18 = HEAP32[i11 >> 2] | 0;
   HEAP32[i11 >> 2] = i18 + 4;
   HEAP32[i18 >> 2] = i19;
   i1 = i1 + 1 | 0;
   i8 = i8 + 1 | 0;
  }
  i1 = i15 + (i3 - i2 << 2) | 0;
  i4 = HEAP32[i11 >> 2] | 0;
  if ((i1 | 0) != (i4 | 0)) {
   i3 = i4;
   while (1) {
    i3 = i3 + -4 | 0;
    if (i1 >>> 0 >= i3 >>> 0) {
     i1 = i4;
     break L1;
    }
    i19 = HEAP32[i1 >> 2] | 0;
    HEAP32[i1 >> 2] = HEAP32[i3 >> 2];
    HEAP32[i3 >> 2] = i19;
    i1 = i1 + 4 | 0;
   }
  }
 } else {
  FUNCTION_TABLE_iiiii[HEAP32[(HEAP32[i10 >> 2] | 0) + 48 >> 2] & 7](i10, i2, i13, i15) | 0;
  i1 = i15 + (i13 - i2 << 2) | 0;
  HEAP32[i11 >> 2] = i1;
 } while (0);
 HEAP32[i16 >> 2] = (i14 | 0) == (i13 | 0) ? i1 : i15 + (i14 - i2 << 2) | 0;
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i12);
 STACKTOP = i17;
 return;
}
function __ZNSt3__19__num_putIcE21__widen_and_group_intEPcS2_S2_S2_RS2_S3_RKNS_6localeE(i2, i14, i13, i15, i16, i11, i1) {
 i2 = i2 | 0;
 i14 = i14 | 0;
 i13 = i13 | 0;
 i15 = i15 | 0;
 i16 = i16 | 0;
 i11 = i11 | 0;
 i1 = i1 | 0;
 var i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i12 = 0, i17 = 0, i18 = 0, i19 = 0;
 i17 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i12 = i17;
 i10 = __ZNKSt3__16locale9use_facetERNS0_2idE(i1, 38376) | 0;
 i5 = __ZNKSt3__16locale9use_facetERNS0_2idE(i1, 38388) | 0;
 FUNCTION_TABLE_vii[HEAP32[(HEAP32[i5 >> 2] | 0) + 20 >> 2] & 511](i12, i5);
 i8 = HEAP8[i12 >> 0] | 0;
 i9 = i12 + 4 | 0;
 if (((i8 & 1) == 0 ? (i8 & 255) >>> 1 : HEAP32[i9 >> 2] | 0) | 0) {
  HEAP32[i11 >> 2] = i15;
  i1 = HEAP8[i2 >> 0] | 0;
  switch (i1 << 24 >> 24) {
  case 43:
  case 45:
   {
    i8 = FUNCTION_TABLE_iii[HEAP32[(HEAP32[i10 >> 2] | 0) + 28 >> 2] & 63](i10, i1) | 0;
    i3 = HEAP32[i11 >> 2] | 0;
    HEAP32[i11 >> 2] = i3 + 1;
    HEAP8[i3 >> 0] = i8;
    i3 = i2 + 1 | 0;
    break;
   }
  default:
   i3 = i2;
  }
  L7 : do if ((i13 - i3 | 0) > 1 ? (HEAP8[i3 >> 0] | 0) == 48 : 0) {
   i1 = i3 + 1 | 0;
   switch (HEAP8[i1 >> 0] | 0) {
   case 88:
   case 120:
    break;
   default:
    break L7;
   }
   i8 = FUNCTION_TABLE_iii[HEAP32[(HEAP32[i10 >> 2] | 0) + 28 >> 2] & 63](i10, 48) | 0;
   i7 = HEAP32[i11 >> 2] | 0;
   HEAP32[i11 >> 2] = i7 + 1;
   HEAP8[i7 >> 0] = i8;
   i7 = FUNCTION_TABLE_iii[HEAP32[(HEAP32[i10 >> 2] | 0) + 28 >> 2] & 63](i10, HEAP8[i1 >> 0] | 0) | 0;
   i8 = HEAP32[i11 >> 2] | 0;
   HEAP32[i11 >> 2] = i8 + 1;
   HEAP8[i8 >> 0] = i7;
   i3 = i3 + 2 | 0;
  } while (0);
  L12 : do if ((i3 | 0) != (i13 | 0)) {
   i1 = i13;
   i4 = i3;
   while (1) {
    i1 = i1 + -1 | 0;
    if (i4 >>> 0 >= i1 >>> 0) break L12;
    i8 = HEAP8[i4 >> 0] | 0;
    HEAP8[i4 >> 0] = HEAP8[i1 >> 0] | 0;
    HEAP8[i1 >> 0] = i8;
    i4 = i4 + 1 | 0;
   }
  } while (0);
  i5 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i5 >> 2] | 0) + 16 >> 2] & 127](i5) | 0;
  i6 = i12 + 8 | 0;
  i7 = i12 + 1 | 0;
  i1 = 0;
  i4 = 0;
  i8 = i3;
  while (1) {
   if (i8 >>> 0 >= i13 >>> 0) break;
   i18 = HEAP8[((HEAP8[i12 >> 0] & 1) == 0 ? i7 : HEAP32[i6 >> 2] | 0) + i4 >> 0] | 0;
   if (i18 << 24 >> 24 != 0 & (i1 | 0) == (i18 << 24 >> 24 | 0)) {
    i18 = HEAP32[i11 >> 2] | 0;
    HEAP32[i11 >> 2] = i18 + 1;
    HEAP8[i18 >> 0] = i5;
    i18 = HEAP8[i12 >> 0] | 0;
    i1 = 0;
    i4 = (i4 >>> 0 < (((i18 & 1) == 0 ? (i18 & 255) >>> 1 : HEAP32[i9 >> 2] | 0) + -1 | 0) >>> 0 & 1) + i4 | 0;
   }
   i19 = FUNCTION_TABLE_iii[HEAP32[(HEAP32[i10 >> 2] | 0) + 28 >> 2] & 63](i10, HEAP8[i8 >> 0] | 0) | 0;
   i18 = HEAP32[i11 >> 2] | 0;
   HEAP32[i11 >> 2] = i18 + 1;
   HEAP8[i18 >> 0] = i19;
   i1 = i1 + 1 | 0;
   i8 = i8 + 1 | 0;
  }
  i1 = i15 + (i3 - i2) | 0;
  i3 = HEAP32[i11 >> 2] | 0;
  if ((i1 | 0) != (i3 | 0)) {
   while (1) {
    i3 = i3 + -1 | 0;
    if (i1 >>> 0 >= i3 >>> 0) break;
    i19 = HEAP8[i1 >> 0] | 0;
    HEAP8[i1 >> 0] = HEAP8[i3 >> 0] | 0;
    HEAP8[i3 >> 0] = i19;
    i1 = i1 + 1 | 0;
   }
   i1 = HEAP32[i11 >> 2] | 0;
  }
 } else {
  FUNCTION_TABLE_iiiii[HEAP32[(HEAP32[i10 >> 2] | 0) + 32 >> 2] & 7](i10, i2, i13, i15) | 0;
  i1 = i15 + (i13 - i2) | 0;
  HEAP32[i11 >> 2] = i1;
 }
 HEAP32[i16 >> 2] = (i14 | 0) == (i13 | 0) ? i1 : i15 + (i14 - i2) | 0;
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i12);
 STACKTOP = i17;
 return;
}

function __ZNSt3__1L20utf8_to_utf16_lengthEPKhS1_jmNS_12codecvt_modeE(i12, i10, i11, i9, i1) {
 i12 = i12 | 0;
 i10 = i10 | 0;
 i11 = i11 | 0;
 i9 = i9 | 0;
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0;
 i8 = i10;
 if ((((i1 & 4 | 0) != 0 ? (i8 - i12 | 0) > 2 : 0) ? (HEAP8[i12 >> 0] | 0) == -17 : 0) ? (HEAP8[i12 + 1 >> 0] | 0) == -69 : 0) {
  i7 = (HEAP8[i12 + 2 >> 0] | 0) == -65 ? i12 + 3 | 0 : i12;
  i2 = 0;
 } else {
  i7 = i12;
  i2 = 0;
 }
 L6 : while (1) {
  if (!(i2 >>> 0 < i11 >>> 0 & i7 >>> 0 < i10 >>> 0)) {
   i1 = i7;
   i2 = 40;
   break;
  }
  i1 = HEAP8[i7 >> 0] | 0;
  i6 = i1 & 255;
  if (i6 >>> 0 > i9 >>> 0) {
   i1 = i7;
   i2 = 40;
   break;
  }
  do if (i1 << 24 >> 24 > -1) i1 = i7 + 1 | 0; else {
   if ((i1 & 255) < 194) {
    i1 = i7;
    i2 = 40;
    break L6;
   }
   if ((i1 & 255) < 224) {
    if ((i8 - i7 | 0) < 2) {
     i1 = i7;
     i2 = 40;
     break L6;
    }
    i1 = HEAPU8[i7 + 1 >> 0] | 0;
    if ((i1 & 192 | 0) != 128) {
     i1 = i7;
     i2 = 40;
     break L6;
    }
    if ((i1 & 63 | i6 << 6 & 1984) >>> 0 > i9 >>> 0) {
     i1 = i7;
     i2 = 40;
     break L6;
    } else {
     i1 = i7 + 2 | 0;
     break;
    }
   }
   if ((i1 & 255) < 240) {
    i1 = i7;
    if ((i8 - i1 | 0) < 3) {
     i1 = i7;
     i2 = 40;
     break L6;
    }
    i4 = HEAP8[i7 + 1 >> 0] | 0;
    i3 = HEAP8[i7 + 2 >> 0] | 0;
    switch (i6 | 0) {
    case 224:
     {
      if ((i4 & -32) << 24 >> 24 != -96) {
       i2 = 19;
       break L6;
      }
      break;
     }
    case 237:
     {
      if ((i4 & -32) << 24 >> 24 != -128) {
       i2 = 21;
       break L6;
      }
      break;
     }
    default:
     if ((i4 & -64) << 24 >> 24 != -128) {
      i2 = 23;
      break L6;
     }
    }
    i1 = i3 & 255;
    if ((i1 & 192 | 0) != 128) {
     i1 = i7;
     i2 = 40;
     break L6;
    }
    if (((i4 & 255) << 6 & 4032 | i6 << 12 & 61440 | i1 & 63) >>> 0 > i9 >>> 0) {
     i1 = i7;
     i2 = 40;
     break L6;
    } else {
     i1 = i7 + 3 | 0;
     break;
    }
   }
   if ((i1 & 255) >= 245) {
    i1 = i7;
    i2 = 40;
    break L6;
   }
   i1 = i7;
   if ((i11 - i2 | 0) >>> 0 < 2 | (i8 - i1 | 0) < 4) {
    i1 = i7;
    i2 = 40;
    break L6;
   }
   i5 = HEAP8[i7 + 1 >> 0] | 0;
   i3 = HEAP8[i7 + 2 >> 0] | 0;
   i4 = HEAP8[i7 + 3 >> 0] | 0;
   switch (i6 | 0) {
   case 240:
    {
     if ((i5 + 112 & 255) >= 48) {
      i2 = 30;
      break L6;
     }
     break;
    }
   case 244:
    {
     if ((i5 & -16) << 24 >> 24 != -128) {
      i2 = 32;
      break L6;
     }
     break;
    }
   default:
    if ((i5 & -64) << 24 >> 24 != -128) {
     i2 = 34;
     break L6;
    }
   }
   i3 = i3 & 255;
   if ((i3 & 192 | 0) != 128) {
    i1 = i7;
    i2 = 40;
    break L6;
   }
   i1 = i4 & 255;
   if ((i1 & 192 | 0) != 128) {
    i1 = i7;
    i2 = 40;
    break L6;
   }
   if (((i5 & 255) << 12 & 258048 | i6 << 18 & 1835008 | i3 << 6 & 4032 | i1 & 63) >>> 0 > i9 >>> 0) {
    i1 = i7;
    i2 = 40;
    break L6;
   }
   i1 = i7 + 4 | 0;
   i2 = i2 + 1 | 0;
  } while (0);
  i7 = i1;
  i2 = i2 + 1 | 0;
 }
 if ((i2 | 0) == 19) i1 = i1 - i12 | 0; else if ((i2 | 0) == 21) i1 = i1 - i12 | 0; else if ((i2 | 0) == 23) i1 = i1 - i12 | 0; else if ((i2 | 0) == 30) i1 = i1 - i12 | 0; else if ((i2 | 0) == 32) i1 = i1 - i12 | 0; else if ((i2 | 0) == 34) i1 = i1 - i12 | 0; else if ((i2 | 0) == 40) i1 = i1 - i12 | 0;
 return i1 | 0;
}

function __ZNSt3__1L19utf8_to_ucs4_lengthEPKhS1_jmNS_12codecvt_modeE(i12, i10, i11, i9, i1) {
 i12 = i12 | 0;
 i10 = i10 | 0;
 i11 = i11 | 0;
 i9 = i9 | 0;
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0;
 i8 = i10;
 if ((((i1 & 4 | 0) != 0 ? (i8 - i12 | 0) > 2 : 0) ? (HEAP8[i12 >> 0] | 0) == -17 : 0) ? (HEAP8[i12 + 1 >> 0] | 0) == -69 : 0) {
  i6 = (HEAP8[i12 + 2 >> 0] | 0) == -65 ? i12 + 3 | 0 : i12;
  i7 = 0;
 } else {
  i6 = i12;
  i7 = 0;
 }
 L6 : while (1) {
  if (!(i7 >>> 0 < i11 >>> 0 & i6 >>> 0 < i10 >>> 0)) {
   i1 = i6;
   i2 = 40;
   break;
  }
  i1 = HEAP8[i6 >> 0] | 0;
  i5 = i1 & 255;
  do if (i1 << 24 >> 24 <= -1) {
   if ((i1 & 255) < 194) {
    i1 = i6;
    i2 = 40;
    break L6;
   }
   if ((i1 & 255) < 224) {
    if ((i8 - i6 | 0) < 2) {
     i1 = i6;
     i2 = 40;
     break L6;
    }
    i1 = HEAPU8[i6 + 1 >> 0] | 0;
    if ((i1 & 192 | 0) != 128) {
     i1 = i6;
     i2 = 40;
     break L6;
    }
    if ((i1 & 63 | i5 << 6 & 1984) >>> 0 > i9 >>> 0) {
     i1 = i6;
     i2 = 40;
     break L6;
    }
    i1 = i6 + 2 | 0;
    break;
   }
   if ((i1 & 255) < 240) {
    i1 = i6;
    if ((i8 - i1 | 0) < 3) {
     i1 = i6;
     i2 = 40;
     break L6;
    }
    i3 = HEAP8[i6 + 1 >> 0] | 0;
    i2 = HEAP8[i6 + 2 >> 0] | 0;
    switch (i5 | 0) {
    case 224:
     {
      if ((i3 & -32) << 24 >> 24 != -96) {
       i2 = 20;
       break L6;
      }
      break;
     }
    case 237:
     {
      if ((i3 & -32) << 24 >> 24 != -128) {
       i2 = 22;
       break L6;
      }
      break;
     }
    default:
     if ((i3 & -64) << 24 >> 24 != -128) {
      i2 = 24;
      break L6;
     }
    }
    i1 = i2 & 255;
    if ((i1 & 192 | 0) != 128) {
     i1 = i6;
     i2 = 40;
     break L6;
    }
    if (((i3 & 255) << 6 & 4032 | i5 << 12 & 61440 | i1 & 63) >>> 0 > i9 >>> 0) {
     i1 = i6;
     i2 = 40;
     break L6;
    } else {
     i1 = i6 + 3 | 0;
     break;
    }
   }
   if ((i1 & 255) >= 245) {
    i1 = i6;
    i2 = 40;
    break L6;
   }
   i1 = i6;
   if ((i8 - i1 | 0) < 4) {
    i1 = i6;
    i2 = 40;
    break L6;
   }
   i4 = HEAP8[i6 + 1 >> 0] | 0;
   i2 = HEAP8[i6 + 2 >> 0] | 0;
   i3 = HEAP8[i6 + 3 >> 0] | 0;
   switch (i5 | 0) {
   case 240:
    {
     if ((i4 + 112 & 255) >= 48) {
      i2 = 31;
      break L6;
     }
     break;
    }
   case 244:
    {
     if ((i4 & -16) << 24 >> 24 != -128) {
      i2 = 33;
      break L6;
     }
     break;
    }
   default:
    if ((i4 & -64) << 24 >> 24 != -128) {
     i2 = 35;
     break L6;
    }
   }
   i2 = i2 & 255;
   if ((i2 & 192 | 0) != 128) {
    i1 = i6;
    i2 = 40;
    break L6;
   }
   i1 = i3 & 255;
   if ((i1 & 192 | 0) != 128) {
    i1 = i6;
    i2 = 40;
    break L6;
   }
   if (((i4 & 255) << 12 & 258048 | i5 << 18 & 1835008 | i2 << 6 & 4032 | i1 & 63) >>> 0 > i9 >>> 0) {
    i1 = i6;
    i2 = 40;
    break L6;
   } else i1 = i6 + 4 | 0;
  } else {
   if (i5 >>> 0 > i9 >>> 0) {
    i1 = i6;
    i2 = 40;
    break L6;
   }
   i1 = i6 + 1 | 0;
  } while (0);
  i6 = i1;
  i7 = i7 + 1 | 0;
 }
 if ((i2 | 0) == 20) i1 = i1 - i12 | 0; else if ((i2 | 0) == 22) i1 = i1 - i12 | 0; else if ((i2 | 0) == 24) i1 = i1 - i12 | 0; else if ((i2 | 0) == 31) i1 = i1 - i12 | 0; else if ((i2 | 0) == 33) i1 = i1 - i12 | 0; else if ((i2 | 0) == 35) i1 = i1 - i12 | 0; else if ((i2 | 0) == 40) i1 = i1 - i12 | 0;
 return i1 | 0;
}

function __ZNSt3__1L13utf16_to_utf8EPKtS1_RS1_PhS3_RS3_mNS_12codecvt_modeE(i1, i8, i9, i4, i2, i10, i7, i3) {
 i1 = i1 | 0;
 i8 = i8 | 0;
 i9 = i9 | 0;
 i4 = i4 | 0;
 i2 = i2 | 0;
 i10 = i10 | 0;
 i7 = i7 | 0;
 i3 = i3 | 0;
 var i5 = 0, i6 = 0;
 HEAP32[i9 >> 2] = i1;
 HEAP32[i10 >> 2] = i4;
 if (i3 & 2) if ((i2 - i4 | 0) < 3) i1 = 1; else {
  HEAP32[i10 >> 2] = i4 + 1;
  HEAP8[i4 >> 0] = -17;
  i5 = HEAP32[i10 >> 2] | 0;
  HEAP32[i10 >> 2] = i5 + 1;
  HEAP8[i5 >> 0] = -69;
  i5 = HEAP32[i10 >> 2] | 0;
  HEAP32[i10 >> 2] = i5 + 1;
  HEAP8[i5 >> 0] = -65;
  i5 = 4;
 } else i5 = 4;
 L4 : do if ((i5 | 0) == 4) {
  i6 = i8;
  i1 = HEAP32[i9 >> 2] | 0;
  while (1) {
   if (i1 >>> 0 >= i8 >>> 0) {
    i1 = 0;
    break L4;
   }
   i3 = HEAP16[i1 >> 1] | 0;
   i5 = i3 & 65535;
   if (i5 >>> 0 > i7 >>> 0) {
    i1 = 2;
    break L4;
   }
   do if ((i3 & 65535) < 128) {
    i1 = HEAP32[i10 >> 2] | 0;
    if ((i2 - i1 | 0) < 1) {
     i1 = 1;
     break L4;
    }
    HEAP32[i10 >> 2] = i1 + 1;
    HEAP8[i1 >> 0] = i3;
   } else {
    if ((i3 & 65535) < 2048) {
     i1 = HEAP32[i10 >> 2] | 0;
     if ((i2 - i1 | 0) < 2) {
      i1 = 1;
      break L4;
     }
     HEAP32[i10 >> 2] = i1 + 1;
     HEAP8[i1 >> 0] = i5 >>> 6 | 192;
     i4 = HEAP32[i10 >> 2] | 0;
     HEAP32[i10 >> 2] = i4 + 1;
     HEAP8[i4 >> 0] = i5 & 63 | 128;
     break;
    }
    if ((i3 & 65535) < 55296) {
     i1 = HEAP32[i10 >> 2] | 0;
     if ((i2 - i1 | 0) < 3) {
      i1 = 1;
      break L4;
     }
     HEAP32[i10 >> 2] = i1 + 1;
     HEAP8[i1 >> 0] = i5 >>> 12 | 224;
     i4 = HEAP32[i10 >> 2] | 0;
     HEAP32[i10 >> 2] = i4 + 1;
     HEAP8[i4 >> 0] = i5 >>> 6 & 63 | 128;
     i4 = HEAP32[i10 >> 2] | 0;
     HEAP32[i10 >> 2] = i4 + 1;
     HEAP8[i4 >> 0] = i5 & 63 | 128;
     break;
    }
    if ((i3 & 65535) >= 56320) {
     if ((i3 & 65535) < 57344) {
      i1 = 2;
      break L4;
     }
     i1 = HEAP32[i10 >> 2] | 0;
     if ((i2 - i1 | 0) < 3) {
      i1 = 1;
      break L4;
     }
     HEAP32[i10 >> 2] = i1 + 1;
     HEAP8[i1 >> 0] = i5 >>> 12 | 224;
     i4 = HEAP32[i10 >> 2] | 0;
     HEAP32[i10 >> 2] = i4 + 1;
     HEAP8[i4 >> 0] = i5 >>> 6 & 63 | 128;
     i4 = HEAP32[i10 >> 2] | 0;
     HEAP32[i10 >> 2] = i4 + 1;
     HEAP8[i4 >> 0] = i5 & 63 | 128;
     break;
    }
    if ((i6 - i1 | 0) < 4) {
     i1 = 1;
     break L4;
    }
    i1 = i1 + 2 | 0;
    i3 = HEAPU16[i1 >> 1] | 0;
    if ((i3 & 64512 | 0) != 56320) {
     i1 = 2;
     break L4;
    }
    if ((i2 - (HEAP32[i10 >> 2] | 0) | 0) < 4) {
     i1 = 1;
     break L4;
    }
    i4 = i5 & 960;
    if (((i4 << 10) + 65536 | i5 << 10 & 64512 | i3 & 1023) >>> 0 > i7 >>> 0) {
     i1 = 2;
     break L4;
    }
    HEAP32[i9 >> 2] = i1;
    i1 = (i4 >>> 6) + 1 | 0;
    i4 = HEAP32[i10 >> 2] | 0;
    HEAP32[i10 >> 2] = i4 + 1;
    HEAP8[i4 >> 0] = i1 >>> 2 | 240;
    i4 = HEAP32[i10 >> 2] | 0;
    HEAP32[i10 >> 2] = i4 + 1;
    HEAP8[i4 >> 0] = i5 >>> 2 & 15 | i1 << 4 & 48 | 128;
    i4 = HEAP32[i10 >> 2] | 0;
    HEAP32[i10 >> 2] = i4 + 1;
    HEAP8[i4 >> 0] = i5 << 4 & 48 | i3 >>> 6 & 15 | 128;
    i5 = HEAP32[i10 >> 2] | 0;
    HEAP32[i10 >> 2] = i5 + 1;
    HEAP8[i5 >> 0] = i3 & 63 | 128;
   } while (0);
   i1 = (HEAP32[i9 >> 2] | 0) + 2 | 0;
   HEAP32[i9 >> 2] = i1;
  }
 } while (0);
 return i1 | 0;
}

function __ZNKSt3__19money_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_getES4_S4_bRNS_8ios_baseERjRe(i1, i13, i14, i2, i3, i15, i12) {
 i1 = i1 | 0;
 i13 = i13 | 0;
 i14 = i14 | 0;
 i2 = i2 | 0;
 i3 = i3 | 0;
 i15 = i15 | 0;
 i12 = i12 | 0;
 var i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i16 = 0, i17 = 0, i18 = 0, i19 = 0, i20 = 0, i21 = 0;
 i20 = STACKTOP;
 STACKTOP = STACKTOP + 576 | 0;
 i7 = i20 + 424 | 0;
 i10 = i20;
 i4 = i20 + 24 | 0;
 i19 = i20 + 16 | 0;
 i8 = i20 + 12 | 0;
 i16 = i20 + 8 | 0;
 i5 = i20 + 564 | 0;
 i21 = i20 + 4 | 0;
 i9 = i20 + 464 | 0;
 HEAP32[i19 >> 2] = i4;
 i18 = i19 + 4 | 0;
 HEAP32[i18 >> 2] = 232;
 i1 = __ZNKSt3__18ios_base6getlocEv(i3) | 0;
 HEAP32[i16 >> 2] = i1;
 i1 = __ZNKSt3__16locale9use_facetERNS0_2idE(i16, 38408) | 0;
 HEAP8[i5 >> 0] = 0;
 HEAP32[i21 >> 2] = HEAP32[i14 >> 2];
 i3 = HEAP32[i3 + 4 >> 2] | 0;
 HEAP32[i7 >> 2] = HEAP32[i21 >> 2];
 if (__ZNSt3__19money_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE8__do_getERS4_S4_bRKNS_6localeEjRjRbRKNS_5ctypeIwEERNS_10unique_ptrIwPFvPvEEERPwSM_(i13, i7, i2, i16, i3, i15, i5, i1, i19, i8, i4 + 400 | 0) | 0) {
  FUNCTION_TABLE_iiiii[HEAP32[(HEAP32[i1 >> 2] | 0) + 48 >> 2] & 7](i1, 31837, 31847, i7) | 0;
  i2 = HEAP32[i8 >> 2] | 0;
  i4 = HEAP32[i19 >> 2] | 0;
  i1 = i2 - i4 | 0;
  if ((i1 | 0) > 392) {
   i1 = _malloc((i1 >> 2) + 2 | 0) | 0;
   if (!i1) __ZSt17__throw_bad_allocv(); else {
    i11 = i1;
    i6 = i1;
   }
  } else {
   i11 = 0;
   i6 = i9;
  }
  if (!(HEAP8[i5 >> 0] | 0)) i1 = i6; else {
   HEAP8[i6 >> 0] = 45;
   i1 = i6 + 1 | 0;
  }
  i5 = i7 + 40 | 0;
  i6 = i7;
  while (1) {
   if (i4 >>> 0 >= i2 >>> 0) break;
   i3 = HEAP32[i4 >> 2] | 0;
   i2 = i7;
   while (1) {
    if ((i2 | 0) == (i5 | 0)) {
     i2 = i5;
     break;
    }
    if ((HEAP32[i2 >> 2] | 0) == (i3 | 0)) break;
    i2 = i2 + 4 | 0;
   }
   HEAP8[i1 >> 0] = HEAP8[31837 + (i2 - i6 >> 2) >> 0] | 0;
   i2 = HEAP32[i8 >> 2] | 0;
   i1 = i1 + 1 | 0;
   i4 = i4 + 4 | 0;
  }
  HEAP8[i1 >> 0] = 0;
  HEAP32[i10 >> 2] = i12;
  _sscanf(i9, 31738, i10) | 0;
  if (i11 | 0) _free(i11);
 }
 i1 = HEAP32[i13 >> 2] | 0;
 do if (i1) {
  i2 = HEAP32[i1 + 12 >> 2] | 0;
  if ((i2 | 0) == (HEAP32[i1 + 16 >> 2] | 0)) i1 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 36 >> 2] & 127](i1) | 0; else i1 = HEAP32[i2 >> 2] | 0;
  if ((i1 | 0) == -1) {
   HEAP32[i13 >> 2] = 0;
   i3 = 1;
   break;
  } else {
   i3 = (HEAP32[i13 >> 2] | 0) == 0;
   break;
  }
 } else i3 = 1; while (0);
 i1 = HEAP32[i14 >> 2] | 0;
 do if (i1) {
  i2 = HEAP32[i1 + 12 >> 2] | 0;
  if ((i2 | 0) == (HEAP32[i1 + 16 >> 2] | 0)) i1 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 36 >> 2] & 127](i1) | 0; else i1 = HEAP32[i2 >> 2] | 0;
  if ((i1 | 0) != -1) if (i3) break; else {
   i17 = 32;
   break;
  } else {
   HEAP32[i14 >> 2] = 0;
   i17 = 30;
   break;
  }
 } else i17 = 30; while (0);
 if ((i17 | 0) == 30 ? i3 : 0) i17 = 32;
 if ((i17 | 0) == 32) HEAP32[i15 >> 2] = HEAP32[i15 >> 2] | 2;
 i2 = HEAP32[i13 >> 2] | 0;
 __ZNSt3__114__shared_count16__release_sharedEv(HEAP32[i16 >> 2] | 0) | 0;
 i1 = HEAP32[i19 >> 2] | 0;
 HEAP32[i19 >> 2] = 0;
 if (i1 | 0) FUNCTION_TABLE_vi[HEAP32[i18 >> 2] & 255](i1);
 STACKTOP = i20;
 return i2 | 0;
}

function __ZN10__cxxabiv112_GLOBAL__N_111string_pairaSEOS1_(i12, i10) {
 i12 = i12 | 0;
 i10 = i10 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i11 = 0;
 do if (HEAP8[i12 >> 0] & 1) {
  i9 = i12 + 8 | 0;
  HEAP8[HEAP32[i9 >> 2] >> 0] = 0;
  i7 = i12 + 4 | 0;
  HEAP32[i7 >> 2] = 0;
  i1 = HEAP8[i12 >> 0] | 0;
  if (!(i1 & 1)) i5 = 10; else {
   i5 = HEAP32[i12 >> 2] | 0;
   i1 = i5 & 255;
   i5 = (i5 & -2) + -1 | 0;
  }
  if (!(i1 & 1)) {
   i2 = (i1 & 255) >>> 1;
   if ((i1 & 255) < 22) {
    i4 = 10;
    i6 = i2;
    i8 = 1;
   } else {
    i4 = (i2 + 16 & 240) + -1 | 0;
    i6 = i2;
    i8 = 1;
   }
  } else {
   i4 = 10;
   i6 = 0;
   i8 = 0;
  }
  if ((i4 | 0) != (i5 | 0)) {
   if ((i4 | 0) == 10) {
    i3 = i12 + 1 | 0;
    i2 = HEAP32[i9 >> 2] | 0;
    if (i8) {
     _memcpy(i3 | 0, i2 | 0, ((i1 & 255) >>> 1) + 1 | 0) | 0;
     _free(i2);
    } else {
     HEAP8[i3 >> 0] = HEAP8[i2 >> 0] | 0;
     _free(i2);
    }
    HEAP8[i12 >> 0] = i6 << 1;
    break;
   }
   i2 = i4 + 1 | 0;
   i3 = _malloc(i2) | 0;
   if (!(i4 >>> 0 <= i5 >>> 0 & (i3 | 0) == 0)) {
    if (i8) _memcpy(i3 | 0, i12 + 1 | 0, ((i1 & 255) >>> 1) + 1 | 0) | 0; else {
     i11 = HEAP32[i9 >> 2] | 0;
     HEAP8[i3 >> 0] = HEAP8[i11 >> 0] | 0;
     _free(i11);
    }
    HEAP32[i12 >> 2] = i2 | 1;
    HEAP32[i7 >> 2] = i6;
    HEAP32[i9 >> 2] = i3;
   }
  }
 } else {
  HEAP8[i12 + 1 >> 0] = 0;
  HEAP8[i12 >> 0] = 0;
 } while (0);
 HEAP32[i12 >> 2] = HEAP32[i10 >> 2];
 HEAP32[i12 + 4 >> 2] = HEAP32[i10 + 4 >> 2];
 HEAP32[i12 + 8 >> 2] = HEAP32[i10 + 8 >> 2];
 i1 = 0;
 while (1) {
  if ((i1 | 0) == 3) break;
  HEAP32[i10 + (i1 << 2) >> 2] = 0;
  i1 = i1 + 1 | 0;
 }
 i11 = i12 + 12 | 0;
 i10 = i10 + 12 | 0;
 do if (HEAP8[i11 >> 0] & 1) {
  i9 = i12 + 20 | 0;
  HEAP8[HEAP32[i9 >> 2] >> 0] = 0;
  i6 = i12 + 16 | 0;
  HEAP32[i6 >> 2] = 0;
  i1 = HEAP8[i11 >> 0] | 0;
  if (!(i1 & 1)) i5 = 10; else {
   i5 = HEAP32[i11 >> 2] | 0;
   i1 = i5 & 255;
   i5 = (i5 & -2) + -1 | 0;
  }
  if (!(i1 & 1)) {
   i2 = (i1 & 255) >>> 1;
   if ((i1 & 255) < 22) {
    i4 = 10;
    i7 = i2;
    i8 = 1;
   } else {
    i4 = (i2 + 16 & 240) + -1 | 0;
    i7 = i2;
    i8 = 1;
   }
  } else {
   i4 = 10;
   i7 = 0;
   i8 = 0;
  }
  if ((i4 | 0) != (i5 | 0)) {
   if ((i4 | 0) == 10) {
    i3 = i11 + 1 | 0;
    i2 = HEAP32[i9 >> 2] | 0;
    if (i8) {
     _memcpy(i3 | 0, i2 | 0, ((i1 & 255) >>> 1) + 1 | 0) | 0;
     _free(i2);
    } else {
     HEAP8[i3 >> 0] = HEAP8[i2 >> 0] | 0;
     _free(i2);
    }
    HEAP8[i11 >> 0] = i7 << 1;
    break;
   }
   i2 = i4 + 1 | 0;
   i3 = _malloc(i2) | 0;
   if (!(i4 >>> 0 <= i5 >>> 0 & (i3 | 0) == 0)) {
    if (i8) _memcpy(i3 | 0, i11 + 1 | 0, ((i1 & 255) >>> 1) + 1 | 0) | 0; else {
     i12 = HEAP32[i9 >> 2] | 0;
     HEAP8[i3 >> 0] = HEAP8[i12 >> 0] | 0;
     _free(i12);
    }
    HEAP32[i11 >> 2] = i2 | 1;
    HEAP32[i6 >> 2] = i7;
    HEAP32[i9 >> 2] = i3;
   }
  }
 } else {
  HEAP8[i11 + 1 >> 0] = 0;
  HEAP8[i11 >> 0] = 0;
 } while (0);
 HEAP32[i11 >> 2] = HEAP32[i10 >> 2];
 HEAP32[i11 + 4 >> 2] = HEAP32[i10 + 4 >> 2];
 HEAP32[i11 + 8 >> 2] = HEAP32[i10 + 8 >> 2];
 i1 = 0;
 while (1) {
  if ((i1 | 0) == 3) break;
  HEAP32[i10 + (i1 << 2) >> 2] = 0;
  i1 = i1 + 1 | 0;
 }
 return;
}

function __ZNSt3__1L12utf8_to_ucs4EPKhS1_RS1_PjS3_RS3_mNS_12codecvt_modeE(i1, i10, i11, i3, i12, i13, i9, i2) {
 i1 = i1 | 0;
 i10 = i10 | 0;
 i11 = i11 | 0;
 i3 = i3 | 0;
 i12 = i12 | 0;
 i13 = i13 | 0;
 i9 = i9 | 0;
 i2 = i2 | 0;
 var i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i14 = 0;
 HEAP32[i11 >> 2] = i1;
 HEAP32[i13 >> 2] = i3;
 if (i2 & 4) {
  i1 = HEAP32[i11 >> 2] | 0;
  i2 = i10;
  if ((((i2 - i1 | 0) > 2 ? (HEAP8[i1 >> 0] | 0) == -17 : 0) ? (HEAP8[i1 + 1 >> 0] | 0) == -69 : 0) ? (HEAP8[i1 + 2 >> 0] | 0) == -65 : 0) HEAP32[i11 >> 2] = i1 + 3;
 } else i2 = i10;
 L9 : while (1) {
  i7 = HEAP32[i11 >> 2] | 0;
  i1 = i7 >>> 0 < i10 >>> 0;
  if (!i1) {
   i14 = 40;
   break;
  }
  i8 = HEAP32[i13 >> 2] | 0;
  if (i8 >>> 0 >= i12 >>> 0) {
   i14 = 40;
   break;
  }
  i1 = HEAP8[i7 >> 0] | 0;
  i6 = i1 & 255;
  do if (i1 << 24 >> 24 > -1) {
   if (i6 >>> 0 > i9 >>> 0) {
    i1 = 2;
    break L9;
   }
   HEAP32[i8 >> 2] = i6;
   HEAP32[i11 >> 2] = i7 + 1;
  } else {
   if ((i1 & 255) < 194) {
    i1 = 2;
    break L9;
   }
   if ((i1 & 255) < 224) {
    if ((i2 - i7 | 0) < 2) {
     i1 = 1;
     break L9;
    }
    i1 = HEAPU8[i7 + 1 >> 0] | 0;
    if ((i1 & 192 | 0) != 128) {
     i1 = 2;
     break L9;
    }
    i1 = i1 & 63 | i6 << 6 & 1984;
    if (i1 >>> 0 > i9 >>> 0) {
     i1 = 2;
     break L9;
    }
    HEAP32[i8 >> 2] = i1;
    HEAP32[i11 >> 2] = i7 + 2;
    break;
   }
   if ((i1 & 255) < 240) {
    if ((i2 - i7 | 0) < 3) {
     i1 = 1;
     break L9;
    }
    i3 = HEAP8[i7 + 1 >> 0] | 0;
    i1 = HEAP8[i7 + 2 >> 0] | 0;
    switch (i6 | 0) {
    case 224:
     {
      if ((i3 & -32) << 24 >> 24 != -96) {
       i1 = 2;
       break L9;
      }
      break;
     }
    case 237:
     {
      if ((i3 & -32) << 24 >> 24 != -128) {
       i1 = 2;
       break L9;
      }
      break;
     }
    default:
     if ((i3 & -64) << 24 >> 24 != -128) {
      i1 = 2;
      break L9;
     }
    }
    i1 = i1 & 255;
    if ((i1 & 192 | 0) != 128) {
     i1 = 2;
     break L9;
    }
    i1 = (i3 & 255) << 6 & 4032 | i6 << 12 & 61440 | i1 & 63;
    if (i1 >>> 0 > i9 >>> 0) {
     i1 = 2;
     break L9;
    }
    HEAP32[i8 >> 2] = i1;
    HEAP32[i11 >> 2] = i7 + 3;
    break;
   }
   if ((i1 & 255) >= 245) {
    i1 = 2;
    break L9;
   }
   if ((i2 - i7 | 0) < 4) {
    i1 = 1;
    break L9;
   }
   i5 = HEAP8[i7 + 1 >> 0] | 0;
   i1 = HEAP8[i7 + 2 >> 0] | 0;
   i3 = HEAP8[i7 + 3 >> 0] | 0;
   switch (i6 | 0) {
   case 240:
    {
     if ((i5 + 112 & 255) >= 48) {
      i1 = 2;
      break L9;
     }
     break;
    }
   case 244:
    {
     if ((i5 & -16) << 24 >> 24 != -128) {
      i1 = 2;
      break L9;
     }
     break;
    }
   default:
    if ((i5 & -64) << 24 >> 24 != -128) {
     i1 = 2;
     break L9;
    }
   }
   i4 = i1 & 255;
   if ((i4 & 192 | 0) != 128) {
    i1 = 2;
    break L9;
   }
   i1 = i3 & 255;
   if ((i1 & 192 | 0) != 128) {
    i1 = 2;
    break L9;
   }
   i1 = (i5 & 255) << 12 & 258048 | i6 << 18 & 1835008 | i4 << 6 & 4032 | i1 & 63;
   if (i1 >>> 0 > i9 >>> 0) {
    i1 = 2;
    break L9;
   }
   HEAP32[i8 >> 2] = i1;
   HEAP32[i11 >> 2] = i7 + 4;
  } while (0);
  HEAP32[i13 >> 2] = (HEAP32[i13 >> 2] | 0) + 4;
 }
 if ((i14 | 0) == 40) i1 = i1 & 1;
 return i1 | 0;
}

function __ZN4wasm22SExpressionWasmBuilder11parseMemoryERNS_7ElementE(i12, i11) {
 i12 = i12 | 0;
 i11 = i11 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i13 = 0;
 i13 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i10 = i13 + 8 | 0;
 i8 = i13 + 4 | 0;
 i9 = i13;
 HEAP8[i12 + 100 >> 0] = 1;
 i7 = __ZN4wasm7Element4listEv(i11) | 0;
 i7 = _atoi(__ZN4wasm7Element5c_strEv(HEAP32[(HEAP32[i7 >> 2] | 0) + 4 >> 2] | 0) | 0) | 0;
 HEAP32[(HEAP32[i12 >> 2] | 0) + 60 >> 2] = i7;
 L1 : do if ((__ZN4wasm7Element4sizeEv(i11) | 0) != 2) {
  i7 = __ZN4wasm7Element4listEv(i11) | 0;
  if (!(HEAP8[HEAP32[(HEAP32[i7 >> 2] | 0) + 8 >> 2] >> 0] | 0)) {
   i1 = __ZN4wasm7Element4listEv(i11) | 0;
   i1 = _atoi(__ZN4wasm7Element5c_strEv(HEAP32[(HEAP32[i1 >> 2] | 0) + 8 >> 2] | 0) | 0) | 0;
   HEAP32[(HEAP32[i12 >> 2] | 0) + 64 >> 2] = i1;
   i1 = 3;
  } else i1 = 2;
  while (1) {
   if (i1 >>> 0 >= (__ZN4wasm7Element4sizeEv(i11) | 0) >>> 0) break L1;
   i5 = __ZN4wasm7ElementixEj(i11, i1) | 0;
   i7 = __ZN4wasm7Element4listEv(i5) | 0;
   i7 = __ZN4wasm7Element3strEv(HEAP32[HEAP32[i7 >> 2] >> 2] | 0) | 0;
   if ((i7 | 0) != (HEAP32[9011] | 0)) break;
   i2 = __ZN4wasm7Element4listEv(i5) | 0;
   i2 = __ZN4wasm7Element5c_strEv(HEAP32[(HEAP32[i2 >> 2] | 0) + 8 >> 2] | 0) | 0;
   i4 = _malloc(_strlen(i2) | 0) | 0;
   HEAP32[i10 >> 2] = i4;
   L10 : while (1) {
    i3 = HEAP8[i2 >> 0] | 0;
    L12 : do switch (i3 << 24 >> 24) {
    case 0:
     {
      i2 = i4;
      break L10;
     }
    case 92:
     {
      i3 = HEAP8[i2 + 1 >> 0] | 0;
      switch (i3 << 24 >> 24) {
      case 34:
       {
        HEAP8[i4 >> 0] = 34;
        i2 = i2 + 2 | 0;
        break L12;
       }
      case 39:
       {
        HEAP8[i4 >> 0] = 39;
        i2 = i2 + 2 | 0;
        break L12;
       }
      case 92:
       {
        HEAP8[i4 >> 0] = 92;
        i2 = i2 + 2 | 0;
        break L12;
       }
      case 110:
       {
        HEAP8[i4 >> 0] = 10;
        i2 = i2 + 2 | 0;
        break L12;
       }
      case 116:
       {
        HEAP8[i4 >> 0] = 9;
        i2 = i2 + 2 | 0;
        break L12;
       }
      default:
       {
        i7 = ((__ZN4wasm5unhexEc(i3) | 0) << 4) + (__ZN4wasm5unhexEc(HEAP8[i2 + 2 >> 0] | 0) | 0) & 255;
        HEAP8[i4 >> 0] = i7;
        i2 = i2 + 3 | 0;
        break L12;
       }
      }
     }
    default:
     {
      HEAP8[i4 >> 0] = i3;
      i2 = i2 + 1 | 0;
     }
    } while (0);
    i4 = i4 + 1 | 0;
   }
   i7 = HEAP32[i12 >> 2] | 0;
   i5 = __ZN4wasm7Element4listEv(i5) | 0;
   i5 = _atoi(__ZN4wasm7Element5c_strEv(HEAP32[(HEAP32[i5 >> 2] | 0) + 4 >> 2] | 0) | 0) | 0;
   HEAP32[i8 >> 2] = i5;
   i6 = HEAP32[i10 >> 2] | 0;
   i2 = i2 - i6 | 0;
   HEAP32[i9 >> 2] = i2;
   i3 = i7 + 72 | 0;
   i4 = HEAP32[i3 >> 2] | 0;
   if (i4 >>> 0 < (HEAP32[i7 + 76 >> 2] | 0) >>> 0) {
    HEAP32[i4 >> 2] = i5;
    HEAP32[i4 + 4 >> 2] = i6;
    HEAP32[i4 + 8 >> 2] = i2;
    HEAP32[i3 >> 2] = i4 + 12;
   } else __ZNSt3__16vectorIN4wasm6Memory7SegmentENS_9allocatorIS3_EEE24__emplace_back_slow_pathIJiRPciEEEvDpOT_(i7 + 68 | 0, i8, i10, i9);
   i1 = i1 + 1 | 0;
  }
  ___assert_fail(15228, 14303, 1068, 15254);
 } while (0);
 STACKTOP = i13;
 return;
}

function __ZN4wasm22SExpressionWasmBuilder20preParseFunctionTypeERNS_7ElementE(i10, i5) {
 i10 = i10 | 0;
 i5 = i5 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i11 = 0;
 i11 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i6 = i11 + 12 | 0;
 i9 = i11 + 4 | 0;
 i7 = i11 + 8 | 0;
 i8 = i11;
 i1 = __ZN4wasm7Element4listEv(i5) | 0;
 i1 = __ZN4wasm7Element3strEv(HEAP32[HEAP32[i1 >> 2] >> 2] | 0) | 0;
 if ((i1 | 0) != (HEAP32[9016] | 0)) {
  if ((i1 | 0) == (HEAP32[9007] | 0)) {
   HEAP32[i9 >> 2] = 0;
   i4 = __ZN4wasm7Element4listEv(i5) | 0;
   if (!(HEAP8[HEAP32[(HEAP32[i4 >> 2] | 0) + 4 >> 2] >> 0] | 0)) {
    i4 = __ZN4wasm7Element4listEv(i5) | 0;
    i4 = __ZN4wasm7Element3strEv(HEAP32[(HEAP32[i4 >> 2] | 0) + 4 >> 2] | 0) | 0;
    HEAP32[i9 >> 2] = i4;
    i3 = 2;
   } else {
    i4 = __ZN4wasm4Name7fromIntEj(HEAP32[i10 + 44 >> 2] | 0) | 0;
    HEAP32[i9 >> 2] = i4;
    i3 = 1;
   }
   i1 = i10 + 36 | 0;
   i2 = HEAP32[i1 >> 2] | 0;
   if ((i2 | 0) == (HEAP32[i10 + 40 >> 2] | 0)) __ZNSt3__16vectorIN4wasm4NameENS_9allocatorIS2_EEE21__push_back_slow_pathIRKS2_EEvOT_(i10 + 32 | 0, i9); else {
    HEAP32[i2 >> 2] = i4;
    HEAP32[i1 >> 2] = (HEAP32[i1 >> 2] | 0) + 4;
   }
   i4 = i10 + 44 | 0;
   HEAP32[i4 >> 2] = (HEAP32[i4 >> 2] | 0) + 1;
   while (1) {
    if (i3 >>> 0 >= (__ZN4wasm7Element4sizeEv(i5) | 0) >>> 0) {
     i2 = 18;
     break;
    }
    i1 = __ZN4wasm7ElementixEj(i5, i3) | 0;
    i2 = __ZN4wasm7Element4listEv(i1) | 0;
    i2 = __ZN4wasm7Element3strEv(HEAP32[HEAP32[i2 >> 2] >> 2] | 0) | 0;
    if ((i2 | 0) == (HEAP32[9009] | 0)) {
     i2 = 13;
     break;
    }
    if ((i2 | 0) == (HEAP32[9016] | 0)) {
     i2 = 15;
     break;
    } else i3 = i3 + 1 | 0;
   }
   if ((i2 | 0) == 13) {
    i8 = __ZN4wasm7Element4listEv(i1) | 0;
    i8 = __ZN4wasm22SExpressionWasmBuilder16stringToWasmTypeEPKcbb(i10, __ZN4wasm7Element3strEv(HEAP32[(HEAP32[i8 >> 2] | 0) + 4 >> 2] | 0) | 0, 0, 0) | 0;
    i10 = __ZNSt3__13mapIN4wasm4NameENS1_8WasmTypeENS_4lessIS2_EENS_9allocatorINS_4pairIKS2_S3_EEEEEixERS8_(i10 + 52 | 0, i9) | 0;
    HEAP32[i10 >> 2] = i8;
   } else if ((i2 | 0) == 15) {
    i1 = __ZN4wasm7Element4listEv(i1) | 0;
    i1 = __ZN4wasm7Element3strEv(HEAP32[(HEAP32[i1 >> 2] | 0) + 4 >> 2] | 0) | 0;
    i5 = HEAP32[i10 >> 2] | 0;
    HEAP32[i7 >> 2] = i1;
    HEAP32[i6 >> 2] = HEAP32[i7 >> 2];
    if (!(__ZN4wasm6Module17checkFunctionTypeENS_4NameE(i5, i6) | 0)) __ZNKSt3__18functionIFvvEEclEv(i10 + 8 | 0);
    i7 = HEAP32[i10 >> 2] | 0;
    HEAP32[i8 >> 2] = i1;
    HEAP32[i6 >> 2] = HEAP32[i8 >> 2];
    i8 = (__ZN4wasm6Module15getFunctionTypeENS_4NameE(i7, i6) | 0) + 4 | 0;
    i8 = HEAP32[i8 >> 2] | 0;
    i10 = __ZNSt3__13mapIN4wasm4NameENS1_8WasmTypeENS_4lessIS2_EENS_9allocatorINS_4pairIKS2_S3_EEEEEixERS8_(i10 + 52 | 0, i9) | 0;
    HEAP32[i10 >> 2] = i8;
   } else if ((i2 | 0) == 18) {
    i10 = __ZNSt3__13mapIN4wasm4NameENS1_8WasmTypeENS_4lessIS2_EENS_9allocatorINS_4pairIKS2_S3_EEEEEixERS8_(i10 + 52 | 0, i9) | 0;
    HEAP32[i10 >> 2] = 0;
   }
  }
 } else __ZN4wasm22SExpressionWasmBuilder9parseTypeERNS_7ElementE(i10, i5);
 STACKTOP = i11;
 return;
}

function __ZNKSt3__19money_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_getES4_S4_bRNS_8ios_baseERjRe(i1, i13, i14, i2, i3, i15, i12) {
 i1 = i1 | 0;
 i13 = i13 | 0;
 i14 = i14 | 0;
 i2 = i2 | 0;
 i3 = i3 | 0;
 i15 = i15 | 0;
 i12 = i12 | 0;
 var i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i16 = 0, i17 = 0, i18 = 0, i19 = 0, i20 = 0, i21 = 0;
 i20 = STACKTOP;
 STACKTOP = STACKTOP + 240 | 0;
 i7 = i20 + 24 | 0;
 i10 = i20;
 i4 = i20 + 140 | 0;
 i19 = i20 + 16 | 0;
 i8 = i20 + 12 | 0;
 i16 = i20 + 8 | 0;
 i5 = i20 + 136 | 0;
 i21 = i20 + 4 | 0;
 i9 = i20 + 36 | 0;
 HEAP32[i19 >> 2] = i4;
 i18 = i19 + 4 | 0;
 HEAP32[i18 >> 2] = 232;
 i1 = __ZNKSt3__18ios_base6getlocEv(i3) | 0;
 HEAP32[i16 >> 2] = i1;
 i1 = __ZNKSt3__16locale9use_facetERNS0_2idE(i16, 38376) | 0;
 HEAP8[i5 >> 0] = 0;
 HEAP32[i21 >> 2] = HEAP32[i14 >> 2];
 i3 = HEAP32[i3 + 4 >> 2] | 0;
 HEAP32[i7 >> 2] = HEAP32[i21 >> 2];
 if (__ZNSt3__19money_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE8__do_getERS4_S4_bRKNS_6localeEjRjRbRKNS_5ctypeIcEERNS_10unique_ptrIcPFvPvEEERPcSM_(i13, i7, i2, i16, i3, i15, i5, i1, i19, i8, i4 + 100 | 0) | 0) {
  FUNCTION_TABLE_iiiii[HEAP32[(HEAP32[i1 >> 2] | 0) + 32 >> 2] & 7](i1, 31727, 31737, i7) | 0;
  i2 = HEAP32[i8 >> 2] | 0;
  i4 = HEAP32[i19 >> 2] | 0;
  i1 = i2 - i4 | 0;
  if ((i1 | 0) > 98) {
   i1 = _malloc(i1 + 2 | 0) | 0;
   if (!i1) __ZSt17__throw_bad_allocv(); else {
    i11 = i1;
    i6 = i1;
   }
  } else {
   i11 = 0;
   i6 = i9;
  }
  if (!(HEAP8[i5 >> 0] | 0)) i1 = i6; else {
   HEAP8[i6 >> 0] = 45;
   i1 = i6 + 1 | 0;
  }
  i5 = i7 + 10 | 0;
  i6 = i7;
  while (1) {
   if (i4 >>> 0 >= i2 >>> 0) break;
   i3 = HEAP8[i4 >> 0] | 0;
   i2 = i7;
   while (1) {
    if ((i2 | 0) == (i5 | 0)) {
     i2 = i5;
     break;
    }
    if ((HEAP8[i2 >> 0] | 0) == i3 << 24 >> 24) break;
    i2 = i2 + 1 | 0;
   }
   HEAP8[i1 >> 0] = HEAP8[31727 + (i2 - i6) >> 0] | 0;
   i2 = HEAP32[i8 >> 2] | 0;
   i1 = i1 + 1 | 0;
   i4 = i4 + 1 | 0;
  }
  HEAP8[i1 >> 0] = 0;
  HEAP32[i10 >> 2] = i12;
  _sscanf(i9, 31738, i10) | 0;
  if (i11 | 0) _free(i11);
 }
 i1 = HEAP32[i13 >> 2] | 0;
 do if (i1) {
  if ((HEAP32[i1 + 12 >> 2] | 0) == (HEAP32[i1 + 16 >> 2] | 0)) if ((FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 36 >> 2] & 127](i1) | 0) == -1) {
   HEAP32[i13 >> 2] = 0;
   i1 = 0;
   break;
  } else {
   i1 = HEAP32[i13 >> 2] | 0;
   break;
  }
 } else i1 = 0; while (0);
 i1 = (i1 | 0) == 0;
 i2 = HEAP32[i14 >> 2] | 0;
 do if (i2) {
  if ((HEAP32[i2 + 12 >> 2] | 0) == (HEAP32[i2 + 16 >> 2] | 0) ? (FUNCTION_TABLE_ii[HEAP32[(HEAP32[i2 >> 2] | 0) + 36 >> 2] & 127](i2) | 0) == -1 : 0) {
   HEAP32[i14 >> 2] = 0;
   i17 = 27;
   break;
  }
  if (!i1) i17 = 28;
 } else i17 = 27; while (0);
 if ((i17 | 0) == 27 ? i1 : 0) i17 = 28;
 if ((i17 | 0) == 28) HEAP32[i15 >> 2] = HEAP32[i15 >> 2] | 2;
 i2 = HEAP32[i13 >> 2] | 0;
 __ZNSt3__114__shared_count16__release_sharedEv(HEAP32[i16 >> 2] | 0) | 0;
 i1 = HEAP32[i19 >> 2] | 0;
 HEAP32[i19 >> 2] = 0;
 if (i1 | 0) FUNCTION_TABLE_vi[HEAP32[i18 >> 2] & 255](i1);
 STACKTOP = i20;
 return i2 | 0;
}

function __ZNSt3__115basic_stringbufIcNS_11char_traitsIcEENS_9allocatorIcEEE7seekoffExNS_8ios_base7seekdirEj(i11, i12, i5, i6, i4, i10) {
 i11 = i11 | 0;
 i12 = i12 | 0;
 i5 = i5 | 0;
 i6 = i6 | 0;
 i4 = i4 | 0;
 i10 = i10 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i7 = 0, i8 = 0, i9 = 0;
 i1 = i12 + 44 | 0;
 i2 = HEAP32[i1 >> 2] | 0;
 i8 = i12 + 24 | 0;
 i9 = HEAP32[i8 >> 2] | 0;
 i3 = i9;
 if (i2 >>> 0 < i9 >>> 0) {
  HEAP32[i1 >> 2] = i9;
  i7 = i3;
 } else i7 = i2;
 i1 = i10 & 24;
 L4 : do if (!i1) {
  i12 = i11;
  HEAP32[i12 >> 2] = 0;
  HEAP32[i12 + 4 >> 2] = 0;
  i12 = i11 + 8 | 0;
  HEAP32[i12 >> 2] = -1;
  HEAP32[i12 + 4 >> 2] = -1;
 } else {
  if ((i4 | 0) == 1 & (i1 | 0) == 24) {
   i12 = i11;
   HEAP32[i12 >> 2] = 0;
   HEAP32[i12 + 4 >> 2] = 0;
   i12 = i11 + 8 | 0;
   HEAP32[i12 >> 2] = -1;
   HEAP32[i12 + 4 >> 2] = -1;
   break;
  }
  L10 : do switch (i4 | 0) {
  case 0:
   {
    i1 = 0;
    i2 = 0;
    break;
   }
  case 1:
   if (!(i10 & 8)) {
    i2 = i3 - (HEAP32[i12 + 20 >> 2] | 0) | 0;
    i1 = i2;
    i2 = ((i2 | 0) < 0) << 31 >> 31;
    break L10;
   } else {
    i2 = (HEAP32[i12 + 12 >> 2] | 0) - (HEAP32[i12 + 8 >> 2] | 0) | 0;
    i1 = i2;
    i2 = ((i2 | 0) < 0) << 31 >> 31;
    break L10;
   }
  case 2:
   {
    i1 = i12 + 32 | 0;
    if (!(HEAP8[i1 >> 0] & 1)) i1 = i1 + 1 | 0; else i1 = HEAP32[i12 + 40 >> 2] | 0;
    i2 = i7 - i1 | 0;
    i1 = i2;
    i2 = ((i2 | 0) < 0) << 31 >> 31;
    break;
   }
  default:
   {
    i12 = i11;
    HEAP32[i12 >> 2] = 0;
    HEAP32[i12 + 4 >> 2] = 0;
    i12 = i11 + 8 | 0;
    HEAP32[i12 >> 2] = -1;
    HEAP32[i12 + 4 >> 2] = -1;
    break L4;
   }
  } while (0);
  i2 = _i64Add(i1 | 0, i2 | 0, i5 | 0, i6 | 0) | 0;
  i3 = tempRet0;
  if ((i3 | 0) >= 0) {
   i1 = i12 + 32 | 0;
   if (!(HEAP8[i1 >> 0] & 1)) i1 = i1 + 1 | 0; else i1 = HEAP32[i12 + 40 >> 2] | 0;
   i6 = i7 - i1 | 0;
   i5 = ((i6 | 0) < 0) << 31 >> 31;
   if (!((i5 | 0) < (i3 | 0) | (i5 | 0) == (i3 | 0) & i6 >>> 0 < i2 >>> 0)) {
    i1 = i10 & 8;
    if (!((i2 | 0) == 0 & (i3 | 0) == 0)) {
     if (i1 | 0 ? (HEAP32[i12 + 12 >> 2] | 0) == 0 : 0) {
      i12 = i11;
      HEAP32[i12 >> 2] = 0;
      HEAP32[i12 + 4 >> 2] = 0;
      i12 = i11 + 8 | 0;
      HEAP32[i12 >> 2] = -1;
      HEAP32[i12 + 4 >> 2] = -1;
      break;
     }
     if ((i10 & 16 | 0) != 0 & (i9 | 0) == 0) {
      i12 = i11;
      HEAP32[i12 >> 2] = 0;
      HEAP32[i12 + 4 >> 2] = 0;
      i12 = i11 + 8 | 0;
      HEAP32[i12 >> 2] = -1;
      HEAP32[i12 + 4 >> 2] = -1;
      break;
     }
    }
    if (i1 | 0) {
     HEAP32[i12 + 12 >> 2] = (HEAP32[i12 + 8 >> 2] | 0) + i2;
     HEAP32[i12 + 16 >> 2] = i7;
    }
    if (i10 & 16 | 0) HEAP32[i8 >> 2] = (HEAP32[i12 + 20 >> 2] | 0) + i2;
    i12 = i11;
    HEAP32[i12 >> 2] = 0;
    HEAP32[i12 + 4 >> 2] = 0;
    i12 = i11 + 8 | 0;
    HEAP32[i12 >> 2] = i2;
    HEAP32[i12 + 4 >> 2] = i3;
    break;
   }
  }
  i12 = i11;
  HEAP32[i12 >> 2] = 0;
  HEAP32[i12 + 4 >> 2] = 0;
  i12 = i11 + 8 | 0;
  HEAP32[i12 >> 2] = -1;
  HEAP32[i12 + 4 >> 2] = -1;
 } while (0);
 return;
}

function __ZNKSt3__19money_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_getES4_S4_bRNS_8ios_baseERjRNS_12basic_stringIwS3_NS_9allocatorIwEEEE(i1, i10, i11, i4, i2, i12, i6) {
 i1 = i1 | 0;
 i10 = i10 | 0;
 i11 = i11 | 0;
 i4 = i4 | 0;
 i2 = i2 | 0;
 i12 = i12 | 0;
 i6 = i6 | 0;
 var i3 = 0, i5 = 0, i7 = 0, i8 = 0, i9 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, i18 = 0, i19 = 0;
 i16 = STACKTOP;
 STACKTOP = STACKTOP + 432 | 0;
 i19 = i16 + 424 | 0;
 i17 = i16 + 24 | 0;
 i15 = i16 + 16 | 0;
 i5 = i16 + 8 | 0;
 i18 = i16 + 4 | 0;
 i3 = i16 + 428 | 0;
 i7 = i16;
 HEAP32[i15 >> 2] = i17;
 i14 = i15 + 4 | 0;
 HEAP32[i14 >> 2] = 232;
 i9 = __ZNKSt3__18ios_base6getlocEv(i2) | 0;
 HEAP32[i18 >> 2] = i9;
 i1 = __ZNKSt3__16locale9use_facetERNS0_2idE(i18, 38408) | 0;
 HEAP8[i3 >> 0] = 0;
 i8 = HEAP32[i11 >> 2] | 0;
 HEAP32[i7 >> 2] = i8;
 i2 = HEAP32[i2 + 4 >> 2] | 0;
 HEAP32[i19 >> 2] = HEAP32[i7 >> 2];
 i7 = i8;
 if (__ZNSt3__19money_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE8__do_getERS4_S4_bRKNS_6localeEjRjRbRKNS_5ctypeIwEERNS_10unique_ptrIwPFvPvEEERPwSM_(i10, i19, i4, i18, i2, i12, i3, i1, i15, i5, i17 + 400 | 0) | 0) {
  if (!(HEAP8[i6 >> 0] & 1)) HEAP8[i6 >> 0] = 0; else HEAP32[HEAP32[i6 + 8 >> 2] >> 2] = 0;
  HEAP32[i6 + 4 >> 2] = 0;
  if (HEAP8[i3 >> 0] | 0) __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE9push_backEw(i6, FUNCTION_TABLE_iii[HEAP32[(HEAP32[i1 >> 2] | 0) + 44 >> 2] & 63](i1, 45) | 0);
  i3 = FUNCTION_TABLE_iii[HEAP32[(HEAP32[i1 >> 2] | 0) + 44 >> 2] & 63](i1, 48) | 0;
  i4 = HEAP32[i5 >> 2] | 0;
  i2 = i4 + -4 | 0;
  i1 = HEAP32[i15 >> 2] | 0;
  while (1) {
   if (i1 >>> 0 >= i2 >>> 0) break;
   if ((HEAP32[i1 >> 2] | 0) != (i3 | 0)) break;
   i1 = i1 + 4 | 0;
  }
  __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6appendIPwEENS_9enable_ifIXsr21__is_forward_iteratorIT_EE5valueERS5_E4typeES9_S9_(i6, i1, i4) | 0;
 }
 i1 = HEAP32[i10 >> 2] | 0;
 do if (i1) {
  i2 = HEAP32[i1 + 12 >> 2] | 0;
  if ((i2 | 0) == (HEAP32[i1 + 16 >> 2] | 0)) i1 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 36 >> 2] & 127](i1) | 0; else i1 = HEAP32[i2 >> 2] | 0;
  if ((i1 | 0) == -1) {
   HEAP32[i10 >> 2] = 0;
   i2 = 1;
   break;
  } else {
   i2 = (HEAP32[i10 >> 2] | 0) == 0;
   break;
  }
 } else i2 = 1; while (0);
 do if (i8) {
  i1 = HEAP32[i7 + 12 >> 2] | 0;
  if ((i1 | 0) == (HEAP32[i7 + 16 >> 2] | 0)) i1 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i8 >> 2] | 0) + 36 >> 2] & 127](i7) | 0; else i1 = HEAP32[i1 >> 2] | 0;
  if ((i1 | 0) != -1) if (i2) break; else {
   i13 = 27;
   break;
  } else {
   HEAP32[i11 >> 2] = 0;
   i13 = 25;
   break;
  }
 } else i13 = 25; while (0);
 if ((i13 | 0) == 25 ? i2 : 0) i13 = 27;
 if ((i13 | 0) == 27) HEAP32[i12 >> 2] = HEAP32[i12 >> 2] | 2;
 i2 = HEAP32[i10 >> 2] | 0;
 __ZNSt3__114__shared_count16__release_sharedEv(i9) | 0;
 i1 = HEAP32[i15 >> 2] | 0;
 HEAP32[i15 >> 2] = 0;
 if (i1 | 0) FUNCTION_TABLE_vi[HEAP32[i14 >> 2] & 255](i1);
 STACKTOP = i16;
 return i2 | 0;
}

function __ZZN4wasm14ModuleInstance12callFunctionEN6cashew7IStringERNSt3__16vectorINS_7LiteralENS3_9allocatorIS5_EEEEEN16ExpressionRunner17visitCallIndirectEPNS_12CallIndirectE(i8, i12, i10) {
 i8 = i8 | 0;
 i12 = i12 | 0;
 i10 = i10 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i9 = 0, i11 = 0, i13 = 0;
 i13 = STACKTOP;
 STACKTOP = STACKTOP + 96 | 0;
 i4 = i13 + 84 | 0;
 i1 = i13 + 40 | 0;
 i5 = i13 + 80 | 0;
 i9 = i13 + 68 | 0;
 i11 = i13 + 16 | 0;
 i6 = i13;
 i7 = i13 + 64 | 0;
 __ZN4wasm7VisitorIZNS_14ModuleInstance12callFunctionEN6cashew7IStringERNSt3__16vectorINS_7LiteralENS4_9allocatorIS6_EEEEE16ExpressionRunnerNS_4FlowEE5visitEPNS_10ExpressionE(i1, i12, HEAP32[i10 + 24 >> 2] | 0);
 if (!(HEAP32[i1 + 16 >> 2] | 0)) {
  i3 = __ZNK4wasm7Literal6geti32Ev(i1) | 0;
  i2 = HEAP32[i12 >> 2] | 0;
  i1 = HEAP32[i2 >> 2] | 0;
  if (i3 >>> 0 < (HEAP32[i1 + 52 >> 2] | 0) - (HEAP32[i1 + 48 >> 2] | 0) >> 2 >>> 0) i2 = i1; else {
   i2 = HEAP32[i2 + 24 >> 2] | 0;
   FUNCTION_TABLE_vii[HEAP32[(HEAP32[i2 >> 2] | 0) + 20 >> 2] & 511](i2, 16164);
   i2 = HEAP32[HEAP32[i12 >> 2] >> 2] | 0;
  }
  i1 = HEAP32[(HEAP32[i2 + 48 >> 2] | 0) + (i3 << 2) >> 2] | 0;
  HEAP32[i5 >> 2] = i1;
  HEAP32[i4 >> 2] = HEAP32[i5 >> 2];
  i5 = (__ZN4wasm6Module11getFunctionENS_4NameE(i2, i4) | 0) + 32 | 0;
  i5 = HEAP32[i5 >> 2] | 0;
  if (i5 | 0 ? (i5 | 0) != (HEAP32[HEAP32[i10 + 20 >> 2] >> 2] | 0) : 0) {
   i5 = HEAP32[(HEAP32[i12 >> 2] | 0) + 24 >> 2] | 0;
   FUNCTION_TABLE_vii[HEAP32[(HEAP32[i5 >> 2] | 0) + 20 >> 2] & 511](i5, 16187);
  }
  HEAP32[i9 >> 2] = 0;
  HEAP32[i9 + 4 >> 2] = 0;
  HEAP32[i9 + 8 >> 2] = 0;
  __ZZN4wasm14ModuleInstance12callFunctionEN6cashew7IStringERNSt3__16vectorINS_7LiteralENS3_9allocatorIS5_EEEEEN16ExpressionRunner17generateArgumentsERKNS4_IPNS_10ExpressionENS6_ISC_EEEES9_(i11, i12, i10 + 8 | 0, i9);
  if (!(HEAP32[i11 + 16 >> 2] | 0)) {
   i12 = HEAP32[i12 >> 2] | 0;
   HEAP32[i7 >> 2] = i1;
   HEAP32[i4 >> 2] = HEAP32[i7 >> 2];
   __ZN4wasm14ModuleInstance12callFunctionEN6cashew7IStringERNSt3__16vectorINS_7LiteralENS3_9allocatorIS5_EEEE(i6, i12, i4, i9);
   HEAP32[i8 >> 2] = HEAP32[i6 >> 2];
   HEAP32[i8 + 4 >> 2] = HEAP32[i6 + 4 >> 2];
   HEAP32[i8 + 8 >> 2] = HEAP32[i6 + 8 >> 2];
   HEAP32[i8 + 12 >> 2] = HEAP32[i6 + 12 >> 2];
   HEAP32[i8 + 16 >> 2] = 0;
  } else {
   HEAP32[i8 >> 2] = HEAP32[i11 >> 2];
   HEAP32[i8 + 4 >> 2] = HEAP32[i11 + 4 >> 2];
   HEAP32[i8 + 8 >> 2] = HEAP32[i11 + 8 >> 2];
   HEAP32[i8 + 12 >> 2] = HEAP32[i11 + 12 >> 2];
   HEAP32[i8 + 16 >> 2] = HEAP32[i11 + 16 >> 2];
   HEAP32[i8 + 20 >> 2] = HEAP32[i11 + 20 >> 2];
  }
  __ZNSt3__113__vector_baseIN4wasm7LiteralENS_9allocatorIS2_EEED2Ev(i9);
 } else {
  HEAP32[i8 >> 2] = HEAP32[i1 >> 2];
  HEAP32[i8 + 4 >> 2] = HEAP32[i1 + 4 >> 2];
  HEAP32[i8 + 8 >> 2] = HEAP32[i1 + 8 >> 2];
  HEAP32[i8 + 12 >> 2] = HEAP32[i1 + 12 >> 2];
  HEAP32[i8 + 16 >> 2] = HEAP32[i1 + 16 >> 2];
  HEAP32[i8 + 20 >> 2] = HEAP32[i1 + 20 >> 2];
 }
 STACKTOP = i13;
 return;
}

function __ZNKSt3__19money_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_getES4_S4_bRNS_8ios_baseERjRNS_12basic_stringIcS3_NS_9allocatorIcEEEE(i1, i10, i11, i4, i2, i12, i6) {
 i1 = i1 | 0;
 i10 = i10 | 0;
 i11 = i11 | 0;
 i4 = i4 | 0;
 i2 = i2 | 0;
 i12 = i12 | 0;
 i6 = i6 | 0;
 var i3 = 0, i5 = 0, i7 = 0, i8 = 0, i9 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, i18 = 0, i19 = 0;
 i16 = STACKTOP;
 STACKTOP = STACKTOP + 144 | 0;
 i19 = i16 + 24 | 0;
 i17 = i16 + 32 | 0;
 i15 = i16 + 16 | 0;
 i5 = i16 + 8 | 0;
 i18 = i16 + 4 | 0;
 i3 = i16 + 28 | 0;
 i7 = i16;
 HEAP32[i15 >> 2] = i17;
 i14 = i15 + 4 | 0;
 HEAP32[i14 >> 2] = 232;
 i9 = __ZNKSt3__18ios_base6getlocEv(i2) | 0;
 HEAP32[i18 >> 2] = i9;
 i1 = __ZNKSt3__16locale9use_facetERNS0_2idE(i18, 38376) | 0;
 HEAP8[i3 >> 0] = 0;
 i8 = HEAP32[i11 >> 2] | 0;
 HEAP32[i7 >> 2] = i8;
 i2 = HEAP32[i2 + 4 >> 2] | 0;
 HEAP32[i19 >> 2] = HEAP32[i7 >> 2];
 i7 = i8;
 if (__ZNSt3__19money_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE8__do_getERS4_S4_bRKNS_6localeEjRjRbRKNS_5ctypeIcEERNS_10unique_ptrIcPFvPvEEERPcSM_(i10, i19, i4, i18, i2, i12, i3, i1, i15, i5, i17 + 100 | 0) | 0) {
  if (!(HEAP8[i6 >> 0] & 1)) {
   HEAP8[i6 + 1 >> 0] = 0;
   HEAP8[i6 >> 0] = 0;
  } else {
   HEAP8[HEAP32[i6 + 8 >> 2] >> 0] = 0;
   HEAP32[i6 + 4 >> 2] = 0;
  }
  if (HEAP8[i3 >> 0] | 0) __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE9push_backEc(i6, FUNCTION_TABLE_iii[HEAP32[(HEAP32[i1 >> 2] | 0) + 28 >> 2] & 63](i1, 45) | 0);
  i3 = FUNCTION_TABLE_iii[HEAP32[(HEAP32[i1 >> 2] | 0) + 28 >> 2] & 63](i1, 48) | 0;
  i4 = HEAP32[i5 >> 2] | 0;
  i2 = i4 + -1 | 0;
  i1 = HEAP32[i15 >> 2] | 0;
  while (1) {
   if (i1 >>> 0 >= i2 >>> 0) break;
   if ((HEAP8[i1 >> 0] | 0) != i3 << 24 >> 24) break;
   i1 = i1 + 1 | 0;
  }
  __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6appendIPcEENS_9enable_ifIXsr21__is_forward_iteratorIT_EE5valueERS5_E4typeES9_S9_(i6, i1, i4) | 0;
 }
 i1 = HEAP32[i10 >> 2] | 0;
 do if (i1) {
  if ((HEAP32[i1 + 12 >> 2] | 0) == (HEAP32[i1 + 16 >> 2] | 0)) if ((FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 36 >> 2] & 127](i1) | 0) == -1) {
   HEAP32[i10 >> 2] = 0;
   i1 = 0;
   break;
  } else {
   i1 = HEAP32[i10 >> 2] | 0;
   break;
  }
 } else i1 = 0; while (0);
 i1 = (i1 | 0) == 0;
 do if (i8) {
  if ((HEAP32[i7 + 12 >> 2] | 0) == (HEAP32[i7 + 16 >> 2] | 0) ? (FUNCTION_TABLE_ii[HEAP32[(HEAP32[i8 >> 2] | 0) + 36 >> 2] & 127](i7) | 0) == -1 : 0) {
   HEAP32[i11 >> 2] = 0;
   i13 = 22;
   break;
  }
  if (!i1) i13 = 23;
 } else i13 = 22; while (0);
 if ((i13 | 0) == 22 ? i1 : 0) i13 = 23;
 if ((i13 | 0) == 23) HEAP32[i12 >> 2] = HEAP32[i12 >> 2] | 2;
 i2 = HEAP32[i10 >> 2] | 0;
 __ZNSt3__114__shared_count16__release_sharedEv(i9) | 0;
 i1 = HEAP32[i15 >> 2] | 0;
 HEAP32[i15 >> 2] = 0;
 if (i1 | 0) FUNCTION_TABLE_vi[HEAP32[i14 >> 2] & 255](i1);
 STACKTOP = i16;
 return i2 | 0;
}

function __ZZN4wasm14ModuleInstance12callFunctionEN6cashew7IStringERNSt3__16vectorINS_7LiteralENS3_9allocatorIS5_EEEEEN16ExpressionRunner10visitBlockEPNS_5BlockE(i13, i15, i1) {
 i13 = i13 | 0;
 i15 = i15 | 0;
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i14 = 0, i16 = 0;
 i16 = STACKTOP;
 STACKTOP = STACKTOP + 48 | 0;
 i9 = i16 + 24 | 0;
 i14 = i16 + 28 | 0;
 i10 = i16;
 HEAP32[i9 >> 2] = i1;
 HEAP32[i14 >> 2] = 0;
 i11 = i14 + 4 | 0;
 HEAP32[i11 >> 2] = 0;
 HEAP32[i14 + 8 >> 2] = 0;
 i3 = i14 + 8 | 0;
 __ZNSt3__16vectorIPN4wasm5BlockENS_9allocatorIS3_EEE21__push_back_slow_pathIRKS3_EEvOT_(i14, i9);
 while (1) {
  i2 = HEAP32[i1 + 12 >> 2] | 0;
  if ((HEAP32[i1 + 16 >> 2] | 0) == (i2 | 0)) break;
  if (!(__ZN4wasm10Expression2isINS_5BlockEEEbv(HEAP32[i2 >> 2] | 0) | 0)) break;
  i1 = __ZN4wasm10Expression4castINS_5BlockEEEPT_v(HEAP32[HEAP32[i1 + 12 >> 2] >> 2] | 0) | 0;
  HEAP32[i9 >> 2] = i1;
  i2 = HEAP32[i11 >> 2] | 0;
  if ((i2 | 0) == (HEAP32[i3 >> 2] | 0)) {
   __ZNSt3__16vectorIPN4wasm5BlockENS_9allocatorIS3_EEE21__push_back_slow_pathIRKS3_EEvOT_(i14, i9);
   continue;
  } else {
   HEAP32[i2 >> 2] = i1;
   HEAP32[i11 >> 2] = (HEAP32[i11 >> 2] | 0) + 4;
   continue;
  }
 }
 HEAP32[i13 >> 2] = 0;
 i7 = i13 + 8 | 0;
 HEAP32[i7 >> 2] = 0;
 HEAP32[i7 + 4 >> 2] = 0;
 i7 = i13 + 16 | 0;
 HEAP32[i7 >> 2] = 0;
 i4 = HEAP32[i11 >> 2] | 0;
 i8 = HEAP32[i4 + -4 >> 2] | 0;
 i2 = i4;
 i1 = 0;
 while (1) {
  if ((i2 | 0) == (HEAP32[i14 >> 2] | 0)) break;
  i3 = i4 + -4 | 0;
  i6 = HEAP32[i3 >> 2] | 0;
  HEAP32[i9 >> 2] = i6;
  i2 = i4;
  while (1) {
   if ((i2 | 0) == (i3 | 0)) break;
   i5 = i2 + -4 | 0;
   HEAP32[i11 >> 2] = i5;
   i2 = i5;
  }
  L16 : do if (!i1) {
   i1 = i6 + 12 | 0;
   i2 = i6 + 16 | 0;
   i3 = (i6 | 0) != (i8 | 0);
   i5 = 0;
   while (1) {
    i4 = HEAP32[i1 >> 2] | 0;
    if (i5 >>> 0 >= (HEAP32[i2 >> 2] | 0) - i4 >> 2 >>> 0) {
     i1 = 0;
     break L16;
    }
    if (!((i5 | 0) == 0 & i3) ? (__ZN4wasm7VisitorIZNS_14ModuleInstance12callFunctionEN6cashew7IStringERNSt3__16vectorINS_7LiteralENS4_9allocatorIS6_EEEEE16ExpressionRunnerNS_4FlowEE5visitEPNS_10ExpressionE(i10, i15, HEAP32[i4 + (i5 << 2) >> 2] | 0), HEAP32[i13 >> 2] = HEAP32[i10 >> 2], HEAP32[i13 + 4 >> 2] = HEAP32[i10 + 4 >> 2], HEAP32[i13 + 8 >> 2] = HEAP32[i10 + 8 >> 2], HEAP32[i13 + 12 >> 2] = HEAP32[i10 + 12 >> 2], HEAP32[i13 + 16 >> 2] = HEAP32[i10 + 16 >> 2], i12 = HEAP32[i7 >> 2] | 0, i12 | 0) : 0) {
     i1 = i12;
     break;
    }
    i5 = i5 + 1 | 0;
   }
   if ((i1 | 0) == (HEAP32[i6 + 8 >> 2] | 0)) {
    HEAP32[i7 >> 2] = 0;
    i1 = 0;
   }
  } else if ((i1 | 0) == (HEAP32[i6 + 8 >> 2] | 0)) {
   HEAP32[i7 >> 2] = 0;
   i1 = 0;
  } while (0);
  i4 = HEAP32[i11 >> 2] | 0;
  i2 = i4;
 }
 __ZNSt3__113__vector_baseIPN4wasm5BlockENS_9allocatorIS3_EEED2Ev(i14);
 STACKTOP = i16;
 return;
}

function __ZN4wasm6WalkerINS_14PostEmscriptenENS_7VisitorIS1_vEEE9startWalkEPNS_6ModuleE(i1, i2) {
 i1 = i1 | 0;
 i2 = i2 | 0;
 var i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, i18 = 0, i19 = 0, i20 = 0;
 i20 = STACKTOP;
 STACKTOP = STACKTOP + 64 | 0;
 i14 = i20 + 48 | 0;
 i18 = i20 + 52 | 0;
 i17 = i20 + 36 | 0;
 i19 = i20 + 32 | 0;
 i15 = i20 + 28 | 0;
 i16 = i20;
 HEAP32[i14 >> 2] = i2;
 i13 = i1 + 20 | 0;
 HEAP32[i13 >> 2] = i2;
 i9 = __ZN4wasm10ThreadPool4sizeEv(__ZN4wasm10ThreadPool3getEv() | 0) | 0;
 HEAP32[i18 >> 2] = 0;
 i10 = i18 + 4 | 0;
 HEAP32[i10 >> 2] = 0;
 HEAP32[i18 + 8 >> 2] = 0;
 HEAP32[i17 >> 2] = 0;
 i11 = i17 + 4 | 0;
 HEAP32[i11 >> 2] = 0;
 HEAP32[i17 + 8 >> 2] = 0;
 HEAP32[i19 >> 2] = 0;
 i4 = HEAP32[i14 >> 2] | 0;
 i4 = (HEAP32[i4 + 40 >> 2] | 0) - (HEAP32[i4 + 36 >> 2] | 0) >> 2;
 i5 = i18 + 8 | 0;
 i6 = HEAP32[i20 + 24 >> 2] | 0;
 i7 = i16 + 16 | 0;
 i8 = i17 + 8 | 0;
 i12 = 0;
 while (1) {
  if (i12 >>> 0 >= i9 >>> 0) break;
  i3 = __Znwj(40) | 0;
  i1 = i3;
  i2 = i1 + 40 | 0;
  do {
   HEAP32[i1 >> 2] = 0;
   i1 = i1 + 4 | 0;
  } while ((i1 | 0) < (i2 | 0));
  __ZN4wasm10WalkerPassINS_10PostWalkerINS_14PostEmscriptenENS_7VisitorIS2_vEEEEEC2Ev(i3);
  HEAP32[i3 >> 2] = 4228;
  HEAP32[i3 + 36 >> 2] = HEAP32[i13 >> 2];
  i1 = i3;
  HEAP32[i15 >> 2] = i1;
  i2 = HEAP32[i10 >> 2] | 0;
  if (i2 >>> 0 >= (HEAP32[i5 >> 2] | 0) >>> 0) {
   __ZNSt3__16vectorINS_10unique_ptrIN4wasm14PostEmscriptenENS_14default_deleteIS3_EEEENS_9allocatorIS6_EEE21__push_back_slow_pathIS6_EEvOT_(i18, i15);
   i1 = HEAP32[i15 >> 2] | 0;
   HEAP32[i15 >> 2] = 0;
   if (i1 | 0) FUNCTION_TABLE_vi[HEAP32[(HEAP32[i1 >> 2] | 0) + 4 >> 2] & 255](i1);
  } else {
   HEAP32[i2 >> 2] = i1;
   HEAP32[i10 >> 2] = i2 + 4;
   HEAP32[i15 >> 2] = 0;
  }
  i1 = __Znwj(24) | 0;
  HEAP32[i1 >> 2] = 4256;
  HEAP32[i1 + 4 >> 2] = i3;
  HEAP32[i1 + 8 >> 2] = i19;
  HEAP32[i1 + 12 >> 2] = i4;
  HEAP32[i1 + 16 >> 2] = i14;
  HEAP32[i1 + 20 >> 2] = i6;
  HEAP32[i7 >> 2] = i1;
  i1 = HEAP32[i11 >> 2] | 0;
  if (i1 >>> 0 < (HEAP32[i8 >> 2] | 0) >>> 0) {
   __ZNSt3__18functionIFN4wasm15ThreadWorkStateEvEEC2EOS4_(i1, i16);
   HEAP32[i11 >> 2] = (HEAP32[i11 >> 2] | 0) + 24;
  } else __ZNSt3__16vectorINS_8functionIFN4wasm15ThreadWorkStateEvEEENS_9allocatorIS5_EEE21__push_back_slow_pathIS5_EEvOT_(i17, i16);
  __ZNSt3__18functionIFN4wasm15ThreadWorkStateEvEED2Ev(i16);
  i12 = i12 + 1 | 0;
 }
 __ZN4wasm10ThreadPool4workERNSt3__16vectorINS1_8functionIFNS_15ThreadWorkStateEvEEENS1_9allocatorIS6_EEEE(__ZN4wasm10ThreadPool3getEv() | 0, i17);
 __ZNSt3__113__vector_baseINS_8functionIFN4wasm15ThreadWorkStateEvEEENS_9allocatorIS5_EEED2Ev(i17);
 __ZNSt3__113__vector_baseINS_10unique_ptrIN4wasm14PostEmscriptenENS_14default_deleteIS3_EEEENS_9allocatorIS6_EEED2Ev(i18);
 STACKTOP = i20;
 return;
}

function __ZN4wasm6WalkerINS_11MergeBlocksENS_7VisitorIS1_vEEE9startWalkEPNS_6ModuleE(i1, i2) {
 i1 = i1 | 0;
 i2 = i2 | 0;
 var i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, i18 = 0, i19 = 0, i20 = 0;
 i20 = STACKTOP;
 STACKTOP = STACKTOP + 64 | 0;
 i14 = i20 + 48 | 0;
 i18 = i20 + 52 | 0;
 i17 = i20 + 36 | 0;
 i19 = i20 + 32 | 0;
 i15 = i20 + 28 | 0;
 i16 = i20;
 HEAP32[i14 >> 2] = i2;
 i13 = i1 + 20 | 0;
 HEAP32[i13 >> 2] = i2;
 i9 = __ZN4wasm10ThreadPool4sizeEv(__ZN4wasm10ThreadPool3getEv() | 0) | 0;
 HEAP32[i18 >> 2] = 0;
 i10 = i18 + 4 | 0;
 HEAP32[i10 >> 2] = 0;
 HEAP32[i18 + 8 >> 2] = 0;
 HEAP32[i17 >> 2] = 0;
 i11 = i17 + 4 | 0;
 HEAP32[i11 >> 2] = 0;
 HEAP32[i17 + 8 >> 2] = 0;
 HEAP32[i19 >> 2] = 0;
 i4 = HEAP32[i14 >> 2] | 0;
 i4 = (HEAP32[i4 + 40 >> 2] | 0) - (HEAP32[i4 + 36 >> 2] | 0) >> 2;
 i5 = i18 + 8 | 0;
 i6 = HEAP32[i20 + 24 >> 2] | 0;
 i7 = i16 + 16 | 0;
 i8 = i17 + 8 | 0;
 i12 = 0;
 while (1) {
  if (i12 >>> 0 >= i9 >>> 0) break;
  i3 = __Znwj(40) | 0;
  i1 = i3;
  i2 = i1 + 40 | 0;
  do {
   HEAP32[i1 >> 2] = 0;
   i1 = i1 + 4 | 0;
  } while ((i1 | 0) < (i2 | 0));
  __ZN4wasm10WalkerPassINS_10PostWalkerINS_11MergeBlocksENS_7VisitorIS2_vEEEEEC2Ev(i3);
  HEAP32[i3 >> 2] = 3580;
  HEAP32[i3 + 36 >> 2] = HEAP32[i13 >> 2];
  i1 = i3;
  HEAP32[i15 >> 2] = i1;
  i2 = HEAP32[i10 >> 2] | 0;
  if (i2 >>> 0 >= (HEAP32[i5 >> 2] | 0) >>> 0) {
   __ZNSt3__16vectorINS_10unique_ptrIN4wasm11MergeBlocksENS_14default_deleteIS3_EEEENS_9allocatorIS6_EEE21__push_back_slow_pathIS6_EEvOT_(i18, i15);
   i1 = HEAP32[i15 >> 2] | 0;
   HEAP32[i15 >> 2] = 0;
   if (i1 | 0) FUNCTION_TABLE_vi[HEAP32[(HEAP32[i1 >> 2] | 0) + 4 >> 2] & 255](i1);
  } else {
   HEAP32[i2 >> 2] = i1;
   HEAP32[i10 >> 2] = i2 + 4;
   HEAP32[i15 >> 2] = 0;
  }
  i1 = __Znwj(24) | 0;
  HEAP32[i1 >> 2] = 3608;
  HEAP32[i1 + 4 >> 2] = i3;
  HEAP32[i1 + 8 >> 2] = i19;
  HEAP32[i1 + 12 >> 2] = i4;
  HEAP32[i1 + 16 >> 2] = i14;
  HEAP32[i1 + 20 >> 2] = i6;
  HEAP32[i7 >> 2] = i1;
  i1 = HEAP32[i11 >> 2] | 0;
  if (i1 >>> 0 < (HEAP32[i8 >> 2] | 0) >>> 0) {
   __ZNSt3__18functionIFN4wasm15ThreadWorkStateEvEEC2EOS4_(i1, i16);
   HEAP32[i11 >> 2] = (HEAP32[i11 >> 2] | 0) + 24;
  } else __ZNSt3__16vectorINS_8functionIFN4wasm15ThreadWorkStateEvEEENS_9allocatorIS5_EEE21__push_back_slow_pathIS5_EEvOT_(i17, i16);
  __ZNSt3__18functionIFN4wasm15ThreadWorkStateEvEED2Ev(i16);
  i12 = i12 + 1 | 0;
 }
 __ZN4wasm10ThreadPool4workERNSt3__16vectorINS1_8functionIFNS_15ThreadWorkStateEvEEENS1_9allocatorIS6_EEEE(__ZN4wasm10ThreadPool3getEv() | 0, i17);
 __ZNSt3__113__vector_baseINS_8functionIFN4wasm15ThreadWorkStateEvEEENS_9allocatorIS5_EEED2Ev(i17);
 __ZNSt3__113__vector_baseINS_10unique_ptrIN4wasm11MergeBlocksENS_14default_deleteIS3_EEEENS_9allocatorIS6_EEED2Ev(i18);
 STACKTOP = i20;
 return;
}

function __ZNKSt3__120__time_get_c_storageIcE8__monthsEv(i1) {
 i1 = i1 | 0;
 var i2 = 0;
 if ((HEAP8[35264] | 0) == 0 ? ___cxa_guard_acquire(35264) | 0 : 0) {
  if ((HEAP8[35272] | 0) == 0 ? ___cxa_guard_acquire(35272) | 0 : 0) {
   i1 = 38620;
   do {
    i2 = 0;
    while (1) {
     if ((i2 | 0) == 3) break;
     HEAP32[i1 + (i2 << 2) >> 2] = 0;
     i2 = i2 + 1 | 0;
    }
    i1 = i1 + 12 | 0;
   } while ((i1 | 0) != 38908);
   ___cxa_atexit(225, 0, ___dso_handle | 0) | 0;
  }
  __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6assignEPKc(38620, 31050) | 0;
  __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6assignEPKc(38632, 31058) | 0;
  __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6assignEPKc(38644, 31067) | 0;
  __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6assignEPKc(38656, 31073) | 0;
  __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6assignEPKc(38668, 31079) | 0;
  __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6assignEPKc(38680, 31083) | 0;
  __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6assignEPKc(38692, 31088) | 0;
  __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6assignEPKc(38704, 31093) | 0;
  __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6assignEPKc(38716, 31100) | 0;
  __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6assignEPKc(38728, 31110) | 0;
  __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6assignEPKc(38740, 31118) | 0;
  __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6assignEPKc(38752, 31127) | 0;
  __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6assignEPKc(38764, 31136) | 0;
  __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6assignEPKc(38776, 31140) | 0;
  __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6assignEPKc(38788, 31144) | 0;
  __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6assignEPKc(38800, 31148) | 0;
  __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6assignEPKc(38812, 31079) | 0;
  __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6assignEPKc(38824, 31152) | 0;
  __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6assignEPKc(38836, 31156) | 0;
  __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6assignEPKc(38848, 31160) | 0;
  __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6assignEPKc(38860, 31164) | 0;
  __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6assignEPKc(38872, 31168) | 0;
  __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6assignEPKc(38884, 31172) | 0;
  __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6assignEPKc(38896, 31176) | 0;
  HEAP32[9727] = 38620;
 }
 return HEAP32[9727] | 0;
}

function __ZNKSt3__120__time_get_c_storageIwE8__monthsEv(i1) {
 i1 = i1 | 0;
 var i2 = 0;
 if ((HEAP8[35344] | 0) == 0 ? ___cxa_guard_acquire(35344) | 0 : 0) {
  if ((HEAP8[35352] | 0) == 0 ? ___cxa_guard_acquire(35352) | 0 : 0) {
   i1 = 39432;
   do {
    i2 = 0;
    while (1) {
     if ((i2 | 0) == 3) break;
     HEAP32[i1 + (i2 << 2) >> 2] = 0;
     i2 = i2 + 1 | 0;
    }
    i1 = i1 + 12 | 0;
   } while ((i1 | 0) != 39720);
   ___cxa_atexit(229, 0, ___dso_handle | 0) | 0;
  }
  __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6assignEPKw(39432, 10560) | 0;
  __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6assignEPKw(39444, 10592) | 0;
  __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6assignEPKw(39456, 10628) | 0;
  __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6assignEPKw(39468, 10652) | 0;
  __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6assignEPKw(39480, 10676) | 0;
  __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6assignEPKw(39492, 10692) | 0;
  __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6assignEPKw(39504, 10712) | 0;
  __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6assignEPKw(39516, 10732) | 0;
  __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6assignEPKw(39528, 10760) | 0;
  __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6assignEPKw(39540, 10800) | 0;
  __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6assignEPKw(39552, 10832) | 0;
  __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6assignEPKw(39564, 10868) | 0;
  __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6assignEPKw(39576, 10904) | 0;
  __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6assignEPKw(39588, 10920) | 0;
  __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6assignEPKw(39600, 10936) | 0;
  __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6assignEPKw(39612, 10952) | 0;
  __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6assignEPKw(39624, 10676) | 0;
  __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6assignEPKw(39636, 10968) | 0;
  __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6assignEPKw(39648, 10984) | 0;
  __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6assignEPKw(39660, 11e3) | 0;
  __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6assignEPKw(39672, 11016) | 0;
  __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6assignEPKw(39684, 11032) | 0;
  __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6assignEPKw(39696, 11048) | 0;
  __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6assignEPKw(39708, 11064) | 0;
  HEAP32[9930] = 39432;
 }
 return HEAP32[9930] | 0;
}

function __ZN4wasm6WalkerINS_6VacuumENS_7VisitorIS1_vEEE9startWalkEPNS_6ModuleE(i1, i2) {
 i1 = i1 | 0;
 i2 = i2 | 0;
 var i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, i18 = 0, i19 = 0, i20 = 0;
 i20 = STACKTOP;
 STACKTOP = STACKTOP + 64 | 0;
 i14 = i20 + 48 | 0;
 i18 = i20 + 52 | 0;
 i17 = i20 + 36 | 0;
 i19 = i20 + 32 | 0;
 i15 = i20 + 28 | 0;
 i16 = i20;
 HEAP32[i14 >> 2] = i2;
 i13 = i1 + 20 | 0;
 HEAP32[i13 >> 2] = i2;
 i9 = __ZN4wasm10ThreadPool4sizeEv(__ZN4wasm10ThreadPool3getEv() | 0) | 0;
 HEAP32[i18 >> 2] = 0;
 i10 = i18 + 4 | 0;
 HEAP32[i10 >> 2] = 0;
 HEAP32[i18 + 8 >> 2] = 0;
 HEAP32[i17 >> 2] = 0;
 i11 = i17 + 4 | 0;
 HEAP32[i11 >> 2] = 0;
 HEAP32[i17 + 8 >> 2] = 0;
 HEAP32[i19 >> 2] = 0;
 i4 = HEAP32[i14 >> 2] | 0;
 i4 = (HEAP32[i4 + 40 >> 2] | 0) - (HEAP32[i4 + 36 >> 2] | 0) >> 2;
 i5 = i18 + 8 | 0;
 i6 = HEAP32[i20 + 24 >> 2] | 0;
 i7 = i16 + 16 | 0;
 i8 = i17 + 8 | 0;
 i12 = 0;
 while (1) {
  if (i12 >>> 0 >= i9 >>> 0) break;
  i3 = __Znwj(40) | 0;
  i1 = i3;
  i2 = i1 + 40 | 0;
  do {
   HEAP32[i1 >> 2] = 0;
   i1 = i1 + 4 | 0;
  } while ((i1 | 0) < (i2 | 0));
  __ZN4wasm10WalkerPassINS_10PostWalkerINS_6VacuumENS_7VisitorIS2_vEEEEEC2Ev(i3);
  HEAP32[i3 >> 2] = 4772;
  HEAP32[i3 + 36 >> 2] = HEAP32[i13 >> 2];
  i1 = i3;
  HEAP32[i15 >> 2] = i1;
  i2 = HEAP32[i10 >> 2] | 0;
  if (i2 >>> 0 >= (HEAP32[i5 >> 2] | 0) >>> 0) {
   __ZNSt3__16vectorINS_10unique_ptrIN4wasm6VacuumENS_14default_deleteIS3_EEEENS_9allocatorIS6_EEE21__push_back_slow_pathIS6_EEvOT_(i18, i15);
   i1 = HEAP32[i15 >> 2] | 0;
   HEAP32[i15 >> 2] = 0;
   if (i1 | 0) FUNCTION_TABLE_vi[HEAP32[(HEAP32[i1 >> 2] | 0) + 4 >> 2] & 255](i1);
  } else {
   HEAP32[i2 >> 2] = i1;
   HEAP32[i10 >> 2] = i2 + 4;
   HEAP32[i15 >> 2] = 0;
  }
  i1 = __Znwj(24) | 0;
  HEAP32[i1 >> 2] = 4800;
  HEAP32[i1 + 4 >> 2] = i3;
  HEAP32[i1 + 8 >> 2] = i19;
  HEAP32[i1 + 12 >> 2] = i4;
  HEAP32[i1 + 16 >> 2] = i14;
  HEAP32[i1 + 20 >> 2] = i6;
  HEAP32[i7 >> 2] = i1;
  i1 = HEAP32[i11 >> 2] | 0;
  if (i1 >>> 0 < (HEAP32[i8 >> 2] | 0) >>> 0) {
   __ZNSt3__18functionIFN4wasm15ThreadWorkStateEvEEC2EOS4_(i1, i16);
   HEAP32[i11 >> 2] = (HEAP32[i11 >> 2] | 0) + 24;
  } else __ZNSt3__16vectorINS_8functionIFN4wasm15ThreadWorkStateEvEEENS_9allocatorIS5_EEE21__push_back_slow_pathIS5_EEvOT_(i17, i16);
  __ZNSt3__18functionIFN4wasm15ThreadWorkStateEvEED2Ev(i16);
  i12 = i12 + 1 | 0;
 }
 __ZN4wasm10ThreadPool4workERNSt3__16vectorINS1_8functionIFNS_15ThreadWorkStateEvEEENS1_9allocatorIS6_EEEE(__ZN4wasm10ThreadPool3getEv() | 0, i17);
 __ZNSt3__113__vector_baseINS_8functionIFN4wasm15ThreadWorkStateEvEEENS_9allocatorIS5_EEED2Ev(i17);
 __ZNSt3__113__vector_baseINS_10unique_ptrIN4wasm6VacuumENS_14default_deleteIS3_EEEENS_9allocatorIS6_EEED2Ev(i18);
 STACKTOP = i20;
 return;
}

function __ZNSt3__112__hash_tableIPKcN6cashew7IString11CStringHashENS4_12CStringEqualENS_9allocatorIS2_EEE15__insert_uniqueERKS2_(i17, i16, i12) {
 i17 = i17 | 0;
 i16 = i16 | 0;
 i12 = i12 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, d5 = 0.0, d6 = 0.0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i13 = 0, i14 = 0, i15 = 0, i18 = 0;
 i18 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i2 = i18;
 i10 = HEAP32[i12 >> 2] | 0;
 i1 = i10;
 i4 = 5381;
 while (1) {
  i3 = HEAP8[i1 >> 0] | 0;
  if (!(i3 << 24 >> 24)) break;
  i1 = i1 + 1 | 0;
  i4 = i3 << 24 >> 24 ^ i4 * 33;
 }
 i13 = i16 + 4 | 0;
 i14 = HEAP32[i13 >> 2] | 0;
 i11 = (i14 | 0) == 0;
 L5 : do if (!i11) {
  i8 = i14 + -1 | 0;
  i9 = (i8 & i14 | 0) == 0;
  if (i9) i3 = i8 & i4; else i3 = (i4 >>> 0) % (i14 >>> 0) | 0;
  i1 = HEAP32[(HEAP32[i16 >> 2] | 0) + (i3 << 2) >> 2] | 0;
  if (!i1) i15 = 15; else while (1) {
   i1 = HEAP32[i1 >> 2] | 0;
   if (!i1) {
    i15 = 15;
    break L5;
   }
   i7 = HEAP32[i1 + 4 >> 2] | 0;
   if (i9) i7 = i7 & i8; else i7 = (i7 >>> 0) % (i14 >>> 0) | 0;
   if ((i7 | 0) != (i3 | 0)) {
    i15 = 15;
    break L5;
   }
   if (!(_strcmp(HEAP32[i1 + 8 >> 2] | 0, i10) | 0)) {
    i2 = 0;
    break;
   }
  }
 } else {
  i3 = 0;
  i15 = 15;
 } while (0);
 if ((i15 | 0) == 15) {
  __ZNSt3__112__hash_tableIPKcN6cashew7IString11CStringHashENS4_12CStringEqualENS_9allocatorIS2_EEE16__construct_nodeERKS2_j(i2, i16, i12, i4);
  i8 = i16 + 12 | 0;
  d5 = +(((HEAP32[i8 >> 2] | 0) + 1 | 0) >>> 0);
  d6 = +HEAPF32[i16 + 16 >> 2];
  do if (i11 | d5 > +(i14 >>> 0) * d6) {
   if (i14 >>> 0 > 2) i1 = (i14 + -1 & i14 | 0) == 0; else i1 = 0;
   i1 = (i1 & 1 | i14 << 1) ^ 1;
   i3 = ~~+Math_ceil(+(d5 / d6)) >>> 0;
   __ZNSt3__112__hash_tableIPKcN6cashew7IString11CStringHashENS4_12CStringEqualENS_9allocatorIS2_EEE6rehashEj(i16, i1 >>> 0 < i3 >>> 0 ? i3 : i1);
   i1 = HEAP32[i13 >> 2] | 0;
   i3 = i1 + -1 | 0;
   if (!(i3 & i1)) {
    i7 = i1;
    i3 = i3 & i4;
    break;
   } else {
    i7 = i1;
    i3 = (i4 >>> 0) % (i1 >>> 0) | 0;
    break;
   }
  } else i7 = i14; while (0);
  i1 = HEAP32[(HEAP32[i16 >> 2] | 0) + (i3 << 2) >> 2] | 0;
  if (!i1) {
   i15 = i16 + 8 | 0;
   i1 = HEAP32[i2 >> 2] | 0;
   HEAP32[i1 >> 2] = HEAP32[i15 >> 2];
   HEAP32[i15 >> 2] = i1;
   HEAP32[(HEAP32[i16 >> 2] | 0) + (i3 << 2) >> 2] = i15;
   i3 = HEAP32[i1 >> 2] | 0;
   if (i3) {
    i3 = HEAP32[i3 + 4 >> 2] | 0;
    i4 = i7 + -1 | 0;
    if (!(i4 & i7)) i3 = i3 & i4; else i3 = (i3 >>> 0) % (i7 >>> 0) | 0;
    HEAP32[(HEAP32[i16 >> 2] | 0) + (i3 << 2) >> 2] = i1;
   }
  } else {
   i16 = HEAP32[i2 >> 2] | 0;
   HEAP32[i16 >> 2] = HEAP32[i1 >> 2];
   HEAP32[i1 >> 2] = i16;
   i1 = i16;
  }
  HEAP32[i8 >> 2] = (HEAP32[i8 >> 2] | 0) + 1;
  HEAP32[i2 >> 2] = 0;
  i2 = 1;
 }
 HEAP32[i17 >> 2] = i1;
 HEAP8[i17 + 4 >> 0] = i2;
 STACKTOP = i18;
 return;
}

function __ZN4wasm6WalkerINS_17RemoveUnusedNamesENS_7VisitorIS1_vEEE9startWalkEPNS_6ModuleE(i1, i2) {
 i1 = i1 | 0;
 i2 = i2 | 0;
 var i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, i18 = 0, i19 = 0, i20 = 0;
 i20 = STACKTOP;
 STACKTOP = STACKTOP + 64 | 0;
 i14 = i20 + 48 | 0;
 i18 = i20 + 52 | 0;
 i17 = i20 + 36 | 0;
 i19 = i20 + 32 | 0;
 i15 = i20 + 28 | 0;
 i16 = i20;
 HEAP32[i14 >> 2] = i2;
 i13 = i1 + 20 | 0;
 HEAP32[i13 >> 2] = i2;
 i9 = __ZN4wasm10ThreadPool4sizeEv(__ZN4wasm10ThreadPool3getEv() | 0) | 0;
 HEAP32[i18 >> 2] = 0;
 i10 = i18 + 4 | 0;
 HEAP32[i10 >> 2] = 0;
 HEAP32[i18 + 8 >> 2] = 0;
 HEAP32[i17 >> 2] = 0;
 i11 = i17 + 4 | 0;
 HEAP32[i11 >> 2] = 0;
 HEAP32[i17 + 8 >> 2] = 0;
 HEAP32[i19 >> 2] = 0;
 i4 = HEAP32[i14 >> 2] | 0;
 i4 = (HEAP32[i4 + 40 >> 2] | 0) - (HEAP32[i4 + 36 >> 2] | 0) >> 2;
 i5 = i18 + 8 | 0;
 i6 = HEAP32[i20 + 24 >> 2] | 0;
 i7 = i16 + 16 | 0;
 i8 = i17 + 8 | 0;
 i12 = 0;
 while (1) {
  if (i12 >>> 0 >= i9 >>> 0) break;
  i3 = __Znwj(52) | 0;
  i1 = i3;
  i2 = i1 + 52 | 0;
  do {
   HEAP32[i1 >> 2] = 0;
   i1 = i1 + 4 | 0;
  } while ((i1 | 0) < (i2 | 0));
  __ZN4wasm17RemoveUnusedNamesC2Ev(i3);
  HEAP32[i3 + 36 >> 2] = HEAP32[i13 >> 2];
  i1 = i3;
  HEAP32[i15 >> 2] = i1;
  i2 = HEAP32[i10 >> 2] | 0;
  if (i2 >>> 0 >= (HEAP32[i5 >> 2] | 0) >>> 0) {
   __ZNSt3__16vectorINS_10unique_ptrIN4wasm17RemoveUnusedNamesENS_14default_deleteIS3_EEEENS_9allocatorIS6_EEE21__push_back_slow_pathIS6_EEvOT_(i18, i15);
   i1 = HEAP32[i15 >> 2] | 0;
   HEAP32[i15 >> 2] = 0;
   if (i1 | 0) FUNCTION_TABLE_vi[HEAP32[(HEAP32[i1 >> 2] | 0) + 4 >> 2] & 255](i1);
  } else {
   HEAP32[i2 >> 2] = i1;
   HEAP32[i10 >> 2] = i2 + 4;
   HEAP32[i15 >> 2] = 0;
  }
  i1 = __Znwj(24) | 0;
  HEAP32[i1 >> 2] = 4084;
  HEAP32[i1 + 4 >> 2] = i3;
  HEAP32[i1 + 8 >> 2] = i19;
  HEAP32[i1 + 12 >> 2] = i4;
  HEAP32[i1 + 16 >> 2] = i14;
  HEAP32[i1 + 20 >> 2] = i6;
  HEAP32[i7 >> 2] = i1;
  i1 = HEAP32[i11 >> 2] | 0;
  if (i1 >>> 0 < (HEAP32[i8 >> 2] | 0) >>> 0) {
   __ZNSt3__18functionIFN4wasm15ThreadWorkStateEvEEC2EOS4_(i1, i16);
   HEAP32[i11 >> 2] = (HEAP32[i11 >> 2] | 0) + 24;
  } else __ZNSt3__16vectorINS_8functionIFN4wasm15ThreadWorkStateEvEEENS_9allocatorIS5_EEE21__push_back_slow_pathIS5_EEvOT_(i17, i16);
  __ZNSt3__18functionIFN4wasm15ThreadWorkStateEvEED2Ev(i16);
  i12 = i12 + 1 | 0;
 }
 __ZN4wasm10ThreadPool4workERNSt3__16vectorINS1_8functionIFNS_15ThreadWorkStateEvEEENS1_9allocatorIS6_EEEE(__ZN4wasm10ThreadPool3getEv() | 0, i17);
 __ZNSt3__113__vector_baseINS_8functionIFN4wasm15ThreadWorkStateEvEEENS_9allocatorIS5_EEED2Ev(i17);
 __ZNSt3__113__vector_baseINS_10unique_ptrIN4wasm17RemoveUnusedNamesENS_14default_deleteIS3_EEEENS_9allocatorIS6_EEED2Ev(i18);
 STACKTOP = i20;
 return;
}

function __ZNKSt3__17codecvtIwc11__mbstate_tE5do_inERS1_PKcS5_RS5_PwS7_RS7_(i4, i8, i1, i13, i14, i2, i9, i12) {
 i4 = i4 | 0;
 i8 = i8 | 0;
 i1 = i1 | 0;
 i13 = i13 | 0;
 i14 = i14 | 0;
 i2 = i2 | 0;
 i9 = i9 | 0;
 i12 = i12 | 0;
 var i3 = 0, i5 = 0, i6 = 0, i7 = 0, i10 = 0, i11 = 0, i15 = 0;
 i15 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i11 = i15;
 i3 = i1;
 while (1) {
  if ((i3 | 0) == (i13 | 0)) {
   i3 = i13;
   break;
  }
  if (!(HEAP8[i3 >> 0] | 0)) break;
  i3 = i3 + 1 | 0;
 }
 HEAP32[i12 >> 2] = i2;
 HEAP32[i14 >> 2] = i1;
 i7 = i9;
 i10 = i4 + 8 | 0;
 L6 : while (1) {
  if ((i2 | 0) == (i9 | 0) | (i1 | 0) == (i13 | 0)) {
   i3 = 34;
   break;
  }
  i6 = i8;
  i5 = HEAP32[i6 + 4 >> 2] | 0;
  i4 = i11;
  HEAP32[i4 >> 2] = HEAP32[i6 >> 2];
  HEAP32[i4 + 4 >> 2] = i5;
  i4 = i3;
  i5 = _uselocale(HEAP32[i10 >> 2] | 0) | 0;
  i6 = _mbsnrtowcs(i2, i14, i4 - i1 | 0, i7 - i2 >> 2, i8) | 0;
  if (i5 | 0) _uselocale(i5) | 0;
  switch (i6 | 0) {
  case -1:
   {
    i3 = 10;
    break L6;
   }
  case 0:
   {
    i1 = 2;
    i3 = 30;
    break L6;
   }
  default:
   {}
  }
  i2 = (HEAP32[i12 >> 2] | 0) + (i6 << 2) | 0;
  HEAP32[i12 >> 2] = i2;
  if ((i2 | 0) == (i9 | 0)) {
   i3 = 31;
   break;
  }
  i1 = HEAP32[i14 >> 2] | 0;
  if ((i3 | 0) == (i13 | 0)) i3 = i13; else {
   i3 = _uselocale(HEAP32[i10 >> 2] | 0) | 0;
   i1 = _mbrtowc(i2, i1, 1, i8) | 0;
   if (i3 | 0) _uselocale(i3) | 0;
   if (i1 | 0) {
    i1 = 2;
    i3 = 30;
    break;
   }
   HEAP32[i12 >> 2] = (HEAP32[i12 >> 2] | 0) + 4;
   i1 = (HEAP32[i14 >> 2] | 0) + 1 | 0;
   HEAP32[i14 >> 2] = i1;
   i3 = i1;
   while (1) {
    if ((i3 | 0) == (i13 | 0)) {
     i3 = i13;
     break;
    }
    if (!(HEAP8[i3 >> 0] | 0)) break;
    i3 = i3 + 1 | 0;
   }
   i2 = HEAP32[i12 >> 2] | 0;
  }
 }
 do if ((i3 | 0) == 10) {
  L29 : while (1) {
   HEAP32[i12 >> 2] = i2;
   if ((i1 | 0) == (HEAP32[i14 >> 2] | 0)) {
    i3 = 20;
    break;
   }
   i3 = _uselocale(HEAP32[i10 >> 2] | 0) | 0;
   i2 = _mbrtowc(i2, i1, i4 - i1 | 0, i11) | 0;
   if (i3 | 0) _uselocale(i3) | 0;
   switch (i2 | 0) {
   case -1:
    {
     i3 = 16;
     break L29;
    }
   case -2:
    {
     i3 = 17;
     break L29;
    }
   case 0:
    {
     i1 = i1 + 1 | 0;
     break;
    }
   default:
    i1 = i1 + i2 | 0;
   }
   i2 = (HEAP32[i12 >> 2] | 0) + 4 | 0;
  }
  if ((i3 | 0) == 16) {
   HEAP32[i14 >> 2] = i1;
   i1 = 2;
   i3 = 30;
   break;
  } else if ((i3 | 0) == 17) {
   HEAP32[i14 >> 2] = i1;
   i1 = 1;
   i3 = 30;
   break;
  } else if ((i3 | 0) == 20) {
   HEAP32[i14 >> 2] = i1;
   i1 = (i1 | 0) != (i13 | 0) & 1;
   i3 = 30;
   break;
  }
 } else if ((i3 | 0) == 31) {
  i1 = HEAP32[i14 >> 2] | 0;
  i3 = 34;
 } while (0);
 if ((i3 | 0) != 30) if ((i3 | 0) == 34) i1 = (i1 | 0) != (i13 | 0) & 1;
 STACKTOP = i15;
 return i1 | 0;
}

function __ZN4wasm6WalkerINS_15RemoveUnusedBrsENS_7VisitorIS1_vEEE9startWalkEPNS_6ModuleE(i1, i2) {
 i1 = i1 | 0;
 i2 = i2 | 0;
 var i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, i18 = 0, i19 = 0, i20 = 0;
 i20 = STACKTOP;
 STACKTOP = STACKTOP + 64 | 0;
 i14 = i20 + 48 | 0;
 i18 = i20 + 52 | 0;
 i17 = i20 + 36 | 0;
 i19 = i20 + 32 | 0;
 i15 = i20 + 28 | 0;
 i16 = i20;
 HEAP32[i14 >> 2] = i2;
 i13 = i1 + 20 | 0;
 HEAP32[i13 >> 2] = i2;
 i9 = __ZN4wasm10ThreadPool4sizeEv(__ZN4wasm10ThreadPool3getEv() | 0) | 0;
 HEAP32[i18 >> 2] = 0;
 i10 = i18 + 4 | 0;
 HEAP32[i10 >> 2] = 0;
 HEAP32[i18 + 8 >> 2] = 0;
 HEAP32[i17 >> 2] = 0;
 i11 = i17 + 4 | 0;
 HEAP32[i11 >> 2] = 0;
 HEAP32[i17 + 8 >> 2] = 0;
 HEAP32[i19 >> 2] = 0;
 i4 = HEAP32[i14 >> 2] | 0;
 i4 = (HEAP32[i4 + 40 >> 2] | 0) - (HEAP32[i4 + 36 >> 2] | 0) >> 2;
 i5 = i18 + 8 | 0;
 i6 = HEAP32[i20 + 24 >> 2] | 0;
 i7 = i16 + 16 | 0;
 i8 = i17 + 8 | 0;
 i12 = 0;
 while (1) {
  if (i12 >>> 0 >= i9 >>> 0) break;
  i3 = __Znwj(68) | 0;
  i1 = i3;
  i2 = i1 + 68 | 0;
  do {
   HEAP32[i1 >> 2] = 0;
   i1 = i1 + 4 | 0;
  } while ((i1 | 0) < (i2 | 0));
  __ZN4wasm15RemoveUnusedBrsC2Ev(i3);
  HEAP32[i3 + 36 >> 2] = HEAP32[i13 >> 2];
  i1 = i3;
  HEAP32[i15 >> 2] = i1;
  i2 = HEAP32[i10 >> 2] | 0;
  if (i2 >>> 0 >= (HEAP32[i5 >> 2] | 0) >>> 0) {
   __ZNSt3__16vectorINS_10unique_ptrIN4wasm15RemoveUnusedBrsENS_14default_deleteIS3_EEEENS_9allocatorIS6_EEE21__push_back_slow_pathIS6_EEvOT_(i18, i15);
   i1 = HEAP32[i15 >> 2] | 0;
   HEAP32[i15 >> 2] = 0;
   if (i1 | 0) FUNCTION_TABLE_vi[HEAP32[(HEAP32[i1 >> 2] | 0) + 4 >> 2] & 255](i1);
  } else {
   HEAP32[i2 >> 2] = i1;
   HEAP32[i10 >> 2] = i2 + 4;
   HEAP32[i15 >> 2] = 0;
  }
  i1 = __Znwj(24) | 0;
  HEAP32[i1 >> 2] = 3940;
  HEAP32[i1 + 4 >> 2] = i3;
  HEAP32[i1 + 8 >> 2] = i19;
  HEAP32[i1 + 12 >> 2] = i4;
  HEAP32[i1 + 16 >> 2] = i14;
  HEAP32[i1 + 20 >> 2] = i6;
  HEAP32[i7 >> 2] = i1;
  i1 = HEAP32[i11 >> 2] | 0;
  if (i1 >>> 0 < (HEAP32[i8 >> 2] | 0) >>> 0) {
   __ZNSt3__18functionIFN4wasm15ThreadWorkStateEvEEC2EOS4_(i1, i16);
   HEAP32[i11 >> 2] = (HEAP32[i11 >> 2] | 0) + 24;
  } else __ZNSt3__16vectorINS_8functionIFN4wasm15ThreadWorkStateEvEEENS_9allocatorIS5_EEE21__push_back_slow_pathIS5_EEvOT_(i17, i16);
  __ZNSt3__18functionIFN4wasm15ThreadWorkStateEvEED2Ev(i16);
  i12 = i12 + 1 | 0;
 }
 __ZN4wasm10ThreadPool4workERNSt3__16vectorINS1_8functionIFNS_15ThreadWorkStateEvEEENS1_9allocatorIS6_EEEE(__ZN4wasm10ThreadPool3getEv() | 0, i17);
 __ZNSt3__113__vector_baseINS_8functionIFN4wasm15ThreadWorkStateEvEEENS_9allocatorIS5_EEED2Ev(i17);
 __ZNSt3__113__vector_baseINS_10unique_ptrIN4wasm15RemoveUnusedBrsENS_14default_deleteIS3_EEEENS_9allocatorIS6_EEED2Ev(i18);
 STACKTOP = i20;
 return;
}

function __ZN4wasm6WalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE9startWalkEPNS_6ModuleE(i1, i2) {
 i1 = i1 | 0;
 i2 = i2 | 0;
 var i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, i18 = 0, i19 = 0, i20 = 0;
 i20 = STACKTOP;
 STACKTOP = STACKTOP + 64 | 0;
 i14 = i20 + 48 | 0;
 i18 = i20 + 52 | 0;
 i17 = i20 + 36 | 0;
 i19 = i20 + 32 | 0;
 i15 = i20 + 28 | 0;
 i16 = i20;
 HEAP32[i14 >> 2] = i2;
 i13 = i1 + 20 | 0;
 HEAP32[i13 >> 2] = i2;
 i9 = __ZN4wasm10ThreadPool4sizeEv(__ZN4wasm10ThreadPool3getEv() | 0) | 0;
 HEAP32[i18 >> 2] = 0;
 i10 = i18 + 4 | 0;
 HEAP32[i10 >> 2] = 0;
 HEAP32[i18 + 8 >> 2] = 0;
 HEAP32[i17 >> 2] = 0;
 i11 = i17 + 4 | 0;
 HEAP32[i11 >> 2] = 0;
 HEAP32[i17 + 8 >> 2] = 0;
 HEAP32[i19 >> 2] = 0;
 i4 = HEAP32[i14 >> 2] | 0;
 i4 = (HEAP32[i4 + 40 >> 2] | 0) - (HEAP32[i4 + 36 >> 2] | 0) >> 2;
 i5 = i18 + 8 | 0;
 i6 = HEAP32[i20 + 24 >> 2] | 0;
 i7 = i16 + 16 | 0;
 i8 = i17 + 8 | 0;
 i12 = 0;
 while (1) {
  if (i12 >>> 0 >= i9 >>> 0) break;
  i3 = __Znwj(128) | 0;
  i1 = i3;
  i2 = i1 + 128 | 0;
  do {
   HEAP32[i1 >> 2] = 0;
   i1 = i1 + 4 | 0;
  } while ((i1 | 0) < (i2 | 0));
  __ZN4wasm14SimplifyLocalsC2Ev(i3);
  HEAP32[i3 + 36 >> 2] = HEAP32[i13 >> 2];
  i1 = i3;
  HEAP32[i15 >> 2] = i1;
  i2 = HEAP32[i10 >> 2] | 0;
  if (i2 >>> 0 >= (HEAP32[i5 >> 2] | 0) >>> 0) {
   __ZNSt3__16vectorINS_10unique_ptrIN4wasm14SimplifyLocalsENS_14default_deleteIS3_EEEENS_9allocatorIS6_EEE21__push_back_slow_pathIS6_EEvOT_(i18, i15);
   i1 = HEAP32[i15 >> 2] | 0;
   HEAP32[i15 >> 2] = 0;
   if (i1 | 0) FUNCTION_TABLE_vi[HEAP32[(HEAP32[i1 >> 2] | 0) + 4 >> 2] & 255](i1);
  } else {
   HEAP32[i2 >> 2] = i1;
   HEAP32[i10 >> 2] = i2 + 4;
   HEAP32[i15 >> 2] = 0;
  }
  i1 = __Znwj(24) | 0;
  HEAP32[i1 >> 2] = 4372;
  HEAP32[i1 + 4 >> 2] = i3;
  HEAP32[i1 + 8 >> 2] = i19;
  HEAP32[i1 + 12 >> 2] = i4;
  HEAP32[i1 + 16 >> 2] = i14;
  HEAP32[i1 + 20 >> 2] = i6;
  HEAP32[i7 >> 2] = i1;
  i1 = HEAP32[i11 >> 2] | 0;
  if (i1 >>> 0 < (HEAP32[i8 >> 2] | 0) >>> 0) {
   __ZNSt3__18functionIFN4wasm15ThreadWorkStateEvEEC2EOS4_(i1, i16);
   HEAP32[i11 >> 2] = (HEAP32[i11 >> 2] | 0) + 24;
  } else __ZNSt3__16vectorINS_8functionIFN4wasm15ThreadWorkStateEvEEENS_9allocatorIS5_EEE21__push_back_slow_pathIS5_EEvOT_(i17, i16);
  __ZNSt3__18functionIFN4wasm15ThreadWorkStateEvEED2Ev(i16);
  i12 = i12 + 1 | 0;
 }
 __ZN4wasm10ThreadPool4workERNSt3__16vectorINS1_8functionIFNS_15ThreadWorkStateEvEEENS1_9allocatorIS6_EEEE(__ZN4wasm10ThreadPool3getEv() | 0, i17);
 __ZNSt3__113__vector_baseINS_8functionIFN4wasm15ThreadWorkStateEvEEENS_9allocatorIS5_EEED2Ev(i17);
 __ZNSt3__113__vector_baseINS_10unique_ptrIN4wasm14SimplifyLocalsENS_14default_deleteIS3_EEEENS_9allocatorIS6_EEED2Ev(i18);
 STACKTOP = i20;
 return;
}

function __ZN4wasm6WalkerINS_13ReorderLocalsENS_7VisitorIS1_vEEE9startWalkEPNS_6ModuleE(i1, i2) {
 i1 = i1 | 0;
 i2 = i2 | 0;
 var i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, i18 = 0, i19 = 0, i20 = 0;
 i20 = STACKTOP;
 STACKTOP = STACKTOP + 64 | 0;
 i14 = i20 + 48 | 0;
 i18 = i20 + 52 | 0;
 i17 = i20 + 36 | 0;
 i19 = i20 + 32 | 0;
 i15 = i20 + 28 | 0;
 i16 = i20;
 HEAP32[i14 >> 2] = i2;
 i13 = i1 + 20 | 0;
 HEAP32[i13 >> 2] = i2;
 i9 = __ZN4wasm10ThreadPool4sizeEv(__ZN4wasm10ThreadPool3getEv() | 0) | 0;
 HEAP32[i18 >> 2] = 0;
 i10 = i18 + 4 | 0;
 HEAP32[i10 >> 2] = 0;
 HEAP32[i18 + 8 >> 2] = 0;
 HEAP32[i17 >> 2] = 0;
 i11 = i17 + 4 | 0;
 HEAP32[i11 >> 2] = 0;
 HEAP32[i17 + 8 >> 2] = 0;
 HEAP32[i19 >> 2] = 0;
 i4 = HEAP32[i14 >> 2] | 0;
 i4 = (HEAP32[i4 + 40 >> 2] | 0) - (HEAP32[i4 + 36 >> 2] | 0) >> 2;
 i5 = i18 + 8 | 0;
 i6 = HEAP32[i20 + 24 >> 2] | 0;
 i7 = i16 + 16 | 0;
 i8 = i17 + 8 | 0;
 i12 = 0;
 while (1) {
  if (i12 >>> 0 >= i9 >>> 0) break;
  i3 = __Znwj(52) | 0;
  i1 = i3;
  i2 = i1 + 52 | 0;
  do {
   HEAP32[i1 >> 2] = 0;
   i1 = i1 + 4 | 0;
  } while ((i1 | 0) < (i2 | 0));
  __ZN4wasm13ReorderLocalsC2Ev(i3);
  HEAP32[i3 + 36 >> 2] = HEAP32[i13 >> 2];
  i1 = i3;
  HEAP32[i15 >> 2] = i1;
  i2 = HEAP32[i10 >> 2] | 0;
  if (i2 >>> 0 >= (HEAP32[i5 >> 2] | 0) >>> 0) {
   __ZNSt3__16vectorINS_10unique_ptrIN4wasm13ReorderLocalsENS_14default_deleteIS3_EEEENS_9allocatorIS6_EEE21__push_back_slow_pathIS6_EEvOT_(i18, i15);
   i1 = HEAP32[i15 >> 2] | 0;
   HEAP32[i15 >> 2] = 0;
   if (i1 | 0) FUNCTION_TABLE_vi[HEAP32[(HEAP32[i1 >> 2] | 0) + 4 >> 2] & 255](i1);
  } else {
   HEAP32[i2 >> 2] = i1;
   HEAP32[i10 >> 2] = i2 + 4;
   HEAP32[i15 >> 2] = 0;
  }
  i1 = __Znwj(24) | 0;
  HEAP32[i1 >> 2] = 4628;
  HEAP32[i1 + 4 >> 2] = i3;
  HEAP32[i1 + 8 >> 2] = i19;
  HEAP32[i1 + 12 >> 2] = i4;
  HEAP32[i1 + 16 >> 2] = i14;
  HEAP32[i1 + 20 >> 2] = i6;
  HEAP32[i7 >> 2] = i1;
  i1 = HEAP32[i11 >> 2] | 0;
  if (i1 >>> 0 < (HEAP32[i8 >> 2] | 0) >>> 0) {
   __ZNSt3__18functionIFN4wasm15ThreadWorkStateEvEEC2EOS4_(i1, i16);
   HEAP32[i11 >> 2] = (HEAP32[i11 >> 2] | 0) + 24;
  } else __ZNSt3__16vectorINS_8functionIFN4wasm15ThreadWorkStateEvEEENS_9allocatorIS5_EEE21__push_back_slow_pathIS5_EEvOT_(i17, i16);
  __ZNSt3__18functionIFN4wasm15ThreadWorkStateEvEED2Ev(i16);
  i12 = i12 + 1 | 0;
 }
 __ZN4wasm10ThreadPool4workERNSt3__16vectorINS1_8functionIFNS_15ThreadWorkStateEvEEENS1_9allocatorIS6_EEEE(__ZN4wasm10ThreadPool3getEv() | 0, i17);
 __ZNSt3__113__vector_baseINS_8functionIFN4wasm15ThreadWorkStateEvEEENS_9allocatorIS5_EEED2Ev(i17);
 __ZNSt3__113__vector_baseINS_10unique_ptrIN4wasm13ReorderLocalsENS_14default_deleteIS3_EEEENS_9allocatorIS6_EEED2Ev(i18);
 STACKTOP = i20;
 return;
}

function __ZNSt3__19__num_getIcE19__stage2_float_loopEcRbRcPcRS4_ccRKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEPjRSE_RjS4_(i4, i9, i12, i7, i10, i2, i3, i8, i13, i14, i11, i5) {
 i4 = i4 | 0;
 i9 = i9 | 0;
 i12 = i12 | 0;
 i7 = i7 | 0;
 i10 = i10 | 0;
 i2 = i2 | 0;
 i3 = i3 | 0;
 i8 = i8 | 0;
 i13 = i13 | 0;
 i14 = i14 | 0;
 i11 = i11 | 0;
 i5 = i5 | 0;
 var i1 = 0, i6 = 0;
 L1 : do if (i4 << 24 >> 24 == i2 << 24 >> 24) if (HEAP8[i9 >> 0] | 0) {
  HEAP8[i9 >> 0] = 0;
  i12 = HEAP32[i10 >> 2] | 0;
  HEAP32[i10 >> 2] = i12 + 1;
  HEAP8[i12 >> 0] = 46;
  i12 = HEAP8[i8 >> 0] | 0;
  if ((((i12 & 1) == 0 ? (i12 & 255) >>> 1 : HEAP32[i8 + 4 >> 2] | 0) | 0) != 0 ? (i1 = HEAP32[i14 >> 2] | 0, (i1 - i13 | 0) < 160) : 0) {
   i13 = HEAP32[i11 >> 2] | 0;
   HEAP32[i14 >> 2] = i1 + 4;
   HEAP32[i1 >> 2] = i13;
   i1 = 0;
  } else i1 = 0;
 } else i1 = -1; else {
  if (i4 << 24 >> 24 == i3 << 24 >> 24 ? (i3 = HEAP8[i8 >> 0] | 0, ((i3 & 1) == 0 ? (i3 & 255) >>> 1 : HEAP32[i8 + 4 >> 2] | 0) | 0) : 0) {
   if (!(HEAP8[i9 >> 0] | 0)) {
    i1 = -1;
    break;
   }
   i1 = HEAP32[i14 >> 2] | 0;
   if ((i1 - i13 | 0) >= 160) {
    i1 = 0;
    break;
   }
   i13 = HEAP32[i11 >> 2] | 0;
   HEAP32[i14 >> 2] = i1 + 4;
   HEAP32[i1 >> 2] = i13;
   HEAP32[i11 >> 2] = 0;
   i1 = 0;
   break;
  }
  i2 = i5 + 32 | 0;
  i1 = i5;
  while (1) {
   if ((i1 | 0) == (i2 | 0)) {
    i1 = i2;
    break;
   }
   if ((HEAP8[i1 >> 0] | 0) == i4 << 24 >> 24) break;
   i1 = i1 + 1 | 0;
  }
  i2 = i1 - i5 | 0;
  if ((i2 | 0) > 31) i1 = -1; else {
   i3 = HEAP8[30448 + i2 >> 0] | 0;
   switch (i2 | 0) {
   case 24:
   case 25:
    {
     i1 = HEAP32[i10 >> 2] | 0;
     if ((i1 | 0) != (i7 | 0) ? (HEAPU8[i1 + -1 >> 0] & 95 | 0) != (HEAPU8[i12 >> 0] & 127 | 0) : 0) {
      i1 = -1;
      break L1;
     }
     HEAP32[i10 >> 2] = i1 + 1;
     HEAP8[i1 >> 0] = i3;
     i1 = 0;
     break L1;
    }
   case 23:
   case 22:
    {
     HEAP8[i12 >> 0] = 80;
     i1 = HEAP32[i10 >> 2] | 0;
     HEAP32[i10 >> 2] = i1 + 1;
     HEAP8[i1 >> 0] = i3;
     i1 = 0;
     break L1;
    }
   default:
    {
     i1 = i3 & 95;
     if ((((i1 | 0) == (HEAP8[i12 >> 0] | 0) ? (HEAP8[i12 >> 0] = i1 | 128, HEAP8[i9 >> 0] | 0) : 0) ? (HEAP8[i9 >> 0] = 0, i12 = HEAP8[i8 >> 0] | 0, ((i12 & 1) == 0 ? (i12 & 255) >>> 1 : HEAP32[i8 + 4 >> 2] | 0) | 0) : 0) ? (i6 = HEAP32[i14 >> 2] | 0, (i6 - i13 | 0) < 160) : 0) {
      i13 = HEAP32[i11 >> 2] | 0;
      HEAP32[i14 >> 2] = i6 + 4;
      HEAP32[i6 >> 2] = i13;
     }
     i14 = HEAP32[i10 >> 2] | 0;
     HEAP32[i10 >> 2] = i14 + 1;
     HEAP8[i14 >> 0] = i3;
     if ((i2 | 0) > 21) {
      i1 = 0;
      break L1;
     }
     HEAP32[i11 >> 2] = (HEAP32[i11 >> 2] | 0) + 1;
     i1 = 0;
     break L1;
    }
   }
  }
 } while (0);
 return i1 | 0;
}

function __ZN4wasm16PrintSExpression10visitBlockEPNS_5BlockE(i12, i1) {
 i12 = i12 | 0;
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i13 = 0;
 i13 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i5 = i13 + 20 | 0;
 i9 = i13 + 4 | 0;
 i11 = i13 + 8 | 0;
 i6 = i13;
 HEAP32[i9 >> 2] = i1;
 HEAP32[i11 >> 2] = 0;
 i10 = i11 + 4 | 0;
 HEAP32[i10 >> 2] = 0;
 HEAP32[i11 + 8 >> 2] = 0;
 i7 = i11 + 8 | 0;
 i8 = i12 + 4 | 0;
 i2 = 0;
 i3 = 0;
 i4 = 0;
 while (1) {
  if ((i3 | 0) != (i4 | 0)) {
   __Z8doIndentRNSt3__113basic_ostreamIcNS_11char_traitsIcEEEEj(HEAP32[i12 >> 2] | 0, HEAP32[i8 >> 2] | 0) | 0;
   i2 = HEAP32[i10 >> 2] | 0;
  }
  if ((i2 | 0) == (HEAP32[i7 >> 2] | 0)) __ZNSt3__16vectorIPN4wasm5BlockENS_9allocatorIS3_EEE21__push_back_slow_pathIRKS3_EEvOT_(i11, i9); else {
   HEAP32[i2 >> 2] = i1;
   HEAP32[i10 >> 2] = (HEAP32[i10 >> 2] | 0) + 4;
  }
  __Z12printOpeningRNSt3__113basic_ostreamIcNS_11char_traitsIcEEEEPKcb(HEAP32[i12 >> 2] | 0, 25452, 0) | 0;
  i1 = HEAP32[i9 >> 2] | 0;
  if (HEAP32[i1 + 8 >> 2] | 0) {
   i4 = __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_c(HEAP32[i12 >> 2] | 0, 32) | 0;
   HEAP32[i6 >> 2] = HEAP32[i1 + 8 >> 2];
   HEAP32[i5 >> 2] = HEAP32[i6 >> 2];
   __ZN4wasmlsERNSt3__113basic_ostreamIcNS0_11char_traitsIcEEEENS_4NameE(i4, i5) | 0;
  }
  __ZN4wasm16PrintSExpression9incIndentEv(i12);
  i2 = HEAP32[i1 + 12 >> 2] | 0;
  if ((HEAP32[i1 + 16 >> 2] | 0) == (i2 | 0)) break;
  if (!(__ZN4wasm10Expression2isINS_5BlockEEEbv(HEAP32[i2 >> 2] | 0) | 0)) break;
  i1 = __ZN4wasm10Expression4castINS_5BlockEEEPT_v(HEAP32[HEAP32[i1 + 12 >> 2] >> 2] | 0) | 0;
  HEAP32[i9 >> 2] = i1;
  i3 = HEAP32[i10 >> 2] | 0;
  i2 = i3;
  i4 = HEAP32[i11 >> 2] | 0;
 }
 i3 = HEAP32[i10 >> 2] | 0;
 i7 = HEAP32[i3 + -4 >> 2] | 0;
 i1 = i3;
 while (1) {
  if ((i1 | 0) == (HEAP32[i11 >> 2] | 0)) break;
  i2 = i3 + -4 | 0;
  i4 = HEAP32[i2 >> 2] | 0;
  HEAP32[i9 >> 2] = i4;
  i1 = i3;
  while (1) {
   if ((i1 | 0) == (i2 | 0)) break;
   i8 = i1 + -4 | 0;
   HEAP32[i10 >> 2] = i8;
   i1 = i8;
  }
  i5 = i4 + 12 | 0;
  i6 = i4 + 16 | 0;
  i1 = (i4 | 0) != (i7 | 0);
  i3 = 0;
  while (1) {
   i2 = HEAP32[i5 >> 2] | 0;
   if (i3 >>> 0 >= (HEAP32[i6 >> 2] | 0) - i2 >> 2 >>> 0) break;
   if ((i3 | 0) == 0 & i1) {
    __ZN4wasm16PrintSExpression9decIndentEv(i12);
    __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_c(HEAP32[i12 >> 2] | 0, 10) | 0;
   } else __ZN4wasm16PrintSExpression13printFullLineEPNS_10ExpressionE(i12, HEAP32[i2 + (i3 << 2) >> 2] | 0);
   i3 = i3 + 1 | 0;
  }
  i3 = HEAP32[i10 >> 2] | 0;
  i1 = i3;
 }
 __ZN4wasm16PrintSExpression9decIndentEv(i12);
 __ZNSt3__113__vector_baseIPN4wasm5BlockENS_9allocatorIS3_EEED2Ev(i11);
 STACKTOP = i13;
 return;
}

function __ZN4wasm17SExpressionParser5parseEv(i15) {
 i15 = i15 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i16 = 0, i17 = 0;
 i17 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i14 = i17 + 12 | 0;
 i12 = i17 + 8 | 0;
 i13 = i17 + 4 | 0;
 i8 = i17;
 HEAP32[i14 >> 2] = 0;
 i9 = i14 + 4 | 0;
 HEAP32[i9 >> 2] = 0;
 HEAP32[i14 + 8 >> 2] = 0;
 i10 = i15 + 4 | 0;
 i1 = __ZN10MixedArena5allocIN4wasm7ElementEEEPT_v(i10) | 0;
 HEAP32[i12 >> 2] = i1;
 i11 = i14 + 8 | 0;
 i6 = i1;
 L1 : while (1) {
  i5 = i6;
  i2 = i1;
  L3 : while (1) {
   __ZN4wasm17SExpressionParser14skipWhitespaceEv(i15);
   i1 = HEAP32[i15 >> 2] | 0;
   switch (HEAP8[i1 >> 0] | 0) {
   case 0:
    {
     i7 = i6;
     break L1;
    }
   case 40:
    {
     i16 = 4;
     break L3;
    }
   case 41:
    break L3;
   default:
    {}
   }
   i1 = __ZN4wasm7Element4listEv(i6) | 0;
   i2 = __ZN4wasm17SExpressionParser11parseStringEv(i15) | 0;
   HEAP32[i8 >> 2] = i2;
   i3 = i1 + 4 | 0;
   i4 = HEAP32[i3 >> 2] | 0;
   if (i4 >>> 0 < (HEAP32[i1 + 8 >> 2] | 0) >>> 0) {
    HEAP32[i4 >> 2] = i2;
    HEAP32[i3 >> 2] = (HEAP32[i3 >> 2] | 0) + 4;
    i2 = i5;
    continue;
   } else {
    __ZNSt3__16vectorIPN4wasm7ElementENS_9allocatorIS3_EEE21__push_back_slow_pathIS3_EEvOT_(i1, i8);
    i2 = i5;
    continue;
   }
  }
  if ((i16 | 0) == 4) {
   i16 = 0;
   HEAP32[i15 >> 2] = i1 + 1;
   i1 = HEAP32[i9 >> 2] | 0;
   if ((i1 | 0) == (HEAP32[i11 >> 2] | 0)) __ZNSt3__16vectorIPN4wasm7ElementENS_9allocatorIS3_EEE21__push_back_slow_pathIRKS3_EEvOT_(i14, i12); else {
    HEAP32[i1 >> 2] = i2;
    HEAP32[i9 >> 2] = (HEAP32[i9 >> 2] | 0) + 4;
   }
   i1 = __ZN10MixedArena5allocIN4wasm7ElementEEEPT_v(i10) | 0;
   HEAP32[i12 >> 2] = i1;
   i6 = i1;
   continue;
  }
  HEAP32[i15 >> 2] = i1 + 1;
  HEAP32[i13 >> 2] = i2;
  i3 = HEAP32[i9 >> 2] | 0;
  i4 = i3 + -4 | 0;
  i1 = HEAP32[i4 >> 2] | 0;
  HEAP32[i12 >> 2] = i1;
  i6 = i1;
  if ((i3 | 0) == (HEAP32[i14 >> 2] | 0)) {
   i16 = 9;
   break;
  }
  while (1) {
   if ((i3 | 0) == (i4 | 0)) break;
   i5 = i3 + -4 | 0;
   HEAP32[i9 >> 2] = i5;
   i3 = i5;
  }
  i3 = __ZN4wasm7Element4listEv(i6) | 0;
  i4 = i3 + 4 | 0;
  i5 = HEAP32[i4 >> 2] | 0;
  if ((i5 | 0) == (HEAP32[i3 + 8 >> 2] | 0)) __ZNSt3__16vectorIPN4wasm7ElementENS_9allocatorIS3_EEE21__push_back_slow_pathIRKS3_EEvOT_(i3, i13); else {
   HEAP32[i5 >> 2] = i2;
   HEAP32[i4 >> 2] = (HEAP32[i4 >> 2] | 0) + 4;
  }
 }
 if ((i16 | 0) == 9) ___assert_fail(14343, 14303, 157, 14356);
 if ((HEAP32[i9 >> 2] | 0) == (HEAP32[i14 >> 2] | 0)) {
  __ZNSt3__113__vector_baseIPN4wasm7ElementENS_9allocatorIS3_EEED2Ev(i14);
  STACKTOP = i17;
  return i7 | 0;
 } else ___assert_fail(25256, 14303, 164, 14356);
 return 0;
}

function __ZNKSt3__18time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE13__get_percentERS4_S4_RjRKNS_5ctypeIwEE(i1, i7, i8, i9, i4) {
 i1 = i1 | 0;
 i7 = i7 | 0;
 i8 = i8 | 0;
 i9 = i9 | 0;
 i4 = i4 | 0;
 var i2 = 0, i3 = 0, i5 = 0, i6 = 0;
 i1 = HEAP32[i7 >> 2] | 0;
 do if (i1) {
  i2 = HEAP32[i1 + 12 >> 2] | 0;
  if ((i2 | 0) == (HEAP32[i1 + 16 >> 2] | 0)) i1 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 36 >> 2] & 127](i1) | 0; else i1 = HEAP32[i2 >> 2] | 0;
  if ((i1 | 0) == -1) {
   HEAP32[i7 >> 2] = 0;
   i3 = 1;
   break;
  } else {
   i3 = (HEAP32[i7 >> 2] | 0) == 0;
   break;
  }
 } else i3 = 1; while (0);
 i2 = HEAP32[i8 >> 2] | 0;
 do if (i2) {
  i1 = HEAP32[i2 + 12 >> 2] | 0;
  if ((i1 | 0) == (HEAP32[i2 + 16 >> 2] | 0)) i1 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i2 >> 2] | 0) + 36 >> 2] & 127](i2) | 0; else i1 = HEAP32[i1 >> 2] | 0;
  if ((i1 | 0) != -1) if (i3) {
   i5 = i2;
   i6 = 17;
   break;
  } else {
   i6 = 16;
   break;
  } else {
   HEAP32[i8 >> 2] = 0;
   i6 = 14;
   break;
  }
 } else i6 = 14; while (0);
 if ((i6 | 0) == 14) if (i3) i6 = 16; else {
  i5 = 0;
  i6 = 17;
 }
 L22 : do if ((i6 | 0) == 16) HEAP32[i9 >> 2] = HEAP32[i9 >> 2] | 6; else if ((i6 | 0) == 17) {
  i1 = HEAP32[i7 >> 2] | 0;
  i2 = HEAP32[i1 + 12 >> 2] | 0;
  if ((i2 | 0) == (HEAP32[i1 + 16 >> 2] | 0)) i1 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 36 >> 2] & 127](i1) | 0; else i1 = HEAP32[i2 >> 2] | 0;
  if ((FUNCTION_TABLE_iiii[HEAP32[(HEAP32[i4 >> 2] | 0) + 52 >> 2] & 31](i4, i1, 0) | 0) << 24 >> 24 != 37) {
   HEAP32[i9 >> 2] = HEAP32[i9 >> 2] | 4;
   break;
  }
  i1 = HEAP32[i7 >> 2] | 0;
  i2 = i1 + 12 | 0;
  i3 = HEAP32[i2 >> 2] | 0;
  if ((i3 | 0) == (HEAP32[i1 + 16 >> 2] | 0)) {
   FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 40 >> 2] & 127](i1) | 0;
   i1 = HEAP32[i7 >> 2] | 0;
   if (!i1) i2 = 1; else i6 = 25;
  } else {
   HEAP32[i2 >> 2] = i3 + 4;
   i6 = 25;
  }
  do if ((i6 | 0) == 25) {
   i2 = HEAP32[i1 + 12 >> 2] | 0;
   if ((i2 | 0) == (HEAP32[i1 + 16 >> 2] | 0)) i1 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 36 >> 2] & 127](i1) | 0; else i1 = HEAP32[i2 >> 2] | 0;
   if ((i1 | 0) == -1) {
    HEAP32[i7 >> 2] = 0;
    i2 = 1;
    break;
   } else {
    i2 = (HEAP32[i7 >> 2] | 0) == 0;
    break;
   }
  } while (0);
  do if (i5) {
   i1 = HEAP32[i5 + 12 >> 2] | 0;
   if ((i1 | 0) == (HEAP32[i5 + 16 >> 2] | 0)) i1 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i5 >> 2] | 0) + 36 >> 2] & 127](i5) | 0; else i1 = HEAP32[i1 >> 2] | 0;
   if ((i1 | 0) != -1) if (i2) break L22; else break; else {
    HEAP32[i8 >> 2] = 0;
    i6 = 37;
    break;
   }
  } else i6 = 37; while (0);
  if ((i6 | 0) == 37 ? !i2 : 0) break;
  HEAP32[i9 >> 2] = HEAP32[i9 >> 2] | 2;
 } while (0);
 return;
}

function __ZN4wasm22SExpressionWasmBuilder8makeLoopERNS_7ElementE(i8, i7) {
 i8 = i8 | 0;
 i7 = i7 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i9 = 0, i10 = 0, i11 = 0;
 i11 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i1 = i11 + 12 | 0;
 i2 = i11;
 i10 = __ZN10MixedArena5allocIN4wasm4LoopEEEPT_v(HEAP32[i8 + 4 >> 2] | 0) | 0;
 i9 = __ZN4wasm7Element4listEv(i7) | 0;
 if ((HEAP8[HEAP32[(HEAP32[i9 >> 2] | 0) + 4 >> 2] >> 0] | 0) == 0 ? (i9 = __ZN4wasm7Element4listEv(i7) | 0, (HEAP8[HEAP32[(HEAP32[i9 >> 2] | 0) + 8 >> 2] >> 0] | 0) == 0) : 0) {
  i1 = __ZN4wasm7Element4listEv(i7) | 0;
  i1 = __ZN4wasm7Element3strEv(HEAP32[(HEAP32[i1 >> 2] | 0) + 4 >> 2] | 0) | 0;
  HEAP32[i10 + 8 >> 2] = i1;
  i1 = 2;
 } else {
  __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6__initEPKcj(i1, 15211, 8);
  i9 = __ZN4wasm22SExpressionWasmBuilder15getPrefixedNameENSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEE(i8, i1) | 0;
  HEAP32[i10 + 8 >> 2] = i9;
  __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i1);
  i1 = 1;
 }
 i9 = __ZN4wasm7ElementixEj(i7, i1) | 0;
 i6 = i10 + 12 | 0;
 if (!(HEAP8[i9 >> 0] | 0)) {
  i9 = __ZN4wasm7Element3strEv(__ZN4wasm7ElementixEj(i7, i1) | 0) | 0;
  HEAP32[i6 >> 2] = i9;
  i1 = i1 + 1 | 0;
 } else {
  __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6__initEPKcj(i2, 15220, 7);
  i9 = __ZN4wasm22SExpressionWasmBuilder15getPrefixedNameENSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEE(i8, i2) | 0;
  HEAP32[i10 + 12 >> 2] = i9;
  __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i2);
 }
 i4 = i8 + 88 | 0;
 i2 = i10 + 8 | 0;
 i9 = i8 + 92 | 0;
 i3 = HEAP32[i9 >> 2] | 0;
 i5 = i8 + 96 | 0;
 if ((i3 | 0) == (HEAP32[i5 >> 2] | 0)) {
  __ZNSt3__16vectorIN4wasm4NameENS_9allocatorIS2_EEE21__push_back_slow_pathIRKS2_EEvOT_(i4, i2);
  i2 = HEAP32[i9 >> 2] | 0;
 } else {
  HEAP32[i3 >> 2] = HEAP32[i2 >> 2];
  i2 = (HEAP32[i9 >> 2] | 0) + 4 | 0;
  HEAP32[i9 >> 2] = i2;
 }
 if ((i2 | 0) == (HEAP32[i5 >> 2] | 0)) __ZNSt3__16vectorIN4wasm4NameENS_9allocatorIS2_EEE21__push_back_slow_pathIRKS2_EEvOT_(i4, i6); else {
  HEAP32[i2 >> 2] = HEAP32[i6 >> 2];
  HEAP32[i9 >> 2] = (HEAP32[i9 >> 2] | 0) + 4;
 }
 i4 = __ZN4wasm22SExpressionWasmBuilder14makeMaybeBlockERNS_7ElementEjj(i8, i7, i1, -1) | 0;
 HEAP32[i10 + 16 >> 2] = i4;
 i2 = HEAP32[i9 >> 2] | 0;
 i1 = i2 + -4 | 0;
 i3 = i2;
 while (1) {
  if ((i3 | 0) == (i1 | 0)) break;
  i8 = i3 + -4 | 0;
  HEAP32[i9 >> 2] = i8;
  i3 = i8;
 }
 i2 = i2 + -8 | 0;
 while (1) {
  if ((i1 | 0) == (i2 | 0)) break;
  i8 = i1 + -4 | 0;
  HEAP32[i9 >> 2] = i8;
  i1 = i8;
 }
 HEAP32[i10 + 4 >> 2] = HEAP32[i4 + 4 >> 2];
 STACKTOP = i11;
 return i10 | 0;
}

function __ZNKSt3__17codecvtIwc11__mbstate_tE6do_outERS1_PKwS5_RS5_PcS7_RS7_(i4, i7, i1, i10, i14, i2, i9, i13) {
 i4 = i4 | 0;
 i7 = i7 | 0;
 i1 = i1 | 0;
 i10 = i10 | 0;
 i14 = i14 | 0;
 i2 = i2 | 0;
 i9 = i9 | 0;
 i13 = i13 | 0;
 var i3 = 0, i5 = 0, i6 = 0, i8 = 0, i11 = 0, i12 = 0, i15 = 0, i16 = 0;
 i15 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i12 = i15;
 i8 = i15 + 8 | 0;
 i3 = i1;
 while (1) {
  if ((i3 | 0) == (i10 | 0)) {
   i3 = i10;
   break;
  }
  if (!(HEAP32[i3 >> 2] | 0)) break;
  i3 = i3 + 4 | 0;
 }
 HEAP32[i13 >> 2] = i2;
 HEAP32[i14 >> 2] = i1;
 i6 = i9;
 i11 = i4 + 8 | 0;
 L6 : while (1) {
  if ((i2 | 0) == (i9 | 0) | (i1 | 0) == (i10 | 0)) {
   i3 = 35;
   break;
  }
  i16 = i7;
  i5 = HEAP32[i16 + 4 >> 2] | 0;
  i4 = i12;
  HEAP32[i4 >> 2] = HEAP32[i16 >> 2];
  HEAP32[i4 + 4 >> 2] = i5;
  i4 = _uselocale(HEAP32[i11 >> 2] | 0) | 0;
  i5 = _wcsnrtombs(i2, i14, i3 - i1 >> 2, i6 - i2 | 0, i7) | 0;
  if (i4 | 0) _uselocale(i4) | 0;
  switch (i5 | 0) {
  case -1:
   {
    i3 = 10;
    break L6;
   }
  case 0:
   {
    i1 = 1;
    i3 = 32;
    break L6;
   }
  default:
   {}
  }
  i2 = (HEAP32[i13 >> 2] | 0) + i5 | 0;
  HEAP32[i13 >> 2] = i2;
  if ((i2 | 0) == (i9 | 0)) {
   i3 = 33;
   break;
  }
  if ((i3 | 0) == (i10 | 0)) {
   i1 = HEAP32[i14 >> 2] | 0;
   i3 = i10;
  } else {
   i1 = _uselocale(HEAP32[i11 >> 2] | 0) | 0;
   i2 = _wcrtomb(i8, 0, i7) | 0;
   if (i1 | 0) _uselocale(i1) | 0;
   if ((i2 | 0) == -1) {
    i1 = 2;
    i3 = 31;
    break;
   }
   if (i2 >>> 0 > (i6 - (HEAP32[i13 >> 2] | 0) | 0) >>> 0) {
    i1 = 1;
    i3 = 31;
    break;
   } else i1 = i8;
   while (1) {
    if (!i2) break;
    i5 = HEAP8[i1 >> 0] | 0;
    i16 = HEAP32[i13 >> 2] | 0;
    HEAP32[i13 >> 2] = i16 + 1;
    HEAP8[i16 >> 0] = i5;
    i2 = i2 + -1 | 0;
    i1 = i1 + 1 | 0;
   }
   i1 = (HEAP32[i14 >> 2] | 0) + 4 | 0;
   HEAP32[i14 >> 2] = i1;
   i3 = i1;
   while (1) {
    if ((i3 | 0) == (i10 | 0)) {
     i3 = i10;
     break;
    }
    if (!(HEAP32[i3 >> 2] | 0)) break;
    i3 = i3 + 4 | 0;
   }
   i2 = HEAP32[i13 >> 2] | 0;
  }
 }
 if ((i3 | 0) == 10) {
  HEAP32[i13 >> 2] = i2;
  while (1) {
   if ((i1 | 0) == (HEAP32[i14 >> 2] | 0)) break;
   i16 = HEAP32[i1 >> 2] | 0;
   i3 = _uselocale(HEAP32[i11 >> 2] | 0) | 0;
   i2 = _wcrtomb(i2, i16, i12) | 0;
   if (i3 | 0) _uselocale(i3) | 0;
   if ((i2 | 0) == -1) break;
   i2 = (HEAP32[i13 >> 2] | 0) + i2 | 0;
   HEAP32[i13 >> 2] = i2;
   i1 = i1 + 4 | 0;
  }
  HEAP32[i14 >> 2] = i1;
  i1 = 2;
  i3 = 32;
 } else if ((i3 | 0) == 31) i3 = 32; else if ((i3 | 0) == 33) {
  i1 = HEAP32[i14 >> 2] | 0;
  i3 = 35;
 }
 if ((i3 | 0) != 32) if ((i3 | 0) == 35) i1 = (i1 | 0) != (i10 | 0) & 1;
 STACKTOP = i15;
 return i1 | 0;
}

function __ZZN4wasm22SExpressionWasmBuilder6makeIfERNS_7ElementEENKUlPKcS2_E_clES4_S2_(i1, i2, i4) {
 i1 = i1 | 0;
 i2 = i2 | 0;
 i4 = i4 | 0;
 var i3 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0;
 i12 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i9 = i12 + 24 | 0;
 i3 = i12 + 20 | 0;
 i7 = i12 + 4 | 0;
 i11 = i12 + 16 | 0;
 i10 = i12;
 i8 = HEAP32[i1 >> 2] | 0;
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6__initEPKcj(i7, i2, _strlen(i2) | 0);
 i1 = __ZN4wasm22SExpressionWasmBuilder15getPrefixedNameENSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEE(i8, i7) | 0;
 HEAP32[i3 >> 2] = i1;
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i7);
 i7 = __ZN4wasm7Element4listEv(i4) | 0;
 i7 = __ZN4wasm7Element3strEv(HEAP32[HEAP32[i7 >> 2] >> 2] | 0) | 0;
 if ((i7 | 0) != (HEAP32[9022] | 0) ? (i7 = __ZN4wasm7Element4listEv(i4) | 0, i7 = __ZN4wasm7Element3strEv(HEAP32[HEAP32[i7 >> 2] >> 2] | 0) | 0, (i7 | 0) != (HEAP32[9023] | 0)) : 0) {
  i7 = i1;
  i6 = 0;
 } else {
  i7 = __ZN4wasm7Element4listEv(i4) | 0;
  if (!(HEAP8[(HEAP32[(HEAP32[i7 >> 2] | 0) + 4 >> 2] | 0) + 20 >> 0] | 0)) {
   i7 = i1;
   i6 = 1;
  } else {
   i7 = __ZN4wasm7Element4listEv(i4) | 0;
   i7 = __ZN4wasm7Element3strEv(HEAP32[(HEAP32[i7 >> 2] | 0) + 4 >> 2] | 0) | 0;
   HEAP32[i3 >> 2] = i7;
   i6 = 1;
  }
 }
 i5 = i8 + 92 | 0;
 i1 = HEAP32[i5 >> 2] | 0;
 if ((i1 | 0) == (HEAP32[i8 + 96 >> 2] | 0)) __ZNSt3__16vectorIN4wasm4NameENS_9allocatorIS2_EEE21__push_back_slow_pathIRKS2_EEvOT_(i8 + 88 | 0, i3); else {
  HEAP32[i1 >> 2] = i7;
  HEAP32[i5 >> 2] = (HEAP32[i5 >> 2] | 0) + 4;
 }
 i1 = __ZN4wasm22SExpressionWasmBuilder15parseExpressionERNS_7ElementE(i8, i4) | 0;
 HEAP32[i11 >> 2] = i1;
 i3 = HEAP32[i5 >> 2] | 0;
 i2 = i3 + -4 | 0;
 i4 = i1;
 while (1) {
  if ((i3 | 0) == (i2 | 0)) break;
  i13 = i3 + -4 | 0;
  HEAP32[i5 >> 2] = i13;
  i3 = i13;
 }
 if (!i6) {
  HEAP32[i10 >> 2] = i7;
  HEAP32[i9 >> 2] = HEAP32[i10 >> 2];
  if (__ZN4wasm11BreakSeeker3hasEPNS_10ExpressionENS_4NameE(i1, i9) | 0) {
   i1 = __ZN10MixedArena5allocIN4wasm5BlockEEEPT_v(HEAP32[i8 + 4 >> 2] | 0) | 0;
   HEAP32[i1 + 8 >> 2] = i7;
   i2 = i1 + 16 | 0;
   i3 = HEAP32[i2 >> 2] | 0;
   if ((i3 | 0) == (HEAP32[i1 + 20 >> 2] | 0)) __ZNSt3__16vectorIPN4wasm10ExpressionENS_9allocatorIS3_EEE21__push_back_slow_pathIRKS3_EEvOT_(i1 + 12 | 0, i11); else {
    HEAP32[i3 >> 2] = i4;
    HEAP32[i2 >> 2] = (HEAP32[i2 >> 2] | 0) + 4;
   }
   __ZN4wasm5Block8finalizeEv(i1);
   HEAP32[i11 >> 2] = i1;
  }
 } else {
  i13 = (__ZN4wasm10Expression7dynCastINS_5BlockEEEPT_v(i1) | 0) + 8 | 0;
  HEAP32[i13 >> 2] = i7;
 }
 STACKTOP = i12;
 return i1 | 0;
}

function __ZZN4wasm14ModuleInstance12callFunctionEN6cashew7IStringERNSt3__16vectorINS_7LiteralENS3_9allocatorIS5_EEEEEN16ExpressionRunner9visitHostEPNS_4HostE(i6, i5, i1) {
 i6 = i6 | 0;
 i5 = i5 | 0;
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i4 = 0, i7 = 0;
 i7 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i2 = i7;
 L1 : do switch (HEAP32[i1 + 8 >> 2] | 0) {
 case 0:
  {
   HEAP32[i6 >> 2] = 1;
   HEAP32[i6 + 8 >> 2] = 65536;
   HEAP32[i6 + 16 >> 2] = 0;
   break;
  }
 case 1:
  {
   i5 = HEAP32[(HEAP32[i5 >> 2] | 0) + 20 >> 2] | 0;
   HEAP32[i6 >> 2] = 1;
   HEAP32[i6 + 8 >> 2] = i5;
   HEAP32[i6 + 16 >> 2] = 0;
   break;
  }
 case 2:
  {
   __ZN4wasm7VisitorIZNS_14ModuleInstance12callFunctionEN6cashew7IStringERNSt3__16vectorINS_7LiteralENS4_9allocatorIS6_EEEEE16ExpressionRunnerNS_4FlowEE5visitEPNS_10ExpressionE(i2, i5, HEAP32[HEAP32[i1 + 16 >> 2] >> 2] | 0);
   if (!(HEAP32[i2 + 16 >> 2] | 0)) {
    i4 = HEAP32[(HEAP32[i5 >> 2] | 0) + 20 >> 2] | 0;
    i3 = __ZNK4wasm7Literal6geti32Ev(i2) | 0;
    if (i3 >>> 0 > 65535) {
     i2 = HEAP32[(HEAP32[i5 >> 2] | 0) + 24 >> 2] | 0;
     FUNCTION_TABLE_vii[HEAP32[(HEAP32[i2 >> 2] | 0) + 20 >> 2] & 511](i2, 16942);
    }
    i2 = HEAP32[i5 >> 2] | 0;
    i1 = HEAP32[i2 + 20 >> 2] | 0;
    if (i1 >>> 0 >= ~i3 >>> 0) {
     i2 = HEAP32[i2 + 24 >> 2] | 0;
     FUNCTION_TABLE_vii[HEAP32[(HEAP32[i2 >> 2] | 0) + 20 >> 2] & 511](i2, 16979);
     i2 = HEAP32[i5 >> 2] | 0;
     i1 = HEAP32[i2 + 20 >> 2] | 0;
    }
    i3 = i1 + i3 | 0;
    if (i3 >>> 0 > (HEAP32[(HEAP32[i2 >> 2] | 0) + 64 >> 2] | 0) >>> 0) {
     i1 = HEAP32[i2 + 24 >> 2] | 0;
     FUNCTION_TABLE_vii[HEAP32[(HEAP32[i1 >> 2] | 0) + 20 >> 2] & 511](i1, 17017);
     i1 = HEAP32[i5 >> 2] | 0;
     i2 = i1;
     i1 = HEAP32[i1 + 20 >> 2] | 0;
    }
    i2 = HEAP32[i2 + 24 >> 2] | 0;
    FUNCTION_TABLE_viii[HEAP32[(HEAP32[i2 >> 2] | 0) + 16 >> 2] & 15](i2, i1 << 16, i3 << 16);
    HEAP32[(HEAP32[i5 >> 2] | 0) + 20 >> 2] = i3;
    HEAP32[i6 >> 2] = 1;
    HEAP32[i6 + 8 >> 2] = i4;
    HEAP32[i6 + 16 >> 2] = 0;
   } else {
    HEAP32[i6 >> 2] = HEAP32[i2 >> 2];
    HEAP32[i6 + 4 >> 2] = HEAP32[i2 + 4 >> 2];
    HEAP32[i6 + 8 >> 2] = HEAP32[i2 + 8 >> 2];
    HEAP32[i6 + 12 >> 2] = HEAP32[i2 + 12 >> 2];
    HEAP32[i6 + 16 >> 2] = HEAP32[i2 + 16 >> 2];
    HEAP32[i6 + 20 >> 2] = HEAP32[i2 + 20 >> 2];
   }
   break;
  }
 case 3:
  {
   i5 = (HEAP32[i1 + 12 >> 2] | 0) == (HEAP32[9051] | 0);
   HEAP32[i6 >> 2] = 1;
   i1 = i6 + 8 | 0;
   if (i5) {
    HEAP32[i1 >> 2] = 1;
    HEAP32[i6 + 16 >> 2] = 0;
    break L1;
   } else {
    HEAP32[i1 >> 2] = 0;
    HEAP32[i6 + 16 >> 2] = 0;
    break L1;
   }
  }
 default:
  _abort();
 } while (0);
 STACKTOP = i7;
 return;
}

function __ZNKSt3__17num_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_putES4_RNS_8ios_baseEwe(i1, i26, i21, i20, d9) {
 i1 = i1 | 0;
 i26 = i26 | 0;
 i21 = i21 | 0;
 i20 = i20 | 0;
 d9 = +d9;
 var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, i18 = 0, i19 = 0, i22 = 0, i23 = 0, i24 = 0, i25 = 0;
 i23 = STACKTOP;
 STACKTOP = STACKTOP + 352 | 0;
 i12 = i23 + 304 | 0;
 i7 = i23 + 48 | 0;
 i6 = i23 + 32 | 0;
 i3 = i23 + 24 | 0;
 i2 = i23 + 8 | 0;
 i5 = i23;
 i10 = i23 + 308 | 0;
 i8 = i23 + 300 | 0;
 i11 = i23 + 72 | 0;
 i17 = i23 + 68 | 0;
 i16 = i23 + 64 | 0;
 i13 = i23 + 60 | 0;
 i14 = i23 + 56 | 0;
 i4 = i5;
 HEAP32[i4 >> 2] = 37;
 HEAP32[i4 + 4 >> 2] = 0;
 i4 = __ZNSt3__114__num_put_base14__format_floatEPcPKcj(i5 + 1 | 0, 30697, HEAP32[i21 + 4 >> 2] | 0) | 0;
 HEAP32[i8 >> 2] = i10;
 i1 = __ZNSt3__16__clocEv() | 0;
 if (i4) {
  HEAP32[i2 >> 2] = HEAP32[i21 + 8 >> 2];
  HEAPF64[i2 + 8 >> 3] = d9;
  i1 = __ZNSt3__112__snprintf_lEPcjP15__locale_structPKcz(i10, 30, i1, i5, i2) | 0;
 } else {
  HEAPF64[i3 >> 3] = d9;
  i1 = __ZNSt3__112__snprintf_lEPcjP15__locale_structPKcz(i10, 30, i1, i5, i3) | 0;
 }
 if ((i1 | 0) > 29) {
  i1 = __ZNSt3__16__clocEv() | 0;
  if (i4) {
   HEAP32[i6 >> 2] = HEAP32[i21 + 8 >> 2];
   HEAPF64[i6 + 8 >> 3] = d9;
   i2 = __ZNSt3__112__asprintf_lEPPcP15__locale_structPKcz(i8, i1, i5, i6) | 0;
  } else {
   HEAPF64[i7 >> 3] = d9;
   i2 = __ZNSt3__112__asprintf_lEPPcP15__locale_structPKcz(i8, i1, i5, i7) | 0;
  }
  i1 = HEAP32[i8 >> 2] | 0;
  if (!i1) __ZSt17__throw_bad_allocv(); else {
   i18 = i1;
   i24 = i1;
   i15 = i2;
  }
 } else {
  i18 = HEAP32[i8 >> 2] | 0;
  i24 = 0;
  i15 = i1;
 }
 i2 = i18 + i15 | 0;
 i3 = __ZNSt3__114__num_put_base18__identify_paddingEPcS1_RKNS_8ios_baseE(i18, i2, i21) | 0;
 if ((i18 | 0) != (i10 | 0)) {
  i1 = _malloc(i15 << 3) | 0;
  if (!i1) __ZSt17__throw_bad_allocv(); else {
   i19 = i18;
   i22 = i1;
   i25 = i1;
  }
 } else {
  i19 = i10;
  i22 = i11;
  i25 = 0;
 }
 i1 = __ZNKSt3__18ios_base6getlocEv(i21) | 0;
 HEAP32[i13 >> 2] = i1;
 __ZNSt3__19__num_putIwE23__widen_and_group_floatEPcS2_S2_PwRS3_S4_RKNS_6localeE(i19, i3, i2, i22, i17, i16, i13);
 __ZNSt3__114__shared_count16__release_sharedEv(i1) | 0;
 HEAP32[i14 >> 2] = HEAP32[i26 >> 2];
 i19 = HEAP32[i17 >> 2] | 0;
 i1 = HEAP32[i16 >> 2] | 0;
 HEAP32[i12 >> 2] = HEAP32[i14 >> 2];
 i1 = __ZNSt3__116__pad_and_outputIwNS_11char_traitsIwEEEENS_19ostreambuf_iteratorIT_T0_EES6_PKS4_S8_S8_RNS_8ios_baseES4_(i12, i22, i19, i1, i21, i20) | 0;
 HEAP32[i26 >> 2] = i1;
 if (i25 | 0) _free(i25);
 _free(i24);
 STACKTOP = i23;
 return i1 | 0;
}

function __ZN4wasm14ModuleInstance12callFunctionEN6cashew7IStringERNSt3__16vectorINS_7LiteralENS3_9allocatorIS5_EEEE(i11, i8, i2, i6) {
 i11 = i11 | 0;
 i8 = i8 | 0;
 i2 = i2 | 0;
 i6 = i6 | 0;
 var i1 = 0, i3 = 0, i4 = 0, i5 = 0, i7 = 0, i9 = 0, i10 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0;
 i15 = STACKTOP;
 STACKTOP = STACKTOP + 64 | 0;
 i13 = i15 + 40 | 0;
 i3 = i15 + 36 | 0;
 i4 = i15 + 32 | 0;
 i7 = i15;
 i5 = i15 + 24 | 0;
 i12 = i8 + 4 | 0;
 i1 = HEAP32[i12 >> 2] | 0;
 if (i1 >>> 0 > 250) {
  i1 = HEAP32[i8 + 24 >> 2] | 0;
  FUNCTION_TABLE_vii[HEAP32[(HEAP32[i1 >> 2] | 0) + 20 >> 2] & 511](i1, 15760);
  i1 = HEAP32[i12 >> 2] | 0;
 }
 HEAP32[i12 >> 2] = i1 + 1;
 i9 = HEAP32[i2 >> 2] | 0;
 HEAP32[i3 >> 2] = i9;
 i10 = i8 + 12 | 0;
 i1 = HEAP32[i10 >> 2] | 0;
 if (i1 >>> 0 < (HEAP32[i8 + 16 >> 2] | 0) >>> 0) {
  HEAP32[i1 >> 2] = i9;
  HEAP32[i10 >> 2] = (HEAP32[i10 >> 2] | 0) + 4;
 } else __ZNSt3__16vectorIN4wasm4NameENS_9allocatorIS2_EEE21__push_back_slow_pathIS2_EEvOT_(i8 + 8 | 0, i3);
 i1 = HEAP32[i8 >> 2] | 0;
 HEAP32[i4 >> 2] = i9;
 HEAP32[i13 >> 2] = HEAP32[i4 >> 2];
 i1 = __ZN4wasm6Module11getFunctionENS_4NameE(i1, i13) | 0;
 if (!i1) ___assert_fail(25822, 15772, 675, 15795);
 __ZZN4wasm14ModuleInstance12callFunctionEN6cashew7IStringERNSt3__16vectorINS_7LiteralENS3_9allocatorIS5_EEEEEN13FunctionScopeC2EPNS_8FunctionES9_(i13, i1, i6);
 HEAP32[i5 >> 2] = i8;
 HEAP32[i5 + 4 >> 2] = i13;
 __ZN4wasm7VisitorIZNS_14ModuleInstance12callFunctionEN6cashew7IStringERNSt3__16vectorINS_7LiteralENS4_9allocatorIS6_EEEEE16ExpressionRunnerNS_4FlowEE5visitEPNS_10ExpressionE(i7, i5, HEAP32[i1 + 36 >> 2] | 0);
 i8 = HEAP32[i7 + 16 >> 2] | 0;
 if (!((i8 | 0) == 0 | (i8 | 0) == (HEAP32[9052] | 0))) ___assert_fail(15808, 15772, 683, 15795);
 HEAP32[i11 >> 2] = HEAP32[i7 >> 2];
 HEAP32[i11 + 4 >> 2] = HEAP32[i7 + 4 >> 2];
 HEAP32[i11 + 8 >> 2] = HEAP32[i7 + 8 >> 2];
 HEAP32[i11 + 12 >> 2] = HEAP32[i7 + 12 >> 2];
 i2 = HEAP32[i1 + 4 >> 2] | 0;
 if (!i2) {
  HEAP32[i11 >> 2] = 0;
  i1 = i11 + 8 | 0;
  HEAP32[i1 >> 2] = 0;
  HEAP32[i1 + 4 >> 2] = 0;
  i1 = 0;
 } else i1 = HEAP32[i11 >> 2] | 0;
 if ((i2 | 0) != (i1 | 0)) ___assert_fail(15856, 15772, 686, 15795);
 HEAP32[i12 >> 2] = (HEAP32[i12 >> 2] | 0) + -1;
 i1 = HEAP32[i10 >> 2] | 0;
 i2 = i1 + -4 | 0;
 if ((HEAP32[i2 >> 2] | 0) == (i9 | 0)) i14 = i1; else ___assert_fail(15885, 15772, 688, 15795);
 while (1) {
  if ((i14 | 0) == (i2 | 0)) break;
  i12 = i14 + -4 | 0;
  HEAP32[i10 >> 2] = i12;
  i14 = i12;
 }
 __ZNSt3__16__treeINS_12__value_typeIN6cashew7IStringEN4wasm7LiteralEEENS_19__map_value_compareIS3_S6_NS_4lessIS3_EELb1EEENS_9allocatorIS6_EEED2Ev(i13);
 STACKTOP = i15;
 return;
}

function __ZNSt3__112__hash_tableINS_17__hash_value_typeIN6cashew7IStringEiEENS_22__unordered_map_hasherIS3_S4_NS_4hashIS3_EELb1EEENS_21__unordered_map_equalIS3_S4_NS_8equal_toIS3_EELb1EEENS_9allocatorIS4_EEE20__node_insert_uniqueEPNS_11__hash_nodeIS4_PvEE(i16, i15, i1) {
 i16 = i16 | 0;
 i15 = i15 | 0;
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i4 = 0, d5 = 0.0, d6 = 0.0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0;
 i9 = HEAP32[i1 + 8 >> 2] | 0;
 i2 = i9 * 33 ^ 5381;
 i14 = i1 + 4 | 0;
 HEAP32[i14 >> 2] = i2;
 i13 = i15 + 4 | 0;
 i7 = HEAP32[i13 >> 2] | 0;
 i12 = (i7 | 0) == 0;
 L1 : do if (!i12) {
  i10 = i7 + -1 | 0;
  i8 = (i10 & i7 | 0) == 0;
  if (i8) i3 = i10 & i2; else i3 = (i2 >>> 0) % (i7 >>> 0) | 0;
  i2 = HEAP32[(HEAP32[i15 >> 2] | 0) + (i3 << 2) >> 2] | 0;
  if (!i2) i11 = 12; else while (1) {
   i4 = HEAP32[i2 >> 2] | 0;
   if (!i4) {
    i11 = 12;
    break L1;
   }
   i2 = HEAP32[i4 + 4 >> 2] | 0;
   if (i8) i2 = i2 & i10; else i2 = (i2 >>> 0) % (i7 >>> 0) | 0;
   if ((i2 | 0) != (i3 | 0)) {
    i11 = 12;
    break L1;
   }
   if ((HEAP32[i4 + 8 >> 2] | 0) == (i9 | 0)) {
    i2 = 0;
    i1 = i4;
    break;
   } else i2 = i4;
  }
 } else {
  i3 = 0;
  i11 = 12;
 } while (0);
 if ((i11 | 0) == 12) {
  i8 = i15 + 12 | 0;
  d5 = +(((HEAP32[i8 >> 2] | 0) + 1 | 0) >>> 0);
  d6 = +HEAPF32[i15 + 16 >> 2];
  do if (i12 | d5 > +(i7 >>> 0) * d6) {
   if (i7 >>> 0 > 2) i2 = (i7 + -1 & i7 | 0) == 0; else i2 = 0;
   i4 = (i2 & 1 | i7 << 1) ^ 1;
   i2 = ~~+Math_ceil(+(d5 / d6)) >>> 0;
   __ZNSt3__112__hash_tableINS_17__hash_value_typeIN6cashew7IStringEiEENS_22__unordered_map_hasherIS3_S4_NS_4hashIS3_EELb1EEENS_21__unordered_map_equalIS3_S4_NS_8equal_toIS3_EELb1EEENS_9allocatorIS4_EEE6rehashEj(i15, i4 >>> 0 < i2 >>> 0 ? i2 : i4);
   i4 = HEAP32[i13 >> 2] | 0;
   i2 = HEAP32[i14 >> 2] | 0;
   i3 = i4 + -1 | 0;
   if (!(i3 & i4)) {
    i7 = i4;
    i3 = i3 & i2;
    break;
   } else {
    i7 = i4;
    i3 = (i2 >>> 0) % (i4 >>> 0) | 0;
    break;
   }
  } while (0);
  i2 = HEAP32[(HEAP32[i15 >> 2] | 0) + (i3 << 2) >> 2] | 0;
  if (!i2) {
   i2 = i15 + 8 | 0;
   HEAP32[i1 >> 2] = HEAP32[i2 >> 2];
   HEAP32[i2 >> 2] = i1;
   HEAP32[(HEAP32[i15 >> 2] | 0) + (i3 << 2) >> 2] = i2;
   i2 = HEAP32[i1 >> 2] | 0;
   if (i2 | 0) {
    i2 = HEAP32[i2 + 4 >> 2] | 0;
    i3 = i7 + -1 | 0;
    if (!(i3 & i7)) i2 = i2 & i3; else i2 = (i2 >>> 0) % (i7 >>> 0) | 0;
    HEAP32[(HEAP32[i15 >> 2] | 0) + (i2 << 2) >> 2] = i1;
   }
  } else {
   HEAP32[i1 >> 2] = HEAP32[i2 >> 2];
   HEAP32[i2 >> 2] = i1;
  }
  HEAP32[i8 >> 2] = (HEAP32[i8 >> 2] | 0) + 1;
  i2 = 1;
 }
 HEAP32[i16 >> 2] = i1;
 HEAP8[i16 + 4 >> 0] = i2;
 return;
}

function __ZNKSt3__17num_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_putES4_RNS_8ios_baseEce(i1, i26, i22, i21, d9) {
 i1 = i1 | 0;
 i26 = i26 | 0;
 i22 = i22 | 0;
 i21 = i21 | 0;
 d9 = +d9;
 var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, i18 = 0, i19 = 0, i20 = 0, i23 = 0, i24 = 0, i25 = 0;
 i18 = STACKTOP;
 STACKTOP = STACKTOP + 176 | 0;
 i12 = i18 + 76 | 0;
 i7 = i18 + 48 | 0;
 i6 = i18 + 32 | 0;
 i3 = i18 + 24 | 0;
 i2 = i18 + 8 | 0;
 i5 = i18;
 i10 = i18 + 138 | 0;
 i8 = i18 + 72 | 0;
 i11 = i18 + 80 | 0;
 i17 = i18 + 68 | 0;
 i16 = i18 + 64 | 0;
 i13 = i18 + 60 | 0;
 i14 = i18 + 56 | 0;
 i4 = i5;
 HEAP32[i4 >> 2] = 37;
 HEAP32[i4 + 4 >> 2] = 0;
 i4 = __ZNSt3__114__num_put_base14__format_floatEPcPKcj(i5 + 1 | 0, 30697, HEAP32[i22 + 4 >> 2] | 0) | 0;
 HEAP32[i8 >> 2] = i10;
 i1 = __ZNSt3__16__clocEv() | 0;
 if (i4) {
  HEAP32[i2 >> 2] = HEAP32[i22 + 8 >> 2];
  HEAPF64[i2 + 8 >> 3] = d9;
  i1 = __ZNSt3__112__snprintf_lEPcjP15__locale_structPKcz(i10, 30, i1, i5, i2) | 0;
 } else {
  HEAPF64[i3 >> 3] = d9;
  i1 = __ZNSt3__112__snprintf_lEPcjP15__locale_structPKcz(i10, 30, i1, i5, i3) | 0;
 }
 if ((i1 | 0) > 29) {
  i1 = __ZNSt3__16__clocEv() | 0;
  if (i4) {
   HEAP32[i6 >> 2] = HEAP32[i22 + 8 >> 2];
   HEAPF64[i6 + 8 >> 3] = d9;
   i2 = __ZNSt3__112__asprintf_lEPPcP15__locale_structPKcz(i8, i1, i5, i6) | 0;
  } else {
   HEAPF64[i7 >> 3] = d9;
   i2 = __ZNSt3__112__asprintf_lEPPcP15__locale_structPKcz(i8, i1, i5, i7) | 0;
  }
  i1 = HEAP32[i8 >> 2] | 0;
  if (!i1) __ZSt17__throw_bad_allocv(); else {
   i19 = i1;
   i23 = i1;
   i15 = i2;
  }
 } else {
  i19 = HEAP32[i8 >> 2] | 0;
  i23 = 0;
  i15 = i1;
 }
 i2 = i19 + i15 | 0;
 i3 = __ZNSt3__114__num_put_base18__identify_paddingEPcS1_RKNS_8ios_baseE(i19, i2, i22) | 0;
 if ((i19 | 0) != (i10 | 0)) {
  i1 = _malloc(i15 << 1) | 0;
  if (!i1) __ZSt17__throw_bad_allocv(); else {
   i20 = i19;
   i24 = i1;
   i25 = i1;
  }
 } else {
  i20 = i10;
  i24 = i11;
  i25 = 0;
 }
 i19 = __ZNKSt3__18ios_base6getlocEv(i22) | 0;
 HEAP32[i13 >> 2] = i19;
 __ZNSt3__19__num_putIcE23__widen_and_group_floatEPcS2_S2_S2_RS2_S3_RKNS_6localeE(i20, i3, i2, i24, i17, i16, i13);
 __ZNSt3__114__shared_count16__release_sharedEv(i19) | 0;
 HEAP32[i14 >> 2] = HEAP32[i26 >> 2];
 i20 = HEAP32[i17 >> 2] | 0;
 i26 = HEAP32[i16 >> 2] | 0;
 HEAP32[i12 >> 2] = HEAP32[i14 >> 2];
 i26 = __ZNSt3__116__pad_and_outputIcNS_11char_traitsIcEEEENS_19ostreambuf_iteratorIT_T0_EES6_PKS4_S8_S8_RNS_8ios_baseES4_(i12, i24, i20, i26, i22, i21) | 0;
 _free(i25);
 _free(i23);
 STACKTOP = i18;
 return i26 | 0;
}

function __ZNKSt3__18time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE17__get_white_spaceERS4_S4_RjRKNS_5ctypeIwEE(i1, i5, i6, i7, i4) {
 i1 = i1 | 0;
 i5 = i5 | 0;
 i6 = i6 | 0;
 i7 = i7 | 0;
 i4 = i4 | 0;
 var i2 = 0, i3 = 0, i8 = 0;
 L1 : while (1) {
  i1 = HEAP32[i5 >> 2] | 0;
  do if (i1) {
   i2 = HEAP32[i1 + 12 >> 2] | 0;
   if ((i2 | 0) == (HEAP32[i1 + 16 >> 2] | 0)) i1 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 36 >> 2] & 127](i1) | 0; else i1 = HEAP32[i2 >> 2] | 0;
   if ((i1 | 0) == -1) {
    HEAP32[i5 >> 2] = 0;
    i3 = 1;
    break;
   } else {
    i3 = (HEAP32[i5 >> 2] | 0) == 0;
    break;
   }
  } else i3 = 1; while (0);
  i2 = HEAP32[i6 >> 2] | 0;
  do if (i2) {
   i1 = HEAP32[i2 + 12 >> 2] | 0;
   if ((i1 | 0) == (HEAP32[i2 + 16 >> 2] | 0)) i1 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i2 >> 2] | 0) + 36 >> 2] & 127](i2) | 0; else i1 = HEAP32[i1 >> 2] | 0;
   if ((i1 | 0) != -1) if (i3) {
    i3 = i2;
    break;
   } else {
    i3 = i2;
    break L1;
   } else {
    HEAP32[i6 >> 2] = 0;
    i8 = 15;
    break;
   }
  } else i8 = 15; while (0);
  if ((i8 | 0) == 15) {
   i8 = 0;
   if (i3) {
    i3 = 0;
    break;
   } else i3 = 0;
  }
  i1 = HEAP32[i5 >> 2] | 0;
  i2 = HEAP32[i1 + 12 >> 2] | 0;
  if ((i2 | 0) == (HEAP32[i1 + 16 >> 2] | 0)) i1 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 36 >> 2] & 127](i1) | 0; else i1 = HEAP32[i2 >> 2] | 0;
  if (!(FUNCTION_TABLE_iiii[HEAP32[(HEAP32[i4 >> 2] | 0) + 12 >> 2] & 31](i4, 8192, i1) | 0)) break;
  i1 = HEAP32[i5 >> 2] | 0;
  i2 = i1 + 12 | 0;
  i3 = HEAP32[i2 >> 2] | 0;
  if ((i3 | 0) == (HEAP32[i1 + 16 >> 2] | 0)) {
   FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 40 >> 2] & 127](i1) | 0;
   continue;
  } else {
   HEAP32[i2 >> 2] = i3 + 4;
   continue;
  }
 }
 i1 = HEAP32[i5 >> 2] | 0;
 do if (i1) {
  i2 = HEAP32[i1 + 12 >> 2] | 0;
  if ((i2 | 0) == (HEAP32[i1 + 16 >> 2] | 0)) i1 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 36 >> 2] & 127](i1) | 0; else i1 = HEAP32[i2 >> 2] | 0;
  if ((i1 | 0) == -1) {
   HEAP32[i5 >> 2] = 0;
   i2 = 1;
   break;
  } else {
   i2 = (HEAP32[i5 >> 2] | 0) == 0;
   break;
  }
 } else i2 = 1; while (0);
 do if (i3) {
  i1 = HEAP32[i3 + 12 >> 2] | 0;
  if ((i1 | 0) == (HEAP32[i3 + 16 >> 2] | 0)) i1 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i3 >> 2] | 0) + 36 >> 2] & 127](i3) | 0; else i1 = HEAP32[i1 >> 2] | 0;
  if ((i1 | 0) != -1) if (i2) break; else {
   i8 = 39;
   break;
  } else {
   HEAP32[i6 >> 2] = 0;
   i8 = 37;
   break;
  }
 } else i8 = 37; while (0);
 if ((i8 | 0) == 37 ? i2 : 0) i8 = 39;
 if ((i8 | 0) == 39) HEAP32[i7 >> 2] = HEAP32[i7 >> 2] | 2;
 return;
}

function __ZNSt3__19__num_getIwE19__stage2_float_loopEwRbRcPcRS4_wwRKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEPjRSE_RjPw(i4, i9, i12, i7, i10, i2, i3, i8, i13, i14, i11, i5) {
 i4 = i4 | 0;
 i9 = i9 | 0;
 i12 = i12 | 0;
 i7 = i7 | 0;
 i10 = i10 | 0;
 i2 = i2 | 0;
 i3 = i3 | 0;
 i8 = i8 | 0;
 i13 = i13 | 0;
 i14 = i14 | 0;
 i11 = i11 | 0;
 i5 = i5 | 0;
 var i1 = 0, i6 = 0;
 L1 : do if ((i4 | 0) == (i2 | 0)) if (HEAP8[i9 >> 0] | 0) {
  HEAP8[i9 >> 0] = 0;
  i12 = HEAP32[i10 >> 2] | 0;
  HEAP32[i10 >> 2] = i12 + 1;
  HEAP8[i12 >> 0] = 46;
  i12 = HEAP8[i8 >> 0] | 0;
  if ((((i12 & 1) == 0 ? (i12 & 255) >>> 1 : HEAP32[i8 + 4 >> 2] | 0) | 0) != 0 ? (i1 = HEAP32[i14 >> 2] | 0, (i1 - i13 | 0) < 160) : 0) {
   i13 = HEAP32[i11 >> 2] | 0;
   HEAP32[i14 >> 2] = i1 + 4;
   HEAP32[i1 >> 2] = i13;
   i1 = 0;
  } else i1 = 0;
 } else i1 = -1; else {
  if ((i4 | 0) == (i3 | 0) ? (i3 = HEAP8[i8 >> 0] | 0, ((i3 & 1) == 0 ? (i3 & 255) >>> 1 : HEAP32[i8 + 4 >> 2] | 0) | 0) : 0) {
   if (!(HEAP8[i9 >> 0] | 0)) {
    i1 = -1;
    break;
   }
   i1 = HEAP32[i14 >> 2] | 0;
   if ((i1 - i13 | 0) >= 160) {
    i1 = 0;
    break;
   }
   i13 = HEAP32[i11 >> 2] | 0;
   HEAP32[i14 >> 2] = i1 + 4;
   HEAP32[i1 >> 2] = i13;
   HEAP32[i11 >> 2] = 0;
   i1 = 0;
   break;
  }
  i2 = i5 + 128 | 0;
  i1 = i5;
  while (1) {
   if ((i1 | 0) == (i2 | 0)) {
    i1 = i2;
    break;
   }
   if ((HEAP32[i1 >> 2] | 0) == (i4 | 0)) break;
   i1 = i1 + 4 | 0;
  }
  i2 = i1 - i5 | 0;
  i1 = i2 >> 2;
  if ((i2 | 0) <= 124) {
   i3 = HEAP8[30448 + i1 >> 0] | 0;
   switch (i1 | 0) {
   case 24:
   case 25:
    {
     i1 = HEAP32[i10 >> 2] | 0;
     if ((i1 | 0) != (i7 | 0) ? (HEAPU8[i1 + -1 >> 0] & 95 | 0) != (HEAPU8[i12 >> 0] & 127 | 0) : 0) {
      i1 = -1;
      break L1;
     }
     HEAP32[i10 >> 2] = i1 + 1;
     HEAP8[i1 >> 0] = i3;
     i1 = 0;
     break L1;
    }
   case 23:
   case 22:
    {
     HEAP8[i12 >> 0] = 80;
     break;
    }
   default:
    {
     i1 = i3 & 95;
     if ((((i1 | 0) == (HEAP8[i12 >> 0] | 0) ? (HEAP8[i12 >> 0] = i1 | 128, HEAP8[i9 >> 0] | 0) : 0) ? (HEAP8[i9 >> 0] = 0, i12 = HEAP8[i8 >> 0] | 0, ((i12 & 1) == 0 ? (i12 & 255) >>> 1 : HEAP32[i8 + 4 >> 2] | 0) | 0) : 0) ? (i6 = HEAP32[i14 >> 2] | 0, (i6 - i13 | 0) < 160) : 0) {
      i13 = HEAP32[i11 >> 2] | 0;
      HEAP32[i14 >> 2] = i6 + 4;
      HEAP32[i6 >> 2] = i13;
     }
    }
   }
   i14 = HEAP32[i10 >> 2] | 0;
   HEAP32[i10 >> 2] = i14 + 1;
   HEAP8[i14 >> 0] = i3;
   if ((i2 | 0) > 84) i1 = 0; else {
    HEAP32[i11 >> 2] = (HEAP32[i11 >> 2] | 0) + 1;
    i1 = 0;
   }
  } else i1 = -1;
 } while (0);
 return i1 | 0;
}

function __ZN4wasm11MergeBlocks10visitBlockEPNS_5BlockE(i1, i2) {
 i1 = i1 | 0;
 i2 = i2 | 0;
 var i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0;
 i15 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i14 = i15 + 4 | 0;
 i13 = i15;
 i12 = i2 + 12 | 0;
 i7 = i2 + 16 | 0;
 i8 = i14 + 4 | 0;
 i9 = i14 + 8 | 0;
 i10 = i14 + 8 | 0;
 i11 = (i12 | 0) == (i14 | 0);
 i1 = 0;
 while (1) {
  i2 = HEAP32[i12 >> 2] | 0;
  if (i1 >>> 0 >= (HEAP32[i7 >> 2] | 0) - i2 >> 2 >>> 0) break;
  i5 = __ZN4wasm10Expression7dynCastINS_5BlockEEEPT_v(HEAP32[i2 + (i1 << 2) >> 2] | 0) | 0;
  if (i5 | 0 ? (HEAP32[i5 + 8 >> 2] | 0) == 0 : 0) {
   HEAP32[i14 >> 2] = 0;
   HEAP32[i8 >> 2] = 0;
   HEAP32[i9 >> 2] = 0;
   i4 = 0;
   while (1) {
    if (i4 >>> 0 >= i1 >>> 0) break;
    i2 = (HEAP32[i12 >> 2] | 0) + (i4 << 2) | 0;
    i3 = HEAP32[i8 >> 2] | 0;
    if ((i3 | 0) == (HEAP32[i10 >> 2] | 0)) __ZNSt3__16vectorIPN4wasm10ExpressionENS_9allocatorIS3_EEE21__push_back_slow_pathIRKS3_EEvOT_(i14, i2); else {
     HEAP32[i3 >> 2] = HEAP32[i2 >> 2];
     HEAP32[i8 >> 2] = (HEAP32[i8 >> 2] | 0) + 4;
    }
    i4 = i4 + 1 | 0;
   }
   i6 = HEAP32[i5 + 16 >> 2] | 0;
   i4 = HEAP32[i5 + 12 >> 2] | 0;
   while (1) {
    if ((i4 | 0) == (i6 | 0)) break;
    i2 = HEAP32[i4 >> 2] | 0;
    HEAP32[i13 >> 2] = i2;
    i3 = HEAP32[i8 >> 2] | 0;
    if ((i3 | 0) == (HEAP32[i10 >> 2] | 0)) __ZNSt3__16vectorIPN4wasm10ExpressionENS_9allocatorIS3_EEE21__push_back_slow_pathIRKS3_EEvOT_(i14, i13); else {
     HEAP32[i3 >> 2] = i2;
     HEAP32[i8 >> 2] = (HEAP32[i8 >> 2] | 0) + 4;
    }
    i4 = i4 + 4 | 0;
   }
   while (1) {
    i1 = i1 + 1 | 0;
    i2 = HEAP32[i12 >> 2] | 0;
    if (i1 >>> 0 >= (HEAP32[i7 >> 2] | 0) - i2 >> 2 >>> 0) break;
    i2 = i2 + (i1 << 2) | 0;
    i3 = HEAP32[i8 >> 2] | 0;
    if ((i3 | 0) == (HEAP32[i10 >> 2] | 0)) {
     __ZNSt3__16vectorIPN4wasm10ExpressionENS_9allocatorIS3_EEE21__push_back_slow_pathIRKS3_EEvOT_(i14, i2);
     continue;
    } else {
     HEAP32[i3 >> 2] = HEAP32[i2 >> 2];
     HEAP32[i8 >> 2] = (HEAP32[i8 >> 2] | 0) + 4;
     continue;
    }
   }
   if (!i11) __ZNSt3__16vectorIPN4wasm10ExpressionENS_9allocatorIS3_EEE6assignIPS3_EENS_9enable_ifIXaasr21__is_forward_iteratorIT_EE5valuesr16is_constructibleIS3_NS_15iterator_traitsISA_E9referenceEEE5valueEvE4typeESA_SA_(i12, HEAP32[i14 >> 2] | 0, HEAP32[i8 >> 2] | 0);
   __ZNSt3__113__vector_baseIPN4wasm10ExpressionENS_9allocatorIS3_EEED2Ev(i14);
   i1 = 0;
   continue;
  }
  i1 = i1 + 1 | 0;
 }
 STACKTOP = i15;
 return;
}

function __ZNSt3__113basic_istreamIcNS_11char_traitsIcEEE6sentryC2ERS3_b(i15, i14, i6) {
 i15 = i15 | 0;
 i14 = i14 | 0;
 i6 = i6 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i16 = 0;
 i16 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i4 = i16;
 HEAP8[i15 >> 0] = 0;
 i1 = i14 + (HEAP32[(HEAP32[i14 >> 2] | 0) + -12 >> 2] | 0) | 0;
 i2 = i1 + 16 | 0;
 i3 = HEAP32[i2 >> 2] | 0;
 if (!i3) {
  i1 = HEAP32[i1 + 72 >> 2] | 0;
  if (i1 | 0) __ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEE5flushEv(i1) | 0;
  do if (!i6 ? (i5 = i14 + (HEAP32[(HEAP32[i14 >> 2] | 0) + -12 >> 2] | 0) | 0, HEAP32[i5 + 4 >> 2] & 4096 | 0) : 0) {
   i5 = __ZNKSt3__18ios_base6getlocEv(i5) | 0;
   HEAP32[i4 >> 2] = i5;
   i5 = __ZNKSt3__16locale9use_facetERNS0_2idE(i4, 38376) | 0;
   __ZNSt3__16localeD2Ev(i4);
   i1 = HEAP32[i14 + (HEAP32[(HEAP32[i14 >> 2] | 0) + -12 >> 2] | 0) + 24 >> 2] | 0;
   i4 = i5 + 8 | 0;
   i5 = i1;
   i6 = (i1 | 0) == 0;
   i7 = i5 + 12 | 0;
   i8 = i5 + 16 | 0;
   i9 = i1;
   i2 = i1;
   i10 = i2 + 12 | 0;
   i11 = i2 + 16 | 0;
   i12 = i1;
   i13 = i1;
   while (1) {
    if (i6) {
     i2 = 0;
     i1 = 0;
     break;
    }
    if ((HEAP32[i7 >> 2] | 0) == (HEAP32[i8 >> 2] | 0) ? (FUNCTION_TABLE_ii[HEAP32[(HEAP32[i9 >> 2] | 0) + 36 >> 2] & 127](i5) | 0) == -1 : 0) {
     i2 = 0;
     i1 = 0;
     break;
    }
    i3 = HEAP32[i10 >> 2] | 0;
    if ((i3 | 0) == (HEAP32[i11 >> 2] | 0)) i3 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i12 >> 2] | 0) + 36 >> 2] & 127](i2) | 0; else i3 = HEAPU8[i3 >> 0] | 0;
    if ((i3 & 255) << 24 >> 24 <= -1) break;
    if (!(HEAP16[(HEAP32[i4 >> 2] | 0) + (i3 << 24 >> 24 << 1) >> 1] & 8192)) break;
    i3 = HEAP32[i10 >> 2] | 0;
    if ((i3 | 0) == (HEAP32[i11 >> 2] | 0)) {
     FUNCTION_TABLE_ii[HEAP32[(HEAP32[i13 >> 2] | 0) + 40 >> 2] & 127](i2) | 0;
     continue;
    } else {
     HEAP32[i10 >> 2] = i3 + 1;
     continue;
    }
   }
   if (i1 | 0) {
    if ((HEAP32[i2 + 12 >> 2] | 0) != (HEAP32[i2 + 16 >> 2] | 0)) break;
    if ((FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 36 >> 2] & 127](i2) | 0) != -1) break;
   }
   i12 = i14 + (HEAP32[(HEAP32[i14 >> 2] | 0) + -12 >> 2] | 0) | 0;
   i13 = i12 + 16 | 0;
   HEAP32[i13 >> 2] = HEAP32[i13 >> 2] | (HEAP32[i12 + 24 >> 2] | 0) == 0 | 6;
  } while (0);
  HEAP8[i15 >> 0] = (HEAP32[i14 + (HEAP32[(HEAP32[i14 >> 2] | 0) + -12 >> 2] | 0) + 16 >> 2] | 0) == 0 & 1;
 } else HEAP32[i2 >> 2] = i3 | (HEAP32[i1 + 24 >> 2] | 0) == 0 | 4;
 STACKTOP = i16;
 return;
}

function __ZNKSt3__17num_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_putES4_RNS_8ios_baseEwd(i1, i24, i19, i18, d7) {
 i1 = i1 | 0;
 i24 = i24 | 0;
 i19 = i19 | 0;
 i18 = i18 | 0;
 d7 = +d7;
 var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, i20 = 0, i21 = 0, i22 = 0, i23 = 0, i25 = 0;
 i21 = STACKTOP;
 STACKTOP = STACKTOP + 336 | 0;
 i10 = i21 + 296 | 0;
 i5 = i21 + 32 | 0;
 i3 = i21 + 24 | 0;
 i2 = i21 + 8 | 0;
 i4 = i21;
 i8 = i21 + 300 | 0;
 i6 = i21 + 292 | 0;
 i9 = i21 + 64 | 0;
 i15 = i21 + 60 | 0;
 i14 = i21 + 56 | 0;
 i11 = i21 + 52 | 0;
 i12 = i21 + 48 | 0;
 i25 = i4;
 HEAP32[i25 >> 2] = 37;
 HEAP32[i25 + 4 >> 2] = 0;
 i25 = __ZNSt3__114__num_put_base14__format_floatEPcPKcj(i4 + 1 | 0, 44318, HEAP32[i19 + 4 >> 2] | 0) | 0;
 HEAP32[i6 >> 2] = i8;
 i1 = __ZNSt3__16__clocEv() | 0;
 if (i25) {
  HEAP32[i2 >> 2] = HEAP32[i19 + 8 >> 2];
  HEAPF64[i2 + 8 >> 3] = d7;
  i1 = __ZNSt3__112__snprintf_lEPcjP15__locale_structPKcz(i8, 30, i1, i4, i2) | 0;
 } else {
  HEAPF64[i3 >> 3] = d7;
  i1 = __ZNSt3__112__snprintf_lEPcjP15__locale_structPKcz(i8, 30, i1, i4, i3) | 0;
 }
 if ((i1 | 0) > 29) {
  i2 = __ZNSt3__16__clocEv() | 0;
  HEAP32[i5 >> 2] = HEAP32[i19 + 8 >> 2];
  HEAPF64[i5 + 8 >> 3] = d7;
  i2 = __ZNSt3__112__asprintf_lEPPcP15__locale_structPKcz(i6, i2, i4, i5) | 0;
  i1 = HEAP32[i6 >> 2] | 0;
  if (!i1) __ZSt17__throw_bad_allocv(); else {
   i16 = i1;
   i22 = i1;
   i13 = i2;
  }
 } else {
  i16 = HEAP32[i6 >> 2] | 0;
  i22 = 0;
  i13 = i1;
 }
 i2 = i16 + i13 | 0;
 i3 = __ZNSt3__114__num_put_base18__identify_paddingEPcS1_RKNS_8ios_baseE(i16, i2, i19) | 0;
 if ((i16 | 0) != (i8 | 0)) {
  i1 = _malloc(i13 << 3) | 0;
  if (!i1) __ZSt17__throw_bad_allocv(); else {
   i17 = i16;
   i20 = i1;
   i23 = i1;
  }
 } else {
  i17 = i8;
  i20 = i9;
  i23 = 0;
 }
 i25 = __ZNKSt3__18ios_base6getlocEv(i19) | 0;
 HEAP32[i11 >> 2] = i25;
 __ZNSt3__19__num_putIwE23__widen_and_group_floatEPcS2_S2_PwRS3_S4_RKNS_6localeE(i17, i3, i2, i20, i15, i14, i11);
 __ZNSt3__114__shared_count16__release_sharedEv(i25) | 0;
 HEAP32[i12 >> 2] = HEAP32[i24 >> 2];
 i25 = HEAP32[i15 >> 2] | 0;
 i1 = HEAP32[i14 >> 2] | 0;
 HEAP32[i10 >> 2] = HEAP32[i12 >> 2];
 i1 = __ZNSt3__116__pad_and_outputIwNS_11char_traitsIwEEEENS_19ostreambuf_iteratorIT_T0_EES6_PKS4_S8_S8_RNS_8ios_baseES4_(i10, i20, i25, i1, i19, i18) | 0;
 HEAP32[i24 >> 2] = i1;
 if (i23 | 0) _free(i23);
 _free(i22);
 STACKTOP = i21;
 return i1 | 0;
}

function __ZNKSt3__17num_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_putES4_RNS_8ios_baseEcd(i1, i24, i20, i19, d7) {
 i1 = i1 | 0;
 i24 = i24 | 0;
 i20 = i20 | 0;
 i19 = i19 | 0;
 d7 = +d7;
 var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, i18 = 0, i21 = 0, i22 = 0, i23 = 0, i25 = 0;
 i16 = STACKTOP;
 STACKTOP = STACKTOP + 160 | 0;
 i10 = i16 + 68 | 0;
 i5 = i16 + 32 | 0;
 i3 = i16 + 24 | 0;
 i2 = i16 + 8 | 0;
 i4 = i16;
 i8 = i16 + 130 | 0;
 i6 = i16 + 64 | 0;
 i9 = i16 + 72 | 0;
 i15 = i16 + 60 | 0;
 i14 = i16 + 56 | 0;
 i11 = i16 + 52 | 0;
 i12 = i16 + 48 | 0;
 i25 = i4;
 HEAP32[i25 >> 2] = 37;
 HEAP32[i25 + 4 >> 2] = 0;
 i25 = __ZNSt3__114__num_put_base14__format_floatEPcPKcj(i4 + 1 | 0, 44318, HEAP32[i20 + 4 >> 2] | 0) | 0;
 HEAP32[i6 >> 2] = i8;
 i1 = __ZNSt3__16__clocEv() | 0;
 if (i25) {
  HEAP32[i2 >> 2] = HEAP32[i20 + 8 >> 2];
  HEAPF64[i2 + 8 >> 3] = d7;
  i1 = __ZNSt3__112__snprintf_lEPcjP15__locale_structPKcz(i8, 30, i1, i4, i2) | 0;
 } else {
  HEAPF64[i3 >> 3] = d7;
  i1 = __ZNSt3__112__snprintf_lEPcjP15__locale_structPKcz(i8, 30, i1, i4, i3) | 0;
 }
 if ((i1 | 0) > 29) {
  i2 = __ZNSt3__16__clocEv() | 0;
  HEAP32[i5 >> 2] = HEAP32[i20 + 8 >> 2];
  HEAPF64[i5 + 8 >> 3] = d7;
  i2 = __ZNSt3__112__asprintf_lEPPcP15__locale_structPKcz(i6, i2, i4, i5) | 0;
  i1 = HEAP32[i6 >> 2] | 0;
  if (!i1) __ZSt17__throw_bad_allocv(); else {
   i17 = i1;
   i21 = i1;
   i13 = i2;
  }
 } else {
  i17 = HEAP32[i6 >> 2] | 0;
  i21 = 0;
  i13 = i1;
 }
 i2 = i17 + i13 | 0;
 i3 = __ZNSt3__114__num_put_base18__identify_paddingEPcS1_RKNS_8ios_baseE(i17, i2, i20) | 0;
 if ((i17 | 0) != (i8 | 0)) {
  i1 = _malloc(i13 << 1) | 0;
  if (!i1) __ZSt17__throw_bad_allocv(); else {
   i18 = i17;
   i22 = i1;
   i23 = i1;
  }
 } else {
  i18 = i8;
  i22 = i9;
  i23 = 0;
 }
 i25 = __ZNKSt3__18ios_base6getlocEv(i20) | 0;
 HEAP32[i11 >> 2] = i25;
 __ZNSt3__19__num_putIcE23__widen_and_group_floatEPcS2_S2_S2_RS2_S3_RKNS_6localeE(i18, i3, i2, i22, i15, i14, i11);
 __ZNSt3__114__shared_count16__release_sharedEv(i25) | 0;
 HEAP32[i12 >> 2] = HEAP32[i24 >> 2];
 i24 = HEAP32[i15 >> 2] | 0;
 i25 = HEAP32[i14 >> 2] | 0;
 HEAP32[i10 >> 2] = HEAP32[i12 >> 2];
 i25 = __ZNSt3__116__pad_and_outputIcNS_11char_traitsIcEEEENS_19ostreambuf_iteratorIT_T0_EES6_PKS4_S8_S8_RNS_8ios_baseES4_(i10, i22, i24, i25, i20, i19) | 0;
 _free(i23);
 _free(i21);
 STACKTOP = i16;
 return i25 | 0;
}

function __ZN4wasm14SimplifyLocals15doNoteNonLinearEPS0_PPNS_10ExpressionE(i7, i1) {
 i7 = i7 | 0;
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i8 = 0;
 i8 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i5 = i8 + 24 | 0;
 i6 = i8 + 8 | 0;
 i4 = i8;
 i1 = HEAP32[i1 >> 2] | 0;
 L1 : do if ((HEAP32[i1 >> 2] | 0) != 4) {
  if (!(__ZN4wasm10Expression2isINS_5BlockEEEbv(i1) | 0)) {
   if ((HEAP32[i1 >> 2] | 0) == 2) {
    i6 = (__ZN4wasm10Expression4castINS_2IfEEEPT_v(i1) | 0) + 16 | 0;
    if (!(HEAP32[i6 >> 2] | 0)) {
     i2 = 16;
     break;
    }
    ___assert_fail(23213, 22896, 123, 23240);
   }
   if (__ZN4wasm10Expression2isINS_6SwitchEEEbv(i1) | 0) {
    i3 = __ZN4wasm10Expression4castINS_6SwitchEEEPT_v(i1) | 0;
    i1 = HEAP32[i3 + 12 >> 2] | 0;
    i2 = i7 + 64 | 0;
    i3 = HEAP32[i3 + 8 >> 2] | 0;
    while (1) {
     if ((i3 | 0) == (i1 | 0)) {
      i2 = 16;
      break L1;
     }
     HEAP32[i4 >> 2] = HEAP32[i3 >> 2];
     __ZNSt3__16__treeIN4wasm4NameENS_4lessIS2_EENS_9allocatorIS2_EEE15__insert_uniqueERKS2_(i5, i2, i4);
     i3 = i3 + 4 | 0;
    }
   } else i2 = 16;
  }
 } else {
  i1 = __ZN4wasm10Expression4castINS_5BreakEEEPT_v(i1) | 0;
  if (HEAP32[i1 + 12 >> 2] | 0) {
   __ZNSt3__16__treeIN4wasm4NameENS_4lessIS2_EENS_9allocatorIS2_EEE15__insert_uniqueERKS2_(i5, i7 + 64 | 0, i1 + 8 | 0);
   i2 = 16;
   break;
  }
  i4 = __ZNSt3__13mapIN4wasm4NameENS_6vectorINS1_14SimplifyLocals10BlockBreakENS_9allocatorIS5_EEEENS_4lessIS2_EENS6_INS_4pairIKS2_S8_EEEEEixERSC_(i7 + 52 | 0, i1 + 8 | 0) | 0;
  HEAP32[i6 >> 2] = i1;
  i1 = i6 + 4 | 0;
  __ZNSt3__16__treeINS_12__value_typeIjN4wasm14SimplifyLocals12SinkableInfoEEENS_19__map_value_compareIjS5_NS_4lessIjEELb1EEENS_9allocatorIS5_EEEC2EOSC_(i1, i7 + 40 | 0);
  i2 = i4 + 4 | 0;
  i3 = HEAP32[i2 >> 2] | 0;
  if (i3 >>> 0 < (HEAP32[i4 + 8 >> 2] | 0) >>> 0) {
   __ZN4wasm14SimplifyLocals10BlockBreakC2EOS1_(i3, i6);
   HEAP32[i2 >> 2] = (HEAP32[i2 >> 2] | 0) + 16;
  } else __ZNSt3__16vectorIN4wasm14SimplifyLocals10BlockBreakENS_9allocatorIS3_EEE21__push_back_slow_pathIS3_EEvOT_(i4, i6);
  __ZNSt3__16__treeINS_12__value_typeIjN4wasm14SimplifyLocals12SinkableInfoEEENS_19__map_value_compareIjS5_NS_4lessIjEELb1EEENS_9allocatorIS5_EEED2Ev(i1);
  i2 = 16;
 } while (0);
 if ((i2 | 0) == 16) __ZNSt3__16__treeINS_12__value_typeIjN4wasm14SimplifyLocals12SinkableInfoEEENS_19__map_value_compareIjS5_NS_4lessIjEELb1EEENS_9allocatorIS5_EEE5clearEv(i7 + 40 | 0);
 STACKTOP = i8;
 return;
}

function __ZNSt3__110__stdinbufIcE9__getcharEb(i11, i14) {
 i11 = i11 | 0;
 i14 = i14 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i12 = 0, i13 = 0, i15 = 0, i16 = 0, i17 = 0, i18 = 0;
 i16 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i13 = i16 + 16 | 0;
 i12 = i16 + 8 | 0;
 i8 = i16 + 4 | 0;
 i9 = i16;
 i3 = i11 + 52 | 0;
 if (HEAP8[i3 >> 0] | 0) {
  i2 = i11 + 48 | 0;
  i1 = HEAP32[i2 >> 2] | 0;
  if (i14) {
   HEAP32[i2 >> 2] = -1;
   HEAP8[i3 >> 0] = 0;
  }
 } else {
  i1 = HEAP32[i11 + 44 >> 2] | 0;
  i1 = (i1 | 0) > 1 ? i1 : 1;
  i10 = i11 + 32 | 0;
  i3 = 0;
  while (1) {
   if ((i3 | 0) >= (i1 | 0)) {
    i15 = 8;
    break;
   }
   i2 = _getc(HEAP32[i10 >> 2] | 0) | 0;
   if ((i2 | 0) == -1) {
    i1 = -1;
    break;
   }
   HEAP8[i13 + i3 >> 0] = i2;
   i3 = i3 + 1 | 0;
  }
  if ((i15 | 0) == 8) {
   do if (!(HEAP8[i11 + 53 >> 0] | 0)) {
    i5 = i11 + 40 | 0;
    i6 = i11 + 36 | 0;
    i7 = i12 + 1 | 0;
    L11 : while (1) {
     i17 = HEAP32[i5 >> 2] | 0;
     i3 = i17;
     i2 = HEAP32[i3 >> 2] | 0;
     i3 = HEAP32[i3 + 4 >> 2] | 0;
     i18 = HEAP32[i6 >> 2] | 0;
     i4 = i13 + i1 | 0;
     switch (FUNCTION_TABLE_iiiiiiiii[HEAP32[(HEAP32[i18 >> 2] | 0) + 16 >> 2] & 15](i18, i17, i13, i4, i8, i12, i7, i9) | 0) {
     case 3:
      {
       i15 = 15;
       break L11;
      }
     case 2:
      {
       i15 = 17;
       break L11;
      }
     case 1:
      break;
     default:
      break L11;
     }
     i18 = HEAP32[i5 >> 2] | 0;
     HEAP32[i18 >> 2] = i2;
     HEAP32[i18 + 4 >> 2] = i3;
     if ((i1 | 0) == 8) {
      i15 = 17;
      break;
     }
     i2 = _getc(HEAP32[i10 >> 2] | 0) | 0;
     if ((i2 | 0) == -1) {
      i15 = 17;
      break;
     }
     HEAP8[i4 >> 0] = i2;
     i1 = i1 + 1 | 0;
    }
    if ((i15 | 0) == 15) HEAP8[i12 >> 0] = HEAP8[i13 >> 0] | 0; else if ((i15 | 0) == 17) {
     i1 = -1;
     break;
    }
    i15 = 18;
   } else {
    HEAP8[i12 >> 0] = HEAP8[i13 >> 0] | 0;
    i15 = 18;
   } while (0);
   L21 : do if ((i15 | 0) == 18) {
    if (i14) {
     i1 = HEAP8[i12 >> 0] | 0;
     HEAP32[i11 + 48 >> 2] = i1 & 255;
    } else {
     while (1) {
      if ((i1 | 0) <= 0) break;
      i1 = i1 + -1 | 0;
      if ((_ungetc(HEAPU8[i13 + i1 >> 0] | 0, HEAP32[i10 >> 2] | 0) | 0) == -1) {
       i1 = -1;
       break L21;
      }
     }
     i1 = HEAP8[i12 >> 0] | 0;
    }
    i1 = i1 & 255;
   } while (0);
  }
 }
 STACKTOP = i16;
 return i1 | 0;
}

function __ZNKSt3__18time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE13__get_percentERS4_S4_RjRKNS_5ctypeIcEE(i1, i6, i7, i8, i3) {
 i1 = i1 | 0;
 i6 = i6 | 0;
 i7 = i7 | 0;
 i8 = i8 | 0;
 i3 = i3 | 0;
 var i2 = 0, i4 = 0, i5 = 0;
 i1 = HEAP32[i6 >> 2] | 0;
 do if (i1) {
  if ((HEAP32[i1 + 12 >> 2] | 0) == (HEAP32[i1 + 16 >> 2] | 0)) if ((FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 36 >> 2] & 127](i1) | 0) == -1) {
   HEAP32[i6 >> 2] = 0;
   i1 = 0;
   break;
  } else {
   i1 = HEAP32[i6 >> 2] | 0;
   break;
  }
 } else i1 = 0; while (0);
 i2 = (i1 | 0) == 0;
 i1 = HEAP32[i7 >> 2] | 0;
 do if (i1) {
  if ((HEAP32[i1 + 12 >> 2] | 0) == (HEAP32[i1 + 16 >> 2] | 0) ? (FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 36 >> 2] & 127](i1) | 0) == -1 : 0) {
   HEAP32[i7 >> 2] = 0;
   i5 = 11;
   break;
  }
  if (i2) {
   i4 = i1;
   i5 = 13;
  } else i5 = 12;
 } else i5 = 11; while (0);
 if ((i5 | 0) == 11) if (i2) i5 = 12; else {
  i4 = 0;
  i5 = 13;
 }
 L16 : do if ((i5 | 0) == 12) HEAP32[i8 >> 2] = HEAP32[i8 >> 2] | 6; else if ((i5 | 0) == 13) {
  i1 = HEAP32[i6 >> 2] | 0;
  i2 = HEAP32[i1 + 12 >> 2] | 0;
  if ((i2 | 0) == (HEAP32[i1 + 16 >> 2] | 0)) i1 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 36 >> 2] & 127](i1) | 0; else i1 = HEAPU8[i2 >> 0] | 0;
  if ((FUNCTION_TABLE_iiii[HEAP32[(HEAP32[i3 >> 2] | 0) + 36 >> 2] & 31](i3, i1 & 255, 0) | 0) << 24 >> 24 != 37) {
   HEAP32[i8 >> 2] = HEAP32[i8 >> 2] | 4;
   break;
  }
  i1 = HEAP32[i6 >> 2] | 0;
  i2 = i1 + 12 | 0;
  i3 = HEAP32[i2 >> 2] | 0;
  if ((i3 | 0) == (HEAP32[i1 + 16 >> 2] | 0)) {
   FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 40 >> 2] & 127](i1) | 0;
   i1 = HEAP32[i6 >> 2] | 0;
   if (!i1) i1 = 0; else i5 = 21;
  } else {
   HEAP32[i2 >> 2] = i3 + 1;
   i5 = 21;
  }
  do if ((i5 | 0) == 21) if ((HEAP32[i1 + 12 >> 2] | 0) == (HEAP32[i1 + 16 >> 2] | 0)) if ((FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 36 >> 2] & 127](i1) | 0) == -1) {
   HEAP32[i6 >> 2] = 0;
   i1 = 0;
   break;
  } else {
   i1 = HEAP32[i6 >> 2] | 0;
   break;
  } while (0);
  i1 = (i1 | 0) == 0;
  do if (i4) {
   if ((HEAP32[i4 + 12 >> 2] | 0) == (HEAP32[i4 + 16 >> 2] | 0) ? (FUNCTION_TABLE_ii[HEAP32[(HEAP32[i4 >> 2] | 0) + 36 >> 2] & 127](i4) | 0) == -1 : 0) {
    HEAP32[i7 >> 2] = 0;
    i5 = 30;
    break;
   }
   if (i1) break L16;
  } else i5 = 30; while (0);
  if ((i5 | 0) == 30 ? !i1 : 0) break;
  HEAP32[i8 >> 2] = HEAP32[i8 >> 2] | 2;
 } while (0);
 return;
}

function __ZNSt3__112__hash_tableIN6cashew7IStringENS_4hashIS2_EENS_8equal_toIS2_EENS_9allocatorIS2_EEE20__node_insert_uniqueEPNS_11__hash_nodeIS2_PvEE(i16, i15, i1) {
 i16 = i16 | 0;
 i15 = i15 | 0;
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i4 = 0, d5 = 0.0, d6 = 0.0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0;
 i9 = HEAP32[i1 + 8 >> 2] | 0;
 i2 = i9 * 33 ^ 5381;
 i14 = i1 + 4 | 0;
 HEAP32[i14 >> 2] = i2;
 i13 = i15 + 4 | 0;
 i7 = HEAP32[i13 >> 2] | 0;
 i12 = (i7 | 0) == 0;
 L1 : do if (!i12) {
  i10 = i7 + -1 | 0;
  i8 = (i10 & i7 | 0) == 0;
  if (i8) i3 = i10 & i2; else i3 = (i2 >>> 0) % (i7 >>> 0) | 0;
  i2 = HEAP32[(HEAP32[i15 >> 2] | 0) + (i3 << 2) >> 2] | 0;
  if (!i2) i11 = 12; else while (1) {
   i4 = HEAP32[i2 >> 2] | 0;
   if (!i4) {
    i11 = 12;
    break L1;
   }
   i2 = HEAP32[i4 + 4 >> 2] | 0;
   if (i8) i2 = i2 & i10; else i2 = (i2 >>> 0) % (i7 >>> 0) | 0;
   if ((i2 | 0) != (i3 | 0)) {
    i11 = 12;
    break L1;
   }
   if ((HEAP32[i4 + 8 >> 2] | 0) == (i9 | 0)) {
    i2 = 0;
    i1 = i4;
    break;
   } else i2 = i4;
  }
 } else {
  i3 = 0;
  i11 = 12;
 } while (0);
 if ((i11 | 0) == 12) {
  i8 = i15 + 12 | 0;
  d5 = +(((HEAP32[i8 >> 2] | 0) + 1 | 0) >>> 0);
  d6 = +HEAPF32[i15 + 16 >> 2];
  do if (i12 | d5 > +(i7 >>> 0) * d6) {
   if (i7 >>> 0 > 2) i2 = (i7 + -1 & i7 | 0) == 0; else i2 = 0;
   i4 = (i2 & 1 | i7 << 1) ^ 1;
   i2 = ~~+Math_ceil(+(d5 / d6)) >>> 0;
   __ZNSt3__112__hash_tableIN6cashew7IStringENS_4hashIS2_EENS_8equal_toIS2_EENS_9allocatorIS2_EEE6rehashEj(i15, i4 >>> 0 < i2 >>> 0 ? i2 : i4);
   i4 = HEAP32[i13 >> 2] | 0;
   i2 = HEAP32[i14 >> 2] | 0;
   i3 = i4 + -1 | 0;
   if (!(i3 & i4)) {
    i7 = i4;
    i3 = i3 & i2;
    break;
   } else {
    i7 = i4;
    i3 = (i2 >>> 0) % (i4 >>> 0) | 0;
    break;
   }
  } while (0);
  i2 = HEAP32[(HEAP32[i15 >> 2] | 0) + (i3 << 2) >> 2] | 0;
  if (!i2) {
   i2 = i15 + 8 | 0;
   HEAP32[i1 >> 2] = HEAP32[i2 >> 2];
   HEAP32[i2 >> 2] = i1;
   HEAP32[(HEAP32[i15 >> 2] | 0) + (i3 << 2) >> 2] = i2;
   i2 = HEAP32[i1 >> 2] | 0;
   if (i2 | 0) {
    i2 = HEAP32[i2 + 4 >> 2] | 0;
    i3 = i7 + -1 | 0;
    if (!(i3 & i7)) i2 = i2 & i3; else i2 = (i2 >>> 0) % (i7 >>> 0) | 0;
    HEAP32[(HEAP32[i15 >> 2] | 0) + (i2 << 2) >> 2] = i1;
   }
  } else {
   HEAP32[i1 >> 2] = HEAP32[i2 >> 2];
   HEAP32[i2 >> 2] = i1;
  }
  HEAP32[i8 >> 2] = (HEAP32[i8 >> 2] | 0) + 1;
  i2 = 1;
 }
 HEAP32[i16 >> 2] = i1;
 HEAP8[i16 + 4 >> 0] = i2;
 return;
}

function __ZN4wasm7VisitorINS_16PrintSExpressionEvE5visitEPNS_10ExpressionE(i3, i2) {
 i3 = i3 | 0;
 i2 = i2 | 0;
 var i1 = 0, i4 = 0;
 i4 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i1 = i4;
 if (!i2) ___assert_fail(22690, 25274, 68, 22695);
 do switch (HEAP32[i2 >> 2] | 0) {
 case 1:
  {
   __ZN4wasm16PrintSExpression10visitBlockEPNS_5BlockE(i3, i2);
   break;
  }
 case 2:
  {
   __ZN4wasm16PrintSExpression7visitIfEPNS_2IfE(i3, i2);
   break;
  }
 case 3:
  {
   __ZN4wasm16PrintSExpression9visitLoopEPNS_4LoopE(i3, i2);
   break;
  }
 case 4:
  {
   __ZN4wasm16PrintSExpression10visitBreakEPNS_5BreakE(i3, i2);
   break;
  }
 case 5:
  {
   __ZN4wasm16PrintSExpression11visitSwitchEPNS_6SwitchE(i3, i2);
   break;
  }
 case 6:
  {
   __ZN4wasm16PrintSExpression9visitCallEPNS_4CallE(i3, i2);
   break;
  }
 case 7:
  {
   __ZN4wasm16PrintSExpression15visitCallImportEPNS_10CallImportE(i3, i2);
   break;
  }
 case 8:
  {
   __ZN4wasm16PrintSExpression17visitCallIndirectEPNS_12CallIndirectE(i3, i2);
   break;
  }
 case 9:
  {
   __ZN4wasm16PrintSExpression13visitGetLocalEPNS_8GetLocalE(i3, i2);
   break;
  }
 case 10:
  {
   __ZN4wasm16PrintSExpression13visitSetLocalEPNS_8SetLocalE(i3, i2);
   break;
  }
 case 11:
  {
   __ZN4wasm16PrintSExpression9visitLoadEPNS_4LoadE(i3, i2);
   break;
  }
 case 12:
  {
   __ZN4wasm16PrintSExpression10visitStoreEPNS_5StoreE(i3, i2);
   break;
  }
 case 13:
  {
   i3 = HEAP32[i3 >> 2] | 0;
   i2 = i2 + 8 | 0;
   HEAP32[i1 >> 2] = HEAP32[i2 >> 2];
   HEAP32[i1 + 4 >> 2] = HEAP32[i2 + 4 >> 2];
   HEAP32[i1 + 8 >> 2] = HEAP32[i2 + 8 >> 2];
   HEAP32[i1 + 12 >> 2] = HEAP32[i2 + 12 >> 2];
   __ZN4wasmlsERNSt3__113basic_ostreamIcNS0_11char_traitsIcEEEENS_7LiteralE(i3, i1) | 0;
   break;
  }
 case 14:
  {
   __ZN4wasm16PrintSExpression10visitUnaryEPNS_5UnaryE(i3, i2);
   break;
  }
 case 15:
  {
   __ZN4wasm16PrintSExpression11visitBinaryEPNS_6BinaryE(i3, i2);
   break;
  }
 case 16:
  {
   __ZN4wasm16PrintSExpression11visitSelectEPNS_6SelectE(i3, i2);
   break;
  }
 case 17:
  {
   __ZN4wasm16PrintSExpression11visitReturnEPNS_6ReturnE(i3, i2);
   break;
  }
 case 18:
  {
   __ZN4wasm16PrintSExpression9visitHostEPNS_4HostE(i3, i2);
   break;
  }
 case 19:
  {
   __ZN4wasm16PrintSExpression8visitNopEPNS_3NopE(i3, i2);
   break;
  }
 case 20:
  {
   __ZN4wasm16PrintSExpression16visitUnreachableEPNS_11UnreachableE(i3, i2);
   break;
  }
 default:
  {}
 } while (0);
 STACKTOP = i4;
 return;
}

function __ZNSt3__110__stdinbufIwE9__getcharEb(i11, i14) {
 i11 = i11 | 0;
 i14 = i14 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i12 = 0, i13 = 0, i15 = 0, i16 = 0, i17 = 0, i18 = 0;
 i16 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i13 = i16 + 16 | 0;
 i12 = i16 + 8 | 0;
 i8 = i16 + 4 | 0;
 i9 = i16;
 i3 = i11 + 52 | 0;
 if (HEAP8[i3 >> 0] | 0) {
  i2 = i11 + 48 | 0;
  i1 = HEAP32[i2 >> 2] | 0;
  if (i14) {
   HEAP32[i2 >> 2] = -1;
   HEAP8[i3 >> 0] = 0;
  }
 } else {
  i1 = HEAP32[i11 + 44 >> 2] | 0;
  i1 = (i1 | 0) > 1 ? i1 : 1;
  i10 = i11 + 32 | 0;
  i3 = 0;
  while (1) {
   if ((i3 | 0) >= (i1 | 0)) {
    i15 = 8;
    break;
   }
   i2 = _getc(HEAP32[i10 >> 2] | 0) | 0;
   if ((i2 | 0) == -1) {
    i1 = -1;
    break;
   }
   HEAP8[i13 + i3 >> 0] = i2;
   i3 = i3 + 1 | 0;
  }
  if ((i15 | 0) == 8) {
   do if (!(HEAP8[i11 + 53 >> 0] | 0)) {
    i5 = i11 + 40 | 0;
    i6 = i11 + 36 | 0;
    i7 = i12 + 4 | 0;
    L11 : while (1) {
     i17 = HEAP32[i5 >> 2] | 0;
     i3 = i17;
     i2 = HEAP32[i3 >> 2] | 0;
     i3 = HEAP32[i3 + 4 >> 2] | 0;
     i18 = HEAP32[i6 >> 2] | 0;
     i4 = i13 + i1 | 0;
     switch (FUNCTION_TABLE_iiiiiiiii[HEAP32[(HEAP32[i18 >> 2] | 0) + 16 >> 2] & 15](i18, i17, i13, i4, i8, i12, i7, i9) | 0) {
     case 3:
      {
       i15 = 15;
       break L11;
      }
     case 2:
      {
       i15 = 17;
       break L11;
      }
     case 1:
      break;
     default:
      break L11;
     }
     i18 = HEAP32[i5 >> 2] | 0;
     HEAP32[i18 >> 2] = i2;
     HEAP32[i18 + 4 >> 2] = i3;
     if ((i1 | 0) == 8) {
      i15 = 17;
      break;
     }
     i2 = _getc(HEAP32[i10 >> 2] | 0) | 0;
     if ((i2 | 0) == -1) {
      i15 = 17;
      break;
     }
     HEAP8[i4 >> 0] = i2;
     i1 = i1 + 1 | 0;
    }
    if ((i15 | 0) == 15) HEAP32[i12 >> 2] = HEAP8[i13 >> 0]; else if ((i15 | 0) == 17) {
     i1 = -1;
     break;
    }
    i15 = 18;
   } else {
    HEAP32[i12 >> 2] = HEAP8[i13 >> 0];
    i15 = 18;
   } while (0);
   L21 : do if ((i15 | 0) == 18) {
    if (i14) {
     i1 = HEAP32[i12 >> 2] | 0;
     HEAP32[i11 + 48 >> 2] = i1;
     break;
    }
    while (1) {
     if ((i1 | 0) <= 0) break;
     i1 = i1 + -1 | 0;
     if ((_ungetc(HEAP8[i13 + i1 >> 0] | 0, HEAP32[i10 >> 2] | 0) | 0) == -1) {
      i1 = -1;
      break L21;
     }
    }
    i1 = HEAP32[i12 >> 2] | 0;
   } while (0);
  }
 }
 STACKTOP = i16;
 return i1 | 0;
}

function __ZN4wasm7Builder12makeFunctionENS_4NameEONSt3__16vectorINS_8NameTypeENS2_9allocatorIS4_EEEENS_8WasmTypeES8_PNS_10ExpressionE(i1, i3, i8, i4, i13, i2) {
 i1 = i1 | 0;
 i3 = i3 | 0;
 i8 = i8 | 0;
 i4 = i4 | 0;
 i13 = i13 | 0;
 i2 = i2 | 0;
 var i5 = 0, i6 = 0, i7 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i14 = 0;
 i14 = __ZN10MixedArena5allocIN4wasm8FunctionEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 HEAP32[i14 >> 2] = HEAP32[i3 >> 2];
 HEAP32[i14 + 4 >> 2] = i4;
 HEAP32[i14 + 36 >> 2] = i2;
 i5 = HEAP32[i8 + 4 >> 2] | 0;
 i6 = i14 + 12 | 0;
 i7 = i14 + 16 | 0;
 i4 = i14 + 8 | 0;
 i9 = i14 + 40 | 0;
 i10 = i14 + 44 | 0;
 i11 = i14 + 52 | 0;
 i12 = i14 + 48 | 0;
 i3 = HEAP32[i8 >> 2] | 0;
 while (1) {
  if ((i3 | 0) == (i5 | 0)) break;
  i1 = i3 + 4 | 0;
  i2 = HEAP32[i6 >> 2] | 0;
  if ((i2 | 0) == (HEAP32[i7 >> 2] | 0)) __ZNSt3__16vectorIN4wasm8WasmTypeENS_9allocatorIS2_EEE21__push_back_slow_pathIRKS2_EEvOT_(i4, i1); else {
   HEAP32[i2 >> 2] = HEAP32[i1 >> 2];
   HEAP32[i6 >> 2] = i2 + 4;
  }
  i8 = (HEAP32[i10 >> 2] | 0) - (HEAP32[i9 >> 2] | 0) >> 2;
  i1 = __ZNSt3__13mapIN4wasm4NameEjNS_4lessIS2_EENS_9allocatorINS_4pairIKS2_jEEEEEixERS7_(i11, i3) | 0;
  HEAP32[i1 >> 2] = i8;
  i1 = HEAP32[i10 >> 2] | 0;
  if ((i1 | 0) == (HEAP32[i12 >> 2] | 0)) __ZNSt3__16vectorIN4wasm4NameENS_9allocatorIS2_EEE21__push_back_slow_pathIRKS2_EEvOT_(i9, i3); else {
   HEAP32[i1 >> 2] = HEAP32[i3 >> 2];
   HEAP32[i10 >> 2] = (HEAP32[i10 >> 2] | 0) + 4;
  }
  i3 = i3 + 8 | 0;
 }
 i4 = HEAP32[i13 + 4 >> 2] | 0;
 i5 = i14 + 24 | 0;
 i6 = i14 + 28 | 0;
 i7 = i14 + 20 | 0;
 i3 = HEAP32[i13 >> 2] | 0;
 while (1) {
  if ((i3 | 0) == (i4 | 0)) break;
  i1 = i3 + 4 | 0;
  i2 = HEAP32[i5 >> 2] | 0;
  if ((i2 | 0) == (HEAP32[i6 >> 2] | 0)) __ZNSt3__16vectorIN4wasm8WasmTypeENS_9allocatorIS2_EEE21__push_back_slow_pathIRKS2_EEvOT_(i7, i1); else {
   HEAP32[i2 >> 2] = HEAP32[i1 >> 2];
   HEAP32[i5 >> 2] = i2 + 4;
  }
  i13 = (HEAP32[i10 >> 2] | 0) - (HEAP32[i9 >> 2] | 0) >> 2;
  i1 = __ZNSt3__13mapIN4wasm4NameEjNS_4lessIS2_EENS_9allocatorINS_4pairIKS2_jEEEEEixERS7_(i11, i3) | 0;
  HEAP32[i1 >> 2] = i13;
  i1 = HEAP32[i10 >> 2] | 0;
  if ((i1 | 0) == (HEAP32[i12 >> 2] | 0)) __ZNSt3__16vectorIN4wasm4NameENS_9allocatorIS2_EEE21__push_back_slow_pathIRKS2_EEvOT_(i9, i3); else {
   HEAP32[i1 >> 2] = HEAP32[i3 >> 2];
   HEAP32[i10 >> 2] = (HEAP32[i10 >> 2] | 0) + 4;
  }
  i3 = i3 + 8 | 0;
 }
 return i14 | 0;
}

function __ZNKSt3__18time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE17__get_white_spaceERS4_S4_RjRKNS_5ctypeIcEE(i2, i5, i6, i7, i1) {
 i2 = i2 | 0;
 i5 = i5 | 0;
 i6 = i6 | 0;
 i7 = i7 | 0;
 i1 = i1 | 0;
 var i3 = 0, i4 = 0, i8 = 0;
 i4 = i1 + 8 | 0;
 L1 : while (1) {
  i1 = HEAP32[i5 >> 2] | 0;
  do if (i1) {
   if ((HEAP32[i1 + 12 >> 2] | 0) == (HEAP32[i1 + 16 >> 2] | 0)) if ((FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 36 >> 2] & 127](i1) | 0) == -1) {
    HEAP32[i5 >> 2] = 0;
    i1 = 0;
    break;
   } else {
    i1 = HEAP32[i5 >> 2] | 0;
    break;
   }
  } else i1 = 0; while (0);
  i1 = (i1 | 0) == 0;
  i2 = HEAP32[i6 >> 2] | 0;
  do if (i2) {
   if ((HEAP32[i2 + 12 >> 2] | 0) != (HEAP32[i2 + 16 >> 2] | 0)) if (i1) break; else break L1;
   if ((FUNCTION_TABLE_ii[HEAP32[(HEAP32[i2 >> 2] | 0) + 36 >> 2] & 127](i2) | 0) != -1) if (i1) break; else break L1; else {
    HEAP32[i6 >> 2] = 0;
    i8 = 12;
    break;
   }
  } else i8 = 12; while (0);
  if ((i8 | 0) == 12) {
   i8 = 0;
   if (i1) {
    i2 = 0;
    break;
   } else i2 = 0;
  }
  i1 = HEAP32[i5 >> 2] | 0;
  i3 = HEAP32[i1 + 12 >> 2] | 0;
  if ((i3 | 0) == (HEAP32[i1 + 16 >> 2] | 0)) i1 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 36 >> 2] & 127](i1) | 0; else i1 = HEAPU8[i3 >> 0] | 0;
  if ((i1 & 255) << 24 >> 24 <= -1) break;
  if (!(HEAP16[(HEAP32[i4 >> 2] | 0) + (i1 << 24 >> 24 << 1) >> 1] & 8192)) break;
  i1 = HEAP32[i5 >> 2] | 0;
  i2 = i1 + 12 | 0;
  i3 = HEAP32[i2 >> 2] | 0;
  if ((i3 | 0) == (HEAP32[i1 + 16 >> 2] | 0)) {
   FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 40 >> 2] & 127](i1) | 0;
   continue;
  } else {
   HEAP32[i2 >> 2] = i3 + 1;
   continue;
  }
 }
 i1 = HEAP32[i5 >> 2] | 0;
 do if (i1) {
  if ((HEAP32[i1 + 12 >> 2] | 0) == (HEAP32[i1 + 16 >> 2] | 0)) if ((FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 36 >> 2] & 127](i1) | 0) == -1) {
   HEAP32[i5 >> 2] = 0;
   i1 = 0;
   break;
  } else {
   i1 = HEAP32[i5 >> 2] | 0;
   break;
  }
 } else i1 = 0; while (0);
 i1 = (i1 | 0) == 0;
 do if (i2) {
  if ((HEAP32[i2 + 12 >> 2] | 0) == (HEAP32[i2 + 16 >> 2] | 0) ? (FUNCTION_TABLE_ii[HEAP32[(HEAP32[i2 >> 2] | 0) + 36 >> 2] & 127](i2) | 0) == -1 : 0) {
   HEAP32[i6 >> 2] = 0;
   i8 = 32;
   break;
  }
  if (!i1) i8 = 33;
 } else i8 = 32; while (0);
 if ((i8 | 0) == 32 ? i1 : 0) i8 = 33;
 if ((i8 | 0) == 33) HEAP32[i7 >> 2] = HEAP32[i7 >> 2] | 2;
 return;
}

function __ZNSt3__1L12ucs4_to_utf8EPKjS1_RS1_PhS3_RS3_mNS_12codecvt_modeE(i1, i8, i9, i4, i2, i10, i7, i3) {
 i1 = i1 | 0;
 i8 = i8 | 0;
 i9 = i9 | 0;
 i4 = i4 | 0;
 i2 = i2 | 0;
 i10 = i10 | 0;
 i7 = i7 | 0;
 i3 = i3 | 0;
 var i5 = 0, i6 = 0;
 HEAP32[i9 >> 2] = i1;
 HEAP32[i10 >> 2] = i4;
 i6 = i2;
 if (i3 & 2) if ((i6 - i4 | 0) < 3) i1 = 1; else {
  HEAP32[i10 >> 2] = i4 + 1;
  HEAP8[i4 >> 0] = -17;
  i5 = HEAP32[i10 >> 2] | 0;
  HEAP32[i10 >> 2] = i5 + 1;
  HEAP8[i5 >> 0] = -69;
  i5 = HEAP32[i10 >> 2] | 0;
  HEAP32[i10 >> 2] = i5 + 1;
  HEAP8[i5 >> 0] = -65;
  i5 = 4;
 } else i5 = 4;
 L4 : do if ((i5 | 0) == 4) {
  i1 = HEAP32[i9 >> 2] | 0;
  while (1) {
   if (i1 >>> 0 >= i8 >>> 0) {
    i1 = 0;
    break L4;
   }
   i3 = HEAP32[i1 >> 2] | 0;
   if (i3 >>> 0 > i7 >>> 0 | (i3 & -2048 | 0) == 55296) {
    i1 = 2;
    break L4;
   }
   do if (i3 >>> 0 >= 128) {
    if (i3 >>> 0 < 2048) {
     i1 = HEAP32[i10 >> 2] | 0;
     if ((i6 - i1 | 0) < 2) {
      i1 = 1;
      break L4;
     }
     HEAP32[i10 >> 2] = i1 + 1;
     HEAP8[i1 >> 0] = i3 >>> 6 | 192;
     i5 = HEAP32[i10 >> 2] | 0;
     HEAP32[i10 >> 2] = i5 + 1;
     HEAP8[i5 >> 0] = i3 & 63 | 128;
     break;
    }
    i1 = HEAP32[i10 >> 2] | 0;
    i2 = i6 - i1 | 0;
    if (i3 >>> 0 < 65536) {
     if ((i2 | 0) < 3) {
      i1 = 1;
      break L4;
     }
     HEAP32[i10 >> 2] = i1 + 1;
     HEAP8[i1 >> 0] = i3 >>> 12 | 224;
     i5 = HEAP32[i10 >> 2] | 0;
     HEAP32[i10 >> 2] = i5 + 1;
     HEAP8[i5 >> 0] = i3 >>> 6 & 63 | 128;
     i5 = HEAP32[i10 >> 2] | 0;
     HEAP32[i10 >> 2] = i5 + 1;
     HEAP8[i5 >> 0] = i3 & 63 | 128;
     break;
    } else {
     if ((i2 | 0) < 4) {
      i1 = 1;
      break L4;
     }
     HEAP32[i10 >> 2] = i1 + 1;
     HEAP8[i1 >> 0] = i3 >>> 18 | 240;
     i5 = HEAP32[i10 >> 2] | 0;
     HEAP32[i10 >> 2] = i5 + 1;
     HEAP8[i5 >> 0] = i3 >>> 12 & 63 | 128;
     i5 = HEAP32[i10 >> 2] | 0;
     HEAP32[i10 >> 2] = i5 + 1;
     HEAP8[i5 >> 0] = i3 >>> 6 & 63 | 128;
     i5 = HEAP32[i10 >> 2] | 0;
     HEAP32[i10 >> 2] = i5 + 1;
     HEAP8[i5 >> 0] = i3 & 63 | 128;
     break;
    }
   } else {
    i1 = HEAP32[i10 >> 2] | 0;
    if ((i6 - i1 | 0) < 1) {
     i1 = 1;
     break L4;
    }
    HEAP32[i10 >> 2] = i1 + 1;
    HEAP8[i1 >> 0] = i3;
   } while (0);
   i1 = (HEAP32[i9 >> 2] | 0) + 4 | 0;
   HEAP32[i9 >> 2] = i1;
  }
 } while (0);
 return i1 | 0;
}

function __ZNSt3__18ios_base4InitC2Ev(i1) {
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i4 = 0;
 i3 = HEAP32[1289] | 0;
 __ZNSt3__110__stdinbufIcEC2EP8_IO_FILEP11__mbstate_t(37928, i3, 37984);
 HEAP32[9312] = 9416;
 HEAP32[9314] = 9436;
 HEAP32[9313] = 0;
 __ZNSt3__18ios_base4initEPv(37256, 37928);
 HEAP32[9332] = 0;
 HEAP32[9333] = -1;
 i2 = HEAP32[1318] | 0;
 __ZNSt3__111__stdoutbufIcEC2EP8_IO_FILEP11__mbstate_t(38032, i2, 37992);
 HEAP32[9334] = 9496;
 HEAP32[9335] = 9516;
 __ZNSt3__18ios_base4initEPv(37340, 38032);
 HEAP32[9353] = 0;
 HEAP32[9354] = -1;
 i1 = HEAP32[1260] | 0;
 __ZNSt3__111__stdoutbufIcEC2EP8_IO_FILEP11__mbstate_t(38080, i1, 38e3);
 HEAP32[9355] = 9496;
 HEAP32[9356] = 9516;
 __ZNSt3__18ios_base4initEPv(37424, 38080);
 HEAP32[9374] = 0;
 HEAP32[9375] = -1;
 i4 = HEAP32[37420 + (HEAP32[(HEAP32[9355] | 0) + -12 >> 2] | 0) + 24 >> 2] | 0;
 HEAP32[9376] = 9496;
 HEAP32[9377] = 9516;
 __ZNSt3__18ios_base4initEPv(37508, i4);
 HEAP32[9395] = 0;
 HEAP32[9396] = -1;
 HEAP32[37248 + (HEAP32[(HEAP32[9312] | 0) + -12 >> 2] | 0) + 72 >> 2] = 37336;
 i4 = 37420 + (HEAP32[(HEAP32[9355] | 0) + -12 >> 2] | 0) + 4 | 0;
 HEAP32[i4 >> 2] = HEAP32[i4 >> 2] | 8192;
 HEAP32[37420 + (HEAP32[(HEAP32[9355] | 0) + -12 >> 2] | 0) + 72 >> 2] = 37336;
 __ZNSt3__110__stdinbufIwEC2EP8_IO_FILEP11__mbstate_t(38128, i3, 38008);
 HEAP32[9397] = 9456;
 HEAP32[9399] = 9476;
 HEAP32[9398] = 0;
 __ZNSt3__18ios_base4initEPv(37596, 38128);
 HEAP32[9417] = 0;
 HEAP32[9418] = -1;
 __ZNSt3__111__stdoutbufIwEC2EP8_IO_FILEP11__mbstate_t(38184, i2, 38016);
 HEAP32[9419] = 9536;
 HEAP32[9420] = 9556;
 __ZNSt3__18ios_base4initEPv(37680, 38184);
 HEAP32[9438] = 0;
 HEAP32[9439] = -1;
 __ZNSt3__111__stdoutbufIwEC2EP8_IO_FILEP11__mbstate_t(38232, i1, 38024);
 HEAP32[9440] = 9536;
 HEAP32[9441] = 9556;
 __ZNSt3__18ios_base4initEPv(37764, 38232);
 HEAP32[9459] = 0;
 HEAP32[9460] = -1;
 i1 = HEAP32[37760 + (HEAP32[(HEAP32[9440] | 0) + -12 >> 2] | 0) + 24 >> 2] | 0;
 HEAP32[9461] = 9536;
 HEAP32[9462] = 9556;
 __ZNSt3__18ios_base4initEPv(37848, i1);
 HEAP32[9480] = 0;
 HEAP32[9481] = -1;
 HEAP32[37588 + (HEAP32[(HEAP32[9397] | 0) + -12 >> 2] | 0) + 72 >> 2] = 37676;
 i1 = 37760 + (HEAP32[(HEAP32[9440] | 0) + -12 >> 2] | 0) + 4 | 0;
 HEAP32[i1 >> 2] = HEAP32[i1 >> 2] | 8192;
 HEAP32[37760 + (HEAP32[(HEAP32[9440] | 0) + -12 >> 2] | 0) + 72 >> 2] = 37676;
 return;
}

function _pop_arg(i2, i3, i1) {
 i2 = i2 | 0;
 i3 = i3 | 0;
 i1 = i1 | 0;
 var i4 = 0, i5 = 0, d6 = 0.0;
 L1 : do if (i3 >>> 0 <= 20) do switch (i3 | 0) {
 case 9:
  {
   i4 = (HEAP32[i1 >> 2] | 0) + (4 - 1) & ~(4 - 1);
   i3 = HEAP32[i4 >> 2] | 0;
   HEAP32[i1 >> 2] = i4 + 4;
   HEAP32[i2 >> 2] = i3;
   break L1;
  }
 case 10:
  {
   i4 = (HEAP32[i1 >> 2] | 0) + (4 - 1) & ~(4 - 1);
   i3 = HEAP32[i4 >> 2] | 0;
   HEAP32[i1 >> 2] = i4 + 4;
   i4 = i2;
   HEAP32[i4 >> 2] = i3;
   HEAP32[i4 + 4 >> 2] = ((i3 | 0) < 0) << 31 >> 31;
   break L1;
  }
 case 11:
  {
   i4 = (HEAP32[i1 >> 2] | 0) + (4 - 1) & ~(4 - 1);
   i3 = HEAP32[i4 >> 2] | 0;
   HEAP32[i1 >> 2] = i4 + 4;
   i4 = i2;
   HEAP32[i4 >> 2] = i3;
   HEAP32[i4 + 4 >> 2] = 0;
   break L1;
  }
 case 12:
  {
   i4 = (HEAP32[i1 >> 2] | 0) + (8 - 1) & ~(8 - 1);
   i3 = i4;
   i5 = HEAP32[i3 >> 2] | 0;
   i3 = HEAP32[i3 + 4 >> 2] | 0;
   HEAP32[i1 >> 2] = i4 + 8;
   i4 = i2;
   HEAP32[i4 >> 2] = i5;
   HEAP32[i4 + 4 >> 2] = i3;
   break L1;
  }
 case 13:
  {
   i5 = (HEAP32[i1 >> 2] | 0) + (4 - 1) & ~(4 - 1);
   i4 = HEAP32[i5 >> 2] | 0;
   HEAP32[i1 >> 2] = i5 + 4;
   i4 = (i4 & 65535) << 16 >> 16;
   i5 = i2;
   HEAP32[i5 >> 2] = i4;
   HEAP32[i5 + 4 >> 2] = ((i4 | 0) < 0) << 31 >> 31;
   break L1;
  }
 case 14:
  {
   i5 = (HEAP32[i1 >> 2] | 0) + (4 - 1) & ~(4 - 1);
   i4 = HEAP32[i5 >> 2] | 0;
   HEAP32[i1 >> 2] = i5 + 4;
   i5 = i2;
   HEAP32[i5 >> 2] = i4 & 65535;
   HEAP32[i5 + 4 >> 2] = 0;
   break L1;
  }
 case 15:
  {
   i5 = (HEAP32[i1 >> 2] | 0) + (4 - 1) & ~(4 - 1);
   i4 = HEAP32[i5 >> 2] | 0;
   HEAP32[i1 >> 2] = i5 + 4;
   i4 = (i4 & 255) << 24 >> 24;
   i5 = i2;
   HEAP32[i5 >> 2] = i4;
   HEAP32[i5 + 4 >> 2] = ((i4 | 0) < 0) << 31 >> 31;
   break L1;
  }
 case 16:
  {
   i5 = (HEAP32[i1 >> 2] | 0) + (4 - 1) & ~(4 - 1);
   i4 = HEAP32[i5 >> 2] | 0;
   HEAP32[i1 >> 2] = i5 + 4;
   i5 = i2;
   HEAP32[i5 >> 2] = i4 & 255;
   HEAP32[i5 + 4 >> 2] = 0;
   break L1;
  }
 case 17:
  {
   i5 = (HEAP32[i1 >> 2] | 0) + (8 - 1) & ~(8 - 1);
   d6 = +HEAPF64[i5 >> 3];
   HEAP32[i1 >> 2] = i5 + 8;
   HEAPF64[i2 >> 3] = d6;
   break L1;
  }
 case 18:
  {
   i5 = (HEAP32[i1 >> 2] | 0) + (8 - 1) & ~(8 - 1);
   d6 = +HEAPF64[i5 >> 3];
   HEAP32[i1 >> 2] = i5 + 8;
   HEAPF64[i2 >> 3] = d6;
   break L1;
  }
 default:
  break L1;
 } while (0); while (0);
 return;
}

function __ZZN4wasm14ModuleInstance12callFunctionEN6cashew7IStringERNSt3__16vectorINS_7LiteralENS3_9allocatorIS5_EEEEEN16ExpressionRunner10visitStoreEPNS_5StoreE(i1, i4, i2) {
 i1 = i1 | 0;
 i4 = i4 | 0;
 i2 = i2 | 0;
 var i3 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0;
 i7 = STACKTOP;
 STACKTOP = STACKTOP + 64 | 0;
 i5 = i7 + 48 | 0;
 i3 = i7 + 24 | 0;
 i6 = i7;
 __ZN4wasm7VisitorIZNS_14ModuleInstance12callFunctionEN6cashew7IStringERNSt3__16vectorINS_7LiteralENS4_9allocatorIS6_EEEEE16ExpressionRunnerNS_4FlowEE5visitEPNS_10ExpressionE(i3, i4, HEAP32[i2 + 20 >> 2] | 0);
 if (!(HEAP32[i3 + 16 >> 2] | 0)) {
  __ZN4wasm7VisitorIZNS_14ModuleInstance12callFunctionEN6cashew7IStringERNSt3__16vectorINS_7LiteralENS4_9allocatorIS6_EEEEE16ExpressionRunnerNS_4FlowEE5visitEPNS_10ExpressionE(i6, i4, HEAP32[i2 + 24 >> 2] | 0);
  if (!(HEAP32[i6 + 16 >> 2] | 0)) {
   i4 = HEAP32[i4 >> 2] | 0;
   i8 = HEAP32[i4 + 24 >> 2] | 0;
   i9 = HEAP32[(HEAP32[i8 >> 2] | 0) + 12 >> 2] | 0;
   HEAP32[i5 >> 2] = HEAP32[i3 >> 2];
   HEAP32[i5 + 4 >> 2] = HEAP32[i3 + 4 >> 2];
   HEAP32[i5 + 8 >> 2] = HEAP32[i3 + 8 >> 2];
   HEAP32[i5 + 12 >> 2] = HEAP32[i3 + 12 >> 2];
   i4 = __ZN4wasm14ModuleInstance15getFinalAddressINS_5StoreEEEjPT_NS_7LiteralE(i4, i2, i5) | 0;
   HEAP32[i5 >> 2] = HEAP32[i6 >> 2];
   HEAP32[i5 + 4 >> 2] = HEAP32[i6 + 4 >> 2];
   HEAP32[i5 + 8 >> 2] = HEAP32[i6 + 8 >> 2];
   HEAP32[i5 + 12 >> 2] = HEAP32[i6 + 12 >> 2];
   FUNCTION_TABLE_viiii[i9 & 15](i8, i2, i4, i5);
   HEAP32[i1 >> 2] = HEAP32[i6 >> 2];
   HEAP32[i1 + 4 >> 2] = HEAP32[i6 + 4 >> 2];
   HEAP32[i1 + 8 >> 2] = HEAP32[i6 + 8 >> 2];
   HEAP32[i1 + 12 >> 2] = HEAP32[i6 + 12 >> 2];
   HEAP32[i1 + 16 >> 2] = HEAP32[i6 + 16 >> 2];
   HEAP32[i1 + 20 >> 2] = HEAP32[i6 + 20 >> 2];
  } else {
   HEAP32[i1 >> 2] = HEAP32[i6 >> 2];
   HEAP32[i1 + 4 >> 2] = HEAP32[i6 + 4 >> 2];
   HEAP32[i1 + 8 >> 2] = HEAP32[i6 + 8 >> 2];
   HEAP32[i1 + 12 >> 2] = HEAP32[i6 + 12 >> 2];
   HEAP32[i1 + 16 >> 2] = HEAP32[i6 + 16 >> 2];
   HEAP32[i1 + 20 >> 2] = HEAP32[i6 + 20 >> 2];
  }
 } else {
  HEAP32[i1 >> 2] = HEAP32[i3 >> 2];
  HEAP32[i1 + 4 >> 2] = HEAP32[i3 + 4 >> 2];
  HEAP32[i1 + 8 >> 2] = HEAP32[i3 + 8 >> 2];
  HEAP32[i1 + 12 >> 2] = HEAP32[i3 + 12 >> 2];
  HEAP32[i1 + 16 >> 2] = HEAP32[i3 + 16 >> 2];
  HEAP32[i1 + 20 >> 2] = HEAP32[i3 + 20 >> 2];
 }
 STACKTOP = i7;
 return;
}

function __ZZN4wasm14ModuleInstance12callFunctionEN6cashew7IStringERNSt3__16vectorINS_7LiteralENS3_9allocatorIS5_EEEEEN16ExpressionRunner11visitSelectEPNS_6SelectE(i1, i6, i3) {
 i1 = i1 | 0;
 i6 = i6 | 0;
 i3 = i3 | 0;
 var i2 = 0, i4 = 0, i5 = 0, i7 = 0;
 i7 = STACKTOP;
 STACKTOP = STACKTOP + 80 | 0;
 i5 = i7 + 48 | 0;
 i4 = i7 + 24 | 0;
 i2 = i7;
 __ZN4wasm7VisitorIZNS_14ModuleInstance12callFunctionEN6cashew7IStringERNSt3__16vectorINS_7LiteralENS4_9allocatorIS6_EEEEE16ExpressionRunnerNS_4FlowEE5visitEPNS_10ExpressionE(i5, i6, HEAP32[i3 + 8 >> 2] | 0);
 if (!(HEAP32[i5 + 16 >> 2] | 0)) {
  __ZN4wasm7VisitorIZNS_14ModuleInstance12callFunctionEN6cashew7IStringERNSt3__16vectorINS_7LiteralENS4_9allocatorIS6_EEEEE16ExpressionRunnerNS_4FlowEE5visitEPNS_10ExpressionE(i4, i6, HEAP32[i3 + 12 >> 2] | 0);
  if (!(HEAP32[i4 + 16 >> 2] | 0)) {
   __ZN4wasm7VisitorIZNS_14ModuleInstance12callFunctionEN6cashew7IStringERNSt3__16vectorINS_7LiteralENS4_9allocatorIS6_EEEEE16ExpressionRunnerNS_4FlowEE5visitEPNS_10ExpressionE(i2, i6, HEAP32[i3 + 16 >> 2] | 0);
   if (!(HEAP32[i2 + 16 >> 2] | 0)) {
    i6 = (__ZNK4wasm7Literal6geti32Ev(i2) | 0) != 0;
    i6 = i6 ? i5 : i4;
    HEAP32[i1 >> 2] = HEAP32[i6 >> 2];
    HEAP32[i1 + 4 >> 2] = HEAP32[i6 + 4 >> 2];
    HEAP32[i1 + 8 >> 2] = HEAP32[i6 + 8 >> 2];
    HEAP32[i1 + 12 >> 2] = HEAP32[i6 + 12 >> 2];
    HEAP32[i1 + 16 >> 2] = HEAP32[i6 + 16 >> 2];
    HEAP32[i1 + 20 >> 2] = HEAP32[i6 + 20 >> 2];
   } else {
    HEAP32[i1 >> 2] = HEAP32[i2 >> 2];
    HEAP32[i1 + 4 >> 2] = HEAP32[i2 + 4 >> 2];
    HEAP32[i1 + 8 >> 2] = HEAP32[i2 + 8 >> 2];
    HEAP32[i1 + 12 >> 2] = HEAP32[i2 + 12 >> 2];
    HEAP32[i1 + 16 >> 2] = HEAP32[i2 + 16 >> 2];
    HEAP32[i1 + 20 >> 2] = HEAP32[i2 + 20 >> 2];
   }
  } else {
   HEAP32[i1 >> 2] = HEAP32[i4 >> 2];
   HEAP32[i1 + 4 >> 2] = HEAP32[i4 + 4 >> 2];
   HEAP32[i1 + 8 >> 2] = HEAP32[i4 + 8 >> 2];
   HEAP32[i1 + 12 >> 2] = HEAP32[i4 + 12 >> 2];
   HEAP32[i1 + 16 >> 2] = HEAP32[i4 + 16 >> 2];
   HEAP32[i1 + 20 >> 2] = HEAP32[i4 + 20 >> 2];
  }
 } else {
  HEAP32[i1 >> 2] = HEAP32[i5 >> 2];
  HEAP32[i1 + 4 >> 2] = HEAP32[i5 + 4 >> 2];
  HEAP32[i1 + 8 >> 2] = HEAP32[i5 + 8 >> 2];
  HEAP32[i1 + 12 >> 2] = HEAP32[i5 + 12 >> 2];
  HEAP32[i1 + 16 >> 2] = HEAP32[i5 + 16 >> 2];
  HEAP32[i1 + 20 >> 2] = HEAP32[i5 + 20 >> 2];
 }
 STACKTOP = i7;
 return;
}

function _scanexp(i8, i3) {
 i8 = i8 | 0;
 i3 = i3 | 0;
 var i1 = 0, i2 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0;
 i6 = i8 + 4 | 0;
 i1 = HEAP32[i6 >> 2] | 0;
 i7 = i8 + 100 | 0;
 if (i1 >>> 0 < (HEAP32[i7 >> 2] | 0) >>> 0) {
  HEAP32[i6 >> 2] = i1 + 1;
  i1 = HEAPU8[i1 >> 0] | 0;
 } else i1 = ___shgetc(i8) | 0;
 switch (i1 | 0) {
 case 43:
 case 45:
  {
   i2 = (i1 | 0) == 45 & 1;
   i1 = HEAP32[i6 >> 2] | 0;
   if (i1 >>> 0 < (HEAP32[i7 >> 2] | 0) >>> 0) {
    HEAP32[i6 >> 2] = i1 + 1;
    i1 = HEAPU8[i1 >> 0] | 0;
   } else i1 = ___shgetc(i8) | 0;
   if ((i3 | 0) != 0 & (i1 + -48 | 0) >>> 0 > 9 ? (HEAP32[i7 >> 2] | 0) != 0 : 0) {
    HEAP32[i6 >> 2] = (HEAP32[i6 >> 2] | 0) + -1;
    i5 = i2;
   } else i5 = i2;
   break;
  }
 default:
  i5 = 0;
 }
 if ((i1 + -48 | 0) >>> 0 > 9) if (!(HEAP32[i7 >> 2] | 0)) {
  i2 = -2147483648;
  i1 = 0;
 } else {
  HEAP32[i6 >> 2] = (HEAP32[i6 >> 2] | 0) + -1;
  i2 = -2147483648;
  i1 = 0;
 } else {
  i2 = 0;
  do {
   i2 = i1 + -48 + (i2 * 10 | 0) | 0;
   i1 = HEAP32[i6 >> 2] | 0;
   if (i1 >>> 0 < (HEAP32[i7 >> 2] | 0) >>> 0) {
    HEAP32[i6 >> 2] = i1 + 1;
    i1 = HEAPU8[i1 >> 0] | 0;
   } else i1 = ___shgetc(i8) | 0;
  } while ((i1 + -48 | 0) >>> 0 < 10 & (i2 | 0) < 214748364);
  i3 = ((i2 | 0) < 0) << 31 >> 31;
  if ((i1 + -48 | 0) >>> 0 < 10) {
   do {
    i3 = ___muldi3(i2 | 0, i3 | 0, 10, 0) | 0;
    i2 = tempRet0;
    i1 = _i64Add(i1 | 0, ((i1 | 0) < 0) << 31 >> 31 | 0, -48, -1) | 0;
    i2 = _i64Add(i1 | 0, tempRet0 | 0, i3 | 0, i2 | 0) | 0;
    i3 = tempRet0;
    i1 = HEAP32[i6 >> 2] | 0;
    if (i1 >>> 0 < (HEAP32[i7 >> 2] | 0) >>> 0) {
     HEAP32[i6 >> 2] = i1 + 1;
     i1 = HEAPU8[i1 >> 0] | 0;
    } else i1 = ___shgetc(i8) | 0;
   } while ((i1 + -48 | 0) >>> 0 < 10 & ((i3 | 0) < 21474836 | (i3 | 0) == 21474836 & i2 >>> 0 < 2061584302));
   i4 = i2;
  } else i4 = i2;
  if ((i1 + -48 | 0) >>> 0 < 10) do {
   i1 = HEAP32[i6 >> 2] | 0;
   if (i1 >>> 0 < (HEAP32[i7 >> 2] | 0) >>> 0) {
    HEAP32[i6 >> 2] = i1 + 1;
    i1 = HEAPU8[i1 >> 0] | 0;
   } else i1 = ___shgetc(i8) | 0;
  } while ((i1 + -48 | 0) >>> 0 < 10);
  if (HEAP32[i7 >> 2] | 0) HEAP32[i6 >> 2] = (HEAP32[i6 >> 2] | 0) + -1;
  i8 = (i5 | 0) != 0;
  i1 = _i64Subtract(0, 0, i4 | 0, i3 | 0) | 0;
  i2 = i8 ? tempRet0 : i3;
  i1 = i8 ? i1 : i4;
 }
 tempRet0 = i2;
 return i1 | 0;
}

function __ZNKSt3__18messagesIwE6do_getEiiiRKNS_12basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEE(i17, i1, i7, i9, i8, i2) {
 i17 = i17 | 0;
 i1 = i1 | 0;
 i7 = i7 | 0;
 i9 = i9 | 0;
 i8 = i8 | 0;
 i2 = i2 | 0;
 var i3 = 0, i4 = 0, i5 = 0, i6 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0;
 i16 = STACKTOP;
 STACKTOP = STACKTOP + 176 | 0;
 i13 = i16 + 168 | 0;
 i12 = i16 + 40 | 0;
 i11 = i16 + 36 | 0;
 i15 = i16 + 32 | 0;
 i14 = i16;
 i6 = i16 + 24 | 0;
 i10 = i16 + 16 | 0;
 i1 = 0;
 while (1) {
  if ((i1 | 0) == 3) break;
  HEAP32[i14 + (i1 << 2) >> 2] = 0;
  i1 = i1 + 1 | 0;
 }
 HEAP32[i6 + 4 >> 2] = 0;
 HEAP32[i6 >> 2] = 11764;
 i5 = HEAP8[i2 >> 0] | 0;
 i1 = (i5 & 1) == 0;
 i4 = i2 + 4 | 0;
 i2 = i1 ? i4 : HEAP32[i2 + 8 >> 2] | 0;
 i4 = i2 + ((i1 ? (i5 & 255) >>> 1 : HEAP32[i4 >> 2] | 0) << 2) | 0;
 i5 = i12 + 32 | 0;
 i1 = 0;
 while (1) {
  if (!((i1 | 0) != 2 & i2 >>> 0 < i4 >>> 0)) break;
  HEAP32[i15 >> 2] = i2;
  i3 = FUNCTION_TABLE_iiiiiiiii[HEAP32[(HEAP32[i6 >> 2] | 0) + 12 >> 2] & 15](i6, i13, i2, i4, i15, i12, i5, i11) | 0;
  i1 = i12;
  while (1) {
   if (i1 >>> 0 >= (HEAP32[i11 >> 2] | 0) >>> 0) break;
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE9push_backEc(i14, HEAP8[i1 >> 0] | 0);
   i1 = i1 + 1 | 0;
  }
  i2 = HEAP32[i15 >> 2] | 0;
  i1 = i3;
 }
 i2 = _catgets((i7 | 0) == -1 ? -1 : i7 << 1, i9, i8, (HEAP8[i14 >> 0] & 1) == 0 ? i14 + 1 | 0 : HEAP32[i14 + 8 >> 2] | 0) | 0;
 i1 = 0;
 while (1) {
  if ((i1 | 0) == 3) break;
  HEAP32[i17 + (i1 << 2) >> 2] = 0;
  i1 = i1 + 1 | 0;
 }
 HEAP32[i10 + 4 >> 2] = 0;
 HEAP32[i10 >> 2] = 11812;
 i4 = i2 + (_strlen(i2) | 0) | 0;
 i5 = i4;
 i6 = i12 + 128 | 0;
 i1 = 0;
 while (1) {
  if (!((i1 | 0) != 2 & i2 >>> 0 < i4 >>> 0)) break;
  HEAP32[i15 >> 2] = i2;
  i3 = FUNCTION_TABLE_iiiiiiiii[HEAP32[(HEAP32[i10 >> 2] | 0) + 16 >> 2] & 15](i10, i13, i2, (i5 - i2 | 0) > 32 ? i2 + 32 | 0 : i4, i15, i12, i6, i11) | 0;
  i1 = i12;
  while (1) {
   if (i1 >>> 0 >= (HEAP32[i11 >> 2] | 0) >>> 0) break;
   __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE9push_backEw(i17, HEAP32[i1 >> 2] | 0);
   i1 = i1 + 4 | 0;
  }
  i2 = HEAP32[i15 >> 2] | 0;
  i1 = i3;
 }
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i14);
 STACKTOP = i16;
 return;
}

function __ZZN4wasm14ModuleInstance15getFinalAddressINS_5StoreEEEjPT_NS_7LiteralEENKUlyyPKcE_clEyyS7_(i1, i5, i6, i7, i8, i11) {
 i1 = i1 | 0;
 i5 = i5 | 0;
 i6 = i6 | 0;
 i7 = i7 | 0;
 i8 = i8 | 0;
 i11 = i11 | 0;
 var i2 = 0, i3 = 0, i4 = 0, i9 = 0, i10 = 0, i12 = 0, i13 = 0;
 i13 = STACKTOP;
 STACKTOP = STACKTOP + 176 | 0;
 i9 = i13 + 160 | 0;
 i12 = i13 + 16 | 0;
 i10 = i13;
 i4 = HEAP32[i1 >> 2] | 0;
 if (i6 >>> 0 > i8 >>> 0 | (i6 | 0) == (i8 | 0) & i5 >>> 0 > i7 >>> 0) {
  i2 = i12 + 64 | 0;
  i1 = i12 + 8 | 0;
  HEAP32[i1 >> 2] = 3292;
  i3 = i12 + 12 | 0;
  HEAP32[i12 >> 2] = 3432;
  HEAP32[i2 >> 2] = 3452;
  HEAP32[i12 + 4 >> 2] = 0;
  __ZNSt3__18ios_base4initEPv(i12 + 64 | 0, i3);
  HEAP32[i12 + 136 >> 2] = 0;
  HEAP32[i12 + 140 >> 2] = -1;
  HEAP32[i12 >> 2] = 3272;
  HEAP32[i2 >> 2] = 3312;
  HEAP32[i1 >> 2] = 3292;
  __ZNSt3__115basic_streambufIcNS_11char_traitsIcEEEC2Ev(i3);
  HEAP32[i3 >> 2] = 3072;
  i1 = i12 + 44 | 0;
  i2 = 0;
  while (1) {
   if ((i2 | 0) == 3) break;
   HEAP32[i1 + (i2 << 2) >> 2] = 0;
   i2 = i2 + 1 | 0;
  }
  HEAP32[i12 + 56 >> 2] = 0;
  HEAP32[i12 + 60 >> 2] = 24;
  i1 = 0;
  while (1) {
   if ((i1 | 0) == 3) break;
   HEAP32[i9 + (i1 << 2) >> 2] = 0;
   i1 = i1 + 1 | 0;
  }
  __ZNSt3__115basic_stringbufIcNS_11char_traitsIcEENS_9allocatorIcEEE3strERKNS_12basic_stringIcS2_S4_EE(i3, i9);
  __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i9);
  __ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEElsEy(__ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(__ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEElsEy(__ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(__ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(i12 + 8 | 0, i11) | 0, 16317) | 0, i5, i6) | 0, 16320) | 0, i7, i8) | 0;
  i11 = HEAP32[i4 + 24 >> 2] | 0;
  i9 = HEAP32[(HEAP32[i11 >> 2] | 0) + 20 >> 2] | 0;
  __ZNKSt3__115basic_stringbufIcNS_11char_traitsIcEENS_9allocatorIcEEE3strEv(i10, i3);
  FUNCTION_TABLE_vii[i9 & 511](i11, (HEAP8[i10 >> 0] & 1) == 0 ? i10 + 1 | 0 : HEAP32[i10 + 8 >> 2] | 0);
  __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i10);
  __ZNSt3__118basic_stringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev(i12);
 }
 STACKTOP = i13;
 return;
}

function __ZZN4wasm14ModuleInstance15getFinalAddressINS_4LoadEEEjPT_NS_7LiteralEENKUlyyPKcE_clEyyS7_(i1, i5, i6, i7, i8, i11) {
 i1 = i1 | 0;
 i5 = i5 | 0;
 i6 = i6 | 0;
 i7 = i7 | 0;
 i8 = i8 | 0;
 i11 = i11 | 0;
 var i2 = 0, i3 = 0, i4 = 0, i9 = 0, i10 = 0, i12 = 0, i13 = 0;
 i13 = STACKTOP;
 STACKTOP = STACKTOP + 176 | 0;
 i9 = i13 + 160 | 0;
 i12 = i13 + 16 | 0;
 i10 = i13;
 i4 = HEAP32[i1 >> 2] | 0;
 if (i6 >>> 0 > i8 >>> 0 | (i6 | 0) == (i8 | 0) & i5 >>> 0 > i7 >>> 0) {
  i2 = i12 + 64 | 0;
  i1 = i12 + 8 | 0;
  HEAP32[i1 >> 2] = 3292;
  i3 = i12 + 12 | 0;
  HEAP32[i12 >> 2] = 3432;
  HEAP32[i2 >> 2] = 3452;
  HEAP32[i12 + 4 >> 2] = 0;
  __ZNSt3__18ios_base4initEPv(i12 + 64 | 0, i3);
  HEAP32[i12 + 136 >> 2] = 0;
  HEAP32[i12 + 140 >> 2] = -1;
  HEAP32[i12 >> 2] = 3272;
  HEAP32[i2 >> 2] = 3312;
  HEAP32[i1 >> 2] = 3292;
  __ZNSt3__115basic_streambufIcNS_11char_traitsIcEEEC2Ev(i3);
  HEAP32[i3 >> 2] = 3072;
  i1 = i12 + 44 | 0;
  i2 = 0;
  while (1) {
   if ((i2 | 0) == 3) break;
   HEAP32[i1 + (i2 << 2) >> 2] = 0;
   i2 = i2 + 1 | 0;
  }
  HEAP32[i12 + 56 >> 2] = 0;
  HEAP32[i12 + 60 >> 2] = 24;
  i1 = 0;
  while (1) {
   if ((i1 | 0) == 3) break;
   HEAP32[i9 + (i1 << 2) >> 2] = 0;
   i1 = i1 + 1 | 0;
  }
  __ZNSt3__115basic_stringbufIcNS_11char_traitsIcEENS_9allocatorIcEEE3strERKNS_12basic_stringIcS2_S4_EE(i3, i9);
  __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i9);
  __ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEElsEy(__ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(__ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEElsEy(__ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(__ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(i12 + 8 | 0, i11) | 0, 16317) | 0, i5, i6) | 0, 16320) | 0, i7, i8) | 0;
  i11 = HEAP32[i4 + 24 >> 2] | 0;
  i9 = HEAP32[(HEAP32[i11 >> 2] | 0) + 20 >> 2] | 0;
  __ZNKSt3__115basic_stringbufIcNS_11char_traitsIcEENS_9allocatorIcEEE3strEv(i10, i3);
  FUNCTION_TABLE_vii[i9 & 511](i11, (HEAP8[i10 >> 0] & 1) == 0 ? i10 + 1 | 0 : HEAP32[i10 + 8 >> 2] | 0);
  __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i10);
  __ZNSt3__118basic_stringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev(i12);
 }
 STACKTOP = i13;
 return;
}

function __ZN4wasm22SExpressionWasmBuilder8makeLoadERNS_7ElementENS_8WasmTypeE(i10, i8, i1) {
 i10 = i10 | 0;
 i8 = i8 | 0;
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i9 = 0;
 i3 = __ZN4wasm7Element4listEv(i8) | 0;
 i3 = _strchr(__ZN4wasm7Element5c_strEv(HEAP32[HEAP32[i3 >> 2] >> 2] | 0) | 0, 46) | 0;
 i4 = i3 + 5 | 0;
 i9 = __ZN10MixedArena5allocIN4wasm4LoadEEEPT_v(HEAP32[i10 + 4 >> 2] | 0) | 0;
 HEAP32[i9 + 4 >> 2] = i1;
 i1 = __ZN4wasm15getWasmTypeSizeENS_8WasmTypeE(i1) | 0;
 i2 = i9 + 8 | 0;
 HEAP32[i2 >> 2] = i1;
 L1 : do switch (HEAP8[i4 >> 0] | 0) {
 case 56:
  {
   HEAP32[i2 >> 2] = 1;
   i7 = 1;
   i5 = i3 + 6 | 0;
   break;
  }
 case 49:
  {
   if ((HEAP8[i3 + 6 >> 0] | 0) == 54) {
    HEAP32[i2 >> 2] = 2;
    i7 = 2;
    i5 = i3 + 7 | 0;
    break L1;
   } else ___assert_fail(14973, 14303, 822, 14989);
   break;
  }
 case 51:
  {
   if ((HEAP8[i3 + 6 >> 0] | 0) == 50) {
    HEAP32[i2 >> 2] = 4;
    i7 = 4;
    i5 = i3 + 7 | 0;
    break L1;
   } else ___assert_fail(14998, 14303, 826, 14989);
   break;
  }
 default:
  {
   i7 = i1;
   i5 = i4;
  }
 } while (0);
 if (!(HEAP8[i5 >> 0] | 0)) i1 = 0; else i1 = (HEAP8[i5 + 1 >> 0] | 0) == 115 & 1;
 HEAP8[i9 + 12 >> 0] = i1;
 i5 = i9 + 16 | 0;
 HEAP32[i5 >> 2] = 0;
 i6 = i9 + 20 | 0;
 HEAP32[i6 >> 2] = i7;
 i3 = i10 + 8 | 0;
 i4 = 1;
 while (1) {
  i7 = __ZN4wasm7ElementixEj(i8, i4) | 0;
  i7 = (HEAP8[i7 >> 0] | 0) == 0;
  i1 = __ZN4wasm7ElementixEj(i8, i4) | 0;
  if (!i7) {
   i2 = 22;
   break;
  }
  i2 = __ZN4wasm7Element5c_strEv(i1) | 0;
  i1 = _strchr(i2, 61) | 0;
  if (!i1) {
   i2 = 14;
   break;
  }
  i1 = i1 + 1 | 0;
  switch (HEAP8[i2 >> 0] | 0) {
  case 97:
   {
    i7 = _atoi(i1) | 0;
    HEAP32[i6 >> 2] = i7;
    break;
   }
  case 111:
   {
    i1 = _atoll(i1) | 0;
    i7 = tempRet0;
    if (i7 >>> 0 > 0 | (i7 | 0) == 0 & i1 >>> 0 > 4294967295) __ZNKSt3__18functionIFvvEEclEv(i3);
    HEAP32[i5 >> 2] = i1;
    break;
   }
  default:
   __ZNKSt3__18functionIFvvEEclEv(i3);
  }
  i4 = i4 + 1 | 0;
 }
 if ((i2 | 0) == 14) ___assert_fail(18751, 14303, 837, 14989); else if ((i2 | 0) == 22) {
  i10 = __ZN4wasm22SExpressionWasmBuilder15parseExpressionERNS_7ElementE(i10, i1) | 0;
  HEAP32[i9 + 24 >> 2] = i10;
  return i9 | 0;
 }
 return 0;
}

function __ZZN4wasm14ModuleInstance12callFunctionEN6cashew7IStringERNSt3__16vectorINS_7LiteralENS3_9allocatorIS5_EEEEEN16ExpressionRunner11visitSwitchEPNS_6SwitchE(i13, i4, i7) {
 i13 = i13 | 0;
 i4 = i4 | 0;
 i7 = i7 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i5 = 0, i6 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i14 = 0, i15 = 0, i16 = 0;
 i16 = STACKTOP;
 STACKTOP = STACKTOP + 48 | 0;
 i1 = i16 + 24 | 0;
 i2 = i16;
 HEAP32[i13 >> 2] = 0;
 i9 = i13 + 8 | 0;
 i12 = i9;
 HEAP32[i12 >> 2] = 0;
 HEAP32[i12 + 4 >> 2] = 0;
 i12 = i13 + 16 | 0;
 HEAP32[i12 >> 2] = 0;
 i3 = HEAP32[i7 + 28 >> 2] | 0;
 if (i3) {
  __ZN4wasm7VisitorIZNS_14ModuleInstance12callFunctionEN6cashew7IStringERNSt3__16vectorINS_7LiteralENS4_9allocatorIS6_EEEEE16ExpressionRunnerNS_4FlowEE5visitEPNS_10ExpressionE(i1, i4, i3);
  HEAP32[i13 >> 2] = HEAP32[i1 >> 2];
  HEAP32[i13 + 4 >> 2] = HEAP32[i1 + 4 >> 2];
  HEAP32[i13 + 8 >> 2] = HEAP32[i1 + 8 >> 2];
  HEAP32[i13 + 12 >> 2] = HEAP32[i1 + 12 >> 2];
  HEAP32[i13 + 16 >> 2] = HEAP32[i1 + 16 >> 2];
  if (!(HEAP32[i12 >> 2] | 0)) {
   i11 = i9;
   i8 = i13;
   i10 = HEAP32[i11 >> 2] | 0;
   i11 = HEAP32[i11 + 4 >> 2] | 0;
   i14 = HEAP32[i13 >> 2] | 0;
   i15 = HEAP32[i13 + 4 >> 2] | 0;
   i5 = 5;
  }
 } else {
  i8 = i13;
  i10 = 0;
  i11 = 0;
  i14 = 0;
  i15 = 0;
  i5 = 5;
 }
 if ((i5 | 0) == 5 ? (__ZN4wasm7VisitorIZNS_14ModuleInstance12callFunctionEN6cashew7IStringERNSt3__16vectorINS_7LiteralENS4_9allocatorIS6_EEEEE16ExpressionRunnerNS_4FlowEE5visitEPNS_10ExpressionE(i2, i4, HEAP32[i7 + 24 >> 2] | 0), HEAP32[i8 >> 2] = HEAP32[i2 >> 2], HEAP32[i8 + 4 >> 2] = HEAP32[i2 + 4 >> 2], HEAP32[i8 + 8 >> 2] = HEAP32[i2 + 8 >> 2], HEAP32[i8 + 12 >> 2] = HEAP32[i2 + 12 >> 2], HEAP32[i8 + 16 >> 2] = HEAP32[i2 + 16 >> 2], (HEAP32[i12 >> 2] | 0) == 0) : 0) {
  i2 = __ZN4wasm7Literal10getIntegerEv(i13) | 0;
  i5 = tempRet0;
  i1 = HEAP32[i7 + 20 >> 2] | 0;
  if ((i5 | 0) > -1 | (i5 | 0) == -1 & i2 >>> 0 > 4294967295 ? (i6 = HEAP32[i7 + 8 >> 2] | 0, i2 >>> 0 < (HEAP32[i7 + 12 >> 2] | 0) - i6 >> 2 >>> 0) : 0) i1 = HEAP32[i6 + (i2 << 2) >> 2] | 0;
  HEAP32[i12 >> 2] = i1;
  HEAP32[i13 >> 2] = i14;
  HEAP32[i8 + 4 >> 2] = i15;
  i15 = i9;
  HEAP32[i15 >> 2] = i10;
  HEAP32[i15 + 4 >> 2] = i11;
 }
 STACKTOP = i16;
 return;
}

function __ZN10__cxxabiv112_GLOBAL__N_114parse_decltypeINS0_2DbEEEPKcS4_S4_RT_(i1, i4, i3) {
 i1 = i1 | 0;
 i4 = i4 | 0;
 i3 = i3 | 0;
 var i2 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0;
 i10 = STACKTOP;
 STACKTOP = STACKTOP + 64 | 0;
 i5 = i10 + 40 | 0;
 i6 = i10 + 24 | 0;
 i8 = i10 + 12 | 0;
 i9 = i10;
 L1 : do if ((i4 - i1 | 0) > 3 ? (HEAP8[i1 >> 0] | 0) == 68 : 0) {
  switch (HEAP8[i1 + 1 >> 0] | 0) {
  case 84:
  case 116:
   break;
  default:
   break L1;
  }
  i11 = i1 + 2 | 0;
  i7 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_(i11, i4, i3) | 0;
  if ((!((i7 | 0) == (i11 | 0) | (i7 | 0) == (i4 | 0)) ? (HEAP8[i7 >> 0] | 0) == 69 : 0) ? (i2 = HEAP32[i3 + 4 >> 2] | 0, (HEAP32[i3 >> 2] | 0) != (i2 | 0)) : 0) {
   i3 = i2 + -24 | 0;
   __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv(i9, i3);
   i1 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc(i9, 0, 34259) | 0;
   HEAP32[i8 >> 2] = HEAP32[i1 >> 2];
   HEAP32[i8 + 4 >> 2] = HEAP32[i1 + 4 >> 2];
   HEAP32[i8 + 8 >> 2] = HEAP32[i1 + 8 >> 2];
   i2 = 0;
   while (1) {
    if ((i2 | 0) == 3) break;
    HEAP32[i1 + (i2 << 2) >> 2] = 0;
    i2 = i2 + 1 | 0;
   }
   i1 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc(i8, 33621) | 0;
   HEAP32[i6 >> 2] = HEAP32[i1 >> 2];
   HEAP32[i6 + 4 >> 2] = HEAP32[i1 + 4 >> 2];
   HEAP32[i6 + 8 >> 2] = HEAP32[i1 + 8 >> 2];
   i2 = 0;
   while (1) {
    if ((i2 | 0) == 3) break;
    HEAP32[i1 + (i2 << 2) >> 2] = 0;
    i2 = i2 + 1 | 0;
   }
   __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE(i5, i6);
   __ZN10__cxxabiv112_GLOBAL__N_111string_pairaSEOS1_(i3, i5);
   __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i5);
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i6);
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i8);
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i9);
   i1 = i7 + 1 | 0;
  }
 } while (0);
 STACKTOP = i10;
 return i1 | 0;
}

function __ZN4wasm17SExpressionParser11parseStringEv(i8) {
 i8 = i8 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i9 = 0;
 i9 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i6 = i9 + 8 | 0;
 i4 = i9 + 4 | 0;
 i5 = i9;
 i2 = HEAP32[i8 >> 2] | 0;
 i1 = HEAP8[i2 >> 0] | 0;
 if (i1 << 24 >> 24 == 36) {
  i3 = i2 + 1 | 0;
  HEAP32[i8 >> 2] = i3;
  i1 = HEAP8[i3 >> 0] | 0;
  i7 = 1;
 } else {
  i3 = i2;
  i7 = 0;
 }
 if (i1 << 24 >> 24 == 34) {
  i1 = i3 + 1 | 0;
  HEAP32[i8 >> 2] = i1;
  i2 = 0;
  while (1) {
   if ((i2 | 0) == 3) break;
   HEAP32[i6 + (i2 << 2) >> 2] = 0;
   i2 = i2 + 1 | 0;
  }
  L9 : while (1) {
   i2 = HEAP8[i1 >> 0] | 0;
   switch (i2 << 24 >> 24) {
   case 34:
    break L9;
   case 92:
    {
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE9push_backEc(i6, 92);
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE9push_backEc(i6, HEAP8[(HEAP32[i8 >> 2] | 0) + 1 >> 0] | 0);
     i1 = (HEAP32[i8 >> 2] | 0) + 2 | 0;
     break;
    }
   default:
    {
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE9push_backEc(i6, i2);
     i1 = (HEAP32[i8 >> 2] | 0) + 1 | 0;
    }
   }
   HEAP32[i8 >> 2] = i1;
  }
  HEAP32[i8 >> 2] = i1 + 1;
  i1 = __ZN10MixedArena5allocIN4wasm7ElementEEEPT_v(i8 + 4 | 0) | 0;
  __ZN6cashew7IStringC2EPKcb(i4, (HEAP8[i6 >> 0] & 1) == 0 ? i6 + 1 | 0 : HEAP32[i6 + 8 >> 2] | 0, 0);
  i8 = HEAP32[i4 >> 2] | 0;
  HEAP8[i1 >> 0] = 0;
  HEAP32[i1 + 16 >> 2] = i8;
  HEAP8[i1 + 20 >> 0] = i7;
  __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i6);
 } else {
  i2 = i3;
  while (1) {
   if (!(i1 << 24 >> 24)) {
    i1 = i2;
    i2 = 0;
    break;
   }
   i6 = (_isspace(i1 << 24 >> 24) | 0) != 0;
   i1 = HEAP32[i8 >> 2] | 0;
   i2 = HEAP8[i1 >> 0] | 0;
   if (i6 | (i2 & -2) << 24 >> 24 == 40) break;
   i2 = i1 + 1 | 0;
   HEAP32[i8 >> 2] = i2;
   i1 = HEAP8[i2 >> 0] | 0;
  }
  HEAP8[i1 >> 0] = 0;
  i1 = __ZN10MixedArena5allocIN4wasm7ElementEEEPT_v(i8 + 4 | 0) | 0;
  __ZN6cashew7IStringC2EPKcb(i5, i3, 0);
  i6 = HEAP32[i5 >> 2] | 0;
  HEAP8[i1 >> 0] = 0;
  HEAP32[i1 + 16 >> 2] = i6;
  HEAP8[i1 + 20 >> 0] = i7;
  HEAP8[HEAP32[i8 >> 2] >> 0] = i2;
 }
 STACKTOP = i9;
 return i1 | 0;
}

function __ZNSt3__115basic_stringbufIcNS_11char_traitsIcEENS_9allocatorIcEEE8overflowEi(i16, i15) {
 i16 = i16 | 0;
 i15 = i15 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i17 = 0;
 i17 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i10 = i17;
 do if ((i15 | 0) != -1) {
  i11 = i16 + 12 | 0;
  i12 = i16 + 8 | 0;
  i13 = (HEAP32[i11 >> 2] | 0) - (HEAP32[i12 >> 2] | 0) | 0;
  i14 = i16 + 24 | 0;
  i7 = HEAP32[i14 >> 2] | 0;
  i8 = i16 + 28 | 0;
  i1 = HEAP32[i8 >> 2] | 0;
  if ((i7 | 0) == (i1 | 0)) {
   i6 = i16 + 48 | 0;
   if (!(HEAP32[i6 >> 2] & 16)) {
    i1 = -1;
    break;
   }
   i3 = i16 + 20 | 0;
   i4 = HEAP32[i3 >> 2] | 0;
   i9 = i16 + 44 | 0;
   i5 = (HEAP32[i9 >> 2] | 0) - i4 | 0;
   i2 = i16 + 32 | 0;
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE9push_backEc(i2, 0);
   if (!(HEAP8[i2 >> 0] & 1)) i1 = 10; else i1 = (HEAP32[i2 >> 2] & -2) + -1 | 0;
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6resizeEjc(i2, i1, 0);
   i1 = HEAP8[i2 >> 0] | 0;
   if (!(i1 & 1)) {
    i2 = i2 + 1 | 0;
    i1 = (i1 & 255) >>> 1;
   } else {
    i2 = HEAP32[i16 + 40 >> 2] | 0;
    i1 = HEAP32[i16 + 36 >> 2] | 0;
   }
   i1 = i2 + i1 | 0;
   HEAP32[i3 >> 2] = i2;
   HEAP32[i8 >> 2] = i1;
   i7 = i2 + (i7 - i4) | 0;
   HEAP32[i14 >> 2] = i7;
   i2 = i2 + i5 | 0;
   HEAP32[i9 >> 2] = i2;
   i8 = i9;
   i3 = i9;
   i5 = i1;
  } else {
   i2 = i16 + 44 | 0;
   i8 = i2;
   i6 = i16 + 48 | 0;
   i3 = i2;
   i2 = HEAP32[i2 >> 2] | 0;
   i5 = i1;
  }
  i4 = i7 + 1 | 0;
  HEAP32[i10 >> 2] = i4;
  i2 = HEAP32[(i4 >>> 0 < i2 >>> 0 ? i3 : i10) >> 2] | 0;
  HEAP32[i8 >> 2] = i2;
  if (HEAP32[i6 >> 2] & 8 | 0) {
   i1 = i16 + 32 | 0;
   if (!(HEAP8[i1 >> 0] & 1)) i1 = i1 + 1 | 0; else i1 = HEAP32[i16 + 40 >> 2] | 0;
   HEAP32[i12 >> 2] = i1;
   HEAP32[i11 >> 2] = i1 + i13;
   HEAP32[i16 + 16 >> 2] = i2;
  }
  if ((i7 | 0) == (i5 | 0)) {
   i1 = FUNCTION_TABLE_iii[HEAP32[(HEAP32[i16 >> 2] | 0) + 52 >> 2] & 63](i16, i15 & 255) | 0;
   break;
  } else {
   HEAP32[i14 >> 2] = i4;
   HEAP8[i7 >> 0] = i15;
   i1 = i15 & 255;
   break;
  }
 } else i1 = 0; while (0);
 STACKTOP = i17;
 return i1 | 0;
}

function __ZN4wasm22SExpressionWasmBuilder9parseTypeERNS_7ElementE(i13, i2) {
 i13 = i13 | 0;
 i2 = i2 | 0;
 var i1 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i14 = 0;
 i14 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i11 = i14;
 i12 = __ZN10MixedArena5allocIN4wasm12FunctionTypeEEEPT_v(HEAP32[i13 + 4 >> 2] | 0) | 0;
 i10 = __ZN4wasm7Element4listEv(i2) | 0;
 if (!(HEAP8[HEAP32[(HEAP32[i10 >> 2] | 0) + 4 >> 2] >> 0] | 0)) {
  i1 = __ZN4wasm7Element4listEv(i2) | 0;
  i1 = __ZN4wasm7Element3strEv(HEAP32[(HEAP32[i1 >> 2] | 0) + 4 >> 2] | 0) | 0;
  HEAP32[i12 >> 2] = i1;
  i1 = 2;
 } else i1 = 1;
 i1 = __ZN4wasm7ElementixEj(i2, i1) | 0;
 if (!(HEAP8[i1 >> 0] | 0)) ___assert_fail(14665, 14303, 1175, 14679);
 i2 = i12 + 4 | 0;
 i3 = i12 + 12 | 0;
 i4 = i12 + 16 | 0;
 i5 = i12 + 8 | 0;
 i9 = 1;
 while (1) {
  if (i9 >>> 0 >= (__ZN4wasm7Element4sizeEv(i1) | 0) >>> 0) break;
  i6 = __ZN4wasm7ElementixEj(i1, i9) | 0;
  i10 = __ZN4wasm7Element4listEv(i6) | 0;
  i10 = __ZN4wasm7Element3strEv(HEAP32[HEAP32[i10 >> 2] >> 2] | 0) | 0;
  L10 : do if ((i10 | 0) != (HEAP32[9008] | 0)) {
   i10 = __ZN4wasm7Element4listEv(i6) | 0;
   i10 = __ZN4wasm7Element3strEv(HEAP32[HEAP32[i10 >> 2] >> 2] | 0) | 0;
   if ((i10 | 0) == (HEAP32[9009] | 0)) {
    i10 = __ZN4wasm7Element4listEv(i6) | 0;
    i10 = __ZN4wasm22SExpressionWasmBuilder16stringToWasmTypeEPKcbb(i13, __ZN4wasm7Element3strEv(HEAP32[(HEAP32[i10 >> 2] | 0) + 4 >> 2] | 0) | 0, 0, 0) | 0;
    HEAP32[i2 >> 2] = i10;
   }
  } else {
   i10 = 1;
   while (1) {
    if (i10 >>> 0 >= (__ZN4wasm7Element4sizeEv(i6) | 0) >>> 0) break L10;
    i7 = __ZN4wasm22SExpressionWasmBuilder16stringToWasmTypeEPKcbb(i13, __ZN4wasm7Element3strEv(__ZN4wasm7ElementixEj(i6, i10) | 0) | 0, 0, 0) | 0;
    HEAP32[i11 >> 2] = i7;
    i8 = HEAP32[i3 >> 2] | 0;
    if (i8 >>> 0 < (HEAP32[i4 >> 2] | 0) >>> 0) {
     HEAP32[i8 >> 2] = i7;
     HEAP32[i3 >> 2] = i8 + 4;
    } else __ZNSt3__16vectorIN4wasm8WasmTypeENS_9allocatorIS2_EEE21__push_back_slow_pathIS2_EEvOT_(i5, i11);
    i10 = i10 + 1 | 0;
   }
  } while (0);
  i9 = i9 + 1 | 0;
 }
 __ZN4wasm6Module15addFunctionTypeEPNS_12FunctionTypeE(HEAP32[i13 >> 2] | 0, i12);
 STACKTOP = i14;
 return;
}

function __ZNSt3__127__insertion_sort_incompleteIRZN4wasm13ReorderLocals13visitFunctionEPNS1_8FunctionEEUljjE_PjEEbT0_S8_T_(i6, i8, i5) {
 i6 = i6 | 0;
 i8 = i8 | 0;
 i5 = i5 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i7 = 0, i9 = 0;
 switch (i8 - i6 >> 2 | 0) {
 case 1:
 case 0:
  {
   i1 = 1;
   break;
  }
 case 2:
  {
   i1 = i8 + -4 | 0;
   if (__ZZN4wasm13ReorderLocals13visitFunctionEPNS_8FunctionEENKUljjE_clEjj(i5, HEAP32[i1 >> 2] | 0, HEAP32[i6 >> 2] | 0) | 0) {
    i8 = HEAP32[i6 >> 2] | 0;
    HEAP32[i6 >> 2] = HEAP32[i1 >> 2];
    HEAP32[i1 >> 2] = i8;
    i1 = 1;
   } else i1 = 1;
   break;
  }
 case 3:
  {
   __ZNSt3__17__sort3IRZN4wasm13ReorderLocals13visitFunctionEPNS1_8FunctionEEUljjE_PjEEjT0_S8_S8_T_(i6, i6 + 4 | 0, i8 + -4 | 0, i5) | 0;
   i1 = 1;
   break;
  }
 case 4:
  {
   __ZNSt3__17__sort4IRZN4wasm13ReorderLocals13visitFunctionEPNS1_8FunctionEEUljjE_PjEEjT0_S8_S8_S8_T_(i6, i6 + 4 | 0, i6 + 8 | 0, i8 + -4 | 0, i5) | 0;
   i1 = 1;
   break;
  }
 case 5:
  {
   __ZNSt3__17__sort5IRZN4wasm13ReorderLocals13visitFunctionEPNS1_8FunctionEEUljjE_PjEEjT0_S8_S8_S8_S8_T_(i6, i6 + 4 | 0, i6 + 8 | 0, i6 + 12 | 0, i8 + -4 | 0, i5) | 0;
   i1 = 1;
   break;
  }
 default:
  {
   i2 = i6 + 8 | 0;
   __ZNSt3__17__sort3IRZN4wasm13ReorderLocals13visitFunctionEPNS1_8FunctionEEUljjE_PjEEjT0_S8_S8_T_(i6, i6 + 4 | 0, i2, i5) | 0;
   i1 = 0;
   i7 = i6 + 12 | 0;
   while (1) {
    if ((i7 | 0) == (i8 | 0)) {
     i2 = 1;
     i1 = 0;
     break;
    }
    if (__ZZN4wasm13ReorderLocals13visitFunctionEPNS_8FunctionEENKUljjE_clEjj(i5, HEAP32[i7 >> 2] | 0, HEAP32[i2 >> 2] | 0) | 0) {
     i4 = HEAP32[i7 >> 2] | 0;
     i3 = i7;
     while (1) {
      HEAP32[i3 >> 2] = HEAP32[i2 >> 2];
      if ((i2 | 0) == (i6 | 0)) {
       i2 = i6;
       break;
      }
      i3 = i2 + -4 | 0;
      if (__ZZN4wasm13ReorderLocals13visitFunctionEPNS_8FunctionEENKUljjE_clEjj(i5, i4, HEAP32[i3 >> 2] | 0) | 0) {
       i9 = i2;
       i2 = i3;
       i3 = i9;
      } else break;
     }
     HEAP32[i2 >> 2] = i4;
     i1 = i1 + 1 | 0;
     if ((i1 | 0) == 8) {
      i2 = 0;
      i1 = (i7 + 4 | 0) == (i8 | 0);
      break;
     }
    }
    i2 = i7;
    i7 = i7 + 4 | 0;
   }
   i1 = i1 | i2;
  }
 }
 return i1 | 0;
}

function __ZNKSt3__17num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_getES4_S4_RNS_8ios_baseERjRb(i10, i11, i8, i9, i12, i14) {
 i10 = i10 | 0;
 i11 = i11 | 0;
 i8 = i8 | 0;
 i9 = i9 | 0;
 i12 = i12 | 0;
 i14 = i14 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i13 = 0, i15 = 0;
 i15 = STACKTOP;
 STACKTOP = STACKTOP + 64 | 0;
 i2 = i15 + 48 | 0;
 i1 = i15 + 24 | 0;
 i13 = i15 + 20 | 0;
 i3 = i15 + 16 | 0;
 i4 = i15 + 12 | 0;
 i5 = i15 + 8 | 0;
 i6 = i15 + 4 | 0;
 i7 = i15;
 if (!(HEAP32[i9 + 4 >> 2] & 1)) {
  HEAP32[i13 >> 2] = -1;
  i7 = HEAP32[(HEAP32[i10 >> 2] | 0) + 16 >> 2] | 0;
  HEAP32[i3 >> 2] = HEAP32[i11 >> 2];
  HEAP32[i4 >> 2] = HEAP32[i8 >> 2];
  HEAP32[i1 >> 2] = HEAP32[i3 >> 2];
  HEAP32[i2 >> 2] = HEAP32[i4 >> 2];
  i1 = FUNCTION_TABLE_iiiiiii[i7 & 63](i10, i1, i2, i9, i12, i13) | 0;
  HEAP32[i11 >> 2] = i1;
  switch (HEAP32[i13 >> 2] | 0) {
  case 0:
   {
    HEAP8[i14 >> 0] = 0;
    break;
   }
  case 1:
   {
    HEAP8[i14 >> 0] = 1;
    break;
   }
  default:
   {
    HEAP8[i14 >> 0] = 1;
    HEAP32[i12 >> 2] = 4;
   }
  }
 } else {
  i10 = __ZNKSt3__18ios_base6getlocEv(i9) | 0;
  HEAP32[i5 >> 2] = i10;
  i13 = __ZNKSt3__16locale9use_facetERNS0_2idE(i5, 38408) | 0;
  __ZNSt3__114__shared_count16__release_sharedEv(i10) | 0;
  i9 = __ZNKSt3__18ios_base6getlocEv(i9) | 0;
  HEAP32[i6 >> 2] = i9;
  i10 = __ZNKSt3__16locale9use_facetERNS0_2idE(i6, 38416) | 0;
  __ZNSt3__114__shared_count16__release_sharedEv(i9) | 0;
  FUNCTION_TABLE_vii[HEAP32[(HEAP32[i10 >> 2] | 0) + 24 >> 2] & 511](i1, i10);
  FUNCTION_TABLE_vii[HEAP32[(HEAP32[i10 >> 2] | 0) + 28 >> 2] & 511](i1 + 12 | 0, i10);
  HEAP32[i7 >> 2] = HEAP32[i8 >> 2];
  HEAP32[i2 >> 2] = HEAP32[i7 >> 2];
  i13 = (__ZNSt3__114__scan_keywordINS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEPKNS_12basic_stringIwS3_NS_9allocatorIwEEEENS_5ctypeIwEEEET0_RT_SE_SD_SD_RKT1_Rjb(i11, i2, i1, i1 + 24 | 0, i13, i12, 1) | 0) == (i1 | 0) & 1;
  HEAP8[i14 >> 0] = i13;
  i14 = HEAP32[i11 >> 2] | 0;
  __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev(i1 + 12 | 0);
  __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev(i1);
  i1 = i14;
 }
 STACKTOP = i15;
 return i1 | 0;
}

function __ZNKSt3__17num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_getES4_S4_RNS_8ios_baseERjRb(i10, i11, i8, i9, i12, i14) {
 i10 = i10 | 0;
 i11 = i11 | 0;
 i8 = i8 | 0;
 i9 = i9 | 0;
 i12 = i12 | 0;
 i14 = i14 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i13 = 0, i15 = 0;
 i15 = STACKTOP;
 STACKTOP = STACKTOP + 64 | 0;
 i2 = i15 + 48 | 0;
 i1 = i15 + 24 | 0;
 i13 = i15 + 20 | 0;
 i3 = i15 + 16 | 0;
 i4 = i15 + 12 | 0;
 i5 = i15 + 8 | 0;
 i6 = i15 + 4 | 0;
 i7 = i15;
 if (!(HEAP32[i9 + 4 >> 2] & 1)) {
  HEAP32[i13 >> 2] = -1;
  i7 = HEAP32[(HEAP32[i10 >> 2] | 0) + 16 >> 2] | 0;
  HEAP32[i3 >> 2] = HEAP32[i11 >> 2];
  HEAP32[i4 >> 2] = HEAP32[i8 >> 2];
  HEAP32[i1 >> 2] = HEAP32[i3 >> 2];
  HEAP32[i2 >> 2] = HEAP32[i4 >> 2];
  i1 = FUNCTION_TABLE_iiiiiii[i7 & 63](i10, i1, i2, i9, i12, i13) | 0;
  HEAP32[i11 >> 2] = i1;
  switch (HEAP32[i13 >> 2] | 0) {
  case 0:
   {
    HEAP8[i14 >> 0] = 0;
    break;
   }
  case 1:
   {
    HEAP8[i14 >> 0] = 1;
    break;
   }
  default:
   {
    HEAP8[i14 >> 0] = 1;
    HEAP32[i12 >> 2] = 4;
   }
  }
 } else {
  i10 = __ZNKSt3__18ios_base6getlocEv(i9) | 0;
  HEAP32[i5 >> 2] = i10;
  i13 = __ZNKSt3__16locale9use_facetERNS0_2idE(i5, 38376) | 0;
  __ZNSt3__114__shared_count16__release_sharedEv(i10) | 0;
  i9 = __ZNKSt3__18ios_base6getlocEv(i9) | 0;
  HEAP32[i6 >> 2] = i9;
  i10 = __ZNKSt3__16locale9use_facetERNS0_2idE(i6, 38388) | 0;
  __ZNSt3__114__shared_count16__release_sharedEv(i9) | 0;
  FUNCTION_TABLE_vii[HEAP32[(HEAP32[i10 >> 2] | 0) + 24 >> 2] & 511](i1, i10);
  FUNCTION_TABLE_vii[HEAP32[(HEAP32[i10 >> 2] | 0) + 28 >> 2] & 511](i1 + 12 | 0, i10);
  HEAP32[i7 >> 2] = HEAP32[i8 >> 2];
  HEAP32[i2 >> 2] = HEAP32[i7 >> 2];
  i13 = (__ZNSt3__114__scan_keywordINS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEPKNS_12basic_stringIcS3_NS_9allocatorIcEEEENS_5ctypeIcEEEET0_RT_SE_SD_SD_RKT1_Rjb(i11, i2, i1, i1 + 24 | 0, i13, i12, 1) | 0) == (i1 | 0) & 1;
  HEAP8[i14 >> 0] = i13;
  i14 = HEAP32[i11 >> 2] | 0;
  __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i1 + 12 | 0);
  __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i1);
  i1 = i14;
 }
 STACKTOP = i15;
 return i1 | 0;
}

function __ZN4wasm18ensureFunctionTypeENSt3__112basic_stringIcNS0_11char_traitsIcEENS0_9allocatorIcEEEEPNS_6ModuleER10MixedArena(i12, i13, i3) {
 i12 = i12 | 0;
 i13 = i13 | 0;
 i3 = i3 | 0;
 var i1 = 0, i2 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i14 = 0;
 i14 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i1 = i14 + 28 | 0;
 i4 = i14 + 12 | 0;
 i9 = i14 + 16 | 0;
 i10 = i14 + 8 | 0;
 i2 = i14 + 4 | 0;
 i11 = i14;
 __ZNSt3__1plIcNS_11char_traitsIcEENS_9allocatorIcEEEENS_12basic_stringIT_T0_T1_EEPKS6_RKS9_(i9, 26515, i12);
 __ZN6cashew7IStringC2EPKcb(i4, (HEAP8[i9 >> 0] & 1) == 0 ? i9 + 1 | 0 : HEAP32[i9 + 8 >> 2] | 0, 0);
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i9);
 i4 = HEAP32[i4 >> 2] | 0;
 HEAP32[i10 >> 2] = i4;
 HEAP32[i1 >> 2] = HEAP32[i10 >> 2];
 if (!(__ZN4wasm6Module17checkFunctionTypeENS_4NameE(i13, i1) | 0)) {
  i1 = __ZN10MixedArena5allocIN4wasm12FunctionTypeEEEPT_v(i3) | 0;
  HEAP32[i1 >> 2] = i4;
  i2 = HEAP16[i12 >> 1] | 0;
  if (!(i2 & 1)) {
   i10 = i12 + 8 | 0;
   i2 = (i2 & 65535) >>> 8 & 255;
  } else {
   i2 = i12 + 8 | 0;
   i10 = i2;
   i2 = HEAP8[HEAP32[i2 >> 2] >> 0] | 0;
  }
  i9 = i12 + 1 | 0;
  i4 = __ZN4wasm13sigToWasmTypeEc(i2) | 0;
  HEAP32[i1 + 4 >> 2] = i4;
  i4 = i1 + 8 | 0;
  i5 = i1 + 12 | 0;
  i6 = i1 + 16 | 0;
  i7 = i12 + 4 | 0;
  i8 = 1;
  while (1) {
   i2 = HEAP8[i12 >> 0] | 0;
   i3 = (i2 & 1) == 0;
   if (i3) i2 = (i2 & 255) >>> 1; else i2 = HEAP32[i7 >> 2] | 0;
   if (i8 >>> 0 >= i2 >>> 0) break;
   if (i3) i2 = i9; else i2 = HEAP32[i10 >> 2] | 0;
   i2 = __ZN4wasm13sigToWasmTypeEc(HEAP8[i2 + i8 >> 0] | 0) | 0;
   HEAP32[i11 >> 2] = i2;
   i3 = HEAP32[i5 >> 2] | 0;
   if (i3 >>> 0 < (HEAP32[i6 >> 2] | 0) >>> 0) {
    HEAP32[i3 >> 2] = i2;
    HEAP32[i5 >> 2] = i3 + 4;
   } else __ZNSt3__16vectorIN4wasm8WasmTypeENS_9allocatorIS2_EEE21__push_back_slow_pathIS2_EEvOT_(i4, i11);
   i8 = i8 + 1 | 0;
  }
  __ZN4wasm6Module15addFunctionTypeEPNS_12FunctionTypeE(i13, i1);
 } else {
  HEAP32[i2 >> 2] = i4;
  HEAP32[i1 >> 2] = HEAP32[i2 >> 2];
  i1 = __ZN4wasm6Module15getFunctionTypeENS_4NameE(i13, i1) | 0;
 }
 STACKTOP = i14;
 return i1 | 0;
}

function __ZNSt3__19__num_getIcE17__stage2_int_loopEciPcRS2_RjcRKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEPjRSD_S2_(i7, i13, i11, i12, i14, i3, i2, i4, i5, i8) {
 i7 = i7 | 0;
 i13 = i13 | 0;
 i11 = i11 | 0;
 i12 = i12 | 0;
 i14 = i14 | 0;
 i3 = i3 | 0;
 i2 = i2 | 0;
 i4 = i4 | 0;
 i5 = i5 | 0;
 i8 = i8 | 0;
 var i1 = 0, i6 = 0, i9 = 0, i10 = 0;
 i9 = HEAP32[i12 >> 2] | 0;
 i10 = (i9 | 0) == (i11 | 0);
 do if (i10) {
  i1 = (HEAP8[i8 + 24 >> 0] | 0) == i7 << 24 >> 24;
  if (!i1 ? (HEAP8[i8 + 25 >> 0] | 0) != i7 << 24 >> 24 : 0) {
   i6 = 5;
   break;
  }
  HEAP32[i12 >> 2] = i11 + 1;
  HEAP8[i11 >> 0] = i1 ? 43 : 45;
  HEAP32[i14 >> 2] = 0;
  i1 = 0;
 } else i6 = 5; while (0);
 L6 : do if ((i6 | 0) == 5) {
  i6 = HEAP8[i2 >> 0] | 0;
  if (i7 << 24 >> 24 == i3 << 24 >> 24 ? (((i6 & 1) == 0 ? (i6 & 255) >>> 1 : HEAP32[i2 + 4 >> 2] | 0) | 0) != 0 : 0) {
   i1 = HEAP32[i5 >> 2] | 0;
   if ((i1 - i4 | 0) >= 160) {
    i1 = 0;
    break;
   }
   i13 = HEAP32[i14 >> 2] | 0;
   HEAP32[i5 >> 2] = i1 + 4;
   HEAP32[i1 >> 2] = i13;
   HEAP32[i14 >> 2] = 0;
   i1 = 0;
   break;
  }
  i2 = i8 + 26 | 0;
  i1 = i8;
  while (1) {
   if ((i1 | 0) == (i2 | 0)) {
    i1 = i2;
    break;
   }
   if ((HEAP8[i1 >> 0] | 0) == i7 << 24 >> 24) break;
   i1 = i1 + 1 | 0;
  }
  i1 = i1 - i8 | 0;
  if ((i1 | 0) > 23) i1 = -1; else {
   switch (i13 | 0) {
   case 10:
   case 8:
    {
     if ((i1 | 0) >= (i13 | 0)) {
      i1 = -1;
      break L6;
     }
     break;
    }
   case 16:
    {
     if ((i1 | 0) >= 22) {
      if (i10) {
       i1 = -1;
       break L6;
      }
      if ((i9 - i11 | 0) >= 3) {
       i1 = -1;
       break L6;
      }
      if ((HEAP8[i9 + -1 >> 0] | 0) != 48) {
       i1 = -1;
       break L6;
      }
      HEAP32[i14 >> 2] = 0;
      i1 = HEAP8[30448 + i1 >> 0] | 0;
      HEAP32[i12 >> 2] = i9 + 1;
      HEAP8[i9 >> 0] = i1;
      i1 = 0;
      break L6;
     }
     break;
    }
   default:
    {}
   }
   i1 = HEAP8[30448 + i1 >> 0] | 0;
   HEAP32[i12 >> 2] = i9 + 1;
   HEAP8[i9 >> 0] = i1;
   HEAP32[i14 >> 2] = (HEAP32[i14 >> 2] | 0) + 1;
   i1 = 0;
  }
 } while (0);
 return i1 | 0;
}

function __ZNSt3__19__num_getIwE17__stage2_int_loopEwiPcRS2_RjwRKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEPjRSD_Pw(i7, i13, i11, i12, i14, i3, i2, i4, i5, i8) {
 i7 = i7 | 0;
 i13 = i13 | 0;
 i11 = i11 | 0;
 i12 = i12 | 0;
 i14 = i14 | 0;
 i3 = i3 | 0;
 i2 = i2 | 0;
 i4 = i4 | 0;
 i5 = i5 | 0;
 i8 = i8 | 0;
 var i1 = 0, i6 = 0, i9 = 0, i10 = 0;
 i9 = HEAP32[i12 >> 2] | 0;
 i10 = (i9 | 0) == (i11 | 0);
 do if (i10) {
  i1 = (HEAP32[i8 + 96 >> 2] | 0) == (i7 | 0);
  if (!i1 ? (HEAP32[i8 + 100 >> 2] | 0) != (i7 | 0) : 0) {
   i6 = 5;
   break;
  }
  HEAP32[i12 >> 2] = i11 + 1;
  HEAP8[i11 >> 0] = i1 ? 43 : 45;
  HEAP32[i14 >> 2] = 0;
  i1 = 0;
 } else i6 = 5; while (0);
 L6 : do if ((i6 | 0) == 5) {
  i6 = HEAP8[i2 >> 0] | 0;
  if ((i7 | 0) == (i3 | 0) ? (((i6 & 1) == 0 ? (i6 & 255) >>> 1 : HEAP32[i2 + 4 >> 2] | 0) | 0) != 0 : 0) {
   i1 = HEAP32[i5 >> 2] | 0;
   if ((i1 - i4 | 0) >= 160) {
    i1 = 0;
    break;
   }
   i13 = HEAP32[i14 >> 2] | 0;
   HEAP32[i5 >> 2] = i1 + 4;
   HEAP32[i1 >> 2] = i13;
   HEAP32[i14 >> 2] = 0;
   i1 = 0;
   break;
  }
  i2 = i8 + 104 | 0;
  i1 = i8;
  while (1) {
   if ((i1 | 0) == (i2 | 0)) {
    i1 = i2;
    break;
   }
   if ((HEAP32[i1 >> 2] | 0) == (i7 | 0)) break;
   i1 = i1 + 4 | 0;
  }
  i1 = i1 - i8 | 0;
  i2 = i1 >> 2;
  if ((i1 | 0) > 92) i1 = -1; else {
   switch (i13 | 0) {
   case 10:
   case 8:
    {
     if ((i2 | 0) >= (i13 | 0)) {
      i1 = -1;
      break L6;
     }
     break;
    }
   case 16:
    {
     if ((i1 | 0) >= 88) {
      if (i10) {
       i1 = -1;
       break L6;
      }
      if ((i9 - i11 | 0) >= 3) {
       i1 = -1;
       break L6;
      }
      if ((HEAP8[i9 + -1 >> 0] | 0) != 48) {
       i1 = -1;
       break L6;
      }
      HEAP32[i14 >> 2] = 0;
      i1 = HEAP8[30448 + i2 >> 0] | 0;
      HEAP32[i12 >> 2] = i9 + 1;
      HEAP8[i9 >> 0] = i1;
      i1 = 0;
      break L6;
     }
     break;
    }
   default:
    {}
   }
   i1 = HEAP8[30448 + i2 >> 0] | 0;
   HEAP32[i12 >> 2] = i9 + 1;
   HEAP8[i9 >> 0] = i1;
   HEAP32[i14 >> 2] = (HEAP32[i14 >> 2] | 0) + 1;
   i1 = 0;
  }
 } while (0);
 return i1 | 0;
}

function __ZN4wasm16PrintSExpression17visitFunctionTypeEPNS_12FunctionTypeEb(i6, i4, i5) {
 i6 = i6 | 0;
 i4 = i4 | 0;
 i5 = i5 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i7 = 0;
 i7 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i1 = i7 + 4 | 0;
 i2 = i7;
 if (i5) {
  i3 = __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_c(__Z12printOpeningRNSt3__113basic_ostreamIcNS_11char_traitsIcEEEEPKcb(HEAP32[i6 >> 2] | 0, 18169, 0) | 0, 32) | 0;
  HEAP32[i2 >> 2] = HEAP32[i4 >> 2];
  HEAP32[i1 >> 2] = HEAP32[i2 >> 2];
  __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(__ZN4wasmlsERNSt3__113basic_ostreamIcNS0_11char_traitsIcEEEENS_4NameE(i3, i1) | 0, 18174) | 0;
 }
 i2 = i4 + 8 | 0;
 i1 = i4 + 12 | 0;
 if ((HEAP32[i1 >> 2] | 0) != (HEAP32[i2 >> 2] | 0)) {
  __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(HEAP32[i6 >> 2] | 0, HEAP32[i6 + 12 >> 2] | 0) | 0;
  __Z17printMinorOpeningRNSt3__113basic_ostreamIcNS_11char_traitsIcEEEEPKc(HEAP32[i6 >> 2] | 0, 18181) | 0;
  i3 = HEAP32[i1 >> 2] | 0;
  i2 = HEAP32[i2 >> 2] | 0;
  while (1) {
   i1 = HEAP32[i6 >> 2] | 0;
   if ((i2 | 0) == (i3 | 0)) break;
   i1 = __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_c(i1, 32) | 0;
   __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(i1, __ZN4wasm13printWasmTypeENS_8WasmTypeE(HEAP32[i2 >> 2] | 0) | 0) | 0;
   i2 = i2 + 4 | 0;
  }
  __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_c(i1, 41) | 0;
 }
 i1 = i4 + 4 | 0;
 if (HEAP32[i1 >> 2] | 0) {
  __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(HEAP32[i6 >> 2] | 0, HEAP32[i6 + 12 >> 2] | 0) | 0;
  i4 = __Z17printMinorOpeningRNSt3__113basic_ostreamIcNS_11char_traitsIcEEEEPKc(HEAP32[i6 >> 2] | 0, 18193) | 0;
  __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_c(__ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(i4, __ZN4wasm13printWasmTypeENS_8WasmTypeE(HEAP32[i1 >> 2] | 0) | 0) | 0, 41) | 0;
 }
 if (i5) __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(HEAP32[i6 >> 2] | 0, 18201) | 0;
 STACKTOP = i7;
 return;
}

function __ZN4wasm22SExpressionWasmBuilder9makeStoreERNS_7ElementENS_8WasmTypeE(i9, i8, i1) {
 i9 = i9 | 0;
 i8 = i8 | 0;
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0;
 i3 = __ZN4wasm7Element4listEv(i8) | 0;
 i3 = _strchr(__ZN4wasm7Element5c_strEv(HEAP32[HEAP32[i3 >> 2] >> 2] | 0) | 0, 46) | 0;
 i7 = __ZN10MixedArena5allocIN4wasm5StoreEEEPT_v(HEAP32[i9 + 4 >> 2] | 0) | 0;
 HEAP32[i7 + 4 >> 2] = i1;
 i1 = __ZN4wasm15getWasmTypeSizeENS_8WasmTypeE(i1) | 0;
 i2 = i7 + 8 | 0;
 HEAP32[i2 >> 2] = i1;
 L1 : do switch (HEAP8[i3 + 6 >> 0] | 0) {
 case 56:
  {
   HEAP32[i2 >> 2] = 1;
   i4 = 1;
   break;
  }
 case 49:
  {
   if ((HEAP8[i3 + 7 >> 0] | 0) == 54) {
    HEAP32[i2 >> 2] = 2;
    i4 = 2;
    break L1;
   } else ___assert_fail(14973, 14303, 861, 15014);
   break;
  }
 case 51:
  {
   if ((HEAP8[i3 + 7 >> 0] | 0) == 50) {
    HEAP32[i2 >> 2] = 4;
    i4 = 4;
    break L1;
   } else ___assert_fail(14998, 14303, 865, 15014);
   break;
  }
 default:
  i4 = i1;
 } while (0);
 i5 = i7 + 12 | 0;
 HEAP32[i5 >> 2] = 0;
 i6 = i7 + 16 | 0;
 HEAP32[i6 >> 2] = i4;
 i4 = i9 + 8 | 0;
 i1 = 1;
 while (1) {
  i2 = __ZN4wasm7ElementixEj(i8, i1) | 0;
  i2 = (HEAP8[i2 >> 0] | 0) == 0;
  i3 = __ZN4wasm7ElementixEj(i8, i1) | 0;
  if (!i2) {
   i2 = 18;
   break;
  }
  i3 = __ZN4wasm7Element5c_strEv(i3) | 0;
  i2 = _strchr(i3, 61) | 0;
  if (!i2) {
   i2 = 12;
   break;
  }
  i2 = i2 + 1 | 0;
  switch (HEAP8[i3 >> 0] | 0) {
  case 97:
   {
    i3 = _atoi(i2) | 0;
    HEAP32[i6 >> 2] = i3;
    break;
   }
  case 111:
   {
    i3 = _atoi(i2) | 0;
    HEAP32[i5 >> 2] = i3;
    break;
   }
  default:
   __ZNKSt3__18functionIFvvEEclEv(i4);
  }
  i1 = i1 + 1 | 0;
 }
 if ((i2 | 0) == 12) ___assert_fail(18751, 14303, 875, 15014); else if ((i2 | 0) == 18) {
  i6 = __ZN4wasm22SExpressionWasmBuilder15parseExpressionERNS_7ElementE(i9, i3) | 0;
  HEAP32[i7 + 20 >> 2] = i6;
  i9 = __ZN4wasm22SExpressionWasmBuilder15parseExpressionERNS_7ElementE(i9, __ZN4wasm7ElementixEj(i8, i1 + 1 | 0) | 0) | 0;
  HEAP32[i7 + 24 >> 2] = i9;
  return i7 | 0;
 }
 return 0;
}

function _wcsrtombs(i3, i6, i1, i2) {
 i3 = i3 | 0;
 i6 = i6 | 0;
 i1 = i1 | 0;
 i2 = i2 | 0;
 var i4 = 0, i5 = 0, i7 = 0, i8 = 0;
 i8 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i7 = i8;
 L1 : do if (!i3) {
  i3 = HEAP32[i6 >> 2] | 0;
  i2 = HEAP32[i3 >> 2] | 0;
  if (!i2) i1 = 0; else {
   i1 = 0;
   do {
    if (i2 >>> 0 > 127) {
     i2 = _wcrtomb(i7, i2, 0) | 0;
     if ((i2 | 0) == -1) {
      i1 = -1;
      break L1;
     }
    } else i2 = 1;
    i1 = i2 + i1 | 0;
    i3 = i3 + 4 | 0;
    i2 = HEAP32[i3 >> 2] | 0;
   } while ((i2 | 0) != 0);
  }
 } else {
  L9 : do if (i1 >>> 0 > 3) {
   i2 = i1;
   i4 = HEAP32[i6 >> 2] | 0;
   while (1) {
    i5 = HEAP32[i4 >> 2] | 0;
    if ((i5 + -1 | 0) >>> 0 > 126) {
     if (!i5) break;
     i5 = _wcrtomb(i3, i5, 0) | 0;
     if ((i5 | 0) == -1) {
      i1 = -1;
      break L1;
     }
     i3 = i3 + i5 | 0;
     i2 = i2 - i5 | 0;
    } else {
     HEAP8[i3 >> 0] = i5;
     i3 = i3 + 1 | 0;
     i2 = i2 + -1 | 0;
     i4 = HEAP32[i6 >> 2] | 0;
    }
    i4 = i4 + 4 | 0;
    HEAP32[i6 >> 2] = i4;
    if (i2 >>> 0 <= 3) break L9;
   }
   HEAP8[i3 >> 0] = 0;
   HEAP32[i6 >> 2] = 0;
   i1 = i1 - i2 | 0;
   break L1;
  } else i2 = i1; while (0);
  if (i2) {
   i4 = HEAP32[i6 >> 2] | 0;
   while (1) {
    i5 = HEAP32[i4 >> 2] | 0;
    if ((i5 + -1 | 0) >>> 0 > 126) {
     if (!i5) {
      i4 = 19;
      break;
     }
     i5 = _wcrtomb(i7, i5, 0) | 0;
     if ((i5 | 0) == -1) {
      i1 = -1;
      break L1;
     }
     if (i2 >>> 0 < i5 >>> 0) {
      i4 = 22;
      break;
     }
     _wcrtomb(i3, HEAP32[i4 >> 2] | 0, 0) | 0;
     i3 = i3 + i5 | 0;
     i2 = i2 - i5 | 0;
    } else {
     HEAP8[i3 >> 0] = i5;
     i3 = i3 + 1 | 0;
     i2 = i2 + -1 | 0;
     i4 = HEAP32[i6 >> 2] | 0;
    }
    i4 = i4 + 4 | 0;
    HEAP32[i6 >> 2] = i4;
    if (!i2) break L1;
   }
   if ((i4 | 0) == 19) {
    HEAP8[i3 >> 0] = 0;
    HEAP32[i6 >> 2] = 0;
    i1 = i1 - i2 | 0;
    break;
   } else if ((i4 | 0) == 22) {
    i1 = i1 - i2 | 0;
    break;
   }
  }
 } while (0);
 STACKTOP = i8;
 return i1 | 0;
}

function ___stdio_write(i14, i2, i1) {
 i14 = i14 | 0;
 i2 = i2 | 0;
 i1 = i1 | 0;
 var i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i15 = 0;
 i15 = STACKTOP;
 STACKTOP = STACKTOP + 48 | 0;
 i11 = i15 + 16 | 0;
 i10 = i15;
 i3 = i15 + 32 | 0;
 i12 = i14 + 28 | 0;
 i4 = HEAP32[i12 >> 2] | 0;
 HEAP32[i3 >> 2] = i4;
 i13 = i14 + 20 | 0;
 i4 = (HEAP32[i13 >> 2] | 0) - i4 | 0;
 HEAP32[i3 + 4 >> 2] = i4;
 HEAP32[i3 + 8 >> 2] = i2;
 HEAP32[i3 + 12 >> 2] = i1;
 i8 = i14 + 60 | 0;
 i9 = i14 + 44 | 0;
 i2 = 2;
 i4 = i4 + i1 | 0;
 while (1) {
  if (!(HEAP32[9172] | 0)) {
   HEAP32[i11 >> 2] = HEAP32[i8 >> 2];
   HEAP32[i11 + 4 >> 2] = i3;
   HEAP32[i11 + 8 >> 2] = i2;
   i6 = ___syscall_ret(___syscall146(146, i11 | 0) | 0) | 0;
  } else {
   _pthread_cleanup_push(217, i14 | 0);
   HEAP32[i10 >> 2] = HEAP32[i8 >> 2];
   HEAP32[i10 + 4 >> 2] = i3;
   HEAP32[i10 + 8 >> 2] = i2;
   i6 = ___syscall_ret(___syscall146(146, i10 | 0) | 0) | 0;
   _pthread_cleanup_pop(0);
  }
  if ((i4 | 0) == (i6 | 0)) {
   i4 = 6;
   break;
  }
  if ((i6 | 0) < 0) {
   i4 = 8;
   break;
  }
  i4 = i4 - i6 | 0;
  i5 = HEAP32[i3 + 4 >> 2] | 0;
  if (i6 >>> 0 <= i5 >>> 0) if ((i2 | 0) == 2) {
   HEAP32[i12 >> 2] = (HEAP32[i12 >> 2] | 0) + i6;
   i7 = i5;
   i2 = 2;
  } else i7 = i5; else {
   i7 = HEAP32[i9 >> 2] | 0;
   HEAP32[i12 >> 2] = i7;
   HEAP32[i13 >> 2] = i7;
   i7 = HEAP32[i3 + 12 >> 2] | 0;
   i6 = i6 - i5 | 0;
   i3 = i3 + 8 | 0;
   i2 = i2 + -1 | 0;
  }
  HEAP32[i3 >> 2] = (HEAP32[i3 >> 2] | 0) + i6;
  HEAP32[i3 + 4 >> 2] = i7 - i6;
 }
 if ((i4 | 0) == 6) {
  i11 = HEAP32[i9 >> 2] | 0;
  HEAP32[i14 + 16 >> 2] = i11 + (HEAP32[i14 + 48 >> 2] | 0);
  i14 = i11;
  HEAP32[i12 >> 2] = i14;
  HEAP32[i13 >> 2] = i14;
 } else if ((i4 | 0) == 8) {
  HEAP32[i14 + 16 >> 2] = 0;
  HEAP32[i12 >> 2] = 0;
  HEAP32[i13 >> 2] = 0;
  HEAP32[i14 >> 2] = HEAP32[i14 >> 2] | 32;
  if ((i2 | 0) == 2) i1 = 0; else i1 = i1 - (HEAP32[i3 + 4 >> 2] | 0) | 0;
 }
 STACKTOP = i15;
 return i1 | 0;
}

function __ZN4wasm7Literal11printDoubleERNSt3__113basic_ostreamIcNS1_11char_traitsIcEEEEd(i5, d3) {
 i5 = i5 | 0;
 d3 = +d3;
 var i1 = 0, i2 = 0, i4 = 0, i6 = 0, d7 = 0.0;
 HEAPF64[tempDoublePtr >> 3] = d3;
 i4 = HEAP32[tempDoublePtr >> 2] | 0;
 i1 = HEAP32[tempDoublePtr + 4 >> 2] | 0;
 i2 = (i1 | 0) < 0;
 do if (d3 == 0.0 & i2) __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(i5, 15583) | 0; else {
  d7 = +Math_abs(+d3);
  HEAPF64[tempDoublePtr >> 3] = d7;
  i6 = HEAP32[tempDoublePtr + 4 >> 2] | 0;
  if (i6 >>> 0 > 2146435072 | (i6 | 0) == 2146435072 & (HEAP32[tempDoublePtr >> 2] | 0) >>> 0 > 0) {
   __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(__ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(i5, i2 ? 34691 : 44318) | 0, 29219) | 0;
   i1 = i1 & 1048575;
   if ((i4 | 0) == 0 & (i1 | 0) == 0) break;
   i6 = __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(i5, 15550) | 0;
   i5 = i6 + (HEAP32[(HEAP32[i6 >> 2] | 0) + -12 >> 2] | 0) + 4 | 0;
   HEAP32[i5 >> 2] = HEAP32[i5 >> 2] & -75 | 8;
   i6 = __ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEElsEy(i6, i4, i1) | 0;
   i6 = i6 + (HEAP32[(HEAP32[i6 >> 2] | 0) + -12 >> 2] | 0) + 4 | 0;
   HEAP32[i6 >> 2] = HEAP32[i6 >> 2] & -75 | 2;
   break;
  }
  i6 = i1 & 2146435072;
  if (!(i6 >>> 0 < 2146435072 | (i6 | 0) == 2146435072 & 0 < 0)) {
   __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(i5, i2 ? 13617 : 29210) | 0;
   break;
  }
  i1 = __ZN6cashew9JSPrinter11numToStringEdb(d3, 1) | 0;
  switch (HEAP8[i1 >> 0] | 0) {
  case 46:
   {
    __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_c(i5, 48) | 0;
    break;
   }
  case 45:
   {
    i2 = i1 + 1 | 0;
    if ((HEAP8[i2 >> 0] | 0) == 46) {
     __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(i5, 15583) | 0;
     i1 = i2;
    }
    break;
   }
  default:
   {}
  }
  __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(i5, i1) | 0;
 } while (0);
 return;
}

function __ZN4wasm16PrintSExpression9visitLoadEPNS_4LoadE(i4, i3) {
 i4 = i4 | 0;
 i3 = i3 | 0;
 var i1 = 0, i2 = 0, i5 = 0;
 __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_c(HEAP32[i4 >> 2] | 0, 40) | 0;
 i2 = __Z12prepareColorRNSt3__113basic_ostreamIcNS_11char_traitsIcEEEE(HEAP32[i4 >> 2] | 0) | 0;
 i5 = i3 + 4 | 0;
 __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(__ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(i2, __ZN4wasm13printWasmTypeENS_8WasmTypeE(HEAP32[i5 >> 2] | 0) | 0) | 0, 18371) | 0;
 i2 = i3 + 8 | 0;
 i1 = HEAP32[i2 >> 2] | 0;
 if (!(i1 >>> 0 >= 4 ? !(i1 >>> 0 < 8 & (HEAP32[i5 >> 2] | 0) == 2) : 0)) {
  switch (i1 | 0) {
  case 1:
   {
    __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_c(HEAP32[i4 >> 2] | 0, 56) | 0;
    break;
   }
  case 2:
   {
    __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(HEAP32[i4 >> 2] | 0, 18377) | 0;
    break;
   }
  case 4:
   {
    __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(HEAP32[i4 >> 2] | 0, 18380) | 0;
    break;
   }
  default:
   _abort();
  }
  __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(HEAP32[i4 >> 2] | 0, HEAP8[i3 + 12 >> 0] | 0 ? 18383 : 18386) | 0;
 }
 i1 = i3 + 16 | 0;
 if (HEAP32[i1 >> 2] | 0) {
  i5 = __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(HEAP32[i4 >> 2] | 0, 18389) | 0;
  __ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEElsEj(i5, HEAP32[i1 >> 2] | 0) | 0;
 }
 i1 = i3 + 20 | 0;
 if ((HEAP32[i1 >> 2] | 0) != (HEAP32[i2 >> 2] | 0)) {
  i5 = __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(HEAP32[i4 >> 2] | 0, 18398) | 0;
  __ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEElsEj(i5, HEAP32[i1 >> 2] | 0) | 0;
 }
 __ZN4wasm16PrintSExpression9incIndentEv(i4);
 __ZN4wasm16PrintSExpression13printFullLineEPNS_10ExpressionE(i4, HEAP32[i3 + 24 >> 2] | 0);
 __ZN4wasm16PrintSExpression9decIndentEv(i4);
 return;
}

function __ZN4wasm16PrintSExpression10visitStoreEPNS_5StoreE(i5, i4) {
 i5 = i5 | 0;
 i4 = i4 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i6 = 0;
 __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_c(HEAP32[i5 >> 2] | 0, 40) | 0;
 i3 = __Z12prepareColorRNSt3__113basic_ostreamIcNS_11char_traitsIcEEEE(HEAP32[i5 >> 2] | 0) | 0;
 i6 = i4 + 4 | 0;
 __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(__ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(i3, __ZN4wasm13printWasmTypeENS_8WasmTypeE(HEAP32[i6 >> 2] | 0) | 0) | 0, 18406) | 0;
 i3 = i4 + 8 | 0;
 i1 = HEAP32[i3 >> 2] | 0;
 if (!(i1 >>> 0 >= 4 ? !(i1 >>> 0 < 8 & (HEAP32[i6 >> 2] | 0) == 2) : 0)) i2 = 3;
 L3 : do if ((i2 | 0) == 3) switch (i1 | 0) {
 case 1:
  {
   __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_c(HEAP32[i5 >> 2] | 0, 56) | 0;
   break L3;
  }
 case 2:
  {
   __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(HEAP32[i5 >> 2] | 0, 18377) | 0;
   break L3;
  }
 case 4:
  {
   __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(HEAP32[i5 >> 2] | 0, 18380) | 0;
   break L3;
  }
 default:
  _abort();
 } while (0);
 i1 = i4 + 12 | 0;
 if (HEAP32[i1 >> 2] | 0) {
  i6 = __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(HEAP32[i5 >> 2] | 0, 18389) | 0;
  __ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEElsEj(i6, HEAP32[i1 >> 2] | 0) | 0;
 }
 i1 = i4 + 16 | 0;
 if ((HEAP32[i1 >> 2] | 0) != (HEAP32[i3 >> 2] | 0)) {
  i6 = __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(HEAP32[i5 >> 2] | 0, 18398) | 0;
  __ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEElsEj(i6, HEAP32[i1 >> 2] | 0) | 0;
 }
 __ZN4wasm16PrintSExpression9incIndentEv(i5);
 __ZN4wasm16PrintSExpression13printFullLineEPNS_10ExpressionE(i5, HEAP32[i4 + 20 >> 2] | 0);
 __ZN4wasm16PrintSExpression13printFullLineEPNS_10ExpressionE(i5, HEAP32[i4 + 24 >> 2] | 0);
 __ZN4wasm16PrintSExpression9decIndentEv(i5);
 return;
}

function ___cxx_global_array_dtor_109(i1) {
 i1 = i1 | 0;
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(39188);
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(39176);
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(39164);
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(39152);
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(39140);
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(39128);
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(39116);
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(39104);
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(39092);
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(39080);
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(39068);
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(39056);
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(39044);
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(39032);
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(39020);
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(39008);
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(38996);
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(38984);
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(38972);
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(38960);
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(38948);
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(38936);
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(38924);
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(38912);
 return;
}

function ___cxx_global_array_dtor_85(i1) {
 i1 = i1 | 0;
 __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev(39708);
 __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev(39696);
 __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev(39684);
 __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev(39672);
 __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev(39660);
 __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev(39648);
 __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev(39636);
 __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev(39624);
 __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev(39612);
 __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev(39600);
 __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev(39588);
 __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev(39576);
 __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev(39564);
 __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev(39552);
 __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev(39540);
 __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev(39528);
 __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev(39516);
 __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev(39504);
 __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev(39492);
 __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev(39480);
 __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev(39468);
 __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev(39456);
 __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev(39444);
 __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev(39432);
 return;
}

function ___cxx_global_array_dtor_61(i1) {
 i1 = i1 | 0;
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(38896);
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(38884);
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(38872);
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(38860);
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(38848);
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(38836);
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(38824);
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(38812);
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(38800);
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(38788);
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(38776);
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(38764);
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(38752);
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(38740);
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(38728);
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(38716);
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(38704);
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(38692);
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(38680);
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(38668);
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(38656);
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(38644);
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(38632);
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(38620);
 return;
}

function ___cxx_global_array_dtor_112(i1) {
 i1 = i1 | 0;
 __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev(4e4);
 __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev(39988);
 __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev(39976);
 __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev(39964);
 __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev(39952);
 __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev(39940);
 __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev(39928);
 __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev(39916);
 __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev(39904);
 __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev(39892);
 __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev(39880);
 __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev(39868);
 __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev(39856);
 __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev(39844);
 __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev(39832);
 __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev(39820);
 __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev(39808);
 __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev(39796);
 __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev(39784);
 __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev(39772);
 __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev(39760);
 __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev(39748);
 __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev(39736);
 __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev(39724);
 return;
}

function __ZNSt3__112__hash_tableINS_17__hash_value_typeIN6cashew7IStringEiEENS_22__unordered_map_hasherIS3_S4_NS_4hashIS3_EELb1EEENS_21__unordered_map_equalIS3_S4_NS_8equal_toIS3_EELb1EEENS_9allocatorIS4_EEE8__rehashEj(i11, i10) {
 i11 = i11 | 0;
 i10 = i10 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0;
 i2 = i11 + 4 | 0;
 L1 : do if (i10) {
  i9 = __Znwj(i10 << 2) | 0;
  i1 = HEAP32[i11 >> 2] | 0;
  HEAP32[i11 >> 2] = i9;
  if (i1 | 0) __ZdlPv(i1);
  HEAP32[i2 >> 2] = i10;
  i1 = 0;
  while (1) {
   if ((i1 | 0) == (i10 | 0)) break;
   HEAP32[(HEAP32[i11 >> 2] | 0) + (i1 << 2) >> 2] = 0;
   i1 = i1 + 1 | 0;
  }
  i3 = i11 + 8 | 0;
  i1 = HEAP32[i3 >> 2] | 0;
  if (i1 | 0) {
   i2 = HEAP32[i1 + 4 >> 2] | 0;
   i8 = i10 + -1 | 0;
   i9 = (i8 & i10 | 0) == 0;
   if (i9) i2 = i2 & i8; else i2 = (i2 >>> 0) % (i10 >>> 0) | 0;
   HEAP32[(HEAP32[i11 >> 2] | 0) + (i2 << 2) >> 2] = i3;
   while (1) {
    i7 = i1;
    L21 : while (1) while (1) {
     i1 = HEAP32[i7 >> 2] | 0;
     if (!i1) break L1;
     i3 = HEAP32[i1 + 4 >> 2] | 0;
     if (i9) i6 = i3 & i8; else i6 = (i3 >>> 0) % (i10 >>> 0) | 0;
     if ((i6 | 0) == (i2 | 0)) {
      i7 = i1;
      continue L21;
     }
     i4 = (HEAP32[i11 >> 2] | 0) + (i6 << 2) | 0;
     if (!(HEAP32[i4 >> 2] | 0)) {
      i2 = i6;
      i3 = i7;
      break L21;
     }
     i5 = i1 + 8 | 0;
     i3 = i1;
     while (1) {
      i4 = HEAP32[i3 >> 2] | 0;
      if (!i4) break;
      if ((HEAP32[i5 >> 2] | 0) == (HEAP32[i4 + 8 >> 2] | 0)) i3 = i4; else break;
     }
     HEAP32[i7 >> 2] = i4;
     HEAP32[i3 >> 2] = HEAP32[HEAP32[(HEAP32[i11 >> 2] | 0) + (i6 << 2) >> 2] >> 2];
     HEAP32[HEAP32[(HEAP32[i11 >> 2] | 0) + (i6 << 2) >> 2] >> 2] = i1;
    }
    HEAP32[i4 >> 2] = i3;
   }
  }
 } else {
  i1 = HEAP32[i11 >> 2] | 0;
  HEAP32[i11 >> 2] = 0;
  if (i1 | 0) __ZdlPv(i1);
  HEAP32[i2 >> 2] = 0;
 } while (0);
 return;
}

function __ZN4wasm22SExpressionWasmBuilder16stringToWasmTypeEPKcbb(i6, i3, i5, i2) {
 i6 = i6 | 0;
 i3 = i3 | 0;
 i5 = i5 | 0;
 i2 = i2 | 0;
 var i1 = 0, i4 = 0;
 i1 = HEAP8[i3 >> 0] | 0;
 L1 : do switch (i1 << 24 >> 24) {
 case 105:
  {
   switch (HEAP8[i3 + 1 >> 0] | 0) {
   case 51:
    break;
   case 54:
    {
     if ((HEAP8[i3 + 2 >> 0] | 0) != 52) {
      i4 = 17;
      break L1;
     }
     if (i2) {
      i1 = 2;
      i4 = 19;
      break L1;
     }
     i1 = (HEAP8[i3 + 3 >> 0] | 0) == 0;
     if (i1 | i5) {
      i1 = i1 ? 2 : 0;
      i4 = 19;
      break L1;
     } else {
      i4 = 18;
      break L1;
     }
    }
   default:
    {
     i4 = 17;
     break L1;
    }
   }
   if ((HEAP8[i3 + 2 >> 0] | 0) == 50) if (!i2 ? (HEAP8[i3 + 3 >> 0] | 0) != 0 : 0) if (i1 << 24 >> 24 == 102) i4 = 10; else i4 = 17; else {
    i1 = 1;
    i4 = 19;
   } else i4 = 17;
   break;
  }
 case 102:
  {
   i4 = 10;
   break;
  }
 default:
  i4 = 17;
 } while (0);
 L11 : do if ((i4 | 0) == 10) switch (HEAP8[i3 + 1 >> 0] | 0) {
 case 51:
  {
   if ((HEAP8[i3 + 2 >> 0] | 0) != 50) {
    i4 = 17;
    break L11;
   }
   if (i2) {
    i1 = 3;
    i4 = 19;
    break L11;
   }
   i1 = (HEAP8[i3 + 3 >> 0] | 0) == 0;
   if (i1 | i5) {
    i1 = i1 ? 3 : 0;
    i4 = 19;
    break L11;
   } else {
    i4 = 18;
    break L11;
   }
  }
 case 54:
  {
   if ((HEAP8[i3 + 2 >> 0] | 0) != 52) {
    i4 = 17;
    break L11;
   }
   if (i2) {
    i1 = 4;
    i4 = 19;
    break L11;
   }
   i1 = (HEAP8[i3 + 3 >> 0] | 0) == 0;
   if (i1 | i5) {
    i1 = i1 ? 4 : 0;
    i4 = 19;
    break L11;
   } else {
    i4 = 18;
    break L11;
   }
  }
 default:
  {
   i4 = 17;
   break L11;
  }
 } while (0);
 if ((i4 | 0) == 17) if (i5) {
  i1 = 0;
  i4 = 19;
 } else i4 = 18;
 if ((i4 | 0) == 18) {
  __ZNKSt3__18functionIFvvEEclEv(i6 + 8 | 0);
  _abort();
 } else if ((i4 | 0) == 19) return i1 | 0;
 return 0;
}

function __ZN4wasm16PrintSExpression7visitIfEPNS_2IfE(i4, i2) {
 i4 = i4 | 0;
 i2 = i2 | 0;
 var i1 = 0, i3 = 0, i5 = 0;
 __Z12printOpeningRNSt3__113basic_ostreamIcNS_11char_traitsIcEEEEPKcb(HEAP32[i4 >> 2] | 0, 25511, 0) | 0;
 __ZN4wasm16PrintSExpression9incIndentEv(i4);
 __ZN4wasm16PrintSExpression13printFullLineEPNS_10ExpressionE(i4, HEAP32[i2 + 8 >> 2] | 0);
 i3 = i4 + 20 | 0;
 i1 = i2 + 12 | 0;
 if ((((HEAP8[i3 >> 0] | 0) == 0 ? __ZN4wasm10Expression2isINS_5BlockEEEbv(HEAP32[i1 >> 2] | 0) | 0 : 0) ? (i5 = (__ZN4wasm10Expression7dynCastINS_5BlockEEEPT_v(HEAP32[i1 >> 2] | 0) | 0) + 8 | 0, (HEAP32[i5 >> 2] | 0) == 0) : 0) ? (i5 = __ZN4wasm10Expression7dynCastINS_5BlockEEEPT_v(HEAP32[i1 >> 2] | 0) | 0, ((HEAP32[i5 + 16 >> 2] | 0) - (HEAP32[i5 + 12 >> 2] | 0) | 0) == 4) : 0) {
  i5 = (__ZN4wasm10Expression7dynCastINS_5BlockEEEPT_v(HEAP32[i1 >> 2] | 0) | 0) + 16 | 0;
  __ZN4wasm16PrintSExpression13printFullLineEPNS_10ExpressionE(i4, HEAP32[(HEAP32[i5 >> 2] | 0) + -4 >> 2] | 0);
 } else __ZN4wasm16PrintSExpression13printFullLineEPNS_10ExpressionE(i4, HEAP32[i1 >> 2] | 0);
 i1 = i2 + 16 | 0;
 i2 = HEAP32[i1 >> 2] | 0;
 do if (i2 | 0) {
  if ((((HEAP8[i3 >> 0] | 0) == 0 ? __ZN4wasm10Expression2isINS_5BlockEEEbv(i2) | 0 : 0) ? (i5 = (__ZN4wasm10Expression7dynCastINS_5BlockEEEPT_v(HEAP32[i1 >> 2] | 0) | 0) + 8 | 0, (HEAP32[i5 >> 2] | 0) == 0) : 0) ? (i5 = __ZN4wasm10Expression7dynCastINS_5BlockEEEPT_v(HEAP32[i1 >> 2] | 0) | 0, ((HEAP32[i5 + 16 >> 2] | 0) - (HEAP32[i5 + 12 >> 2] | 0) | 0) == 4) : 0) {
   i5 = (__ZN4wasm10Expression7dynCastINS_5BlockEEEPT_v(HEAP32[i1 >> 2] | 0) | 0) + 16 | 0;
   __ZN4wasm16PrintSExpression13printFullLineEPNS_10ExpressionE(i4, HEAP32[(HEAP32[i5 >> 2] | 0) + -4 >> 2] | 0);
   break;
  }
  __ZN4wasm16PrintSExpression13printFullLineEPNS_10ExpressionE(i4, HEAP32[i1 >> 2] | 0);
 } while (0);
 __ZN4wasm16PrintSExpression9decIndentEv(i4);
 return;
}

function __ZNKSt3__120__time_get_c_storageIwE7__weeksEv(i1) {
 i1 = i1 | 0;
 var i2 = 0;
 if ((HEAP8[35328] | 0) == 0 ? ___cxa_guard_acquire(35328) | 0 : 0) {
  if ((HEAP8[35336] | 0) == 0 ? ___cxa_guard_acquire(35336) | 0 : 0) {
   i1 = 39260;
   do {
    i2 = 0;
    while (1) {
     if ((i2 | 0) == 3) break;
     HEAP32[i1 + (i2 << 2) >> 2] = 0;
     i2 = i2 + 1 | 0;
    }
    i1 = i1 + 12 | 0;
   } while ((i1 | 0) != 39428);
   ___cxa_atexit(228, 0, ___dso_handle | 0) | 0;
  }
  __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6assignEPKw(39260, 10220) | 0;
  __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6assignEPKw(39272, 10248) | 0;
  __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6assignEPKw(39284, 10276) | 0;
  __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6assignEPKw(39296, 10308) | 0;
  __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6assignEPKw(39308, 10348) | 0;
  __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6assignEPKw(39320, 10384) | 0;
  __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6assignEPKw(39332, 10412) | 0;
  __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6assignEPKw(39344, 10448) | 0;
  __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6assignEPKw(39356, 10464) | 0;
  __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6assignEPKw(39368, 10480) | 0;
  __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6assignEPKw(39380, 10496) | 0;
  __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6assignEPKw(39392, 10512) | 0;
  __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6assignEPKw(39404, 10528) | 0;
  __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6assignEPKw(39416, 10544) | 0;
  HEAP32[9857] = 39260;
 }
 return HEAP32[9857] | 0;
}

function __ZNKSt3__120__time_get_c_storageIcE7__weeksEv(i1) {
 i1 = i1 | 0;
 var i2 = 0;
 if ((HEAP8[35248] | 0) == 0 ? ___cxa_guard_acquire(35248) | 0 : 0) {
  if ((HEAP8[35256] | 0) == 0 ? ___cxa_guard_acquire(35256) | 0 : 0) {
   i1 = 38448;
   do {
    i2 = 0;
    while (1) {
     if ((i2 | 0) == 3) break;
     HEAP32[i1 + (i2 << 2) >> 2] = 0;
     i2 = i2 + 1 | 0;
    }
    i1 = i1 + 12 | 0;
   } while ((i1 | 0) != 38616);
   ___cxa_atexit(224, 0, ___dso_handle | 0) | 0;
  }
  __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6assignEPKc(38448, 30965) | 0;
  __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6assignEPKc(38460, 30972) | 0;
  __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6assignEPKc(38472, 30979) | 0;
  __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6assignEPKc(38484, 30987) | 0;
  __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6assignEPKc(38496, 30997) | 0;
  __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6assignEPKc(38508, 31006) | 0;
  __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6assignEPKc(38520, 31013) | 0;
  __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6assignEPKc(38532, 31022) | 0;
  __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6assignEPKc(38544, 31026) | 0;
  __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6assignEPKc(38556, 31030) | 0;
  __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6assignEPKc(38568, 31034) | 0;
  __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6assignEPKc(38580, 31038) | 0;
  __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6assignEPKc(38592, 31042) | 0;
  __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6assignEPKc(38604, 31046) | 0;
  HEAP32[9654] = 38448;
 }
 return HEAP32[9654] | 0;
}

function __ZNSt3__16vectorIN4wasm8NameTypeENS_9allocatorIS2_EEE6assignIPS2_EENS_9enable_ifIXaasr21__is_forward_iteratorIT_EE5valuesr16is_constructibleIS2_NS_15iterator_traitsIS9_E9referenceEEE5valueEvE4typeES9_S9_(i6, i1, i7) {
 i6 = i6 | 0;
 i1 = i1 | 0;
 i7 = i7 | 0;
 var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i8 = 0;
 i4 = i1;
 i3 = i7 - i4 >> 3;
 i2 = i6 + 8 | 0;
 i5 = HEAP32[i6 >> 2] | 0;
 L1 : do if (i3 >>> 0 <= (HEAP32[i2 >> 2] | 0) - i5 >> 3 >>> 0) {
  i6 = i6 + 4 | 0;
  i2 = (HEAP32[i6 >> 2] | 0) - i5 >> 3;
  i8 = i3 >>> 0 > i2 >>> 0;
  i3 = i1 + (i2 << 3) | 0;
  i2 = (i8 ? i3 : i7) - i4 | 0;
  _memmove(i5 | 0, i1 | 0, i2 | 0) | 0;
  i2 = i5 + (i2 >> 3 << 3) | 0;
  if (i8) {
   i1 = i3;
   while (1) {
    if ((i1 | 0) == (i7 | 0)) break L1;
    i4 = i1;
    i5 = HEAP32[i4 + 4 >> 2] | 0;
    i8 = HEAP32[i6 >> 2] | 0;
    HEAP32[i8 >> 2] = HEAP32[i4 >> 2];
    HEAP32[i8 + 4 >> 2] = i5;
    HEAP32[i6 >> 2] = (HEAP32[i6 >> 2] | 0) + 8;
    i1 = i1 + 8 | 0;
   }
  } else {
   i1 = HEAP32[i6 >> 2] | 0;
   while (1) {
    if ((i1 | 0) == (i2 | 0)) break L1;
    i8 = i1 + -8 | 0;
    HEAP32[i6 >> 2] = i8;
    i1 = i8;
   }
  }
 } else {
  __ZNSt3__16vectorIN4wasm8NameTypeENS_9allocatorIS2_EEE10deallocateEv(i6);
  if (i3 >>> 0 > 536870911) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i6);
  i2 = (HEAP32[i2 >> 2] | 0) - (HEAP32[i6 >> 2] | 0) | 0;
  if (i2 >> 3 >>> 0 < 268435455) {
   i2 = i2 >> 2;
   i2 = i2 >>> 0 < i3 >>> 0 ? i3 : i2;
  } else i2 = 536870911;
  __ZNSt3__16vectorIN4wasm8NameTypeENS_9allocatorIS2_EEE8allocateEj(i6, i2);
  i2 = i6 + 4 | 0;
  while (1) {
   if ((i1 | 0) == (i7 | 0)) break L1;
   i5 = i1;
   i6 = HEAP32[i5 + 4 >> 2] | 0;
   i8 = HEAP32[i2 >> 2] | 0;
   HEAP32[i8 >> 2] = HEAP32[i5 >> 2];
   HEAP32[i8 + 4 >> 2] = i6;
   HEAP32[i2 >> 2] = (HEAP32[i2 >> 2] | 0) + 8;
   i1 = i1 + 8 | 0;
  }
 } while (0);
 return;
}

function __ZNSt3__16__treeINS_12__value_typeIN4wasm4NameEjEENS_19__map_value_compareIS3_S4_NS_4lessIS3_EELb1EEENS_9allocatorIS4_EEE12__find_equalIS4_EERPNS_16__tree_node_baseIPvEENS_21__tree_const_iteratorIS4_PNS_11__tree_nodeIS4_SE_EEiEESH_RKT_(i5, i1, i8, i4) {
 i5 = i5 | 0;
 i1 = i1 | 0;
 i8 = i8 | 0;
 i4 = i4 | 0;
 var i2 = 0, i3 = 0, i6 = 0, i7 = 0;
 i3 = i5 + 4 | 0;
 i6 = HEAP32[i1 >> 2] | 0;
 i1 = i6;
 do if ((i6 | 0) != (i3 | 0) ? (i2 = i6 + 16 | 0, !(__ZNK6cashew7IStringltERKS0_(i4, i2) | 0)) : 0) {
  if (__ZNK6cashew7IStringltERKS0_(i2, i4) | 0) i2 = 1; else {
   HEAP32[i8 >> 2] = i1;
   i1 = i8;
   break;
  }
  while (1) {
   if ((i2 | 0) <= 0) break;
   i2 = i2 + -1 | 0;
   i1 = __ZNSt3__111__tree_nextIPNS_16__tree_node_baseIPvEEEET_S5_(i1) | 0;
  }
  i2 = i1;
  if ((i2 | 0) != (i3 | 0) ? !(__ZNK6cashew7IStringltERKS0_(i4, i2 + 16 | 0) | 0) : 0) {
   i1 = __ZNSt3__16__treeINS_12__value_typeIN4wasm4NameEjEENS_19__map_value_compareIS3_S4_NS_4lessIS3_EELb1EEENS_9allocatorIS4_EEE12__find_equalIS4_EERPNS_16__tree_node_baseIPvEESH_RKT_(i5, i8, i4) | 0;
   break;
  }
  i2 = i6 + 4 | 0;
  if (!(HEAP32[i2 >> 2] | 0)) {
   HEAP32[i8 >> 2] = i6;
   i1 = i2;
   break;
  } else {
   HEAP32[i8 >> 2] = i1;
   break;
  }
 } else i7 = 3; while (0);
 do if ((i7 | 0) == 3) {
  if ((i6 | 0) != (HEAP32[i5 >> 2] | 0)) {
   i1 = __ZNSt3__111__tree_prevIPNS_16__tree_node_baseIPvEEEET_S5_(i6) | 0;
   if (!(__ZNK6cashew7IStringltERKS0_(i1 + 16 | 0, i4) | 0)) {
    i1 = __ZNSt3__16__treeINS_12__value_typeIN4wasm4NameEjEENS_19__map_value_compareIS3_S4_NS_4lessIS3_EELb1EEENS_9allocatorIS4_EEE12__find_equalIS4_EERPNS_16__tree_node_baseIPvEESH_RKT_(i5, i8, i4) | 0;
    break;
   }
  }
  if (!(HEAP32[i6 >> 2] | 0)) {
   HEAP32[i8 >> 2] = i6;
   i1 = i6;
   break;
  } else {
   HEAP32[i8 >> 2] = i1;
   i1 = i1 + 4 | 0;
   break;
  }
 } while (0);
 return i1 | 0;
}

function __ZNKSt3__17num_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_putES4_RNS_8ios_baseEcb(i5, i10, i4, i3, i6) {
 i5 = i5 | 0;
 i10 = i10 | 0;
 i4 = i4 | 0;
 i3 = i3 | 0;
 i6 = i6 | 0;
 var i1 = 0, i2 = 0, i7 = 0, i8 = 0, i9 = 0, i11 = 0;
 i11 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i9 = i11 + 8 | 0;
 i1 = i11 + 4 | 0;
 i2 = i11;
 if (!(HEAP32[i4 + 4 >> 2] & 1)) {
  i8 = HEAP32[(HEAP32[i5 >> 2] | 0) + 24 >> 2] | 0;
  HEAP32[i1 >> 2] = HEAP32[i10 >> 2];
  HEAP32[i9 >> 2] = HEAP32[i1 >> 2];
  i1 = FUNCTION_TABLE_iiiiii[i8 & 31](i5, i9, i4, i3, i6 & 1) | 0;
 } else {
  i8 = __ZNKSt3__18ios_base6getlocEv(i4) | 0;
  HEAP32[i2 >> 2] = i8;
  i1 = __ZNKSt3__16locale9use_facetERNS0_2idE(i2, 38388) | 0;
  __ZNSt3__114__shared_count16__release_sharedEv(i8) | 0;
  i2 = HEAP32[i1 >> 2] | 0;
  if (i6) FUNCTION_TABLE_vii[HEAP32[i2 + 24 >> 2] & 511](i9, i1); else FUNCTION_TABLE_vii[HEAP32[i2 + 28 >> 2] & 511](i9, i1);
  i4 = HEAP8[i9 >> 0] | 0;
  i5 = i9 + 1 | 0;
  i6 = i9 + 8 | 0;
  i8 = HEAP32[i6 >> 2] | 0;
  i7 = i9 + 4 | 0;
  i1 = i4;
  i2 = i8;
  i8 = (i4 & 1) == 0 ? i5 : i8;
  while (1) {
   i4 = (i1 & 1) == 0;
   if ((i8 | 0) == ((i4 ? i5 : i2) + (i4 ? (i1 & 255) >>> 1 : HEAP32[i7 >> 2] | 0) | 0)) break;
   i1 = HEAP8[i8 >> 0] | 0;
   i2 = HEAP32[i10 >> 2] | 0;
   do if (i2 | 0) {
    i3 = i2 + 24 | 0;
    i4 = HEAP32[i3 >> 2] | 0;
    if ((i4 | 0) != (HEAP32[i2 + 28 >> 2] | 0)) {
     HEAP32[i3 >> 2] = i4 + 1;
     HEAP8[i4 >> 0] = i1;
     break;
    }
    if ((FUNCTION_TABLE_iii[HEAP32[(HEAP32[i2 >> 2] | 0) + 52 >> 2] & 63](i2, i1 & 255) | 0) == -1) HEAP32[i10 >> 2] = 0;
   } while (0);
   i1 = HEAP8[i9 >> 0] | 0;
   i2 = HEAP32[i6 >> 2] | 0;
   i8 = i8 + 1 | 0;
  }
  i1 = HEAP32[i10 >> 2] | 0;
  __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i9);
 }
 STACKTOP = i11;
 return i1 | 0;
}

function __ZN4wasm16PrintSExpression9visitLoopEPNS_4LoopE(i6, i5) {
 i6 = i6 | 0;
 i5 = i5 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i7 = 0, i8 = 0, i9 = 0;
 i8 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i3 = i8 + 8 | 0;
 i1 = i8 + 4 | 0;
 i4 = i8;
 __Z12printOpeningRNSt3__113basic_ostreamIcNS_11char_traitsIcEEEEPKcb(HEAP32[i6 >> 2] | 0, 18245, 0) | 0;
 i2 = i5 + 8 | 0;
 do if (!(HEAP32[i2 >> 2] | 0)) {
  i1 = i5 + 12 | 0;
  if (HEAP32[i1 >> 2] | 0) i7 = 6;
 } else {
  i9 = __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_c(HEAP32[i6 >> 2] | 0, 32) | 0;
  HEAP32[i1 >> 2] = HEAP32[i2 >> 2];
  HEAP32[i3 >> 2] = HEAP32[i1 >> 2];
  __ZN4wasmlsERNSt3__113basic_ostreamIcNS0_11char_traitsIcEEEENS_4NameE(i9, i3) | 0;
  if (!(HEAP32[i5 + 12 >> 2] | 0)) ___assert_fail(18250, 18264, 140, 18285); else {
   i1 = i5 + 12 | 0;
   i7 = 6;
   break;
  }
 } while (0);
 if ((i7 | 0) == 6) {
  i9 = __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_c(HEAP32[i6 >> 2] | 0, 32) | 0;
  HEAP32[i4 >> 2] = HEAP32[i1 >> 2];
  HEAP32[i3 >> 2] = HEAP32[i4 >> 2];
  __ZN4wasmlsERNSt3__113basic_ostreamIcNS0_11char_traitsIcEEEENS_4NameE(i9, i3) | 0;
 }
 __ZN4wasm16PrintSExpression9incIndentEv(i6);
 i1 = i5 + 16 | 0;
 i2 = __ZN4wasm10Expression7dynCastINS_5BlockEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 L10 : do if ((i2 | 0) != 0 & (HEAP8[i6 + 20 >> 0] | 0) == 0 ? (HEAP32[i2 + 8 >> 2] | 0) == 0 : 0) {
  i3 = HEAP32[i2 + 16 >> 2] | 0;
  i1 = HEAP32[i2 + 12 >> 2] | 0;
  while (1) {
   if ((i1 | 0) == (i3 | 0)) break L10;
   __ZN4wasm16PrintSExpression13printFullLineEPNS_10ExpressionE(i6, HEAP32[i1 >> 2] | 0);
   i1 = i1 + 4 | 0;
  }
 } else i7 = 12; while (0);
 if ((i7 | 0) == 12) __ZN4wasm16PrintSExpression13printFullLineEPNS_10ExpressionE(i6, HEAP32[i1 >> 2] | 0);
 __ZN4wasm16PrintSExpression9decIndentEv(i6);
 STACKTOP = i8;
 return;
}

function __ZNSt3__16vectorINS_13unordered_mapIN6cashew7IStringEiNS_4hashIS3_EENS_8equal_toIS3_EENS_9allocatorINS_4pairIKS3_iEEEEEENS8_ISD_EEE8__appendEj(i8, i6) {
 i8 = i8 | 0;
 i6 = i6 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i7 = 0, i9 = 0;
 i9 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i7 = i9;
 i2 = HEAP32[i8 + 8 >> 2] | 0;
 i4 = i8 + 4 | 0;
 i1 = HEAP32[i4 >> 2] | 0;
 if (((i2 - i1 | 0) / 20 | 0) >>> 0 < i6 >>> 0) {
  i5 = HEAP32[i8 >> 2] | 0;
  i3 = ((i1 - i5 | 0) / 20 | 0) + i6 | 0;
  if (i3 >>> 0 > 214748364) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i8);
  i1 = (i2 - i5 | 0) / 20 | 0;
  if (i1 >>> 0 < 107374182) {
   i1 = i1 << 1;
   i1 = i1 >>> 0 < i3 >>> 0 ? i3 : i1;
  } else i1 = 214748364;
  __ZNSt3__114__split_bufferINS_13unordered_mapIN6cashew7IStringEiNS_4hashIS3_EENS_8equal_toIS3_EENS_9allocatorINS_4pairIKS3_iEEEEEERNS8_ISD_EEEC2EjjSF_(i7, i1, ((HEAP32[i4 >> 2] | 0) - i5 | 0) / 20 | 0, i8 + 8 | 0);
  i3 = i7 + 8 | 0;
  i2 = HEAP32[i3 >> 2] | 0;
  i1 = i6;
  i4 = i2;
  while (1) {
   HEAP32[i4 >> 2] = 0;
   HEAP32[i4 + 4 >> 2] = 0;
   HEAP32[i4 + 8 >> 2] = 0;
   HEAP32[i4 + 12 >> 2] = 0;
   HEAPF32[i4 + 16 >> 2] = 1.0;
   i1 = i1 + -1 | 0;
   if (!i1) break; else i4 = i4 + 20 | 0;
  }
  HEAP32[i3 >> 2] = i2 + (i6 * 20 | 0);
  __ZNSt3__16vectorINS_13unordered_mapIN6cashew7IStringEiNS_4hashIS3_EENS_8equal_toIS3_EENS_9allocatorINS_4pairIKS3_iEEEEEENS8_ISD_EEE26__swap_out_circular_bufferERNS_14__split_bufferISD_RSE_EE(i8, i7);
  __ZNSt3__114__split_bufferINS_13unordered_mapIN6cashew7IStringEiNS_4hashIS3_EENS_8equal_toIS3_EENS_9allocatorINS_4pairIKS3_iEEEEEERNS8_ISD_EEED2Ev(i7);
 } else __ZNSt3__16vectorINS_13unordered_mapIN6cashew7IStringEiNS_4hashIS3_EENS_8equal_toIS3_EENS_9allocatorINS_4pairIKS3_iEEEEEENS8_ISD_EEE18__construct_at_endEj(i8, i6);
 STACKTOP = i9;
 return;
}

function __ZZN4wasm14ModuleInstance12callFunctionEN6cashew7IStringERNSt3__16vectorINS_7LiteralENS3_9allocatorIS5_EEEEEN16ExpressionRunner10visitBreakEPNS_5BreakE(i11, i10, i9) {
 i11 = i11 | 0;
 i10 = i10 | 0;
 i9 = i9 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i12 = 0;
 i12 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i2 = i12;
 i7 = i9 + 8 | 0;
 i1 = HEAP32[i9 + 12 >> 2] | 0;
 if (i1) {
  __ZN4wasm7VisitorIZNS_14ModuleInstance12callFunctionEN6cashew7IStringERNSt3__16vectorINS_7LiteralENS4_9allocatorIS6_EEEEE16ExpressionRunnerNS_4FlowEE5visitEPNS_10ExpressionE(i2, i10, i1);
  i6 = HEAP32[i2 >> 2] | 0;
  i5 = HEAP32[i2 + 4 >> 2] | 0;
  i4 = i2 + 8 | 0;
  i3 = HEAP32[i4 >> 2] | 0;
  i4 = HEAP32[i4 + 4 >> 2] | 0;
  i1 = HEAP32[i2 + 16 >> 2] | 0;
  if (!i1) i8 = 4; else {
   HEAP32[i11 >> 2] = i6;
   HEAP32[i11 + 4 >> 2] = i5;
   i10 = i11 + 8 | 0;
   HEAP32[i10 >> 2] = i3;
   HEAP32[i10 + 4 >> 2] = i4;
   HEAP32[i11 + 16 >> 2] = i1;
  }
 } else {
  i3 = 0;
  i4 = 0;
  i6 = 0;
  i5 = 0;
  i8 = 4;
 }
 do if ((i8 | 0) == 4) {
  i2 = HEAP32[i7 >> 2] | 0;
  i1 = HEAP32[i9 + 16 >> 2] | 0;
  if (i1 | 0) {
   __ZN4wasm7VisitorIZNS_14ModuleInstance12callFunctionEN6cashew7IStringERNSt3__16vectorINS_7LiteralENS4_9allocatorIS6_EEEEE16ExpressionRunnerNS_4FlowEE5visitEPNS_10ExpressionE(i11, i10, i1);
   i1 = i11 + 16 | 0;
   if (HEAP32[i1 >> 2] | 0) break;
   i10 = __ZN4wasm7Literal10getIntegerEv(i11) | 0;
   if ((i10 | 0) == 0 & (tempRet0 | 0) == 0) {
    HEAP32[i11 >> 2] = 0;
    i11 = i11 + 8 | 0;
    HEAP32[i11 >> 2] = 0;
    HEAP32[i11 + 4 >> 2] = 0;
    HEAP32[i1 >> 2] = 0;
    break;
   }
  }
  HEAP32[i11 >> 2] = i6;
  HEAP32[i11 + 4 >> 2] = i5;
  i10 = i11 + 8 | 0;
  HEAP32[i10 >> 2] = i3;
  HEAP32[i10 + 4 >> 2] = i4;
  HEAP32[i11 + 16 >> 2] = i2;
 } while (0);
 STACKTOP = i12;
 return;
}

function _mbsnrtowcs(i2, i12, i3, i1, i9) {
 i2 = i2 | 0;
 i12 = i12 | 0;
 i3 = i3 | 0;
 i1 = i1 | 0;
 i9 = i9 | 0;
 var i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i10 = 0, i11 = 0, i13 = 0, i14 = 0;
 i13 = STACKTOP;
 STACKTOP = STACKTOP + 1040 | 0;
 i8 = i13 + 8 | 0;
 i11 = i13;
 i7 = HEAP32[i12 >> 2] | 0;
 HEAP32[i11 >> 2] = i7;
 i10 = (i2 | 0) != 0;
 i1 = i10 ? i1 : 256;
 i2 = i10 ? i2 : i8;
 i4 = i7;
 L1 : do if ((i1 | 0) != 0 & (i7 | 0) != 0) {
  i6 = i1;
  i7 = i4;
  i1 = 0;
  while (1) {
   i4 = i3 >>> 2;
   i5 = i4 >>> 0 >= i6 >>> 0;
   if (!(i3 >>> 0 > 131 | i5)) {
    i4 = i7;
    break L1;
   }
   i4 = i5 ? i6 : i4;
   i3 = i3 - i4 | 0;
   i4 = _mbsrtowcs(i2, i11, i4, i9) | 0;
   if ((i4 | 0) == -1) {
    i1 = i3;
    break;
   }
   i14 = (i2 | 0) == (i8 | 0);
   i7 = i14 ? 0 : i4;
   i5 = i6 - i7 | 0;
   i2 = i14 ? i2 : i2 + (i4 << 2) | 0;
   i1 = i4 + i1 | 0;
   i4 = HEAP32[i11 >> 2] | 0;
   if ((i6 | 0) != (i7 | 0) & (i4 | 0) != 0) {
    i6 = i5;
    i7 = i4;
   } else {
    i6 = i5;
    break L1;
   }
  }
  i3 = i1;
  i6 = 0;
  i4 = HEAP32[i11 >> 2] | 0;
  i1 = -1;
 } else {
  i6 = i1;
  i1 = 0;
 } while (0);
 L8 : do if ((i4 | 0) != 0 ? (i6 | 0) != 0 & (i3 | 0) != 0 : 0) {
  i5 = i4;
  i4 = i2;
  while (1) {
   i2 = _mbrtowc(i4, i5, i3, i9) | 0;
   if ((i2 + 2 | 0) >>> 0 < 3) break;
   i5 = (HEAP32[i11 >> 2] | 0) + i2 | 0;
   HEAP32[i11 >> 2] = i5;
   i6 = i6 + -1 | 0;
   i1 = i1 + 1 | 0;
   if (!((i6 | 0) != 0 & (i3 | 0) != (i2 | 0))) break L8; else {
    i3 = i3 - i2 | 0;
    i4 = i4 + 4 | 0;
   }
  }
  switch (i2 | 0) {
  case -1:
   {
    i1 = -1;
    break L8;
   }
  case 0:
   {
    HEAP32[i11 >> 2] = 0;
    break L8;
   }
  default:
   {
    HEAP32[i9 >> 2] = 0;
    break L8;
   }
  }
 } while (0);
 if (i10) HEAP32[i12 >> 2] = HEAP32[i11 >> 2];
 STACKTOP = i13;
 return i1 | 0;
}

function __ZNSt3__112__hash_tableIPKcN6cashew7IString11CStringHashENS4_12CStringEqualENS_9allocatorIS2_EEE8__rehashEj(i11, i10) {
 i11 = i11 | 0;
 i10 = i10 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0;
 i2 = i11 + 4 | 0;
 L1 : do if (i10) {
  i9 = __Znwj(i10 << 2) | 0;
  i1 = HEAP32[i11 >> 2] | 0;
  HEAP32[i11 >> 2] = i9;
  if (i1 | 0) __ZdlPv(i1);
  HEAP32[i2 >> 2] = i10;
  i1 = 0;
  while (1) {
   if ((i1 | 0) == (i10 | 0)) break;
   HEAP32[(HEAP32[i11 >> 2] | 0) + (i1 << 2) >> 2] = 0;
   i1 = i1 + 1 | 0;
  }
  i3 = i11 + 8 | 0;
  i1 = HEAP32[i3 >> 2] | 0;
  if (i1 | 0) {
   i2 = HEAP32[i1 + 4 >> 2] | 0;
   i8 = i10 + -1 | 0;
   i9 = (i8 & i10 | 0) == 0;
   if (i9) i2 = i2 & i8; else i2 = (i2 >>> 0) % (i10 >>> 0) | 0;
   HEAP32[(HEAP32[i11 >> 2] | 0) + (i2 << 2) >> 2] = i3;
   while (1) {
    i7 = i1;
    L21 : while (1) while (1) {
     i1 = HEAP32[i7 >> 2] | 0;
     if (!i1) break L1;
     i3 = HEAP32[i1 + 4 >> 2] | 0;
     if (i9) i6 = i3 & i8; else i6 = (i3 >>> 0) % (i10 >>> 0) | 0;
     if ((i6 | 0) == (i2 | 0)) {
      i7 = i1;
      continue L21;
     }
     i4 = (HEAP32[i11 >> 2] | 0) + (i6 << 2) | 0;
     if (!(HEAP32[i4 >> 2] | 0)) {
      i2 = i6;
      i3 = i7;
      break L21;
     }
     i5 = i1 + 8 | 0;
     i3 = i1;
     while (1) {
      i4 = HEAP32[i3 >> 2] | 0;
      if (!i4) break;
      if (!(_strcmp(HEAP32[i5 >> 2] | 0, HEAP32[i4 + 8 >> 2] | 0) | 0)) i3 = i4; else break;
     }
     HEAP32[i7 >> 2] = i4;
     HEAP32[i3 >> 2] = HEAP32[HEAP32[(HEAP32[i11 >> 2] | 0) + (i6 << 2) >> 2] >> 2];
     HEAP32[HEAP32[(HEAP32[i11 >> 2] | 0) + (i6 << 2) >> 2] >> 2] = i1;
    }
    HEAP32[i4 >> 2] = i3;
   }
  }
 } else {
  i1 = HEAP32[i11 >> 2] | 0;
  HEAP32[i11 >> 2] = 0;
  if (i1 | 0) __ZdlPv(i1);
  HEAP32[i2 >> 2] = 0;
 } while (0);
 return;
}

function __ZN4wasm10ThreadPool4workERNSt3__16vectorINS1_8functionIFNS_15ThreadWorkStateEvEEENS1_9allocatorIS6_EEEE(i10, i7) {
 i10 = i10 | 0;
 i7 = i7 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i8 = 0, i9 = 0, i11 = 0;
 i11 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i9 = i11 + 24 | 0;
 i5 = i11;
 i8 = i10 + 4 | 0;
 i6 = (HEAP32[i8 >> 2] | 0) - (HEAP32[i10 >> 2] | 0) >> 2;
 i2 = HEAP32[i7 + 4 >> 2] | 0;
 i3 = HEAP32[i7 >> 2] | 0;
 i1 = i3;
 L1 : do if (i6) {
  if (((i2 - i3 | 0) / 24 | 0 | 0) != (i6 | 0)) ___assert_fail(26482, 26338, 144, 26477);
  i3 = i10 + 12 | 0;
  if (HEAP8[i3 >> 0] | 0) ___assert_fail(26506, 26338, 145, 26477);
  HEAP8[i3 >> 0] = 1;
  i1 = i10 + 16 | 0;
  HEAP32[i9 >> 2] = i1;
  i4 = i9 + 4 | 0;
  HEAP8[i4 >> 0] = 1;
  __ZNSt3__15mutex4lockEv(i1);
  __ZN4wasm10ThreadPool20resetThreadsAreReadyEv(i10);
  i1 = 0;
  while (1) {
   if (i1 >>> 0 >= i6 >>> 0) break;
   i2 = HEAP32[(HEAP32[i10 >> 2] | 0) + (i1 << 2) >> 2] | 0;
   __ZNSt3__18functionIFN4wasm15ThreadWorkStateEvEEC2ERKS4_(i5, (HEAP32[i7 >> 2] | 0) + (i1 * 24 | 0) | 0);
   __ZN4wasm6Thread4workENSt3__18functionIFNS_15ThreadWorkStateEvEEE(i2, i5);
   __ZNSt3__18functionIFN4wasm15ThreadWorkStateEvEED2Ev(i5);
   i1 = i1 + 1 | 0;
  }
  i1 = i10 + 44 | 0;
  i2 = i10 + 92 | 0;
  while (1) {
   if ((HEAP32[i2 >> 2] | 0) == ((HEAP32[i8 >> 2] | 0) - (HEAP32[i10 >> 2] | 0) >> 2 | 0)) break;
   __ZNSt3__118condition_variable4waitERNS_11unique_lockINS_5mutexEEE(i1, i9);
  }
  HEAP8[i3 >> 0] = 0;
  if (HEAP8[i4 >> 0] | 0) __ZNSt3__15mutex6unlockEv(HEAP32[i9 >> 2] | 0);
 } else {
  if ((i2 | 0) == (i3 | 0)) ___assert_fail(26456, 26338, 137, 26477);
  while (1) {
   if (__ZNKSt3__18functionIFN4wasm15ThreadWorkStateEvEEclEv(i1) | 0) break L1;
   i1 = HEAP32[i7 >> 2] | 0;
  }
 } while (0);
 STACKTOP = i11;
 return;
}

function __ZNKSt3__17num_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_putES4_RNS_8ios_baseEwb(i5, i9, i4, i3, i6) {
 i5 = i5 | 0;
 i9 = i9 | 0;
 i4 = i4 | 0;
 i3 = i3 | 0;
 i6 = i6 | 0;
 var i1 = 0, i2 = 0, i7 = 0, i8 = 0, i10 = 0;
 i10 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i8 = i10 + 8 | 0;
 i1 = i10 + 4 | 0;
 i2 = i10;
 if (!(HEAP32[i4 + 4 >> 2] & 1)) {
  i7 = HEAP32[(HEAP32[i5 >> 2] | 0) + 24 >> 2] | 0;
  HEAP32[i1 >> 2] = HEAP32[i9 >> 2];
  HEAP32[i8 >> 2] = HEAP32[i1 >> 2];
  i1 = FUNCTION_TABLE_iiiiii[i7 & 31](i5, i8, i4, i3, i6 & 1) | 0;
 } else {
  i7 = __ZNKSt3__18ios_base6getlocEv(i4) | 0;
  HEAP32[i2 >> 2] = i7;
  i1 = __ZNKSt3__16locale9use_facetERNS0_2idE(i2, 38416) | 0;
  __ZNSt3__114__shared_count16__release_sharedEv(i7) | 0;
  i2 = HEAP32[i1 >> 2] | 0;
  if (i6) FUNCTION_TABLE_vii[HEAP32[i2 + 24 >> 2] & 511](i8, i1); else FUNCTION_TABLE_vii[HEAP32[i2 + 28 >> 2] & 511](i8, i1);
  i4 = HEAP8[i8 >> 0] | 0;
  i5 = i8 + 4 | 0;
  i6 = i8 + 8 | 0;
  i7 = HEAP32[i6 >> 2] | 0;
  i1 = i4;
  i2 = i7;
  i7 = (i4 & 1) == 0 ? i5 : i7;
  while (1) {
   i4 = (i1 & 1) == 0;
   if ((i7 | 0) == ((i4 ? i5 : i2) + ((i4 ? (i1 & 255) >>> 1 : HEAP32[i5 >> 2] | 0) << 2) | 0)) break;
   i1 = HEAP32[i7 >> 2] | 0;
   i2 = HEAP32[i9 >> 2] | 0;
   if (i2 | 0) {
    i3 = i2 + 24 | 0;
    i4 = HEAP32[i3 >> 2] | 0;
    if ((i4 | 0) == (HEAP32[i2 + 28 >> 2] | 0)) i1 = FUNCTION_TABLE_iii[HEAP32[(HEAP32[i2 >> 2] | 0) + 52 >> 2] & 63](i2, i1) | 0; else {
     HEAP32[i3 >> 2] = i4 + 4;
     HEAP32[i4 >> 2] = i1;
    }
    if ((i1 | 0) == -1) HEAP32[i9 >> 2] = 0;
   }
   i1 = HEAP8[i8 >> 0] | 0;
   i2 = HEAP32[i6 >> 2] | 0;
   i7 = i7 + 4 | 0;
  }
  i1 = HEAP32[i9 >> 2] | 0;
  __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev(i8);
 }
 STACKTOP = i10;
 return i1 | 0;
}

function __ZNSt3__112__hash_tableIN6cashew7IStringENS_4hashIS2_EENS_8equal_toIS2_EENS_9allocatorIS2_EEE8__rehashEj(i11, i10) {
 i11 = i11 | 0;
 i10 = i10 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0;
 i2 = i11 + 4 | 0;
 L1 : do if (i10) {
  i9 = __Znwj(i10 << 2) | 0;
  i1 = HEAP32[i11 >> 2] | 0;
  HEAP32[i11 >> 2] = i9;
  if (i1 | 0) __ZdlPv(i1);
  HEAP32[i2 >> 2] = i10;
  i1 = 0;
  while (1) {
   if ((i1 | 0) == (i10 | 0)) break;
   HEAP32[(HEAP32[i11 >> 2] | 0) + (i1 << 2) >> 2] = 0;
   i1 = i1 + 1 | 0;
  }
  i3 = i11 + 8 | 0;
  i1 = HEAP32[i3 >> 2] | 0;
  if (i1 | 0) {
   i2 = HEAP32[i1 + 4 >> 2] | 0;
   i8 = i10 + -1 | 0;
   i9 = (i8 & i10 | 0) == 0;
   if (i9) i2 = i2 & i8; else i2 = (i2 >>> 0) % (i10 >>> 0) | 0;
   HEAP32[(HEAP32[i11 >> 2] | 0) + (i2 << 2) >> 2] = i3;
   while (1) {
    i7 = i1;
    L21 : while (1) while (1) {
     i1 = HEAP32[i7 >> 2] | 0;
     if (!i1) break L1;
     i3 = HEAP32[i1 + 4 >> 2] | 0;
     if (i9) i6 = i3 & i8; else i6 = (i3 >>> 0) % (i10 >>> 0) | 0;
     if ((i6 | 0) == (i2 | 0)) {
      i7 = i1;
      continue L21;
     }
     i4 = (HEAP32[i11 >> 2] | 0) + (i6 << 2) | 0;
     if (!(HEAP32[i4 >> 2] | 0)) {
      i2 = i6;
      i3 = i7;
      break L21;
     }
     i5 = i1 + 8 | 0;
     i3 = i1;
     while (1) {
      i4 = HEAP32[i3 >> 2] | 0;
      if (!i4) break;
      if ((HEAP32[i5 >> 2] | 0) == (HEAP32[i4 + 8 >> 2] | 0)) i3 = i4; else break;
     }
     HEAP32[i7 >> 2] = i4;
     HEAP32[i3 >> 2] = HEAP32[HEAP32[(HEAP32[i11 >> 2] | 0) + (i6 << 2) >> 2] >> 2];
     HEAP32[HEAP32[(HEAP32[i11 >> 2] | 0) + (i6 << 2) >> 2] >> 2] = i1;
    }
    HEAP32[i4 >> 2] = i3;
   }
  }
 } else {
  i1 = HEAP32[i11 >> 2] | 0;
  HEAP32[i11 >> 2] = 0;
  if (i1 | 0) __ZdlPv(i1);
  HEAP32[i2 >> 2] = 0;
 } while (0);
 return;
}

function __ZN4wasm12PassRegistry12registerPassEPKcS2_NSt3__18functionIFPNS_4PassEvEEE(i9, i8, i7, i6) {
 i9 = i9 | 0;
 i8 = i8 | 0;
 i7 = i7 | 0;
 i6 = i6 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i10 = 0;
 i10 = STACKTOP;
 STACKTOP = STACKTOP + 112 | 0;
 i1 = i10 + 88 | 0;
 i2 = i10 + 76 | 0;
 i3 = i10 + 24 | 0;
 i4 = i10 + 64 | 0;
 i5 = i10;
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6__initEPKcj(i1, i8, _strlen(i8) | 0);
 if ((__ZNSt3__16__treeINS_12__value_typeINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEN4wasm12PassRegistry8PassInfoEEENS_19__map_value_compareIS7_SB_NS_4lessIS7_EELb1EEENS5_ISB_EEE4findIS7_EENS_15__tree_iteratorISB_PNS_11__tree_nodeISB_PvEEiEERKT_(i9, i1) | 0) == (i9 + 4 | 0)) {
  __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i1);
  __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6__initEPKcj(i2, i8, _strlen(i8) | 0);
  i9 = __ZNSt3__13mapINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEN4wasm12PassRegistry8PassInfoENS_4lessIS6_EENS4_INS_4pairIKS6_S9_EEEEEixEOS6_(i9, i2) | 0;
  __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6__initEPKcj(i4, i7, _strlen(i7) | 0);
  __ZNSt3__18functionIFPN4wasm4PassEvEEC2ERKS5_(i5, i6);
  __ZN4wasm12PassRegistry8PassInfoC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEENS2_8functionIFPNS_4PassEvEEE(i3, i4, i5);
  __ZN4wasm12PassRegistry8PassInfoaSEOS1_(i9, i3) | 0;
  __ZN4wasm12PassRegistry8PassInfoD2Ev(i3);
  __ZNSt3__18functionIFPN4wasm4PassEvEED2Ev(i5);
  __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i4);
  __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i2);
  STACKTOP = i10;
  return;
 } else ___assert_fail(17062, 17102, 34, 17115);
}

function __ZN4wasm14EffectAnalyzer11invalidatesERS0_(i7, i4) {
 i7 = i7 | 0;
 i4 = i4 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i5 = 0, i6 = 0, i8 = 0, i9 = 0;
 i9 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i8 = i9;
 i1 = HEAP16[i7 + 24 >> 1] | 0;
 L1 : do if ((i1 & 255) << 24 >> 24 == 0 ? (i2 = HEAP16[i4 + 24 >> 1] | 0, (i2 & 255) << 24 >> 24 == 0) : 0) {
  if (!((HEAP8[i7 + 53 >> 0] | 0) == 0 & (i1 & 65535) < 256) ? __ZN4wasm14EffectAnalyzer14accessesMemoryEv(i4) | 0 : 0) {
   i1 = 1;
   break;
  }
  if (__ZN4wasm14EffectAnalyzer14accessesMemoryEv(i7) | 0 ? !((HEAP8[i4 + 53 >> 0] | 0) == 0 & (i2 & 65535) < 256) : 0) {
   i1 = 1;
   break;
  }
  if (((HEAP32[i7 + 36 >> 2] | 0) + (HEAP32[i7 + 48 >> 2] | 0) | 0) >>> 0 >= 2) ___assert_fail(22701, 22747, 65, 22763);
  i3 = i7 + 44 | 0;
  i5 = i4 + 40 | 0;
  i1 = i4 + 28 | 0;
  i2 = HEAP32[i7 + 40 >> 2] | 0;
  while (1) {
   if ((i2 | 0) == (i3 | 0)) break;
   HEAP32[i8 >> 2] = HEAP32[i2 + 16 >> 2];
   if (__ZNKSt3__16__treeIjNS_4lessIjEENS_9allocatorIjEEE14__count_uniqueIjEEjRKT_(i5, i8) | 0) {
    i6 = 14;
    break;
   }
   if (__ZNKSt3__16__treeIjNS_4lessIjEENS_9allocatorIjEEE14__count_uniqueIjEEjRKT_(i1, i8) | 0) {
    i6 = 14;
    break;
   }
   i2 = __ZNSt3__111__tree_nextIPNS_16__tree_node_baseIPvEEEET_S5_(i2) | 0;
  }
  if ((i6 | 0) == 14) {
   i1 = 1;
   break;
  }
  i2 = i7 + 32 | 0;
  i1 = HEAP32[i7 + 28 >> 2] | 0;
  while (1) {
   if ((i1 | 0) == (i2 | 0)) {
    i1 = 0;
    break L1;
   }
   HEAP32[i8 >> 2] = HEAP32[i1 + 16 >> 2];
   if (__ZNKSt3__16__treeIjNS_4lessIjEENS_9allocatorIjEEE14__count_uniqueIjEEjRKT_(i5, i8) | 0) {
    i1 = 1;
    break L1;
   }
   i1 = __ZNSt3__111__tree_nextIPNS_16__tree_node_baseIPvEEEET_S5_(i1) | 0;
  }
 } else i1 = 1; while (0);
 STACKTOP = i9;
 return i1 | 0;
}

function __ZN10MixedArena5allocIN4wasm8FunctionEEEPT_v(i1) {
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0;
 i8 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i7 = i8;
 i6 = _pthread_self() | 0;
 if ((i6 | 0) == (HEAP32[i1 + 16 >> 2] | 0)) {
  i5 = i1 + 4 | 0;
  i6 = HEAP32[i5 >> 2] | 0;
  i2 = i6;
  if (!((i6 | 0) != (HEAP32[i1 >> 2] | 0) ? (i4 = i1 + 12 | 0, i3 = HEAP32[i4 >> 2] | 0, (i3 + 64 | 0) >>> 0 <= 9999) : 0)) {
   i3 = __Znaj(1e4) | 0;
   HEAP32[i7 >> 2] = i3;
   if (i2 >>> 0 < (HEAP32[i1 + 8 >> 2] | 0) >>> 0) {
    HEAP32[i6 >> 2] = i3;
    i2 = (HEAP32[i5 >> 2] | 0) + 4 | 0;
    HEAP32[i5 >> 2] = i2;
   } else {
    __ZNSt3__16vectorIPcNS_9allocatorIS1_EEE21__push_back_slow_pathIS1_EEvOT_(i1, i7);
    i2 = HEAP32[i5 >> 2] | 0;
   }
   i4 = i1 + 12 | 0;
   HEAP32[i4 >> 2] = 0;
   i3 = 0;
  }
  i1 = (HEAP32[i2 + -4 >> 2] | 0) + i3 | 0;
  HEAP32[i4 >> 2] = i3 + 64;
  HEAP32[i1 + 40 >> 2] = 0;
  HEAP32[i1 + 44 >> 2] = 0;
  HEAP32[i1 + 48 >> 2] = 0;
  i2 = i1 + 52 | 0;
  i3 = i1 + 56 | 0;
  HEAP32[i3 >> 2] = 0;
  HEAP32[i1 + 60 >> 2] = 0;
  i4 = i1;
  i5 = i4 + 36 | 0;
  do {
   HEAP32[i4 >> 2] = 0;
   i4 = i4 + 4 | 0;
  } while ((i4 | 0) < (i5 | 0));
  HEAP32[i2 >> 2] = i3;
 } else {
  i5 = i1 + 20 | 0;
  __ZNSt3__15mutex4lockEv(i5);
  L13 : while (1) {
   i3 = i1 + 16 | 0;
   i4 = i1 + 48 | 0;
   while (1) {
    if ((i6 | 0) == (HEAP32[i3 >> 2] | 0)) break L13;
    i2 = HEAP32[i4 >> 2] | 0;
    if (i2 | 0) {
     i1 = i2;
     continue L13;
    }
    i7 = __Znwj(52) | 0;
    __ZN10MixedArenaC2Ev(i7);
    HEAP32[i4 >> 2] = i7;
   }
  }
  i1 = __ZN10MixedArena5allocIN4wasm8FunctionEEEPT_v(i1) | 0;
  __ZNSt3__15mutex6unlockEv(i5);
 }
 STACKTOP = i8;
 return i1 | 0;
}

function __ZNSt3__127__tree_balance_after_insertIPNS_16__tree_node_baseIPvEEEEvT_S5_(i7, i1) {
 i7 = i7 | 0;
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i8 = 0;
 HEAP8[i1 + 12 >> 0] = (i1 | 0) == (i7 | 0) & 1;
 i4 = i1;
 while (1) {
  if ((i4 | 0) == (i7 | 0)) break;
  i2 = HEAP32[i4 + 8 >> 2] | 0;
  i6 = i2 + 12 | 0;
  if (HEAP8[i6 >> 0] | 0) break;
  i3 = i2 + 8 | 0;
  i1 = HEAP32[i3 >> 2] | 0;
  i5 = HEAP32[i1 >> 2] | 0;
  if ((i5 | 0) == (i2 | 0)) {
   i5 = HEAP32[i1 + 4 >> 2] | 0;
   if (!i5) {
    i8 = 8;
    break;
   }
   i5 = i5 + 12 | 0;
   if (HEAP8[i5 >> 0] | 0) {
    i8 = 8;
    break;
   }
   HEAP8[i6 >> 0] = 1;
   HEAP8[i1 + 12 >> 0] = (i1 | 0) == (i7 | 0) & 1;
   HEAP8[i5 >> 0] = 1;
   i4 = i1;
   continue;
  } else {
   if (!i5) {
    i8 = 14;
    break;
   }
   i5 = i5 + 12 | 0;
   if (HEAP8[i5 >> 0] | 0) {
    i8 = 14;
    break;
   }
   HEAP8[i6 >> 0] = 1;
   HEAP8[i1 + 12 >> 0] = (i1 | 0) == (i7 | 0) & 1;
   HEAP8[i5 >> 0] = 1;
   i4 = i1;
   continue;
  }
 }
 if ((i8 | 0) == 8) {
  if ((HEAP32[i2 >> 2] | 0) != (i4 | 0)) {
   __ZNSt3__118__tree_left_rotateIPNS_16__tree_node_baseIPvEEEEvT_(i2);
   i1 = HEAP32[i3 >> 2] | 0;
   i2 = i1;
   i1 = HEAP32[i1 + 8 >> 2] | 0;
  }
  HEAP8[i2 + 12 >> 0] = 1;
  HEAP8[i1 + 12 >> 0] = 0;
  __ZNSt3__119__tree_right_rotateIPNS_16__tree_node_baseIPvEEEEvT_(i1);
 } else if ((i8 | 0) == 14) {
  if ((HEAP32[i2 >> 2] | 0) == (i4 | 0)) {
   __ZNSt3__119__tree_right_rotateIPNS_16__tree_node_baseIPvEEEEvT_(i2);
   i1 = HEAP32[i3 >> 2] | 0;
   i2 = i1;
   i1 = HEAP32[i1 + 8 >> 2] | 0;
  }
  HEAP8[i2 + 12 >> 0] = 1;
  HEAP8[i1 + 12 >> 0] = 0;
  __ZNSt3__118__tree_left_rotateIPNS_16__tree_node_baseIPvEEEEvT_(i1);
 }
 return;
}

function __ZNSt3__16vectorIPN4wasm10ExpressionENS_9allocatorIS3_EEE6assignIPS3_EENS_9enable_ifIXaasr21__is_forward_iteratorIT_EE5valuesr16is_constructibleIS3_NS_15iterator_traitsISA_E9referenceEEE5valueEvE4typeESA_SA_(i6, i1, i7) {
 i6 = i6 | 0;
 i1 = i1 | 0;
 i7 = i7 | 0;
 var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i8 = 0;
 i4 = i1;
 i3 = i7 - i4 >> 2;
 i2 = i6 + 8 | 0;
 i5 = HEAP32[i6 >> 2] | 0;
 L1 : do if (i3 >>> 0 <= (HEAP32[i2 >> 2] | 0) - i5 >> 2 >>> 0) {
  i6 = i6 + 4 | 0;
  i2 = (HEAP32[i6 >> 2] | 0) - i5 >> 2;
  i8 = i3 >>> 0 > i2 >>> 0;
  i3 = i1 + (i2 << 2) | 0;
  i2 = (i8 ? i3 : i7) - i4 | 0;
  _memmove(i5 | 0, i1 | 0, i2 | 0) | 0;
  i2 = i5 + (i2 >> 2 << 2) | 0;
  if (i8) {
   i1 = i3;
   while (1) {
    if ((i1 | 0) == (i7 | 0)) break L1;
    HEAP32[HEAP32[i6 >> 2] >> 2] = HEAP32[i1 >> 2];
    HEAP32[i6 >> 2] = (HEAP32[i6 >> 2] | 0) + 4;
    i1 = i1 + 4 | 0;
   }
  } else {
   i1 = HEAP32[i6 >> 2] | 0;
   while (1) {
    if ((i1 | 0) == (i2 | 0)) break L1;
    i8 = i1 + -4 | 0;
    HEAP32[i6 >> 2] = i8;
    i1 = i8;
   }
  }
 } else {
  __ZNSt3__16vectorIPN4wasm10ExpressionENS_9allocatorIS3_EEE10deallocateEv(i6);
  if (i3 >>> 0 > 1073741823) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i6);
  i2 = (HEAP32[i2 >> 2] | 0) - (HEAP32[i6 >> 2] | 0) | 0;
  if (i2 >> 2 >>> 0 < 536870911) {
   i2 = i2 >> 1;
   i2 = i2 >>> 0 < i3 >>> 0 ? i3 : i2;
  } else i2 = 1073741823;
  __ZNSt3__16vectorIPN4wasm10ExpressionENS_9allocatorIS3_EEE8allocateEj(i6, i2);
  i2 = i6 + 4 | 0;
  while (1) {
   if ((i1 | 0) == (i7 | 0)) break L1;
   HEAP32[HEAP32[i2 >> 2] >> 2] = HEAP32[i1 >> 2];
   HEAP32[i2 >> 2] = (HEAP32[i2 >> 2] | 0) + 4;
   i1 = i1 + 4 | 0;
  }
 } while (0);
 return;
}

function __ZZN4wasm14ModuleInstance12callFunctionEN6cashew7IStringERNSt3__16vectorINS_7LiteralENS3_9allocatorIS5_EEEEEN16ExpressionRunner7visitIfEPNS_2IfE(i3, i4, i1) {
 i3 = i3 | 0;
 i4 = i4 | 0;
 i1 = i1 | 0;
 var i2 = 0, i5 = 0;
 i5 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i2 = i5;
 __ZN4wasm7VisitorIZNS_14ModuleInstance12callFunctionEN6cashew7IStringERNSt3__16vectorINS_7LiteralENS4_9allocatorIS6_EEEEE16ExpressionRunnerNS_4FlowEE5visitEPNS_10ExpressionE(i2, i4, HEAP32[i1 + 8 >> 2] | 0);
 do if (!(HEAP32[i2 + 16 >> 2] | 0)) if (!(__ZNK4wasm7Literal6geti32Ev(i2) | 0)) {
  i1 = HEAP32[i1 + 16 >> 2] | 0;
  if (!i1) {
   HEAP32[i3 >> 2] = 0;
   i4 = i3 + 8 | 0;
   HEAP32[i4 >> 2] = 0;
   HEAP32[i4 + 4 >> 2] = 0;
   HEAP32[i3 + 16 >> 2] = 0;
   break;
  } else {
   __ZN4wasm7VisitorIZNS_14ModuleInstance12callFunctionEN6cashew7IStringERNSt3__16vectorINS_7LiteralENS4_9allocatorIS6_EEEEE16ExpressionRunnerNS_4FlowEE5visitEPNS_10ExpressionE(i3, i4, i1);
   break;
  }
 } else {
  __ZN4wasm7VisitorIZNS_14ModuleInstance12callFunctionEN6cashew7IStringERNSt3__16vectorINS_7LiteralENS4_9allocatorIS6_EEEEE16ExpressionRunnerNS_4FlowEE5visitEPNS_10ExpressionE(i3, i4, HEAP32[i1 + 12 >> 2] | 0);
  if (HEAP32[i3 + 16 >> 2] | 0) break;
  if (HEAP32[i1 + 16 >> 2] | 0) break;
  HEAP32[i3 >> 2] = 0;
  i4 = i3 + 8 | 0;
  HEAP32[i4 >> 2] = 0;
  HEAP32[i4 + 4 >> 2] = 0;
  break;
 } else {
  HEAP32[i3 >> 2] = HEAP32[i2 >> 2];
  HEAP32[i3 + 4 >> 2] = HEAP32[i2 + 4 >> 2];
  HEAP32[i3 + 8 >> 2] = HEAP32[i2 + 8 >> 2];
  HEAP32[i3 + 12 >> 2] = HEAP32[i2 + 12 >> 2];
  HEAP32[i3 + 16 >> 2] = HEAP32[i2 + 16 >> 2];
  HEAP32[i3 + 20 >> 2] = HEAP32[i2 + 20 >> 2];
 } while (0);
 STACKTOP = i5;
 return;
}

function __ZN10MixedArena5allocIN4wasm6SwitchEEEPT_v(i1) {
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0;
 i9 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i6 = i9;
 i7 = _pthread_self() | 0;
 if ((i7 | 0) == (HEAP32[i1 + 16 >> 2] | 0)) {
  i4 = i1 + 4 | 0;
  i5 = HEAP32[i4 >> 2] | 0;
  i2 = i5;
  if ((i5 | 0) != (HEAP32[i1 >> 2] | 0) ? (i3 = i1 + 12 | 0, i8 = HEAP32[i3 >> 2] | 0, (i8 + 32 | 0) >>> 0 <= 9999) : 0) i1 = i8; else {
   i3 = __Znaj(1e4) | 0;
   HEAP32[i6 >> 2] = i3;
   if (i2 >>> 0 < (HEAP32[i1 + 8 >> 2] | 0) >>> 0) {
    HEAP32[i5 >> 2] = i3;
    i2 = (HEAP32[i4 >> 2] | 0) + 4 | 0;
    HEAP32[i4 >> 2] = i2;
   } else {
    __ZNSt3__16vectorIPcNS_9allocatorIS1_EEE21__push_back_slow_pathIS1_EEvOT_(i1, i6);
    i2 = HEAP32[i4 >> 2] | 0;
   }
   i3 = i1 + 12 | 0;
   HEAP32[i3 >> 2] = 0;
   i1 = 0;
  }
  i8 = (HEAP32[i2 + -4 >> 2] | 0) + i1 | 0;
  HEAP32[i3 >> 2] = i1 + 32;
  HEAP32[i8 >> 2] = 5;
  i1 = i8 + 4 | 0;
  HEAP32[i1 >> 2] = 0;
  HEAP32[i1 + 4 >> 2] = 0;
  HEAP32[i1 + 8 >> 2] = 0;
  HEAP32[i1 + 12 >> 2] = 0;
  HEAP32[i1 + 16 >> 2] = 0;
  HEAP32[i1 + 20 >> 2] = 0;
  HEAP32[i1 + 24 >> 2] = 0;
  HEAP32[i1 >> 2] = 5;
  i1 = i8;
 } else {
  i5 = i1 + 20 | 0;
  __ZNSt3__15mutex4lockEv(i5);
  L13 : while (1) {
   i3 = i1 + 16 | 0;
   i4 = i1 + 48 | 0;
   while (1) {
    if ((i7 | 0) == (HEAP32[i3 >> 2] | 0)) break L13;
    i2 = HEAP32[i4 >> 2] | 0;
    if (i2 | 0) {
     i1 = i2;
     continue L13;
    }
    i8 = __Znwj(52) | 0;
    __ZN10MixedArenaC2Ev(i8);
    HEAP32[i4 >> 2] = i8;
   }
  }
  i1 = __ZN10MixedArena5allocIN4wasm6SwitchEEEPT_v(i1) | 0;
  __ZNSt3__15mutex6unlockEv(i5);
 }
 STACKTOP = i9;
 return i1 | 0;
}

function __ZNSt3__18functionIFN4wasm15ThreadWorkStateEvEE4swapERS4_(i9, i7) {
 i9 = i9 | 0;
 i7 = i7 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i8 = 0, i10 = 0;
 i10 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i8 = i10;
 i1 = i9 + 16 | 0;
 i2 = HEAP32[i1 >> 2] | 0;
 i3 = i2;
 i4 = i7 + 16 | 0;
 i5 = HEAP32[i4 >> 2] | 0;
 i6 = (i5 | 0) == (i7 | 0);
 do if ((i2 | 0) == (i9 | 0)) if (i6) {
  FUNCTION_TABLE_vii[HEAP32[(HEAP32[i2 >> 2] | 0) + 12 >> 2] & 511](i2, i8);
  i6 = HEAP32[i1 >> 2] | 0;
  FUNCTION_TABLE_vi[HEAP32[(HEAP32[i6 >> 2] | 0) + 16 >> 2] & 255](i6);
  HEAP32[i1 >> 2] = 0;
  i6 = HEAP32[i4 >> 2] | 0;
  FUNCTION_TABLE_vii[HEAP32[(HEAP32[i6 >> 2] | 0) + 12 >> 2] & 511](i6, i2);
  i6 = HEAP32[i4 >> 2] | 0;
  FUNCTION_TABLE_vi[HEAP32[(HEAP32[i6 >> 2] | 0) + 16 >> 2] & 255](i6);
  HEAP32[i4 >> 2] = 0;
  HEAP32[i1 >> 2] = i9;
  FUNCTION_TABLE_vii[HEAP32[(HEAP32[i8 >> 2] | 0) + 12 >> 2] & 511](i8, i5);
  FUNCTION_TABLE_vi[HEAP32[(HEAP32[i8 >> 2] | 0) + 16 >> 2] & 255](i8);
  HEAP32[i4 >> 2] = i7;
  break;
 } else {
  FUNCTION_TABLE_vii[HEAP32[(HEAP32[i2 >> 2] | 0) + 12 >> 2] & 511](i2, i7);
  i9 = HEAP32[i1 >> 2] | 0;
  FUNCTION_TABLE_vi[HEAP32[(HEAP32[i9 >> 2] | 0) + 16 >> 2] & 255](i9);
  i9 = i7 + 16 | 0;
  HEAP32[i1 >> 2] = HEAP32[i9 >> 2];
  HEAP32[i9 >> 2] = i7;
  break;
 } else if (i6) {
  FUNCTION_TABLE_vii[HEAP32[(HEAP32[i7 >> 2] | 0) + 12 >> 2] & 511](i7, i9);
  i8 = HEAP32[i4 >> 2] | 0;
  FUNCTION_TABLE_vi[HEAP32[(HEAP32[i8 >> 2] | 0) + 16 >> 2] & 255](i8);
  HEAP32[i4 >> 2] = HEAP32[i1 >> 2];
  HEAP32[i1 >> 2] = i9;
  break;
 } else {
  HEAP32[i1 >> 2] = i5;
  HEAP32[i4 >> 2] = i3;
  break;
 } while (0);
 STACKTOP = i10;
 return;
}

function __ZNSt3__16vectorIN4wasm8WasmTypeENS_9allocatorIS2_EEE6assignIPS2_EENS_9enable_ifIXaasr21__is_forward_iteratorIT_EE5valuesr16is_constructibleIS2_NS_15iterator_traitsIS9_E9referenceEEE5valueEvE4typeES9_S9_(i6, i1, i7) {
 i6 = i6 | 0;
 i1 = i1 | 0;
 i7 = i7 | 0;
 var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i8 = 0;
 i4 = i1;
 i3 = i7 - i4 >> 2;
 i2 = i6 + 8 | 0;
 i5 = HEAP32[i6 >> 2] | 0;
 L1 : do if (i3 >>> 0 > (HEAP32[i2 >> 2] | 0) - i5 >> 2 >>> 0) {
  __ZNSt3__16vectorIN4wasm8WasmTypeENS_9allocatorIS2_EEE10deallocateEv(i6);
  if (i3 >>> 0 > 1073741823) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i6);
  i2 = (HEAP32[i2 >> 2] | 0) - (HEAP32[i6 >> 2] | 0) | 0;
  if (i2 >> 2 >>> 0 < 536870911) {
   i2 = i2 >> 1;
   i2 = i2 >>> 0 < i3 >>> 0 ? i3 : i2;
  } else i2 = 1073741823;
  __ZNSt3__16vectorIN4wasm8WasmTypeENS_9allocatorIS2_EEE8allocateEj(i6, i2);
  i2 = i6 + 4 | 0;
  while (1) {
   if ((i1 | 0) == (i7 | 0)) break L1;
   i6 = HEAP32[i2 >> 2] | 0;
   HEAP32[i6 >> 2] = HEAP32[i1 >> 2];
   HEAP32[i2 >> 2] = i6 + 4;
   i1 = i1 + 4 | 0;
  }
 } else {
  i6 = i6 + 4 | 0;
  i2 = (HEAP32[i6 >> 2] | 0) - i5 >> 2;
  i8 = i3 >>> 0 > i2 >>> 0;
  i3 = i1 + (i2 << 2) | 0;
  i2 = (i8 ? i3 : i7) - i4 | 0;
  _memmove(i5 | 0, i1 | 0, i2 | 0) | 0;
  i2 = i5 + (i2 >> 2 << 2) | 0;
  if (i8) {
   i1 = i3;
   while (1) {
    if ((i1 | 0) == (i7 | 0)) break L1;
    i8 = HEAP32[i6 >> 2] | 0;
    HEAP32[i8 >> 2] = HEAP32[i1 >> 2];
    HEAP32[i6 >> 2] = i8 + 4;
    i1 = i1 + 4 | 0;
   }
  }
  i1 = HEAP32[i6 >> 2] | 0;
  while (1) {
   if ((i1 | 0) == (i2 | 0)) break L1;
   i8 = i1 + -4 | 0;
   HEAP32[i6 >> 2] = i8;
   i1 = i8;
  }
 } while (0);
 return;
}

function __ZN4wasm6Vacuum10visitBlockEPNS_5BlockE(i11, i10) {
 i11 = i11 | 0;
 i10 = i10 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i12 = 0;
 i8 = i10 + 12 | 0;
 i9 = i10 + 16 | 0;
 i7 = (HEAP32[i9 >> 2] | 0) - (HEAP32[i8 >> 2] | 0) >> 2;
 i5 = 0;
 i2 = 0;
 i6 = 0;
 L1 : while (1) {
  if (i6 >>> 0 >= i7 >>> 0) {
   i3 = 12;
   break;
  }
  i3 = HEAP32[i8 >> 2] | 0;
  i1 = HEAP32[i3 + (i6 << 2) >> 2] | 0;
  i4 = i1;
  do if ((HEAP32[i1 >> 2] | 0) != 19) {
   i1 = i6 - i2 | 0;
   if ((i2 | 0) > 0) {
    HEAP32[i3 + (i1 << 2) >> 2] = i4;
    i3 = HEAP32[i8 >> 2] | 0;
   }
   i3 = HEAP32[i3 + (i1 << 2) >> 2] | 0;
   i12 = HEAP32[i3 >> 2] | 0;
   i4 = __ZN4wasm10Expression7dynCastINS_6SwitchEEEPT_v(i3) | 0;
   if ((i3 | 0) == 0 | (i12 | 0) != 4) if (!i4) {
    i1 = i5;
    break;
   } else {
    i3 = 10;
    break L1;
   } else if ((i4 | 0) != 0 | (HEAP32[i3 + 16 >> 2] | 0) == 0) {
    i3 = 10;
    break L1;
   } else {
    i1 = i5;
    break;
   }
  } else {
   i1 = 1;
   i2 = i2 + 1 | 0;
  } while (0);
  i5 = i1;
  i6 = i6 + 1 | 0;
 }
 if ((i3 | 0) == 10) __ZNSt3__16vectorIPN4wasm10ExpressionENS_9allocatorIS3_EEE6resizeEj(i8, i1 + 1 | 0); else if ((i3 | 0) == 12 ? i5 : 0) __ZNSt3__16vectorIPN4wasm10ExpressionENS_9allocatorIS3_EEE6resizeEj(i8, i7 - i2 | 0);
 L19 : do if (!(HEAP32[i10 + 8 >> 2] | 0)) {
  i1 = HEAP32[i8 >> 2] | 0;
  switch ((HEAP32[i9 >> 2] | 0) - i1 >> 2 | 0) {
  case 1:
   {
    HEAP32[i11 + 16 >> 2] = HEAP32[i1 >> 2];
    break L19;
   }
  case 0:
   {
    i12 = i10;
    HEAP32[i12 >> 2] = 19;
    HEAP32[i12 + 4 >> 2] = 0;
    break L19;
   }
  default:
   break L19;
  }
 } while (0);
 return;
}

function __ZNK10__cxxabiv120__si_class_type_info16search_below_dstEPNS_19__dynamic_cast_infoEPKvib(i3, i8, i7, i2, i4) {
 i3 = i3 | 0;
 i8 = i8 | 0;
 i7 = i7 | 0;
 i2 = i2 | 0;
 i4 = i4 | 0;
 var i1 = 0, i5 = 0, i6 = 0;
 do if ((i3 | 0) == (HEAP32[i8 + 8 >> 2] | 0)) {
  if ((HEAP32[i8 + 4 >> 2] | 0) == (i7 | 0) ? (i1 = i8 + 28 | 0, (HEAP32[i1 >> 2] | 0) != 1) : 0) HEAP32[i1 >> 2] = i2;
 } else {
  if ((i3 | 0) != (HEAP32[i8 >> 2] | 0)) {
   i6 = HEAP32[i3 + 8 >> 2] | 0;
   FUNCTION_TABLE_viiiii[HEAP32[(HEAP32[i6 >> 2] | 0) + 24 >> 2] & 3](i6, i8, i7, i2, i4);
   break;
  }
  if ((HEAP32[i8 + 16 >> 2] | 0) != (i7 | 0) ? (i6 = i8 + 20 | 0, (HEAP32[i6 >> 2] | 0) != (i7 | 0)) : 0) {
   HEAP32[i8 + 32 >> 2] = i2;
   i5 = i8 + 44 | 0;
   if ((HEAP32[i5 >> 2] | 0) == 4) break;
   i1 = i8 + 52 | 0;
   HEAP8[i1 >> 0] = 0;
   i2 = i8 + 53 | 0;
   HEAP8[i2 >> 0] = 0;
   i3 = HEAP32[i3 + 8 >> 2] | 0;
   FUNCTION_TABLE_viiiiii[HEAP32[(HEAP32[i3 >> 2] | 0) + 20 >> 2] & 15](i3, i8, i7, i7, 1, i4);
   if (HEAP8[i2 >> 0] | 0) if (!(HEAP8[i1 >> 0] | 0)) {
    i1 = 1;
    i2 = 13;
   } else i2 = 17; else {
    i1 = 0;
    i2 = 13;
   }
   do if ((i2 | 0) == 13) {
    HEAP32[i6 >> 2] = i7;
    i7 = i8 + 40 | 0;
    HEAP32[i7 >> 2] = (HEAP32[i7 >> 2] | 0) + 1;
    if ((HEAP32[i8 + 36 >> 2] | 0) == 1 ? (HEAP32[i8 + 24 >> 2] | 0) == 2 : 0) {
     HEAP8[i8 + 54 >> 0] = 1;
     if (i1) {
      i2 = 17;
      break;
     } else {
      i1 = 4;
      break;
     }
    }
    if (i1) i2 = 17; else i1 = 4;
   } while (0);
   if ((i2 | 0) == 17) i1 = 3;
   HEAP32[i5 >> 2] = i1;
   break;
  }
  if ((i2 | 0) == 1) HEAP32[i8 + 32 >> 2] = 1;
 } while (0);
 return;
}

function __ZZN4wasm14ModuleInstance12callFunctionEN6cashew7IStringERNSt3__16vectorINS_7LiteralENS3_9allocatorIS5_EEEEEN16ExpressionRunner15visitCallImportEPNS_10CallImportE(i4, i8, i6) {
 i4 = i4 | 0;
 i8 = i8 | 0;
 i6 = i6 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i5 = 0, i7 = 0, i9 = 0, i10 = 0;
 i9 = STACKTOP;
 STACKTOP = STACKTOP + 64 | 0;
 i1 = i9 + 56 | 0;
 i5 = i9 + 44 | 0;
 i7 = i9 + 16 | 0;
 i2 = i9;
 i3 = i9 + 40 | 0;
 HEAP32[i5 >> 2] = 0;
 HEAP32[i5 + 4 >> 2] = 0;
 HEAP32[i5 + 8 >> 2] = 0;
 __ZZN4wasm14ModuleInstance12callFunctionEN6cashew7IStringERNSt3__16vectorINS_7LiteralENS3_9allocatorIS5_EEEEEN16ExpressionRunner17generateArgumentsERKNS4_IPNS_10ExpressionENS6_ISC_EEEES9_(i7, i8, i6 + 8 | 0, i5);
 if (!(HEAP32[i7 + 16 >> 2] | 0)) {
  i8 = HEAP32[i8 >> 2] | 0;
  i7 = HEAP32[i8 + 24 >> 2] | 0;
  i10 = HEAP32[(HEAP32[i7 >> 2] | 0) + 4 >> 2] | 0;
  i8 = HEAP32[i8 >> 2] | 0;
  HEAP32[i3 >> 2] = HEAP32[i6 + 20 >> 2];
  HEAP32[i1 >> 2] = HEAP32[i3 >> 2];
  i8 = __ZN4wasm6Module9getImportENS_4NameE(i8, i1) | 0;
  FUNCTION_TABLE_viiii[i10 & 15](i2, i7, i8, i5);
  HEAP32[i4 >> 2] = HEAP32[i2 >> 2];
  HEAP32[i4 + 4 >> 2] = HEAP32[i2 + 4 >> 2];
  HEAP32[i4 + 8 >> 2] = HEAP32[i2 + 8 >> 2];
  HEAP32[i4 + 12 >> 2] = HEAP32[i2 + 12 >> 2];
  HEAP32[i4 + 16 >> 2] = 0;
 } else {
  HEAP32[i4 >> 2] = HEAP32[i7 >> 2];
  HEAP32[i4 + 4 >> 2] = HEAP32[i7 + 4 >> 2];
  HEAP32[i4 + 8 >> 2] = HEAP32[i7 + 8 >> 2];
  HEAP32[i4 + 12 >> 2] = HEAP32[i7 + 12 >> 2];
  HEAP32[i4 + 16 >> 2] = HEAP32[i7 + 16 >> 2];
  HEAP32[i4 + 20 >> 2] = HEAP32[i7 + 20 >> 2];
 }
 __ZNSt3__113__vector_baseIN4wasm7LiteralENS_9allocatorIS2_EEED2Ev(i5);
 STACKTOP = i9;
 return;
}

function _wcsnrtombs(i3, i11, i4, i2, i1) {
 i3 = i3 | 0;
 i11 = i11 | 0;
 i4 = i4 | 0;
 i2 = i2 | 0;
 i1 = i1 | 0;
 var i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i12 = 0, i13 = 0;
 i10 = STACKTOP;
 STACKTOP = STACKTOP + 272 | 0;
 i7 = i10 + 8 | 0;
 i9 = i10;
 i6 = HEAP32[i11 >> 2] | 0;
 HEAP32[i9 >> 2] = i6;
 i8 = (i3 | 0) != 0;
 i1 = i8 ? i2 : 256;
 i2 = i8 ? i3 : i7;
 i3 = i6;
 L1 : do if ((i1 | 0) != 0 & (i6 | 0) != 0) {
  i6 = i1;
  i5 = i3;
  i1 = 0;
  while (1) {
   i3 = i4 >>> 0 >= i6 >>> 0;
   if (!(i3 | i4 >>> 0 > 32)) {
    i3 = i5;
    break L1;
   }
   i3 = i3 ? i6 : i4;
   i4 = i4 - i3 | 0;
   i3 = _wcsrtombs(i2, i9, i3, 0) | 0;
   if ((i3 | 0) == -1) {
    i1 = i4;
    break;
   }
   i13 = (i2 | 0) == (i7 | 0);
   i12 = i13 ? 0 : i3;
   i5 = i6 - i12 | 0;
   i2 = i13 ? i2 : i2 + i3 | 0;
   i1 = i3 + i1 | 0;
   i3 = HEAP32[i9 >> 2] | 0;
   if ((i6 | 0) != (i12 | 0) & (i3 | 0) != 0) {
    i6 = i5;
    i5 = i3;
   } else {
    i6 = i5;
    break L1;
   }
  }
  i4 = i1;
  i6 = 0;
  i3 = HEAP32[i9 >> 2] | 0;
  i1 = -1;
 } else {
  i6 = i1;
  i1 = 0;
 } while (0);
 L8 : do if ((i3 | 0) != 0 ? (i6 | 0) != 0 & (i4 | 0) != 0 : 0) {
  i5 = i3;
  i3 = i2;
  while (1) {
   i2 = _wcrtomb(i3, HEAP32[i5 >> 2] | 0, 0) | 0;
   if ((i2 + 1 | 0) >>> 0 < 2) break;
   i5 = (HEAP32[i9 >> 2] | 0) + 4 | 0;
   HEAP32[i9 >> 2] = i5;
   i4 = i4 + -1 | 0;
   i1 = i1 + 1 | 0;
   if (!((i6 | 0) != (i2 | 0) & (i4 | 0) != 0)) break L8; else {
    i6 = i6 - i2 | 0;
    i3 = i3 + i2 | 0;
   }
  }
  if (!i2) HEAP32[i9 >> 2] = 0; else i1 = -1;
 } while (0);
 if (i8) HEAP32[i11 >> 2] = HEAP32[i9 >> 2];
 STACKTOP = i10;
 return i1 | 0;
}

function __ZN4wasm17SExpressionParser14skipWhitespaceEv(i4) {
 i4 = i4 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i5 = 0;
 i1 = HEAP32[i4 >> 2] | 0;
 L1 : while (1) {
  i3 = (_isspace(HEAP8[i1 >> 0] | 0) | 0) == 0;
  i1 = HEAP32[i4 >> 2] | 0;
  if (!i3) {
   i1 = i1 + 1 | 0;
   HEAP32[i4 >> 2] = i1;
   continue;
  }
  switch (HEAP8[i1 >> 0] | 0) {
  case 59:
   {
    if ((HEAP8[i1 + 1 >> 0] | 0) == 59) i2 = 59; else break L1;
    while (1) {
     switch (i2 << 24 >> 24) {
     case 10:
     case 0:
      continue L1;
     default:
      {}
     }
     i3 = i1 + 1 | 0;
     HEAP32[i4 >> 2] = i3;
     i2 = HEAP8[i3 >> 0] | 0;
     i1 = i3;
    }
   }
  case 40:
   break;
  default:
   break L1;
  }
  if ((HEAP8[i1 + 1 >> 0] | 0) != 59) break;
  i1 = i1 + 2 | 0;
  HEAP32[i4 >> 2] = i1;
  i3 = 1;
  while (1) {
   L15 : while (1) {
    switch (HEAP8[i1 >> 0] | 0) {
    case 0:
     break L1;
    case 40:
     {
      if ((HEAP8[i1 + 1 >> 0] | 0) == 59) {
       i5 = 13;
       break L15;
      } else i5 = 14;
      break;
     }
    case 59:
     {
      i2 = i1 + 1 | 0;
      if ((HEAP8[i2 >> 0] | 0) == 41) {
       i5 = 16;
       break L15;
      } else i1 = i2;
      break;
     }
    default:
     i5 = 14;
    }
    if ((i5 | 0) == 14) {
     i5 = 0;
     i1 = i1 + 1 | 0;
    }
    HEAP32[i4 >> 2] = i1;
   }
   if ((i5 | 0) == 13) {
    i5 = 0;
    i1 = i1 + 2 | 0;
    HEAP32[i4 >> 2] = i1;
    i3 = i3 + 1 | 0;
    continue;
   } else if ((i5 | 0) == 16) {
    i5 = 0;
    i1 = i1 + 2 | 0;
    HEAP32[i4 >> 2] = i1;
    i2 = i3 + -1 | 0;
    if (!i2) continue L1; else {
     i3 = i2;
     continue;
    }
   }
  }
 }
 return;
}

function __ZN10MixedArena5allocIN4wasm10CallImportEEEPT_v(i1) {
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0;
 i9 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i6 = i9;
 i7 = _pthread_self() | 0;
 if ((i7 | 0) == (HEAP32[i1 + 16 >> 2] | 0)) {
  i4 = i1 + 4 | 0;
  i5 = HEAP32[i4 >> 2] | 0;
  i2 = i5;
  if ((i5 | 0) != (HEAP32[i1 >> 2] | 0) ? (i3 = i1 + 12 | 0, i8 = HEAP32[i3 >> 2] | 0, (i8 + 24 | 0) >>> 0 <= 9999) : 0) i1 = i8; else {
   i3 = __Znaj(1e4) | 0;
   HEAP32[i6 >> 2] = i3;
   if (i2 >>> 0 < (HEAP32[i1 + 8 >> 2] | 0) >>> 0) {
    HEAP32[i5 >> 2] = i3;
    i2 = (HEAP32[i4 >> 2] | 0) + 4 | 0;
    HEAP32[i4 >> 2] = i2;
   } else {
    __ZNSt3__16vectorIPcNS_9allocatorIS1_EEE21__push_back_slow_pathIS1_EEvOT_(i1, i6);
    i2 = HEAP32[i4 >> 2] | 0;
   }
   i3 = i1 + 12 | 0;
   HEAP32[i3 >> 2] = 0;
   i1 = 0;
  }
  i8 = (HEAP32[i2 + -4 >> 2] | 0) + i1 | 0;
  HEAP32[i3 >> 2] = i1 + 24;
  i1 = i8 + 4 | 0;
  HEAP32[i1 >> 2] = 0;
  HEAP32[i1 + 4 >> 2] = 0;
  HEAP32[i1 + 8 >> 2] = 0;
  HEAP32[i1 + 12 >> 2] = 0;
  HEAP32[i1 + 16 >> 2] = 0;
  HEAP32[i8 >> 2] = 7;
  i1 = i8;
 } else {
  i5 = i1 + 20 | 0;
  __ZNSt3__15mutex4lockEv(i5);
  L13 : while (1) {
   i3 = i1 + 16 | 0;
   i4 = i1 + 48 | 0;
   while (1) {
    if ((i7 | 0) == (HEAP32[i3 >> 2] | 0)) break L13;
    i2 = HEAP32[i4 >> 2] | 0;
    if (i2 | 0) {
     i1 = i2;
     continue L13;
    }
    i8 = __Znwj(52) | 0;
    __ZN10MixedArenaC2Ev(i8);
    HEAP32[i4 >> 2] = i8;
   }
  }
  i1 = __ZN10MixedArena5allocIN4wasm10CallImportEEEPT_v(i1) | 0;
  __ZNSt3__15mutex6unlockEv(i5);
 }
 STACKTOP = i9;
 return i1 | 0;
}

function __ZN4wasm22SExpressionWasmBuilder14makeBreakTableERNS_7ElementE(i11, i10) {
 i11 = i11 | 0;
 i10 = i10 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i12 = 0;
 i12 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i4 = i12;
 i9 = __ZN10MixedArena5allocIN4wasm6SwitchEEEPT_v(HEAP32[i11 + 4 >> 2] | 0) | 0;
 i8 = i9 + 12 | 0;
 i6 = i9 + 16 | 0;
 i7 = i9 + 8 | 0;
 i3 = 1;
 while (1) {
  i5 = __ZN4wasm7ElementixEj(i10, i3) | 0;
  if (HEAP8[i5 >> 0] | 0) break;
  i5 = i3 + 1 | 0;
  i1 = __ZN4wasm22SExpressionWasmBuilder8getLabelERNS_7ElementE(i11, __ZN4wasm7ElementixEj(i10, i3) | 0) | 0;
  HEAP32[i4 >> 2] = i1;
  i2 = HEAP32[i8 >> 2] | 0;
  if (i2 >>> 0 < (HEAP32[i6 >> 2] | 0) >>> 0) {
   HEAP32[i2 >> 2] = i1;
   HEAP32[i8 >> 2] = (HEAP32[i8 >> 2] | 0) + 4;
   i3 = i5;
   continue;
  } else {
   __ZNSt3__16vectorIN4wasm4NameENS_9allocatorIS2_EEE21__push_back_slow_pathIS2_EEvOT_(i7, i4);
   i3 = i5;
   continue;
  }
 }
 i2 = HEAP32[i8 >> 2] | 0;
 i1 = i2 + -4 | 0;
 HEAP32[i9 + 20 >> 2] = HEAP32[i1 >> 2];
 while (1) {
  if ((i2 | 0) == (i1 | 0)) break;
  i7 = i2 + -4 | 0;
  HEAP32[i8 >> 2] = i7;
  i2 = i7;
 }
 i2 = i3 + 1 | 0;
 i8 = __ZN4wasm22SExpressionWasmBuilder15parseExpressionERNS_7ElementE(i11, __ZN4wasm7ElementixEj(i10, i3) | 0) | 0;
 i1 = i9 + 24 | 0;
 HEAP32[i1 >> 2] = i8;
 if (i2 >>> 0 < (__ZN4wasm7Element4sizeEv(i10) | 0) >>> 0) {
  HEAP32[i9 + 28 >> 2] = HEAP32[i1 >> 2];
  i11 = __ZN4wasm22SExpressionWasmBuilder15parseExpressionERNS_7ElementE(i11, __ZN4wasm7ElementixEj(i10, i2) | 0) | 0;
  HEAP32[i1 >> 2] = i11;
 }
 STACKTOP = i12;
 return i9 | 0;
}

function __ZNKSt3__17num_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_putES4_RNS_8ios_baseEwm(i5, i3, i2, i1, i4) {
 i5 = i5 | 0;
 i3 = i3 | 0;
 i2 = i2 | 0;
 i1 = i1 | 0;
 i4 = i4 | 0;
 var i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0;
 i6 = STACKTOP;
 STACKTOP = STACKTOP + 128 | 0;
 i8 = i6;
 i12 = i6 + 116 | 0;
 i14 = i6 + 104 | 0;
 i7 = i6 + 20 | 0;
 i10 = i6 + 16 | 0;
 i5 = i6 + 8 | 0;
 i11 = i6 + 12 | 0;
 i9 = i6 + 4 | 0;
 HEAP8[i12 >> 0] = HEAP8[30691] | 0;
 HEAP8[i12 + 1 >> 0] = HEAP8[30692] | 0;
 HEAP8[i12 + 2 >> 0] = HEAP8[30693] | 0;
 HEAP8[i12 + 3 >> 0] = HEAP8[30694] | 0;
 HEAP8[i12 + 4 >> 0] = HEAP8[30695] | 0;
 HEAP8[i12 + 5 >> 0] = HEAP8[30696] | 0;
 __ZNSt3__114__num_put_base12__format_intEPcPKcbj(i12 + 1 | 0, 33636, 0, HEAP32[i2 + 4 >> 2] | 0);
 i13 = __ZNSt3__16__clocEv() | 0;
 HEAP32[i8 >> 2] = i4;
 i12 = i14 + (__ZNSt3__112__snprintf_lEPcjP15__locale_structPKcz(i14, 12, i13, i12, i8) | 0) | 0;
 i13 = __ZNSt3__114__num_put_base18__identify_paddingEPcS1_RKNS_8ios_baseE(i14, i12, i2) | 0;
 i4 = __ZNKSt3__18ios_base6getlocEv(i2) | 0;
 HEAP32[i11 >> 2] = i4;
 __ZNSt3__19__num_putIwE21__widen_and_group_intEPcS2_S2_PwRS3_S4_RKNS_6localeE(i14, i13, i12, i7, i10, i5, i11);
 __ZNSt3__114__shared_count16__release_sharedEv(i4) | 0;
 HEAP32[i9 >> 2] = HEAP32[i3 >> 2];
 i4 = HEAP32[i10 >> 2] | 0;
 i5 = HEAP32[i5 >> 2] | 0;
 HEAP32[i8 >> 2] = HEAP32[i9 >> 2];
 i5 = __ZNSt3__116__pad_and_outputIwNS_11char_traitsIwEEEENS_19ostreambuf_iteratorIT_T0_EES6_PKS4_S8_S8_RNS_8ios_baseES4_(i8, i7, i4, i5, i2, i1) | 0;
 STACKTOP = i6;
 return i5 | 0;
}

function __ZNKSt3__17num_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_putES4_RNS_8ios_baseEwl(i5, i3, i2, i1, i4) {
 i5 = i5 | 0;
 i3 = i3 | 0;
 i2 = i2 | 0;
 i1 = i1 | 0;
 i4 = i4 | 0;
 var i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0;
 i6 = STACKTOP;
 STACKTOP = STACKTOP + 128 | 0;
 i8 = i6;
 i12 = i6 + 116 | 0;
 i14 = i6 + 104 | 0;
 i7 = i6 + 20 | 0;
 i10 = i6 + 16 | 0;
 i5 = i6 + 8 | 0;
 i11 = i6 + 12 | 0;
 i9 = i6 + 4 | 0;
 HEAP8[i12 >> 0] = HEAP8[30691] | 0;
 HEAP8[i12 + 1 >> 0] = HEAP8[30692] | 0;
 HEAP8[i12 + 2 >> 0] = HEAP8[30693] | 0;
 HEAP8[i12 + 3 >> 0] = HEAP8[30694] | 0;
 HEAP8[i12 + 4 >> 0] = HEAP8[30695] | 0;
 HEAP8[i12 + 5 >> 0] = HEAP8[30696] | 0;
 __ZNSt3__114__num_put_base12__format_intEPcPKcbj(i12 + 1 | 0, 33636, 1, HEAP32[i2 + 4 >> 2] | 0);
 i13 = __ZNSt3__16__clocEv() | 0;
 HEAP32[i8 >> 2] = i4;
 i12 = i14 + (__ZNSt3__112__snprintf_lEPcjP15__locale_structPKcz(i14, 12, i13, i12, i8) | 0) | 0;
 i13 = __ZNSt3__114__num_put_base18__identify_paddingEPcS1_RKNS_8ios_baseE(i14, i12, i2) | 0;
 i4 = __ZNKSt3__18ios_base6getlocEv(i2) | 0;
 HEAP32[i11 >> 2] = i4;
 __ZNSt3__19__num_putIwE21__widen_and_group_intEPcS2_S2_PwRS3_S4_RKNS_6localeE(i14, i13, i12, i7, i10, i5, i11);
 __ZNSt3__114__shared_count16__release_sharedEv(i4) | 0;
 HEAP32[i9 >> 2] = HEAP32[i3 >> 2];
 i4 = HEAP32[i10 >> 2] | 0;
 i5 = HEAP32[i5 >> 2] | 0;
 HEAP32[i8 >> 2] = HEAP32[i9 >> 2];
 i5 = __ZNSt3__116__pad_and_outputIwNS_11char_traitsIwEEEENS_19ostreambuf_iteratorIT_T0_EES6_PKS4_S8_S8_RNS_8ios_baseES4_(i8, i7, i4, i5, i2, i1) | 0;
 STACKTOP = i6;
 return i5 | 0;
}

function __ZNKSt3__17num_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_putES4_RNS_8ios_baseEcm(i5, i3, i2, i1, i4) {
 i5 = i5 | 0;
 i3 = i3 | 0;
 i2 = i2 | 0;
 i1 = i1 | 0;
 i4 = i4 | 0;
 var i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0;
 i6 = STACKTOP;
 STACKTOP = STACKTOP + 64 | 0;
 i8 = i6;
 i12 = i6 + 56 | 0;
 i14 = i6 + 44 | 0;
 i7 = i6 + 20 | 0;
 i10 = i6 + 16 | 0;
 i5 = i6 + 8 | 0;
 i11 = i6 + 12 | 0;
 i9 = i6 + 4 | 0;
 HEAP8[i12 >> 0] = HEAP8[30691] | 0;
 HEAP8[i12 + 1 >> 0] = HEAP8[30692] | 0;
 HEAP8[i12 + 2 >> 0] = HEAP8[30693] | 0;
 HEAP8[i12 + 3 >> 0] = HEAP8[30694] | 0;
 HEAP8[i12 + 4 >> 0] = HEAP8[30695] | 0;
 HEAP8[i12 + 5 >> 0] = HEAP8[30696] | 0;
 __ZNSt3__114__num_put_base12__format_intEPcPKcbj(i12 + 1 | 0, 33636, 0, HEAP32[i2 + 4 >> 2] | 0);
 i13 = __ZNSt3__16__clocEv() | 0;
 HEAP32[i8 >> 2] = i4;
 i12 = i14 + (__ZNSt3__112__snprintf_lEPcjP15__locale_structPKcz(i14, 12, i13, i12, i8) | 0) | 0;
 i13 = __ZNSt3__114__num_put_base18__identify_paddingEPcS1_RKNS_8ios_baseE(i14, i12, i2) | 0;
 i4 = __ZNKSt3__18ios_base6getlocEv(i2) | 0;
 HEAP32[i11 >> 2] = i4;
 __ZNSt3__19__num_putIcE21__widen_and_group_intEPcS2_S2_S2_RS2_S3_RKNS_6localeE(i14, i13, i12, i7, i10, i5, i11);
 __ZNSt3__114__shared_count16__release_sharedEv(i4) | 0;
 HEAP32[i9 >> 2] = HEAP32[i3 >> 2];
 i4 = HEAP32[i10 >> 2] | 0;
 i5 = HEAP32[i5 >> 2] | 0;
 HEAP32[i8 >> 2] = HEAP32[i9 >> 2];
 i5 = __ZNSt3__116__pad_and_outputIcNS_11char_traitsIcEEEENS_19ostreambuf_iteratorIT_T0_EES6_PKS4_S8_S8_RNS_8ios_baseES4_(i8, i7, i4, i5, i2, i1) | 0;
 STACKTOP = i6;
 return i5 | 0;
}

function __ZNKSt3__17num_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_putES4_RNS_8ios_baseEcl(i5, i3, i2, i1, i4) {
 i5 = i5 | 0;
 i3 = i3 | 0;
 i2 = i2 | 0;
 i1 = i1 | 0;
 i4 = i4 | 0;
 var i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0;
 i6 = STACKTOP;
 STACKTOP = STACKTOP + 64 | 0;
 i8 = i6;
 i12 = i6 + 56 | 0;
 i14 = i6 + 44 | 0;
 i7 = i6 + 20 | 0;
 i10 = i6 + 16 | 0;
 i5 = i6 + 8 | 0;
 i11 = i6 + 12 | 0;
 i9 = i6 + 4 | 0;
 HEAP8[i12 >> 0] = HEAP8[30691] | 0;
 HEAP8[i12 + 1 >> 0] = HEAP8[30692] | 0;
 HEAP8[i12 + 2 >> 0] = HEAP8[30693] | 0;
 HEAP8[i12 + 3 >> 0] = HEAP8[30694] | 0;
 HEAP8[i12 + 4 >> 0] = HEAP8[30695] | 0;
 HEAP8[i12 + 5 >> 0] = HEAP8[30696] | 0;
 __ZNSt3__114__num_put_base12__format_intEPcPKcbj(i12 + 1 | 0, 33636, 1, HEAP32[i2 + 4 >> 2] | 0);
 i13 = __ZNSt3__16__clocEv() | 0;
 HEAP32[i8 >> 2] = i4;
 i12 = i14 + (__ZNSt3__112__snprintf_lEPcjP15__locale_structPKcz(i14, 12, i13, i12, i8) | 0) | 0;
 i13 = __ZNSt3__114__num_put_base18__identify_paddingEPcS1_RKNS_8ios_baseE(i14, i12, i2) | 0;
 i4 = __ZNKSt3__18ios_base6getlocEv(i2) | 0;
 HEAP32[i11 >> 2] = i4;
 __ZNSt3__19__num_putIcE21__widen_and_group_intEPcS2_S2_S2_RS2_S3_RKNS_6localeE(i14, i13, i12, i7, i10, i5, i11);
 __ZNSt3__114__shared_count16__release_sharedEv(i4) | 0;
 HEAP32[i9 >> 2] = HEAP32[i3 >> 2];
 i4 = HEAP32[i10 >> 2] | 0;
 i5 = HEAP32[i5 >> 2] | 0;
 HEAP32[i8 >> 2] = HEAP32[i9 >> 2];
 i5 = __ZNSt3__116__pad_and_outputIcNS_11char_traitsIcEEEENS_19ostreambuf_iteratorIT_T0_EES6_PKS4_S8_S8_RNS_8ios_baseES4_(i8, i7, i4, i5, i2, i1) | 0;
 STACKTOP = i6;
 return i5 | 0;
}

function __ZN10MixedArena5allocIN4wasm5BlockEEEPT_v(i1) {
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0;
 i9 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i6 = i9;
 i7 = _pthread_self() | 0;
 if ((i7 | 0) == (HEAP32[i1 + 16 >> 2] | 0)) {
  i4 = i1 + 4 | 0;
  i5 = HEAP32[i4 >> 2] | 0;
  i2 = i5;
  if ((i5 | 0) != (HEAP32[i1 >> 2] | 0) ? (i3 = i1 + 12 | 0, i8 = HEAP32[i3 >> 2] | 0, (i8 + 24 | 0) >>> 0 <= 9999) : 0) i1 = i8; else {
   i3 = __Znaj(1e4) | 0;
   HEAP32[i6 >> 2] = i3;
   if (i2 >>> 0 < (HEAP32[i1 + 8 >> 2] | 0) >>> 0) {
    HEAP32[i5 >> 2] = i3;
    i2 = (HEAP32[i4 >> 2] | 0) + 4 | 0;
    HEAP32[i4 >> 2] = i2;
   } else {
    __ZNSt3__16vectorIPcNS_9allocatorIS1_EEE21__push_back_slow_pathIS1_EEvOT_(i1, i6);
    i2 = HEAP32[i4 >> 2] | 0;
   }
   i3 = i1 + 12 | 0;
   HEAP32[i3 >> 2] = 0;
   i1 = 0;
  }
  i8 = (HEAP32[i2 + -4 >> 2] | 0) + i1 | 0;
  HEAP32[i3 >> 2] = i1 + 24;
  HEAP32[i8 >> 2] = 1;
  i1 = i8 + 4 | 0;
  HEAP32[i1 >> 2] = 0;
  HEAP32[i1 + 4 >> 2] = 0;
  HEAP32[i1 + 8 >> 2] = 0;
  HEAP32[i1 + 12 >> 2] = 0;
  HEAP32[i1 + 16 >> 2] = 0;
  i1 = i8;
 } else {
  i5 = i1 + 20 | 0;
  __ZNSt3__15mutex4lockEv(i5);
  L13 : while (1) {
   i3 = i1 + 16 | 0;
   i4 = i1 + 48 | 0;
   while (1) {
    if ((i7 | 0) == (HEAP32[i3 >> 2] | 0)) break L13;
    i2 = HEAP32[i4 >> 2] | 0;
    if (i2 | 0) {
     i1 = i2;
     continue L13;
    }
    i8 = __Znwj(52) | 0;
    __ZN10MixedArenaC2Ev(i8);
    HEAP32[i4 >> 2] = i8;
   }
  }
  i1 = __ZN10MixedArena5allocIN4wasm5BlockEEEPT_v(i1) | 0;
  __ZNSt3__15mutex6unlockEv(i5);
 }
 STACKTOP = i9;
 return i1 | 0;
}

function __ZN10MixedArena5allocIN4wasm4HostEEEPT_v(i1) {
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0;
 i9 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i6 = i9;
 i7 = _pthread_self() | 0;
 if ((i7 | 0) == (HEAP32[i1 + 16 >> 2] | 0)) {
  i4 = i1 + 4 | 0;
  i5 = HEAP32[i4 >> 2] | 0;
  i2 = i5;
  if ((i5 | 0) != (HEAP32[i1 >> 2] | 0) ? (i3 = i1 + 12 | 0, i8 = HEAP32[i3 >> 2] | 0, (i8 + 32 | 0) >>> 0 <= 9999) : 0) i1 = i8; else {
   i3 = __Znaj(1e4) | 0;
   HEAP32[i6 >> 2] = i3;
   if (i2 >>> 0 < (HEAP32[i1 + 8 >> 2] | 0) >>> 0) {
    HEAP32[i5 >> 2] = i3;
    i2 = (HEAP32[i4 >> 2] | 0) + 4 | 0;
    HEAP32[i4 >> 2] = i2;
   } else {
    __ZNSt3__16vectorIPcNS_9allocatorIS1_EEE21__push_back_slow_pathIS1_EEvOT_(i1, i6);
    i2 = HEAP32[i4 >> 2] | 0;
   }
   i3 = i1 + 12 | 0;
   HEAP32[i3 >> 2] = 0;
   i1 = 0;
  }
  i8 = (HEAP32[i2 + -4 >> 2] | 0) + i1 | 0;
  HEAP32[i3 >> 2] = i1 + 32;
  HEAP32[i8 >> 2] = 18;
  HEAP32[i8 + 4 >> 2] = 0;
  i1 = i8 + 12 | 0;
  HEAP32[i1 >> 2] = 0;
  HEAP32[i1 + 4 >> 2] = 0;
  HEAP32[i1 + 8 >> 2] = 0;
  HEAP32[i1 + 12 >> 2] = 0;
  i1 = i8;
 } else {
  i5 = i1 + 20 | 0;
  __ZNSt3__15mutex4lockEv(i5);
  L13 : while (1) {
   i3 = i1 + 16 | 0;
   i4 = i1 + 48 | 0;
   while (1) {
    if ((i7 | 0) == (HEAP32[i3 >> 2] | 0)) break L13;
    i2 = HEAP32[i4 >> 2] | 0;
    if (i2 | 0) {
     i1 = i2;
     continue L13;
    }
    i8 = __Znwj(52) | 0;
    __ZN10MixedArenaC2Ev(i8);
    HEAP32[i4 >> 2] = i8;
   }
  }
  i1 = __ZN10MixedArena5allocIN4wasm4HostEEEPT_v(i1) | 0;
  __ZNSt3__15mutex6unlockEv(i5);
 }
 STACKTOP = i9;
 return i1 | 0;
}

function __ZN10MixedArena5allocIN4wasm4CallEEEPT_v(i1) {
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0;
 i9 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i6 = i9;
 i7 = _pthread_self() | 0;
 if ((i7 | 0) == (HEAP32[i1 + 16 >> 2] | 0)) {
  i4 = i1 + 4 | 0;
  i5 = HEAP32[i4 >> 2] | 0;
  i2 = i5;
  if ((i5 | 0) != (HEAP32[i1 >> 2] | 0) ? (i3 = i1 + 12 | 0, i8 = HEAP32[i3 >> 2] | 0, (i8 + 24 | 0) >>> 0 <= 9999) : 0) i1 = i8; else {
   i3 = __Znaj(1e4) | 0;
   HEAP32[i6 >> 2] = i3;
   if (i2 >>> 0 < (HEAP32[i1 + 8 >> 2] | 0) >>> 0) {
    HEAP32[i5 >> 2] = i3;
    i2 = (HEAP32[i4 >> 2] | 0) + 4 | 0;
    HEAP32[i4 >> 2] = i2;
   } else {
    __ZNSt3__16vectorIPcNS_9allocatorIS1_EEE21__push_back_slow_pathIS1_EEvOT_(i1, i6);
    i2 = HEAP32[i4 >> 2] | 0;
   }
   i3 = i1 + 12 | 0;
   HEAP32[i3 >> 2] = 0;
   i1 = 0;
  }
  i8 = (HEAP32[i2 + -4 >> 2] | 0) + i1 | 0;
  HEAP32[i3 >> 2] = i1 + 24;
  HEAP32[i8 >> 2] = 6;
  i1 = i8 + 4 | 0;
  HEAP32[i1 >> 2] = 0;
  HEAP32[i1 + 4 >> 2] = 0;
  HEAP32[i1 + 8 >> 2] = 0;
  HEAP32[i1 + 12 >> 2] = 0;
  HEAP32[i1 + 16 >> 2] = 0;
  i1 = i8;
 } else {
  i5 = i1 + 20 | 0;
  __ZNSt3__15mutex4lockEv(i5);
  L13 : while (1) {
   i3 = i1 + 16 | 0;
   i4 = i1 + 48 | 0;
   while (1) {
    if ((i7 | 0) == (HEAP32[i3 >> 2] | 0)) break L13;
    i2 = HEAP32[i4 >> 2] | 0;
    if (i2 | 0) {
     i1 = i2;
     continue L13;
    }
    i8 = __Znwj(52) | 0;
    __ZN10MixedArenaC2Ev(i8);
    HEAP32[i4 >> 2] = i8;
   }
  }
  i1 = __ZN10MixedArena5allocIN4wasm4CallEEEPT_v(i1) | 0;
  __ZNSt3__15mutex6unlockEv(i5);
 }
 STACKTOP = i9;
 return i1 | 0;
}

function __ZN10MixedArena5allocIN4wasm5BreakEEEPT_v(i1) {
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0;
 i9 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i6 = i9;
 i7 = _pthread_self() | 0;
 if ((i7 | 0) == (HEAP32[i1 + 16 >> 2] | 0)) {
  i4 = i1 + 4 | 0;
  i5 = HEAP32[i4 >> 2] | 0;
  i2 = i5;
  if ((i5 | 0) != (HEAP32[i1 >> 2] | 0) ? (i3 = i1 + 12 | 0, i8 = HEAP32[i3 >> 2] | 0, (i8 + 24 | 0) >>> 0 <= 9999) : 0) i1 = i8; else {
   i3 = __Znaj(1e4) | 0;
   HEAP32[i6 >> 2] = i3;
   if (i2 >>> 0 < (HEAP32[i1 + 8 >> 2] | 0) >>> 0) {
    HEAP32[i5 >> 2] = i3;
    i2 = (HEAP32[i4 >> 2] | 0) + 4 | 0;
    HEAP32[i4 >> 2] = i2;
   } else {
    __ZNSt3__16vectorIPcNS_9allocatorIS1_EEE21__push_back_slow_pathIS1_EEvOT_(i1, i6);
    i2 = HEAP32[i4 >> 2] | 0;
   }
   i3 = i1 + 12 | 0;
   HEAP32[i3 >> 2] = 0;
   i1 = 0;
  }
  i8 = (HEAP32[i2 + -4 >> 2] | 0) + i1 | 0;
  HEAP32[i3 >> 2] = i1 + 24;
  HEAP32[i8 >> 2] = 4;
  i1 = i8 + 4 | 0;
  HEAP32[i1 >> 2] = 0;
  HEAP32[i1 + 4 >> 2] = 0;
  HEAP32[i1 + 8 >> 2] = 0;
  HEAP32[i1 + 12 >> 2] = 0;
  HEAP32[i1 >> 2] = 5;
  i1 = i8;
 } else {
  i5 = i1 + 20 | 0;
  __ZNSt3__15mutex4lockEv(i5);
  L13 : while (1) {
   i3 = i1 + 16 | 0;
   i4 = i1 + 48 | 0;
   while (1) {
    if ((i7 | 0) == (HEAP32[i3 >> 2] | 0)) break L13;
    i2 = HEAP32[i4 >> 2] | 0;
    if (i2 | 0) {
     i1 = i2;
     continue L13;
    }
    i8 = __Znwj(52) | 0;
    __ZN10MixedArenaC2Ev(i8);
    HEAP32[i4 >> 2] = i8;
   }
  }
  i1 = __ZN10MixedArena5allocIN4wasm5BreakEEEPT_v(i1) | 0;
  __ZNSt3__15mutex6unlockEv(i5);
 }
 STACKTOP = i9;
 return i1 | 0;
}

function __ZN10MixedArena5allocIN4wasm12CallIndirectEEEPT_v(i1) {
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0;
 i9 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i6 = i9;
 i7 = _pthread_self() | 0;
 if ((i7 | 0) == (HEAP32[i1 + 16 >> 2] | 0)) {
  i4 = i1 + 4 | 0;
  i5 = HEAP32[i4 >> 2] | 0;
  i2 = i5;
  if ((i5 | 0) != (HEAP32[i1 >> 2] | 0) ? (i3 = i1 + 12 | 0, i8 = HEAP32[i3 >> 2] | 0, (i8 + 32 | 0) >>> 0 <= 9999) : 0) i1 = i8; else {
   i3 = __Znaj(1e4) | 0;
   HEAP32[i6 >> 2] = i3;
   if (i2 >>> 0 < (HEAP32[i1 + 8 >> 2] | 0) >>> 0) {
    HEAP32[i5 >> 2] = i3;
    i2 = (HEAP32[i4 >> 2] | 0) + 4 | 0;
    HEAP32[i4 >> 2] = i2;
   } else {
    __ZNSt3__16vectorIPcNS_9allocatorIS1_EEE21__push_back_slow_pathIS1_EEvOT_(i1, i6);
    i2 = HEAP32[i4 >> 2] | 0;
   }
   i3 = i1 + 12 | 0;
   HEAP32[i3 >> 2] = 0;
   i1 = 0;
  }
  i8 = (HEAP32[i2 + -4 >> 2] | 0) + i1 | 0;
  HEAP32[i3 >> 2] = i1 + 32;
  HEAP32[i8 >> 2] = 8;
  i1 = i8 + 4 | 0;
  HEAP32[i1 >> 2] = 0;
  HEAP32[i1 + 4 >> 2] = 0;
  HEAP32[i1 + 8 >> 2] = 0;
  HEAP32[i1 + 12 >> 2] = 0;
  i1 = i8;
 } else {
  i5 = i1 + 20 | 0;
  __ZNSt3__15mutex4lockEv(i5);
  L13 : while (1) {
   i3 = i1 + 16 | 0;
   i4 = i1 + 48 | 0;
   while (1) {
    if ((i7 | 0) == (HEAP32[i3 >> 2] | 0)) break L13;
    i2 = HEAP32[i4 >> 2] | 0;
    if (i2 | 0) {
     i1 = i2;
     continue L13;
    }
    i8 = __Znwj(52) | 0;
    __ZN10MixedArenaC2Ev(i8);
    HEAP32[i4 >> 2] = i8;
   }
  }
  i1 = __ZN10MixedArena5allocIN4wasm12CallIndirectEEEPT_v(i1) | 0;
  __ZNSt3__15mutex6unlockEv(i5);
 }
 STACKTOP = i9;
 return i1 | 0;
}

function __ZNSt3__116__pad_and_outputIwNS_11char_traitsIwEEEENS_19ostreambuf_iteratorIT_T0_EES6_PKS4_S8_S8_RNS_8ios_baseES4_(i11, i8, i10, i2, i3, i7) {
 i11 = i11 | 0;
 i8 = i8 | 0;
 i10 = i10 | 0;
 i2 = i2 | 0;
 i3 = i3 | 0;
 i7 = i7 | 0;
 var i1 = 0, i4 = 0, i5 = 0, i6 = 0, i9 = 0, i12 = 0, i13 = 0;
 i12 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i9 = i12;
 i1 = HEAP32[i11 >> 2] | 0;
 L1 : do if (!i1) i1 = 0; else {
  i13 = i8;
  i5 = i2 - i13 >> 2;
  i6 = i3 + 12 | 0;
  i3 = HEAP32[i6 >> 2] | 0;
  i5 = (i3 | 0) > (i5 | 0) ? i3 - i5 | 0 : 0;
  i3 = i10;
  i13 = i3 - i13 | 0;
  i4 = i13 >> 2;
  if ((i13 | 0) > 0 ? (FUNCTION_TABLE_iiii[HEAP32[(HEAP32[i1 >> 2] | 0) + 48 >> 2] & 31](i1, i8, i4) | 0) != (i4 | 0) : 0) {
   HEAP32[i11 >> 2] = 0;
   i1 = 0;
   break;
  }
  do if ((i5 | 0) > 0) {
   __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6__initEjw(i9, i5, i7);
   if ((FUNCTION_TABLE_iiii[HEAP32[(HEAP32[i1 >> 2] | 0) + 48 >> 2] & 31](i1, (HEAP8[i9 >> 0] & 1) == 0 ? i9 + 4 | 0 : HEAP32[i9 + 8 >> 2] | 0, i5) | 0) == (i5 | 0)) {
    __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev(i9);
    break;
   } else {
    HEAP32[i11 >> 2] = 0;
    __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev(i9);
    i1 = 0;
    break L1;
   }
  } while (0);
  i13 = i2 - i3 | 0;
  i2 = i13 >> 2;
  if ((i13 | 0) > 0 ? (FUNCTION_TABLE_iiii[HEAP32[(HEAP32[i1 >> 2] | 0) + 48 >> 2] & 31](i1, i10, i2) | 0) != (i2 | 0) : 0) {
   HEAP32[i11 >> 2] = 0;
   i1 = 0;
   break;
  }
  HEAP32[i6 >> 2] = 0;
 } while (0);
 STACKTOP = i12;
 return i1 | 0;
}

function __ZN4wasm18ExpressionAnalyzer12isResultUsedENSt3__16vectorIPNS_10ExpressionENS1_9allocatorIS4_EEEEPNS_8FunctionE(i9, i7) {
 i9 = i9 | 0;
 i7 = i7 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i8 = 0, i10 = 0;
 i8 = ((HEAP32[i9 + 4 >> 2] | 0) - (HEAP32[i9 >> 2] | 0) >> 2) + -2 | 0;
 L1 : while (1) {
  if ((i8 | 0) <= -1) {
   i10 = 15;
   break;
  }
  i6 = HEAP32[i9 >> 2] | 0;
  i1 = HEAP32[i6 + (i8 << 2) >> 2] | 0;
  i6 = HEAP32[i6 + (i8 + 1 << 2) >> 2] | 0;
  if (__ZN4wasm10Expression2isINS_5BlockEEEbv(i1) | 0) {
   i3 = __ZN4wasm10Expression4castINS_5BlockEEEPT_v(i1) | 0;
   i2 = HEAP32[i3 + 16 >> 2] | 0;
   i3 = HEAP32[i3 + 12 >> 2] | 0;
   i1 = (i2 - i3 >> 2) + -1 | 0;
   i4 = 0;
   while (1) {
    if (i4 >>> 0 >= i1 >>> 0) break;
    if ((HEAP32[i3 + (i4 << 2) >> 2] | 0) == (i6 | 0)) {
     i5 = 0;
     break L1;
    } else i4 = i4 + 1 | 0;
   }
   if ((HEAP32[i2 + -4 >> 2] | 0) != (i6 | 0)) {
    i10 = 8;
    break;
   }
  } else {
   if ((HEAP32[i1 >> 2] | 0) != 2) {
    i5 = 1;
    break;
   }
   i1 = __ZN4wasm10Expression4castINS_2IfEEEPT_v(i1) | 0;
   i2 = HEAP32[i1 + 16 >> 2] | 0;
   if (!i2) {
    i5 = 0;
    break;
   }
   if ((i6 | 0) == (HEAP32[i1 + 8 >> 2] | 0)) {
    i5 = 1;
    break;
   }
   if (!((i6 | 0) == (i2 | 0) ? 1 : (i6 | 0) == (HEAP32[i1 + 12 >> 2] | 0))) {
    i10 = 13;
    break;
   }
  }
  i8 = i8 + -1 | 0;
 }
 if ((i10 | 0) == 8) ___assert_fail(22775, 22747, 132, 22803); else if ((i10 | 0) == 13) ___assert_fail(22816, 22747, 138, 22803); else if ((i10 | 0) == 15) i5 = (HEAP32[i7 + 4 >> 2] | 0) != 0;
 return i5 | 0;
}

function __ZN10MixedArena5allocIN4wasm7ElementEEEPT_v(i1) {
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0;
 i9 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i6 = i9;
 i7 = _pthread_self() | 0;
 if ((i7 | 0) == (HEAP32[i1 + 16 >> 2] | 0)) {
  i4 = i1 + 4 | 0;
  i5 = HEAP32[i4 >> 2] | 0;
  i2 = i5;
  if ((i5 | 0) != (HEAP32[i1 >> 2] | 0) ? (i3 = i1 + 12 | 0, i8 = HEAP32[i3 >> 2] | 0, (i8 + 24 | 0) >>> 0 <= 9999) : 0) i1 = i8; else {
   i3 = __Znaj(1e4) | 0;
   HEAP32[i6 >> 2] = i3;
   if (i2 >>> 0 < (HEAP32[i1 + 8 >> 2] | 0) >>> 0) {
    HEAP32[i5 >> 2] = i3;
    i2 = (HEAP32[i4 >> 2] | 0) + 4 | 0;
    HEAP32[i4 >> 2] = i2;
   } else {
    __ZNSt3__16vectorIPcNS_9allocatorIS1_EEE21__push_back_slow_pathIS1_EEvOT_(i1, i6);
    i2 = HEAP32[i4 >> 2] | 0;
   }
   i3 = i1 + 12 | 0;
   HEAP32[i3 >> 2] = 0;
   i1 = 0;
  }
  i8 = (HEAP32[i2 + -4 >> 2] | 0) + i1 | 0;
  HEAP32[i3 >> 2] = i1 + 24;
  HEAP8[i8 >> 0] = 1;
  i1 = i8 + 4 | 0;
  HEAP32[i1 >> 2] = 0;
  HEAP32[i1 + 4 >> 2] = 0;
  HEAP32[i1 + 8 >> 2] = 0;
  HEAP32[i1 + 12 >> 2] = 0;
  i1 = i8;
 } else {
  i5 = i1 + 20 | 0;
  __ZNSt3__15mutex4lockEv(i5);
  L13 : while (1) {
   i3 = i1 + 16 | 0;
   i4 = i1 + 48 | 0;
   while (1) {
    if ((i7 | 0) == (HEAP32[i3 >> 2] | 0)) break L13;
    i2 = HEAP32[i4 >> 2] | 0;
    if (i2 | 0) {
     i1 = i2;
     continue L13;
    }
    i8 = __Znwj(52) | 0;
    __ZN10MixedArenaC2Ev(i8);
    HEAP32[i4 >> 2] = i8;
   }
  }
  i1 = __ZN10MixedArena5allocIN4wasm7ElementEEEPT_v(i1) | 0;
  __ZNSt3__15mutex6unlockEv(i5);
 }
 STACKTOP = i9;
 return i1 | 0;
}

function __ZN10MixedArena5allocIN4wasm12FunctionTypeEEEPT_v(i1) {
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0;
 i9 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i6 = i9;
 i7 = _pthread_self() | 0;
 if ((i7 | 0) == (HEAP32[i1 + 16 >> 2] | 0)) {
  i4 = i1 + 4 | 0;
  i5 = HEAP32[i4 >> 2] | 0;
  i2 = i5;
  if ((i5 | 0) != (HEAP32[i1 >> 2] | 0) ? (i3 = i1 + 12 | 0, i8 = HEAP32[i3 >> 2] | 0, (i8 + 24 | 0) >>> 0 <= 9999) : 0) i1 = i8; else {
   i3 = __Znaj(1e4) | 0;
   HEAP32[i6 >> 2] = i3;
   if (i2 >>> 0 < (HEAP32[i1 + 8 >> 2] | 0) >>> 0) {
    HEAP32[i5 >> 2] = i3;
    i2 = (HEAP32[i4 >> 2] | 0) + 4 | 0;
    HEAP32[i4 >> 2] = i2;
   } else {
    __ZNSt3__16vectorIPcNS_9allocatorIS1_EEE21__push_back_slow_pathIS1_EEvOT_(i1, i6);
    i2 = HEAP32[i4 >> 2] | 0;
   }
   i3 = i1 + 12 | 0;
   HEAP32[i3 >> 2] = 0;
   i1 = 0;
  }
  i8 = (HEAP32[i2 + -4 >> 2] | 0) + i1 | 0;
  HEAP32[i3 >> 2] = i1 + 24;
  HEAP32[i8 >> 2] = 0;
  HEAP32[i8 + 4 >> 2] = 0;
  HEAP32[i8 + 8 >> 2] = 0;
  HEAP32[i8 + 12 >> 2] = 0;
  HEAP32[i8 + 16 >> 2] = 0;
  i1 = i8;
 } else {
  i5 = i1 + 20 | 0;
  __ZNSt3__15mutex4lockEv(i5);
  L13 : while (1) {
   i3 = i1 + 16 | 0;
   i4 = i1 + 48 | 0;
   while (1) {
    if ((i7 | 0) == (HEAP32[i3 >> 2] | 0)) break L13;
    i2 = HEAP32[i4 >> 2] | 0;
    if (i2 | 0) {
     i1 = i2;
     continue L13;
    }
    i8 = __Znwj(52) | 0;
    __ZN10MixedArenaC2Ev(i8);
    HEAP32[i4 >> 2] = i8;
   }
  }
  i1 = __ZN10MixedArena5allocIN4wasm12FunctionTypeEEEPT_v(i1) | 0;
  __ZNSt3__15mutex6unlockEv(i5);
 }
 STACKTOP = i9;
 return i1 | 0;
}

function __ZN10MixedArena5allocIN4wasm5ConstEEEPT_v(i1) {
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0;
 i9 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i6 = i9;
 i7 = _pthread_self() | 0;
 if ((i7 | 0) == (HEAP32[i1 + 16 >> 2] | 0)) {
  i4 = i1 + 4 | 0;
  i5 = HEAP32[i4 >> 2] | 0;
  i2 = i5;
  if ((i5 | 0) != (HEAP32[i1 >> 2] | 0) ? (i3 = i1 + 12 | 0, i8 = HEAP32[i3 >> 2] | 0, (i8 + 24 | 0) >>> 0 <= 9999) : 0) i1 = i8; else {
   i3 = __Znaj(1e4) | 0;
   HEAP32[i6 >> 2] = i3;
   if (i2 >>> 0 < (HEAP32[i1 + 8 >> 2] | 0) >>> 0) {
    HEAP32[i5 >> 2] = i3;
    i2 = (HEAP32[i4 >> 2] | 0) + 4 | 0;
    HEAP32[i4 >> 2] = i2;
   } else {
    __ZNSt3__16vectorIPcNS_9allocatorIS1_EEE21__push_back_slow_pathIS1_EEvOT_(i1, i6);
    i2 = HEAP32[i4 >> 2] | 0;
   }
   i3 = i1 + 12 | 0;
   HEAP32[i3 >> 2] = 0;
   i1 = 0;
  }
  i8 = (HEAP32[i2 + -4 >> 2] | 0) + i1 | 0;
  HEAP32[i3 >> 2] = i1 + 24;
  HEAP32[i8 >> 2] = 13;
  HEAP32[i8 + 4 >> 2] = 0;
  HEAP32[i8 + 8 >> 2] = 0;
  i1 = i8 + 16 | 0;
  HEAP32[i1 >> 2] = 0;
  HEAP32[i1 + 4 >> 2] = 0;
  i1 = i8;
 } else {
  i5 = i1 + 20 | 0;
  __ZNSt3__15mutex4lockEv(i5);
  L13 : while (1) {
   i3 = i1 + 16 | 0;
   i4 = i1 + 48 | 0;
   while (1) {
    if ((i7 | 0) == (HEAP32[i3 >> 2] | 0)) break L13;
    i2 = HEAP32[i4 >> 2] | 0;
    if (i2 | 0) {
     i1 = i2;
     continue L13;
    }
    i8 = __Znwj(52) | 0;
    __ZN10MixedArenaC2Ev(i8);
    HEAP32[i4 >> 2] = i8;
   }
  }
  i1 = __ZN10MixedArena5allocIN4wasm5ConstEEEPT_v(i1) | 0;
  __ZNSt3__15mutex6unlockEv(i5);
 }
 STACKTOP = i9;
 return i1 | 0;
}

function __ZN4wasm22ShellExternalInterface10callImportEPNS_6ImportERNSt3__16vectorINS_7LiteralENS3_9allocatorIS5_EEEE(i7, i1, i2, i5) {
 i7 = i7 | 0;
 i1 = i1 | 0;
 i2 = i2 | 0;
 i5 = i5 | 0;
 var i3 = 0, i4 = 0, i6 = 0;
 i6 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i3 = i6 + 16 | 0;
 i4 = i6;
 i1 = HEAP32[i2 + 4 >> 2] | 0;
 if ((i1 | 0) == (HEAP32[9047] | 0) ? (HEAP32[i2 + 8 >> 2] | 0) == (HEAP32[9048] | 0) : 0) {
  i2 = HEAP32[i5 + 4 >> 2] | 0;
  i1 = HEAP32[i5 >> 2] | 0;
  while (1) {
   if ((i1 | 0) == (i2 | 0)) break;
   _memmove(i4 | 0, i1 | 0, 16) | 0;
   HEAP32[i3 >> 2] = HEAP32[i4 >> 2];
   HEAP32[i3 + 4 >> 2] = HEAP32[i4 + 4 >> 2];
   HEAP32[i3 + 8 >> 2] = HEAP32[i4 + 8 >> 2];
   HEAP32[i3 + 12 >> 2] = HEAP32[i4 + 12 >> 2];
   __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_c(__ZN4wasmlsERNSt3__113basic_ostreamIcNS0_11char_traitsIcEEEENS_7LiteralE(37336, i3) | 0, 10) | 0;
   i1 = i1 + 16 | 0;
  }
  HEAP32[i7 >> 2] = 0;
  i7 = i7 + 8 | 0;
  HEAP32[i7 >> 2] = 0;
  HEAP32[i7 + 4 >> 2] = 0;
  STACKTOP = i6;
  return;
 }
 if ((i1 | 0) == (HEAP32[9030] | 0) ? (HEAP32[i2 + 8 >> 2] | 0) == (HEAP32[9050] | 0) : 0) {
  __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(37336, 15494) | 0;
  ___cxa_throw(___cxa_allocate_exception(1) | 0, 120, 0);
 }
 i7 = __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(37336, 15525) | 0;
 __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(__ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(i7, HEAP32[i2 >> 2] | 0) | 0, 18047) | 0;
 _abort();
}

function __ZN4wasm16PrintSExpression10visitBreakEPNS_5BreakE(i8, i5) {
 i8 = i8 | 0;
 i5 = i5 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i6 = 0, i7 = 0, i9 = 0;
 i9 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i1 = i9 + 8 | 0;
 i2 = i9 + 4 | 0;
 i3 = i9;
 i7 = i5 + 16 | 0;
 i4 = HEAP32[i8 >> 2] | 0;
 do if (!(HEAP32[i7 >> 2] | 0)) {
  i4 = __Z12printOpeningRNSt3__113basic_ostreamIcNS_11char_traitsIcEEEEPKcb(i4, 18302, 0) | 0;
  HEAP32[i3 >> 2] = HEAP32[i5 + 8 >> 2];
  HEAP32[i1 >> 2] = HEAP32[i3 >> 2];
  __ZN4wasmlsERNSt3__113basic_ostreamIcNS0_11char_traitsIcEEEENS_4NameE(i4, i1) | 0;
  i1 = i5 + 12 | 0;
  i5 = HEAP32[i1 >> 2] | 0;
  if (i5 | 0 ? (HEAP32[i5 >> 2] | 0) != 19 : 0) {
   __ZN4wasm16PrintSExpression9incIndentEv(i8);
   i6 = 7;
   break;
  }
  __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(HEAP32[i8 >> 2] | 0, 33621) | 0;
 } else {
  i6 = __Z12printOpeningRNSt3__113basic_ostreamIcNS_11char_traitsIcEEEEPKcb(i4, 18295, 0) | 0;
  HEAP32[i2 >> 2] = HEAP32[i5 + 8 >> 2];
  HEAP32[i1 >> 2] = HEAP32[i2 >> 2];
  __ZN4wasmlsERNSt3__113basic_ostreamIcNS0_11char_traitsIcEEEENS_4NameE(i6, i1) | 0;
  __ZN4wasm16PrintSExpression9incIndentEv(i8);
  i1 = i5 + 12 | 0;
  i6 = 7;
 } while (0);
 if ((i6 | 0) == 7) {
  i1 = HEAP32[i1 >> 2] | 0;
  if (i1 | 0 ? (HEAP32[i1 >> 2] | 0) != 19 : 0) __ZN4wasm16PrintSExpression13printFullLineEPNS_10ExpressionE(i8, i1);
  i1 = HEAP32[i7 >> 2] | 0;
  if (i1 | 0) __ZN4wasm16PrintSExpression13printFullLineEPNS_10ExpressionE(i8, i1);
  __ZN4wasm16PrintSExpression9decIndentEv(i8);
 }
 STACKTOP = i9;
 return;
}

function __ZNK10__cxxabiv121__vmi_class_type_info16search_above_dstEPNS_19__dynamic_cast_infoEPKvS4_ib(i1, i13, i12, i11, i14, i15) {
 i1 = i1 | 0;
 i13 = i13 | 0;
 i12 = i12 | 0;
 i11 = i11 | 0;
 i14 = i14 | 0;
 i15 = i15 | 0;
 var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0;
 if ((i1 | 0) == (HEAP32[i13 + 8 >> 2] | 0)) __ZNK10__cxxabiv117__class_type_info29process_static_type_above_dstEPNS_19__dynamic_cast_infoEPKvS4_i(0, i13, i12, i11, i14); else {
  i7 = i13 + 52 | 0;
  i10 = HEAP16[i7 >> 1] | 0;
  i8 = i10 & 255;
  i9 = i13 + 53 | 0;
  i10 = (i10 & 65535) >>> 8 & 255;
  i6 = HEAP32[i1 + 12 >> 2] | 0;
  i3 = i1 + 16 + (i6 << 3) | 0;
  HEAP8[i7 >> 0] = 0;
  HEAP8[i9 >> 0] = 0;
  __ZNK10__cxxabiv122__base_class_type_info16search_above_dstEPNS_19__dynamic_cast_infoEPKvS4_ib(i1 + 16 | 0, i13, i12, i11, i14, i15);
  L4 : do if ((i6 | 0) > 1) {
   i4 = i13 + 24 | 0;
   i5 = i1 + 8 | 0;
   i6 = i13 + 54 | 0;
   i2 = i1 + 24 | 0;
   do {
    if (HEAP8[i6 >> 0] | 0) break L4;
    i1 = HEAP16[i7 >> 1] | 0;
    if (!((i1 & 255) << 24 >> 24)) {
     if ((i1 & 65535) >= 256 ? (HEAP32[i5 >> 2] & 1 | 0) == 0 : 0) break L4;
    } else {
     if ((HEAP32[i4 >> 2] | 0) == 1) break L4;
     if (!(HEAP32[i5 >> 2] & 2)) break L4;
    }
    HEAP8[i7 >> 0] = 0;
    HEAP8[i9 >> 0] = 0;
    __ZNK10__cxxabiv122__base_class_type_info16search_above_dstEPNS_19__dynamic_cast_infoEPKvS4_ib(i2, i13, i12, i11, i14, i15);
    i2 = i2 + 8 | 0;
   } while (i2 >>> 0 < i3 >>> 0);
  } while (0);
  HEAP8[i7 >> 0] = i8;
  HEAP8[i9 >> 0] = i10;
 }
 return;
}

function ___dynamic_cast(i2, i3, i12, i1) {
 i2 = i2 | 0;
 i3 = i3 | 0;
 i12 = i12 | 0;
 i1 = i1 | 0;
 var i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i13 = 0, i14 = 0;
 i14 = STACKTOP;
 STACKTOP = STACKTOP + 64 | 0;
 i13 = i14;
 i11 = HEAP32[i2 >> 2] | 0;
 i10 = i2 + (HEAP32[i11 + -8 >> 2] | 0) | 0;
 i11 = HEAP32[i11 + -4 >> 2] | 0;
 HEAP32[i13 >> 2] = i12;
 HEAP32[i13 + 4 >> 2] = i2;
 HEAP32[i13 + 8 >> 2] = i3;
 HEAP32[i13 + 12 >> 2] = i1;
 i7 = i13 + 16 | 0;
 i1 = i13 + 20 | 0;
 i2 = i13 + 24 | 0;
 i3 = i13 + 28 | 0;
 i4 = i13 + 32 | 0;
 i5 = i13 + 40 | 0;
 i6 = (i11 | 0) == (i12 | 0);
 i8 = i7;
 i9 = i8 + 36 | 0;
 do {
  HEAP32[i8 >> 2] = 0;
  i8 = i8 + 4 | 0;
 } while ((i8 | 0) < (i9 | 0));
 HEAP16[i7 + 36 >> 1] = 0;
 HEAP8[i7 + 38 >> 0] = 0;
 L1 : do if (i6) {
  HEAP32[i13 + 48 >> 2] = 1;
  FUNCTION_TABLE_viiiiii[HEAP32[(HEAP32[i12 >> 2] | 0) + 20 >> 2] & 15](i12, i13, i10, i10, 1, 0);
  i1 = (HEAP32[i2 >> 2] | 0) == 1 ? i10 : 0;
 } else {
  FUNCTION_TABLE_viiiii[HEAP32[(HEAP32[i11 >> 2] | 0) + 24 >> 2] & 3](i11, i13, i10, 1, 0);
  switch (HEAP32[i13 + 36 >> 2] | 0) {
  case 0:
   {
    i1 = (HEAP32[i5 >> 2] | 0) == 1 & (HEAP32[i3 >> 2] | 0) == 1 & (HEAP32[i4 >> 2] | 0) == 1 ? HEAP32[i1 >> 2] | 0 : 0;
    break L1;
   }
  case 1:
   break;
  default:
   {
    i1 = 0;
    break L1;
   }
  }
  if ((HEAP32[i2 >> 2] | 0) != 1 ? !((HEAP32[i5 >> 2] | 0) == 0 & (HEAP32[i3 >> 2] | 0) == 1 & (HEAP32[i4 >> 2] | 0) == 1) : 0) {
   i1 = 0;
   break;
  }
  i1 = HEAP32[i7 >> 2] | 0;
 } while (0);
 STACKTOP = i14;
 return i1 | 0;
}

function __ZNSt3__115basic_stringbufIcNS_11char_traitsIcEENS_9allocatorIcEEE3strERKNS_12basic_stringIcS2_S4_EE(i8, i1) {
 i8 = i8 | 0;
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0;
 i6 = i8 + 32 | 0;
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEaSERKS5_(i6, i1) | 0;
 i5 = i8 + 44 | 0;
 HEAP32[i5 >> 2] = 0;
 i7 = i8 + 48 | 0;
 i4 = HEAP32[i7 >> 2] | 0;
 if (i4 & 8 | 0) {
  i1 = HEAP8[i6 >> 0] | 0;
  if (!(i1 & 1)) {
   i1 = ((i1 & 255) >>> 1) + (i6 + 1) | 0;
   HEAP32[i5 >> 2] = i1;
   i2 = i6 + 1 | 0;
   i3 = i6 + 1 | 0;
  } else {
   i3 = HEAP32[i8 + 40 >> 2] | 0;
   i1 = i3 + (HEAP32[i8 + 36 >> 2] | 0) | 0;
   HEAP32[i5 >> 2] = i1;
   i2 = i3;
  }
  HEAP32[i8 + 8 >> 2] = i2;
  HEAP32[i8 + 12 >> 2] = i3;
  HEAP32[i8 + 16 >> 2] = i1;
 }
 if (i4 & 16 | 0) {
  i1 = HEAP8[i6 >> 0] | 0;
  if (!(i1 & 1)) {
   i4 = (i1 & 255) >>> 1;
   HEAP32[i5 >> 2] = i6 + 1 + i4;
   i1 = 10;
   i5 = i4;
  } else {
   i4 = HEAP32[i8 + 36 >> 2] | 0;
   HEAP32[i5 >> 2] = (HEAP32[i8 + 40 >> 2] | 0) + i4;
   i1 = (HEAP32[i6 >> 2] & -2) + -1 | 0;
   i5 = i4;
  }
  __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6resizeEjc(i6, i1, 0);
  i1 = HEAP8[i6 >> 0] | 0;
  if (!(i1 & 1)) {
   i4 = i6 + 1 | 0;
   i3 = (i1 & 255) >>> 1;
   i2 = i6 + 1 | 0;
  } else {
   i2 = HEAP32[i8 + 40 >> 2] | 0;
   i4 = i2;
   i3 = HEAP32[i8 + 36 >> 2] | 0;
  }
  i1 = i8 + 24 | 0;
  HEAP32[i1 >> 2] = i2;
  HEAP32[i8 + 20 >> 2] = i2;
  HEAP32[i8 + 28 >> 2] = i4 + i3;
  if (HEAP32[i7 >> 2] & 3 | 0) HEAP32[i1 >> 2] = i2 + i5;
 }
 return;
}

function _vfprintf(i15, i11, i1) {
 i15 = i15 | 0;
 i11 = i11 | 0;
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i12 = 0, i13 = 0, i14 = 0, i16 = 0;
 i16 = STACKTOP;
 STACKTOP = STACKTOP + 224 | 0;
 i10 = i16 + 120 | 0;
 i14 = i16 + 80 | 0;
 i13 = i16;
 i12 = i16 + 136 | 0;
 i2 = i14;
 i3 = i2 + 40 | 0;
 do {
  HEAP32[i2 >> 2] = 0;
  i2 = i2 + 4 | 0;
 } while ((i2 | 0) < (i3 | 0));
 HEAP32[i10 >> 2] = HEAP32[i1 >> 2];
 if ((_printf_core(0, i11, i10, i13, i14) | 0) < 0) i1 = -1; else {
  if ((HEAP32[i15 + 76 >> 2] | 0) > -1) i8 = ___lockfile(i15) | 0; else i8 = 0;
  i1 = HEAP32[i15 >> 2] | 0;
  i9 = i1 & 32;
  if ((HEAP8[i15 + 74 >> 0] | 0) < 1) HEAP32[i15 >> 2] = i1 & -33;
  i1 = i15 + 48 | 0;
  if (!(HEAP32[i1 >> 2] | 0)) {
   i3 = i15 + 44 | 0;
   i4 = HEAP32[i3 >> 2] | 0;
   HEAP32[i3 >> 2] = i12;
   i5 = i15 + 28 | 0;
   HEAP32[i5 >> 2] = i12;
   i6 = i15 + 20 | 0;
   HEAP32[i6 >> 2] = i12;
   HEAP32[i1 >> 2] = 80;
   i7 = i15 + 16 | 0;
   HEAP32[i7 >> 2] = i12 + 80;
   i2 = _printf_core(i15, i11, i10, i13, i14) | 0;
   if (i4) {
    FUNCTION_TABLE_iiii[HEAP32[i15 + 36 >> 2] & 31](i15, 0, 0) | 0;
    i2 = (HEAP32[i6 >> 2] | 0) == 0 ? -1 : i2;
    HEAP32[i3 >> 2] = i4;
    HEAP32[i1 >> 2] = 0;
    HEAP32[i7 >> 2] = 0;
    HEAP32[i5 >> 2] = 0;
    HEAP32[i6 >> 2] = 0;
   }
  } else i2 = _printf_core(i15, i11, i10, i13, i14) | 0;
  i1 = HEAP32[i15 >> 2] | 0;
  HEAP32[i15 >> 2] = i1 | i9;
  if (i8 | 0) ___unlockfile(i15);
  i1 = (i1 & 32 | 0) == 0 ? i2 : -1;
 }
 STACKTOP = i16;
 return i1 | 0;
}

function __ZNSt3__116__pad_and_outputIcNS_11char_traitsIcEEEENS_19ostreambuf_iteratorIT_T0_EES6_PKS4_S8_S8_RNS_8ios_baseES4_(i11, i8, i10, i2, i3, i7) {
 i11 = i11 | 0;
 i8 = i8 | 0;
 i10 = i10 | 0;
 i2 = i2 | 0;
 i3 = i3 | 0;
 i7 = i7 | 0;
 var i1 = 0, i4 = 0, i5 = 0, i6 = 0, i9 = 0, i12 = 0, i13 = 0;
 i12 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i9 = i12;
 i1 = HEAP32[i11 >> 2] | 0;
 L1 : do if (!i1) i1 = 0; else {
  i13 = i8;
  i5 = i2 - i13 | 0;
  i6 = i3 + 12 | 0;
  i4 = HEAP32[i6 >> 2] | 0;
  i5 = (i4 | 0) > (i5 | 0) ? i4 - i5 | 0 : 0;
  i4 = i10;
  i3 = i4 - i13 | 0;
  if ((i3 | 0) > 0 ? (FUNCTION_TABLE_iiii[HEAP32[(HEAP32[i1 >> 2] | 0) + 48 >> 2] & 31](i1, i8, i3) | 0) != (i3 | 0) : 0) {
   HEAP32[i11 >> 2] = 0;
   i1 = 0;
   break;
  }
  do if ((i5 | 0) > 0) {
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6__initEjc(i9, i5, i7);
   if ((FUNCTION_TABLE_iiii[HEAP32[(HEAP32[i1 >> 2] | 0) + 48 >> 2] & 31](i1, (HEAP8[i9 >> 0] & 1) == 0 ? i9 + 1 | 0 : HEAP32[i9 + 8 >> 2] | 0, i5) | 0) == (i5 | 0)) {
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i9);
    break;
   } else {
    HEAP32[i11 >> 2] = 0;
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i9);
    i1 = 0;
    break L1;
   }
  } while (0);
  i2 = i2 - i4 | 0;
  if ((i2 | 0) > 0 ? (FUNCTION_TABLE_iiii[HEAP32[(HEAP32[i1 >> 2] | 0) + 48 >> 2] & 31](i1, i10, i2) | 0) != (i2 | 0) : 0) {
   HEAP32[i11 >> 2] = 0;
   i1 = 0;
   break;
  }
  HEAP32[i6 >> 2] = 0;
 } while (0);
 STACKTOP = i12;
 return i1 | 0;
}

function __ZNSt3__111__stdoutbufIwE8overflowEj(i3, i13) {
 i3 = i3 | 0;
 i13 = i13 | 0;
 var i1 = 0, i2 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i14 = 0;
 i14 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i11 = i14 + 16 | 0;
 i1 = i14 + 8 | 0;
 i10 = i14 + 4 | 0;
 i9 = i14;
 i12 = (i13 | 0) == -1;
 do if (!i12) {
  HEAP32[i1 >> 2] = i13;
  if (HEAP8[i3 + 44 >> 0] | 0) if ((_fwrite(i1, 4, 1, HEAP32[i3 + 32 >> 2] | 0) | 0) == 1) {
   i2 = 14;
   break;
  } else {
   i1 = -1;
   break;
  }
  HEAP32[i10 >> 2] = i11;
  i7 = i1 + 4 | 0;
  i8 = i3 + 36 | 0;
  i4 = i3 + 40 | 0;
  i5 = i11 + 8 | 0;
  i6 = i11;
  i3 = i3 + 32 | 0;
  while (1) {
   i2 = HEAP32[i8 >> 2] | 0;
   i2 = FUNCTION_TABLE_iiiiiiiii[HEAP32[(HEAP32[i2 >> 2] | 0) + 12 >> 2] & 15](i2, HEAP32[i4 >> 2] | 0, i1, i7, i9, i11, i5, i10) | 0;
   if ((HEAP32[i9 >> 2] | 0) == (i1 | 0)) {
    i2 = 13;
    break;
   }
   if ((i2 | 0) == 3) {
    i2 = 7;
    break;
   }
   if ((i2 | 1 | 0) != 1) {
    i2 = 13;
    break;
   }
   i1 = (HEAP32[i10 >> 2] | 0) - i6 | 0;
   if ((_fwrite(i11, 1, i1, HEAP32[i3 >> 2] | 0) | 0) != (i1 | 0)) {
    i2 = 13;
    break;
   }
   if ((i2 | 0) == 1) i1 = HEAP32[i9 >> 2] | 0; else {
    i2 = 12;
    break;
   }
  }
  if ((i2 | 0) == 7) if ((_fwrite(i1, 1, 1, HEAP32[i3 >> 2] | 0) | 0) == 1) i2 = 12; else i2 = 13;
  if ((i2 | 0) == 12) {
   i2 = 14;
   break;
  } else if ((i2 | 0) == 13) {
   i1 = -1;
   break;
  }
 } else i2 = 14; while (0);
 if ((i2 | 0) == 14) i1 = i12 ? 0 : i13;
 STACKTOP = i14;
 return i1 | 0;
}

function __ZNSt3__111__stdoutbufIcE8overflowEi(i3, i13) {
 i3 = i3 | 0;
 i13 = i13 | 0;
 var i1 = 0, i2 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i14 = 0;
 i14 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i11 = i14 + 16 | 0;
 i1 = i14 + 8 | 0;
 i10 = i14 + 4 | 0;
 i9 = i14;
 i12 = (i13 | 0) == -1;
 do if (!i12) {
  HEAP8[i1 >> 0] = i13;
  if (HEAP8[i3 + 44 >> 0] | 0) if ((_fwrite(i1, 1, 1, HEAP32[i3 + 32 >> 2] | 0) | 0) == 1) {
   i2 = 14;
   break;
  } else {
   i1 = -1;
   break;
  }
  HEAP32[i10 >> 2] = i11;
  i8 = i1 + 1 | 0;
  i4 = i3 + 36 | 0;
  i5 = i3 + 40 | 0;
  i6 = i11 + 8 | 0;
  i7 = i11;
  i3 = i3 + 32 | 0;
  while (1) {
   i2 = HEAP32[i4 >> 2] | 0;
   i2 = FUNCTION_TABLE_iiiiiiiii[HEAP32[(HEAP32[i2 >> 2] | 0) + 12 >> 2] & 15](i2, HEAP32[i5 >> 2] | 0, i1, i8, i9, i11, i6, i10) | 0;
   if ((HEAP32[i9 >> 2] | 0) == (i1 | 0)) {
    i2 = 13;
    break;
   }
   if ((i2 | 0) == 3) {
    i2 = 7;
    break;
   }
   if ((i2 | 1 | 0) != 1) {
    i2 = 13;
    break;
   }
   i1 = (HEAP32[i10 >> 2] | 0) - i7 | 0;
   if ((_fwrite(i11, 1, i1, HEAP32[i3 >> 2] | 0) | 0) != (i1 | 0)) {
    i2 = 13;
    break;
   }
   if ((i2 | 0) == 1) i1 = HEAP32[i9 >> 2] | 0; else {
    i2 = 12;
    break;
   }
  }
  if ((i2 | 0) == 7) if ((_fwrite(i1, 1, 1, HEAP32[i3 >> 2] | 0) | 0) == 1) i2 = 12; else i2 = 13;
  if ((i2 | 0) == 12) {
   i2 = 14;
   break;
  } else if ((i2 | 0) == 13) {
   i1 = -1;
   break;
  }
 } else i2 = 14; while (0);
 if ((i2 | 0) == 14) i1 = i12 ? 0 : i13;
 STACKTOP = i14;
 return i1 | 0;
}

function _mbrtowc(i4, i3, i7, i1) {
 i4 = i4 | 0;
 i3 = i3 | 0;
 i7 = i7 | 0;
 i1 = i1 | 0;
 var i2 = 0, i5 = 0, i6 = 0, i8 = 0, i9 = 0, i10 = 0;
 i9 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i2 = i9;
 i6 = (i1 | 0) == 0 ? 36736 : i1;
 i1 = HEAP32[i6 >> 2] | 0;
 L1 : do if (!i3) if (!i1) i1 = 0; else i8 = 15; else {
  i5 = (i4 | 0) == 0 ? i2 : i4;
  if (!i7) i1 = -2; else {
   if (!i1) {
    i1 = HEAP8[i3 >> 0] | 0;
    i2 = i1 & 255;
    if (i1 << 24 >> 24 > -1) {
     HEAP32[i5 >> 2] = i2;
     i1 = i1 << 24 >> 24 != 0 & 1;
     break;
    }
    i1 = i2 + -194 | 0;
    if (i1 >>> 0 > 50) {
     i8 = 15;
     break;
    }
    i1 = HEAP32[4836 + (i1 << 2) >> 2] | 0;
    i2 = i7 + -1 | 0;
    if (i2) {
     i3 = i3 + 1 | 0;
     i8 = 9;
    }
   } else {
    i2 = i7;
    i8 = 9;
   }
   L11 : do if ((i8 | 0) == 9) {
    i4 = HEAP8[i3 >> 0] | 0;
    i10 = (i4 & 255) >>> 3;
    if ((i10 + -16 | i10 + (i1 >> 26)) >>> 0 > 7) {
     i8 = 15;
     break L1;
    }
    while (1) {
     i3 = i3 + 1 | 0;
     i1 = (i4 & 255) + -128 | i1 << 6;
     i2 = i2 + -1 | 0;
     if ((i1 | 0) >= 0) break;
     if (!i2) break L11;
     i4 = HEAP8[i3 >> 0] | 0;
     if ((i4 & -64) << 24 >> 24 != -128) {
      i8 = 15;
      break L1;
     }
    }
    HEAP32[i6 >> 2] = 0;
    HEAP32[i5 >> 2] = i1;
    i1 = i7 - i2 | 0;
    break L1;
   } while (0);
   HEAP32[i6 >> 2] = i1;
   i1 = -2;
  }
 } while (0);
 if ((i8 | 0) == 15) {
  HEAP32[i6 >> 2] = 0;
  i1 = ___errno_location() | 0;
  HEAP32[i1 >> 2] = 84;
  i1 = -1;
 }
 STACKTOP = i9;
 return i1 | 0;
}

function __ZZN4wasm14ModuleInstance12callFunctionEN6cashew7IStringERNSt3__16vectorINS_7LiteralENS3_9allocatorIS5_EEEEEN16ExpressionRunner9visitLoadEPNS_4LoadE(i2, i5, i3) {
 i2 = i2 | 0;
 i5 = i5 | 0;
 i3 = i3 | 0;
 var i1 = 0, i4 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0;
 i7 = STACKTOP;
 STACKTOP = STACKTOP + 64 | 0;
 i6 = i7 + 40 | 0;
 i4 = i7 + 16 | 0;
 i1 = i7;
 __ZN4wasm7VisitorIZNS_14ModuleInstance12callFunctionEN6cashew7IStringERNSt3__16vectorINS_7LiteralENS4_9allocatorIS6_EEEEE16ExpressionRunnerNS_4FlowEE5visitEPNS_10ExpressionE(i4, i5, HEAP32[i3 + 24 >> 2] | 0);
 if (!(HEAP32[i4 + 16 >> 2] | 0)) {
  i9 = HEAP32[i5 >> 2] | 0;
  i5 = HEAP32[i9 + 24 >> 2] | 0;
  i8 = HEAP32[(HEAP32[i5 >> 2] | 0) + 8 >> 2] | 0;
  HEAP32[i6 >> 2] = HEAP32[i4 >> 2];
  HEAP32[i6 + 4 >> 2] = HEAP32[i4 + 4 >> 2];
  HEAP32[i6 + 8 >> 2] = HEAP32[i4 + 8 >> 2];
  HEAP32[i6 + 12 >> 2] = HEAP32[i4 + 12 >> 2];
  i6 = __ZN4wasm14ModuleInstance15getFinalAddressINS_4LoadEEEjPT_NS_7LiteralE(i9, i3, i6) | 0;
  FUNCTION_TABLE_viiii[i8 & 15](i1, i5, i3, i6);
  HEAP32[i2 >> 2] = HEAP32[i1 >> 2];
  HEAP32[i2 + 4 >> 2] = HEAP32[i1 + 4 >> 2];
  HEAP32[i2 + 8 >> 2] = HEAP32[i1 + 8 >> 2];
  HEAP32[i2 + 12 >> 2] = HEAP32[i1 + 12 >> 2];
  HEAP32[i2 + 16 >> 2] = 0;
 } else {
  HEAP32[i2 >> 2] = HEAP32[i4 >> 2];
  HEAP32[i2 + 4 >> 2] = HEAP32[i4 + 4 >> 2];
  HEAP32[i2 + 8 >> 2] = HEAP32[i4 + 8 >> 2];
  HEAP32[i2 + 12 >> 2] = HEAP32[i4 + 12 >> 2];
  HEAP32[i2 + 16 >> 2] = HEAP32[i4 + 16 >> 2];
  HEAP32[i2 + 20 >> 2] = HEAP32[i4 + 20 >> 2];
 }
 STACKTOP = i7;
 return;
}

function __ZN10MixedArena5allocIN4wasm6ExportEEEPT_v(i1) {
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0;
 i9 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i6 = i9;
 i7 = _pthread_self() | 0;
 if ((i7 | 0) == (HEAP32[i1 + 16 >> 2] | 0)) {
  i4 = i1 + 4 | 0;
  i5 = HEAP32[i4 >> 2] | 0;
  i2 = i5;
  if ((i5 | 0) != (HEAP32[i1 >> 2] | 0) ? (i3 = i1 + 12 | 0, i8 = HEAP32[i3 >> 2] | 0, (i8 + 8 | 0) >>> 0 <= 9999) : 0) i1 = i8; else {
   i3 = __Znaj(1e4) | 0;
   HEAP32[i6 >> 2] = i3;
   if (i2 >>> 0 < (HEAP32[i1 + 8 >> 2] | 0) >>> 0) {
    HEAP32[i5 >> 2] = i3;
    i2 = (HEAP32[i4 >> 2] | 0) + 4 | 0;
    HEAP32[i4 >> 2] = i2;
   } else {
    __ZNSt3__16vectorIPcNS_9allocatorIS1_EEE21__push_back_slow_pathIS1_EEvOT_(i1, i6);
    i2 = HEAP32[i4 >> 2] | 0;
   }
   i3 = i1 + 12 | 0;
   HEAP32[i3 >> 2] = 0;
   i1 = 0;
  }
  i8 = (HEAP32[i2 + -4 >> 2] | 0) + i1 | 0;
  HEAP32[i3 >> 2] = i1 + 8;
  i1 = i8;
  HEAP32[i1 >> 2] = 0;
  HEAP32[i1 + 4 >> 2] = 0;
  HEAP32[i8 >> 2] = 0;
  HEAP32[i8 + 4 >> 2] = 0;
  i1 = i8;
 } else {
  i5 = i1 + 20 | 0;
  __ZNSt3__15mutex4lockEv(i5);
  L13 : while (1) {
   i3 = i1 + 16 | 0;
   i4 = i1 + 48 | 0;
   while (1) {
    if ((i7 | 0) == (HEAP32[i3 >> 2] | 0)) break L13;
    i2 = HEAP32[i4 >> 2] | 0;
    if (i2 | 0) {
     i1 = i2;
     continue L13;
    }
    i8 = __Znwj(52) | 0;
    __ZN10MixedArenaC2Ev(i8);
    HEAP32[i4 >> 2] = i8;
   }
  }
  i1 = __ZN10MixedArena5allocIN4wasm6ExportEEEPT_v(i1) | 0;
  __ZNSt3__15mutex6unlockEv(i5);
 }
 STACKTOP = i9;
 return i1 | 0;
}

function __ZNSt3__13mapINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEN4wasm12PassRegistry8PassInfoENS_4lessIS6_EENS4_INS_4pairIKS6_S9_EEEEE16__find_equal_keyERPNS_16__tree_node_baseIPvEERSD_(i1, i8, i3) {
 i1 = i1 | 0;
 i8 = i8 | 0;
 i3 = i3 | 0;
 var i2 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i9 = 0;
 i1 = i1 + 4 | 0;
 i2 = HEAP32[i1 >> 2] | 0;
 do if (i2) {
  i7 = HEAP8[i3 >> 0] | 0;
  i6 = (i7 & 1) == 0;
  i7 = i6 ? (i7 & 255) >>> 1 : HEAP32[i3 + 4 >> 2] | 0;
  i6 = i6 ? i3 + 1 | 0 : HEAP32[i3 + 8 >> 2] | 0;
  while (1) {
   i3 = i2 + 16 | 0;
   i1 = HEAP8[i3 >> 0] | 0;
   i4 = (i1 & 1) == 0;
   i1 = i4 ? (i1 & 255) >>> 1 : HEAP32[i2 + 20 >> 2] | 0;
   i3 = i4 ? i3 + 1 | 0 : HEAP32[i2 + 24 >> 2] | 0;
   i4 = i1 >>> 0 < i7 >>> 0;
   i9 = _memcmp(i6, i3, i4 ? i1 : i7) | 0;
   i5 = i7 >>> 0 < i1 >>> 0;
   if ((((i9 | 0) == 0 ? (i5 ? -2147483648 : 0) : i9) | 0) < 0) {
    i1 = HEAP32[i2 >> 2] | 0;
    if (!i1) {
     i1 = i2;
     i3 = 5;
     break;
    }
   } else {
    i9 = _memcmp(i3, i6, i5 ? i7 : i1) | 0;
    if ((((i9 | 0) == 0 ? (i4 ? -2147483648 : 0) : i9) | 0) >= 0) {
     i1 = i2;
     i3 = 10;
     break;
    }
    i1 = i2 + 4 | 0;
    i3 = HEAP32[i1 >> 2] | 0;
    if (!i3) {
     i3 = 9;
     break;
    } else i1 = i3;
   }
   i2 = i1;
  }
  if ((i3 | 0) == 5) {
   HEAP32[i8 >> 2] = i2;
   break;
  } else if ((i3 | 0) == 9) {
   HEAP32[i8 >> 2] = i2;
   break;
  } else if ((i3 | 0) == 10) {
   HEAP32[i8 >> 2] = i1;
   i1 = i8;
   break;
  }
 } else HEAP32[i8 >> 2] = i1; while (0);
 return i1 | 0;
}

function __ZN10MixedArena5allocIN4wasm6ImportEEEPT_v(i1) {
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0;
 i9 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i6 = i9;
 i7 = _pthread_self() | 0;
 if ((i7 | 0) == (HEAP32[i1 + 16 >> 2] | 0)) {
  i4 = i1 + 4 | 0;
  i5 = HEAP32[i4 >> 2] | 0;
  i2 = i5;
  if ((i5 | 0) != (HEAP32[i1 >> 2] | 0) ? (i3 = i1 + 12 | 0, i8 = HEAP32[i3 >> 2] | 0, (i8 + 16 | 0) >>> 0 <= 9999) : 0) i1 = i8; else {
   i3 = __Znaj(1e4) | 0;
   HEAP32[i6 >> 2] = i3;
   if (i2 >>> 0 < (HEAP32[i1 + 8 >> 2] | 0) >>> 0) {
    HEAP32[i5 >> 2] = i3;
    i2 = (HEAP32[i4 >> 2] | 0) + 4 | 0;
    HEAP32[i4 >> 2] = i2;
   } else {
    __ZNSt3__16vectorIPcNS_9allocatorIS1_EEE21__push_back_slow_pathIS1_EEvOT_(i1, i6);
    i2 = HEAP32[i4 >> 2] | 0;
   }
   i3 = i1 + 12 | 0;
   HEAP32[i3 >> 2] = 0;
   i1 = 0;
  }
  i8 = (HEAP32[i2 + -4 >> 2] | 0) + i1 | 0;
  HEAP32[i3 >> 2] = i1 + 16;
  HEAP32[i8 >> 2] = 0;
  HEAP32[i8 + 4 >> 2] = 0;
  HEAP32[i8 + 8 >> 2] = 0;
  HEAP32[i8 + 12 >> 2] = 0;
  i1 = i8;
 } else {
  i5 = i1 + 20 | 0;
  __ZNSt3__15mutex4lockEv(i5);
  L13 : while (1) {
   i3 = i1 + 16 | 0;
   i4 = i1 + 48 | 0;
   while (1) {
    if ((i7 | 0) == (HEAP32[i3 >> 2] | 0)) break L13;
    i2 = HEAP32[i4 >> 2] | 0;
    if (i2 | 0) {
     i1 = i2;
     continue L13;
    }
    i8 = __Znwj(52) | 0;
    __ZN10MixedArenaC2Ev(i8);
    HEAP32[i4 >> 2] = i8;
   }
  }
  i1 = __ZN10MixedArena5allocIN4wasm6ImportEEEPT_v(i1) | 0;
  __ZNSt3__15mutex6unlockEv(i5);
 }
 STACKTOP = i9;
 return i1 | 0;
}

function __ZZN4wasm14ModuleInstance12callFunctionEN6cashew7IStringERNSt3__16vectorINS_7LiteralENS3_9allocatorIS5_EEEEEN16ExpressionRunner9visitCallEPNS_4CallE(i4, i8, i6) {
 i4 = i4 | 0;
 i8 = i8 | 0;
 i6 = i6 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i5 = 0, i7 = 0, i9 = 0;
 i9 = STACKTOP;
 STACKTOP = STACKTOP + 64 | 0;
 i1 = i9 + 56 | 0;
 i5 = i9 + 44 | 0;
 i7 = i9 + 16 | 0;
 i2 = i9;
 i3 = i9 + 40 | 0;
 HEAP32[i5 >> 2] = 0;
 HEAP32[i5 + 4 >> 2] = 0;
 HEAP32[i5 + 8 >> 2] = 0;
 __ZZN4wasm14ModuleInstance12callFunctionEN6cashew7IStringERNSt3__16vectorINS_7LiteralENS3_9allocatorIS5_EEEEEN16ExpressionRunner17generateArgumentsERKNS4_IPNS_10ExpressionENS6_ISC_EEEES9_(i7, i8, i6 + 8 | 0, i5);
 if (!(HEAP32[i7 + 16 >> 2] | 0)) {
  i8 = HEAP32[i8 >> 2] | 0;
  HEAP32[i3 >> 2] = HEAP32[i6 + 20 >> 2];
  HEAP32[i1 >> 2] = HEAP32[i3 >> 2];
  __ZN4wasm14ModuleInstance12callFunctionEN6cashew7IStringERNSt3__16vectorINS_7LiteralENS3_9allocatorIS5_EEEE(i2, i8, i1, i5);
  HEAP32[i4 >> 2] = HEAP32[i2 >> 2];
  HEAP32[i4 + 4 >> 2] = HEAP32[i2 + 4 >> 2];
  HEAP32[i4 + 8 >> 2] = HEAP32[i2 + 8 >> 2];
  HEAP32[i4 + 12 >> 2] = HEAP32[i2 + 12 >> 2];
  HEAP32[i4 + 16 >> 2] = 0;
 } else {
  HEAP32[i4 >> 2] = HEAP32[i7 >> 2];
  HEAP32[i4 + 4 >> 2] = HEAP32[i7 + 4 >> 2];
  HEAP32[i4 + 8 >> 2] = HEAP32[i7 + 8 >> 2];
  HEAP32[i4 + 12 >> 2] = HEAP32[i7 + 12 >> 2];
  HEAP32[i4 + 16 >> 2] = HEAP32[i7 + 16 >> 2];
  HEAP32[i4 + 20 >> 2] = HEAP32[i7 + 20 >> 2];
 }
 __ZNSt3__113__vector_baseIN4wasm7LiteralENS_9allocatorIS2_EEED2Ev(i5);
 STACKTOP = i9;
 return;
}

function __ZN10MixedArena5allocIN4wasm4LoopEEEPT_v(i1) {
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0;
 i9 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i6 = i9;
 i7 = _pthread_self() | 0;
 if ((i7 | 0) == (HEAP32[i1 + 16 >> 2] | 0)) {
  i4 = i1 + 4 | 0;
  i5 = HEAP32[i4 >> 2] | 0;
  i2 = i5;
  if ((i5 | 0) != (HEAP32[i1 >> 2] | 0) ? (i3 = i1 + 12 | 0, i8 = HEAP32[i3 >> 2] | 0, (i8 + 24 | 0) >>> 0 <= 9999) : 0) i1 = i8; else {
   i3 = __Znaj(1e4) | 0;
   HEAP32[i6 >> 2] = i3;
   if (i2 >>> 0 < (HEAP32[i1 + 8 >> 2] | 0) >>> 0) {
    HEAP32[i5 >> 2] = i3;
    i2 = (HEAP32[i4 >> 2] | 0) + 4 | 0;
    HEAP32[i4 >> 2] = i2;
   } else {
    __ZNSt3__16vectorIPcNS_9allocatorIS1_EEE21__push_back_slow_pathIS1_EEvOT_(i1, i6);
    i2 = HEAP32[i4 >> 2] | 0;
   }
   i3 = i1 + 12 | 0;
   HEAP32[i3 >> 2] = 0;
   i1 = 0;
  }
  i8 = (HEAP32[i2 + -4 >> 2] | 0) + i1 | 0;
  HEAP32[i3 >> 2] = i1 + 24;
  HEAP32[i8 >> 2] = 3;
  HEAP32[i8 + 4 >> 2] = 0;
  HEAP32[i8 + 8 >> 2] = 0;
  HEAP32[i8 + 12 >> 2] = 0;
  i1 = i8;
 } else {
  i5 = i1 + 20 | 0;
  __ZNSt3__15mutex4lockEv(i5);
  L13 : while (1) {
   i3 = i1 + 16 | 0;
   i4 = i1 + 48 | 0;
   while (1) {
    if ((i7 | 0) == (HEAP32[i3 >> 2] | 0)) break L13;
    i2 = HEAP32[i4 >> 2] | 0;
    if (i2 | 0) {
     i1 = i2;
     continue L13;
    }
    i8 = __Znwj(52) | 0;
    __ZN10MixedArenaC2Ev(i8);
    HEAP32[i4 >> 2] = i8;
   }
  }
  i1 = __ZN10MixedArena5allocIN4wasm4LoopEEEPT_v(i1) | 0;
  __ZNSt3__15mutex6unlockEv(i5);
 }
 STACKTOP = i9;
 return i1 | 0;
}

function __ZNKSt3__17num_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_putES4_RNS_8ios_baseEwPKv(i5, i3, i2, i1, i4) {
 i5 = i5 | 0;
 i3 = i3 | 0;
 i2 = i2 | 0;
 i1 = i1 | 0;
 i4 = i4 | 0;
 var i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0;
 i6 = STACKTOP;
 STACKTOP = STACKTOP + 192 | 0;
 i10 = i6;
 i5 = i6 + 180 | 0;
 i7 = i6 + 160 | 0;
 i8 = i6 + 8 | 0;
 i12 = i6 + 156 | 0;
 i11 = i6 + 4 | 0;
 HEAP8[i5 >> 0] = HEAP8[30699] | 0;
 HEAP8[i5 + 1 >> 0] = HEAP8[30700] | 0;
 HEAP8[i5 + 2 >> 0] = HEAP8[30701] | 0;
 HEAP8[i5 + 3 >> 0] = HEAP8[30702] | 0;
 HEAP8[i5 + 4 >> 0] = HEAP8[30703] | 0;
 HEAP8[i5 + 5 >> 0] = HEAP8[30704] | 0;
 i9 = __ZNSt3__16__clocEv() | 0;
 HEAP32[i10 >> 2] = i4;
 i5 = __ZNSt3__112__snprintf_lEPcjP15__locale_structPKcz(i7, 20, i9, i5, i10) | 0;
 i9 = i7 + i5 | 0;
 i4 = __ZNSt3__114__num_put_base18__identify_paddingEPcS1_RKNS_8ios_baseE(i7, i9, i2) | 0;
 i13 = __ZNKSt3__18ios_base6getlocEv(i2) | 0;
 HEAP32[i12 >> 2] = i13;
 i12 = __ZNKSt3__16locale9use_facetERNS0_2idE(i12, 38408) | 0;
 __ZNSt3__114__shared_count16__release_sharedEv(i13) | 0;
 FUNCTION_TABLE_iiiii[HEAP32[(HEAP32[i12 >> 2] | 0) + 48 >> 2] & 7](i12, i7, i9, i8) | 0;
 i5 = i8 + (i5 << 2) | 0;
 HEAP32[i11 >> 2] = HEAP32[i3 >> 2];
 HEAP32[i10 >> 2] = HEAP32[i11 >> 2];
 i5 = __ZNSt3__116__pad_and_outputIwNS_11char_traitsIwEEEENS_19ostreambuf_iteratorIT_T0_EES6_PKS4_S8_S8_RNS_8ios_baseES4_(i10, i8, (i4 | 0) == (i9 | 0) ? i5 : i8 + (i4 - i7 << 2) | 0, i5, i2, i1) | 0;
 STACKTOP = i6;
 return i5 | 0;
}

function __ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEElsEy(i11, i6, i7) {
 i11 = i11 | 0;
 i6 = i6 | 0;
 i7 = i7 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i8 = 0, i9 = 0, i10 = 0, i12 = 0;
 i12 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i5 = i12 + 16 | 0;
 i9 = i12 + 12 | 0;
 i10 = i12;
 i1 = i12 + 8 | 0;
 __ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEE6sentryC2ERS3_(i10, i11);
 if (HEAP8[i10 >> 0] | 0) {
  i8 = __ZNKSt3__18ios_base6getlocEv(i11 + (HEAP32[(HEAP32[i11 >> 2] | 0) + -12 >> 2] | 0) | 0) | 0;
  HEAP32[i1 >> 2] = i8;
  i8 = __ZNKSt3__16locale9use_facetERNS0_2idE(i1, 38432) | 0;
  __ZNSt3__16localeD2Ev(i1);
  i3 = i11 + (HEAP32[(HEAP32[i11 >> 2] | 0) + -12 >> 2] | 0) | 0;
  i4 = HEAP32[i3 + 24 >> 2] | 0;
  i2 = i3 + 76 | 0;
  i1 = HEAP32[i2 >> 2] | 0;
  if ((i1 | 0) == -1) {
   i1 = __ZNKSt3__18ios_base6getlocEv(i3) | 0;
   HEAP32[i5 >> 2] = i1;
   i1 = __ZNKSt3__16locale9use_facetERNS0_2idE(i5, 38376) | 0;
   i1 = FUNCTION_TABLE_iii[HEAP32[(HEAP32[i1 >> 2] | 0) + 28 >> 2] & 63](i1, 32) | 0;
   __ZNSt3__16localeD2Ev(i5);
   i1 = i1 << 24 >> 24;
   HEAP32[i2 >> 2] = i1;
  }
  i2 = HEAP32[(HEAP32[i8 >> 2] | 0) + 28 >> 2] | 0;
  HEAP32[i9 >> 2] = i4;
  HEAP32[i5 >> 2] = HEAP32[i9 >> 2];
  if (!(FUNCTION_TABLE_iiiiiii[i2 & 63](i8, i5, i3, i1 & 255, i6, i7) | 0)) {
   i9 = i11 + (HEAP32[(HEAP32[i11 >> 2] | 0) + -12 >> 2] | 0) + 16 | 0;
   HEAP32[i9 >> 2] = HEAP32[i9 >> 2] | 5;
  }
 }
 __ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEE6sentryD2Ev(i10);
 STACKTOP = i12;
 return i11 | 0;
}

function __ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEElsEx(i11, i6, i7) {
 i11 = i11 | 0;
 i6 = i6 | 0;
 i7 = i7 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i8 = 0, i9 = 0, i10 = 0, i12 = 0;
 i12 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i5 = i12 + 16 | 0;
 i9 = i12 + 12 | 0;
 i10 = i12;
 i1 = i12 + 8 | 0;
 __ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEE6sentryC2ERS3_(i10, i11);
 if (HEAP8[i10 >> 0] | 0) {
  i8 = __ZNKSt3__18ios_base6getlocEv(i11 + (HEAP32[(HEAP32[i11 >> 2] | 0) + -12 >> 2] | 0) | 0) | 0;
  HEAP32[i1 >> 2] = i8;
  i8 = __ZNKSt3__16locale9use_facetERNS0_2idE(i1, 38432) | 0;
  __ZNSt3__16localeD2Ev(i1);
  i3 = i11 + (HEAP32[(HEAP32[i11 >> 2] | 0) + -12 >> 2] | 0) | 0;
  i4 = HEAP32[i3 + 24 >> 2] | 0;
  i2 = i3 + 76 | 0;
  i1 = HEAP32[i2 >> 2] | 0;
  if ((i1 | 0) == -1) {
   i1 = __ZNKSt3__18ios_base6getlocEv(i3) | 0;
   HEAP32[i5 >> 2] = i1;
   i1 = __ZNKSt3__16locale9use_facetERNS0_2idE(i5, 38376) | 0;
   i1 = FUNCTION_TABLE_iii[HEAP32[(HEAP32[i1 >> 2] | 0) + 28 >> 2] & 63](i1, 32) | 0;
   __ZNSt3__16localeD2Ev(i5);
   i1 = i1 << 24 >> 24;
   HEAP32[i2 >> 2] = i1;
  }
  i2 = HEAP32[(HEAP32[i8 >> 2] | 0) + 20 >> 2] | 0;
  HEAP32[i9 >> 2] = i4;
  HEAP32[i5 >> 2] = HEAP32[i9 >> 2];
  if (!(FUNCTION_TABLE_iiiiiii[i2 & 63](i8, i5, i3, i1 & 255, i6, i7) | 0)) {
   i9 = i11 + (HEAP32[(HEAP32[i11 >> 2] | 0) + -12 >> 2] | 0) + 16 | 0;
   HEAP32[i9 >> 2] = HEAP32[i9 >> 2] | 5;
  }
 }
 __ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEE6sentryD2Ev(i10);
 STACKTOP = i12;
 return i11 | 0;
}

function __ZN4wasm10ThreadPool10initializeEj(i11, i6) {
 i11 = i11 | 0;
 i6 = i6 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i12 = 0;
 i12 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i10 = i12 + 8 | 0;
 i3 = i12;
 if ((i6 | 0) != 1) {
  i8 = i11 + 16 | 0;
  HEAP32[i10 >> 2] = i8;
  i7 = i10 + 4 | 0;
  HEAP8[i7 >> 0] = 1;
  __ZNSt3__15mutex4lockEv(i8);
  i8 = i11 + 4 | 0;
  i9 = i11 + 92 | 0;
  HEAP32[i9 >> 2] = (HEAP32[i8 >> 2] | 0) - (HEAP32[i11 >> 2] | 0) >> 2;
  __ZN4wasm10ThreadPool20resetThreadsAreReadyEv(i11);
  i4 = i11 + 8 | 0;
  i5 = 0;
  while (1) {
   if (i5 >>> 0 >= i6 >>> 0) break;
   i1 = __Znwj(112) | 0;
   __ZN4wasm6ThreadC2Ev(i1);
   HEAP32[i3 >> 2] = i1;
   i2 = HEAP32[i8 >> 2] | 0;
   if (i2 >>> 0 >= (HEAP32[i4 >> 2] | 0) >>> 0) {
    __ZNSt3__16vectorINS_10unique_ptrIN4wasm6ThreadENS_14default_deleteIS3_EEEENS_9allocatorIS6_EEE24__emplace_back_slow_pathIJS6_EEEvDpOT_(i11, i3);
    i1 = HEAP32[i3 >> 2] | 0;
    HEAP32[i3 >> 2] = 0;
    if (i1 | 0) {
     __ZN4wasm6ThreadD2Ev(i1);
     __ZdlPv(i1);
    }
   } else {
    HEAP32[i2 >> 2] = i1;
    HEAP32[i8 >> 2] = i2 + 4;
    HEAP32[i3 >> 2] = 0;
   }
   i5 = i5 + 1 | 0;
  }
  i1 = i11 + 44 | 0;
  while (1) {
   if ((HEAP32[i9 >> 2] | 0) == ((HEAP32[i8 >> 2] | 0) - (HEAP32[i11 >> 2] | 0) >> 2 | 0)) break;
   __ZNSt3__118condition_variable4waitERNS_11unique_lockINS_5mutexEEE(i1, i10);
  }
  if (HEAP8[i7 >> 0] | 0) __ZNSt3__15mutex6unlockEv(HEAP32[i10 >> 2] | 0);
 }
 STACKTOP = i12;
 return;
}

function __ZNKSt3__17num_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_putES4_RNS_8ios_baseEcPKv(i5, i3, i2, i1, i4) {
 i5 = i5 | 0;
 i3 = i3 | 0;
 i2 = i2 | 0;
 i1 = i1 | 0;
 i4 = i4 | 0;
 var i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0;
 i6 = STACKTOP;
 STACKTOP = STACKTOP + 80 | 0;
 i10 = i6;
 i5 = i6 + 72 | 0;
 i7 = i6 + 52 | 0;
 i8 = i6 + 12 | 0;
 i12 = i6 + 8 | 0;
 i11 = i6 + 4 | 0;
 HEAP8[i5 >> 0] = HEAP8[30699] | 0;
 HEAP8[i5 + 1 >> 0] = HEAP8[30700] | 0;
 HEAP8[i5 + 2 >> 0] = HEAP8[30701] | 0;
 HEAP8[i5 + 3 >> 0] = HEAP8[30702] | 0;
 HEAP8[i5 + 4 >> 0] = HEAP8[30703] | 0;
 HEAP8[i5 + 5 >> 0] = HEAP8[30704] | 0;
 i9 = __ZNSt3__16__clocEv() | 0;
 HEAP32[i10 >> 2] = i4;
 i5 = __ZNSt3__112__snprintf_lEPcjP15__locale_structPKcz(i7, 20, i9, i5, i10) | 0;
 i9 = i7 + i5 | 0;
 i4 = __ZNSt3__114__num_put_base18__identify_paddingEPcS1_RKNS_8ios_baseE(i7, i9, i2) | 0;
 i13 = __ZNKSt3__18ios_base6getlocEv(i2) | 0;
 HEAP32[i12 >> 2] = i13;
 i12 = __ZNKSt3__16locale9use_facetERNS0_2idE(i12, 38376) | 0;
 __ZNSt3__114__shared_count16__release_sharedEv(i13) | 0;
 FUNCTION_TABLE_iiiii[HEAP32[(HEAP32[i12 >> 2] | 0) + 32 >> 2] & 7](i12, i7, i9, i8) | 0;
 i5 = i8 + i5 | 0;
 HEAP32[i11 >> 2] = HEAP32[i3 >> 2];
 HEAP32[i10 >> 2] = HEAP32[i11 >> 2];
 i5 = __ZNSt3__116__pad_and_outputIcNS_11char_traitsIcEEEENS_19ostreambuf_iteratorIT_T0_EES6_PKS4_S8_S8_RNS_8ios_baseES4_(i10, i8, (i4 | 0) == (i9 | 0) ? i5 : i8 + (i4 - i7) | 0, i5, i2, i1) | 0;
 STACKTOP = i6;
 return i5 | 0;
}

function __ZN10MixedArena5allocIN4wasm6ReturnEEEPT_v(i1) {
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0;
 i9 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i6 = i9;
 i7 = _pthread_self() | 0;
 if ((i7 | 0) == (HEAP32[i1 + 16 >> 2] | 0)) {
  i4 = i1 + 4 | 0;
  i5 = HEAP32[i4 >> 2] | 0;
  i2 = i5;
  if ((i5 | 0) != (HEAP32[i1 >> 2] | 0) ? (i3 = i1 + 12 | 0, i8 = HEAP32[i3 >> 2] | 0, (i8 + 16 | 0) >>> 0 <= 9999) : 0) i1 = i8; else {
   i3 = __Znaj(1e4) | 0;
   HEAP32[i6 >> 2] = i3;
   if (i2 >>> 0 < (HEAP32[i1 + 8 >> 2] | 0) >>> 0) {
    HEAP32[i5 >> 2] = i3;
    i2 = (HEAP32[i4 >> 2] | 0) + 4 | 0;
    HEAP32[i4 >> 2] = i2;
   } else {
    __ZNSt3__16vectorIPcNS_9allocatorIS1_EEE21__push_back_slow_pathIS1_EEvOT_(i1, i6);
    i2 = HEAP32[i4 >> 2] | 0;
   }
   i3 = i1 + 12 | 0;
   HEAP32[i3 >> 2] = 0;
   i1 = 0;
  }
  i8 = (HEAP32[i2 + -4 >> 2] | 0) + i1 | 0;
  HEAP32[i3 >> 2] = i1 + 16;
  HEAP32[i8 >> 2] = 17;
  HEAP32[i8 + 8 >> 2] = 0;
  HEAP32[i8 + 4 >> 2] = 5;
  i1 = i8;
 } else {
  i5 = i1 + 20 | 0;
  __ZNSt3__15mutex4lockEv(i5);
  L13 : while (1) {
   i3 = i1 + 16 | 0;
   i4 = i1 + 48 | 0;
   while (1) {
    if ((i7 | 0) == (HEAP32[i3 >> 2] | 0)) break L13;
    i2 = HEAP32[i4 >> 2] | 0;
    if (i2 | 0) {
     i1 = i2;
     continue L13;
    }
    i8 = __Znwj(52) | 0;
    __ZN10MixedArenaC2Ev(i8);
    HEAP32[i4 >> 2] = i8;
   }
  }
  i1 = __ZN10MixedArena5allocIN4wasm6ReturnEEEPT_v(i1) | 0;
  __ZNSt3__15mutex6unlockEv(i5);
 }
 STACKTOP = i9;
 return i1 | 0;
}

function __ZN4wasm22SExpressionWasmBuilderC2ERNS_6ModuleERNS_7ElementENSt3__18functionIFvvEEE(i4, i2, i3, i1) {
 i4 = i4 | 0;
 i2 = i2 | 0;
 i3 = i3 | 0;
 i1 = i1 | 0;
 HEAP32[i4 >> 2] = i2;
 HEAP32[i4 + 4 >> 2] = i2 + 88;
 __ZNSt3__18functionIFvvEEC2ERKS2_(i4 + 8 | 0, i1);
 HEAP32[i4 + 32 >> 2] = 0;
 HEAP32[i4 + 36 >> 2] = 0;
 HEAP32[i4 + 40 >> 2] = 0;
 HEAP32[i4 + 48 >> 2] = 0;
 HEAP32[i4 + 56 >> 2] = 0;
 HEAP32[i4 + 60 >> 2] = 0;
 HEAP32[i4 + 52 >> 2] = i4 + 56;
 HEAP32[i4 + 64 >> 2] = 0;
 HEAP32[i4 + 72 >> 2] = 0;
 HEAP32[i4 + 76 >> 2] = 0;
 HEAP32[i4 + 68 >> 2] = i4 + 72;
 i2 = i4 + 88 | 0;
 HEAP32[i2 >> 2] = 0;
 HEAP32[i2 + 4 >> 2] = 0;
 HEAP32[i2 + 8 >> 2] = 0;
 HEAP8[i2 + 12 >> 0] = 0;
 i2 = __ZN4wasm7Element4listEv(i3) | 0;
 i2 = __ZN4wasm7Element3strEv(HEAP32[HEAP32[i2 >> 2] >> 2] | 0) | 0;
 if ((i2 | 0) != (HEAP32[9005] | 0)) ___assert_fail(14611, 14303, 250, 14638);
 i1 = i4 + 44 | 0;
 HEAP32[i1 >> 2] = 0;
 i2 = 1;
 while (1) {
  if (i2 >>> 0 >= (__ZN4wasm7Element4sizeEv(i3) | 0) >>> 0) break;
  __ZN4wasm22SExpressionWasmBuilder20preParseFunctionTypeERNS_7ElementE(i4, __ZN4wasm7ElementixEj(i3, i2) | 0);
  __ZN4wasm22SExpressionWasmBuilder15preParseImportsERNS_7ElementE(i4, __ZN4wasm7ElementixEj(i3, i2) | 0);
  i2 = i2 + 1 | 0;
 }
 HEAP32[i1 >> 2] = 0;
 i1 = 1;
 while (1) {
  if (i1 >>> 0 >= (__ZN4wasm7Element4sizeEv(i3) | 0) >>> 0) break;
  __ZN4wasm22SExpressionWasmBuilder18parseModuleElementERNS_7ElementE(i4, __ZN4wasm7ElementixEj(i3, i1) | 0);
  i1 = i1 + 1 | 0;
 }
 return;
}

function __ZN10MixedArena5allocIN4wasm2IfEEEPT_v(i1) {
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0;
 i9 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i6 = i9;
 i7 = _pthread_self() | 0;
 if ((i7 | 0) == (HEAP32[i1 + 16 >> 2] | 0)) {
  i4 = i1 + 4 | 0;
  i5 = HEAP32[i4 >> 2] | 0;
  i2 = i5;
  if ((i5 | 0) != (HEAP32[i1 >> 2] | 0) ? (i3 = i1 + 12 | 0, i8 = HEAP32[i3 >> 2] | 0, (i8 + 24 | 0) >>> 0 <= 9999) : 0) i1 = i8; else {
   i3 = __Znaj(1e4) | 0;
   HEAP32[i6 >> 2] = i3;
   if (i2 >>> 0 < (HEAP32[i1 + 8 >> 2] | 0) >>> 0) {
    HEAP32[i5 >> 2] = i3;
    i2 = (HEAP32[i4 >> 2] | 0) + 4 | 0;
    HEAP32[i4 >> 2] = i2;
   } else {
    __ZNSt3__16vectorIPcNS_9allocatorIS1_EEE21__push_back_slow_pathIS1_EEvOT_(i1, i6);
    i2 = HEAP32[i4 >> 2] | 0;
   }
   i3 = i1 + 12 | 0;
   HEAP32[i3 >> 2] = 0;
   i1 = 0;
  }
  i8 = (HEAP32[i2 + -4 >> 2] | 0) + i1 | 0;
  HEAP32[i3 >> 2] = i1 + 24;
  HEAP32[i8 >> 2] = 2;
  HEAP32[i8 + 16 >> 2] = 0;
  HEAP32[i8 + 4 >> 2] = 0;
  i1 = i8;
 } else {
  i5 = i1 + 20 | 0;
  __ZNSt3__15mutex4lockEv(i5);
  L13 : while (1) {
   i3 = i1 + 16 | 0;
   i4 = i1 + 48 | 0;
   while (1) {
    if ((i7 | 0) == (HEAP32[i3 >> 2] | 0)) break L13;
    i2 = HEAP32[i4 >> 2] | 0;
    if (i2 | 0) {
     i1 = i2;
     continue L13;
    }
    i8 = __Znwj(52) | 0;
    __ZN10MixedArenaC2Ev(i8);
    HEAP32[i4 >> 2] = i8;
   }
  }
  i1 = __ZN10MixedArena5allocIN4wasm2IfEEEPT_v(i1) | 0;
  __ZNSt3__15mutex6unlockEv(i5);
 }
 STACKTOP = i9;
 return i1 | 0;
}

function __ZNKSt3__17num_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_putES4_RNS_8ios_baseEwy(i6, i5, i4, i3, i1, i2) {
 i6 = i6 | 0;
 i5 = i5 | 0;
 i4 = i4 | 0;
 i3 = i3 | 0;
 i1 = i1 | 0;
 i2 = i2 | 0;
 var i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0;
 i7 = STACKTOP;
 STACKTOP = STACKTOP + 240 | 0;
 i9 = i7 + 8 | 0;
 i13 = i7;
 i14 = i7 + 204 | 0;
 i8 = i7 + 32 | 0;
 i11 = i7 + 28 | 0;
 i6 = i7 + 20 | 0;
 i12 = i7 + 24 | 0;
 i10 = i7 + 16 | 0;
 i15 = i13;
 HEAP32[i15 >> 2] = 37;
 HEAP32[i15 + 4 >> 2] = 0;
 __ZNSt3__114__num_put_base12__format_intEPcPKcbj(i13 + 1 | 0, 33641, 0, HEAP32[i4 + 4 >> 2] | 0);
 i15 = __ZNSt3__16__clocEv() | 0;
 i16 = i9;
 HEAP32[i16 >> 2] = i1;
 HEAP32[i16 + 4 >> 2] = i2;
 i1 = i14 + (__ZNSt3__112__snprintf_lEPcjP15__locale_structPKcz(i14, 23, i15, i13, i9) | 0) | 0;
 i13 = __ZNSt3__114__num_put_base18__identify_paddingEPcS1_RKNS_8ios_baseE(i14, i1, i4) | 0;
 i2 = __ZNKSt3__18ios_base6getlocEv(i4) | 0;
 HEAP32[i12 >> 2] = i2;
 __ZNSt3__19__num_putIwE21__widen_and_group_intEPcS2_S2_PwRS3_S4_RKNS_6localeE(i14, i13, i1, i8, i11, i6, i12);
 __ZNSt3__114__shared_count16__release_sharedEv(i2) | 0;
 HEAP32[i10 >> 2] = HEAP32[i5 >> 2];
 i5 = HEAP32[i11 >> 2] | 0;
 i6 = HEAP32[i6 >> 2] | 0;
 HEAP32[i9 >> 2] = HEAP32[i10 >> 2];
 i6 = __ZNSt3__116__pad_and_outputIwNS_11char_traitsIwEEEENS_19ostreambuf_iteratorIT_T0_EES6_PKS4_S8_S8_RNS_8ios_baseES4_(i9, i8, i5, i6, i4, i3) | 0;
 STACKTOP = i7;
 return i6 | 0;
}

function __ZNKSt3__17num_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_putES4_RNS_8ios_baseEwx(i6, i5, i4, i3, i1, i2) {
 i6 = i6 | 0;
 i5 = i5 | 0;
 i4 = i4 | 0;
 i3 = i3 | 0;
 i1 = i1 | 0;
 i2 = i2 | 0;
 var i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0;
 i7 = STACKTOP;
 STACKTOP = STACKTOP + 224 | 0;
 i9 = i7 + 8 | 0;
 i13 = i7;
 i14 = i7 + 196 | 0;
 i8 = i7 + 32 | 0;
 i11 = i7 + 28 | 0;
 i6 = i7 + 20 | 0;
 i12 = i7 + 24 | 0;
 i10 = i7 + 16 | 0;
 i15 = i13;
 HEAP32[i15 >> 2] = 37;
 HEAP32[i15 + 4 >> 2] = 0;
 __ZNSt3__114__num_put_base12__format_intEPcPKcbj(i13 + 1 | 0, 33641, 1, HEAP32[i4 + 4 >> 2] | 0);
 i15 = __ZNSt3__16__clocEv() | 0;
 i16 = i9;
 HEAP32[i16 >> 2] = i1;
 HEAP32[i16 + 4 >> 2] = i2;
 i1 = i14 + (__ZNSt3__112__snprintf_lEPcjP15__locale_structPKcz(i14, 22, i15, i13, i9) | 0) | 0;
 i13 = __ZNSt3__114__num_put_base18__identify_paddingEPcS1_RKNS_8ios_baseE(i14, i1, i4) | 0;
 i2 = __ZNKSt3__18ios_base6getlocEv(i4) | 0;
 HEAP32[i12 >> 2] = i2;
 __ZNSt3__19__num_putIwE21__widen_and_group_intEPcS2_S2_PwRS3_S4_RKNS_6localeE(i14, i13, i1, i8, i11, i6, i12);
 __ZNSt3__114__shared_count16__release_sharedEv(i2) | 0;
 HEAP32[i10 >> 2] = HEAP32[i5 >> 2];
 i5 = HEAP32[i11 >> 2] | 0;
 i6 = HEAP32[i6 >> 2] | 0;
 HEAP32[i9 >> 2] = HEAP32[i10 >> 2];
 i6 = __ZNSt3__116__pad_and_outputIwNS_11char_traitsIwEEEENS_19ostreambuf_iteratorIT_T0_EES6_PKS4_S8_S8_RNS_8ios_baseES4_(i9, i8, i5, i6, i4, i3) | 0;
 STACKTOP = i7;
 return i6 | 0;
}

function __ZNKSt3__17num_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_putES4_RNS_8ios_baseEcy(i6, i5, i4, i3, i1, i2) {
 i6 = i6 | 0;
 i5 = i5 | 0;
 i4 = i4 | 0;
 i3 = i3 | 0;
 i1 = i1 | 0;
 i2 = i2 | 0;
 var i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0;
 i7 = STACKTOP;
 STACKTOP = STACKTOP + 112 | 0;
 i9 = i7 + 8 | 0;
 i13 = i7;
 i14 = i7 + 75 | 0;
 i8 = i7 + 32 | 0;
 i11 = i7 + 28 | 0;
 i6 = i7 + 20 | 0;
 i12 = i7 + 24 | 0;
 i10 = i7 + 16 | 0;
 i15 = i13;
 HEAP32[i15 >> 2] = 37;
 HEAP32[i15 + 4 >> 2] = 0;
 __ZNSt3__114__num_put_base12__format_intEPcPKcbj(i13 + 1 | 0, 33641, 0, HEAP32[i4 + 4 >> 2] | 0);
 i15 = __ZNSt3__16__clocEv() | 0;
 i16 = i9;
 HEAP32[i16 >> 2] = i1;
 HEAP32[i16 + 4 >> 2] = i2;
 i1 = i14 + (__ZNSt3__112__snprintf_lEPcjP15__locale_structPKcz(i14, 23, i15, i13, i9) | 0) | 0;
 i13 = __ZNSt3__114__num_put_base18__identify_paddingEPcS1_RKNS_8ios_baseE(i14, i1, i4) | 0;
 i2 = __ZNKSt3__18ios_base6getlocEv(i4) | 0;
 HEAP32[i12 >> 2] = i2;
 __ZNSt3__19__num_putIcE21__widen_and_group_intEPcS2_S2_S2_RS2_S3_RKNS_6localeE(i14, i13, i1, i8, i11, i6, i12);
 __ZNSt3__114__shared_count16__release_sharedEv(i2) | 0;
 HEAP32[i10 >> 2] = HEAP32[i5 >> 2];
 i5 = HEAP32[i11 >> 2] | 0;
 i6 = HEAP32[i6 >> 2] | 0;
 HEAP32[i9 >> 2] = HEAP32[i10 >> 2];
 i6 = __ZNSt3__116__pad_and_outputIcNS_11char_traitsIcEEEENS_19ostreambuf_iteratorIT_T0_EES6_PKS4_S8_S8_RNS_8ios_baseES4_(i9, i8, i5, i6, i4, i3) | 0;
 STACKTOP = i7;
 return i6 | 0;
}

function __ZNKSt3__17num_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_putES4_RNS_8ios_baseEcx(i6, i5, i4, i3, i1, i2) {
 i6 = i6 | 0;
 i5 = i5 | 0;
 i4 = i4 | 0;
 i3 = i3 | 0;
 i1 = i1 | 0;
 i2 = i2 | 0;
 var i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0;
 i7 = STACKTOP;
 STACKTOP = STACKTOP + 96 | 0;
 i9 = i7 + 8 | 0;
 i13 = i7;
 i14 = i7 + 74 | 0;
 i8 = i7 + 32 | 0;
 i11 = i7 + 28 | 0;
 i6 = i7 + 20 | 0;
 i12 = i7 + 24 | 0;
 i10 = i7 + 16 | 0;
 i15 = i13;
 HEAP32[i15 >> 2] = 37;
 HEAP32[i15 + 4 >> 2] = 0;
 __ZNSt3__114__num_put_base12__format_intEPcPKcbj(i13 + 1 | 0, 33641, 1, HEAP32[i4 + 4 >> 2] | 0);
 i15 = __ZNSt3__16__clocEv() | 0;
 i16 = i9;
 HEAP32[i16 >> 2] = i1;
 HEAP32[i16 + 4 >> 2] = i2;
 i1 = i14 + (__ZNSt3__112__snprintf_lEPcjP15__locale_structPKcz(i14, 22, i15, i13, i9) | 0) | 0;
 i13 = __ZNSt3__114__num_put_base18__identify_paddingEPcS1_RKNS_8ios_baseE(i14, i1, i4) | 0;
 i2 = __ZNKSt3__18ios_base6getlocEv(i4) | 0;
 HEAP32[i12 >> 2] = i2;
 __ZNSt3__19__num_putIcE21__widen_and_group_intEPcS2_S2_S2_RS2_S3_RKNS_6localeE(i14, i13, i1, i8, i11, i6, i12);
 __ZNSt3__114__shared_count16__release_sharedEv(i2) | 0;
 HEAP32[i10 >> 2] = HEAP32[i5 >> 2];
 i5 = HEAP32[i11 >> 2] | 0;
 i6 = HEAP32[i6 >> 2] | 0;
 HEAP32[i9 >> 2] = HEAP32[i10 >> 2];
 i6 = __ZNSt3__116__pad_and_outputIcNS_11char_traitsIcEEEENS_19ostreambuf_iteratorIT_T0_EES6_PKS4_S8_S8_RNS_8ios_baseES4_(i9, i8, i5, i6, i4, i3) | 0;
 STACKTOP = i7;
 return i6 | 0;
}

function __ZN4wasm14SimplifyLocals4scanEPS0_PPNS_10ExpressionE(i4, i3) {
 i4 = i4 | 0;
 i3 = i3 | 0;
 var i1 = 0, i2 = 0, i5 = 0;
 i1 = i4 + 16 | 0;
 __ZN4wasm6WalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i1, 168, i3);
 i2 = HEAP32[i3 >> 2] | 0;
 if ((HEAP32[i2 >> 2] | 0) == 2 ? (i5 = (__ZN4wasm10Expression4castINS_2IfEEEPT_v(i2) | 0) + 16 | 0, (HEAP32[i5 >> 2] | 0) != 0) : 0) {
  __ZN4wasm6WalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i1, 169, i3);
  __ZN4wasm6WalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i1, 167, (__ZN4wasm10Expression4castINS_2IfEEEPT_v(i2) | 0) + 16 | 0);
  __ZN4wasm6WalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i1, 170, i3);
  __ZN4wasm6WalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i1, 167, (__ZN4wasm10Expression4castINS_2IfEEEPT_v(i2) | 0) + 12 | 0);
  __ZN4wasm6WalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i1, 171, i3);
  __ZN4wasm6WalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i1, 167, (__ZN4wasm10Expression4castINS_2IfEEEPT_v(i2) | 0) + 8 | 0);
 } else __ZN4wasm21LinearExecutionWalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE4scanEPS1_PPNS_10ExpressionE(i4, i3);
 __ZN4wasm6WalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i1, 172, i3);
 return;
}

function __ZNSt3__16vectorIN4wasm6WalkerIZNS1_13ReorderLocals13visitFunctionEPNS1_8FunctionEE9ReIndexerNS1_7VisitorIS6_vEEE4TaskENS_9allocatorISA_EEE24__emplace_back_slow_pathIJRPFvPS6_PPNS1_10ExpressionEERSI_EEEvDpOT_(i8, i5, i6) {
 i8 = i8 | 0;
 i5 = i5 | 0;
 i6 = i6 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i7 = 0, i9 = 0;
 i9 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i7 = i9;
 i3 = i8 + 4 | 0;
 i4 = HEAP32[i8 >> 2] | 0;
 i2 = ((HEAP32[i3 >> 2] | 0) - i4 >> 3) + 1 | 0;
 if (i2 >>> 0 > 536870911) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i8);
 i1 = (HEAP32[i8 + 8 >> 2] | 0) - i4 | 0;
 if (i1 >> 3 >>> 0 < 268435455) {
  i1 = i1 >> 2;
  i1 = i1 >>> 0 < i2 >>> 0 ? i2 : i1;
 } else i1 = 536870911;
 __ZNSt3__114__split_bufferIN4wasm6WalkerIZNS1_13ReorderLocals13visitFunctionEPNS1_8FunctionEE9ReIndexerNS1_7VisitorIS6_vEEE4TaskERNS_9allocatorISA_EEEC2EjjSD_(i7, i1, (HEAP32[i3 >> 2] | 0) - i4 >> 3, i8 + 8 | 0);
 i4 = i7 + 8 | 0;
 i3 = HEAP32[i4 >> 2] | 0;
 i6 = HEAP32[i6 >> 2] | 0;
 HEAP32[i3 >> 2] = HEAP32[i5 >> 2];
 HEAP32[i3 + 4 >> 2] = i6;
 HEAP32[i4 >> 2] = i3 + 8;
 __ZNSt3__16vectorIN4wasm6WalkerIZNS1_13ReorderLocals13visitFunctionEPNS1_8FunctionEE9ReIndexerNS1_7VisitorIS6_vEEE4TaskENS_9allocatorISA_EEE26__swap_out_circular_bufferERNS_14__split_bufferISA_RSC_EE(i8, i7);
 __ZNSt3__114__split_bufferIN4wasm6WalkerIZNS1_13ReorderLocals13visitFunctionEPNS1_8FunctionEE9ReIndexerNS1_7VisitorIS6_vEEE4TaskERNS_9allocatorISA_EEED2Ev(i7);
 STACKTOP = i9;
 return;
}

function __ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEElsEPKv(i10, i8) {
 i10 = i10 | 0;
 i8 = i8 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i9 = 0, i11 = 0;
 i11 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i5 = i11 + 16 | 0;
 i6 = i11 + 12 | 0;
 i9 = i11;
 i1 = i11 + 8 | 0;
 __ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEE6sentryC2ERS3_(i9, i10);
 if (HEAP8[i9 >> 0] | 0) {
  i7 = __ZNKSt3__18ios_base6getlocEv(i10 + (HEAP32[(HEAP32[i10 >> 2] | 0) + -12 >> 2] | 0) | 0) | 0;
  HEAP32[i1 >> 2] = i7;
  i7 = __ZNKSt3__16locale9use_facetERNS0_2idE(i1, 38432) | 0;
  __ZNSt3__16localeD2Ev(i1);
  i3 = i10 + (HEAP32[(HEAP32[i10 >> 2] | 0) + -12 >> 2] | 0) | 0;
  i4 = HEAP32[i3 + 24 >> 2] | 0;
  i2 = i3 + 76 | 0;
  i1 = HEAP32[i2 >> 2] | 0;
  if ((i1 | 0) == -1) {
   i1 = __ZNKSt3__18ios_base6getlocEv(i3) | 0;
   HEAP32[i5 >> 2] = i1;
   i1 = __ZNKSt3__16locale9use_facetERNS0_2idE(i5, 38376) | 0;
   i1 = FUNCTION_TABLE_iii[HEAP32[(HEAP32[i1 >> 2] | 0) + 28 >> 2] & 63](i1, 32) | 0;
   __ZNSt3__16localeD2Ev(i5);
   i1 = i1 << 24 >> 24;
   HEAP32[i2 >> 2] = i1;
  }
  i2 = HEAP32[(HEAP32[i7 >> 2] | 0) + 40 >> 2] | 0;
  HEAP32[i6 >> 2] = i4;
  HEAP32[i5 >> 2] = HEAP32[i6 >> 2];
  if (!(FUNCTION_TABLE_iiiiii[i2 & 31](i7, i5, i3, i1 & 255, i8) | 0)) {
   i8 = i10 + (HEAP32[(HEAP32[i10 >> 2] | 0) + -12 >> 2] | 0) + 16 | 0;
   HEAP32[i8 >> 2] = HEAP32[i8 >> 2] | 5;
  }
 }
 __ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEE6sentryD2Ev(i9);
 STACKTOP = i11;
 return i10 | 0;
}

function __ZN10MixedArena5allocIN4wasm11UnreachableEEEPT_v(i1) {
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0;
 i9 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i6 = i9;
 i7 = _pthread_self() | 0;
 if ((i7 | 0) == (HEAP32[i1 + 16 >> 2] | 0)) {
  i4 = i1 + 4 | 0;
  i5 = HEAP32[i4 >> 2] | 0;
  i2 = i5;
  if ((i5 | 0) != (HEAP32[i1 >> 2] | 0) ? (i3 = i1 + 12 | 0, i8 = HEAP32[i3 >> 2] | 0, (i8 + 8 | 0) >>> 0 <= 9999) : 0) i1 = i8; else {
   i3 = __Znaj(1e4) | 0;
   HEAP32[i6 >> 2] = i3;
   if (i2 >>> 0 < (HEAP32[i1 + 8 >> 2] | 0) >>> 0) {
    HEAP32[i5 >> 2] = i3;
    i2 = (HEAP32[i4 >> 2] | 0) + 4 | 0;
    HEAP32[i4 >> 2] = i2;
   } else {
    __ZNSt3__16vectorIPcNS_9allocatorIS1_EEE21__push_back_slow_pathIS1_EEvOT_(i1, i6);
    i2 = HEAP32[i4 >> 2] | 0;
   }
   i3 = i1 + 12 | 0;
   HEAP32[i3 >> 2] = 0;
   i1 = 0;
  }
  i8 = (HEAP32[i2 + -4 >> 2] | 0) + i1 | 0;
  HEAP32[i3 >> 2] = i1 + 8;
  HEAP32[i8 >> 2] = 20;
  HEAP32[i8 + 4 >> 2] = 5;
  i1 = i8;
 } else {
  i5 = i1 + 20 | 0;
  __ZNSt3__15mutex4lockEv(i5);
  L13 : while (1) {
   i3 = i1 + 16 | 0;
   i4 = i1 + 48 | 0;
   while (1) {
    if ((i7 | 0) == (HEAP32[i3 >> 2] | 0)) break L13;
    i2 = HEAP32[i4 >> 2] | 0;
    if (i2 | 0) {
     i1 = i2;
     continue L13;
    }
    i8 = __Znwj(52) | 0;
    __ZN10MixedArenaC2Ev(i8);
    HEAP32[i4 >> 2] = i8;
   }
  }
  i1 = __ZN10MixedArena5allocIN4wasm11UnreachableEEEPT_v(i1) | 0;
  __ZNSt3__15mutex6unlockEv(i5);
 }
 STACKTOP = i9;
 return i1 | 0;
}

function __ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEElsEj(i10, i8) {
 i10 = i10 | 0;
 i8 = i8 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i9 = 0, i11 = 0;
 i11 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i5 = i11 + 16 | 0;
 i6 = i11 + 12 | 0;
 i9 = i11;
 i1 = i11 + 8 | 0;
 __ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEE6sentryC2ERS3_(i9, i10);
 if (HEAP8[i9 >> 0] | 0) {
  i7 = __ZNKSt3__18ios_base6getlocEv(i10 + (HEAP32[(HEAP32[i10 >> 2] | 0) + -12 >> 2] | 0) | 0) | 0;
  HEAP32[i1 >> 2] = i7;
  i7 = __ZNKSt3__16locale9use_facetERNS0_2idE(i1, 38432) | 0;
  __ZNSt3__16localeD2Ev(i1);
  i3 = i10 + (HEAP32[(HEAP32[i10 >> 2] | 0) + -12 >> 2] | 0) | 0;
  i4 = HEAP32[i3 + 24 >> 2] | 0;
  i2 = i3 + 76 | 0;
  i1 = HEAP32[i2 >> 2] | 0;
  if ((i1 | 0) == -1) {
   i1 = __ZNKSt3__18ios_base6getlocEv(i3) | 0;
   HEAP32[i5 >> 2] = i1;
   i1 = __ZNKSt3__16locale9use_facetERNS0_2idE(i5, 38376) | 0;
   i1 = FUNCTION_TABLE_iii[HEAP32[(HEAP32[i1 >> 2] | 0) + 28 >> 2] & 63](i1, 32) | 0;
   __ZNSt3__16localeD2Ev(i5);
   i1 = i1 << 24 >> 24;
   HEAP32[i2 >> 2] = i1;
  }
  i2 = HEAP32[(HEAP32[i7 >> 2] | 0) + 24 >> 2] | 0;
  HEAP32[i6 >> 2] = i4;
  HEAP32[i5 >> 2] = HEAP32[i6 >> 2];
  if (!(FUNCTION_TABLE_iiiiii[i2 & 31](i7, i5, i3, i1 & 255, i8) | 0)) {
   i8 = i10 + (HEAP32[(HEAP32[i10 >> 2] | 0) + -12 >> 2] | 0) + 16 | 0;
   HEAP32[i8 >> 2] = HEAP32[i8 >> 2] | 5;
  }
 }
 __ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEE6sentryD2Ev(i9);
 STACKTOP = i11;
 return i10 | 0;
}

function __ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEElsEi(i10, i8) {
 i10 = i10 | 0;
 i8 = i8 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i9 = 0, i11 = 0;
 i11 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i5 = i11 + 16 | 0;
 i6 = i11 + 12 | 0;
 i9 = i11;
 i1 = i11 + 8 | 0;
 __ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEE6sentryC2ERS3_(i9, i10);
 if (HEAP8[i9 >> 0] | 0) {
  i7 = __ZNKSt3__18ios_base6getlocEv(i10 + (HEAP32[(HEAP32[i10 >> 2] | 0) + -12 >> 2] | 0) | 0) | 0;
  HEAP32[i1 >> 2] = i7;
  i7 = __ZNKSt3__16locale9use_facetERNS0_2idE(i1, 38432) | 0;
  __ZNSt3__16localeD2Ev(i1);
  i3 = i10 + (HEAP32[(HEAP32[i10 >> 2] | 0) + -12 >> 2] | 0) | 0;
  i4 = HEAP32[i3 + 24 >> 2] | 0;
  i2 = i3 + 76 | 0;
  i1 = HEAP32[i2 >> 2] | 0;
  if ((i1 | 0) == -1) {
   i1 = __ZNKSt3__18ios_base6getlocEv(i3) | 0;
   HEAP32[i5 >> 2] = i1;
   i1 = __ZNKSt3__16locale9use_facetERNS0_2idE(i5, 38376) | 0;
   i1 = FUNCTION_TABLE_iii[HEAP32[(HEAP32[i1 >> 2] | 0) + 28 >> 2] & 63](i1, 32) | 0;
   __ZNSt3__16localeD2Ev(i5);
   i1 = i1 << 24 >> 24;
   HEAP32[i2 >> 2] = i1;
  }
  i2 = HEAP32[(HEAP32[i7 >> 2] | 0) + 16 >> 2] | 0;
  HEAP32[i6 >> 2] = i4;
  HEAP32[i5 >> 2] = HEAP32[i6 >> 2];
  if (!(FUNCTION_TABLE_iiiiii[i2 & 31](i7, i5, i3, i1 & 255, i8) | 0)) {
   i8 = i10 + (HEAP32[(HEAP32[i10 >> 2] | 0) + -12 >> 2] | 0) + 16 | 0;
   HEAP32[i8 >> 2] = HEAP32[i8 >> 2] | 5;
  }
 }
 __ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEE6sentryD2Ev(i9);
 STACKTOP = i11;
 return i10 | 0;
}

function __ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEElsEd(i10, d8) {
 i10 = i10 | 0;
 d8 = +d8;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i9 = 0, i11 = 0;
 i11 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i5 = i11 + 16 | 0;
 i6 = i11 + 12 | 0;
 i9 = i11;
 i1 = i11 + 8 | 0;
 __ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEE6sentryC2ERS3_(i9, i10);
 if (HEAP8[i9 >> 0] | 0) {
  i7 = __ZNKSt3__18ios_base6getlocEv(i10 + (HEAP32[(HEAP32[i10 >> 2] | 0) + -12 >> 2] | 0) | 0) | 0;
  HEAP32[i1 >> 2] = i7;
  i7 = __ZNKSt3__16locale9use_facetERNS0_2idE(i1, 38432) | 0;
  __ZNSt3__16localeD2Ev(i1);
  i3 = i10 + (HEAP32[(HEAP32[i10 >> 2] | 0) + -12 >> 2] | 0) | 0;
  i4 = HEAP32[i3 + 24 >> 2] | 0;
  i2 = i3 + 76 | 0;
  i1 = HEAP32[i2 >> 2] | 0;
  if ((i1 | 0) == -1) {
   i1 = __ZNKSt3__18ios_base6getlocEv(i3) | 0;
   HEAP32[i5 >> 2] = i1;
   i1 = __ZNKSt3__16locale9use_facetERNS0_2idE(i5, 38376) | 0;
   i1 = FUNCTION_TABLE_iii[HEAP32[(HEAP32[i1 >> 2] | 0) + 28 >> 2] & 63](i1, 32) | 0;
   __ZNSt3__16localeD2Ev(i5);
   i1 = i1 << 24 >> 24;
   HEAP32[i2 >> 2] = i1;
  }
  i2 = HEAP32[(HEAP32[i7 >> 2] | 0) + 32 >> 2] | 0;
  HEAP32[i6 >> 2] = i4;
  HEAP32[i5 >> 2] = HEAP32[i6 >> 2];
  if (!(FUNCTION_TABLE_iiiiid[i2 & 7](i7, i5, i3, i1 & 255, d8) | 0)) {
   i7 = i10 + (HEAP32[(HEAP32[i10 >> 2] | 0) + -12 >> 2] | 0) + 16 | 0;
   HEAP32[i7 >> 2] = HEAP32[i7 >> 2] | 5;
  }
 }
 __ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEE6sentryD2Ev(i9);
 STACKTOP = i11;
 return i10 | 0;
}

function __ZN10MixedArena5allocIN4wasm8SetLocalEEEPT_v(i1) {
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0;
 i9 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i6 = i9;
 i7 = _pthread_self() | 0;
 if ((i7 | 0) == (HEAP32[i1 + 16 >> 2] | 0)) {
  i4 = i1 + 4 | 0;
  i5 = HEAP32[i4 >> 2] | 0;
  i2 = i5;
  if ((i5 | 0) != (HEAP32[i1 >> 2] | 0) ? (i3 = i1 + 12 | 0, i8 = HEAP32[i3 >> 2] | 0, (i8 + 16 | 0) >>> 0 <= 9999) : 0) i1 = i8; else {
   i3 = __Znaj(1e4) | 0;
   HEAP32[i6 >> 2] = i3;
   if (i2 >>> 0 < (HEAP32[i1 + 8 >> 2] | 0) >>> 0) {
    HEAP32[i5 >> 2] = i3;
    i2 = (HEAP32[i4 >> 2] | 0) + 4 | 0;
    HEAP32[i4 >> 2] = i2;
   } else {
    __ZNSt3__16vectorIPcNS_9allocatorIS1_EEE21__push_back_slow_pathIS1_EEvOT_(i1, i6);
    i2 = HEAP32[i4 >> 2] | 0;
   }
   i3 = i1 + 12 | 0;
   HEAP32[i3 >> 2] = 0;
   i1 = 0;
  }
  i8 = (HEAP32[i2 + -4 >> 2] | 0) + i1 | 0;
  HEAP32[i3 >> 2] = i1 + 16;
  HEAP32[i8 >> 2] = 10;
  HEAP32[i8 + 4 >> 2] = 0;
  i1 = i8;
 } else {
  i5 = i1 + 20 | 0;
  __ZNSt3__15mutex4lockEv(i5);
  L13 : while (1) {
   i3 = i1 + 16 | 0;
   i4 = i1 + 48 | 0;
   while (1) {
    if ((i7 | 0) == (HEAP32[i3 >> 2] | 0)) break L13;
    i2 = HEAP32[i4 >> 2] | 0;
    if (i2 | 0) {
     i1 = i2;
     continue L13;
    }
    i8 = __Znwj(52) | 0;
    __ZN10MixedArenaC2Ev(i8);
    HEAP32[i4 >> 2] = i8;
   }
  }
  i1 = __ZN10MixedArena5allocIN4wasm8SetLocalEEEPT_v(i1) | 0;
  __ZNSt3__15mutex6unlockEv(i5);
 }
 STACKTOP = i9;
 return i1 | 0;
}

function __ZN10MixedArena5allocIN4wasm8GetLocalEEEPT_v(i1) {
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0;
 i9 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i6 = i9;
 i7 = _pthread_self() | 0;
 if ((i7 | 0) == (HEAP32[i1 + 16 >> 2] | 0)) {
  i4 = i1 + 4 | 0;
  i5 = HEAP32[i4 >> 2] | 0;
  i2 = i5;
  if ((i5 | 0) != (HEAP32[i1 >> 2] | 0) ? (i3 = i1 + 12 | 0, i8 = HEAP32[i3 >> 2] | 0, (i8 + 16 | 0) >>> 0 <= 9999) : 0) i1 = i8; else {
   i3 = __Znaj(1e4) | 0;
   HEAP32[i6 >> 2] = i3;
   if (i2 >>> 0 < (HEAP32[i1 + 8 >> 2] | 0) >>> 0) {
    HEAP32[i5 >> 2] = i3;
    i2 = (HEAP32[i4 >> 2] | 0) + 4 | 0;
    HEAP32[i4 >> 2] = i2;
   } else {
    __ZNSt3__16vectorIPcNS_9allocatorIS1_EEE21__push_back_slow_pathIS1_EEvOT_(i1, i6);
    i2 = HEAP32[i4 >> 2] | 0;
   }
   i3 = i1 + 12 | 0;
   HEAP32[i3 >> 2] = 0;
   i1 = 0;
  }
  i8 = (HEAP32[i2 + -4 >> 2] | 0) + i1 | 0;
  HEAP32[i3 >> 2] = i1 + 16;
  HEAP32[i8 >> 2] = 9;
  HEAP32[i8 + 4 >> 2] = 0;
  i1 = i8;
 } else {
  i5 = i1 + 20 | 0;
  __ZNSt3__15mutex4lockEv(i5);
  L13 : while (1) {
   i3 = i1 + 16 | 0;
   i4 = i1 + 48 | 0;
   while (1) {
    if ((i7 | 0) == (HEAP32[i3 >> 2] | 0)) break L13;
    i2 = HEAP32[i4 >> 2] | 0;
    if (i2 | 0) {
     i1 = i2;
     continue L13;
    }
    i8 = __Znwj(52) | 0;
    __ZN10MixedArenaC2Ev(i8);
    HEAP32[i4 >> 2] = i8;
   }
  }
  i1 = __ZN10MixedArena5allocIN4wasm8GetLocalEEEPT_v(i1) | 0;
  __ZNSt3__15mutex6unlockEv(i5);
 }
 STACKTOP = i9;
 return i1 | 0;
}

function __ZN10MixedArena5allocIN4wasm6SelectEEEPT_v(i1) {
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0;
 i9 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i6 = i9;
 i7 = _pthread_self() | 0;
 if ((i7 | 0) == (HEAP32[i1 + 16 >> 2] | 0)) {
  i4 = i1 + 4 | 0;
  i5 = HEAP32[i4 >> 2] | 0;
  i2 = i5;
  if ((i5 | 0) != (HEAP32[i1 >> 2] | 0) ? (i3 = i1 + 12 | 0, i8 = HEAP32[i3 >> 2] | 0, (i8 + 24 | 0) >>> 0 <= 9999) : 0) i1 = i8; else {
   i3 = __Znaj(1e4) | 0;
   HEAP32[i6 >> 2] = i3;
   if (i2 >>> 0 < (HEAP32[i1 + 8 >> 2] | 0) >>> 0) {
    HEAP32[i5 >> 2] = i3;
    i2 = (HEAP32[i4 >> 2] | 0) + 4 | 0;
    HEAP32[i4 >> 2] = i2;
   } else {
    __ZNSt3__16vectorIPcNS_9allocatorIS1_EEE21__push_back_slow_pathIS1_EEvOT_(i1, i6);
    i2 = HEAP32[i4 >> 2] | 0;
   }
   i3 = i1 + 12 | 0;
   HEAP32[i3 >> 2] = 0;
   i1 = 0;
  }
  i8 = (HEAP32[i2 + -4 >> 2] | 0) + i1 | 0;
  HEAP32[i3 >> 2] = i1 + 24;
  HEAP32[i8 >> 2] = 16;
  HEAP32[i8 + 4 >> 2] = 0;
  i1 = i8;
 } else {
  i5 = i1 + 20 | 0;
  __ZNSt3__15mutex4lockEv(i5);
  L13 : while (1) {
   i3 = i1 + 16 | 0;
   i4 = i1 + 48 | 0;
   while (1) {
    if ((i7 | 0) == (HEAP32[i3 >> 2] | 0)) break L13;
    i2 = HEAP32[i4 >> 2] | 0;
    if (i2 | 0) {
     i1 = i2;
     continue L13;
    }
    i8 = __Znwj(52) | 0;
    __ZN10MixedArenaC2Ev(i8);
    HEAP32[i4 >> 2] = i8;
   }
  }
  i1 = __ZN10MixedArena5allocIN4wasm6SelectEEEPT_v(i1) | 0;
  __ZNSt3__15mutex6unlockEv(i5);
 }
 STACKTOP = i9;
 return i1 | 0;
}

function __ZN10MixedArena5allocIN4wasm6BinaryEEEPT_v(i1) {
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0;
 i9 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i6 = i9;
 i7 = _pthread_self() | 0;
 if ((i7 | 0) == (HEAP32[i1 + 16 >> 2] | 0)) {
  i4 = i1 + 4 | 0;
  i5 = HEAP32[i4 >> 2] | 0;
  i2 = i5;
  if ((i5 | 0) != (HEAP32[i1 >> 2] | 0) ? (i3 = i1 + 12 | 0, i8 = HEAP32[i3 >> 2] | 0, (i8 + 24 | 0) >>> 0 <= 9999) : 0) i1 = i8; else {
   i3 = __Znaj(1e4) | 0;
   HEAP32[i6 >> 2] = i3;
   if (i2 >>> 0 < (HEAP32[i1 + 8 >> 2] | 0) >>> 0) {
    HEAP32[i5 >> 2] = i3;
    i2 = (HEAP32[i4 >> 2] | 0) + 4 | 0;
    HEAP32[i4 >> 2] = i2;
   } else {
    __ZNSt3__16vectorIPcNS_9allocatorIS1_EEE21__push_back_slow_pathIS1_EEvOT_(i1, i6);
    i2 = HEAP32[i4 >> 2] | 0;
   }
   i3 = i1 + 12 | 0;
   HEAP32[i3 >> 2] = 0;
   i1 = 0;
  }
  i8 = (HEAP32[i2 + -4 >> 2] | 0) + i1 | 0;
  HEAP32[i3 >> 2] = i1 + 24;
  HEAP32[i8 >> 2] = 15;
  HEAP32[i8 + 4 >> 2] = 0;
  i1 = i8;
 } else {
  i5 = i1 + 20 | 0;
  __ZNSt3__15mutex4lockEv(i5);
  L13 : while (1) {
   i3 = i1 + 16 | 0;
   i4 = i1 + 48 | 0;
   while (1) {
    if ((i7 | 0) == (HEAP32[i3 >> 2] | 0)) break L13;
    i2 = HEAP32[i4 >> 2] | 0;
    if (i2 | 0) {
     i1 = i2;
     continue L13;
    }
    i8 = __Znwj(52) | 0;
    __ZN10MixedArenaC2Ev(i8);
    HEAP32[i4 >> 2] = i8;
   }
  }
  i1 = __ZN10MixedArena5allocIN4wasm6BinaryEEEPT_v(i1) | 0;
  __ZNSt3__15mutex6unlockEv(i5);
 }
 STACKTOP = i9;
 return i1 | 0;
}

function __ZN10MixedArena5allocIN4wasm5UnaryEEEPT_v(i1) {
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0;
 i9 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i6 = i9;
 i7 = _pthread_self() | 0;
 if ((i7 | 0) == (HEAP32[i1 + 16 >> 2] | 0)) {
  i4 = i1 + 4 | 0;
  i5 = HEAP32[i4 >> 2] | 0;
  i2 = i5;
  if ((i5 | 0) != (HEAP32[i1 >> 2] | 0) ? (i3 = i1 + 12 | 0, i8 = HEAP32[i3 >> 2] | 0, (i8 + 16 | 0) >>> 0 <= 9999) : 0) i1 = i8; else {
   i3 = __Znaj(1e4) | 0;
   HEAP32[i6 >> 2] = i3;
   if (i2 >>> 0 < (HEAP32[i1 + 8 >> 2] | 0) >>> 0) {
    HEAP32[i5 >> 2] = i3;
    i2 = (HEAP32[i4 >> 2] | 0) + 4 | 0;
    HEAP32[i4 >> 2] = i2;
   } else {
    __ZNSt3__16vectorIPcNS_9allocatorIS1_EEE21__push_back_slow_pathIS1_EEvOT_(i1, i6);
    i2 = HEAP32[i4 >> 2] | 0;
   }
   i3 = i1 + 12 | 0;
   HEAP32[i3 >> 2] = 0;
   i1 = 0;
  }
  i8 = (HEAP32[i2 + -4 >> 2] | 0) + i1 | 0;
  HEAP32[i3 >> 2] = i1 + 16;
  HEAP32[i8 >> 2] = 14;
  HEAP32[i8 + 4 >> 2] = 0;
  i1 = i8;
 } else {
  i5 = i1 + 20 | 0;
  __ZNSt3__15mutex4lockEv(i5);
  L13 : while (1) {
   i3 = i1 + 16 | 0;
   i4 = i1 + 48 | 0;
   while (1) {
    if ((i7 | 0) == (HEAP32[i3 >> 2] | 0)) break L13;
    i2 = HEAP32[i4 >> 2] | 0;
    if (i2 | 0) {
     i1 = i2;
     continue L13;
    }
    i8 = __Znwj(52) | 0;
    __ZN10MixedArenaC2Ev(i8);
    HEAP32[i4 >> 2] = i8;
   }
  }
  i1 = __ZN10MixedArena5allocIN4wasm5UnaryEEEPT_v(i1) | 0;
  __ZNSt3__15mutex6unlockEv(i5);
 }
 STACKTOP = i9;
 return i1 | 0;
}

function __ZN10MixedArena5allocIN4wasm5StoreEEEPT_v(i1) {
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0;
 i9 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i6 = i9;
 i7 = _pthread_self() | 0;
 if ((i7 | 0) == (HEAP32[i1 + 16 >> 2] | 0)) {
  i4 = i1 + 4 | 0;
  i5 = HEAP32[i4 >> 2] | 0;
  i2 = i5;
  if ((i5 | 0) != (HEAP32[i1 >> 2] | 0) ? (i3 = i1 + 12 | 0, i8 = HEAP32[i3 >> 2] | 0, (i8 + 32 | 0) >>> 0 <= 9999) : 0) i1 = i8; else {
   i3 = __Znaj(1e4) | 0;
   HEAP32[i6 >> 2] = i3;
   if (i2 >>> 0 < (HEAP32[i1 + 8 >> 2] | 0) >>> 0) {
    HEAP32[i5 >> 2] = i3;
    i2 = (HEAP32[i4 >> 2] | 0) + 4 | 0;
    HEAP32[i4 >> 2] = i2;
   } else {
    __ZNSt3__16vectorIPcNS_9allocatorIS1_EEE21__push_back_slow_pathIS1_EEvOT_(i1, i6);
    i2 = HEAP32[i4 >> 2] | 0;
   }
   i3 = i1 + 12 | 0;
   HEAP32[i3 >> 2] = 0;
   i1 = 0;
  }
  i8 = (HEAP32[i2 + -4 >> 2] | 0) + i1 | 0;
  HEAP32[i3 >> 2] = i1 + 32;
  HEAP32[i8 >> 2] = 12;
  HEAP32[i8 + 4 >> 2] = 0;
  i1 = i8;
 } else {
  i5 = i1 + 20 | 0;
  __ZNSt3__15mutex4lockEv(i5);
  L13 : while (1) {
   i3 = i1 + 16 | 0;
   i4 = i1 + 48 | 0;
   while (1) {
    if ((i7 | 0) == (HEAP32[i3 >> 2] | 0)) break L13;
    i2 = HEAP32[i4 >> 2] | 0;
    if (i2 | 0) {
     i1 = i2;
     continue L13;
    }
    i8 = __Znwj(52) | 0;
    __ZN10MixedArenaC2Ev(i8);
    HEAP32[i4 >> 2] = i8;
   }
  }
  i1 = __ZN10MixedArena5allocIN4wasm5StoreEEEPT_v(i1) | 0;
  __ZNSt3__15mutex6unlockEv(i5);
 }
 STACKTOP = i9;
 return i1 | 0;
}

function __ZN10MixedArena5allocIN4wasm4LoadEEEPT_v(i1) {
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0;
 i9 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i6 = i9;
 i7 = _pthread_self() | 0;
 if ((i7 | 0) == (HEAP32[i1 + 16 >> 2] | 0)) {
  i4 = i1 + 4 | 0;
  i5 = HEAP32[i4 >> 2] | 0;
  i2 = i5;
  if ((i5 | 0) != (HEAP32[i1 >> 2] | 0) ? (i3 = i1 + 12 | 0, i8 = HEAP32[i3 >> 2] | 0, (i8 + 32 | 0) >>> 0 <= 9999) : 0) i1 = i8; else {
   i3 = __Znaj(1e4) | 0;
   HEAP32[i6 >> 2] = i3;
   if (i2 >>> 0 < (HEAP32[i1 + 8 >> 2] | 0) >>> 0) {
    HEAP32[i5 >> 2] = i3;
    i2 = (HEAP32[i4 >> 2] | 0) + 4 | 0;
    HEAP32[i4 >> 2] = i2;
   } else {
    __ZNSt3__16vectorIPcNS_9allocatorIS1_EEE21__push_back_slow_pathIS1_EEvOT_(i1, i6);
    i2 = HEAP32[i4 >> 2] | 0;
   }
   i3 = i1 + 12 | 0;
   HEAP32[i3 >> 2] = 0;
   i1 = 0;
  }
  i8 = (HEAP32[i2 + -4 >> 2] | 0) + i1 | 0;
  HEAP32[i3 >> 2] = i1 + 32;
  HEAP32[i8 >> 2] = 11;
  HEAP32[i8 + 4 >> 2] = 0;
  i1 = i8;
 } else {
  i5 = i1 + 20 | 0;
  __ZNSt3__15mutex4lockEv(i5);
  L13 : while (1) {
   i3 = i1 + 16 | 0;
   i4 = i1 + 48 | 0;
   while (1) {
    if ((i7 | 0) == (HEAP32[i3 >> 2] | 0)) break L13;
    i2 = HEAP32[i4 >> 2] | 0;
    if (i2 | 0) {
     i1 = i2;
     continue L13;
    }
    i8 = __Znwj(52) | 0;
    __ZN10MixedArenaC2Ev(i8);
    HEAP32[i4 >> 2] = i8;
   }
  }
  i1 = __ZN10MixedArena5allocIN4wasm4LoadEEEPT_v(i1) | 0;
  __ZNSt3__15mutex6unlockEv(i5);
 }
 STACKTOP = i9;
 return i1 | 0;
}

function __ZN10MixedArena5allocIN4wasm3NopEEEPT_v(i1) {
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0;
 i9 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i6 = i9;
 i7 = _pthread_self() | 0;
 if ((i7 | 0) == (HEAP32[i1 + 16 >> 2] | 0)) {
  i4 = i1 + 4 | 0;
  i5 = HEAP32[i4 >> 2] | 0;
  i2 = i5;
  if ((i5 | 0) != (HEAP32[i1 >> 2] | 0) ? (i3 = i1 + 12 | 0, i8 = HEAP32[i3 >> 2] | 0, (i8 + 8 | 0) >>> 0 <= 9999) : 0) i1 = i8; else {
   i3 = __Znaj(1e4) | 0;
   HEAP32[i6 >> 2] = i3;
   if (i2 >>> 0 < (HEAP32[i1 + 8 >> 2] | 0) >>> 0) {
    HEAP32[i5 >> 2] = i3;
    i2 = (HEAP32[i4 >> 2] | 0) + 4 | 0;
    HEAP32[i4 >> 2] = i2;
   } else {
    __ZNSt3__16vectorIPcNS_9allocatorIS1_EEE21__push_back_slow_pathIS1_EEvOT_(i1, i6);
    i2 = HEAP32[i4 >> 2] | 0;
   }
   i3 = i1 + 12 | 0;
   HEAP32[i3 >> 2] = 0;
   i1 = 0;
  }
  i8 = (HEAP32[i2 + -4 >> 2] | 0) + i1 | 0;
  HEAP32[i3 >> 2] = i1 + 8;
  HEAP32[i8 >> 2] = 19;
  HEAP32[i8 + 4 >> 2] = 0;
  i1 = i8;
 } else {
  i5 = i1 + 20 | 0;
  __ZNSt3__15mutex4lockEv(i5);
  L13 : while (1) {
   i3 = i1 + 16 | 0;
   i4 = i1 + 48 | 0;
   while (1) {
    if ((i7 | 0) == (HEAP32[i3 >> 2] | 0)) break L13;
    i2 = HEAP32[i4 >> 2] | 0;
    if (i2 | 0) {
     i1 = i2;
     continue L13;
    }
    i8 = __Znwj(52) | 0;
    __ZN10MixedArenaC2Ev(i8);
    HEAP32[i4 >> 2] = i8;
   }
  }
  i1 = __ZN10MixedArena5allocIN4wasm3NopEEEPT_v(i1) | 0;
  __ZNSt3__15mutex6unlockEv(i5);
 }
 STACKTOP = i9;
 return i1 | 0;
}

function __ZNSt3__16vectorINS_3mapIjN4wasm14SimplifyLocals12SinkableInfoENS_4lessIjEENS_9allocatorINS_4pairIKjS4_EEEEEENS7_ISC_EEE21__push_back_slow_pathISC_EEvOT_(i7, i6) {
 i7 = i7 | 0;
 i6 = i6 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i8 = 0;
 i8 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i5 = i8;
 i3 = i7 + 4 | 0;
 i4 = HEAP32[i7 >> 2] | 0;
 i2 = (((HEAP32[i3 >> 2] | 0) - i4 | 0) / 12 | 0) + 1 | 0;
 if (i2 >>> 0 > 357913941) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i7);
 i1 = ((HEAP32[i7 + 8 >> 2] | 0) - i4 | 0) / 12 | 0;
 if (i1 >>> 0 < 178956970) {
  i1 = i1 << 1;
  i1 = i1 >>> 0 < i2 >>> 0 ? i2 : i1;
 } else i1 = 357913941;
 __ZNSt3__114__split_bufferINS_3mapIjN4wasm14SimplifyLocals12SinkableInfoENS_4lessIjEENS_9allocatorINS_4pairIKjS4_EEEEEERNS7_ISC_EEEC2EjjSE_(i5, i1, ((HEAP32[i3 >> 2] | 0) - i4 | 0) / 12 | 0, i7 + 8 | 0);
 i4 = i5 + 8 | 0;
 i3 = HEAP32[i4 >> 2] | 0;
 __ZNSt3__16__treeINS_12__value_typeIjN4wasm14SimplifyLocals12SinkableInfoEEENS_19__map_value_compareIjS5_NS_4lessIjEELb1EEENS_9allocatorIS5_EEEC2EOSC_(i3, i6);
 HEAP32[i4 >> 2] = i3 + 12;
 __ZNSt3__16vectorINS_3mapIjN4wasm14SimplifyLocals12SinkableInfoENS_4lessIjEENS_9allocatorINS_4pairIKjS4_EEEEEENS7_ISC_EEE26__swap_out_circular_bufferERNS_14__split_bufferISC_RSD_EE(i7, i5);
 __ZNSt3__114__split_bufferINS_3mapIjN4wasm14SimplifyLocals12SinkableInfoENS_4lessIjEENS_9allocatorINS_4pairIKjS4_EEEEEERNS7_ISC_EEED2Ev(i5);
 STACKTOP = i8;
 return;
}

function __ZZN4wasm14ModuleInstance12callFunctionEN6cashew7IStringERNSt3__16vectorINS_7LiteralENS3_9allocatorIS5_EEEEEN16ExpressionRunner17generateArgumentsERKNS4_IPNS_10ExpressionENS6_ISC_EEEES9_(i7, i9, i1, i8) {
 i7 = i7 | 0;
 i9 = i9 | 0;
 i1 = i1 | 0;
 i8 = i8 | 0;
 var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i10 = 0;
 i3 = i1 + 4 | 0;
 __ZNSt3__16vectorIN4wasm7LiteralENS_9allocatorIS2_EEE7reserveEj(i8, (HEAP32[i3 >> 2] | 0) - (HEAP32[i1 >> 2] | 0) >> 2);
 i3 = HEAP32[i3 >> 2] | 0;
 i4 = i7 + 16 | 0;
 i5 = i8 + 4 | 0;
 i6 = i8 + 8 | 0;
 i2 = HEAP32[i1 >> 2] | 0;
 while (1) {
  if ((i2 | 0) == (i3 | 0)) {
   i10 = 8;
   break;
  }
  __ZN4wasm7VisitorIZNS_14ModuleInstance12callFunctionEN6cashew7IStringERNSt3__16vectorINS_7LiteralENS4_9allocatorIS6_EEEEE16ExpressionRunnerNS_4FlowEE5visitEPNS_10ExpressionE(i7, i9, HEAP32[i2 >> 2] | 0);
  if (HEAP32[i4 >> 2] | 0) break;
  i1 = HEAP32[i5 >> 2] | 0;
  if ((i1 | 0) == (HEAP32[i6 >> 2] | 0)) __ZNSt3__16vectorIN4wasm7LiteralENS_9allocatorIS2_EEE21__push_back_slow_pathIRKS2_EEvOT_(i8, i7); else {
   HEAP32[i1 >> 2] = HEAP32[i7 >> 2];
   HEAP32[i1 + 4 >> 2] = HEAP32[i7 + 4 >> 2];
   HEAP32[i1 + 8 >> 2] = HEAP32[i7 + 8 >> 2];
   HEAP32[i1 + 12 >> 2] = HEAP32[i7 + 12 >> 2];
   HEAP32[i5 >> 2] = (HEAP32[i5 >> 2] | 0) + 16;
  }
  i2 = i2 + 4 | 0;
 }
 if ((i10 | 0) == 8) {
  HEAP32[i7 >> 2] = 0;
  i10 = i7 + 8 | 0;
  HEAP32[i10 >> 2] = 0;
  HEAP32[i10 + 4 >> 2] = 0;
  HEAP32[i4 >> 2] = 0;
 }
 return;
}

function __ZN10__cxxabiv112_GLOBAL__N_118parse_template_argINS0_2DbEEEPKcS4_S4_RT_(i1, i4, i3) {
 i1 = i1 | 0;
 i4 = i4 | 0;
 i3 = i3 | 0;
 var i2 = 0, i5 = 0;
 L1 : do if ((i1 | 0) != (i4 | 0)) switch (HEAP8[i1 >> 0] | 0) {
 case 88:
  {
   i5 = i1 + 1 | 0;
   i2 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_(i5, i4, i3) | 0;
   if ((i2 | 0) == (i5 | 0) | (i2 | 0) == (i4 | 0)) break L1;
   i1 = (HEAP8[i2 >> 0] | 0) == 69 ? i2 + 1 | 0 : i1;
   break L1;
  }
 case 74:
  {
   i2 = i1 + 1 | 0;
   if ((i2 | 0) == (i4 | 0)) break L1;
   while (1) {
    if ((HEAP8[i2 >> 0] | 0) == 69) {
     i1 = i2;
     break;
    }
    i5 = i2;
    i2 = __ZN10__cxxabiv112_GLOBAL__N_118parse_template_argINS0_2DbEEEPKcS4_S4_RT_(i2, i4, i3) | 0;
    if ((i2 | 0) == (i5 | 0)) break L1;
   }
   i1 = i1 + 1 | 0;
   break L1;
  }
 case 76:
  {
   i5 = i1 + 1 | 0;
   if ((i5 | 0) != (i4 | 0) ? (HEAP8[i5 >> 0] | 0) == 90 : 0) {
    i5 = i1 + 2 | 0;
    i2 = __ZN10__cxxabiv112_GLOBAL__N_114parse_encodingINS0_2DbEEEPKcS4_S4_RT_(i5, i4, i3) | 0;
    if ((i2 | 0) == (i5 | 0) | (i2 | 0) == (i4 | 0)) break L1;
    i1 = (HEAP8[i2 >> 0] | 0) == 69 ? i2 + 1 | 0 : i1;
    break L1;
   }
   i1 = __ZN10__cxxabiv112_GLOBAL__N_118parse_expr_primaryINS0_2DbEEEPKcS4_S4_RT_(i1, i4, i3) | 0;
   break L1;
  }
 default:
  {
   i1 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_(i1, i4, i3) | 0;
   break L1;
  }
 } while (0);
 return i1 | 0;
}

function __ZZN4wasm14ModuleInstance12callFunctionEN6cashew7IStringERNSt3__16vectorINS_7LiteralENS3_9allocatorIS5_EEEEEN16ExpressionRunner11truncSFloatEPNS_5UnaryES5_(i4, i5, i2, i1) {
 i4 = i4 | 0;
 i5 = i5 | 0;
 i2 = i2 | 0;
 i1 = i1 | 0;
 var d3 = 0.0, d6 = 0.0;
 d3 = +__ZN4wasm7Literal8getFloatEv(i1);
 d6 = +Math_abs(+d3);
 HEAPF64[tempDoublePtr >> 3] = d6;
 i1 = HEAP32[tempDoublePtr + 4 >> 2] | 0;
 if (i1 >>> 0 > 2146435072 | (i1 | 0) == 2146435072 & (HEAP32[tempDoublePtr >> 2] | 0) >>> 0 > 0) {
  i1 = HEAP32[(HEAP32[i5 >> 2] | 0) + 24 >> 2] | 0;
  FUNCTION_TABLE_vii[HEAP32[(HEAP32[i1 >> 2] | 0) + 20 >> 2] & 511](i1, 16433);
 }
 if ((HEAP32[i2 + 4 >> 2] | 0) == 1) {
  if (d3 > 2147483647.0 | d3 < -2147483648.0) {
   i5 = HEAP32[(HEAP32[i5 >> 2] | 0) + 24 >> 2] | 0;
   FUNCTION_TABLE_vii[HEAP32[(HEAP32[i5 >> 2] | 0) + 20 >> 2] & 511](i5, 16452);
  }
  HEAP32[i4 >> 2] = 1;
  HEAP32[i4 + 8 >> 2] = ~~d3;
 } else {
  i1 = ~~d3 >>> 0;
  i2 = +Math_abs(d3) >= 1.0 ? (d3 > 0.0 ? ~~+Math_min(+Math_floor(d3 / 4294967296.0), 4294967295.0) >>> 0 : ~~+Math_ceil((d3 - +(~~d3 >>> 0)) / 4294967296.0) >>> 0) : 0;
  if (d3 < -9223372036854775808.0 | d3 >= 1.0 & ((i2 | 0) < 0 | (i2 | 0) == 0 & i1 >>> 0 < 1)) {
   i5 = HEAP32[(HEAP32[i5 >> 2] | 0) + 24 >> 2] | 0;
   FUNCTION_TABLE_vii[HEAP32[(HEAP32[i5 >> 2] | 0) + 20 >> 2] & 511](i5, 16477);
  }
  HEAP32[i4 >> 2] = 2;
  i5 = i4 + 8 | 0;
  HEAP32[i5 >> 2] = i1;
  HEAP32[i5 + 4 >> 2] = i2;
 }
 return;
}

function __ZN10__cxxabiv112_GLOBAL__N_115parse_simple_idINS0_2DbEEEPKcS4_S4_RT_(i4, i2, i3) {
 i4 = i4 | 0;
 i2 = i2 | 0;
 i3 = i3 | 0;
 var i1 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0;
 i8 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i7 = i8;
 if ((i4 | 0) != (i2 | 0) ? (i1 = __ZN10__cxxabiv112_GLOBAL__N_117parse_source_nameINS0_2DbEEEPKcS4_S4_RT_(i4, i2, i3) | 0, (i1 | 0) != (i4 | 0)) : 0) {
  i6 = __ZN10__cxxabiv112_GLOBAL__N_119parse_template_argsINS0_2DbEEEPKcS4_S4_RT_(i1, i2, i3) | 0;
  if ((i6 | 0) != (i1 | 0)) {
   i5 = i3 + 4 | 0;
   i1 = HEAP32[i5 >> 2] | 0;
   if (((i1 - (HEAP32[i3 >> 2] | 0) | 0) / 24 | 0) >>> 0 < 2) i1 = i4; else {
    __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv(i7, i1 + -24 | 0);
    i1 = HEAP32[i5 >> 2] | 0;
    i2 = i1 + -24 | 0;
    i3 = i1;
    while (1) {
     if ((i3 | 0) == (i2 | 0)) break;
     i4 = i3 + -24 | 0;
     HEAP32[i5 >> 2] = i4;
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i4);
     i3 = HEAP32[i5 >> 2] | 0;
    }
    i5 = HEAP8[i7 >> 0] | 0;
    i4 = (i5 & 1) == 0;
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj(i1 + -48 | 0, i4 ? i7 + 1 | 0 : HEAP32[i7 + 8 >> 2] | 0, i4 ? (i5 & 255) >>> 1 : HEAP32[i7 + 4 >> 2] | 0) | 0;
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i7);
    i1 = i6;
   }
  }
 } else i1 = i4;
 STACKTOP = i8;
 return i1 | 0;
}

function __ZZN4wasm14ModuleInstance12callFunctionEN6cashew7IStringERNSt3__16vectorINS_7LiteralENS3_9allocatorIS5_EEEEEN16ExpressionRunner11truncUFloatEPNS_5UnaryES5_(i4, i5, i2, i1) {
 i4 = i4 | 0;
 i5 = i5 | 0;
 i2 = i2 | 0;
 i1 = i1 | 0;
 var d3 = 0.0, d6 = 0.0;
 d3 = +__ZN4wasm7Literal8getFloatEv(i1);
 d6 = +Math_abs(+d3);
 HEAPF64[tempDoublePtr >> 3] = d6;
 i1 = HEAP32[tempDoublePtr + 4 >> 2] | 0;
 if (i1 >>> 0 > 2146435072 | (i1 | 0) == 2146435072 & (HEAP32[tempDoublePtr >> 2] | 0) >>> 0 > 0) {
  i1 = HEAP32[(HEAP32[i5 >> 2] | 0) + 24 >> 2] | 0;
  FUNCTION_TABLE_vii[HEAP32[(HEAP32[i1 >> 2] | 0) + 20 >> 2] & 511](i1, 16502);
 }
 if ((HEAP32[i2 + 4 >> 2] | 0) == 1) {
  if (d3 > 4294967295.0 | d3 <= -1.0) {
   i5 = HEAP32[(HEAP32[i5 >> 2] | 0) + 24 >> 2] | 0;
   FUNCTION_TABLE_vii[HEAP32[(HEAP32[i5 >> 2] | 0) + 20 >> 2] & 511](i5, 16521);
  }
  HEAP32[i4 >> 2] = 1;
  HEAP32[i4 + 8 >> 2] = ~~d3 >>> 0;
 } else {
  i1 = ~~d3 >>> 0;
  i2 = +Math_abs(d3) >= 1.0 ? (d3 > 0.0 ? ~~+Math_min(+Math_floor(d3 / 4294967296.0), 4294967295.0) >>> 0 : ~~+Math_ceil((d3 - +(~~d3 >>> 0)) / 4294967296.0) >>> 0) : 0;
  if (d3 <= -1.0 ? 1 : +(i1 >>> 0) + 4294967296.0 * +(i2 >>> 0) < d3 + -1.0) {
   i5 = HEAP32[(HEAP32[i5 >> 2] | 0) + 24 >> 2] | 0;
   FUNCTION_TABLE_vii[HEAP32[(HEAP32[i5 >> 2] | 0) + 20 >> 2] & 511](i5, 16546);
  }
  HEAP32[i4 >> 2] = 2;
  i5 = i4 + 8 | 0;
  HEAP32[i5 >> 2] = i1;
  HEAP32[i5 + 4 >> 2] = i2;
 }
 return;
}

function __ZNSt3__124__put_character_sequenceIcNS_11char_traitsIcEEEERNS_13basic_ostreamIT_T0_EES7_PKS4_j(i8, i10, i1) {
 i8 = i8 | 0;
 i10 = i10 | 0;
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i9 = 0, i11 = 0;
 i11 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i4 = i11 + 12 | 0;
 i9 = i11;
 i5 = i11 + 8 | 0;
 __ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEE6sentryC2ERS3_(i9, i8);
 if (HEAP8[i9 >> 0] | 0) {
  i7 = i8 + (HEAP32[(HEAP32[i8 >> 2] | 0) + -12 >> 2] | 0) | 0;
  HEAP32[i5 >> 2] = HEAP32[i7 + 24 >> 2];
  i6 = HEAP32[i7 + 4 >> 2] | 0;
  i3 = i10 + i1 | 0;
  i2 = i7 + 76 | 0;
  i1 = HEAP32[i2 >> 2] | 0;
  if ((i1 | 0) == -1) {
   i1 = __ZNKSt3__18ios_base6getlocEv(i7) | 0;
   HEAP32[i4 >> 2] = i1;
   i1 = __ZNKSt3__16locale9use_facetERNS0_2idE(i4, 38376) | 0;
   i1 = FUNCTION_TABLE_iii[HEAP32[(HEAP32[i1 >> 2] | 0) + 28 >> 2] & 63](i1, 32) | 0;
   __ZNSt3__16localeD2Ev(i4);
   i1 = i1 << 24 >> 24;
   HEAP32[i2 >> 2] = i1;
  }
  HEAP32[i4 >> 2] = HEAP32[i5 >> 2];
  if (!(__ZNSt3__116__pad_and_outputIcNS_11char_traitsIcEEEENS_19ostreambuf_iteratorIT_T0_EES6_PKS4_S8_S8_RNS_8ios_baseES4_(i4, i10, (i6 & 176 | 0) == 32 ? i3 : i10, i3, i7, i1 & 255) | 0)) {
   i10 = i8 + (HEAP32[(HEAP32[i8 >> 2] | 0) + -12 >> 2] | 0) | 0;
   __ZNSt3__18ios_base5clearEj(i10, HEAP32[i10 + 16 >> 2] | 5);
  }
 }
 __ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEE6sentryD2Ev(i9);
 STACKTOP = i11;
 return i8 | 0;
}

function __ZNSt3__110__stdinbufIwE9pbackfailEj(i5, i1) {
 i5 = i5 | 0;
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i4 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0;
 i9 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i7 = i9 + 16 | 0;
 i6 = i9 + 8 | 0;
 i3 = i9 + 4 | 0;
 i4 = i9;
 i8 = i5 + 52 | 0;
 i2 = (HEAP8[i8 >> 0] | 0) != 0;
 L1 : do if ((i1 | 0) == -1) if (i2) i1 = -1; else {
  i1 = HEAP32[i5 + 48 >> 2] | 0;
  HEAP8[i8 >> 0] = (i1 | 0) != -1 & 1;
 } else {
  do if (i2) {
   i2 = i5 + 48 | 0;
   HEAP32[i3 >> 2] = HEAP32[i2 >> 2];
   i10 = HEAP32[i5 + 36 >> 2] | 0;
   switch (FUNCTION_TABLE_iiiiiiiii[HEAP32[(HEAP32[i10 >> 2] | 0) + 12 >> 2] & 15](i10, HEAP32[i5 + 40 >> 2] | 0, i3, i3 + 4 | 0, i4, i7, i7 + 8 | 0, i6) | 0) {
   case 1:
   case 2:
    {
     i1 = -1;
     break L1;
    }
   case 3:
    {
     HEAP8[i7 >> 0] = HEAP32[i2 >> 2];
     HEAP32[i6 >> 2] = i7 + 1;
     break;
    }
   default:
    {}
   }
   i3 = i5 + 32 | 0;
   while (1) {
    i4 = HEAP32[i6 >> 2] | 0;
    if (i4 >>> 0 <= i7 >>> 0) {
     i3 = 13;
     break;
    }
    i10 = i4 + -1 | 0;
    HEAP32[i6 >> 2] = i10;
    if ((_ungetc(HEAP8[i10 >> 0] | 0, HEAP32[i3 >> 2] | 0) | 0) == -1) {
     i3 = 12;
     break;
    }
   }
   if ((i3 | 0) == 12) {
    i1 = -1;
    break L1;
   } else if ((i3 | 0) == 13) break;
  } else i2 = i5 + 48 | 0; while (0);
  HEAP32[i2 >> 2] = i1;
  HEAP8[i8 >> 0] = 1;
 } while (0);
 STACKTOP = i9;
 return i1 | 0;
}

function __ZNSt3__110__stdinbufIcE9pbackfailEi(i5, i1) {
 i5 = i5 | 0;
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i4 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0;
 i9 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i7 = i9 + 16 | 0;
 i6 = i9 + 4 | 0;
 i3 = i9 + 8 | 0;
 i4 = i9;
 i8 = i5 + 52 | 0;
 i2 = (HEAP8[i8 >> 0] | 0) != 0;
 L1 : do if ((i1 | 0) == -1) if (i2) i1 = -1; else {
  i1 = HEAP32[i5 + 48 >> 2] | 0;
  HEAP8[i8 >> 0] = (i1 | 0) != -1 & 1;
 } else {
  do if (i2) {
   i2 = i5 + 48 | 0;
   HEAP8[i3 >> 0] = HEAP32[i2 >> 2];
   i10 = HEAP32[i5 + 36 >> 2] | 0;
   switch (FUNCTION_TABLE_iiiiiiiii[HEAP32[(HEAP32[i10 >> 2] | 0) + 12 >> 2] & 15](i10, HEAP32[i5 + 40 >> 2] | 0, i3, i3 + 1 | 0, i4, i7, i7 + 8 | 0, i6) | 0) {
   case 1:
   case 2:
    {
     i1 = -1;
     break L1;
    }
   case 3:
    {
     HEAP8[i7 >> 0] = HEAP32[i2 >> 2];
     HEAP32[i6 >> 2] = i7 + 1;
     break;
    }
   default:
    {}
   }
   i3 = i5 + 32 | 0;
   while (1) {
    i4 = HEAP32[i6 >> 2] | 0;
    if (i4 >>> 0 <= i7 >>> 0) {
     i3 = 13;
     break;
    }
    i10 = i4 + -1 | 0;
    HEAP32[i6 >> 2] = i10;
    if ((_ungetc(HEAP8[i10 >> 0] | 0, HEAP32[i3 >> 2] | 0) | 0) == -1) {
     i3 = 12;
     break;
    }
   }
   if ((i3 | 0) == 12) {
    i1 = -1;
    break L1;
   } else if ((i3 | 0) == 13) break;
  } else i2 = i5 + 48 | 0; while (0);
  HEAP32[i2 >> 2] = i1;
  HEAP8[i8 >> 0] = 1;
 } while (0);
 STACKTOP = i9;
 return i1 | 0;
}

function __ZN4wasm16PrintSExpression9visitHostEPNS_4HostE(i4, i3) {
 i4 = i4 | 0;
 i3 = i3 | 0;
 var i1 = 0, i2 = 0, i5 = 0;
 i5 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i1 = i5 + 4 | 0;
 i2 = i5;
 switch (HEAP32[i3 + 8 >> 2] | 0) {
 case 0:
  {
   __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_c(__Z12printOpeningRNSt3__113basic_ostreamIcNS_11char_traitsIcEEEEPKcb(HEAP32[i4 >> 2] | 0, 18816, 0) | 0, 41) | 0;
   break;
  }
 case 1:
  {
   __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_c(__Z12printOpeningRNSt3__113basic_ostreamIcNS_11char_traitsIcEEEEPKcb(HEAP32[i4 >> 2] | 0, 18825, 0) | 0, 41) | 0;
   break;
  }
 case 2:
  {
   __Z12printOpeningRNSt3__113basic_ostreamIcNS_11char_traitsIcEEEEPKcb(HEAP32[i4 >> 2] | 0, 18840, 0) | 0;
   __ZN4wasm16PrintSExpression9incIndentEv(i4);
   __ZN4wasm16PrintSExpression13printFullLineEPNS_10ExpressionE(i4, HEAP32[HEAP32[i3 + 16 >> 2] >> 2] | 0);
   __ZN4wasm16PrintSExpression9decIndentEv(i4);
   break;
  }
 case 3:
  {
   i4 = __Z12printOpeningRNSt3__113basic_ostreamIcNS_11char_traitsIcEEEEPKcb(HEAP32[i4 >> 2] | 0, 18852, 0) | 0;
   HEAP32[i2 >> 2] = HEAP32[i3 + 12 >> 2];
   HEAP32[i1 >> 2] = HEAP32[i2 >> 2];
   __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_c(__ZN4wasmlsERNSt3__113basic_ostreamIcNS0_11char_traitsIcEEEENS_4NameE(i4, i1) | 0, 41) | 0;
   break;
  }
 default:
  _abort();
 }
 STACKTOP = i5;
 return;
}

function __ZNSt3__16vectorINS0_IPN4wasm5BreakENS_9allocatorIS3_EEEENS4_IS6_EEE21__push_back_slow_pathIS6_EEvOT_(i7, i6) {
 i7 = i7 | 0;
 i6 = i6 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i8 = 0;
 i8 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i5 = i8;
 i3 = i7 + 4 | 0;
 i4 = HEAP32[i7 >> 2] | 0;
 i2 = (((HEAP32[i3 >> 2] | 0) - i4 | 0) / 12 | 0) + 1 | 0;
 if (i2 >>> 0 > 357913941) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i7);
 i1 = ((HEAP32[i7 + 8 >> 2] | 0) - i4 | 0) / 12 | 0;
 if (i1 >>> 0 < 178956970) {
  i1 = i1 << 1;
  i1 = i1 >>> 0 < i2 >>> 0 ? i2 : i1;
 } else i1 = 357913941;
 __ZNSt3__114__split_bufferINS_6vectorIPN4wasm5BreakENS_9allocatorIS4_EEEERNS5_IS7_EEEC2EjjS9_(i5, i1, ((HEAP32[i3 >> 2] | 0) - i4 | 0) / 12 | 0, i7 + 8 | 0);
 i4 = i5 + 8 | 0;
 i3 = HEAP32[i4 >> 2] | 0;
 HEAP32[i3 >> 2] = 0;
 i1 = i3 + 4 | 0;
 HEAP32[i1 >> 2] = 0;
 HEAP32[i3 + 8 >> 2] = 0;
 HEAP32[i3 >> 2] = HEAP32[i6 >> 2];
 i2 = i6 + 4 | 0;
 HEAP32[i1 >> 2] = HEAP32[i2 >> 2];
 i1 = i6 + 8 | 0;
 HEAP32[i3 + 8 >> 2] = HEAP32[i1 >> 2];
 HEAP32[i1 >> 2] = 0;
 HEAP32[i2 >> 2] = 0;
 HEAP32[i6 >> 2] = 0;
 HEAP32[i4 >> 2] = i3 + 12;
 __ZNSt3__16vectorINS0_IPN4wasm5BreakENS_9allocatorIS3_EEEENS4_IS6_EEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS7_EE(i7, i5);
 __ZNSt3__114__split_bufferINS_6vectorIPN4wasm5BreakENS_9allocatorIS4_EEEERNS5_IS7_EEED2Ev(i5);
 STACKTOP = i8;
 return;
}

function __ZNSt3__17__sort5IRZN4wasm13ReorderLocals13visitFunctionEPNS1_8FunctionEEUljjE_PjEEjT0_S8_S8_S8_S8_T_(i5, i6, i7, i3, i2, i4) {
 i5 = i5 | 0;
 i6 = i6 | 0;
 i7 = i7 | 0;
 i3 = i3 | 0;
 i2 = i2 | 0;
 i4 = i4 | 0;
 var i1 = 0, i8 = 0;
 i1 = __ZNSt3__17__sort4IRZN4wasm13ReorderLocals13visitFunctionEPNS1_8FunctionEEUljjE_PjEEjT0_S8_S8_S8_T_(i5, i6, i7, i3, i4) | 0;
 if (__ZZN4wasm13ReorderLocals13visitFunctionEPNS_8FunctionEENKUljjE_clEjj(i4, HEAP32[i2 >> 2] | 0, HEAP32[i3 >> 2] | 0) | 0) {
  i8 = HEAP32[i3 >> 2] | 0;
  HEAP32[i3 >> 2] = HEAP32[i2 >> 2];
  HEAP32[i2 >> 2] = i8;
  i2 = i1 + 1 | 0;
  if (__ZZN4wasm13ReorderLocals13visitFunctionEPNS_8FunctionEENKUljjE_clEjj(i4, HEAP32[i3 >> 2] | 0, HEAP32[i7 >> 2] | 0) | 0) {
   i2 = HEAP32[i7 >> 2] | 0;
   HEAP32[i7 >> 2] = HEAP32[i3 >> 2];
   HEAP32[i3 >> 2] = i2;
   i2 = i1 + 2 | 0;
   if (__ZZN4wasm13ReorderLocals13visitFunctionEPNS_8FunctionEENKUljjE_clEjj(i4, HEAP32[i7 >> 2] | 0, HEAP32[i6 >> 2] | 0) | 0) {
    i8 = HEAP32[i6 >> 2] | 0;
    HEAP32[i6 >> 2] = HEAP32[i7 >> 2];
    HEAP32[i7 >> 2] = i8;
    if (__ZZN4wasm13ReorderLocals13visitFunctionEPNS_8FunctionEENKUljjE_clEjj(i4, HEAP32[i6 >> 2] | 0, HEAP32[i5 >> 2] | 0) | 0) {
     i8 = HEAP32[i5 >> 2] | 0;
     HEAP32[i5 >> 2] = HEAP32[i6 >> 2];
     HEAP32[i6 >> 2] = i8;
     i1 = i1 + 4 | 0;
    } else i1 = i1 + 3 | 0;
   } else i1 = i2;
  } else i1 = i2;
 }
 return i1 | 0;
}

function __ZNSt3__19to_stringEj(i8, i6) {
 i8 = i8 | 0;
 i6 = i6 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i7 = 0, i9 = 0, i10 = 0;
 i10 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i7 = i10;
 i9 = i10 + 4 | 0;
 i1 = 0;
 while (1) {
  if ((i1 | 0) == 3) break;
  HEAP32[i9 + (i1 << 2) >> 2] = 0;
  i1 = i1 + 1 | 0;
 }
 if (!(HEAP8[i9 >> 0] & 1)) i1 = 10; else i1 = (HEAP32[i9 >> 2] & -2) + -1 | 0;
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6resizeEjc(i9, i1, 0);
 i3 = HEAP8[i9 >> 0] | 0;
 i4 = i9 + 1 | 0;
 i5 = i9 + 8 | 0;
 i2 = i3;
 i3 = (i3 & 1) == 0 ? (i3 & 255) >>> 1 : HEAP32[i9 + 4 >> 2] | 0;
 while (1) {
  i1 = (i2 & 1) == 0 ? i4 : HEAP32[i5 >> 2] | 0;
  HEAP32[i7 >> 2] = i6;
  i1 = _snprintf(i1, i3 + 1 | 0, 29794, i7) | 0;
  if ((i1 | 0) > -1) {
   if (i1 >>> 0 <= i3 >>> 0) break;
  } else i1 = i3 << 1 | 1;
  __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6resizeEjc(i9, i1, 0);
  i2 = HEAP8[i9 >> 0] | 0;
  i3 = i1;
 }
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6resizeEjc(i9, i1, 0);
 HEAP32[i8 >> 2] = HEAP32[i9 >> 2];
 HEAP32[i8 + 4 >> 2] = HEAP32[i9 + 4 >> 2];
 HEAP32[i8 + 8 >> 2] = HEAP32[i9 + 8 >> 2];
 i1 = 0;
 while (1) {
  if ((i1 | 0) == 3) break;
  HEAP32[i9 + (i1 << 2) >> 2] = 0;
  i1 = i1 + 1 | 0;
 }
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i9);
 STACKTOP = i10;
 return;
}

function ___stdio_read(i8, i7, i9) {
 i8 = i8 | 0;
 i7 = i7 | 0;
 i9 = i9 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i10 = 0, i11 = 0;
 i10 = STACKTOP;
 STACKTOP = STACKTOP + 48 | 0;
 i3 = i10 + 16 | 0;
 i2 = i10;
 i1 = i10 + 32 | 0;
 HEAP32[i1 >> 2] = i7;
 i4 = i1 + 4 | 0;
 i6 = i8 + 48 | 0;
 i11 = HEAP32[i6 >> 2] | 0;
 HEAP32[i4 >> 2] = i9 - ((i11 | 0) != 0 & 1);
 i5 = i8 + 44 | 0;
 HEAP32[i1 + 8 >> 2] = HEAP32[i5 >> 2];
 HEAP32[i1 + 12 >> 2] = i11;
 if (!(HEAP32[9172] | 0)) {
  HEAP32[i3 >> 2] = HEAP32[i8 + 60 >> 2];
  HEAP32[i3 + 4 >> 2] = i1;
  HEAP32[i3 + 8 >> 2] = 2;
  i1 = ___syscall_ret(___syscall145(145, i3 | 0) | 0) | 0;
 } else {
  _pthread_cleanup_push(218, i8 | 0);
  HEAP32[i2 >> 2] = HEAP32[i8 + 60 >> 2];
  HEAP32[i2 + 4 >> 2] = i1;
  HEAP32[i2 + 8 >> 2] = 2;
  i1 = ___syscall_ret(___syscall145(145, i2 | 0) | 0) | 0;
  _pthread_cleanup_pop(0);
 }
 if ((i1 | 0) >= 1) {
  i4 = HEAP32[i4 >> 2] | 0;
  if (i1 >>> 0 > i4 >>> 0) {
   i2 = HEAP32[i5 >> 2] | 0;
   i3 = i8 + 4 | 0;
   HEAP32[i3 >> 2] = i2;
   HEAP32[i8 + 8 >> 2] = i2 + (i1 - i4);
   if (!(HEAP32[i6 >> 2] | 0)) i1 = i9; else {
    HEAP32[i3 >> 2] = i2 + 1;
    HEAP8[i7 + (i9 + -1) >> 0] = HEAP8[i2 >> 0] | 0;
    i1 = i9;
   }
  }
 } else {
  HEAP32[i8 >> 2] = HEAP32[i8 >> 2] | i1 & 48 ^ 16;
  HEAP32[i8 + 8 >> 2] = 0;
  HEAP32[i8 + 4 >> 2] = 0;
 }
 STACKTOP = i10;
 return i1 | 0;
}

function __ZN4wasm14SimplifyLocals18checkInvalidationsERNS_14EffectAnalyzerE(i1, i7) {
 i1 = i1 | 0;
 i7 = i7 | 0;
 var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0;
 i11 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i10 = i11 + 4 | 0;
 i9 = i11;
 HEAP32[i10 >> 2] = 0;
 i6 = i10 + 4 | 0;
 HEAP32[i6 >> 2] = 0;
 HEAP32[i10 + 8 >> 2] = 0;
 i8 = i1 + 40 | 0;
 i3 = i1 + 44 | 0;
 i4 = i10 + 8 | 0;
 i5 = HEAP32[i8 >> 2] | 0;
 while (1) {
  if ((i5 | 0) == (i3 | 0)) break;
  do if (__ZN4wasm14EffectAnalyzer11invalidatesERS0_(i7, i5 + 24 | 0) | 0) {
   i1 = i5 + 16 | 0;
   i2 = HEAP32[i6 >> 2] | 0;
   if ((i2 | 0) == (HEAP32[i4 >> 2] | 0)) {
    __ZNSt3__16vectorIjNS_9allocatorIjEEE21__push_back_slow_pathIRKjEEvOT_(i10, i1);
    break;
   } else {
    HEAP32[i2 >> 2] = HEAP32[i1 >> 2];
    HEAP32[i6 >> 2] = i2 + 4;
    break;
   }
  } while (0);
  i5 = __ZNSt3__111__tree_nextIPNS_16__tree_node_baseIPvEEEET_S5_(i5) | 0;
 }
 i1 = HEAP32[i6 >> 2] | 0;
 i2 = HEAP32[i10 >> 2] | 0;
 while (1) {
  if ((i2 | 0) == (i1 | 0)) break;
  HEAP32[i9 >> 2] = HEAP32[i2 >> 2];
  __ZNSt3__16__treeINS_12__value_typeIjN4wasm14SimplifyLocals12SinkableInfoEEENS_19__map_value_compareIjS5_NS_4lessIjEELb1EEENS_9allocatorIS5_EEE14__erase_uniqueIjEEjRKT_(i8, i9) | 0;
  i2 = i2 + 4 | 0;
 }
 __ZNSt3__113__vector_baseIjNS_9allocatorIjEEED2Ev(i10);
 STACKTOP = i11;
 return;
}

function __ZNSt3__16vectorINS0_INS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEEENS4_IS8_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS8_RS9_EE(i6, i5) {
 i6 = i6 | 0;
 i5 = i5 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0;
 i2 = HEAP32[i6 >> 2] | 0;
 i3 = i6 + 4 | 0;
 i4 = i5 + 4 | 0;
 i1 = HEAP32[i3 >> 2] | 0;
 while (1) {
  if ((i1 | 0) == (i2 | 0)) break;
  i10 = HEAP32[i4 >> 2] | 0;
  i8 = i10 + -16 | 0;
  i7 = i1 + -16 | 0;
  HEAP32[i8 >> 2] = 0;
  i9 = i10 + -12 | 0;
  HEAP32[i9 >> 2] = 0;
  i11 = HEAP32[i1 + -4 >> 2] | 0;
  HEAP32[i10 + -8 >> 2] = 0;
  HEAP32[i10 + -4 >> 2] = i11;
  HEAP32[i8 >> 2] = HEAP32[i7 >> 2];
  i8 = i1 + -12 | 0;
  HEAP32[i9 >> 2] = HEAP32[i8 >> 2];
  i9 = i1 + -8 | 0;
  HEAP32[i10 + -8 >> 2] = HEAP32[i9 >> 2];
  HEAP32[i9 >> 2] = 0;
  HEAP32[i8 >> 2] = 0;
  HEAP32[i7 >> 2] = 0;
  HEAP32[i4 >> 2] = (HEAP32[i4 >> 2] | 0) + -16;
  i1 = i7;
 }
 i9 = HEAP32[i6 >> 2] | 0;
 HEAP32[i6 >> 2] = HEAP32[i4 >> 2];
 HEAP32[i4 >> 2] = i9;
 i9 = i5 + 8 | 0;
 i11 = HEAP32[i3 >> 2] | 0;
 HEAP32[i3 >> 2] = HEAP32[i9 >> 2];
 HEAP32[i9 >> 2] = i11;
 i9 = i6 + 8 | 0;
 i11 = i5 + 12 | 0;
 i10 = HEAP32[i9 >> 2] | 0;
 HEAP32[i9 >> 2] = HEAP32[i11 >> 2];
 HEAP32[i11 >> 2] = i10;
 HEAP32[i5 >> 2] = HEAP32[i4 >> 2];
 return;
}

function __ZN4wasm22SExpressionWasmBuilder11parseExportERNS_7ElementE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 var i3 = 0, i4 = 0;
 i3 = __ZN4wasm7Element4listEv(i1) | 0;
 if ((HEAP8[(HEAP32[(HEAP32[i3 >> 2] | 0) + 8 >> 2] | 0) + 20 >> 0] | 0) == 0 ? (i3 = __ZN4wasm7Element4listEv(i1) | 0, i3 = __ZN4wasm7Element3strEv(HEAP32[(HEAP32[i3 >> 2] | 0) + 8 >> 2] | 0) | 0, ((HEAP8[i3 >> 0] | 0) + -48 | 0) >>> 0 >= 10) : 0) {
  i3 = __ZN4wasm7Element4listEv(i1) | 0;
  i3 = __ZN4wasm7Element3strEv(HEAP32[(HEAP32[i3 >> 2] | 0) + 8 >> 2] | 0) | 0;
  if ((i3 | 0) != (HEAP32[9010] | 0)) ___assert_fail(15266, 14303, 1111, 15288);
  if (!(HEAP8[i2 + 100 >> 0] | 0)) __ZNKSt3__18functionIFvvEEclEv(i2 + 8 | 0);
  i3 = (HEAP32[i2 >> 2] | 0) + 80 | 0;
  i2 = __ZN4wasm7Element4listEv(i1) | 0;
  i2 = __ZN4wasm7Element3strEv(HEAP32[(HEAP32[i2 >> 2] | 0) + 4 >> 2] | 0) | 0;
  HEAP32[i3 >> 2] = i2;
 } else {
  i3 = __ZN10MixedArena5allocIN4wasm6ExportEEEPT_v(HEAP32[i2 + 4 >> 2] | 0) | 0;
  i4 = __ZN4wasm7Element4listEv(i1) | 0;
  i4 = __ZN4wasm7Element3strEv(HEAP32[(HEAP32[i4 >> 2] | 0) + 4 >> 2] | 0) | 0;
  HEAP32[i3 >> 2] = i4;
  i1 = __ZN4wasm7Element4listEv(i1) | 0;
  i1 = __ZN4wasm7Element3strEv(HEAP32[(HEAP32[i1 >> 2] | 0) + 8 >> 2] | 0) | 0;
  HEAP32[i3 + 4 >> 2] = i1;
  __ZN4wasm6Module9addExportEPNS_6ExportE(HEAP32[i2 >> 2] | 0, i3);
 }
 return;
}

function __ZNSt3__16vectorIN4wasm6WalkerINS1_17RemoveUnusedNamesENS1_7VisitorIS3_vEEE4TaskENS_9allocatorIS7_EEE24__emplace_back_slow_pathIJRPFvPS3_PPNS1_10ExpressionEERSF_EEEvDpOT_(i8, i5, i6) {
 i8 = i8 | 0;
 i5 = i5 | 0;
 i6 = i6 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i7 = 0, i9 = 0;
 i9 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i7 = i9;
 i3 = i8 + 4 | 0;
 i4 = HEAP32[i8 >> 2] | 0;
 i2 = ((HEAP32[i3 >> 2] | 0) - i4 >> 3) + 1 | 0;
 if (i2 >>> 0 > 536870911) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i8);
 i1 = (HEAP32[i8 + 8 >> 2] | 0) - i4 | 0;
 if (i1 >> 3 >>> 0 < 268435455) {
  i1 = i1 >> 2;
  i1 = i1 >>> 0 < i2 >>> 0 ? i2 : i1;
 } else i1 = 536870911;
 __ZNSt3__114__split_bufferIN4wasm6WalkerINS1_17RemoveUnusedNamesENS1_7VisitorIS3_vEEE4TaskERNS_9allocatorIS7_EEEC2EjjSA_(i7, i1, (HEAP32[i3 >> 2] | 0) - i4 >> 3, i8 + 8 | 0);
 i4 = i7 + 8 | 0;
 i3 = HEAP32[i4 >> 2] | 0;
 i6 = HEAP32[i6 >> 2] | 0;
 HEAP32[i3 >> 2] = HEAP32[i5 >> 2];
 HEAP32[i3 + 4 >> 2] = i6;
 HEAP32[i4 >> 2] = i3 + 8;
 __ZNSt3__16vectorIN4wasm6WalkerINS1_17RemoveUnusedNamesENS1_7VisitorIS3_vEEE4TaskENS_9allocatorIS7_EEE26__swap_out_circular_bufferERNS_14__split_bufferIS7_RS9_EE(i8, i7);
 __ZNSt3__114__split_bufferIN4wasm6WalkerINS1_17RemoveUnusedNamesENS1_7VisitorIS3_vEEE4TaskERNS_9allocatorIS7_EEED2Ev(i7);
 STACKTOP = i9;
 return;
}

function __ZNSt3__16vectorIN4wasm6WalkerINS1_15SetLocalRemoverENS1_7VisitorIS3_vEEE4TaskENS_9allocatorIS7_EEE24__emplace_back_slow_pathIJRPFvPS3_PPNS1_10ExpressionEERSF_EEEvDpOT_(i8, i5, i6) {
 i8 = i8 | 0;
 i5 = i5 | 0;
 i6 = i6 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i7 = 0, i9 = 0;
 i9 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i7 = i9;
 i3 = i8 + 4 | 0;
 i4 = HEAP32[i8 >> 2] | 0;
 i2 = ((HEAP32[i3 >> 2] | 0) - i4 >> 3) + 1 | 0;
 if (i2 >>> 0 > 536870911) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i8);
 i1 = (HEAP32[i8 + 8 >> 2] | 0) - i4 | 0;
 if (i1 >> 3 >>> 0 < 268435455) {
  i1 = i1 >> 2;
  i1 = i1 >>> 0 < i2 >>> 0 ? i2 : i1;
 } else i1 = 536870911;
 __ZNSt3__114__split_bufferIN4wasm6WalkerINS1_15SetLocalRemoverENS1_7VisitorIS3_vEEE4TaskERNS_9allocatorIS7_EEEC2EjjSA_(i7, i1, (HEAP32[i3 >> 2] | 0) - i4 >> 3, i8 + 8 | 0);
 i4 = i7 + 8 | 0;
 i3 = HEAP32[i4 >> 2] | 0;
 i6 = HEAP32[i6 >> 2] | 0;
 HEAP32[i3 >> 2] = HEAP32[i5 >> 2];
 HEAP32[i3 + 4 >> 2] = i6;
 HEAP32[i4 >> 2] = i3 + 8;
 __ZNSt3__16vectorIN4wasm6WalkerINS1_15SetLocalRemoverENS1_7VisitorIS3_vEEE4TaskENS_9allocatorIS7_EEE26__swap_out_circular_bufferERNS_14__split_bufferIS7_RS9_EE(i8, i7);
 __ZNSt3__114__split_bufferIN4wasm6WalkerINS1_15SetLocalRemoverENS1_7VisitorIS3_vEEE4TaskERNS_9allocatorIS7_EEED2Ev(i7);
 STACKTOP = i9;
 return;
}

function __ZNSt3__16vectorIN4wasm6WalkerINS1_15RemoveUnusedBrsENS1_7VisitorIS3_vEEE4TaskENS_9allocatorIS7_EEE24__emplace_back_slow_pathIJRPFvPS3_PPNS1_10ExpressionEERSF_EEEvDpOT_(i8, i5, i6) {
 i8 = i8 | 0;
 i5 = i5 | 0;
 i6 = i6 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i7 = 0, i9 = 0;
 i9 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i7 = i9;
 i3 = i8 + 4 | 0;
 i4 = HEAP32[i8 >> 2] | 0;
 i2 = ((HEAP32[i3 >> 2] | 0) - i4 >> 3) + 1 | 0;
 if (i2 >>> 0 > 536870911) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i8);
 i1 = (HEAP32[i8 + 8 >> 2] | 0) - i4 | 0;
 if (i1 >> 3 >>> 0 < 268435455) {
  i1 = i1 >> 2;
  i1 = i1 >>> 0 < i2 >>> 0 ? i2 : i1;
 } else i1 = 536870911;
 __ZNSt3__114__split_bufferIN4wasm6WalkerINS1_15RemoveUnusedBrsENS1_7VisitorIS3_vEEE4TaskERNS_9allocatorIS7_EEEC2EjjSA_(i7, i1, (HEAP32[i3 >> 2] | 0) - i4 >> 3, i8 + 8 | 0);
 i4 = i7 + 8 | 0;
 i3 = HEAP32[i4 >> 2] | 0;
 i6 = HEAP32[i6 >> 2] | 0;
 HEAP32[i3 >> 2] = HEAP32[i5 >> 2];
 HEAP32[i3 + 4 >> 2] = i6;
 HEAP32[i4 >> 2] = i3 + 8;
 __ZNSt3__16vectorIN4wasm6WalkerINS1_15RemoveUnusedBrsENS1_7VisitorIS3_vEEE4TaskENS_9allocatorIS7_EEE26__swap_out_circular_bufferERNS_14__split_bufferIS7_RS9_EE(i8, i7);
 __ZNSt3__114__split_bufferIN4wasm6WalkerINS1_15RemoveUnusedBrsENS1_7VisitorIS3_vEEE4TaskERNS_9allocatorIS7_EEED2Ev(i7);
 STACKTOP = i9;
 return;
}

function __ZNSt3__16vectorIN4wasm6WalkerINS1_15GetLocalCounterENS1_7VisitorIS3_vEEE4TaskENS_9allocatorIS7_EEE24__emplace_back_slow_pathIJRPFvPS3_PPNS1_10ExpressionEERSF_EEEvDpOT_(i8, i5, i6) {
 i8 = i8 | 0;
 i5 = i5 | 0;
 i6 = i6 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i7 = 0, i9 = 0;
 i9 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i7 = i9;
 i3 = i8 + 4 | 0;
 i4 = HEAP32[i8 >> 2] | 0;
 i2 = ((HEAP32[i3 >> 2] | 0) - i4 >> 3) + 1 | 0;
 if (i2 >>> 0 > 536870911) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i8);
 i1 = (HEAP32[i8 + 8 >> 2] | 0) - i4 | 0;
 if (i1 >> 3 >>> 0 < 268435455) {
  i1 = i1 >> 2;
  i1 = i1 >>> 0 < i2 >>> 0 ? i2 : i1;
 } else i1 = 536870911;
 __ZNSt3__114__split_bufferIN4wasm6WalkerINS1_15GetLocalCounterENS1_7VisitorIS3_vEEE4TaskERNS_9allocatorIS7_EEEC2EjjSA_(i7, i1, (HEAP32[i3 >> 2] | 0) - i4 >> 3, i8 + 8 | 0);
 i4 = i7 + 8 | 0;
 i3 = HEAP32[i4 >> 2] | 0;
 i6 = HEAP32[i6 >> 2] | 0;
 HEAP32[i3 >> 2] = HEAP32[i5 >> 2];
 HEAP32[i3 + 4 >> 2] = i6;
 HEAP32[i4 >> 2] = i3 + 8;
 __ZNSt3__16vectorIN4wasm6WalkerINS1_15GetLocalCounterENS1_7VisitorIS3_vEEE4TaskENS_9allocatorIS7_EEE26__swap_out_circular_bufferERNS_14__split_bufferIS7_RS9_EE(i8, i7);
 __ZNSt3__114__split_bufferIN4wasm6WalkerINS1_15GetLocalCounterENS1_7VisitorIS3_vEEE4TaskERNS_9allocatorIS7_EEED2Ev(i7);
 STACKTOP = i9;
 return;
}

function __ZNSt3__16vectorIN4wasm6WalkerINS1_14SimplifyLocalsENS1_7VisitorIS3_vEEE4TaskENS_9allocatorIS7_EEE24__emplace_back_slow_pathIJRPFvPS3_PPNS1_10ExpressionEERSF_EEEvDpOT_(i8, i5, i6) {
 i8 = i8 | 0;
 i5 = i5 | 0;
 i6 = i6 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i7 = 0, i9 = 0;
 i9 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i7 = i9;
 i3 = i8 + 4 | 0;
 i4 = HEAP32[i8 >> 2] | 0;
 i2 = ((HEAP32[i3 >> 2] | 0) - i4 >> 3) + 1 | 0;
 if (i2 >>> 0 > 536870911) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i8);
 i1 = (HEAP32[i8 + 8 >> 2] | 0) - i4 | 0;
 if (i1 >> 3 >>> 0 < 268435455) {
  i1 = i1 >> 2;
  i1 = i1 >>> 0 < i2 >>> 0 ? i2 : i1;
 } else i1 = 536870911;
 __ZNSt3__114__split_bufferIN4wasm6WalkerINS1_14SimplifyLocalsENS1_7VisitorIS3_vEEE4TaskERNS_9allocatorIS7_EEEC2EjjSA_(i7, i1, (HEAP32[i3 >> 2] | 0) - i4 >> 3, i8 + 8 | 0);
 i4 = i7 + 8 | 0;
 i3 = HEAP32[i4 >> 2] | 0;
 i6 = HEAP32[i6 >> 2] | 0;
 HEAP32[i3 >> 2] = HEAP32[i5 >> 2];
 HEAP32[i3 + 4 >> 2] = i6;
 HEAP32[i4 >> 2] = i3 + 8;
 __ZNSt3__16vectorIN4wasm6WalkerINS1_14SimplifyLocalsENS1_7VisitorIS3_vEEE4TaskENS_9allocatorIS7_EEE26__swap_out_circular_bufferERNS_14__split_bufferIS7_RS9_EE(i8, i7);
 __ZNSt3__114__split_bufferIN4wasm6WalkerINS1_14SimplifyLocalsENS1_7VisitorIS3_vEEE4TaskERNS_9allocatorIS7_EEED2Ev(i7);
 STACKTOP = i9;
 return;
}

function __ZNSt3__16vectorIN4wasm6WalkerINS1_14PostEmscriptenENS1_7VisitorIS3_vEEE4TaskENS_9allocatorIS7_EEE24__emplace_back_slow_pathIJRPFvPS3_PPNS1_10ExpressionEERSF_EEEvDpOT_(i8, i5, i6) {
 i8 = i8 | 0;
 i5 = i5 | 0;
 i6 = i6 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i7 = 0, i9 = 0;
 i9 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i7 = i9;
 i3 = i8 + 4 | 0;
 i4 = HEAP32[i8 >> 2] | 0;
 i2 = ((HEAP32[i3 >> 2] | 0) - i4 >> 3) + 1 | 0;
 if (i2 >>> 0 > 536870911) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i8);
 i1 = (HEAP32[i8 + 8 >> 2] | 0) - i4 | 0;
 if (i1 >> 3 >>> 0 < 268435455) {
  i1 = i1 >> 2;
  i1 = i1 >>> 0 < i2 >>> 0 ? i2 : i1;
 } else i1 = 536870911;
 __ZNSt3__114__split_bufferIN4wasm6WalkerINS1_14PostEmscriptenENS1_7VisitorIS3_vEEE4TaskERNS_9allocatorIS7_EEEC2EjjSA_(i7, i1, (HEAP32[i3 >> 2] | 0) - i4 >> 3, i8 + 8 | 0);
 i4 = i7 + 8 | 0;
 i3 = HEAP32[i4 >> 2] | 0;
 i6 = HEAP32[i6 >> 2] | 0;
 HEAP32[i3 >> 2] = HEAP32[i5 >> 2];
 HEAP32[i3 + 4 >> 2] = i6;
 HEAP32[i4 >> 2] = i3 + 8;
 __ZNSt3__16vectorIN4wasm6WalkerINS1_14PostEmscriptenENS1_7VisitorIS3_vEEE4TaskENS_9allocatorIS7_EEE26__swap_out_circular_bufferERNS_14__split_bufferIS7_RS9_EE(i8, i7);
 __ZNSt3__114__split_bufferIN4wasm6WalkerINS1_14PostEmscriptenENS1_7VisitorIS3_vEEE4TaskERNS_9allocatorIS7_EEED2Ev(i7);
 STACKTOP = i9;
 return;
}

function __ZNSt3__16vectorIN4wasm6WalkerINS1_14EffectAnalyzerENS1_7VisitorIS3_vEEE4TaskENS_9allocatorIS7_EEE24__emplace_back_slow_pathIJRPFvPS3_PPNS1_10ExpressionEERSF_EEEvDpOT_(i8, i5, i6) {
 i8 = i8 | 0;
 i5 = i5 | 0;
 i6 = i6 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i7 = 0, i9 = 0;
 i9 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i7 = i9;
 i3 = i8 + 4 | 0;
 i4 = HEAP32[i8 >> 2] | 0;
 i2 = ((HEAP32[i3 >> 2] | 0) - i4 >> 3) + 1 | 0;
 if (i2 >>> 0 > 536870911) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i8);
 i1 = (HEAP32[i8 + 8 >> 2] | 0) - i4 | 0;
 if (i1 >> 3 >>> 0 < 268435455) {
  i1 = i1 >> 2;
  i1 = i1 >>> 0 < i2 >>> 0 ? i2 : i1;
 } else i1 = 536870911;
 __ZNSt3__114__split_bufferIN4wasm6WalkerINS1_14EffectAnalyzerENS1_7VisitorIS3_vEEE4TaskERNS_9allocatorIS7_EEEC2EjjSA_(i7, i1, (HEAP32[i3 >> 2] | 0) - i4 >> 3, i8 + 8 | 0);
 i4 = i7 + 8 | 0;
 i3 = HEAP32[i4 >> 2] | 0;
 i6 = HEAP32[i6 >> 2] | 0;
 HEAP32[i3 >> 2] = HEAP32[i5 >> 2];
 HEAP32[i3 + 4 >> 2] = i6;
 HEAP32[i4 >> 2] = i3 + 8;
 __ZNSt3__16vectorIN4wasm6WalkerINS1_14EffectAnalyzerENS1_7VisitorIS3_vEEE4TaskENS_9allocatorIS7_EEE26__swap_out_circular_bufferERNS_14__split_bufferIS7_RS9_EE(i8, i7);
 __ZNSt3__114__split_bufferIN4wasm6WalkerINS1_14EffectAnalyzerENS1_7VisitorIS3_vEEE4TaskERNS_9allocatorIS7_EEED2Ev(i7);
 STACKTOP = i9;
 return;
}

function __ZNSt3__16vectorIN4wasm6WalkerINS1_13ReorderLocalsENS1_7VisitorIS3_vEEE4TaskENS_9allocatorIS7_EEE24__emplace_back_slow_pathIJRPFvPS3_PPNS1_10ExpressionEERSF_EEEvDpOT_(i8, i5, i6) {
 i8 = i8 | 0;
 i5 = i5 | 0;
 i6 = i6 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i7 = 0, i9 = 0;
 i9 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i7 = i9;
 i3 = i8 + 4 | 0;
 i4 = HEAP32[i8 >> 2] | 0;
 i2 = ((HEAP32[i3 >> 2] | 0) - i4 >> 3) + 1 | 0;
 if (i2 >>> 0 > 536870911) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i8);
 i1 = (HEAP32[i8 + 8 >> 2] | 0) - i4 | 0;
 if (i1 >> 3 >>> 0 < 268435455) {
  i1 = i1 >> 2;
  i1 = i1 >>> 0 < i2 >>> 0 ? i2 : i1;
 } else i1 = 536870911;
 __ZNSt3__114__split_bufferIN4wasm6WalkerINS1_13ReorderLocalsENS1_7VisitorIS3_vEEE4TaskERNS_9allocatorIS7_EEEC2EjjSA_(i7, i1, (HEAP32[i3 >> 2] | 0) - i4 >> 3, i8 + 8 | 0);
 i4 = i7 + 8 | 0;
 i3 = HEAP32[i4 >> 2] | 0;
 i6 = HEAP32[i6 >> 2] | 0;
 HEAP32[i3 >> 2] = HEAP32[i5 >> 2];
 HEAP32[i3 + 4 >> 2] = i6;
 HEAP32[i4 >> 2] = i3 + 8;
 __ZNSt3__16vectorIN4wasm6WalkerINS1_13ReorderLocalsENS1_7VisitorIS3_vEEE4TaskENS_9allocatorIS7_EEE26__swap_out_circular_bufferERNS_14__split_bufferIS7_RS9_EE(i8, i7);
 __ZNSt3__114__split_bufferIN4wasm6WalkerINS1_13ReorderLocalsENS1_7VisitorIS3_vEEE4TaskERNS_9allocatorIS7_EEED2Ev(i7);
 STACKTOP = i9;
 return;
}

function __ZNSt3__16vectorINS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS7_EE(i6, i5) {
 i6 = i6 | 0;
 i5 = i5 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0;
 i2 = HEAP32[i6 >> 2] | 0;
 i3 = i6 + 4 | 0;
 i4 = i5 + 4 | 0;
 i1 = HEAP32[i3 >> 2] | 0;
 while (1) {
  if ((i1 | 0) == (i2 | 0)) break;
  i10 = HEAP32[i4 >> 2] | 0;
  i8 = i10 + -16 | 0;
  i7 = i1 + -16 | 0;
  HEAP32[i8 >> 2] = 0;
  i9 = i10 + -12 | 0;
  HEAP32[i9 >> 2] = 0;
  i11 = HEAP32[i1 + -4 >> 2] | 0;
  HEAP32[i10 + -8 >> 2] = 0;
  HEAP32[i10 + -4 >> 2] = i11;
  HEAP32[i8 >> 2] = HEAP32[i7 >> 2];
  i8 = i1 + -12 | 0;
  HEAP32[i9 >> 2] = HEAP32[i8 >> 2];
  i9 = i1 + -8 | 0;
  HEAP32[i10 + -8 >> 2] = HEAP32[i9 >> 2];
  HEAP32[i9 >> 2] = 0;
  HEAP32[i8 >> 2] = 0;
  HEAP32[i7 >> 2] = 0;
  HEAP32[i4 >> 2] = (HEAP32[i4 >> 2] | 0) + -16;
  i1 = i7;
 }
 i9 = HEAP32[i6 >> 2] | 0;
 HEAP32[i6 >> 2] = HEAP32[i4 >> 2];
 HEAP32[i4 >> 2] = i9;
 i9 = i5 + 8 | 0;
 i11 = HEAP32[i3 >> 2] | 0;
 HEAP32[i3 >> 2] = HEAP32[i9 >> 2];
 HEAP32[i9 >> 2] = i11;
 i9 = i6 + 8 | 0;
 i11 = i5 + 12 | 0;
 i10 = HEAP32[i9 >> 2] | 0;
 HEAP32[i9 >> 2] = HEAP32[i11 >> 2];
 HEAP32[i11 >> 2] = i10;
 HEAP32[i5 >> 2] = HEAP32[i4 >> 2];
 return;
}

function _mbtowc(i2, i6, i4) {
 i2 = i2 | 0;
 i6 = i6 | 0;
 i4 = i4 | 0;
 var i1 = 0, i3 = 0, i5 = 0, i7 = 0;
 i7 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i1 = i7;
 L1 : do if (!i6) i1 = 0; else {
  do if (i4 | 0) {
   i5 = (i2 | 0) == 0 ? i1 : i2;
   i1 = HEAP8[i6 >> 0] | 0;
   i2 = i1 & 255;
   if (i1 << 24 >> 24 > -1) {
    HEAP32[i5 >> 2] = i2;
    i1 = i1 << 24 >> 24 != 0 & 1;
    break L1;
   }
   i1 = i2 + -194 | 0;
   if (i1 >>> 0 <= 50) {
    i2 = i6 + 1 | 0;
    i3 = HEAP32[4836 + (i1 << 2) >> 2] | 0;
    if (i4 >>> 0 < 4 ? i3 & -2147483648 >>> ((i4 * 6 | 0) + -6 | 0) | 0 : 0) break;
    i1 = HEAPU8[i2 >> 0] | 0;
    i4 = i1 >>> 3;
    if ((i4 + -16 | i4 + (i3 >> 26)) >>> 0 <= 7) {
     i1 = i1 + -128 | i3 << 6;
     if ((i1 | 0) >= 0) {
      HEAP32[i5 >> 2] = i1;
      i1 = 2;
      break L1;
     }
     i2 = HEAPU8[i6 + 2 >> 0] | 0;
     if ((i2 & 192 | 0) == 128) {
      i2 = i2 + -128 | i1 << 6;
      if ((i2 | 0) >= 0) {
       HEAP32[i5 >> 2] = i2;
       i1 = 3;
       break L1;
      }
      i1 = HEAPU8[i6 + 3 >> 0] | 0;
      if ((i1 & 192 | 0) == 128) {
       HEAP32[i5 >> 2] = i1 + -128 | i2 << 6;
       i1 = 4;
       break L1;
      }
     }
    }
   }
  } while (0);
  i1 = ___errno_location() | 0;
  HEAP32[i1 >> 2] = 84;
  i1 = -1;
 } while (0);
 STACKTOP = i7;
 return i1 | 0;
}

function __ZNSt3__16vectorIN4wasm6WalkerINS1_11MergeBlocksENS1_7VisitorIS3_vEEE4TaskENS_9allocatorIS7_EEE24__emplace_back_slow_pathIJRPFvPS3_PPNS1_10ExpressionEERSF_EEEvDpOT_(i8, i5, i6) {
 i8 = i8 | 0;
 i5 = i5 | 0;
 i6 = i6 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i7 = 0, i9 = 0;
 i9 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i7 = i9;
 i3 = i8 + 4 | 0;
 i4 = HEAP32[i8 >> 2] | 0;
 i2 = ((HEAP32[i3 >> 2] | 0) - i4 >> 3) + 1 | 0;
 if (i2 >>> 0 > 536870911) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i8);
 i1 = (HEAP32[i8 + 8 >> 2] | 0) - i4 | 0;
 if (i1 >> 3 >>> 0 < 268435455) {
  i1 = i1 >> 2;
  i1 = i1 >>> 0 < i2 >>> 0 ? i2 : i1;
 } else i1 = 536870911;
 __ZNSt3__114__split_bufferIN4wasm6WalkerINS1_11MergeBlocksENS1_7VisitorIS3_vEEE4TaskERNS_9allocatorIS7_EEEC2EjjSA_(i7, i1, (HEAP32[i3 >> 2] | 0) - i4 >> 3, i8 + 8 | 0);
 i4 = i7 + 8 | 0;
 i3 = HEAP32[i4 >> 2] | 0;
 i6 = HEAP32[i6 >> 2] | 0;
 HEAP32[i3 >> 2] = HEAP32[i5 >> 2];
 HEAP32[i3 + 4 >> 2] = i6;
 HEAP32[i4 >> 2] = i3 + 8;
 __ZNSt3__16vectorIN4wasm6WalkerINS1_11MergeBlocksENS1_7VisitorIS3_vEEE4TaskENS_9allocatorIS7_EEE26__swap_out_circular_bufferERNS_14__split_bufferIS7_RS9_EE(i8, i7);
 __ZNSt3__114__split_bufferIN4wasm6WalkerINS1_11MergeBlocksENS1_7VisitorIS3_vEEE4TaskERNS_9allocatorIS7_EEED2Ev(i7);
 STACKTOP = i9;
 return;
}

function __ZNSt3__16vectorIN4wasm6WalkerINS1_11BreakSeekerENS1_7VisitorIS3_vEEE4TaskENS_9allocatorIS7_EEE24__emplace_back_slow_pathIJRPFvPS3_PPNS1_10ExpressionEERSF_EEEvDpOT_(i8, i5, i6) {
 i8 = i8 | 0;
 i5 = i5 | 0;
 i6 = i6 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i7 = 0, i9 = 0;
 i9 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i7 = i9;
 i3 = i8 + 4 | 0;
 i4 = HEAP32[i8 >> 2] | 0;
 i2 = ((HEAP32[i3 >> 2] | 0) - i4 >> 3) + 1 | 0;
 if (i2 >>> 0 > 536870911) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i8);
 i1 = (HEAP32[i8 + 8 >> 2] | 0) - i4 | 0;
 if (i1 >> 3 >>> 0 < 268435455) {
  i1 = i1 >> 2;
  i1 = i1 >>> 0 < i2 >>> 0 ? i2 : i1;
 } else i1 = 536870911;
 __ZNSt3__114__split_bufferIN4wasm6WalkerINS1_11BreakSeekerENS1_7VisitorIS3_vEEE4TaskERNS_9allocatorIS7_EEEC2EjjSA_(i7, i1, (HEAP32[i3 >> 2] | 0) - i4 >> 3, i8 + 8 | 0);
 i4 = i7 + 8 | 0;
 i3 = HEAP32[i4 >> 2] | 0;
 i6 = HEAP32[i6 >> 2] | 0;
 HEAP32[i3 >> 2] = HEAP32[i5 >> 2];
 HEAP32[i3 + 4 >> 2] = i6;
 HEAP32[i4 >> 2] = i3 + 8;
 __ZNSt3__16vectorIN4wasm6WalkerINS1_11BreakSeekerENS1_7VisitorIS3_vEEE4TaskENS_9allocatorIS7_EEE26__swap_out_circular_bufferERNS_14__split_bufferIS7_RS9_EE(i8, i7);
 __ZNSt3__114__split_bufferIN4wasm6WalkerINS1_11BreakSeekerENS1_7VisitorIS3_vEEE4TaskERNS_9allocatorIS7_EEED2Ev(i7);
 STACKTOP = i9;
 return;
}

function __ZNSt3__113basic_istreamIcNS_11char_traitsIcEEErsERi(i9, i7) {
 i9 = i9 | 0;
 i7 = i7 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i8 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0;
 i10 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i2 = i10 + 24 | 0;
 i1 = i10 + 20 | 0;
 i3 = i10 + 16 | 0;
 i4 = i10 + 12 | 0;
 i11 = i10 + 28 | 0;
 i6 = i10 + 8 | 0;
 i8 = i10 + 4 | 0;
 i5 = i10;
 __ZNSt3__113basic_istreamIcNS_11char_traitsIcEEE6sentryC2ERS3_b(i11, i9, 0);
 if (HEAP8[i11 >> 0] | 0) {
  HEAP32[i6 >> 2] = 0;
  i12 = __ZNKSt3__18ios_base6getlocEv(i9 + (HEAP32[(HEAP32[i9 >> 2] | 0) + -12 >> 2] | 0) | 0) | 0;
  HEAP32[i5 >> 2] = i12;
  i12 = __ZNKSt3__16locale9use_facetERNS0_2idE(i5, 38400) | 0;
  i11 = i9 + (HEAP32[(HEAP32[i9 >> 2] | 0) + -12 >> 2] | 0) | 0;
  i13 = HEAP32[(HEAP32[i12 >> 2] | 0) + 16 >> 2] | 0;
  HEAP32[i3 >> 2] = HEAP32[i11 + 24 >> 2];
  HEAP32[i4 >> 2] = 0;
  HEAP32[i1 >> 2] = HEAP32[i3 >> 2];
  HEAP32[i2 >> 2] = HEAP32[i4 >> 2];
  FUNCTION_TABLE_iiiiiii[i13 & 63](i12, i1, i2, i11, i6, i8) | 0;
  __ZNSt3__16localeD2Ev(i5);
  HEAP32[i7 >> 2] = HEAP32[i8 >> 2];
  i8 = i9 + (HEAP32[(HEAP32[i9 >> 2] | 0) + -12 >> 2] | 0) | 0;
  i11 = i8 + 16 | 0;
  HEAP32[i11 >> 2] = HEAP32[i11 >> 2] | HEAP32[i6 >> 2] | (HEAP32[i8 + 24 >> 2] | 0) == 0;
 }
 STACKTOP = i10;
 return i9 | 0;
}

function __ZZN4wasm13ReorderLocals13visitFunctionEPNS_8FunctionEENKUljjE_clEjj(i1, i7, i8) {
 i1 = i1 | 0;
 i7 = i7 | 0;
 i8 = i8 | 0;
 var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i9 = 0;
 i9 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i5 = i9 + 4 | 0;
 i6 = i9;
 HEAP32[i5 >> 2] = i7;
 HEAP32[i6 >> 2] = i8;
 i4 = HEAP32[i1 >> 2] | 0;
 i1 = HEAP32[i1 + 4 >> 2] | 0;
 i1 = (HEAP32[i1 + 12 >> 2] | 0) - (HEAP32[i1 + 8 >> 2] | 0) >> 2;
 i2 = i1 >>> 0 > i8 >>> 0;
 do if (i1 >>> 0 <= i7 >>> 0 | i2) {
  i3 = i1 >>> 0 > i7 >>> 0;
  if (i1 >>> 0 <= i8 >>> 0 | i3) {
   if (i2 & i3) {
    i1 = i7 >>> 0 < i8 >>> 0;
    break;
   }
   i1 = i4 + 40 | 0;
   i3 = __ZNSt3__13mapIjjNS_4lessIjEENS_9allocatorINS_4pairIKjjEEEEEixERS5_(i1, i5) | 0;
   i3 = HEAP32[i3 >> 2] | 0;
   i4 = __ZNSt3__13mapIjjNS_4lessIjEENS_9allocatorINS_4pairIKjjEEEEEixERS5_(i1, i6) | 0;
   if ((i3 | 0) == (HEAP32[i4 >> 2] | 0)) {
    i1 = i7 >>> 0 < i8 >>> 0;
    break;
   } else {
    i8 = __ZNSt3__13mapIjjNS_4lessIjEENS_9allocatorINS_4pairIKjjEEEEEixERS5_(i1, i5) | 0;
    i8 = HEAP32[i8 >> 2] | 0;
    i1 = __ZNSt3__13mapIjjNS_4lessIjEENS_9allocatorINS_4pairIKjjEEEEEixERS5_(i1, i6) | 0;
    i1 = i8 >>> 0 > (HEAP32[i1 >> 2] | 0) >>> 0;
    break;
   }
  } else i1 = 0;
 } else i1 = 1; while (0);
 STACKTOP = i9;
 return i1 | 0;
}

function __ZNSt3__16vectorIN4wasm6WalkerINS1_6VacuumENS1_7VisitorIS3_vEEE4TaskENS_9allocatorIS7_EEE24__emplace_back_slow_pathIJRPFvPS3_PPNS1_10ExpressionEERSF_EEEvDpOT_(i8, i5, i6) {
 i8 = i8 | 0;
 i5 = i5 | 0;
 i6 = i6 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i7 = 0, i9 = 0;
 i9 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i7 = i9;
 i3 = i8 + 4 | 0;
 i4 = HEAP32[i8 >> 2] | 0;
 i2 = ((HEAP32[i3 >> 2] | 0) - i4 >> 3) + 1 | 0;
 if (i2 >>> 0 > 536870911) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i8);
 i1 = (HEAP32[i8 + 8 >> 2] | 0) - i4 | 0;
 if (i1 >> 3 >>> 0 < 268435455) {
  i1 = i1 >> 2;
  i1 = i1 >>> 0 < i2 >>> 0 ? i2 : i1;
 } else i1 = 536870911;
 __ZNSt3__114__split_bufferIN4wasm6WalkerINS1_6VacuumENS1_7VisitorIS3_vEEE4TaskERNS_9allocatorIS7_EEEC2EjjSA_(i7, i1, (HEAP32[i3 >> 2] | 0) - i4 >> 3, i8 + 8 | 0);
 i4 = i7 + 8 | 0;
 i3 = HEAP32[i4 >> 2] | 0;
 i6 = HEAP32[i6 >> 2] | 0;
 HEAP32[i3 >> 2] = HEAP32[i5 >> 2];
 HEAP32[i3 + 4 >> 2] = i6;
 HEAP32[i4 >> 2] = i3 + 8;
 __ZNSt3__16vectorIN4wasm6WalkerINS1_6VacuumENS1_7VisitorIS3_vEEE4TaskENS_9allocatorIS7_EEE26__swap_out_circular_bufferERNS_14__split_bufferIS7_RS9_EE(i8, i7);
 __ZNSt3__114__split_bufferIN4wasm6WalkerINS1_6VacuumENS1_7VisitorIS3_vEEE4TaskERNS_9allocatorIS7_EEED2Ev(i7);
 STACKTOP = i9;
 return;
}

function __ZNSt3__16vectorINS_10unique_ptrIN4wasm17RemoveUnusedNamesENS_14default_deleteIS3_EEEENS_9allocatorIS6_EEE21__push_back_slow_pathIS6_EEvOT_(i7, i6) {
 i7 = i7 | 0;
 i6 = i6 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i8 = 0;
 i8 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i5 = i8;
 i3 = i7 + 4 | 0;
 i4 = HEAP32[i7 >> 2] | 0;
 i2 = ((HEAP32[i3 >> 2] | 0) - i4 >> 2) + 1 | 0;
 if (i2 >>> 0 > 1073741823) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i7);
 i1 = (HEAP32[i7 + 8 >> 2] | 0) - i4 | 0;
 if (i1 >> 2 >>> 0 < 536870911) {
  i1 = i1 >> 1;
  i1 = i1 >>> 0 < i2 >>> 0 ? i2 : i1;
 } else i1 = 1073741823;
 __ZNSt3__114__split_bufferINS_10unique_ptrIN4wasm17RemoveUnusedNamesENS_14default_deleteIS3_EEEERNS_9allocatorIS6_EEEC2EjjS9_(i5, i1, (HEAP32[i3 >> 2] | 0) - i4 >> 2, i7 + 8 | 0);
 i4 = i5 + 8 | 0;
 i3 = HEAP32[i4 >> 2] | 0;
 i2 = HEAP32[i6 >> 2] | 0;
 HEAP32[i6 >> 2] = 0;
 HEAP32[i3 >> 2] = i2;
 HEAP32[i4 >> 2] = i3 + 4;
 __ZNSt3__16vectorINS_10unique_ptrIN4wasm17RemoveUnusedNamesENS_14default_deleteIS3_EEEENS_9allocatorIS6_EEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS8_EE(i7, i5);
 __ZNSt3__114__split_bufferINS_10unique_ptrIN4wasm17RemoveUnusedNamesENS_14default_deleteIS3_EEEERNS_9allocatorIS6_EEED2Ev(i5);
 STACKTOP = i8;
 return;
}

function __ZNSt3__16vectorIPNS_6locale5facetENS_15__sso_allocatorIS3_Lj28EEEE8__appendEj(i8, i2) {
 i8 = i8 | 0;
 i2 = i2 | 0;
 var i1 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i9 = 0;
 i9 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i7 = i9;
 i5 = HEAP32[i8 + 8 >> 2] | 0;
 i3 = i8 + 4 | 0;
 i1 = HEAP32[i3 >> 2] | 0;
 if (i5 - i1 >> 2 >>> 0 < i2 >>> 0) {
  i3 = HEAP32[i8 >> 2] | 0;
  i6 = i1 - i3 >> 2;
  i4 = i6 + i2 | 0;
  if (i4 >>> 0 > 1073741823) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i8);
  i1 = i5 - i3 | 0;
  if (i1 >> 2 >>> 0 < 536870911) {
   i1 = i1 >> 1;
   i1 = i1 >>> 0 < i4 >>> 0 ? i4 : i1;
  } else i1 = 1073741823;
  __ZNSt3__114__split_bufferIPNS_6locale5facetERNS_15__sso_allocatorIS3_Lj28EEEEC2EjjS6_(i7, i1, i6, i8 + 16 | 0);
  i6 = i7 + 8 | 0;
  i5 = HEAP32[i6 >> 2] | 0;
  _memset(i5 | 0, 0, i2 << 2 | 0) | 0;
  HEAP32[i6 >> 2] = i5 + (i2 << 2);
  __ZNSt3__16vectorIPNS_6locale5facetENS_15__sso_allocatorIS3_Lj28EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i8, i7);
  __ZNSt3__114__split_bufferIPNS_6locale5facetERNS_15__sso_allocatorIS3_Lj28EEEED2Ev(i7);
 } else do {
  HEAP32[i1 >> 2] = 0;
  i1 = (HEAP32[i3 >> 2] | 0) + 4 | 0;
  HEAP32[i3 >> 2] = i1;
  i2 = i2 + -1 | 0;
 } while ((i2 | 0) != 0);
 STACKTOP = i9;
 return;
}

function __ZNKSt3__18messagesIcE6do_getEiiiRKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEE(i8, i1, i3, i5, i4, i2) {
 i8 = i8 | 0;
 i1 = i1 | 0;
 i3 = i3 | 0;
 i5 = i5 | 0;
 i4 = i4 | 0;
 i2 = i2 | 0;
 var i6 = 0, i7 = 0, i9 = 0, i10 = 0;
 i7 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i6 = i7;
 i1 = 0;
 while (1) {
  if ((i1 | 0) == 3) break;
  HEAP32[i6 + (i1 << 2) >> 2] = 0;
  i1 = i1 + 1 | 0;
 }
 i9 = HEAP8[i2 >> 0] | 0;
 i10 = (i9 & 1) == 0;
 i1 = i10 ? i2 + 1 | 0 : HEAP32[i2 + 8 >> 2] | 0;
 i2 = i1 + (i10 ? (i9 & 255) >>> 1 : HEAP32[i2 + 4 >> 2] | 0) | 0;
 while (1) {
  if (i1 >>> 0 >= i2 >>> 0) break;
  __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE9push_backEc(i6, HEAP8[i1 >> 0] | 0);
  i1 = i1 + 1 | 0;
 }
 i1 = _catgets((i3 | 0) == -1 ? -1 : i3 << 1, i5, i4, (HEAP8[i6 >> 0] & 1) == 0 ? i6 + 1 | 0 : HEAP32[i6 + 8 >> 2] | 0) | 0;
 i2 = 0;
 while (1) {
  if ((i2 | 0) == 3) break;
  HEAP32[i8 + (i2 << 2) >> 2] = 0;
  i2 = i2 + 1 | 0;
 }
 i2 = i1 + (_strlen(i1) | 0) | 0;
 while (1) {
  if (i1 >>> 0 >= i2 >>> 0) break;
  __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE9push_backEc(i8, HEAP8[i1 >> 0] | 0);
  i1 = i1 + 1 | 0;
 }
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i6);
 STACKTOP = i7;
 return;
}

function __ZNSt3__16vectorINS_10unique_ptrIN4wasm15RemoveUnusedBrsENS_14default_deleteIS3_EEEENS_9allocatorIS6_EEE21__push_back_slow_pathIS6_EEvOT_(i7, i6) {
 i7 = i7 | 0;
 i6 = i6 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i8 = 0;
 i8 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i5 = i8;
 i3 = i7 + 4 | 0;
 i4 = HEAP32[i7 >> 2] | 0;
 i2 = ((HEAP32[i3 >> 2] | 0) - i4 >> 2) + 1 | 0;
 if (i2 >>> 0 > 1073741823) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i7);
 i1 = (HEAP32[i7 + 8 >> 2] | 0) - i4 | 0;
 if (i1 >> 2 >>> 0 < 536870911) {
  i1 = i1 >> 1;
  i1 = i1 >>> 0 < i2 >>> 0 ? i2 : i1;
 } else i1 = 1073741823;
 __ZNSt3__114__split_bufferINS_10unique_ptrIN4wasm15RemoveUnusedBrsENS_14default_deleteIS3_EEEERNS_9allocatorIS6_EEEC2EjjS9_(i5, i1, (HEAP32[i3 >> 2] | 0) - i4 >> 2, i7 + 8 | 0);
 i4 = i5 + 8 | 0;
 i3 = HEAP32[i4 >> 2] | 0;
 i2 = HEAP32[i6 >> 2] | 0;
 HEAP32[i6 >> 2] = 0;
 HEAP32[i3 >> 2] = i2;
 HEAP32[i4 >> 2] = i3 + 4;
 __ZNSt3__16vectorINS_10unique_ptrIN4wasm15RemoveUnusedBrsENS_14default_deleteIS3_EEEENS_9allocatorIS6_EEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS8_EE(i7, i5);
 __ZNSt3__114__split_bufferINS_10unique_ptrIN4wasm15RemoveUnusedBrsENS_14default_deleteIS3_EEEERNS_9allocatorIS6_EEED2Ev(i5);
 STACKTOP = i8;
 return;
}

function __ZNSt3__116__check_groupingERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEPjS8_Rj(i5, i7, i4, i8) {
 i5 = i5 | 0;
 i7 = i7 | 0;
 i4 = i4 | 0;
 i8 = i8 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i6 = 0, i9 = 0;
 i1 = HEAP8[i5 >> 0] | 0;
 i3 = i5 + 4 | 0;
 i2 = HEAP32[i3 >> 2] | 0;
 do if (((i1 & 1) == 0 ? (i1 & 255) >>> 1 : i2) | 0) {
  if ((i7 | 0) != (i4 | 0)) {
   i1 = i4;
   i2 = i7;
   while (1) {
    i1 = i1 + -4 | 0;
    if (i2 >>> 0 >= i1 >>> 0) break;
    i6 = HEAP32[i2 >> 2] | 0;
    HEAP32[i2 >> 2] = HEAP32[i1 >> 2];
    HEAP32[i1 >> 2] = i6;
    i2 = i2 + 4 | 0;
   }
   i1 = HEAP8[i5 >> 0] | 0;
   i2 = HEAP32[i3 >> 2] | 0;
  }
  i3 = (i1 & 1) == 0;
  i5 = i3 ? i5 + 1 | 0 : HEAP32[i5 + 8 >> 2] | 0;
  i6 = i4 + -4 | 0;
  i4 = i5 + (i3 ? (i1 & 255) >>> 1 : i2) | 0;
  i2 = i7;
  while (1) {
   i1 = HEAP8[i5 >> 0] | 0;
   i3 = i1 << 24 >> 24 < 1 | i1 << 24 >> 24 == 127;
   if (i2 >>> 0 >= i6 >>> 0) break;
   if (!i3 ? (i1 << 24 >> 24 | 0) != (HEAP32[i2 >> 2] | 0) : 0) {
    i9 = 10;
    break;
   }
   i5 = (i4 - i5 | 0) > 1 ? i5 + 1 | 0 : i5;
   i2 = i2 + 4 | 0;
  }
  if ((i9 | 0) == 10) {
   HEAP32[i8 >> 2] = 4;
   break;
  }
  if (!i3 ? ((HEAP32[i6 >> 2] | 0) + -1 | 0) >>> 0 >= i1 << 24 >> 24 >>> 0 : 0) HEAP32[i8 >> 2] = 4;
 } while (0);
 return;
}

function __ZNSt3__17__sort3IRZN4wasm13ReorderLocals13visitFunctionEPNS1_8FunctionEEUljjE_PjEEjT0_S8_S8_T_(i4, i5, i6, i3) {
 i4 = i4 | 0;
 i5 = i5 | 0;
 i6 = i6 | 0;
 i3 = i3 | 0;
 var i1 = 0, i2 = 0;
 i1 = __ZZN4wasm13ReorderLocals13visitFunctionEPNS_8FunctionEENKUljjE_clEjj(i3, HEAP32[i5 >> 2] | 0, HEAP32[i4 >> 2] | 0) | 0;
 i2 = __ZZN4wasm13ReorderLocals13visitFunctionEPNS_8FunctionEENKUljjE_clEjj(i3, HEAP32[i6 >> 2] | 0, HEAP32[i5 >> 2] | 0) | 0;
 do if (i1) {
  i1 = HEAP32[i4 >> 2] | 0;
  if (i2) {
   HEAP32[i4 >> 2] = HEAP32[i6 >> 2];
   HEAP32[i6 >> 2] = i1;
   i1 = 1;
   break;
  }
  HEAP32[i4 >> 2] = HEAP32[i5 >> 2];
  HEAP32[i5 >> 2] = i1;
  if (__ZZN4wasm13ReorderLocals13visitFunctionEPNS_8FunctionEENKUljjE_clEjj(i3, HEAP32[i6 >> 2] | 0, i1) | 0) {
   i1 = HEAP32[i5 >> 2] | 0;
   HEAP32[i5 >> 2] = HEAP32[i6 >> 2];
   HEAP32[i6 >> 2] = i1;
   i1 = 2;
  } else i1 = 1;
 } else if (i2) {
  i2 = HEAP32[i5 >> 2] | 0;
  HEAP32[i5 >> 2] = HEAP32[i6 >> 2];
  HEAP32[i6 >> 2] = i2;
  if (__ZZN4wasm13ReorderLocals13visitFunctionEPNS_8FunctionEENKUljjE_clEjj(i3, HEAP32[i5 >> 2] | 0, HEAP32[i4 >> 2] | 0) | 0) {
   i1 = HEAP32[i4 >> 2] | 0;
   HEAP32[i4 >> 2] = HEAP32[i5 >> 2];
   HEAP32[i5 >> 2] = i1;
   i1 = 2;
  } else i1 = 1;
 } else i1 = 0; while (0);
 return i1 | 0;
}

function __ZNSt3__16vectorINS_10unique_ptrIN4wasm14SimplifyLocalsENS_14default_deleteIS3_EEEENS_9allocatorIS6_EEE21__push_back_slow_pathIS6_EEvOT_(i7, i6) {
 i7 = i7 | 0;
 i6 = i6 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i8 = 0;
 i8 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i5 = i8;
 i3 = i7 + 4 | 0;
 i4 = HEAP32[i7 >> 2] | 0;
 i2 = ((HEAP32[i3 >> 2] | 0) - i4 >> 2) + 1 | 0;
 if (i2 >>> 0 > 1073741823) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i7);
 i1 = (HEAP32[i7 + 8 >> 2] | 0) - i4 | 0;
 if (i1 >> 2 >>> 0 < 536870911) {
  i1 = i1 >> 1;
  i1 = i1 >>> 0 < i2 >>> 0 ? i2 : i1;
 } else i1 = 1073741823;
 __ZNSt3__114__split_bufferINS_10unique_ptrIN4wasm14SimplifyLocalsENS_14default_deleteIS3_EEEERNS_9allocatorIS6_EEEC2EjjS9_(i5, i1, (HEAP32[i3 >> 2] | 0) - i4 >> 2, i7 + 8 | 0);
 i4 = i5 + 8 | 0;
 i3 = HEAP32[i4 >> 2] | 0;
 i2 = HEAP32[i6 >> 2] | 0;
 HEAP32[i6 >> 2] = 0;
 HEAP32[i3 >> 2] = i2;
 HEAP32[i4 >> 2] = i3 + 4;
 __ZNSt3__16vectorINS_10unique_ptrIN4wasm14SimplifyLocalsENS_14default_deleteIS3_EEEENS_9allocatorIS6_EEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS8_EE(i7, i5);
 __ZNSt3__114__split_bufferINS_10unique_ptrIN4wasm14SimplifyLocalsENS_14default_deleteIS3_EEEERNS_9allocatorIS6_EEED2Ev(i5);
 STACKTOP = i8;
 return;
}

function __ZNSt3__16vectorINS_10unique_ptrIN4wasm14PostEmscriptenENS_14default_deleteIS3_EEEENS_9allocatorIS6_EEE21__push_back_slow_pathIS6_EEvOT_(i7, i6) {
 i7 = i7 | 0;
 i6 = i6 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i8 = 0;
 i8 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i5 = i8;
 i3 = i7 + 4 | 0;
 i4 = HEAP32[i7 >> 2] | 0;
 i2 = ((HEAP32[i3 >> 2] | 0) - i4 >> 2) + 1 | 0;
 if (i2 >>> 0 > 1073741823) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i7);
 i1 = (HEAP32[i7 + 8 >> 2] | 0) - i4 | 0;
 if (i1 >> 2 >>> 0 < 536870911) {
  i1 = i1 >> 1;
  i1 = i1 >>> 0 < i2 >>> 0 ? i2 : i1;
 } else i1 = 1073741823;
 __ZNSt3__114__split_bufferINS_10unique_ptrIN4wasm14PostEmscriptenENS_14default_deleteIS3_EEEERNS_9allocatorIS6_EEEC2EjjS9_(i5, i1, (HEAP32[i3 >> 2] | 0) - i4 >> 2, i7 + 8 | 0);
 i4 = i5 + 8 | 0;
 i3 = HEAP32[i4 >> 2] | 0;
 i2 = HEAP32[i6 >> 2] | 0;
 HEAP32[i6 >> 2] = 0;
 HEAP32[i3 >> 2] = i2;
 HEAP32[i4 >> 2] = i3 + 4;
 __ZNSt3__16vectorINS_10unique_ptrIN4wasm14PostEmscriptenENS_14default_deleteIS3_EEEENS_9allocatorIS6_EEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS8_EE(i7, i5);
 __ZNSt3__114__split_bufferINS_10unique_ptrIN4wasm14PostEmscriptenENS_14default_deleteIS3_EEEERNS_9allocatorIS6_EEED2Ev(i5);
 STACKTOP = i8;
 return;
}

function __ZNSt3__16vectorINS_10unique_ptrIN4wasm13ReorderLocalsENS_14default_deleteIS3_EEEENS_9allocatorIS6_EEE21__push_back_slow_pathIS6_EEvOT_(i7, i6) {
 i7 = i7 | 0;
 i6 = i6 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i8 = 0;
 i8 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i5 = i8;
 i3 = i7 + 4 | 0;
 i4 = HEAP32[i7 >> 2] | 0;
 i2 = ((HEAP32[i3 >> 2] | 0) - i4 >> 2) + 1 | 0;
 if (i2 >>> 0 > 1073741823) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i7);
 i1 = (HEAP32[i7 + 8 >> 2] | 0) - i4 | 0;
 if (i1 >> 2 >>> 0 < 536870911) {
  i1 = i1 >> 1;
  i1 = i1 >>> 0 < i2 >>> 0 ? i2 : i1;
 } else i1 = 1073741823;
 __ZNSt3__114__split_bufferINS_10unique_ptrIN4wasm13ReorderLocalsENS_14default_deleteIS3_EEEERNS_9allocatorIS6_EEEC2EjjS9_(i5, i1, (HEAP32[i3 >> 2] | 0) - i4 >> 2, i7 + 8 | 0);
 i4 = i5 + 8 | 0;
 i3 = HEAP32[i4 >> 2] | 0;
 i2 = HEAP32[i6 >> 2] | 0;
 HEAP32[i6 >> 2] = 0;
 HEAP32[i3 >> 2] = i2;
 HEAP32[i4 >> 2] = i3 + 4;
 __ZNSt3__16vectorINS_10unique_ptrIN4wasm13ReorderLocalsENS_14default_deleteIS3_EEEENS_9allocatorIS6_EEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS8_EE(i7, i5);
 __ZNSt3__114__split_bufferINS_10unique_ptrIN4wasm13ReorderLocalsENS_14default_deleteIS3_EEEERNS_9allocatorIS6_EEED2Ev(i5);
 STACKTOP = i8;
 return;
}

function __ZN4wasm16PrintSExpression11visitSwitchEPNS_6SwitchE(i8, i7) {
 i8 = i8 | 0;
 i7 = i7 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i9 = 0;
 i9 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i5 = i9 + 8 | 0;
 i2 = i9 + 4 | 0;
 i6 = i9;
 __Z12printOpeningRNSt3__113basic_ostreamIcNS_11char_traitsIcEEEEPKcb(HEAP32[i8 >> 2] | 0, 18306, 0) | 0;
 i3 = HEAP32[i7 + 12 >> 2] | 0;
 i4 = HEAP32[i7 + 8 >> 2] | 0;
 while (1) {
  i1 = __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(HEAP32[i8 >> 2] | 0, 34710) | 0;
  if ((i4 | 0) == (i3 | 0)) break;
  HEAP32[i2 >> 2] = HEAP32[i4 >> 2];
  HEAP32[i5 >> 2] = HEAP32[i2 >> 2];
  __ZN4wasmlsERNSt3__113basic_ostreamIcNS0_11char_traitsIcEEEENS_4NameE(i1, i5) | 0;
  i4 = i4 + 4 | 0;
 }
 HEAP32[i6 >> 2] = HEAP32[i7 + 20 >> 2];
 HEAP32[i5 >> 2] = HEAP32[i6 >> 2];
 __ZN4wasmlsERNSt3__113basic_ostreamIcNS0_11char_traitsIcEEEENS_4NameE(i1, i5) | 0;
 __ZN4wasm16PrintSExpression9incIndentEv(i8);
 i1 = HEAP32[i7 + 28 >> 2] | 0;
 if (i1 | 0 ? (HEAP32[i1 >> 2] | 0) != 19 : 0) __ZN4wasm16PrintSExpression13printFullLineEPNS_10ExpressionE(i8, i1);
 __ZN4wasm16PrintSExpression13printFullLineEPNS_10ExpressionE(i8, HEAP32[i7 + 24 >> 2] | 0);
 __ZN4wasm16PrintSExpression9decIndentEv(i8);
 STACKTOP = i9;
 return;
}

function __ZNSt3__16vectorIPN4wasm10ExpressionENS_9allocatorIS3_EEE8__appendEj(i7, i2) {
 i7 = i7 | 0;
 i2 = i2 | 0;
 var i1 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i8 = 0, i9 = 0;
 i9 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i6 = i9;
 i3 = HEAP32[i7 + 8 >> 2] | 0;
 i8 = i7 + 4 | 0;
 i1 = HEAP32[i8 >> 2] | 0;
 if (i3 - i1 >> 2 >>> 0 < i2 >>> 0) {
  i5 = HEAP32[i7 >> 2] | 0;
  i4 = (i1 - i5 >> 2) + i2 | 0;
  if (i4 >>> 0 > 1073741823) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i7);
  i1 = i3 - i5 | 0;
  if (i1 >> 2 >>> 0 < 536870911) {
   i1 = i1 >> 1;
   i1 = i1 >>> 0 < i4 >>> 0 ? i4 : i1;
  } else i1 = 1073741823;
  __ZNSt3__114__split_bufferIPN4wasm10ExpressionERNS_9allocatorIS3_EEEC2EjjS6_(i6, i1, (HEAP32[i8 >> 2] | 0) - i5 >> 2, i7 + 8 | 0);
  i8 = i6 + 8 | 0;
  i5 = HEAP32[i8 >> 2] | 0;
  _memset(i5 | 0, 0, i2 << 2 | 0) | 0;
  HEAP32[i8 >> 2] = i5 + (i2 << 2);
  __ZNSt3__16vectorIPN4wasm10ExpressionENS_9allocatorIS3_EEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i7, i6);
  __ZNSt3__114__split_bufferIPN4wasm10ExpressionERNS_9allocatorIS3_EEED2Ev(i6);
 } else do {
  HEAP32[i1 >> 2] = 0;
  i1 = (HEAP32[i8 >> 2] | 0) + 4 | 0;
  HEAP32[i8 >> 2] = i1;
  i2 = i2 + -1 | 0;
 } while ((i2 | 0) != 0);
 STACKTOP = i9;
 return;
}

function __ZNSt3__16vectorINS_10unique_ptrIN4wasm11MergeBlocksENS_14default_deleteIS3_EEEENS_9allocatorIS6_EEE21__push_back_slow_pathIS6_EEvOT_(i7, i6) {
 i7 = i7 | 0;
 i6 = i6 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i8 = 0;
 i8 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i5 = i8;
 i3 = i7 + 4 | 0;
 i4 = HEAP32[i7 >> 2] | 0;
 i2 = ((HEAP32[i3 >> 2] | 0) - i4 >> 2) + 1 | 0;
 if (i2 >>> 0 > 1073741823) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i7);
 i1 = (HEAP32[i7 + 8 >> 2] | 0) - i4 | 0;
 if (i1 >> 2 >>> 0 < 536870911) {
  i1 = i1 >> 1;
  i1 = i1 >>> 0 < i2 >>> 0 ? i2 : i1;
 } else i1 = 1073741823;
 __ZNSt3__114__split_bufferINS_10unique_ptrIN4wasm11MergeBlocksENS_14default_deleteIS3_EEEERNS_9allocatorIS6_EEEC2EjjS9_(i5, i1, (HEAP32[i3 >> 2] | 0) - i4 >> 2, i7 + 8 | 0);
 i4 = i5 + 8 | 0;
 i3 = HEAP32[i4 >> 2] | 0;
 i2 = HEAP32[i6 >> 2] | 0;
 HEAP32[i6 >> 2] = 0;
 HEAP32[i3 >> 2] = i2;
 HEAP32[i4 >> 2] = i3 + 4;
 __ZNSt3__16vectorINS_10unique_ptrIN4wasm11MergeBlocksENS_14default_deleteIS3_EEEENS_9allocatorIS6_EEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS8_EE(i7, i5);
 __ZNSt3__114__split_bufferINS_10unique_ptrIN4wasm11MergeBlocksENS_14default_deleteIS3_EEEERNS_9allocatorIS6_EEED2Ev(i5);
 STACKTOP = i8;
 return;
}

function __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE7reserveEj(i8, i2) {
 i8 = i8 | 0;
 i2 = i2 | 0;
 var i1 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0;
 if (i2 >>> 0 > 4294967279) __ZNKSt3__121__basic_string_commonILb1EE20__throw_length_errorEv(i8);
 i1 = HEAP8[i8 >> 0] | 0;
 if (!(i1 & 1)) i3 = 10; else {
  i1 = HEAP32[i8 >> 2] | 0;
  i3 = (i1 & -2) + -1 | 0;
  i1 = i1 & 255;
 }
 if (!(i1 & 1)) i7 = (i1 & 255) >>> 1; else i7 = HEAP32[i8 + 4 >> 2] | 0;
 i2 = i7 >>> 0 > i2 >>> 0 ? i7 : i2;
 if (i2 >>> 0 < 11) i6 = 10; else i6 = (i2 + 16 & -16) + -1 | 0;
 do if ((i6 | 0) != (i3 | 0)) {
  do if ((i6 | 0) != 10) {
   i2 = __Znwj(i6 + 1 | 0) | 0;
   if (!(i1 & 1)) {
    i3 = 1;
    i4 = i8 + 1 | 0;
    i5 = 0;
    break;
   } else {
    i3 = 1;
    i4 = HEAP32[i8 + 8 >> 2] | 0;
    i5 = 1;
    break;
   }
  } else {
   i2 = i8 + 1 | 0;
   i3 = 0;
   i4 = HEAP32[i8 + 8 >> 2] | 0;
   i5 = 1;
  } while (0);
  if (!(i1 & 1)) i1 = (i1 & 255) >>> 1; else i1 = HEAP32[i8 + 4 >> 2] | 0;
  _memcpy(i2 | 0, i4 | 0, i1 + 1 | 0) | 0;
  if (i5) __ZdlPv(i4);
  if (i3) {
   HEAP32[i8 >> 2] = i6 + 1 | 1;
   HEAP32[i8 + 4 >> 2] = i7;
   HEAP32[i8 + 8 >> 2] = i2;
   break;
  } else {
   HEAP8[i8 >> 0] = i7 << 1;
   break;
  }
 } while (0);
 return;
}

function __ZN4wasm22SExpressionWasmBuilder18parseModuleElementERNS_7ElementE(i3, i2) {
 i3 = i3 | 0;
 i2 = i2 | 0;
 var i1 = 0;
 i1 = __ZN4wasm7Element4listEv(i2) | 0;
 i1 = __ZN4wasm7Element3strEv(HEAP32[HEAP32[i1 >> 2] >> 2] | 0) | 0;
 do if ((i1 | 0) != (HEAP32[9006] | 0)) {
  if ((i1 | 0) == (HEAP32[9007] | 0)) {
   __ZN4wasm22SExpressionWasmBuilder13parseFunctionERNS_7ElementE(i3, i2);
   break;
  }
  if ((i1 | 0) == (HEAP32[9010] | 0)) {
   __ZN4wasm22SExpressionWasmBuilder11parseMemoryERNS_7ElementE(i3, i2);
   break;
  }
  if ((i1 | 0) == (HEAP32[9012] | 0)) {
   __ZN4wasm22SExpressionWasmBuilder11parseExportERNS_7ElementE(i3, i2);
   break;
  }
  if ((i1 | 0) != (HEAP32[9013] | 0)) {
   if ((i1 | 0) == (HEAP32[9014] | 0)) {
    __ZN4wasm22SExpressionWasmBuilder10parseTableERNS_7ElementE(i3, i2);
    break;
   }
   if ((i1 | 0) != (HEAP32[9016] | 0)) {
    __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_c(__ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(__ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(37420, 14795) | 0, i1) | 0, 10) | 0;
    __ZNKSt3__18functionIFvvEEclEv(i3 + 8 | 0);
   }
  }
 } else __ZN4wasm22SExpressionWasmBuilder10parseStartERNS_7ElementE(i3, i2); while (0);
 return;
}

function __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE7reserveEj(i8, i2) {
 i8 = i8 | 0;
 i2 = i2 | 0;
 var i1 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0;
 if (i2 >>> 0 > 1073741807) __ZNKSt3__121__basic_string_commonILb1EE20__throw_length_errorEv(i8);
 i1 = HEAP8[i8 >> 0] | 0;
 if (!(i1 & 1)) i3 = 1; else {
  i1 = HEAP32[i8 >> 2] | 0;
  i3 = (i1 & -2) + -1 | 0;
  i1 = i1 & 255;
 }
 if (!(i1 & 1)) i7 = (i1 & 255) >>> 1; else i7 = HEAP32[i8 + 4 >> 2] | 0;
 i2 = i7 >>> 0 > i2 >>> 0 ? i7 : i2;
 if (i2 >>> 0 < 2) i6 = 1; else i6 = (i2 + 4 & -4) + -1 | 0;
 do if ((i6 | 0) != (i3 | 0)) {
  do if ((i6 | 0) != 1) {
   i2 = __Znwj((i6 << 2) + 4 | 0) | 0;
   if (!(i1 & 1)) {
    i3 = 1;
    i4 = i8 + 4 | 0;
    i5 = 0;
    break;
   } else {
    i3 = 1;
    i4 = HEAP32[i8 + 8 >> 2] | 0;
    i5 = 1;
    break;
   }
  } else {
   i2 = i8 + 4 | 0;
   i3 = 0;
   i4 = HEAP32[i8 + 8 >> 2] | 0;
   i5 = 1;
  } while (0);
  if (!(i1 & 1)) i1 = (i1 & 255) >>> 1; else i1 = HEAP32[i8 + 4 >> 2] | 0;
  _wmemcpy(i2, i4, i1 + 1 | 0) | 0;
  if (i5) __ZdlPv(i4);
  if (i3) {
   HEAP32[i8 >> 2] = i6 + 1 | 1;
   HEAP32[i8 + 4 >> 2] = i7;
   HEAP32[i8 + 8 >> 2] = i2;
   break;
  } else {
   HEAP8[i8 >> 0] = i7 << 1;
   break;
  }
 } while (0);
 return;
}

function __ZNSt3__112__hash_tableINS_17__hash_value_typeIN6cashew7IStringEiEENS_22__unordered_map_hasherIS3_S4_NS_4hashIS3_EELb1EEENS_21__unordered_map_equalIS3_S4_NS_8equal_toIS3_EELb1EEENS_9allocatorIS4_EEE6rehashEj(i5, i1) {
 i5 = i5 | 0;
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i4 = 0;
 if ((i1 | 0) != 1) {
  if (i1 + -1 & i1) i1 = __ZNSt3__112__next_primeEj(i1) | 0;
 } else i1 = 2;
 i4 = HEAP32[i5 + 4 >> 2] | 0;
 if (i1 >>> 0 <= i4 >>> 0) {
  if (i1 >>> 0 < i4 >>> 0) {
   if (i4 >>> 0 > 2) i3 = (i4 + -1 & i4 | 0) == 0; else i3 = 0;
   i2 = ~~+Math_ceil(+(+((HEAP32[i5 + 12 >> 2] | 0) >>> 0) / +HEAPF32[i5 + 16 >> 2])) >>> 0;
   if (i3) i2 = 1 << 32 - (Math_clz32(i2 + -1 | 0) | 0); else i2 = __ZNSt3__112__next_primeEj(i2) | 0;
   i1 = i1 >>> 0 < i2 >>> 0 ? i2 : i1;
   if (i1 >>> 0 < i4 >>> 0) __ZNSt3__112__hash_tableINS_17__hash_value_typeIN6cashew7IStringEiEENS_22__unordered_map_hasherIS3_S4_NS_4hashIS3_EELb1EEENS_21__unordered_map_equalIS3_S4_NS_8equal_toIS3_EELb1EEENS_9allocatorIS4_EEE8__rehashEj(i5, i1);
  }
 } else __ZNSt3__112__hash_tableINS_17__hash_value_typeIN6cashew7IStringEiEENS_22__unordered_map_hasherIS3_S4_NS_4hashIS3_EELb1EEENS_21__unordered_map_equalIS3_S4_NS_8equal_toIS3_EELb1EEENS_9allocatorIS4_EEE8__rehashEj(i5, i1);
 return;
}

function __ZNSt3__16vectorINS_10unique_ptrIN4wasm6ThreadENS_14default_deleteIS3_EEEENS_9allocatorIS6_EEE24__emplace_back_slow_pathIJS6_EEEvDpOT_(i7, i5) {
 i7 = i7 | 0;
 i5 = i5 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i6 = 0, i8 = 0;
 i8 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i6 = i8;
 i3 = i7 + 4 | 0;
 i4 = HEAP32[i7 >> 2] | 0;
 i2 = ((HEAP32[i3 >> 2] | 0) - i4 >> 2) + 1 | 0;
 if (i2 >>> 0 > 1073741823) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i7);
 i1 = (HEAP32[i7 + 8 >> 2] | 0) - i4 | 0;
 if (i1 >> 2 >>> 0 < 536870911) {
  i1 = i1 >> 1;
  i1 = i1 >>> 0 < i2 >>> 0 ? i2 : i1;
 } else i1 = 1073741823;
 __ZNSt3__114__split_bufferINS_10unique_ptrIN4wasm6ThreadENS_14default_deleteIS3_EEEERNS_9allocatorIS6_EEEC2EjjS9_(i6, i1, (HEAP32[i3 >> 2] | 0) - i4 >> 2, i7 + 8 | 0);
 i4 = i6 + 8 | 0;
 i3 = HEAP32[i4 >> 2] | 0;
 i2 = HEAP32[i5 >> 2] | 0;
 HEAP32[i5 >> 2] = 0;
 HEAP32[i3 >> 2] = i2;
 HEAP32[i4 >> 2] = i3 + 4;
 __ZNSt3__16vectorINS_10unique_ptrIN4wasm6ThreadENS_14default_deleteIS3_EEEENS_9allocatorIS6_EEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS8_EE(i7, i6);
 __ZNSt3__114__split_bufferINS_10unique_ptrIN4wasm6ThreadENS_14default_deleteIS3_EEEERNS_9allocatorIS6_EEED2Ev(i6);
 STACKTOP = i8;
 return;
}

function __ZNSt3__16vectorIN4wasm6Memory7SegmentENS_9allocatorIS3_EEE24__emplace_back_slow_pathIJiRPciEEEvDpOT_(i9, i5, i6, i7) {
 i9 = i9 | 0;
 i5 = i5 | 0;
 i6 = i6 | 0;
 i7 = i7 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i8 = 0, i10 = 0;
 i10 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i8 = i10;
 i3 = i9 + 4 | 0;
 i4 = HEAP32[i9 >> 2] | 0;
 i2 = (((HEAP32[i3 >> 2] | 0) - i4 | 0) / 12 | 0) + 1 | 0;
 if (i2 >>> 0 > 357913941) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i9);
 i1 = ((HEAP32[i9 + 8 >> 2] | 0) - i4 | 0) / 12 | 0;
 if (i1 >>> 0 < 178956970) {
  i1 = i1 << 1;
  i1 = i1 >>> 0 < i2 >>> 0 ? i2 : i1;
 } else i1 = 357913941;
 __ZNSt3__114__split_bufferIN4wasm6Memory7SegmentERNS_9allocatorIS3_EEEC2EjjS6_(i8, i1, ((HEAP32[i3 >> 2] | 0) - i4 | 0) / 12 | 0, i9 + 8 | 0);
 i4 = i8 + 8 | 0;
 i3 = HEAP32[i4 >> 2] | 0;
 i6 = HEAP32[i6 >> 2] | 0;
 i7 = HEAP32[i7 >> 2] | 0;
 HEAP32[i3 >> 2] = HEAP32[i5 >> 2];
 HEAP32[i3 + 4 >> 2] = i6;
 HEAP32[i3 + 8 >> 2] = i7;
 HEAP32[i4 >> 2] = i3 + 12;
 __ZNSt3__16vectorIN4wasm6Memory7SegmentENS_9allocatorIS3_EEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i9, i8);
 __ZNSt3__114__split_bufferIN4wasm6Memory7SegmentERNS_9allocatorIS3_EEED2Ev(i8);
 STACKTOP = i10;
 return;
}

function __ZN4wasm22SExpressionWasmBuilder9makeBreakERNS_7ElementE(i4, i3) {
 i4 = i4 | 0;
 i3 = i3 | 0;
 var i1 = 0, i2 = 0;
 i1 = __ZN10MixedArena5allocIN4wasm5BreakEEEPT_v(HEAP32[i4 + 4 >> 2] | 0) | 0;
 i2 = __ZN4wasm7Element4listEv(i3) | 0;
 i2 = __ZN4wasm22SExpressionWasmBuilder8getLabelERNS_7ElementE(i4, HEAP32[(HEAP32[i2 >> 2] | 0) + 4 >> 2] | 0) | 0;
 HEAP32[i1 + 8 >> 2] = i2;
 do if ((__ZN4wasm7Element4sizeEv(i3) | 0) != 2) {
  i2 = __ZN4wasm7Element4listEv(i3) | 0;
  i2 = __ZN4wasm7Element3strEv(HEAP32[HEAP32[i2 >> 2] >> 2] | 0) | 0;
  if ((i2 | 0) != (HEAP32[9021] | 0)) {
   i3 = __ZN4wasm7Element4listEv(i3) | 0;
   i4 = __ZN4wasm22SExpressionWasmBuilder15parseExpressionERNS_7ElementE(i4, HEAP32[(HEAP32[i3 >> 2] | 0) + 8 >> 2] | 0) | 0;
   HEAP32[i1 + 12 >> 2] = i4;
   break;
  }
  if ((__ZN4wasm7Element4sizeEv(i3) | 0) >>> 0 > 3) {
   i2 = __ZN4wasm7Element4listEv(i3) | 0;
   i2 = __ZN4wasm22SExpressionWasmBuilder15parseExpressionERNS_7ElementE(i4, HEAP32[(HEAP32[i2 >> 2] | 0) + 8 >> 2] | 0) | 0;
   HEAP32[i1 + 12 >> 2] = i2;
   i2 = 3;
  } else i2 = 2;
  i4 = __ZN4wasm22SExpressionWasmBuilder15parseExpressionERNS_7ElementE(i4, __ZN4wasm7ElementixEj(i3, i2) | 0) | 0;
  HEAP32[i1 + 16 >> 2] = i4;
 } while (0);
 return i1 | 0;
}

function __ZNSt3__16vectorIPN4wasm5BreakENS_9allocatorIS3_EEE8__appendEj(i7, i2) {
 i7 = i7 | 0;
 i2 = i2 | 0;
 var i1 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i8 = 0, i9 = 0;
 i9 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i6 = i9;
 i3 = HEAP32[i7 + 8 >> 2] | 0;
 i8 = i7 + 4 | 0;
 i1 = HEAP32[i8 >> 2] | 0;
 if (i3 - i1 >> 2 >>> 0 < i2 >>> 0) {
  i5 = HEAP32[i7 >> 2] | 0;
  i4 = (i1 - i5 >> 2) + i2 | 0;
  if (i4 >>> 0 > 1073741823) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i7);
  i1 = i3 - i5 | 0;
  if (i1 >> 2 >>> 0 < 536870911) {
   i1 = i1 >> 1;
   i1 = i1 >>> 0 < i4 >>> 0 ? i4 : i1;
  } else i1 = 1073741823;
  __ZNSt3__114__split_bufferIPN4wasm5BreakERNS_9allocatorIS3_EEEC2EjjS6_(i6, i1, (HEAP32[i8 >> 2] | 0) - i5 >> 2, i7 + 8 | 0);
  i8 = i6 + 8 | 0;
  i5 = HEAP32[i8 >> 2] | 0;
  _memset(i5 | 0, 0, i2 << 2 | 0) | 0;
  HEAP32[i8 >> 2] = i5 + (i2 << 2);
  __ZNSt3__16vectorIPN4wasm5BreakENS_9allocatorIS3_EEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i7, i6);
  __ZNSt3__114__split_bufferIPN4wasm5BreakERNS_9allocatorIS3_EEED2Ev(i6);
 } else do {
  HEAP32[i1 >> 2] = 0;
  i1 = (HEAP32[i8 >> 2] | 0) + 4 | 0;
  HEAP32[i8 >> 2] = i1;
  i2 = i2 + -1 | 0;
 } while ((i2 | 0) != 0);
 STACKTOP = i9;
 return;
}

function __ZN4wasmlsERNSt3__113basic_ostreamIcNS0_11char_traitsIcEEEENS_7LiteralE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 var i3 = 0;
 __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_c(i2, 40) | 0;
 i3 = HEAP32[i1 >> 2] | 0;
 __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(__ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(i2, __ZN4wasm13printWasmTypeENS_8WasmTypeE(i3) | 0) | 0, 15537) | 0;
 switch (i3 | 0) {
 case 0:
  {
   __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(i2, 25837) | 0;
   break;
  }
 case 1:
  {
   __ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEElsEi(i2, HEAP32[i1 + 8 >> 2] | 0) | 0;
   break;
  }
 case 2:
  {
   i3 = i1 + 8 | 0;
   __ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEElsEx(i2, HEAP32[i3 >> 2] | 0, HEAP32[i3 + 4 >> 2] | 0) | 0;
   break;
  }
 case 3:
  {
   __ZN4wasm7Literal10printFloatERNSt3__113basic_ostreamIcNS1_11char_traitsIcEEEEf(i2, +__ZNK4wasm7Literal6getf32Ev(i1));
   break;
  }
 case 4:
  {
   __ZN4wasm7Literal11printDoubleERNSt3__113basic_ostreamIcNS1_11char_traitsIcEEEEd(i2, +__ZNK4wasm7Literal6getf64Ev(i1));
   break;
  }
 default:
  {}
 }
 return __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_c(i2, 41) | 0;
}

function __ZNSt3__16vectorINS_10unique_ptrIN4wasm6VacuumENS_14default_deleteIS3_EEEENS_9allocatorIS6_EEE21__push_back_slow_pathIS6_EEvOT_(i7, i6) {
 i7 = i7 | 0;
 i6 = i6 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i8 = 0;
 i8 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i5 = i8;
 i3 = i7 + 4 | 0;
 i4 = HEAP32[i7 >> 2] | 0;
 i2 = ((HEAP32[i3 >> 2] | 0) - i4 >> 2) + 1 | 0;
 if (i2 >>> 0 > 1073741823) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i7);
 i1 = (HEAP32[i7 + 8 >> 2] | 0) - i4 | 0;
 if (i1 >> 2 >>> 0 < 536870911) {
  i1 = i1 >> 1;
  i1 = i1 >>> 0 < i2 >>> 0 ? i2 : i1;
 } else i1 = 1073741823;
 __ZNSt3__114__split_bufferINS_10unique_ptrIN4wasm6VacuumENS_14default_deleteIS3_EEEERNS_9allocatorIS6_EEEC2EjjS9_(i5, i1, (HEAP32[i3 >> 2] | 0) - i4 >> 2, i7 + 8 | 0);
 i4 = i5 + 8 | 0;
 i3 = HEAP32[i4 >> 2] | 0;
 i2 = HEAP32[i6 >> 2] | 0;
 HEAP32[i6 >> 2] = 0;
 HEAP32[i3 >> 2] = i2;
 HEAP32[i4 >> 2] = i3 + 4;
 __ZNSt3__16vectorINS_10unique_ptrIN4wasm6VacuumENS_14default_deleteIS3_EEEENS_9allocatorIS6_EEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS8_EE(i7, i5);
 __ZNSt3__114__split_bufferINS_10unique_ptrIN4wasm6VacuumENS_14default_deleteIS3_EEEERNS_9allocatorIS6_EEED2Ev(i5);
 STACKTOP = i8;
 return;
}

function __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKcj(i7, i4, i2, i6) {
 i7 = i7 | 0;
 i4 = i4 | 0;
 i2 = i2 | 0;
 i6 = i6 | 0;
 var i1 = 0, i3 = 0, i5 = 0;
 i1 = HEAP8[i7 >> 0] | 0;
 i3 = (i1 & 1) == 0;
 if (i3) i5 = (i1 & 255) >>> 1; else i5 = HEAP32[i7 + 4 >> 2] | 0;
 if (i5 >>> 0 < i4 >>> 0) __ZNKSt3__121__basic_string_commonILb1EE20__throw_out_of_rangeEv(i7);
 if (i3) i3 = 10; else {
  i1 = HEAP32[i7 >> 2] | 0;
  i3 = (i1 & -2) + -1 | 0;
  i1 = i1 & 255;
 }
 if ((i3 - i5 | 0) >>> 0 >= i6 >>> 0) {
  if (i6 | 0) {
   if (!(i1 & 1)) i3 = i7 + 1 | 0; else i3 = HEAP32[i7 + 8 >> 2] | 0;
   if ((i5 | 0) == (i4 | 0)) i1 = i3 + i4 | 0; else {
    i1 = i3 + i4 | 0;
    _memmove(i1 + i6 | 0, i1 | 0, i5 - i4 | 0) | 0;
    i2 = i1 >>> 0 <= i2 >>> 0 & (i3 + i5 | 0) >>> 0 > i2 >>> 0 ? i2 + i6 | 0 : i2;
   }
   _memmove(i1 | 0, i2 | 0, i6 | 0) | 0;
   i1 = i5 + i6 | 0;
   if (!(HEAP8[i7 >> 0] & 1)) HEAP8[i7 >> 0] = i1 << 1; else HEAP32[i7 + 4 >> 2] = i1;
   HEAP8[i3 + i1 >> 0] = 0;
  }
 } else __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE21__grow_by_and_replaceEjjjjjjPKc(i7, i3, i5 + i6 - i3 | 0, i5, i4, 0, i6, i2);
 return i7 | 0;
}

function __ZNKSt3__18time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE11__get_am_pmERiRS4_S4_RjRKNS_5ctypeIwEE(i1, i10, i5, i7, i8, i6) {
 i1 = i1 | 0;
 i10 = i10 | 0;
 i5 = i5 | 0;
 i7 = i7 | 0;
 i8 = i8 | 0;
 i6 = i6 | 0;
 var i2 = 0, i3 = 0, i4 = 0, i9 = 0, i11 = 0;
 i11 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i3 = i11 + 4 | 0;
 i4 = i11;
 i9 = i1 + 8 | 0;
 i9 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i9 >> 2] | 0) + 8 >> 2] & 127](i9) | 0;
 i1 = HEAP8[i9 >> 0] | 0;
 if (!(i1 & 1)) i2 = (i1 & 255) >>> 1; else i2 = HEAP32[i9 + 4 >> 2] | 0;
 i1 = HEAP8[i9 + 12 >> 0] | 0;
 if (!(i1 & 1)) i1 = (i1 & 255) >>> 1; else i1 = HEAP32[i9 + 16 >> 2] | 0;
 do if ((i2 | 0) != (0 - i1 | 0)) {
  HEAP32[i4 >> 2] = HEAP32[i7 >> 2];
  HEAP32[i3 >> 2] = HEAP32[i4 >> 2];
  i1 = __ZNSt3__114__scan_keywordINS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEPKNS_12basic_stringIwS3_NS_9allocatorIwEEEENS_5ctypeIwEEEET0_RT_SE_SD_SD_RKT1_Rjb(i5, i3, i9, i9 + 24 | 0, i6, i8, 0) | 0;
  i2 = HEAP32[i10 >> 2] | 0;
  if ((i1 | 0) == (i9 | 0) & (i2 | 0) == 12) {
   HEAP32[i10 >> 2] = 0;
   break;
  }
  if ((i2 | 0) < 12 & (i1 - i9 | 0) == 12) HEAP32[i10 >> 2] = i2 + 12;
 } else HEAP32[i8 >> 2] = HEAP32[i8 >> 2] | 4; while (0);
 STACKTOP = i11;
 return;
}

function __ZNKSt3__18time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE11__get_am_pmERiRS4_S4_RjRKNS_5ctypeIcEE(i1, i10, i5, i7, i8, i6) {
 i1 = i1 | 0;
 i10 = i10 | 0;
 i5 = i5 | 0;
 i7 = i7 | 0;
 i8 = i8 | 0;
 i6 = i6 | 0;
 var i2 = 0, i3 = 0, i4 = 0, i9 = 0, i11 = 0;
 i11 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i3 = i11 + 4 | 0;
 i4 = i11;
 i9 = i1 + 8 | 0;
 i9 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i9 >> 2] | 0) + 8 >> 2] & 127](i9) | 0;
 i1 = HEAP8[i9 >> 0] | 0;
 if (!(i1 & 1)) i2 = (i1 & 255) >>> 1; else i2 = HEAP32[i9 + 4 >> 2] | 0;
 i1 = HEAP8[i9 + 12 >> 0] | 0;
 if (!(i1 & 1)) i1 = (i1 & 255) >>> 1; else i1 = HEAP32[i9 + 16 >> 2] | 0;
 do if ((i2 | 0) != (0 - i1 | 0)) {
  HEAP32[i4 >> 2] = HEAP32[i7 >> 2];
  HEAP32[i3 >> 2] = HEAP32[i4 >> 2];
  i1 = __ZNSt3__114__scan_keywordINS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEPKNS_12basic_stringIcS3_NS_9allocatorIcEEEENS_5ctypeIcEEEET0_RT_SE_SD_SD_RKT1_Rjb(i5, i3, i9, i9 + 24 | 0, i6, i8, 0) | 0;
  i2 = HEAP32[i10 >> 2] | 0;
  if ((i1 | 0) == (i9 | 0) & (i2 | 0) == 12) {
   HEAP32[i10 >> 2] = 0;
   break;
  }
  if ((i2 | 0) < 12 & (i1 - i9 | 0) == 12) HEAP32[i10 >> 2] = i2 + 12;
 } else HEAP32[i8 >> 2] = HEAP32[i8 >> 2] | 4; while (0);
 STACKTOP = i11;
 return;
}

function __ZNSt3__113basic_istreamIcNS_11char_traitsIcEEErsERy(i8, i7) {
 i8 = i8 | 0;
 i7 = i7 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0;
 i9 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i2 = i9 + 20 | 0;
 i1 = i9 + 16 | 0;
 i3 = i9 + 12 | 0;
 i4 = i9 + 8 | 0;
 i10 = i9 + 24 | 0;
 i6 = i9 + 4 | 0;
 i5 = i9;
 __ZNSt3__113basic_istreamIcNS_11char_traitsIcEEE6sentryC2ERS3_b(i10, i8, 0);
 if (HEAP8[i10 >> 0] | 0) {
  HEAP32[i6 >> 2] = 0;
  i11 = __ZNKSt3__18ios_base6getlocEv(i8 + (HEAP32[(HEAP32[i8 >> 2] | 0) + -12 >> 2] | 0) | 0) | 0;
  HEAP32[i5 >> 2] = i11;
  i11 = __ZNKSt3__16locale9use_facetERNS0_2idE(i5, 38400) | 0;
  i10 = i8 + (HEAP32[(HEAP32[i8 >> 2] | 0) + -12 >> 2] | 0) | 0;
  i12 = HEAP32[(HEAP32[i11 >> 2] | 0) + 36 >> 2] | 0;
  HEAP32[i3 >> 2] = HEAP32[i10 + 24 >> 2];
  HEAP32[i4 >> 2] = 0;
  HEAP32[i1 >> 2] = HEAP32[i3 >> 2];
  HEAP32[i2 >> 2] = HEAP32[i4 >> 2];
  FUNCTION_TABLE_iiiiiii[i12 & 63](i11, i1, i2, i10, i6, i7) | 0;
  __ZNSt3__16localeD2Ev(i5);
  i7 = i8 + (HEAP32[(HEAP32[i8 >> 2] | 0) + -12 >> 2] | 0) | 0;
  i10 = i7 + 16 | 0;
  HEAP32[i10 >> 2] = HEAP32[i10 >> 2] | HEAP32[i6 >> 2] | (HEAP32[i7 + 24 >> 2] | 0) == 0;
 }
 STACKTOP = i9;
 return i8 | 0;
}

function __ZNSt3__113basic_istreamIcNS_11char_traitsIcEEErsERx(i8, i7) {
 i8 = i8 | 0;
 i7 = i7 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0;
 i9 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i2 = i9 + 20 | 0;
 i1 = i9 + 16 | 0;
 i3 = i9 + 12 | 0;
 i4 = i9 + 8 | 0;
 i10 = i9 + 24 | 0;
 i6 = i9 + 4 | 0;
 i5 = i9;
 __ZNSt3__113basic_istreamIcNS_11char_traitsIcEEE6sentryC2ERS3_b(i10, i8, 0);
 if (HEAP8[i10 >> 0] | 0) {
  HEAP32[i6 >> 2] = 0;
  i11 = __ZNKSt3__18ios_base6getlocEv(i8 + (HEAP32[(HEAP32[i8 >> 2] | 0) + -12 >> 2] | 0) | 0) | 0;
  HEAP32[i5 >> 2] = i11;
  i11 = __ZNKSt3__16locale9use_facetERNS0_2idE(i5, 38400) | 0;
  i10 = i8 + (HEAP32[(HEAP32[i8 >> 2] | 0) + -12 >> 2] | 0) | 0;
  i12 = HEAP32[(HEAP32[i11 >> 2] | 0) + 20 >> 2] | 0;
  HEAP32[i3 >> 2] = HEAP32[i10 + 24 >> 2];
  HEAP32[i4 >> 2] = 0;
  HEAP32[i1 >> 2] = HEAP32[i3 >> 2];
  HEAP32[i2 >> 2] = HEAP32[i4 >> 2];
  FUNCTION_TABLE_iiiiiii[i12 & 63](i11, i1, i2, i10, i6, i7) | 0;
  __ZNSt3__16localeD2Ev(i5);
  i7 = i8 + (HEAP32[(HEAP32[i8 >> 2] | 0) + -12 >> 2] | 0) | 0;
  i10 = i7 + 16 | 0;
  HEAP32[i10 >> 2] = HEAP32[i10 >> 2] | HEAP32[i6 >> 2] | (HEAP32[i7 + 24 >> 2] | 0) == 0;
 }
 STACKTOP = i9;
 return i8 | 0;
}

function __ZNSt3__113basic_istreamIcNS_11char_traitsIcEEErsERj(i8, i7) {
 i8 = i8 | 0;
 i7 = i7 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0;
 i9 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i2 = i9 + 20 | 0;
 i1 = i9 + 16 | 0;
 i3 = i9 + 12 | 0;
 i4 = i9 + 8 | 0;
 i10 = i9 + 24 | 0;
 i6 = i9 + 4 | 0;
 i5 = i9;
 __ZNSt3__113basic_istreamIcNS_11char_traitsIcEEE6sentryC2ERS3_b(i10, i8, 0);
 if (HEAP8[i10 >> 0] | 0) {
  HEAP32[i6 >> 2] = 0;
  i11 = __ZNKSt3__18ios_base6getlocEv(i8 + (HEAP32[(HEAP32[i8 >> 2] | 0) + -12 >> 2] | 0) | 0) | 0;
  HEAP32[i5 >> 2] = i11;
  i11 = __ZNKSt3__16locale9use_facetERNS0_2idE(i5, 38400) | 0;
  i10 = i8 + (HEAP32[(HEAP32[i8 >> 2] | 0) + -12 >> 2] | 0) | 0;
  i12 = HEAP32[(HEAP32[i11 >> 2] | 0) + 28 >> 2] | 0;
  HEAP32[i3 >> 2] = HEAP32[i10 + 24 >> 2];
  HEAP32[i4 >> 2] = 0;
  HEAP32[i1 >> 2] = HEAP32[i3 >> 2];
  HEAP32[i2 >> 2] = HEAP32[i4 >> 2];
  FUNCTION_TABLE_iiiiiii[i12 & 63](i11, i1, i2, i10, i6, i7) | 0;
  __ZNSt3__16localeD2Ev(i5);
  i7 = i8 + (HEAP32[(HEAP32[i8 >> 2] | 0) + -12 >> 2] | 0) | 0;
  i10 = i7 + 16 | 0;
  HEAP32[i10 >> 2] = HEAP32[i10 >> 2] | HEAP32[i6 >> 2] | (HEAP32[i7 + 24 >> 2] | 0) == 0;
 }
 STACKTOP = i9;
 return i8 | 0;
}

function __ZN6cashew7IString3setEPKcb(i5, i1, i2) {
 i5 = i5 | 0;
 i1 = i1 | 0;
 i2 = i2 | 0;
 var i3 = 0, i4 = 0, i6 = 0, i7 = 0;
 i6 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i3 = i6 + 8 | 0;
 i4 = i6;
 HEAP32[i4 >> 2] = i1;
 if ((HEAP8[35224] | 0) == 0 ? ___cxa_guard_acquire(35224) | 0 : 0) {
  i1 = __Znwj(20) | 0;
  HEAP32[i1 >> 2] = 0;
  HEAP32[i1 + 4 >> 2] = 0;
  HEAP32[i1 + 8 >> 2] = 0;
  HEAP32[i1 + 12 >> 2] = 0;
  HEAPF32[i1 + 16 >> 2] = 1.0;
  HEAP32[9053] = i1;
 }
 i1 = __ZNSt3__112__hash_tableIPKcN6cashew7IString11CStringHashENS4_12CStringEqualENS_9allocatorIS2_EEE4findIS2_EENS_15__hash_iteratorIPNS_11__hash_nodeIS2_PvEEEERKT_(HEAP32[9053] | 0, i4) | 0;
 if (!i1) {
  if (__ZN4wasm10ThreadPool9isRunningEv() | 0) ___assert_fail(14030, 13987, 76, 14061);
  if (i2) i1 = HEAP32[i4 >> 2] | 0; else {
   i7 = HEAP32[i4 >> 2] | 0;
   i2 = (_strlen(i7) | 0) + 1 | 0;
   i1 = _malloc(i2) | 0;
   _strncpy(i1, i7, i2) | 0;
   HEAP32[i4 >> 2] = i1;
  }
  __ZNSt3__112__hash_tableIPKcN6cashew7IString11CStringHashENS4_12CStringEqualENS_9allocatorIS2_EEE15__insert_uniqueERKS2_(i3, HEAP32[9053] | 0, i4);
 } else {
  i1 = HEAP32[i1 + 8 >> 2] | 0;
  HEAP32[i4 >> 2] = i1;
 }
 HEAP32[i5 >> 2] = i1;
 STACKTOP = i6;
 return;
}

function __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendIPKcEENS_9enable_ifIXsr21__is_forward_iteratorIT_EE5valueERS7_E4typeESC_SC_(i9, i5, i8) {
 i9 = i9 | 0;
 i5 = i5 | 0;
 i8 = i8 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i6 = 0, i7 = 0;
 i3 = i5;
 i1 = HEAP8[i9 >> 0] | 0;
 if (!(i1 & 1)) {
  i2 = 10;
  i7 = (i1 & 255) >>> 1;
 } else {
  i1 = HEAP32[i9 >> 2] | 0;
  i2 = (i1 & -2) + -1 | 0;
  i7 = HEAP32[i9 + 4 >> 2] | 0;
  i1 = i1 & 255;
 }
 i6 = i8 - i3 | 0;
 do if ((i8 | 0) != (i5 | 0)) {
  if ((i2 - i7 | 0) >>> 0 < i6 >>> 0) {
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE9__grow_byEjjjjjj(i9, i2, i7 + i6 - i2 | 0, i7, i7, 0);
   i1 = HEAP8[i9 >> 0] | 0;
  }
  if (!(i1 & 1)) i4 = i9 + 1 | 0; else i4 = HEAP32[i9 + 8 >> 2] | 0;
  i3 = i8 + (i7 - i3) | 0;
  i1 = i5;
  i2 = i4 + i7 | 0;
  while (1) {
   if ((i1 | 0) == (i8 | 0)) break;
   HEAP8[i2 >> 0] = HEAP8[i1 >> 0] | 0;
   i1 = i1 + 1 | 0;
   i2 = i2 + 1 | 0;
  }
  HEAP8[i4 + i3 >> 0] = 0;
  i1 = i7 + i6 | 0;
  if (!(HEAP8[i9 >> 0] & 1)) {
   HEAP8[i9 >> 0] = i1 << 1;
   break;
  } else {
   HEAP32[i9 + 4 >> 2] = i1;
   break;
  }
 } while (0);
 return;
}

function __ZL25default_terminate_handlerv() {
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0;
 i5 = STACKTOP;
 STACKTOP = STACKTOP + 48 | 0;
 i7 = i5 + 32 | 0;
 i3 = i5 + 24 | 0;
 i8 = i5 + 16 | 0;
 i6 = i5;
 i5 = i5 + 36 | 0;
 i1 = ___cxa_get_globals_fast() | 0;
 if (i1 | 0 ? (i4 = HEAP32[i1 >> 2] | 0, i4 | 0) : 0) {
  i1 = i4 + 48 | 0;
  i2 = HEAP32[i1 >> 2] | 0;
  i1 = HEAP32[i1 + 4 >> 2] | 0;
  if (!((i2 & -256 | 0) == 1126902528 & (i1 | 0) == 1129074247)) {
   HEAP32[i3 >> 2] = HEAP32[3103];
   _abort_message(32995, i3);
  }
  if ((i2 | 0) == 1126902529 & (i1 | 0) == 1129074247) i1 = HEAP32[i4 + 44 >> 2] | 0; else i1 = i4 + 80 | 0;
  HEAP32[i5 >> 2] = i1;
  i4 = HEAP32[i4 >> 2] | 0;
  i1 = HEAP32[i4 + 4 >> 2] | 0;
  if (FUNCTION_TABLE_iiii[HEAP32[(HEAP32[702] | 0) + 16 >> 2] & 31](2808, i4, i5) | 0) {
   i8 = HEAP32[i5 >> 2] | 0;
   i5 = HEAP32[3103] | 0;
   i8 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i8 >> 2] | 0) + 8 >> 2] & 127](i8) | 0;
   HEAP32[i6 >> 2] = i5;
   HEAP32[i6 + 4 >> 2] = i1;
   HEAP32[i6 + 8 >> 2] = i8;
   _abort_message(32909, i6);
  } else {
   HEAP32[i8 >> 2] = HEAP32[3103];
   HEAP32[i8 + 4 >> 2] = i1;
   _abort_message(32954, i8);
  }
 }
 _abort_message(33033, i7);
}

function __ZN4wasm6ModuleD2Ev(i1) {
 i1 = i1 | 0;
 __ZNSt3__16__treeINS_12__value_typeIN4wasm4NameEPNS2_8FunctionEEENS_19__map_value_compareIS3_S6_NS_4lessIS3_EELb1EEENS_9allocatorIS6_EEED2Ev(i1 + 176 | 0);
 __ZNSt3__16__treeINS_12__value_typeIN4wasm4NameEPNS2_6ExportEEENS_19__map_value_compareIS3_S6_NS_4lessIS3_EELb1EEENS_9allocatorIS6_EEED2Ev(i1 + 164 | 0);
 __ZNSt3__16__treeINS_12__value_typeIN4wasm4NameEPNS2_6ImportEEENS_19__map_value_compareIS3_S6_NS_4lessIS3_EELb1EEENS_9allocatorIS6_EEED2Ev(i1 + 152 | 0);
 __ZNSt3__16__treeINS_12__value_typeIN4wasm4NameEPNS2_12FunctionTypeEEENS_19__map_value_compareIS3_S6_NS_4lessIS3_EELb1EEENS_9allocatorIS6_EEED2Ev(i1 + 140 | 0);
 __ZN10MixedArenaD2Ev(i1 + 88 | 0);
 __ZNSt3__113__vector_baseIN4wasm6Memory7SegmentENS_9allocatorIS3_EEED2Ev(i1 + 68 | 0);
 __ZNSt3__113__vector_baseIN4wasm4NameENS_9allocatorIS2_EEED2Ev(i1 + 48 | 0);
 __ZNSt3__113__vector_baseIPN4wasm8FunctionENS_9allocatorIS3_EEED2Ev(i1 + 36 | 0);
 __ZNSt3__113__vector_baseIPN4wasm6ExportENS_9allocatorIS3_EEED2Ev(i1 + 24 | 0);
 __ZNSt3__113__vector_baseIPN4wasm6ImportENS_9allocatorIS3_EEED2Ev(i1 + 12 | 0);
 __ZNSt3__113__vector_baseIPN4wasm12FunctionTypeENS_9allocatorIS3_EEED2Ev(i1);
 return;
}

function __ZN4wasm22SExpressionWasmBuilder14makeMaybeBlockERNS_7ElementEjj(i11, i9, i2, i10) {
 i11 = i11 | 0;
 i9 = i9 | 0;
 i2 = i2 | 0;
 i10 = i10 | 0;
 var i1 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i12 = 0;
 i12 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i5 = i12;
 if ((__ZN4wasm7Element4sizeEv(i9) | 0) == (i2 + 1 | 0)) i1 = __ZN4wasm22SExpressionWasmBuilder15parseExpressionERNS_7ElementE(i11, __ZN4wasm7ElementixEj(i9, i2) | 0) | 0; else {
  i1 = __ZN10MixedArena5allocIN4wasm5BlockEEEPT_v(HEAP32[i11 + 4 >> 2] | 0) | 0;
  i8 = i1 + 16 | 0;
  i6 = i1 + 20 | 0;
  i7 = i1 + 12 | 0;
  while (1) {
   if (!(i2 >>> 0 < i10 >>> 0 & i2 >>> 0 < (__ZN4wasm7Element4sizeEv(i9) | 0) >>> 0)) break;
   i3 = __ZN4wasm22SExpressionWasmBuilder15parseExpressionERNS_7ElementE(i11, __ZN4wasm7ElementixEj(i9, i2) | 0) | 0;
   HEAP32[i5 >> 2] = i3;
   i4 = HEAP32[i8 >> 2] | 0;
   if (i4 >>> 0 < (HEAP32[i6 >> 2] | 0) >>> 0) {
    HEAP32[i4 >> 2] = i3;
    HEAP32[i8 >> 2] = (HEAP32[i8 >> 2] | 0) + 4;
   } else __ZNSt3__16vectorIPN4wasm10ExpressionENS_9allocatorIS3_EEE21__push_back_slow_pathIS3_EEvOT_(i7, i5);
   i2 = i2 + 1 | 0;
  }
  __ZN4wasm5Block8finalizeEv(i1);
 }
 STACKTOP = i12;
 return i1 | 0;
}

function __ZNSt3__16vectorINS_4pairIPN4wasm7ElementEPNS2_5BlockEEENS_9allocatorIS7_EEE24__emplace_back_slow_pathIJRS4_RS6_EEEvDpOT_(i8, i5, i6) {
 i8 = i8 | 0;
 i5 = i5 | 0;
 i6 = i6 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i7 = 0, i9 = 0;
 i9 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i7 = i9;
 i3 = i8 + 4 | 0;
 i4 = HEAP32[i8 >> 2] | 0;
 i2 = ((HEAP32[i3 >> 2] | 0) - i4 >> 3) + 1 | 0;
 if (i2 >>> 0 > 536870911) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i8);
 i1 = (HEAP32[i8 + 8 >> 2] | 0) - i4 | 0;
 if (i1 >> 3 >>> 0 < 268435455) {
  i1 = i1 >> 2;
  i1 = i1 >>> 0 < i2 >>> 0 ? i2 : i1;
 } else i1 = 536870911;
 __ZNSt3__114__split_bufferINS_4pairIPN4wasm7ElementEPNS2_5BlockEEERNS_9allocatorIS7_EEEC2EjjSA_(i7, i1, (HEAP32[i3 >> 2] | 0) - i4 >> 3, i8 + 8 | 0);
 i4 = i7 + 8 | 0;
 i3 = HEAP32[i4 >> 2] | 0;
 HEAP32[i3 >> 2] = HEAP32[i5 >> 2];
 HEAP32[i3 + 4 >> 2] = HEAP32[i6 >> 2];
 HEAP32[i4 >> 2] = i3 + 8;
 __ZNSt3__16vectorINS_4pairIPN4wasm7ElementEPNS2_5BlockEEENS_9allocatorIS7_EEE26__swap_out_circular_bufferERNS_14__split_bufferIS7_RS9_EE(i8, i7);
 __ZNSt3__114__split_bufferINS_4pairIPN4wasm7ElementEPNS2_5BlockEEERNS_9allocatorIS7_EEED2Ev(i7);
 STACKTOP = i9;
 return;
}

function __ZNSt3__16vectorINS_8functionIFN4wasm15ThreadWorkStateEvEEENS_9allocatorIS5_EEE21__push_back_slow_pathIS5_EEvOT_(i7, i6) {
 i7 = i7 | 0;
 i6 = i6 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i8 = 0;
 i8 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i5 = i8;
 i3 = i7 + 4 | 0;
 i4 = HEAP32[i7 >> 2] | 0;
 i2 = (((HEAP32[i3 >> 2] | 0) - i4 | 0) / 24 | 0) + 1 | 0;
 if (i2 >>> 0 > 178956970) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i7);
 i1 = ((HEAP32[i7 + 8 >> 2] | 0) - i4 | 0) / 24 | 0;
 if (i1 >>> 0 < 89478485) {
  i1 = i1 << 1;
  i1 = i1 >>> 0 < i2 >>> 0 ? i2 : i1;
 } else i1 = 178956970;
 __ZNSt3__114__split_bufferINS_8functionIFN4wasm15ThreadWorkStateEvEEERNS_9allocatorIS5_EEEC2EjjS8_(i5, i1, ((HEAP32[i3 >> 2] | 0) - i4 | 0) / 24 | 0, i7 + 8 | 0);
 i4 = i5 + 8 | 0;
 i3 = HEAP32[i4 >> 2] | 0;
 __ZNSt3__18functionIFN4wasm15ThreadWorkStateEvEEC2EOS4_(i3, i6);
 HEAP32[i4 >> 2] = i3 + 24;
 __ZNSt3__16vectorINS_8functionIFN4wasm15ThreadWorkStateEvEEENS_9allocatorIS5_EEE26__swap_out_circular_bufferERNS_14__split_bufferIS5_RS7_EE(i7, i5);
 __ZNSt3__114__split_bufferINS_8functionIFN4wasm15ThreadWorkStateEvEEERNS_9allocatorIS5_EEED2Ev(i5);
 STACKTOP = i8;
 return;
}

function __ZNSt3__16vectorINS0_IPN4wasm5BreakENS_9allocatorIS3_EEEENS4_IS6_EEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS7_EE(i6, i5) {
 i6 = i6 | 0;
 i5 = i5 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0;
 i2 = HEAP32[i6 >> 2] | 0;
 i3 = i6 + 4 | 0;
 i4 = i5 + 4 | 0;
 i1 = HEAP32[i3 >> 2] | 0;
 while (1) {
  if ((i1 | 0) == (i2 | 0)) break;
  i10 = HEAP32[i4 >> 2] | 0;
  i8 = i10 + -12 | 0;
  i7 = i1 + -12 | 0;
  HEAP32[i8 >> 2] = 0;
  i9 = i10 + -8 | 0;
  HEAP32[i9 >> 2] = 0;
  HEAP32[i10 + -4 >> 2] = 0;
  HEAP32[i8 >> 2] = HEAP32[i7 >> 2];
  i8 = i1 + -8 | 0;
  HEAP32[i9 >> 2] = HEAP32[i8 >> 2];
  i9 = i1 + -4 | 0;
  HEAP32[i10 + -4 >> 2] = HEAP32[i9 >> 2];
  HEAP32[i9 >> 2] = 0;
  HEAP32[i8 >> 2] = 0;
  HEAP32[i7 >> 2] = 0;
  HEAP32[i4 >> 2] = (HEAP32[i4 >> 2] | 0) + -12;
  i1 = i7;
 }
 i8 = HEAP32[i6 >> 2] | 0;
 HEAP32[i6 >> 2] = HEAP32[i4 >> 2];
 HEAP32[i4 >> 2] = i8;
 i8 = i5 + 8 | 0;
 i10 = HEAP32[i3 >> 2] | 0;
 HEAP32[i3 >> 2] = HEAP32[i8 >> 2];
 HEAP32[i8 >> 2] = i10;
 i8 = i6 + 8 | 0;
 i10 = i5 + 12 | 0;
 i9 = HEAP32[i8 >> 2] | 0;
 HEAP32[i8 >> 2] = HEAP32[i10 >> 2];
 HEAP32[i10 >> 2] = i9;
 HEAP32[i5 >> 2] = HEAP32[i4 >> 2];
 return;
}

function __ZN4wasm14ModuleInstance15getFinalAddressINS_5StoreEEEjPT_NS_7LiteralE(i1, i4, i2) {
 i1 = i1 | 0;
 i4 = i4 | 0;
 i2 = i2 | 0;
 var i3 = 0, i5 = 0, i6 = 0, i7 = 0;
 i6 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i5 = i6;
 HEAP32[i5 >> 2] = i1;
 i3 = HEAP32[i1 + 20 >> 2] << 16;
 if ((HEAP32[i2 >> 2] | 0) == 1) {
  i2 = __ZNK4wasm7Literal6geti32Ev(i2) | 0;
  i1 = i2;
  i2 = ((i2 | 0) < 0) << 31 >> 31;
 } else {
  i1 = __ZNK4wasm7Literal6geti64Ev(i2) | 0;
  i2 = tempRet0;
 }
 i7 = i4 + 12 | 0;
 __ZZN4wasm14ModuleInstance15getFinalAddressINS_5StoreEEEjPT_NS_7LiteralEENKUlyyPKcE_clEyyS7_(i5, HEAP32[i7 >> 2] | 0, 0, i3, 0, 16254);
 __ZZN4wasm14ModuleInstance15getFinalAddressINS_5StoreEEEjPT_NS_7LiteralEENKUlyyPKcE_clEyyS7_(i5, i1, i2, i3 - (HEAP32[i7 >> 2] | 0) | 0, 0, 16270);
 i2 = _i64Add(HEAP32[i7 >> 2] | 0, 0, i1 | 0, i2 | 0) | 0;
 i1 = tempRet0;
 i4 = i4 + 8 | 0;
 __ZZN4wasm14ModuleInstance15getFinalAddressINS_5StoreEEEjPT_NS_7LiteralEENKUlyyPKcE_clEyyS7_(i5, HEAP32[i4 >> 2] | 0, 0, i3, 0, 16285);
 __ZZN4wasm14ModuleInstance15getFinalAddressINS_5StoreEEEjPT_NS_7LiteralEENKUlyyPKcE_clEyyS7_(i5, i2, i1, i3 - (HEAP32[i4 >> 2] | 0) | 0, 0, 16300);
 STACKTOP = i6;
 return i2 | 0;
}

function __ZN4wasm15RemoveUnusedBrs4scanEPS0_PPNS_10ExpressionE(i1, i4) {
 i1 = i1 | 0;
 i4 = i4 | 0;
 var i2 = 0, i3 = 0;
 i2 = i1 + 16 | 0;
 __ZN4wasm6WalkerINS_15RemoveUnusedBrsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i2, 102, i4);
 i3 = HEAP32[i4 >> 2] | 0;
 if ((i3 | 0) == 0 | (HEAP32[i3 >> 2] | 0) != 2) __ZN4wasm10PostWalkerINS_15RemoveUnusedBrsENS_7VisitorIS1_vEEE4scanEPS1_PPNS_10ExpressionE(i1, i4); else {
  __ZN4wasm6WalkerINS_15RemoveUnusedBrsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i2, 103, i4);
  i1 = i3 + 16 | 0;
  if (HEAP32[i1 >> 2] | 0) {
   __ZN4wasm6WalkerINS_15RemoveUnusedBrsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i2, 101, i1);
   __ZN4wasm6WalkerINS_15RemoveUnusedBrsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i2, 104, i4);
  }
  __ZN4wasm6WalkerINS_15RemoveUnusedBrsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i2, 101, i3 + 12 | 0);
  __ZN4wasm6WalkerINS_15RemoveUnusedBrsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i2, 105, i4);
  __ZN4wasm6WalkerINS_15RemoveUnusedBrsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i2, 101, i3 + 8 | 0);
 }
 return;
}

function __ZN4wasm14ModuleInstance15getFinalAddressINS_4LoadEEEjPT_NS_7LiteralE(i1, i4, i2) {
 i1 = i1 | 0;
 i4 = i4 | 0;
 i2 = i2 | 0;
 var i3 = 0, i5 = 0, i6 = 0, i7 = 0;
 i6 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i5 = i6;
 HEAP32[i5 >> 2] = i1;
 i3 = HEAP32[i1 + 20 >> 2] << 16;
 if ((HEAP32[i2 >> 2] | 0) == 1) {
  i2 = __ZNK4wasm7Literal6geti32Ev(i2) | 0;
  i1 = i2;
  i2 = ((i2 | 0) < 0) << 31 >> 31;
 } else {
  i1 = __ZNK4wasm7Literal6geti64Ev(i2) | 0;
  i2 = tempRet0;
 }
 i7 = i4 + 16 | 0;
 __ZZN4wasm14ModuleInstance15getFinalAddressINS_4LoadEEEjPT_NS_7LiteralEENKUlyyPKcE_clEyyS7_(i5, HEAP32[i7 >> 2] | 0, 0, i3, 0, 16254);
 __ZZN4wasm14ModuleInstance15getFinalAddressINS_4LoadEEEjPT_NS_7LiteralEENKUlyyPKcE_clEyyS7_(i5, i1, i2, i3 - (HEAP32[i7 >> 2] | 0) | 0, 0, 16270);
 i2 = _i64Add(HEAP32[i7 >> 2] | 0, 0, i1 | 0, i2 | 0) | 0;
 i1 = tempRet0;
 i4 = i4 + 8 | 0;
 __ZZN4wasm14ModuleInstance15getFinalAddressINS_4LoadEEEjPT_NS_7LiteralEENKUlyyPKcE_clEyyS7_(i5, HEAP32[i4 >> 2] | 0, 0, i3, 0, 16285);
 __ZZN4wasm14ModuleInstance15getFinalAddressINS_4LoadEEEjPT_NS_7LiteralEENKUlyyPKcE_clEyyS7_(i5, i2, i1, i3 - (HEAP32[i4 >> 2] | 0) | 0, 0, 16300);
 STACKTOP = i6;
 return i2 | 0;
}

function __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6appendIPwEENS_9enable_ifIXsr21__is_forward_iteratorIT_EE5valueERS5_E4typeES9_S9_(i9, i5, i8) {
 i9 = i9 | 0;
 i5 = i5 | 0;
 i8 = i8 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i6 = 0, i7 = 0;
 i3 = i5;
 i1 = HEAP8[i9 >> 0] | 0;
 if (!(i1 & 1)) {
  i2 = 1;
  i7 = (i1 & 255) >>> 1;
 } else {
  i1 = HEAP32[i9 >> 2] | 0;
  i2 = (i1 & -2) + -1 | 0;
  i7 = HEAP32[i9 + 4 >> 2] | 0;
  i1 = i1 & 255;
 }
 i6 = i8 - i3 >> 2;
 do if (i6 | 0) {
  if ((i2 - i7 | 0) >>> 0 < i6 >>> 0) {
   __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE9__grow_byEjjjjjj(i9, i2, i7 + i6 - i2 | 0, i7, i7, 0, 0);
   i1 = HEAP8[i9 >> 0] | 0;
  }
  if (!(i1 & 1)) i4 = i9 + 4 | 0; else i4 = HEAP32[i9 + 8 >> 2] | 0;
  i3 = i7 + ((i8 - i3 | 0) >>> 2) | 0;
  i1 = i5;
  i2 = i4 + (i7 << 2) | 0;
  while (1) {
   if ((i1 | 0) == (i8 | 0)) break;
   HEAP32[i2 >> 2] = HEAP32[i1 >> 2];
   i1 = i1 + 4 | 0;
   i2 = i2 + 4 | 0;
  }
  HEAP32[i4 + (i3 << 2) >> 2] = 0;
  i1 = i7 + i6 | 0;
  if (!(HEAP8[i9 >> 0] & 1)) {
   HEAP8[i9 >> 0] = i1 << 1;
   break;
  } else {
   HEAP32[i9 + 4 >> 2] = i1;
   break;
  }
 } while (0);
 return i9 | 0;
}

function _memchr(i1, i5, i2) {
 i1 = i1 | 0;
 i5 = i5 | 0;
 i2 = i2 | 0;
 var i3 = 0, i4 = 0, i6 = 0, i7 = 0;
 i6 = i5 & 255;
 i3 = (i2 | 0) != 0;
 L1 : do if (i3 & (i1 & 3 | 0) != 0) {
  i4 = i5 & 255;
  while (1) {
   if ((HEAP8[i1 >> 0] | 0) == i4 << 24 >> 24) {
    i7 = 6;
    break L1;
   }
   i1 = i1 + 1 | 0;
   i2 = i2 + -1 | 0;
   i3 = (i2 | 0) != 0;
   if (!(i3 & (i1 & 3 | 0) != 0)) {
    i7 = 5;
    break;
   }
  }
 } else i7 = 5; while (0);
 if ((i7 | 0) == 5) if (i3) i7 = 6; else i2 = 0;
 L8 : do if ((i7 | 0) == 6) {
  i4 = i5 & 255;
  if ((HEAP8[i1 >> 0] | 0) != i4 << 24 >> 24) {
   i3 = Math_imul(i6, 16843009) | 0;
   L11 : do if (i2 >>> 0 > 3) while (1) {
    i6 = HEAP32[i1 >> 2] ^ i3;
    if ((i6 & -2139062144 ^ -2139062144) & i6 + -16843009 | 0) break;
    i1 = i1 + 4 | 0;
    i2 = i2 + -4 | 0;
    if (i2 >>> 0 <= 3) {
     i7 = 11;
     break L11;
    }
   } else i7 = 11; while (0);
   if ((i7 | 0) == 11) if (!i2) {
    i2 = 0;
    break;
   }
   while (1) {
    if ((HEAP8[i1 >> 0] | 0) == i4 << 24 >> 24) break L8;
    i1 = i1 + 1 | 0;
    i2 = i2 + -1 | 0;
    if (!i2) {
     i2 = 0;
     break;
    }
   }
  }
 } while (0);
 return (i2 | 0 ? i1 : 0) | 0;
}

function __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6insertEjPKcj(i7, i4, i2, i6) {
 i7 = i7 | 0;
 i4 = i4 | 0;
 i2 = i2 | 0;
 i6 = i6 | 0;
 var i1 = 0, i3 = 0, i5 = 0;
 i1 = HEAP8[i7 >> 0] | 0;
 i3 = (i1 & 1) == 0;
 if (i3) i5 = (i1 & 255) >>> 1; else i5 = HEAP32[i7 + 4 >> 2] | 0;
 if (i5 >>> 0 < i4 >>> 0) __ZNKSt3__121__basic_string_commonILb1EE20__throw_out_of_rangeEv(i7);
 if (i3) i3 = 10; else {
  i1 = HEAP32[i7 >> 2] | 0;
  i3 = (i1 & -2) + -1 | 0;
  i1 = i1 & 255;
 }
 if ((i3 - i5 | 0) >>> 0 >= i6 >>> 0) {
  if (i6 | 0) {
   if (!(i1 & 1)) i3 = i7 + 1 | 0; else i3 = HEAP32[i7 + 8 >> 2] | 0;
   if ((i5 | 0) == (i4 | 0)) i1 = i3 + i4 | 0; else {
    i1 = i3 + i4 | 0;
    _memmove(i1 + i6 | 0, i1 | 0, i5 - i4 | 0) | 0;
    i2 = i1 >>> 0 <= i2 >>> 0 & (i3 + i5 | 0) >>> 0 > i2 >>> 0 ? i2 + i6 | 0 : i2;
   }
   _memmove(i1 | 0, i2 | 0, i6 | 0) | 0;
   i1 = i5 + i6 | 0;
   if (!(HEAP8[i7 >> 0] & 1)) HEAP8[i7 >> 0] = i1 << 1; else HEAP32[i7 + 4 >> 2] = i1;
   HEAP8[i3 + i1 >> 0] = 0;
  }
 } else __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE21__grow_by_and_replaceEjjjjjjPKc(i7, i3, i5 + i6 - i3 | 0, i5, i4, 0, i6, i2);
 return i7 | 0;
}

function __ZZN4wasm14ModuleInstance12callFunctionEN6cashew7IStringERNSt3__16vectorINS_7LiteralENS3_9allocatorIS5_EEEEEN16ExpressionRunner13visitSetLocalEPNS_8SetLocalE(i2, i5, i3) {
 i2 = i2 | 0;
 i5 = i5 | 0;
 i3 = i3 | 0;
 var i1 = 0, i4 = 0, i6 = 0, i7 = 0;
 i6 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i4 = i6;
 i1 = i5 + 4 | 0;
 i7 = __ZN4wasm8Function12getLocalNameEj(HEAP32[(HEAP32[i1 >> 2] | 0) + 12 >> 2] | 0, HEAP32[i3 + 8 >> 2] | 0) | 0;
 HEAP32[i4 >> 2] = i7;
 __ZN4wasm7VisitorIZNS_14ModuleInstance12callFunctionEN6cashew7IStringERNSt3__16vectorINS_7LiteralENS4_9allocatorIS6_EEEEE16ExpressionRunnerNS_4FlowEE5visitEPNS_10ExpressionE(i2, i5, HEAP32[i3 + 12 >> 2] | 0);
 do if (!(HEAP32[i2 + 16 >> 2] | 0)) if ((HEAP32[i2 >> 2] | 0) == (HEAP32[i3 + 4 >> 2] | 0)) {
  i7 = __ZNSt3__13mapIN6cashew7IStringEN4wasm7LiteralENS_4lessIS2_EENS_9allocatorINS_4pairIKS2_S4_EEEEEixERS9_(HEAP32[i1 >> 2] | 0, i4) | 0;
  HEAP32[i7 >> 2] = HEAP32[i2 >> 2];
  HEAP32[i7 + 4 >> 2] = HEAP32[i2 + 4 >> 2];
  HEAP32[i7 + 8 >> 2] = HEAP32[i2 + 8 >> 2];
  HEAP32[i7 + 12 >> 2] = HEAP32[i2 + 12 >> 2];
  break;
 } else ___assert_fail(16210, 15772, 373, 16240); while (0);
 STACKTOP = i6;
 return;
}

function __ZNSt3__16vectorIN4wasm4NameENS_9allocatorIS2_EEE8__appendEj(i8, i6) {
 i8 = i8 | 0;
 i6 = i6 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i7 = 0, i9 = 0;
 i9 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i7 = i9;
 i2 = HEAP32[i8 + 8 >> 2] | 0;
 i5 = i8 + 4 | 0;
 i1 = HEAP32[i5 >> 2] | 0;
 if (i2 - i1 >> 2 >>> 0 < i6 >>> 0) {
  i4 = HEAP32[i8 >> 2] | 0;
  i3 = (i1 - i4 >> 2) + i6 | 0;
  if (i3 >>> 0 > 1073741823) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i8);
  i1 = i2 - i4 | 0;
  if (i1 >> 2 >>> 0 < 536870911) {
   i1 = i1 >> 1;
   i1 = i1 >>> 0 < i3 >>> 0 ? i3 : i1;
  } else i1 = 1073741823;
  __ZNSt3__114__split_bufferIN4wasm4NameERNS_9allocatorIS2_EEEC2EjjS5_(i7, i1, (HEAP32[i5 >> 2] | 0) - i4 >> 2, i8 + 8 | 0);
  i5 = i7 + 8 | 0;
  i4 = HEAP32[i5 >> 2] | 0;
  _memset(i4 | 0, 0, i6 << 2 | 0) | 0;
  HEAP32[i5 >> 2] = i4 + (i6 << 2);
  __ZNSt3__16vectorIN4wasm4NameENS_9allocatorIS2_EEE26__swap_out_circular_bufferERNS_14__split_bufferIS2_RS4_EE(i8, i7);
  __ZNSt3__114__split_bufferIN4wasm4NameERNS_9allocatorIS2_EEED2Ev(i7);
 } else {
  _memset(i1 | 0, 0, i6 << 2 | 0) | 0;
  HEAP32[i5 >> 2] = i1 + (i6 << 2);
 }
 STACKTOP = i9;
 return;
}

function ___stpncpy(i2, i3, i1) {
 i2 = i2 | 0;
 i3 = i3 | 0;
 i1 = i1 | 0;
 var i4 = 0, i5 = 0, i6 = 0;
 i5 = i3;
 do if (!((i5 ^ i2) & 3)) {
  i4 = (i1 | 0) != 0;
  L3 : do if (i4 & (i5 & 3 | 0) != 0) while (1) {
   i5 = HEAP8[i3 >> 0] | 0;
   HEAP8[i2 >> 0] = i5;
   if (!(i5 << 24 >> 24)) break L3;
   i1 = i1 + -1 | 0;
   i3 = i3 + 1 | 0;
   i2 = i2 + 1 | 0;
   i4 = (i1 | 0) != 0;
   if (!(i4 & (i3 & 3 | 0) != 0)) {
    i6 = 5;
    break;
   }
  } else i6 = 5; while (0);
  if ((i6 | 0) == 5) if (!i4) {
   i1 = 0;
   break;
  }
  if (HEAP8[i3 >> 0] | 0) {
   L11 : do if (i1 >>> 0 > 3) do {
    i4 = HEAP32[i3 >> 2] | 0;
    if ((i4 & -2139062144 ^ -2139062144) & i4 + -16843009 | 0) break L11;
    HEAP32[i2 >> 2] = i4;
    i1 = i1 + -4 | 0;
    i3 = i3 + 4 | 0;
    i2 = i2 + 4 | 0;
   } while (i1 >>> 0 > 3); while (0);
   i6 = 11;
  }
 } else i6 = 11; while (0);
 L16 : do if ((i6 | 0) == 11) if (!i1) i1 = 0; else while (1) {
  i6 = HEAP8[i3 >> 0] | 0;
  HEAP8[i2 >> 0] = i6;
  if (!(i6 << 24 >> 24)) break L16;
  i1 = i1 + -1 | 0;
  i2 = i2 + 1 | 0;
  if (!i1) {
   i1 = 0;
   break;
  } else i3 = i3 + 1 | 0;
 } while (0);
 _memset(i2 | 0, 0, i1 | 0) | 0;
 return i2 | 0;
}

function __ZN4wasm22SExpressionWasmBuilder15getPrefixedNameENSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 var i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0;
 i6 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i3 = i6 + 24 | 0;
 i4 = i6 + 12 | 0;
 i5 = i6;
 i7 = i2 + 84 | 0;
 i2 = HEAP32[i7 >> 2] | 0;
 HEAP32[i7 >> 2] = i2 + 1;
 __ZNSt3__19to_stringEj(i5, i2);
 i2 = HEAP8[i1 >> 0] | 0;
 i7 = (i2 & 1) == 0;
 i1 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6insertEjPKcj(i5, 0, i7 ? i1 + 1 | 0 : HEAP32[i1 + 8 >> 2] | 0, i7 ? (i2 & 255) >>> 1 : HEAP32[i1 + 4 >> 2] | 0) | 0;
 HEAP32[i4 >> 2] = HEAP32[i1 >> 2];
 HEAP32[i4 + 4 >> 2] = HEAP32[i1 + 4 >> 2];
 HEAP32[i4 + 8 >> 2] = HEAP32[i1 + 8 >> 2];
 i2 = 0;
 while (1) {
  if ((i2 | 0) == 3) break;
  HEAP32[i1 + (i2 << 2) >> 2] = 0;
  i2 = i2 + 1 | 0;
 }
 __ZN6cashew7IStringC2EPKcb(i3, (HEAP8[i4 >> 0] & 1) == 0 ? i4 + 1 | 0 : HEAP32[i4 + 8 >> 2] | 0, 0);
 i7 = HEAP32[i3 >> 2] | 0;
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i4);
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i5);
 STACKTOP = i6;
 return i7 | 0;
}

function __ZNSt3__16vectorIN4wasm7LiteralENS_9allocatorIS2_EEE21__push_back_slow_pathIRKS2_EEvOT_(i7, i6) {
 i7 = i7 | 0;
 i6 = i6 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i8 = 0;
 i8 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i5 = i8;
 i3 = i7 + 4 | 0;
 i4 = HEAP32[i7 >> 2] | 0;
 i2 = ((HEAP32[i3 >> 2] | 0) - i4 >> 4) + 1 | 0;
 if (i2 >>> 0 > 268435455) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i7);
 i1 = (HEAP32[i7 + 8 >> 2] | 0) - i4 | 0;
 if (i1 >> 4 >>> 0 < 134217727) {
  i1 = i1 >> 3;
  i1 = i1 >>> 0 < i2 >>> 0 ? i2 : i1;
 } else i1 = 268435455;
 __ZNSt3__114__split_bufferIN4wasm7LiteralERNS_9allocatorIS2_EEEC2EjjS5_(i5, i1, (HEAP32[i3 >> 2] | 0) - i4 >> 4, i7 + 8 | 0);
 i4 = i5 + 8 | 0;
 i3 = HEAP32[i4 >> 2] | 0;
 HEAP32[i3 >> 2] = HEAP32[i6 >> 2];
 HEAP32[i3 + 4 >> 2] = HEAP32[i6 + 4 >> 2];
 HEAP32[i3 + 8 >> 2] = HEAP32[i6 + 8 >> 2];
 HEAP32[i3 + 12 >> 2] = HEAP32[i6 + 12 >> 2];
 HEAP32[i4 >> 2] = i3 + 16;
 __ZNSt3__16vectorIN4wasm7LiteralENS_9allocatorIS2_EEE26__swap_out_circular_bufferERNS_14__split_bufferIS2_RS4_EE(i7, i5);
 __ZNSt3__114__split_bufferIN4wasm7LiteralERNS_9allocatorIS2_EEED2Ev(i5);
 STACKTOP = i8;
 return;
}

function __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6appendIPcEENS_9enable_ifIXsr21__is_forward_iteratorIT_EE5valueERS5_E4typeES9_S9_(i9, i5, i8) {
 i9 = i9 | 0;
 i5 = i5 | 0;
 i8 = i8 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i6 = 0, i7 = 0;
 i3 = i5;
 i1 = HEAP8[i9 >> 0] | 0;
 if (!(i1 & 1)) {
  i2 = 10;
  i7 = (i1 & 255) >>> 1;
 } else {
  i1 = HEAP32[i9 >> 2] | 0;
  i2 = (i1 & -2) + -1 | 0;
  i7 = HEAP32[i9 + 4 >> 2] | 0;
  i1 = i1 & 255;
 }
 i6 = i8 - i3 | 0;
 do if ((i8 | 0) != (i5 | 0)) {
  if ((i2 - i7 | 0) >>> 0 < i6 >>> 0) {
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE9__grow_byEjjjjjj(i9, i2, i7 + i6 - i2 | 0, i7, i7, 0, 0);
   i1 = HEAP8[i9 >> 0] | 0;
  }
  if (!(i1 & 1)) i4 = i9 + 1 | 0; else i4 = HEAP32[i9 + 8 >> 2] | 0;
  i3 = i8 + (i7 - i3) | 0;
  i1 = i5;
  i2 = i4 + i7 | 0;
  while (1) {
   if ((i1 | 0) == (i8 | 0)) break;
   HEAP8[i2 >> 0] = HEAP8[i1 >> 0] | 0;
   i1 = i1 + 1 | 0;
   i2 = i2 + 1 | 0;
  }
  HEAP8[i4 + i3 >> 0] = 0;
  i1 = i7 + i6 | 0;
  if (!(HEAP8[i9 >> 0] & 1)) {
   HEAP8[i9 >> 0] = i1 << 1;
   break;
  } else {
   HEAP32[i9 + 4 >> 2] = i1;
   break;
  }
 } while (0);
 return i9 | 0;
}

function __ZNSt3__16__treeINS_12__value_typeINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEN4wasm12PassRegistry8PassInfoEEENS_19__map_value_compareIS7_SB_NS_4lessIS7_EELb1EEENS5_ISB_EEE4findIS7_EENS_15__tree_iteratorISB_PNS_11__tree_nodeISB_PvEEiEERKT_(i2, i3) {
 i2 = i2 | 0;
 i3 = i3 | 0;
 var i1 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0;
 i1 = i2 + 4 | 0;
 i2 = __ZNSt3__16__treeINS_12__value_typeINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEN4wasm12PassRegistry8PassInfoEEENS_19__map_value_compareIS7_SB_NS_4lessIS7_EELb1EEENS5_ISB_EEE13__lower_boundIS7_EENS_15__tree_iteratorISB_PNS_11__tree_nodeISB_PvEEiEERKT_SN_SN_(i2, i3, HEAP32[i1 >> 2] | 0, i1) | 0;
 if ((i2 | 0) != (i1 | 0) ? (i6 = i2 + 16 | 0, i5 = HEAP8[i3 >> 0] | 0, i8 = (i5 & 1) == 0, i5 = i8 ? (i5 & 255) >>> 1 : HEAP32[i3 + 4 >> 2] | 0, i4 = HEAP8[i6 >> 0] | 0, i7 = (i4 & 1) == 0, i4 = i7 ? (i4 & 255) >>> 1 : HEAP32[i2 + 20 >> 2] | 0, i3 = _memcmp(i8 ? i3 + 1 | 0 : HEAP32[i3 + 8 >> 2] | 0, i7 ? i6 + 1 | 0 : HEAP32[i2 + 24 >> 2] | 0, i4 >>> 0 < i5 >>> 0 ? i4 : i5) | 0, (((i3 | 0) == 0 ? (i5 >>> 0 < i4 >>> 0 ? -2147483648 : 0) : i3) | 0) >= 0) : 0) i1 = i2;
 return i1 | 0;
}

function __ZN4wasm14SimplifyLocals8visitPreEPS0_PPNS_10ExpressionE(i6, i1) {
 i6 = i6 | 0;
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i7 = 0;
 i7 = STACKTOP;
 STACKTOP = STACKTOP + 64 | 0;
 i4 = i7 + 56 | 0;
 i5 = i7;
 i1 = HEAP32[i1 >> 2] | 0;
 HEAP32[i4 >> 2] = i1;
 HEAP32[i5 + 32 >> 2] = 0;
 HEAP32[i5 + 36 >> 2] = 0;
 HEAP32[i5 >> 2] = 0;
 HEAP32[i5 + 4 >> 2] = 0;
 HEAP32[i5 + 8 >> 2] = 0;
 HEAP32[i5 + 12 >> 2] = 0;
 HEAP32[i5 + 16 >> 2] = 0;
 HEAP32[i5 + 20 >> 2] = 0;
 HEAP16[i5 + 24 >> 1] = 0;
 HEAP32[i5 + 28 >> 2] = i5 + 32;
 HEAP32[i5 + 44 >> 2] = 0;
 HEAP32[i5 + 48 >> 2] = 0;
 HEAP32[i5 + 40 >> 2] = i5 + 44;
 HEAP8[i5 + 52 >> 0] = 0;
 HEAP8[i5 + 53 >> 0] = 0;
 if ((HEAP32[i1 >> 2] | 0) == 3) {
  HEAP8[i5 + 24 >> 0] = 1;
  __ZN4wasm14SimplifyLocals18checkInvalidationsERNS_14EffectAnalyzerE(i6, i5);
 }
 i2 = i6 + 96 | 0;
 i3 = HEAP32[i2 >> 2] | 0;
 if ((i3 | 0) == (HEAP32[i6 + 100 >> 2] | 0)) __ZNSt3__16vectorIPN4wasm10ExpressionENS_9allocatorIS3_EEE21__push_back_slow_pathIRKS3_EEvOT_(i6 + 92 | 0, i4); else {
  HEAP32[i3 >> 2] = i1;
  HEAP32[i2 >> 2] = (HEAP32[i2 >> 2] | 0) + 4;
 }
 __ZN4wasm14EffectAnalyzerD2Ev(i5);
 STACKTOP = i7;
 return;
}

function __ZNSt3__13mapIjN4wasm14SimplifyLocals12SinkableInfoENS_4lessIjEENS_9allocatorINS_4pairIKjS3_EEEEE7emplaceIJNS7_IjS3_EEEEENS7_INS_14__map_iteratorINS_15__tree_iteratorINS_12__value_typeIjS3_EEPNS_11__tree_nodeISH_PvEEiEEEEbEEDpOT_(i3, i4, i1) {
 i3 = i3 | 0;
 i4 = i4 | 0;
 i1 = i1 | 0;
 var i2 = 0, i5 = 0, i6 = 0;
 i5 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i2 = i5 + 8 | 0;
 i6 = i5;
 __ZNSt3__13mapIjN4wasm14SimplifyLocals12SinkableInfoENS_4lessIjEENS_9allocatorINS_4pairIKjS3_EEEEE16__construct_nodeINS7_IjS3_EEEENS_10unique_ptrINS_11__tree_nodeINS_12__value_typeIjS3_EEPvEENS_21__map_node_destructorINS6_ISJ_EEEEEEOT_(i2, i4, i1);
 i1 = HEAP32[i2 >> 2] | 0;
 __ZNSt3__16__treeINS_12__value_typeIjN4wasm14SimplifyLocals12SinkableInfoEEENS_19__map_value_compareIjS5_NS_4lessIjEELb1EEENS_9allocatorIS5_EEE20__node_insert_uniqueEPNS_11__tree_nodeIS5_PvEE(i6, i4, i1);
 HEAP32[i3 >> 2] = HEAP32[i6 >> 2];
 i4 = HEAP8[i6 + 4 >> 0] | 0;
 HEAP8[i3 + 4 >> 0] = i4;
 HEAP32[i2 >> 2] = 0;
 if (!(i4 << 24 >> 24 != 0 | (i1 | 0) == 0)) {
  if (HEAP8[i2 + 9 >> 0] | 0) __ZN4wasm14EffectAnalyzerD2Ev(i1 + 24 | 0);
  __ZdlPv(i1);
 }
 STACKTOP = i5;
 return;
}

function ___cxx_global_array_dtor_46(i1) {
 i1 = i1 | 0;
 __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev(39416);
 __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev(39404);
 __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev(39392);
 __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev(39380);
 __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev(39368);
 __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev(39356);
 __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev(39344);
 __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev(39332);
 __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev(39320);
 __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev(39308);
 __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev(39296);
 __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev(39284);
 __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev(39272);
 __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev(39260);
 return;
}

function __ZNSt3__16vectorIcNS_9allocatorIcEEE8__appendEj(i7, i2) {
 i7 = i7 | 0;
 i2 = i2 | 0;
 var i1 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i8 = 0, i9 = 0;
 i9 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i6 = i9;
 i3 = HEAP32[i7 + 8 >> 2] | 0;
 i8 = i7 + 4 | 0;
 i1 = HEAP32[i8 >> 2] | 0;
 if ((i3 - i1 | 0) >>> 0 < i2 >>> 0) {
  i5 = HEAP32[i7 >> 2] | 0;
  i4 = i1 - i5 + i2 | 0;
  if ((i4 | 0) < 0) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i7);
  i1 = i3 - i5 | 0;
  if (i1 >>> 0 < 1073741823) {
   i1 = i1 << 1;
   i1 = i1 >>> 0 < i4 >>> 0 ? i4 : i1;
  } else i1 = 2147483647;
  __ZNSt3__114__split_bufferIcRNS_9allocatorIcEEEC2EjjS3_(i6, i1, (HEAP32[i8 >> 2] | 0) - i5 | 0, i7 + 8 | 0);
  i8 = i6 + 8 | 0;
  i5 = HEAP32[i8 >> 2] | 0;
  _memset(i5 | 0, 0, i2 | 0) | 0;
  HEAP32[i8 >> 2] = i5 + i2;
  __ZNSt3__16vectorIcNS_9allocatorIcEEE26__swap_out_circular_bufferERNS_14__split_bufferIcRS2_EE(i7, i6);
  __ZNSt3__114__split_bufferIcRNS_9allocatorIcEEED2Ev(i6);
 } else do {
  HEAP8[i1 >> 0] = 0;
  i1 = (HEAP32[i8 >> 2] | 0) + 1 | 0;
  HEAP32[i8 >> 2] = i1;
  i2 = i2 + -1 | 0;
 } while ((i2 | 0) != 0);
 STACKTOP = i9;
 return;
}

function __ZNSt3__16vectorIN4wasm8NameTypeENS_9allocatorIS2_EEE24__emplace_back_slow_pathIJRN6cashew7IStringERNS1_8WasmTypeEEEEvDpOT_(i8, i5, i6) {
 i8 = i8 | 0;
 i5 = i5 | 0;
 i6 = i6 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i7 = 0, i9 = 0;
 i9 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i7 = i9;
 i3 = i8 + 4 | 0;
 i4 = HEAP32[i8 >> 2] | 0;
 i2 = ((HEAP32[i3 >> 2] | 0) - i4 >> 3) + 1 | 0;
 if (i2 >>> 0 > 536870911) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i8);
 i1 = (HEAP32[i8 + 8 >> 2] | 0) - i4 | 0;
 if (i1 >> 3 >>> 0 < 268435455) {
  i1 = i1 >> 2;
  i1 = i1 >>> 0 < i2 >>> 0 ? i2 : i1;
 } else i1 = 536870911;
 __ZNSt3__114__split_bufferIN4wasm8NameTypeERNS_9allocatorIS2_EEEC2EjjS5_(i7, i1, (HEAP32[i3 >> 2] | 0) - i4 >> 3, i8 + 8 | 0);
 i4 = i7 + 8 | 0;
 i3 = HEAP32[i4 >> 2] | 0;
 i6 = HEAP32[i6 >> 2] | 0;
 HEAP32[i3 >> 2] = HEAP32[i5 >> 2];
 HEAP32[i3 + 4 >> 2] = i6;
 HEAP32[i4 >> 2] = i3 + 8;
 __ZNSt3__16vectorIN4wasm8NameTypeENS_9allocatorIS2_EEE26__swap_out_circular_bufferERNS_14__split_bufferIS2_RS4_EE(i8, i7);
 __ZNSt3__114__split_bufferIN4wasm8NameTypeERNS_9allocatorIS2_EEED2Ev(i7);
 STACKTOP = i9;
 return;
}

function ___cxx_global_array_dtor(i1) {
 i1 = i1 | 0;
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(38604);
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(38592);
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(38580);
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(38568);
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(38556);
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(38544);
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(38532);
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(38520);
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(38508);
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(38496);
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(38484);
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(38472);
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(38460);
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(38448);
 return;
}

function __ZNSt3__114__num_put_base14__format_floatEPcPKcj(i1, i3, i2) {
 i1 = i1 | 0;
 i3 = i3 | 0;
 i2 = i2 | 0;
 var i4 = 0, i5 = 0, i6 = 0, i7 = 0;
 if (i2 & 2048) {
  HEAP8[i1 >> 0] = 43;
  i1 = i1 + 1 | 0;
 }
 if (i2 & 1024) {
  HEAP8[i1 >> 0] = 35;
  i1 = i1 + 1 | 0;
 }
 i6 = i2 & 260;
 i4 = i2 >>> 14;
 i7 = (i6 | 0) == 260;
 if (i7) i5 = 0; else {
  HEAP8[i1 >> 0] = 46;
  HEAP8[i1 + 1 >> 0] = 42;
  i1 = i1 + 2 | 0;
  i5 = 1;
 }
 while (1) {
  i2 = HEAP8[i3 >> 0] | 0;
  if (!(i2 << 24 >> 24)) break;
  HEAP8[i1 >> 0] = i2;
  i3 = i3 + 1 | 0;
  i1 = i1 + 1 | 0;
 }
 L14 : do switch (i6 | 0) {
 case 4:
  if (!(i4 & 1)) {
   HEAP8[i1 >> 0] = 102;
   break L14;
  } else {
   HEAP8[i1 >> 0] = 70;
   break L14;
  }
 case 256:
  if (!(i4 & 1)) {
   HEAP8[i1 >> 0] = 101;
   break L14;
  } else {
   HEAP8[i1 >> 0] = 69;
   break L14;
  }
 default:
  {
   i2 = (i4 & 1 | 0) != 0;
   if (i7) if (i2) {
    HEAP8[i1 >> 0] = 65;
    break L14;
   } else {
    HEAP8[i1 >> 0] = 97;
    break L14;
   } else if (i2) {
    HEAP8[i1 >> 0] = 71;
    break L14;
   } else {
    HEAP8[i1 >> 0] = 103;
    break L14;
   }
  }
 } while (0);
 return i5 | 0;
}

function __ZNSt3__16vectorIN4wasm14SimplifyLocals10BlockBreakENS_9allocatorIS3_EEE21__push_back_slow_pathIS3_EEvOT_(i7, i6) {
 i7 = i7 | 0;
 i6 = i6 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i8 = 0;
 i8 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i5 = i8;
 i3 = i7 + 4 | 0;
 i4 = HEAP32[i7 >> 2] | 0;
 i2 = ((HEAP32[i3 >> 2] | 0) - i4 >> 4) + 1 | 0;
 if (i2 >>> 0 > 268435455) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i7);
 i1 = (HEAP32[i7 + 8 >> 2] | 0) - i4 | 0;
 if (i1 >> 4 >>> 0 < 134217727) {
  i1 = i1 >> 3;
  i1 = i1 >>> 0 < i2 >>> 0 ? i2 : i1;
 } else i1 = 268435455;
 __ZNSt3__114__split_bufferIN4wasm14SimplifyLocals10BlockBreakERNS_9allocatorIS3_EEEC2EjjS6_(i5, i1, (HEAP32[i3 >> 2] | 0) - i4 >> 4, i7 + 8 | 0);
 i4 = i5 + 8 | 0;
 i3 = HEAP32[i4 >> 2] | 0;
 __ZN4wasm14SimplifyLocals10BlockBreakC2EOS1_(i3, i6);
 HEAP32[i4 >> 2] = i3 + 16;
 __ZNSt3__16vectorIN4wasm14SimplifyLocals10BlockBreakENS_9allocatorIS3_EEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i7, i5);
 __ZNSt3__114__split_bufferIN4wasm14SimplifyLocals10BlockBreakERNS_9allocatorIS3_EEED2Ev(i5);
 STACKTOP = i8;
 return;
}

function __ZNSt3__125__num_get_signed_integralIlEET_PKcS3_Rji(i1, i6, i7, i2) {
 i1 = i1 | 0;
 i6 = i6 | 0;
 i7 = i7 | 0;
 i2 = i2 | 0;
 var i3 = 0, i4 = 0, i5 = 0, i8 = 0, i9 = 0;
 i9 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i8 = i9;
 if ((i1 | 0) == (i6 | 0)) {
  HEAP32[i7 >> 2] = 4;
  i1 = 0;
 } else {
  i4 = ___errno_location() | 0;
  i5 = HEAP32[i4 >> 2] | 0;
  HEAP32[i4 >> 2] = 0;
  i1 = _strtoll_l(i1, i8, i2, __ZNSt3__16__clocEv() | 0) | 0;
  i2 = tempRet0;
  i3 = HEAP32[i4 >> 2] | 0;
  if (!i3) HEAP32[i4 >> 2] = i5;
  L7 : do if ((HEAP32[i8 >> 2] | 0) == (i6 | 0)) {
   do if ((i3 | 0) == 34) {
    HEAP32[i7 >> 2] = 4;
    if ((i2 | 0) > 0 | (i2 | 0) == 0 & i1 >>> 0 > 0) {
     i1 = 2147483647;
     break L7;
    }
   } else {
    if ((i2 | 0) < -1 | (i2 | 0) == -1 & i1 >>> 0 < 2147483648) {
     HEAP32[i7 >> 2] = 4;
     break;
    }
    if ((i2 | 0) > 0 | (i2 | 0) == 0 & i1 >>> 0 > 2147483647) {
     HEAP32[i7 >> 2] = 4;
     i1 = 2147483647;
     break L7;
    } else break L7;
   } while (0);
   i1 = -2147483648;
  } else {
   HEAP32[i7 >> 2] = 4;
   i1 = 0;
  } while (0);
 }
 STACKTOP = i9;
 return i1 | 0;
}

function __ZNSt3__16vectorIjNS_9allocatorIjEEE8__appendEj(i8, i6) {
 i8 = i8 | 0;
 i6 = i6 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i7 = 0, i9 = 0;
 i9 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i7 = i9;
 i2 = HEAP32[i8 + 8 >> 2] | 0;
 i5 = i8 + 4 | 0;
 i1 = HEAP32[i5 >> 2] | 0;
 if (i2 - i1 >> 2 >>> 0 < i6 >>> 0) {
  i4 = HEAP32[i8 >> 2] | 0;
  i3 = (i1 - i4 >> 2) + i6 | 0;
  if (i3 >>> 0 > 1073741823) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i8);
  i1 = i2 - i4 | 0;
  if (i1 >> 2 >>> 0 < 536870911) {
   i1 = i1 >> 1;
   i1 = i1 >>> 0 < i3 >>> 0 ? i3 : i1;
  } else i1 = 1073741823;
  __ZNSt3__114__split_bufferIjRNS_9allocatorIjEEEC2EjjS3_(i7, i1, (HEAP32[i5 >> 2] | 0) - i4 >> 2, i8 + 8 | 0);
  i5 = i7 + 8 | 0;
  i4 = HEAP32[i5 >> 2] | 0;
  _memset(i4 | 0, 0, i6 << 2 | 0) | 0;
  HEAP32[i5 >> 2] = i4 + (i6 << 2);
  __ZNSt3__16vectorIjNS_9allocatorIjEEE26__swap_out_circular_bufferERNS_14__split_bufferIjRS2_EE(i8, i7);
  __ZNSt3__114__split_bufferIjRNS_9allocatorIjEEED2Ev(i7);
 } else {
  _memset(i1 | 0, 0, i6 << 2 | 0) | 0;
  HEAP32[i5 >> 2] = i1 + (i6 << 2);
 }
 STACKTOP = i9;
 return;
}

function __ZNSt3__16vectorIiNS_9allocatorIiEEE8__appendEj(i8, i6) {
 i8 = i8 | 0;
 i6 = i6 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i7 = 0, i9 = 0;
 i9 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i7 = i9;
 i2 = HEAP32[i8 + 8 >> 2] | 0;
 i5 = i8 + 4 | 0;
 i1 = HEAP32[i5 >> 2] | 0;
 if (i2 - i1 >> 2 >>> 0 < i6 >>> 0) {
  i4 = HEAP32[i8 >> 2] | 0;
  i3 = (i1 - i4 >> 2) + i6 | 0;
  if (i3 >>> 0 > 1073741823) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i8);
  i1 = i2 - i4 | 0;
  if (i1 >> 2 >>> 0 < 536870911) {
   i1 = i1 >> 1;
   i1 = i1 >>> 0 < i3 >>> 0 ? i3 : i1;
  } else i1 = 1073741823;
  __ZNSt3__114__split_bufferIiRNS_9allocatorIiEEEC2EjjS3_(i7, i1, (HEAP32[i5 >> 2] | 0) - i4 >> 2, i8 + 8 | 0);
  i5 = i7 + 8 | 0;
  i4 = HEAP32[i5 >> 2] | 0;
  _memset(i4 | 0, 0, i6 << 2 | 0) | 0;
  HEAP32[i5 >> 2] = i4 + (i6 << 2);
  __ZNSt3__16vectorIiNS_9allocatorIiEEE26__swap_out_circular_bufferERNS_14__split_bufferIiRS2_EE(i8, i7);
  __ZNSt3__114__split_bufferIiRNS_9allocatorIiEEED2Ev(i7);
 } else {
  _memset(i1 | 0, 0, i6 << 2 | 0) | 0;
  HEAP32[i5 >> 2] = i1 + (i6 << 2);
 }
 STACKTOP = i9;
 return;
}

function __ZN4wasm6Module15addFunctionTypeEPNS_12FunctionTypeE(i6, i2) {
 i6 = i6 | 0;
 i2 = i2 | 0;
 var i1 = 0, i3 = 0, i4 = 0, i5 = 0, i7 = 0;
 i7 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i3 = i7;
 i5 = i7 + 4 | 0;
 HEAP32[i3 >> 2] = i2;
 i4 = i6 + 188 | 0;
 i1 = __ZN4wasm4Name7fromIntEj(HEAP32[i4 >> 2] | 0) | 0;
 HEAP32[i5 >> 2] = i1;
 if (!(HEAP32[i2 >> 2] | 0)) HEAP32[i2 >> 2] = i1;
 i1 = i6 + 4 | 0;
 i2 = HEAP32[i1 >> 2] | 0;
 if ((i2 | 0) == (HEAP32[i6 + 8 >> 2] | 0)) {
  __ZNSt3__16vectorIPN4wasm12FunctionTypeENS_9allocatorIS3_EEE21__push_back_slow_pathIRKS3_EEvOT_(i6, i3);
  i1 = HEAP32[i3 >> 2] | 0;
 } else {
  i3 = HEAP32[i3 >> 2] | 0;
  HEAP32[i2 >> 2] = i3;
  HEAP32[i1 >> 2] = (HEAP32[i1 >> 2] | 0) + 4;
  i1 = i3;
 }
 i6 = i6 + 140 | 0;
 i3 = __ZNSt3__13mapIN4wasm4NameEPNS1_12FunctionTypeENS_4lessIS2_EENS_9allocatorINS_4pairIKS2_S4_EEEEEixERS9_(i6, i1) | 0;
 HEAP32[i3 >> 2] = i1;
 i6 = __ZNSt3__13mapIN4wasm4NameEPNS1_12FunctionTypeENS_4lessIS2_EENS_9allocatorINS_4pairIKS2_S4_EEEEEixERS9_(i6, i5) | 0;
 HEAP32[i6 >> 2] = i1;
 HEAP32[i4 >> 2] = (HEAP32[i4 >> 2] | 0) + 1;
 STACKTOP = i7;
 return;
}

function __ZNSt3__16vectorIN6cashew13OperatorClassENS_9allocatorIS2_EEE21__push_back_slow_pathIS2_EEvOT_(i7, i6) {
 i7 = i7 | 0;
 i6 = i6 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i8 = 0;
 i8 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i5 = i8;
 i3 = i7 + 4 | 0;
 i4 = HEAP32[i7 >> 2] | 0;
 i2 = (((HEAP32[i3 >> 2] | 0) - i4 | 0) / 28 | 0) + 1 | 0;
 if (i2 >>> 0 > 153391689) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i7);
 i1 = ((HEAP32[i7 + 8 >> 2] | 0) - i4 | 0) / 28 | 0;
 if (i1 >>> 0 < 76695844) {
  i1 = i1 << 1;
  i1 = i1 >>> 0 < i2 >>> 0 ? i2 : i1;
 } else i1 = 153391689;
 __ZNSt3__114__split_bufferIN6cashew13OperatorClassERNS_9allocatorIS2_EEEC2EjjS5_(i5, i1, ((HEAP32[i3 >> 2] | 0) - i4 | 0) / 28 | 0, i7 + 8 | 0);
 i4 = i5 + 8 | 0;
 i3 = HEAP32[i4 >> 2] | 0;
 __ZN6cashew13OperatorClassC2EOS0_(i3, i6);
 HEAP32[i4 >> 2] = i3 + 28;
 __ZNSt3__16vectorIN6cashew13OperatorClassENS_9allocatorIS2_EEE26__swap_out_circular_bufferERNS_14__split_bufferIS2_RS4_EE(i7, i5);
 __ZNSt3__114__split_bufferIN6cashew13OperatorClassERNS_9allocatorIS2_EEED2Ev(i5);
 STACKTOP = i8;
 return;
}

function __ZN4wasm7VisitorINS_14EffectAnalyzerEvE5visitEPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 if (!i1) ___assert_fail(22690, 25274, 68, 22695);
 do switch (HEAP32[i1 >> 2] | 0) {
 case 19:
 case 16:
 case 15:
 case 14:
 case 13:
 case 3:
 case 1:
  break;
 case 2:
  {
   HEAP8[i2 + 24 >> 0] = 1;
   break;
  }
 case 4:
  {
   HEAP8[i2 + 24 >> 0] = 1;
   break;
  }
 case 5:
  {
   HEAP8[i2 + 24 >> 0] = 1;
   break;
  }
 case 6:
  {
   HEAP8[i2 + 25 >> 0] = 1;
   break;
  }
 case 7:
  {
   HEAP8[i2 + 25 >> 0] = 1;
   break;
  }
 case 8:
  {
   HEAP8[i2 + 25 >> 0] = 1;
   break;
  }
 case 9:
  {
   __ZN4wasm14EffectAnalyzer13visitGetLocalEPNS_8GetLocalE(i2, i1);
   break;
  }
 case 10:
  {
   __ZN4wasm14EffectAnalyzer13visitSetLocalEPNS_8SetLocalE(i2, i1);
   break;
  }
 case 11:
  {
   HEAP8[i2 + 52 >> 0] = 1;
   break;
  }
 case 12:
  {
   HEAP8[i2 + 53 >> 0] = 1;
   break;
  }
 case 17:
  {
   HEAP8[i2 + 24 >> 0] = 1;
   break;
  }
 case 18:
  {
   HEAP8[i2 + 25 >> 0] = 1;
   break;
  }
 case 20:
  {
   HEAP8[i2 + 24 >> 0] = 1;
   break;
  }
 default:
  {}
 } while (0);
 return;
}

function __ZN4wasm6Module11addFunctionEPNS_8FunctionE(i6, i2) {
 i6 = i6 | 0;
 i2 = i2 | 0;
 var i1 = 0, i3 = 0, i4 = 0, i5 = 0, i7 = 0;
 i7 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i3 = i7;
 i5 = i7 + 4 | 0;
 HEAP32[i3 >> 2] = i2;
 i4 = i6 + 200 | 0;
 i1 = __ZN4wasm4Name7fromIntEj(HEAP32[i4 >> 2] | 0) | 0;
 HEAP32[i5 >> 2] = i1;
 if (!(HEAP32[i2 >> 2] | 0)) HEAP32[i2 >> 2] = i1;
 i1 = i6 + 40 | 0;
 i2 = HEAP32[i1 >> 2] | 0;
 if ((i2 | 0) == (HEAP32[i6 + 44 >> 2] | 0)) {
  __ZNSt3__16vectorIPN4wasm8FunctionENS_9allocatorIS3_EEE21__push_back_slow_pathIRKS3_EEvOT_(i6 + 36 | 0, i3);
  i1 = HEAP32[i3 >> 2] | 0;
 } else {
  i3 = HEAP32[i3 >> 2] | 0;
  HEAP32[i2 >> 2] = i3;
  HEAP32[i1 >> 2] = (HEAP32[i1 >> 2] | 0) + 4;
  i1 = i3;
 }
 i6 = i6 + 176 | 0;
 i3 = __ZNSt3__13mapIN4wasm4NameEPNS1_8FunctionENS_4lessIS2_EENS_9allocatorINS_4pairIKS2_S4_EEEEEixERS9_(i6, i1) | 0;
 HEAP32[i3 >> 2] = i1;
 i6 = __ZNSt3__13mapIN4wasm4NameEPNS1_8FunctionENS_4lessIS2_EENS_9allocatorINS_4pairIKS2_S4_EEEEEixERS9_(i6, i5) | 0;
 HEAP32[i6 >> 2] = i1;
 HEAP32[i4 >> 2] = (HEAP32[i4 >> 2] | 0) + 1;
 STACKTOP = i7;
 return;
}

function __ZNSt3__17__sort4IRZN4wasm13ReorderLocals13visitFunctionEPNS1_8FunctionEEUljjE_PjEEjT0_S8_S8_S8_T_(i4, i5, i6, i2, i3) {
 i4 = i4 | 0;
 i5 = i5 | 0;
 i6 = i6 | 0;
 i2 = i2 | 0;
 i3 = i3 | 0;
 var i1 = 0, i7 = 0;
 i1 = __ZNSt3__17__sort3IRZN4wasm13ReorderLocals13visitFunctionEPNS1_8FunctionEEUljjE_PjEEjT0_S8_S8_T_(i4, i5, i6, i3) | 0;
 if (__ZZN4wasm13ReorderLocals13visitFunctionEPNS_8FunctionEENKUljjE_clEjj(i3, HEAP32[i2 >> 2] | 0, HEAP32[i6 >> 2] | 0) | 0) {
  i7 = HEAP32[i6 >> 2] | 0;
  HEAP32[i6 >> 2] = HEAP32[i2 >> 2];
  HEAP32[i2 >> 2] = i7;
  i2 = i1 + 1 | 0;
  if (__ZZN4wasm13ReorderLocals13visitFunctionEPNS_8FunctionEENKUljjE_clEjj(i3, HEAP32[i6 >> 2] | 0, HEAP32[i5 >> 2] | 0) | 0) {
   i7 = HEAP32[i5 >> 2] | 0;
   HEAP32[i5 >> 2] = HEAP32[i6 >> 2];
   HEAP32[i6 >> 2] = i7;
   if (__ZZN4wasm13ReorderLocals13visitFunctionEPNS_8FunctionEENKUljjE_clEjj(i3, HEAP32[i5 >> 2] | 0, HEAP32[i4 >> 2] | 0) | 0) {
    i7 = HEAP32[i4 >> 2] | 0;
    HEAP32[i4 >> 2] = HEAP32[i5 >> 2];
    HEAP32[i5 >> 2] = i7;
    i1 = i1 + 3 | 0;
   } else i1 = i1 + 2 | 0;
  } else i1 = i2;
 }
 return i1 | 0;
}

function __ZNSt3__13mapINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEN4wasm12PassRegistry8PassInfoENS_4lessIS6_EENS4_INS_4pairIKS6_S9_EEEEEixEOS6_(i6, i4) {
 i6 = i6 | 0;
 i4 = i4 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i5 = 0, i7 = 0;
 i7 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i5 = i7 + 12 | 0;
 i3 = i7;
 i2 = __ZNSt3__13mapINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEN4wasm12PassRegistry8PassInfoENS_4lessIS6_EENS4_INS_4pairIKS6_S9_EEEEE16__find_equal_keyERPNS_16__tree_node_baseIPvEERSD_(i6, i5, i4) | 0;
 i1 = HEAP32[i2 >> 2] | 0;
 if (!i1) {
  __ZNSt3__13mapINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEN4wasm12PassRegistry8PassInfoENS_4lessIS6_EENS4_INS_4pairIKS6_S9_EEEEE25__construct_node_with_keyEOS6_(i3, i6, i4);
  i1 = HEAP32[i3 >> 2] | 0;
  __ZNSt3__16__treeINS_12__value_typeINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEN4wasm12PassRegistry8PassInfoEEENS_19__map_value_compareIS7_SB_NS_4lessIS7_EELb1EEENS5_ISB_EEE16__insert_node_atEPNS_16__tree_node_baseIPvEERSL_SL_(i6, HEAP32[i5 >> 2] | 0, i2, i1);
 }
 STACKTOP = i7;
 return i1 + 32 | 0;
}

function __ZNSt3__16vectorINS_13unordered_mapIN6cashew7IStringEiNS_4hashIS3_EENS_8equal_toIS3_EENS_9allocatorINS_4pairIKS3_iEEEEEENS8_ISD_EEE26__swap_out_circular_bufferERNS_14__split_bufferISD_RSE_EE(i6, i5) {
 i6 = i6 | 0;
 i5 = i5 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i7 = 0;
 i2 = HEAP32[i6 >> 2] | 0;
 i3 = i6 + 4 | 0;
 i4 = i5 + 4 | 0;
 i1 = HEAP32[i3 >> 2] | 0;
 while (1) {
  if ((i1 | 0) == (i2 | 0)) break;
  i7 = i1 + -20 | 0;
  __ZNSt3__112__hash_tableINS_17__hash_value_typeIN6cashew7IStringEiEENS_22__unordered_map_hasherIS3_S4_NS_4hashIS3_EELb1EEENS_21__unordered_map_equalIS3_S4_NS_8equal_toIS3_EELb1EEENS_9allocatorIS4_EEEC2EOSF_((HEAP32[i4 >> 2] | 0) + -20 | 0, i7);
  HEAP32[i4 >> 2] = (HEAP32[i4 >> 2] | 0) + -20;
  i1 = i7;
 }
 i7 = HEAP32[i6 >> 2] | 0;
 HEAP32[i6 >> 2] = HEAP32[i4 >> 2];
 HEAP32[i4 >> 2] = i7;
 i7 = i5 + 8 | 0;
 i2 = HEAP32[i3 >> 2] | 0;
 HEAP32[i3 >> 2] = HEAP32[i7 >> 2];
 HEAP32[i7 >> 2] = i2;
 i3 = i6 + 8 | 0;
 i7 = i5 + 12 | 0;
 i6 = HEAP32[i3 >> 2] | 0;
 HEAP32[i3 >> 2] = HEAP32[i7 >> 2];
 HEAP32[i7 >> 2] = i6;
 HEAP32[i5 >> 2] = HEAP32[i4 >> 2];
 return;
}

function __ZN4wasm6WalkerIZNS_13ReorderLocals13visitFunctionEPNS_8FunctionEE9ReIndexerNS_7VisitorIS4_vEEE4walkERPNS_10ExpressionE(i7, i1) {
 i7 = i7 | 0;
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i8 = 0;
 i5 = i7 + 4 | 0;
 i6 = i7 + 8 | 0;
 if ((HEAP32[i6 >> 2] | 0) != (HEAP32[i5 >> 2] | 0)) ___assert_fail(25256, 25274, 268, 25295);
 __ZN4wasm6WalkerIZNS_13ReorderLocals13visitFunctionEPNS_8FunctionEE9ReIndexerNS_7VisitorIS4_vEEE8pushTaskEPFvPS4_PPNS_10ExpressionEESB_(i7, 278, i1);
 while (1) {
  i4 = HEAP32[i6 >> 2] | 0;
  i1 = i4;
  if ((i4 | 0) == (HEAP32[i5 >> 2] | 0)) {
   i1 = 12;
   break;
  }
  i3 = i1 + -8 | 0;
  i2 = HEAP32[i3 >> 2] | 0;
  i4 = HEAP32[i1 + -4 >> 2] | 0;
  while (1) {
   if ((i1 | 0) == (i3 | 0)) break;
   i8 = i1 + -8 | 0;
   HEAP32[i6 >> 2] = i8;
   i1 = i8;
  }
  if (!(HEAP32[i4 >> 2] | 0)) {
   i1 = 9;
   break;
  }
  FUNCTION_TABLE_vii[i2 & 511](i7, i4);
  i1 = HEAP32[i7 >> 2] | 0;
  if (!i1) continue;
  HEAP32[i4 >> 2] = i1;
  HEAP32[i7 >> 2] = 0;
 }
 if ((i1 | 0) == 9) ___assert_fail(25300, 25274, 272, 25295); else if ((i1 | 0) == 12) return;
}

function __ZN4wasm16PrintSExpression11visitImportEPNS_6ImportE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 var i3 = 0, i4 = 0, i5 = 0, i6 = 0;
 i3 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i4 = i3 + 4 | 0;
 i6 = i3;
 i5 = __Z12printOpeningRNSt3__113basic_ostreamIcNS_11char_traitsIcEEEEPKcb(HEAP32[i2 >> 2] | 0, 18204, 0) | 0;
 HEAP32[i6 >> 2] = HEAP32[i1 >> 2];
 HEAP32[i4 >> 2] = HEAP32[i6 >> 2];
 __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_c(__ZN4wasmlsERNSt3__113basic_ostreamIcNS0_11char_traitsIcEEEENS_4NameE(i5, i4) | 0, 32) | 0;
 __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_c(__Z9printTextRNSt3__113basic_ostreamIcNS_11char_traitsIcEEEEPKc(HEAP32[i2 >> 2] | 0, HEAP32[i1 + 4 >> 2] | 0) | 0, 32) | 0;
 __Z9printTextRNSt3__113basic_ostreamIcNS_11char_traitsIcEEEEPKc(HEAP32[i2 >> 2] | 0, HEAP32[i1 + 8 >> 2] | 0) | 0;
 i1 = HEAP32[i1 + 12 >> 2] | 0;
 if (i1 | 0) __ZN4wasm16PrintSExpression17visitFunctionTypeEPNS_12FunctionTypeEb(i2, i1, 0);
 __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_c(HEAP32[i2 >> 2] | 0, 41) | 0;
 STACKTOP = i3;
 return;
}

function __ZN4wasm6Module9addImportEPNS_6ImportE(i6, i2) {
 i6 = i6 | 0;
 i2 = i2 | 0;
 var i1 = 0, i3 = 0, i4 = 0, i5 = 0, i7 = 0;
 i7 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i3 = i7;
 i5 = i7 + 4 | 0;
 HEAP32[i3 >> 2] = i2;
 i4 = i6 + 192 | 0;
 i1 = __ZN4wasm4Name7fromIntEj(HEAP32[i4 >> 2] | 0) | 0;
 HEAP32[i5 >> 2] = i1;
 if (!(HEAP32[i2 >> 2] | 0)) HEAP32[i2 >> 2] = i1;
 i1 = i6 + 16 | 0;
 i2 = HEAP32[i1 >> 2] | 0;
 if ((i2 | 0) == (HEAP32[i6 + 20 >> 2] | 0)) {
  __ZNSt3__16vectorIPN4wasm6ImportENS_9allocatorIS3_EEE21__push_back_slow_pathIRKS3_EEvOT_(i6 + 12 | 0, i3);
  i1 = HEAP32[i3 >> 2] | 0;
 } else {
  i3 = HEAP32[i3 >> 2] | 0;
  HEAP32[i2 >> 2] = i3;
  HEAP32[i1 >> 2] = (HEAP32[i1 >> 2] | 0) + 4;
  i1 = i3;
 }
 i6 = i6 + 152 | 0;
 i3 = __ZNSt3__13mapIN4wasm4NameEPNS1_6ImportENS_4lessIS2_EENS_9allocatorINS_4pairIKS2_S4_EEEEEixERS9_(i6, i1) | 0;
 HEAP32[i3 >> 2] = i1;
 i6 = __ZNSt3__13mapIN4wasm4NameEPNS1_6ImportENS_4lessIS2_EENS_9allocatorINS_4pairIKS2_S4_EEEEEixERS9_(i6, i5) | 0;
 HEAP32[i6 >> 2] = i1;
 HEAP32[i4 >> 2] = (HEAP32[i4 >> 2] | 0) + 1;
 STACKTOP = i7;
 return;
}

function __ZN4wasm6Module9addExportEPNS_6ExportE(i6, i2) {
 i6 = i6 | 0;
 i2 = i2 | 0;
 var i1 = 0, i3 = 0, i4 = 0, i5 = 0, i7 = 0;
 i7 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i3 = i7;
 i5 = i7 + 4 | 0;
 HEAP32[i3 >> 2] = i2;
 i4 = i6 + 196 | 0;
 i1 = __ZN4wasm4Name7fromIntEj(HEAP32[i4 >> 2] | 0) | 0;
 HEAP32[i5 >> 2] = i1;
 if (!(HEAP32[i2 >> 2] | 0)) HEAP32[i2 >> 2] = i1;
 i1 = i6 + 28 | 0;
 i2 = HEAP32[i1 >> 2] | 0;
 if ((i2 | 0) == (HEAP32[i6 + 32 >> 2] | 0)) {
  __ZNSt3__16vectorIPN4wasm6ExportENS_9allocatorIS3_EEE21__push_back_slow_pathIRKS3_EEvOT_(i6 + 24 | 0, i3);
  i1 = HEAP32[i3 >> 2] | 0;
 } else {
  i3 = HEAP32[i3 >> 2] | 0;
  HEAP32[i2 >> 2] = i3;
  HEAP32[i1 >> 2] = (HEAP32[i1 >> 2] | 0) + 4;
  i1 = i3;
 }
 i6 = i6 + 164 | 0;
 i3 = __ZNSt3__13mapIN4wasm4NameEPNS1_6ExportENS_4lessIS2_EENS_9allocatorINS_4pairIKS2_S4_EEEEEixERS9_(i6, i1) | 0;
 HEAP32[i3 >> 2] = i1;
 i6 = __ZNSt3__13mapIN4wasm4NameEPNS1_6ExportENS_4lessIS2_EENS_9allocatorINS_4pairIKS2_S4_EEEEEixERS9_(i6, i5) | 0;
 HEAP32[i6 >> 2] = i1;
 HEAP32[i4 >> 2] = (HEAP32[i4 >> 2] | 0) + 1;
 STACKTOP = i7;
 return;
}

function __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE21__grow_by_and_replaceEjjjjjjPKw(i11, i10, i1, i4, i8, i9, i7, i5) {
 i11 = i11 | 0;
 i10 = i10 | 0;
 i1 = i1 | 0;
 i4 = i4 | 0;
 i8 = i8 | 0;
 i9 = i9 | 0;
 i7 = i7 | 0;
 i5 = i5 | 0;
 var i2 = 0, i3 = 0, i6 = 0;
 if ((1073741806 - i10 | 0) >>> 0 < i1 >>> 0) __ZNKSt3__121__basic_string_commonILb1EE20__throw_length_errorEv(i11);
 if (!(HEAP8[i11 >> 0] & 1)) i6 = i11 + 4 | 0; else i6 = HEAP32[i11 + 8 >> 2] | 0;
 if (i10 >>> 0 < 536870887) {
  i2 = i1 + i10 | 0;
  i3 = i10 << 1;
  i2 = i2 >>> 0 < i3 >>> 0 ? i3 : i2;
  i2 = i2 >>> 0 < 2 ? 2 : i2 + 4 & -4;
 } else i2 = 1073741807;
 i3 = __Znwj(i2 << 2) | 0;
 if (i8 | 0) _wmemcpy(i3, i6, i8) | 0;
 if (i7 | 0) _wmemcpy(i3 + (i8 << 2) | 0, i5, i7) | 0;
 i1 = i4 - i9 | 0;
 if ((i1 | 0) != (i8 | 0)) _wmemcpy(i3 + (i8 << 2) + (i7 << 2) | 0, i6 + (i8 << 2) + (i9 << 2) | 0, i1 - i8 | 0) | 0;
 if ((i10 | 0) != 1) __ZdlPv(i6);
 HEAP32[i11 + 8 >> 2] = i3;
 HEAP32[i11 >> 2] = i2 | 1;
 i10 = i1 + i7 | 0;
 HEAP32[i11 + 4 >> 2] = i10;
 HEAP32[i3 + (i10 << 2) >> 2] = 0;
 return;
}

function __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE21__grow_by_and_replaceEjjjjjjPKc(i11, i10, i1, i4, i8, i9, i7, i5) {
 i11 = i11 | 0;
 i10 = i10 | 0;
 i1 = i1 | 0;
 i4 = i4 | 0;
 i8 = i8 | 0;
 i9 = i9 | 0;
 i7 = i7 | 0;
 i5 = i5 | 0;
 var i2 = 0, i3 = 0, i6 = 0;
 if ((-18 - i10 | 0) >>> 0 < i1 >>> 0) __ZNKSt3__121__basic_string_commonILb1EE20__throw_length_errorEv(i11);
 if (!(HEAP8[i11 >> 0] & 1)) i6 = i11 + 1 | 0; else i6 = HEAP32[i11 + 8 >> 2] | 0;
 if (i10 >>> 0 < 2147483623) {
  i2 = i1 + i10 | 0;
  i3 = i10 << 1;
  i2 = i2 >>> 0 < i3 >>> 0 ? i3 : i2;
  i2 = i2 >>> 0 < 11 ? 11 : i2 + 16 & -16;
 } else i2 = -17;
 i3 = _malloc(i2) | 0;
 if (i8 | 0) _memcpy(i3 | 0, i6 | 0, i8 | 0) | 0;
 if (i7 | 0) _memcpy(i3 + i8 | 0, i5 | 0, i7 | 0) | 0;
 i1 = i4 - i9 | 0;
 if ((i1 | 0) != (i8 | 0)) _memcpy(i3 + i8 + i7 | 0, i6 + i8 + i9 | 0, i1 - i8 | 0) | 0;
 if ((i10 | 0) != 10) _free(i6);
 HEAP32[i11 + 8 >> 2] = i3;
 HEAP32[i11 >> 2] = i2 | 1;
 i10 = i1 + i7 | 0;
 HEAP32[i11 + 4 >> 2] = i10;
 HEAP8[i3 + i10 >> 0] = 0;
 return;
}

function __ZN4wasm22SExpressionWasmBuilder16makeCallIndirectERNS_7ElementE(i4, i3) {
 i4 = i4 | 0;
 i3 = i3 | 0;
 var i1 = 0, i2 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0;
 i5 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i1 = i5 + 4 | 0;
 i7 = i5;
 i2 = __ZN10MixedArena5allocIN4wasm12CallIndirectEEEPT_v(HEAP32[i4 + 4 >> 2] | 0) | 0;
 i8 = __ZN4wasm7Element4listEv(i3) | 0;
 i8 = __ZN4wasm7Element3strEv(HEAP32[(HEAP32[i8 >> 2] | 0) + 4 >> 2] | 0) | 0;
 i6 = HEAP32[i4 >> 2] | 0;
 HEAP32[i7 >> 2] = i8;
 HEAP32[i1 >> 2] = HEAP32[i7 >> 2];
 i1 = __ZN4wasm6Module15getFunctionTypeENS_4NameE(i6, i1) | 0;
 HEAP32[i2 + 20 >> 2] = i1;
 if (!i1) ___assert_fail(15101, 14303, 987, 15115); else {
  HEAP32[i2 + 4 >> 2] = HEAP32[i1 + 4 >> 2];
  i8 = __ZN4wasm7Element4listEv(i3) | 0;
  i8 = __ZN4wasm22SExpressionWasmBuilder15parseExpressionERNS_7ElementE(i4, HEAP32[(HEAP32[i8 >> 2] | 0) + 8 >> 2] | 0) | 0;
  HEAP32[i2 + 24 >> 2] = i8;
  __ZN4wasm22SExpressionWasmBuilder17parseCallOperandsINS_12CallIndirectEEEvRNS_7ElementEjPT_(i4, i3, 3, i2);
  STACKTOP = i5;
  return i2 | 0;
 }
 return 0;
}

function __ZN4wasm7Literal10printFloatERNSt3__113basic_ostreamIcNS1_11char_traitsIcEEEEf(i3, d2) {
 i3 = i3 | 0;
 d2 = +d2;
 var i1 = 0, d4 = 0.0, i5 = 0;
 d4 = +Math_abs(+d2);
 if ((HEAPF32[tempDoublePtr >> 2] = d4, HEAP32[tempDoublePtr >> 2] | 0) >>> 0 > 2139095040) {
  i1 = (HEAPF32[tempDoublePtr >> 2] = d2, HEAP32[tempDoublePtr >> 2] | 0);
  __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(__ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(i3, (i1 | 0) < 0 ? 34691 : 44318) | 0, 29219) | 0;
  i1 = i1 & 8388607;
  if (i1 | 0) {
   i3 = __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(i3, 15550) | 0;
   i5 = i3 + (HEAP32[(HEAP32[i3 >> 2] | 0) + -12 >> 2] | 0) + 4 | 0;
   HEAP32[i5 >> 2] = HEAP32[i5 >> 2] & -75 | 8;
   i3 = __ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEElsEj(i3, i1) | 0;
   i3 = i3 + (HEAP32[(HEAP32[i3 >> 2] | 0) + -12 >> 2] | 0) + 4 | 0;
   HEAP32[i3 >> 2] = HEAP32[i3 >> 2] & -75 | 2;
  }
 } else __ZN4wasm7Literal11printDoubleERNSt3__113basic_ostreamIcNS1_11char_traitsIcEEEEd(i3, d2);
 return;
}

function __ZNSt3__16vectorIPN4wasm12FunctionTypeENS_9allocatorIS3_EEE21__push_back_slow_pathIRKS3_EEvOT_(i7, i6) {
 i7 = i7 | 0;
 i6 = i6 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i8 = 0;
 i8 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i5 = i8;
 i3 = i7 + 4 | 0;
 i4 = HEAP32[i7 >> 2] | 0;
 i2 = ((HEAP32[i3 >> 2] | 0) - i4 >> 2) + 1 | 0;
 if (i2 >>> 0 > 1073741823) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i7);
 i1 = (HEAP32[i7 + 8 >> 2] | 0) - i4 | 0;
 if (i1 >> 2 >>> 0 < 536870911) {
  i1 = i1 >> 1;
  i1 = i1 >>> 0 < i2 >>> 0 ? i2 : i1;
 } else i1 = 1073741823;
 __ZNSt3__114__split_bufferIPN4wasm12FunctionTypeERNS_9allocatorIS3_EEEC2EjjS6_(i5, i1, (HEAP32[i3 >> 2] | 0) - i4 >> 2, i7 + 8 | 0);
 i4 = i5 + 8 | 0;
 i3 = HEAP32[i4 >> 2] | 0;
 HEAP32[i3 >> 2] = HEAP32[i6 >> 2];
 HEAP32[i4 >> 2] = i3 + 4;
 __ZNSt3__16vectorIPN4wasm12FunctionTypeENS_9allocatorIS3_EEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i7, i5);
 __ZNSt3__114__split_bufferIPN4wasm12FunctionTypeERNS_9allocatorIS3_EEED2Ev(i5);
 STACKTOP = i8;
 return;
}

function __ZNSt3__113unordered_mapIN6cashew7IStringEiNS_4hashIS2_EENS_8equal_toIS2_EENS_9allocatorINS_4pairIKS2_iEEEEEixERS9_(i5, i4) {
 i5 = i5 | 0;
 i4 = i4 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i6 = 0;
 i6 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i3 = i6 + 8 | 0;
 i2 = i6;
 i1 = __ZNSt3__112__hash_tableINS_17__hash_value_typeIN6cashew7IStringEiEENS_22__unordered_map_hasherIS3_S4_NS_4hashIS3_EELb1EEENS_21__unordered_map_equalIS3_S4_NS_8equal_toIS3_EELb1EEENS_9allocatorIS4_EEE4findIS3_EENS_15__hash_iteratorIPNS_11__hash_nodeIS4_PvEEEERKT_(i5, i4) | 0;
 if (!i1) {
  __ZNSt3__113unordered_mapIN6cashew7IStringEiNS_4hashIS2_EENS_8equal_toIS2_EENS_9allocatorINS_4pairIKS2_iEEEEE25__construct_node_with_keyERS9_(i3, i5, i4);
  __ZNSt3__112__hash_tableINS_17__hash_value_typeIN6cashew7IStringEiEENS_22__unordered_map_hasherIS3_S4_NS_4hashIS3_EELb1EEENS_21__unordered_map_equalIS3_S4_NS_8equal_toIS3_EELb1EEENS_9allocatorIS4_EEE20__node_insert_uniqueEPNS_11__hash_nodeIS4_PvEE(i2, i5, HEAP32[i3 >> 2] | 0);
  i1 = HEAP32[i2 >> 2] | 0;
 }
 STACKTOP = i6;
 return i1 + 12 | 0;
}

function __ZN4wasm22SExpressionWasmBuilder14makeThenOrElseERNS_7ElementE(i10, i9) {
 i10 = i10 | 0;
 i9 = i9 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i11 = 0;
 i11 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i1 = i11;
 i7 = __ZN10MixedArena5allocIN4wasm5BlockEEEPT_v(HEAP32[i10 + 4 >> 2] | 0) | 0;
 i8 = __ZN4wasm7Element4listEv(i9) | 0;
 i2 = i7 + 16 | 0;
 i3 = i7 + 20 | 0;
 i4 = i7 + 12 | 0;
 i8 = (HEAP8[HEAP32[(HEAP32[i8 >> 2] | 0) + 4 >> 2] >> 0] | 0) == 0 ? 2 : 1;
 while (1) {
  if (i8 >>> 0 >= (__ZN4wasm7Element4sizeEv(i9) | 0) >>> 0) break;
  i5 = __ZN4wasm22SExpressionWasmBuilder15parseExpressionERNS_7ElementE(i10, __ZN4wasm7ElementixEj(i9, i8) | 0) | 0;
  HEAP32[i1 >> 2] = i5;
  i6 = HEAP32[i2 >> 2] | 0;
  if (i6 >>> 0 < (HEAP32[i3 >> 2] | 0) >>> 0) {
   HEAP32[i6 >> 2] = i5;
   HEAP32[i2 >> 2] = (HEAP32[i2 >> 2] | 0) + 4;
  } else __ZNSt3__16vectorIPN4wasm10ExpressionENS_9allocatorIS3_EEE21__push_back_slow_pathIS3_EEvOT_(i4, i1);
  i8 = i8 + 1 | 0;
 }
 __ZN4wasm5Block8finalizeEv(i7);
 STACKTOP = i11;
 return i7 | 0;
}

function __ZNSt3__16vectorIPN4wasm10ExpressionENS_9allocatorIS3_EEE21__push_back_slow_pathIRKS3_EEvOT_(i7, i6) {
 i7 = i7 | 0;
 i6 = i6 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i8 = 0;
 i8 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i5 = i8;
 i3 = i7 + 4 | 0;
 i4 = HEAP32[i7 >> 2] | 0;
 i2 = ((HEAP32[i3 >> 2] | 0) - i4 >> 2) + 1 | 0;
 if (i2 >>> 0 > 1073741823) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i7);
 i1 = (HEAP32[i7 + 8 >> 2] | 0) - i4 | 0;
 if (i1 >> 2 >>> 0 < 536870911) {
  i1 = i1 >> 1;
  i1 = i1 >>> 0 < i2 >>> 0 ? i2 : i1;
 } else i1 = 1073741823;
 __ZNSt3__114__split_bufferIPN4wasm10ExpressionERNS_9allocatorIS3_EEEC2EjjS6_(i5, i1, (HEAP32[i3 >> 2] | 0) - i4 >> 2, i7 + 8 | 0);
 i4 = i5 + 8 | 0;
 i3 = HEAP32[i4 >> 2] | 0;
 HEAP32[i3 >> 2] = HEAP32[i6 >> 2];
 HEAP32[i4 >> 2] = i3 + 4;
 __ZNSt3__16vectorIPN4wasm10ExpressionENS_9allocatorIS3_EEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i7, i5);
 __ZNSt3__114__split_bufferIPN4wasm10ExpressionERNS_9allocatorIS3_EEED2Ev(i5);
 STACKTOP = i8;
 return;
}

function __ZNSt3__13mapIN4wasm4NameENS_6vectorINS1_14SimplifyLocals10BlockBreakENS_9allocatorIS5_EEEENS_4lessIS2_EENS6_INS_4pairIKS2_S8_EEEEEixERSC_(i6, i4) {
 i6 = i6 | 0;
 i4 = i4 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i5 = 0, i7 = 0;
 i7 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i5 = i7 + 12 | 0;
 i3 = i7;
 i2 = __ZNSt3__13mapIN4wasm4NameENS_6vectorINS1_14SimplifyLocals10BlockBreakENS_9allocatorIS5_EEEENS_4lessIS2_EENS6_INS_4pairIKS2_S8_EEEEE16__find_equal_keyERPNS_16__tree_node_baseIPvEERSC_(i6, i5, i4) | 0;
 i1 = HEAP32[i2 >> 2] | 0;
 if (!i1) {
  __ZNSt3__13mapIN4wasm4NameENS_6vectorINS1_14SimplifyLocals10BlockBreakENS_9allocatorIS5_EEEENS_4lessIS2_EENS6_INS_4pairIKS2_S8_EEEEE25__construct_node_with_keyERSC_(i3, i6, i4);
  i1 = HEAP32[i3 >> 2] | 0;
  __ZNSt3__16__treeINS_12__value_typeIN4wasm4NameENS_6vectorINS2_14SimplifyLocals10BlockBreakENS_9allocatorIS6_EEEEEENS_19__map_value_compareIS3_SA_NS_4lessIS3_EELb1EEENS7_ISA_EEE16__insert_node_atEPNS_16__tree_node_baseIPvEERSK_SK_(i6, HEAP32[i5 >> 2] | 0, i2, i1);
 }
 STACKTOP = i7;
 return i1 + 20 | 0;
}

function __ZNSt3__16vectorIPN4wasm10ExpressionENS_9allocatorIS3_EEE21__push_back_slow_pathIS3_EEvOT_(i7, i6) {
 i7 = i7 | 0;
 i6 = i6 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i8 = 0;
 i8 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i5 = i8;
 i3 = i7 + 4 | 0;
 i4 = HEAP32[i7 >> 2] | 0;
 i2 = ((HEAP32[i3 >> 2] | 0) - i4 >> 2) + 1 | 0;
 if (i2 >>> 0 > 1073741823) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i7);
 i1 = (HEAP32[i7 + 8 >> 2] | 0) - i4 | 0;
 if (i1 >> 2 >>> 0 < 536870911) {
  i1 = i1 >> 1;
  i1 = i1 >>> 0 < i2 >>> 0 ? i2 : i1;
 } else i1 = 1073741823;
 __ZNSt3__114__split_bufferIPN4wasm10ExpressionERNS_9allocatorIS3_EEEC2EjjS6_(i5, i1, (HEAP32[i3 >> 2] | 0) - i4 >> 2, i7 + 8 | 0);
 i4 = i5 + 8 | 0;
 i3 = HEAP32[i4 >> 2] | 0;
 HEAP32[i3 >> 2] = HEAP32[i6 >> 2];
 HEAP32[i4 >> 2] = i3 + 4;
 __ZNSt3__16vectorIPN4wasm10ExpressionENS_9allocatorIS3_EEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i7, i5);
 __ZNSt3__114__split_bufferIPN4wasm10ExpressionERNS_9allocatorIS3_EEED2Ev(i5);
 STACKTOP = i8;
 return;
}

function ___fwritex(i3, i4, i6) {
 i3 = i3 | 0;
 i4 = i4 | 0;
 i6 = i6 | 0;
 var i1 = 0, i2 = 0, i5 = 0, i7 = 0;
 i1 = i6 + 16 | 0;
 i2 = HEAP32[i1 >> 2] | 0;
 if (!i2) if (!(___towrite(i6) | 0)) {
  i2 = HEAP32[i1 >> 2] | 0;
  i5 = 5;
 } else i1 = 0; else i5 = 5;
 L5 : do if ((i5 | 0) == 5) {
  i7 = i6 + 20 | 0;
  i1 = HEAP32[i7 >> 2] | 0;
  i5 = i1;
  if ((i2 - i1 | 0) >>> 0 < i4 >>> 0) {
   i1 = FUNCTION_TABLE_iiii[HEAP32[i6 + 36 >> 2] & 31](i6, i3, i4) | 0;
   break;
  }
  L10 : do if ((HEAP8[i6 + 75 >> 0] | 0) > -1) {
   i1 = i4;
   while (1) {
    if (!i1) {
     i2 = i5;
     i1 = 0;
     break L10;
    }
    i2 = i1 + -1 | 0;
    if ((HEAP8[i3 + i2 >> 0] | 0) == 10) break; else i1 = i2;
   }
   if ((FUNCTION_TABLE_iiii[HEAP32[i6 + 36 >> 2] & 31](i6, i3, i1) | 0) >>> 0 < i1 >>> 0) break L5;
   i4 = i4 - i1 | 0;
   i3 = i3 + i1 | 0;
   i2 = HEAP32[i7 >> 2] | 0;
  } else {
   i2 = i5;
   i1 = 0;
  } while (0);
  _memcpy(i2 | 0, i3 | 0, i4 | 0) | 0;
  HEAP32[i7 >> 2] = (HEAP32[i7 >> 2] | 0) + i4;
  i1 = i1 + i4 | 0;
 } while (0);
 return i1 | 0;
}

function __ZN4wasm6WalkerINS_17RemoveUnusedNamesENS_7VisitorIS1_vEEE4walkERPNS_10ExpressionE(i8, i1) {
 i8 = i8 | 0;
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i9 = 0;
 i6 = i8 + 4 | 0;
 i7 = i8 + 8 | 0;
 if ((HEAP32[i7 >> 2] | 0) != (HEAP32[i6 >> 2] | 0)) ___assert_fail(25256, 25274, 268, 25295);
 __ZN4wasm6WalkerINS_17RemoveUnusedNamesENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i8, 125, i1);
 i5 = i8 + -16 | 0;
 while (1) {
  i4 = HEAP32[i7 >> 2] | 0;
  i1 = i4;
  if ((i4 | 0) == (HEAP32[i6 >> 2] | 0)) {
   i1 = 12;
   break;
  }
  i2 = i1 + -8 | 0;
  i3 = HEAP32[i2 >> 2] | 0;
  i4 = HEAP32[i1 + -4 >> 2] | 0;
  while (1) {
   if ((i1 | 0) == (i2 | 0)) break;
   i9 = i1 + -8 | 0;
   HEAP32[i7 >> 2] = i9;
   i1 = i9;
  }
  if (!(HEAP32[i4 >> 2] | 0)) {
   i1 = 9;
   break;
  }
  FUNCTION_TABLE_vii[i3 & 511](i5, i4);
  i1 = HEAP32[i8 >> 2] | 0;
  if (!i1) continue;
  HEAP32[i4 >> 2] = i1;
  HEAP32[i8 >> 2] = 0;
 }
 if ((i1 | 0) == 9) ___assert_fail(25300, 25274, 272, 25295); else if ((i1 | 0) == 12) return;
}

function __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE21__grow_by_and_replaceEjjjjjjPKc(i11, i10, i1, i4, i8, i9, i7, i5) {
 i11 = i11 | 0;
 i10 = i10 | 0;
 i1 = i1 | 0;
 i4 = i4 | 0;
 i8 = i8 | 0;
 i9 = i9 | 0;
 i7 = i7 | 0;
 i5 = i5 | 0;
 var i2 = 0, i3 = 0, i6 = 0;
 if ((-18 - i10 | 0) >>> 0 < i1 >>> 0) __ZNKSt3__121__basic_string_commonILb1EE20__throw_length_errorEv(i11);
 if (!(HEAP8[i11 >> 0] & 1)) i6 = i11 + 1 | 0; else i6 = HEAP32[i11 + 8 >> 2] | 0;
 if (i10 >>> 0 < 2147483623) {
  i2 = i1 + i10 | 0;
  i3 = i10 << 1;
  i2 = i2 >>> 0 < i3 >>> 0 ? i3 : i2;
  i2 = i2 >>> 0 < 11 ? 11 : i2 + 16 & -16;
 } else i2 = -17;
 i3 = __Znwj(i2) | 0;
 if (i8 | 0) _memcpy(i3 | 0, i6 | 0, i8 | 0) | 0;
 if (i7 | 0) _memcpy(i3 + i8 | 0, i5 | 0, i7 | 0) | 0;
 i1 = i4 - i9 | 0;
 if ((i1 | 0) != (i8 | 0)) _memcpy(i3 + i8 + i7 | 0, i6 + i8 + i9 | 0, i1 - i8 | 0) | 0;
 if ((i10 | 0) != 10) __ZdlPv(i6);
 HEAP32[i11 + 8 >> 2] = i3;
 HEAP32[i11 >> 2] = i2 | 1;
 i10 = i1 + i7 | 0;
 HEAP32[i11 + 4 >> 2] = i10;
 HEAP8[i3 + i10 >> 0] = 0;
 return;
}

function __ZN4wasm6WalkerINS_15SetLocalRemoverENS_7VisitorIS1_vEEE4walkERPNS_10ExpressionE(i8, i1) {
 i8 = i8 | 0;
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i9 = 0;
 i6 = i8 + 4 | 0;
 i7 = i8 + 8 | 0;
 if ((HEAP32[i7 >> 2] | 0) != (HEAP32[i6 >> 2] | 0)) ___assert_fail(25256, 25274, 268, 25295);
 __ZN4wasm6WalkerINS_15SetLocalRemoverENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i8, 236, i1);
 i5 = i8 + -16 | 0;
 while (1) {
  i4 = HEAP32[i7 >> 2] | 0;
  i1 = i4;
  if ((i4 | 0) == (HEAP32[i6 >> 2] | 0)) {
   i1 = 12;
   break;
  }
  i2 = i1 + -8 | 0;
  i3 = HEAP32[i2 >> 2] | 0;
  i4 = HEAP32[i1 + -4 >> 2] | 0;
  while (1) {
   if ((i1 | 0) == (i2 | 0)) break;
   i9 = i1 + -8 | 0;
   HEAP32[i7 >> 2] = i9;
   i1 = i9;
  }
  if (!(HEAP32[i4 >> 2] | 0)) {
   i1 = 9;
   break;
  }
  FUNCTION_TABLE_vii[i3 & 511](i5, i4);
  i1 = HEAP32[i8 >> 2] | 0;
  if (!i1) continue;
  HEAP32[i4 >> 2] = i1;
  HEAP32[i8 >> 2] = 0;
 }
 if ((i1 | 0) == 9) ___assert_fail(25300, 25274, 272, 25295); else if ((i1 | 0) == 12) return;
}

function __ZN4wasm6WalkerINS_15RemoveUnusedBrsENS_7VisitorIS1_vEEE4walkERPNS_10ExpressionE(i8, i1) {
 i8 = i8 | 0;
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i9 = 0;
 i6 = i8 + 4 | 0;
 i7 = i8 + 8 | 0;
 if ((HEAP32[i7 >> 2] | 0) != (HEAP32[i6 >> 2] | 0)) ___assert_fail(25256, 25274, 268, 25295);
 __ZN4wasm6WalkerINS_15RemoveUnusedBrsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i8, 101, i1);
 i5 = i8 + -16 | 0;
 while (1) {
  i4 = HEAP32[i7 >> 2] | 0;
  i1 = i4;
  if ((i4 | 0) == (HEAP32[i6 >> 2] | 0)) {
   i1 = 12;
   break;
  }
  i2 = i1 + -8 | 0;
  i3 = HEAP32[i2 >> 2] | 0;
  i4 = HEAP32[i1 + -4 >> 2] | 0;
  while (1) {
   if ((i1 | 0) == (i2 | 0)) break;
   i9 = i1 + -8 | 0;
   HEAP32[i7 >> 2] = i9;
   i1 = i9;
  }
  if (!(HEAP32[i4 >> 2] | 0)) {
   i1 = 9;
   break;
  }
  FUNCTION_TABLE_vii[i3 & 511](i5, i4);
  i1 = HEAP32[i8 >> 2] | 0;
  if (!i1) continue;
  HEAP32[i4 >> 2] = i1;
  HEAP32[i8 >> 2] = 0;
 }
 if ((i1 | 0) == 9) ___assert_fail(25300, 25274, 272, 25295); else if ((i1 | 0) == 12) return;
}

function __ZN4wasm6WalkerINS_15GetLocalCounterENS_7VisitorIS1_vEEE4walkERPNS_10ExpressionE(i8, i1) {
 i8 = i8 | 0;
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i9 = 0;
 i6 = i8 + 4 | 0;
 i7 = i8 + 8 | 0;
 if ((HEAP32[i7 >> 2] | 0) != (HEAP32[i6 >> 2] | 0)) ___assert_fail(25256, 25274, 268, 25295);
 __ZN4wasm6WalkerINS_15GetLocalCounterENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i8, 215, i1);
 i5 = i8 + -16 | 0;
 while (1) {
  i4 = HEAP32[i7 >> 2] | 0;
  i1 = i4;
  if ((i4 | 0) == (HEAP32[i6 >> 2] | 0)) {
   i1 = 12;
   break;
  }
  i2 = i1 + -8 | 0;
  i3 = HEAP32[i2 >> 2] | 0;
  i4 = HEAP32[i1 + -4 >> 2] | 0;
  while (1) {
   if ((i1 | 0) == (i2 | 0)) break;
   i9 = i1 + -8 | 0;
   HEAP32[i7 >> 2] = i9;
   i1 = i9;
  }
  if (!(HEAP32[i4 >> 2] | 0)) {
   i1 = 9;
   break;
  }
  FUNCTION_TABLE_vii[i3 & 511](i5, i4);
  i1 = HEAP32[i8 >> 2] | 0;
  if (!i1) continue;
  HEAP32[i4 >> 2] = i1;
  HEAP32[i8 >> 2] = 0;
 }
 if ((i1 | 0) == 9) ___assert_fail(25300, 25274, 272, 25295); else if ((i1 | 0) == 12) return;
}

function __ZNSt3__16vectorIPN4wasm8FunctionENS_9allocatorIS3_EEE21__push_back_slow_pathIRKS3_EEvOT_(i7, i6) {
 i7 = i7 | 0;
 i6 = i6 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i8 = 0;
 i8 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i5 = i8;
 i3 = i7 + 4 | 0;
 i4 = HEAP32[i7 >> 2] | 0;
 i2 = ((HEAP32[i3 >> 2] | 0) - i4 >> 2) + 1 | 0;
 if (i2 >>> 0 > 1073741823) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i7);
 i1 = (HEAP32[i7 + 8 >> 2] | 0) - i4 | 0;
 if (i1 >> 2 >>> 0 < 536870911) {
  i1 = i1 >> 1;
  i1 = i1 >>> 0 < i2 >>> 0 ? i2 : i1;
 } else i1 = 1073741823;
 __ZNSt3__114__split_bufferIPN4wasm8FunctionERNS_9allocatorIS3_EEEC2EjjS6_(i5, i1, (HEAP32[i3 >> 2] | 0) - i4 >> 2, i7 + 8 | 0);
 i4 = i5 + 8 | 0;
 i3 = HEAP32[i4 >> 2] | 0;
 HEAP32[i3 >> 2] = HEAP32[i6 >> 2];
 HEAP32[i4 >> 2] = i3 + 4;
 __ZNSt3__16vectorIPN4wasm8FunctionENS_9allocatorIS3_EEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i7, i5);
 __ZNSt3__114__split_bufferIPN4wasm8FunctionERNS_9allocatorIS3_EEED2Ev(i5);
 STACKTOP = i8;
 return;
}

function __ZN4wasm6WalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE4walkERPNS_10ExpressionE(i8, i1) {
 i8 = i8 | 0;
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i9 = 0;
 i6 = i8 + 4 | 0;
 i7 = i8 + 8 | 0;
 if ((HEAP32[i7 >> 2] | 0) != (HEAP32[i6 >> 2] | 0)) ___assert_fail(25256, 25274, 268, 25295);
 __ZN4wasm6WalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i8, 167, i1);
 i5 = i8 + -16 | 0;
 while (1) {
  i4 = HEAP32[i7 >> 2] | 0;
  i1 = i4;
  if ((i4 | 0) == (HEAP32[i6 >> 2] | 0)) {
   i1 = 12;
   break;
  }
  i2 = i1 + -8 | 0;
  i3 = HEAP32[i2 >> 2] | 0;
  i4 = HEAP32[i1 + -4 >> 2] | 0;
  while (1) {
   if ((i1 | 0) == (i2 | 0)) break;
   i9 = i1 + -8 | 0;
   HEAP32[i7 >> 2] = i9;
   i1 = i9;
  }
  if (!(HEAP32[i4 >> 2] | 0)) {
   i1 = 9;
   break;
  }
  FUNCTION_TABLE_vii[i3 & 511](i5, i4);
  i1 = HEAP32[i8 >> 2] | 0;
  if (!i1) continue;
  HEAP32[i4 >> 2] = i1;
  HEAP32[i8 >> 2] = 0;
 }
 if ((i1 | 0) == 9) ___assert_fail(25300, 25274, 272, 25295); else if ((i1 | 0) == 12) return;
}

function __ZN4wasm6WalkerINS_14PostEmscriptenENS_7VisitorIS1_vEEE4walkERPNS_10ExpressionE(i8, i1) {
 i8 = i8 | 0;
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i9 = 0;
 i6 = i8 + 4 | 0;
 i7 = i8 + 8 | 0;
 if ((HEAP32[i7 >> 2] | 0) != (HEAP32[i6 >> 2] | 0)) ___assert_fail(25256, 25274, 268, 25295);
 __ZN4wasm6WalkerINS_14PostEmscriptenENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i8, 146, i1);
 i5 = i8 + -16 | 0;
 while (1) {
  i4 = HEAP32[i7 >> 2] | 0;
  i1 = i4;
  if ((i4 | 0) == (HEAP32[i6 >> 2] | 0)) {
   i1 = 12;
   break;
  }
  i2 = i1 + -8 | 0;
  i3 = HEAP32[i2 >> 2] | 0;
  i4 = HEAP32[i1 + -4 >> 2] | 0;
  while (1) {
   if ((i1 | 0) == (i2 | 0)) break;
   i9 = i1 + -8 | 0;
   HEAP32[i7 >> 2] = i9;
   i1 = i9;
  }
  if (!(HEAP32[i4 >> 2] | 0)) {
   i1 = 9;
   break;
  }
  FUNCTION_TABLE_vii[i3 & 511](i5, i4);
  i1 = HEAP32[i8 >> 2] | 0;
  if (!i1) continue;
  HEAP32[i4 >> 2] = i1;
  HEAP32[i8 >> 2] = 0;
 }
 if ((i1 | 0) == 9) ___assert_fail(25300, 25274, 272, 25295); else if ((i1 | 0) == 12) return;
}

function __ZN4wasm6WalkerINS_13ReorderLocalsENS_7VisitorIS1_vEEE4walkERPNS_10ExpressionE(i8, i1) {
 i8 = i8 | 0;
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i9 = 0;
 i6 = i8 + 4 | 0;
 i7 = i8 + 8 | 0;
 if ((HEAP32[i7 >> 2] | 0) != (HEAP32[i6 >> 2] | 0)) ___assert_fail(25256, 25274, 268, 25295);
 __ZN4wasm6WalkerINS_13ReorderLocalsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i8, 257, i1);
 i5 = i8 + -16 | 0;
 while (1) {
  i4 = HEAP32[i7 >> 2] | 0;
  i1 = i4;
  if ((i4 | 0) == (HEAP32[i6 >> 2] | 0)) {
   i1 = 12;
   break;
  }
  i2 = i1 + -8 | 0;
  i3 = HEAP32[i2 >> 2] | 0;
  i4 = HEAP32[i1 + -4 >> 2] | 0;
  while (1) {
   if ((i1 | 0) == (i2 | 0)) break;
   i9 = i1 + -8 | 0;
   HEAP32[i7 >> 2] = i9;
   i1 = i9;
  }
  if (!(HEAP32[i4 >> 2] | 0)) {
   i1 = 9;
   break;
  }
  FUNCTION_TABLE_vii[i3 & 511](i5, i4);
  i1 = HEAP32[i8 >> 2] | 0;
  if (!i1) continue;
  HEAP32[i4 >> 2] = i1;
  HEAP32[i8 >> 2] = 0;
 }
 if ((i1 | 0) == 9) ___assert_fail(25300, 25274, 272, 25295); else if ((i1 | 0) == 12) return;
}

function __ZNSt3__16vectorIPN4wasm7ElementENS_9allocatorIS3_EEE21__push_back_slow_pathIRKS3_EEvOT_(i7, i6) {
 i7 = i7 | 0;
 i6 = i6 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i8 = 0;
 i8 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i5 = i8;
 i3 = i7 + 4 | 0;
 i4 = HEAP32[i7 >> 2] | 0;
 i2 = ((HEAP32[i3 >> 2] | 0) - i4 >> 2) + 1 | 0;
 if (i2 >>> 0 > 1073741823) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i7);
 i1 = (HEAP32[i7 + 8 >> 2] | 0) - i4 | 0;
 if (i1 >> 2 >>> 0 < 536870911) {
  i1 = i1 >> 1;
  i1 = i1 >>> 0 < i2 >>> 0 ? i2 : i1;
 } else i1 = 1073741823;
 __ZNSt3__114__split_bufferIPN4wasm7ElementERNS_9allocatorIS3_EEEC2EjjS6_(i5, i1, (HEAP32[i3 >> 2] | 0) - i4 >> 2, i7 + 8 | 0);
 i4 = i5 + 8 | 0;
 i3 = HEAP32[i4 >> 2] | 0;
 HEAP32[i3 >> 2] = HEAP32[i6 >> 2];
 HEAP32[i4 >> 2] = i3 + 4;
 __ZNSt3__16vectorIPN4wasm7ElementENS_9allocatorIS3_EEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i7, i5);
 __ZNSt3__114__split_bufferIPN4wasm7ElementERNS_9allocatorIS3_EEED2Ev(i5);
 STACKTOP = i8;
 return;
}

function __ZNSt3__16vectorIN4wasm8WasmTypeENS_9allocatorIS2_EEE21__push_back_slow_pathIRKS2_EEvOT_(i7, i6) {
 i7 = i7 | 0;
 i6 = i6 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i8 = 0;
 i8 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i5 = i8;
 i3 = i7 + 4 | 0;
 i4 = HEAP32[i7 >> 2] | 0;
 i2 = ((HEAP32[i3 >> 2] | 0) - i4 >> 2) + 1 | 0;
 if (i2 >>> 0 > 1073741823) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i7);
 i1 = (HEAP32[i7 + 8 >> 2] | 0) - i4 | 0;
 if (i1 >> 2 >>> 0 < 536870911) {
  i1 = i1 >> 1;
  i1 = i1 >>> 0 < i2 >>> 0 ? i2 : i1;
 } else i1 = 1073741823;
 __ZNSt3__114__split_bufferIN4wasm8WasmTypeERNS_9allocatorIS2_EEEC2EjjS5_(i5, i1, (HEAP32[i3 >> 2] | 0) - i4 >> 2, i7 + 8 | 0);
 i4 = i5 + 8 | 0;
 i3 = HEAP32[i4 >> 2] | 0;
 HEAP32[i3 >> 2] = HEAP32[i6 >> 2];
 HEAP32[i4 >> 2] = i3 + 4;
 __ZNSt3__16vectorIN4wasm8WasmTypeENS_9allocatorIS2_EEE26__swap_out_circular_bufferERNS_14__split_bufferIS2_RS4_EE(i7, i5);
 __ZNSt3__114__split_bufferIN4wasm8WasmTypeERNS_9allocatorIS2_EEED2Ev(i5);
 STACKTOP = i8;
 return;
}

function __ZNSt3__16vectorIPN4wasm7ElementENS_9allocatorIS3_EEE21__push_back_slow_pathIS3_EEvOT_(i7, i6) {
 i7 = i7 | 0;
 i6 = i6 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i8 = 0;
 i8 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i5 = i8;
 i3 = i7 + 4 | 0;
 i4 = HEAP32[i7 >> 2] | 0;
 i2 = ((HEAP32[i3 >> 2] | 0) - i4 >> 2) + 1 | 0;
 if (i2 >>> 0 > 1073741823) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i7);
 i1 = (HEAP32[i7 + 8 >> 2] | 0) - i4 | 0;
 if (i1 >> 2 >>> 0 < 536870911) {
  i1 = i1 >> 1;
  i1 = i1 >>> 0 < i2 >>> 0 ? i2 : i1;
 } else i1 = 1073741823;
 __ZNSt3__114__split_bufferIPN4wasm7ElementERNS_9allocatorIS3_EEEC2EjjS6_(i5, i1, (HEAP32[i3 >> 2] | 0) - i4 >> 2, i7 + 8 | 0);
 i4 = i5 + 8 | 0;
 i3 = HEAP32[i4 >> 2] | 0;
 HEAP32[i3 >> 2] = HEAP32[i6 >> 2];
 HEAP32[i4 >> 2] = i3 + 4;
 __ZNSt3__16vectorIPN4wasm7ElementENS_9allocatorIS3_EEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i7, i5);
 __ZNSt3__114__split_bufferIPN4wasm7ElementERNS_9allocatorIS3_EEED2Ev(i5);
 STACKTOP = i8;
 return;
}

function __ZNSt3__16vectorIN4wasm8WasmTypeENS_9allocatorIS2_EEE21__push_back_slow_pathIS2_EEvOT_(i7, i6) {
 i7 = i7 | 0;
 i6 = i6 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i8 = 0;
 i8 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i5 = i8;
 i3 = i7 + 4 | 0;
 i4 = HEAP32[i7 >> 2] | 0;
 i2 = ((HEAP32[i3 >> 2] | 0) - i4 >> 2) + 1 | 0;
 if (i2 >>> 0 > 1073741823) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i7);
 i1 = (HEAP32[i7 + 8 >> 2] | 0) - i4 | 0;
 if (i1 >> 2 >>> 0 < 536870911) {
  i1 = i1 >> 1;
  i1 = i1 >>> 0 < i2 >>> 0 ? i2 : i1;
 } else i1 = 1073741823;
 __ZNSt3__114__split_bufferIN4wasm8WasmTypeERNS_9allocatorIS2_EEEC2EjjS5_(i5, i1, (HEAP32[i3 >> 2] | 0) - i4 >> 2, i7 + 8 | 0);
 i4 = i5 + 8 | 0;
 i3 = HEAP32[i4 >> 2] | 0;
 HEAP32[i3 >> 2] = HEAP32[i6 >> 2];
 HEAP32[i4 >> 2] = i3 + 4;
 __ZNSt3__16vectorIN4wasm8WasmTypeENS_9allocatorIS2_EEE26__swap_out_circular_bufferERNS_14__split_bufferIS2_RS4_EE(i7, i5);
 __ZNSt3__114__split_bufferIN4wasm8WasmTypeERNS_9allocatorIS2_EEED2Ev(i5);
 STACKTOP = i8;
 return;
}

function __ZNSt3__16vectorIPN4wasm6ImportENS_9allocatorIS3_EEE21__push_back_slow_pathIRKS3_EEvOT_(i7, i6) {
 i7 = i7 | 0;
 i6 = i6 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i8 = 0;
 i8 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i5 = i8;
 i3 = i7 + 4 | 0;
 i4 = HEAP32[i7 >> 2] | 0;
 i2 = ((HEAP32[i3 >> 2] | 0) - i4 >> 2) + 1 | 0;
 if (i2 >>> 0 > 1073741823) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i7);
 i1 = (HEAP32[i7 + 8 >> 2] | 0) - i4 | 0;
 if (i1 >> 2 >>> 0 < 536870911) {
  i1 = i1 >> 1;
  i1 = i1 >>> 0 < i2 >>> 0 ? i2 : i1;
 } else i1 = 1073741823;
 __ZNSt3__114__split_bufferIPN4wasm6ImportERNS_9allocatorIS3_EEEC2EjjS6_(i5, i1, (HEAP32[i3 >> 2] | 0) - i4 >> 2, i7 + 8 | 0);
 i4 = i5 + 8 | 0;
 i3 = HEAP32[i4 >> 2] | 0;
 HEAP32[i3 >> 2] = HEAP32[i6 >> 2];
 HEAP32[i4 >> 2] = i3 + 4;
 __ZNSt3__16vectorIPN4wasm6ImportENS_9allocatorIS3_EEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i7, i5);
 __ZNSt3__114__split_bufferIPN4wasm6ImportERNS_9allocatorIS3_EEED2Ev(i5);
 STACKTOP = i8;
 return;
}

function __ZNSt3__16vectorIPN4wasm6ExportENS_9allocatorIS3_EEE21__push_back_slow_pathIRKS3_EEvOT_(i7, i6) {
 i7 = i7 | 0;
 i6 = i6 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i8 = 0;
 i8 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i5 = i8;
 i3 = i7 + 4 | 0;
 i4 = HEAP32[i7 >> 2] | 0;
 i2 = ((HEAP32[i3 >> 2] | 0) - i4 >> 2) + 1 | 0;
 if (i2 >>> 0 > 1073741823) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i7);
 i1 = (HEAP32[i7 + 8 >> 2] | 0) - i4 | 0;
 if (i1 >> 2 >>> 0 < 536870911) {
  i1 = i1 >> 1;
  i1 = i1 >>> 0 < i2 >>> 0 ? i2 : i1;
 } else i1 = 1073741823;
 __ZNSt3__114__split_bufferIPN4wasm6ExportERNS_9allocatorIS3_EEEC2EjjS6_(i5, i1, (HEAP32[i3 >> 2] | 0) - i4 >> 2, i7 + 8 | 0);
 i4 = i5 + 8 | 0;
 i3 = HEAP32[i4 >> 2] | 0;
 HEAP32[i3 >> 2] = HEAP32[i6 >> 2];
 HEAP32[i4 >> 2] = i3 + 4;
 __ZNSt3__16vectorIPN4wasm6ExportENS_9allocatorIS3_EEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i7, i5);
 __ZNSt3__114__split_bufferIPN4wasm6ExportERNS_9allocatorIS3_EEED2Ev(i5);
 STACKTOP = i8;
 return;
}

function __ZN4wasm6WalkerINS_11MergeBlocksENS_7VisitorIS1_vEEE4walkERPNS_10ExpressionE(i8, i1) {
 i8 = i8 | 0;
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i9 = 0;
 i6 = i8 + 4 | 0;
 i7 = i8 + 8 | 0;
 if ((HEAP32[i7 >> 2] | 0) != (HEAP32[i6 >> 2] | 0)) ___assert_fail(25256, 25274, 268, 25295);
 __ZN4wasm6WalkerINS_11MergeBlocksENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i8, 80, i1);
 i5 = i8 + -16 | 0;
 while (1) {
  i4 = HEAP32[i7 >> 2] | 0;
  i1 = i4;
  if ((i4 | 0) == (HEAP32[i6 >> 2] | 0)) {
   i1 = 12;
   break;
  }
  i2 = i1 + -8 | 0;
  i3 = HEAP32[i2 >> 2] | 0;
  i4 = HEAP32[i1 + -4 >> 2] | 0;
  while (1) {
   if ((i1 | 0) == (i2 | 0)) break;
   i9 = i1 + -8 | 0;
   HEAP32[i7 >> 2] = i9;
   i1 = i9;
  }
  if (!(HEAP32[i4 >> 2] | 0)) {
   i1 = 9;
   break;
  }
  FUNCTION_TABLE_vii[i3 & 511](i5, i4);
  i1 = HEAP32[i8 >> 2] | 0;
  if (!i1) continue;
  HEAP32[i4 >> 2] = i1;
  HEAP32[i8 >> 2] = 0;
 }
 if ((i1 | 0) == 9) ___assert_fail(25300, 25274, 272, 25295); else if ((i1 | 0) == 12) return;
}

function _vsnprintf(i3, i1, i10, i8) {
 i3 = i3 | 0;
 i1 = i1 | 0;
 i10 = i10 | 0;
 i8 = i8 | 0;
 var i2 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i9 = 0, i11 = 0;
 i11 = STACKTOP;
 STACKTOP = STACKTOP + 128 | 0;
 i2 = i11 + 112 | 0;
 i9 = i11;
 i4 = i9;
 i5 = 5392;
 i6 = i4 + 112 | 0;
 do {
  HEAP32[i4 >> 2] = HEAP32[i5 >> 2];
  i4 = i4 + 4 | 0;
  i5 = i5 + 4 | 0;
 } while ((i4 | 0) < (i6 | 0));
 if ((i1 + -1 | 0) >>> 0 > 2147483646) if (!i1) {
  i1 = 1;
  i7 = 4;
 } else {
  i1 = ___errno_location() | 0;
  HEAP32[i1 >> 2] = 75;
  i1 = -1;
 } else {
  i2 = i3;
  i7 = 4;
 }
 if ((i7 | 0) == 4) {
  i7 = -2 - i2 | 0;
  i7 = i1 >>> 0 > i7 >>> 0 ? i7 : i1;
  HEAP32[i9 + 48 >> 2] = i7;
  i3 = i9 + 20 | 0;
  HEAP32[i3 >> 2] = i2;
  HEAP32[i9 + 44 >> 2] = i2;
  i1 = i2 + i7 | 0;
  i2 = i9 + 16 | 0;
  HEAP32[i2 >> 2] = i1;
  HEAP32[i9 + 28 >> 2] = i1;
  i1 = _vfprintf(i9, i10, i8) | 0;
  if (i7) {
   i10 = HEAP32[i3 >> 2] | 0;
   HEAP8[i10 + (((i10 | 0) == (HEAP32[i2 >> 2] | 0)) << 31 >> 31) >> 0] = 0;
  }
 }
 STACKTOP = i11;
 return i1 | 0;
}

function __ZNSt3__16vectorIPN4wasm5BreakENS_9allocatorIS3_EEE21__push_back_slow_pathIRKS3_EEvOT_(i7, i6) {
 i7 = i7 | 0;
 i6 = i6 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i8 = 0;
 i8 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i5 = i8;
 i3 = i7 + 4 | 0;
 i4 = HEAP32[i7 >> 2] | 0;
 i2 = ((HEAP32[i3 >> 2] | 0) - i4 >> 2) + 1 | 0;
 if (i2 >>> 0 > 1073741823) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i7);
 i1 = (HEAP32[i7 + 8 >> 2] | 0) - i4 | 0;
 if (i1 >> 2 >>> 0 < 536870911) {
  i1 = i1 >> 1;
  i1 = i1 >>> 0 < i2 >>> 0 ? i2 : i1;
 } else i1 = 1073741823;
 __ZNSt3__114__split_bufferIPN4wasm5BreakERNS_9allocatorIS3_EEEC2EjjS6_(i5, i1, (HEAP32[i3 >> 2] | 0) - i4 >> 2, i7 + 8 | 0);
 i4 = i5 + 8 | 0;
 i3 = HEAP32[i4 >> 2] | 0;
 HEAP32[i3 >> 2] = HEAP32[i6 >> 2];
 HEAP32[i4 >> 2] = i3 + 4;
 __ZNSt3__16vectorIPN4wasm5BreakENS_9allocatorIS3_EEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i7, i5);
 __ZNSt3__114__split_bufferIPN4wasm5BreakERNS_9allocatorIS3_EEED2Ev(i5);
 STACKTOP = i8;
 return;
}

function __ZNSt3__16vectorIPN4wasm5BlockENS_9allocatorIS3_EEE21__push_back_slow_pathIRKS3_EEvOT_(i7, i6) {
 i7 = i7 | 0;
 i6 = i6 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i8 = 0;
 i8 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i5 = i8;
 i3 = i7 + 4 | 0;
 i4 = HEAP32[i7 >> 2] | 0;
 i2 = ((HEAP32[i3 >> 2] | 0) - i4 >> 2) + 1 | 0;
 if (i2 >>> 0 > 1073741823) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i7);
 i1 = (HEAP32[i7 + 8 >> 2] | 0) - i4 | 0;
 if (i1 >> 2 >>> 0 < 536870911) {
  i1 = i1 >> 1;
  i1 = i1 >>> 0 < i2 >>> 0 ? i2 : i1;
 } else i1 = 1073741823;
 __ZNSt3__114__split_bufferIPN4wasm5BlockERNS_9allocatorIS3_EEEC2EjjS6_(i5, i1, (HEAP32[i3 >> 2] | 0) - i4 >> 2, i7 + 8 | 0);
 i4 = i5 + 8 | 0;
 i3 = HEAP32[i4 >> 2] | 0;
 HEAP32[i3 >> 2] = HEAP32[i6 >> 2];
 HEAP32[i4 >> 2] = i3 + 4;
 __ZNSt3__16vectorIPN4wasm5BlockENS_9allocatorIS3_EEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i7, i5);
 __ZNSt3__114__split_bufferIPN4wasm5BlockERNS_9allocatorIS3_EEED2Ev(i5);
 STACKTOP = i8;
 return;
}

function __ZNSt3__16vectorINS_3mapIjN4wasm14SimplifyLocals12SinkableInfoENS_4lessIjEENS_9allocatorINS_4pairIKjS4_EEEEEENS7_ISC_EEE26__swap_out_circular_bufferERNS_14__split_bufferISC_RSD_EE(i6, i5) {
 i6 = i6 | 0;
 i5 = i5 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i7 = 0;
 i2 = HEAP32[i6 >> 2] | 0;
 i3 = i6 + 4 | 0;
 i4 = i5 + 4 | 0;
 i1 = HEAP32[i3 >> 2] | 0;
 while (1) {
  if ((i1 | 0) == (i2 | 0)) break;
  i7 = i1 + -12 | 0;
  __ZNSt3__16__treeINS_12__value_typeIjN4wasm14SimplifyLocals12SinkableInfoEEENS_19__map_value_compareIjS5_NS_4lessIjEELb1EEENS_9allocatorIS5_EEEC2EOSC_((HEAP32[i4 >> 2] | 0) + -12 | 0, i7);
  HEAP32[i4 >> 2] = (HEAP32[i4 >> 2] | 0) + -12;
  i1 = i7;
 }
 i7 = HEAP32[i6 >> 2] | 0;
 HEAP32[i6 >> 2] = HEAP32[i4 >> 2];
 HEAP32[i4 >> 2] = i7;
 i7 = i5 + 8 | 0;
 i2 = HEAP32[i3 >> 2] | 0;
 HEAP32[i3 >> 2] = HEAP32[i7 >> 2];
 HEAP32[i7 >> 2] = i2;
 i3 = i6 + 8 | 0;
 i7 = i5 + 12 | 0;
 i6 = HEAP32[i3 >> 2] | 0;
 HEAP32[i3 >> 2] = HEAP32[i7 >> 2];
 HEAP32[i7 >> 2] = i6;
 HEAP32[i5 >> 2] = HEAP32[i4 >> 2];
 return;
}

function __ZNSt3__16__treeINS_12__value_typeIN4wasm4NameEjEENS_19__map_value_compareIS3_S4_NS_4lessIS3_EELb1EEENS_9allocatorIS4_EEE20__node_insert_uniqueENS_21__tree_const_iteratorIS4_PNS_11__tree_nodeIS4_PvEEiEESG_(i5, i1, i3) {
 i5 = i5 | 0;
 i1 = i1 | 0;
 i3 = i3 | 0;
 var i2 = 0, i4 = 0, i6 = 0, i7 = 0;
 i6 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i2 = i6 + 8 | 0;
 i4 = i6 + 4 | 0;
 i7 = i6;
 HEAP32[i7 >> 2] = HEAP32[i1 >> 2];
 HEAP32[i2 >> 2] = HEAP32[i7 >> 2];
 i2 = __ZNSt3__16__treeINS_12__value_typeIN4wasm4NameEjEENS_19__map_value_compareIS3_S4_NS_4lessIS3_EELb1EEENS_9allocatorIS4_EEE12__find_equalIS4_EERPNS_16__tree_node_baseIPvEENS_21__tree_const_iteratorIS4_PNS_11__tree_nodeIS4_SE_EEiEESH_RKT_(i5, i2, i4, i3 + 16 | 0) | 0;
 i1 = HEAP32[i2 >> 2] | 0;
 if (!i1) {
  __ZNSt3__16__treeINS_12__value_typeIN4wasm4NameEjEENS_19__map_value_compareIS3_S4_NS_4lessIS3_EELb1EEENS_9allocatorIS4_EEE16__insert_node_atEPNS_16__tree_node_baseIPvEERSF_SF_(i5, HEAP32[i4 >> 2] | 0, i2, i3);
  i1 = i3;
 }
 STACKTOP = i6;
 return i1 | 0;
}

function __ZN4wasm14SimplifyLocals10visitBlockEPNS_5BlockE(i4, i3) {
 i4 = i4 | 0;
 i3 = i3 | 0;
 var i1 = 0, i2 = 0;
 i1 = i3 + 8 | 0;
 if (!(HEAP32[i1 >> 2] | 0)) i2 = 0; else {
  i2 = __ZNSt3__13mapIN4wasm4NameENS_6vectorINS1_14SimplifyLocals10BlockBreakENS_9allocatorIS5_EEEENS_4lessIS2_EENS6_INS_4pairIKS2_S8_EEEEEixERSC_(i4 + 52 | 0, i1) | 0;
  i2 = (HEAP32[i2 + 4 >> 2] | 0) != (HEAP32[i2 >> 2] | 0);
 }
 __ZN4wasm14SimplifyLocals19optimizeBlockReturnEPNS_5BlockE(i4, i3);
 if (HEAP32[i1 >> 2] | 0) __ZNSt3__16__treeIN4wasm4NameENS_4lessIS2_EENS_9allocatorIS2_EEE14__erase_uniqueIS2_EEjRKT_(i4 + 64 | 0, i1) | 0;
 if (i2) {
  __ZNSt3__16__treeINS_12__value_typeIjN4wasm14SimplifyLocals12SinkableInfoEEENS_19__map_value_compareIjS5_NS_4lessIjEELb1EEENS_9allocatorIS5_EEE5clearEv(i4 + 40 | 0);
  __ZNSt3__16__treeINS_12__value_typeIN4wasm4NameENS_6vectorINS2_14SimplifyLocals10BlockBreakENS_9allocatorIS6_EEEEEENS_19__map_value_compareIS3_SA_NS_4lessIS3_EELb1EEENS7_ISA_EEE14__erase_uniqueIS3_EEjRKT_(i4 + 52 | 0, i1) | 0;
 }
 return;
}

function __ZNSt3__16vectorIPN4wasm4PassENS_9allocatorIS3_EEE21__push_back_slow_pathIS3_EEvOT_(i7, i6) {
 i7 = i7 | 0;
 i6 = i6 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i8 = 0;
 i8 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i5 = i8;
 i3 = i7 + 4 | 0;
 i4 = HEAP32[i7 >> 2] | 0;
 i2 = ((HEAP32[i3 >> 2] | 0) - i4 >> 2) + 1 | 0;
 if (i2 >>> 0 > 1073741823) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i7);
 i1 = (HEAP32[i7 + 8 >> 2] | 0) - i4 | 0;
 if (i1 >> 2 >>> 0 < 536870911) {
  i1 = i1 >> 1;
  i1 = i1 >>> 0 < i2 >>> 0 ? i2 : i1;
 } else i1 = 1073741823;
 __ZNSt3__114__split_bufferIPN4wasm4PassERNS_9allocatorIS3_EEEC2EjjS6_(i5, i1, (HEAP32[i3 >> 2] | 0) - i4 >> 2, i7 + 8 | 0);
 i4 = i5 + 8 | 0;
 i3 = HEAP32[i4 >> 2] | 0;
 HEAP32[i3 >> 2] = HEAP32[i6 >> 2];
 HEAP32[i4 >> 2] = i3 + 4;
 __ZNSt3__16vectorIPN4wasm4PassENS_9allocatorIS3_EEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i7, i5);
 __ZNSt3__114__split_bufferIPN4wasm4PassERNS_9allocatorIS3_EEED2Ev(i5);
 STACKTOP = i8;
 return;
}

function __ZN4wasm6WalkerINS_6VacuumENS_7VisitorIS1_vEEE4walkERPNS_10ExpressionE(i8, i1) {
 i8 = i8 | 0;
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i9 = 0;
 i6 = i8 + 4 | 0;
 i7 = i8 + 8 | 0;
 if ((HEAP32[i7 >> 2] | 0) != (HEAP32[i6 >> 2] | 0)) ___assert_fail(25256, 25274, 268, 25295);
 __ZN4wasm6WalkerINS_6VacuumENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i8, 299, i1);
 i5 = i8 + -16 | 0;
 while (1) {
  i4 = HEAP32[i7 >> 2] | 0;
  i1 = i4;
  if ((i4 | 0) == (HEAP32[i6 >> 2] | 0)) {
   i1 = 12;
   break;
  }
  i2 = i1 + -8 | 0;
  i3 = HEAP32[i2 >> 2] | 0;
  i4 = HEAP32[i1 + -4 >> 2] | 0;
  while (1) {
   if ((i1 | 0) == (i2 | 0)) break;
   i9 = i1 + -8 | 0;
   HEAP32[i7 >> 2] = i9;
   i1 = i9;
  }
  if (!(HEAP32[i4 >> 2] | 0)) {
   i1 = 9;
   break;
  }
  FUNCTION_TABLE_vii[i3 & 511](i5, i4);
  i1 = HEAP32[i8 >> 2] | 0;
  if (!i1) continue;
  HEAP32[i4 >> 2] = i1;
  HEAP32[i8 >> 2] = 0;
 }
 if ((i1 | 0) == 9) ___assert_fail(25300, 25274, 272, 25295); else if ((i1 | 0) == 12) return;
}

function __ZNSt3__16vectorIN4wasm4NameENS_9allocatorIS2_EEE21__push_back_slow_pathIRKS2_EEvOT_(i7, i6) {
 i7 = i7 | 0;
 i6 = i6 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i8 = 0;
 i8 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i5 = i8;
 i3 = i7 + 4 | 0;
 i4 = HEAP32[i7 >> 2] | 0;
 i2 = ((HEAP32[i3 >> 2] | 0) - i4 >> 2) + 1 | 0;
 if (i2 >>> 0 > 1073741823) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i7);
 i1 = (HEAP32[i7 + 8 >> 2] | 0) - i4 | 0;
 if (i1 >> 2 >>> 0 < 536870911) {
  i1 = i1 >> 1;
  i1 = i1 >>> 0 < i2 >>> 0 ? i2 : i1;
 } else i1 = 1073741823;
 __ZNSt3__114__split_bufferIN4wasm4NameERNS_9allocatorIS2_EEEC2EjjS5_(i5, i1, (HEAP32[i3 >> 2] | 0) - i4 >> 2, i7 + 8 | 0);
 i4 = i5 + 8 | 0;
 i3 = HEAP32[i4 >> 2] | 0;
 HEAP32[i3 >> 2] = HEAP32[i6 >> 2];
 HEAP32[i4 >> 2] = i3 + 4;
 __ZNSt3__16vectorIN4wasm4NameENS_9allocatorIS2_EEE26__swap_out_circular_bufferERNS_14__split_bufferIS2_RS4_EE(i7, i5);
 __ZNSt3__114__split_bufferIN4wasm4NameERNS_9allocatorIS2_EEED2Ev(i5);
 STACKTOP = i8;
 return;
}

function __ZNKSt3__18time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE11do_get_dateES4_S4_RNS_8ios_baseERjP2tm(i6, i1, i2, i4, i3, i5) {
 i6 = i6 | 0;
 i1 = i1 | 0;
 i2 = i2 | 0;
 i4 = i4 | 0;
 i3 = i3 | 0;
 i5 = i5 | 0;
 var i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0;
 i7 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i8 = i7 + 12 | 0;
 i9 = i7 + 8 | 0;
 i11 = i7 + 4 | 0;
 i10 = i7;
 i14 = i6 + 8 | 0;
 i14 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i14 >> 2] | 0) + 20 >> 2] & 127](i14) | 0;
 HEAP32[i11 >> 2] = HEAP32[i1 >> 2];
 HEAP32[i10 >> 2] = HEAP32[i2 >> 2];
 i12 = HEAP8[i14 >> 0] | 0;
 i13 = (i12 & 1) == 0;
 i2 = i14 + 4 | 0;
 i1 = i13 ? i2 : HEAP32[i14 + 8 >> 2] | 0;
 i2 = i1 + ((i13 ? (i12 & 255) >>> 1 : HEAP32[i2 >> 2] | 0) << 2) | 0;
 HEAP32[i9 >> 2] = HEAP32[i11 >> 2];
 HEAP32[i8 >> 2] = HEAP32[i10 >> 2];
 i6 = __ZNKSt3__18time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE3getES4_S4_RNS_8ios_baseERjP2tmPKwSC_(i6, i9, i8, i4, i3, i5, i1, i2) | 0;
 STACKTOP = i7;
 return i6 | 0;
}

function __ZNSt3__16vectorIN4wasm4NameENS_9allocatorIS2_EEE21__push_back_slow_pathIS2_EEvOT_(i7, i6) {
 i7 = i7 | 0;
 i6 = i6 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i8 = 0;
 i8 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i5 = i8;
 i3 = i7 + 4 | 0;
 i4 = HEAP32[i7 >> 2] | 0;
 i2 = ((HEAP32[i3 >> 2] | 0) - i4 >> 2) + 1 | 0;
 if (i2 >>> 0 > 1073741823) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i7);
 i1 = (HEAP32[i7 + 8 >> 2] | 0) - i4 | 0;
 if (i1 >> 2 >>> 0 < 536870911) {
  i1 = i1 >> 1;
  i1 = i1 >>> 0 < i2 >>> 0 ? i2 : i1;
 } else i1 = 1073741823;
 __ZNSt3__114__split_bufferIN4wasm4NameERNS_9allocatorIS2_EEEC2EjjS5_(i5, i1, (HEAP32[i3 >> 2] | 0) - i4 >> 2, i7 + 8 | 0);
 i4 = i5 + 8 | 0;
 i3 = HEAP32[i4 >> 2] | 0;
 HEAP32[i3 >> 2] = HEAP32[i6 >> 2];
 HEAP32[i4 >> 2] = i3 + 4;
 __ZNSt3__16vectorIN4wasm4NameENS_9allocatorIS2_EEE26__swap_out_circular_bufferERNS_14__split_bufferIS2_RS4_EE(i7, i5);
 __ZNSt3__114__split_bufferIN4wasm4NameERNS_9allocatorIS2_EEED2Ev(i5);
 STACKTOP = i8;
 return;
}

function __ZN4wasm6Thread8mainLoopEPv(i1) {
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0;
 i8 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i7 = i8;
 i2 = i1 + 4 | 0;
 i3 = i1 + 88 | 0;
 i4 = i1 + 104 | 0;
 i5 = i1 + 80 | 0;
 i6 = i7 + 4 | 0;
 i1 = i1 + 32 | 0;
 while (1) {
  __ZNSt3__15mutex4lockEv(i2);
  if (!(HEAP32[i4 >> 2] | 0)) {
   if (HEAP8[i5 >> 0] | 0) break;
  } else {
   do {} while (!(__ZNKSt3__18functionIFN4wasm15ThreadWorkStateEvEEclEv(i3) | 0));
   __ZNSt3__18functionIFN4wasm15ThreadWorkStateEvEEaSEDn(i3, 0) | 0;
  }
  __ZNSt3__15mutex6unlockEv(i2);
  __ZN4wasm10ThreadPool19notifyThreadIsReadyEv(__ZN4wasm10ThreadPool3getEv() | 0);
  HEAP32[i7 >> 2] = i2;
  HEAP8[i6 >> 0] = 1;
  __ZNSt3__15mutex4lockEv(i2);
  if ((HEAP8[i5 >> 0] | 0) == 0 ? (HEAP32[i4 >> 2] | 0) == 0 : 0) __ZNSt3__118condition_variable4waitERNS_11unique_lockINS_5mutexEEE(i1, i7);
  if (HEAP8[i6 >> 0] | 0) __ZNSt3__15mutex6unlockEv(HEAP32[i7 >> 2] | 0);
 }
 __ZNSt3__15mutex6unlockEv(i2);
 STACKTOP = i8;
 return;
}

function __ZNSt3__16vectorIPN4wasm2IfENS_9allocatorIS3_EEE21__push_back_slow_pathIRKS3_EEvOT_(i7, i6) {
 i7 = i7 | 0;
 i6 = i6 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i8 = 0;
 i8 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i5 = i8;
 i3 = i7 + 4 | 0;
 i4 = HEAP32[i7 >> 2] | 0;
 i2 = ((HEAP32[i3 >> 2] | 0) - i4 >> 2) + 1 | 0;
 if (i2 >>> 0 > 1073741823) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i7);
 i1 = (HEAP32[i7 + 8 >> 2] | 0) - i4 | 0;
 if (i1 >> 2 >>> 0 < 536870911) {
  i1 = i1 >> 1;
  i1 = i1 >>> 0 < i2 >>> 0 ? i2 : i1;
 } else i1 = 1073741823;
 __ZNSt3__114__split_bufferIPN4wasm2IfERNS_9allocatorIS3_EEEC2EjjS6_(i5, i1, (HEAP32[i3 >> 2] | 0) - i4 >> 2, i7 + 8 | 0);
 i4 = i5 + 8 | 0;
 i3 = HEAP32[i4 >> 2] | 0;
 HEAP32[i3 >> 2] = HEAP32[i6 >> 2];
 HEAP32[i4 >> 2] = i3 + 4;
 __ZNSt3__16vectorIPN4wasm2IfENS_9allocatorIS3_EEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i7, i5);
 __ZNSt3__114__split_bufferIPN4wasm2IfERNS_9allocatorIS3_EEED2Ev(i5);
 STACKTOP = i8;
 return;
}

function __ZN4wasm14SimplifyLocalsD2Ev(i1) {
 i1 = i1 | 0;
 HEAP32[i1 >> 2] = 4528;
 __ZNSt3__113__vector_baseIPN4wasm2IfENS_9allocatorIS3_EEED2Ev(i1 + 116 | 0);
 __ZNSt3__113__vector_baseIPN4wasm5BlockENS_9allocatorIS3_EEED2Ev(i1 + 104 | 0);
 __ZNSt3__113__vector_baseIPN4wasm10ExpressionENS_9allocatorIS3_EEED2Ev(i1 + 92 | 0);
 __ZNSt3__113__vector_baseINS_3mapIjN4wasm14SimplifyLocals12SinkableInfoENS_4lessIjEENS_9allocatorINS_4pairIKjS4_EEEEEENS7_ISC_EEED2Ev(i1 + 76 | 0);
 __ZNSt3__16__treeIN4wasm4NameENS_4lessIS2_EENS_9allocatorIS2_EEED2Ev(i1 + 64 | 0);
 __ZNSt3__16__treeINS_12__value_typeIN4wasm4NameENS_6vectorINS2_14SimplifyLocals10BlockBreakENS_9allocatorIS6_EEEEEENS_19__map_value_compareIS3_SA_NS_4lessIS3_EELb1EEENS7_ISA_EEED2Ev(i1 + 52 | 0);
 __ZNSt3__16__treeINS_12__value_typeIjN4wasm14SimplifyLocals12SinkableInfoEEENS_19__map_value_compareIjS5_NS_4lessIjEELb1EEENS_9allocatorIS5_EEED2Ev(i1 + 40 | 0);
 __ZN4wasm10WalkerPassINS_21LinearExecutionWalkerINS_14SimplifyLocalsENS_7VisitorIS2_vEEEEED2Ev(i1);
 return;
}

function __ZNSt3__16__treeINS_12__value_typeIN4wasm4NameENS_6vectorINS2_14SimplifyLocals10BlockBreakENS_9allocatorIS6_EEEEEENS_19__map_value_compareIS3_SA_NS_4lessIS3_EELb1EEENS7_ISA_EEE14__erase_uniqueIS3_EEjRKT_(i4, i1) {
 i4 = i4 | 0;
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i5 = 0;
 i5 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i2 = i5 + 4 | 0;
 i3 = i5;
 i1 = __ZNSt3__16__treeINS_12__value_typeIN4wasm4NameENS_6vectorINS2_14SimplifyLocals10BlockBreakENS_9allocatorIS6_EEEEEENS_19__map_value_compareIS3_SA_NS_4lessIS3_EELb1EEENS7_ISA_EEE4findIS3_EENS_15__tree_iteratorISA_PNS_11__tree_nodeISA_PvEEiEERKT_(i4, i1) | 0;
 if ((i1 | 0) == (i4 + 4 | 0)) i1 = 0; else {
  HEAP32[i3 >> 2] = i1;
  HEAP32[i2 >> 2] = HEAP32[i3 >> 2];
  __ZNSt3__16__treeINS_12__value_typeIN4wasm4NameENS_6vectorINS2_14SimplifyLocals10BlockBreakENS_9allocatorIS6_EEEEEENS_19__map_value_compareIS3_SA_NS_4lessIS3_EELb1EEENS7_ISA_EEE5eraseENS_21__tree_const_iteratorISA_PNS_11__tree_nodeISA_PvEEiEE(i4, i2) | 0;
  i1 = 1;
 }
 STACKTOP = i5;
 return i1 | 0;
}

function __ZN4wasm6WalkerINS_14EffectAnalyzerENS_7VisitorIS1_vEEE4walkERPNS_10ExpressionE(i7, i1) {
 i7 = i7 | 0;
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i8 = 0;
 i5 = i7 + 4 | 0;
 i6 = i7 + 8 | 0;
 if ((HEAP32[i6 >> 2] | 0) != (HEAP32[i5 >> 2] | 0)) ___assert_fail(25256, 25274, 268, 25295);
 __ZN4wasm6WalkerINS_14EffectAnalyzerENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i7, 173, i1);
 while (1) {
  i4 = HEAP32[i6 >> 2] | 0;
  i1 = i4;
  if ((i4 | 0) == (HEAP32[i5 >> 2] | 0)) {
   i1 = 12;
   break;
  }
  i3 = i1 + -8 | 0;
  i2 = HEAP32[i3 >> 2] | 0;
  i4 = HEAP32[i1 + -4 >> 2] | 0;
  while (1) {
   if ((i1 | 0) == (i3 | 0)) break;
   i8 = i1 + -8 | 0;
   HEAP32[i6 >> 2] = i8;
   i1 = i8;
  }
  if (!(HEAP32[i4 >> 2] | 0)) {
   i1 = 9;
   break;
  }
  FUNCTION_TABLE_vii[i2 & 511](i7, i4);
  i1 = HEAP32[i7 >> 2] | 0;
  if (!i1) continue;
  HEAP32[i4 >> 2] = i1;
  HEAP32[i7 >> 2] = 0;
 }
 if ((i1 | 0) == 9) ___assert_fail(25300, 25274, 272, 25295); else if ((i1 | 0) == 12) return;
}

function __ZN4wasm22SExpressionWasmBuilder6makeIfERNS_7ElementE(i4, i3) {
 i4 = i4 | 0;
 i3 = i3 | 0;
 var i1 = 0, i2 = 0, i5 = 0, i6 = 0;
 i5 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i2 = i5;
 i1 = __ZN10MixedArena5allocIN4wasm2IfEEEPT_v(HEAP32[i4 + 4 >> 2] | 0) | 0;
 i6 = __ZN4wasm7Element4listEv(i3) | 0;
 i6 = __ZN4wasm22SExpressionWasmBuilder15parseExpressionERNS_7ElementE(i4, HEAP32[(HEAP32[i6 >> 2] | 0) + 4 >> 2] | 0) | 0;
 HEAP32[i1 + 8 >> 2] = i6;
 HEAP32[i2 >> 2] = i4;
 i4 = __ZN4wasm7Element4listEv(i3) | 0;
 i4 = __ZZN4wasm22SExpressionWasmBuilder6makeIfERNS_7ElementEENKUlPKcS2_E_clES4_S2_(i2, 15175, HEAP32[(HEAP32[i4 >> 2] | 0) + 8 >> 2] | 0) | 0;
 HEAP32[i1 + 12 >> 2] = i4;
 if ((__ZN4wasm7Element4sizeEv(i3) | 0) == 4) {
  i6 = __ZN4wasm7Element4listEv(i3) | 0;
  i6 = __ZZN4wasm22SExpressionWasmBuilder6makeIfERNS_7ElementEENKUlPKcS2_E_clES4_S2_(i2, 15183, HEAP32[(HEAP32[i6 >> 2] | 0) + 12 >> 2] | 0) | 0;
  HEAP32[i1 + 16 >> 2] = i6;
  __ZN4wasm2If8finalizeEv(i1);
 }
 STACKTOP = i5;
 return i1 | 0;
}

function __ZNSt3__16__treeINS_12__value_typeIjN4wasm14SimplifyLocals12SinkableInfoEEENS_19__map_value_compareIjS5_NS_4lessIjEELb1EEENS_9allocatorIS5_EEE12__find_equalIS5_EERPNS_16__tree_node_baseIPvEESI_RKT_(i1, i5, i3) {
 i1 = i1 | 0;
 i5 = i5 | 0;
 i3 = i3 | 0;
 var i2 = 0, i4 = 0;
 i1 = i1 + 4 | 0;
 i2 = HEAP32[i1 >> 2] | 0;
 do if (i2) {
  i4 = HEAP32[i3 >> 2] | 0;
  while (1) {
   i1 = HEAP32[i2 + 16 >> 2] | 0;
   if (i4 >>> 0 < i1 >>> 0) {
    i1 = HEAP32[i2 >> 2] | 0;
    if (!i1) {
     i1 = i2;
     i3 = 5;
     break;
    }
   } else {
    if (i1 >>> 0 >= i4 >>> 0) {
     i1 = i2;
     i3 = 10;
     break;
    }
    i1 = i2 + 4 | 0;
    i3 = HEAP32[i1 >> 2] | 0;
    if (!i3) {
     i3 = 9;
     break;
    } else i1 = i3;
   }
   i2 = i1;
  }
  if ((i3 | 0) == 5) {
   HEAP32[i5 >> 2] = i2;
   break;
  } else if ((i3 | 0) == 9) {
   HEAP32[i5 >> 2] = i2;
   break;
  } else if ((i3 | 0) == 10) {
   HEAP32[i5 >> 2] = i1;
   i1 = i5;
   break;
  }
 } else HEAP32[i5 >> 2] = i1; while (0);
 return i1 | 0;
}

function __ZNK4wasm7Literal3negEv(i3, i4) {
 i3 = i3 | 0;
 i4 = i4 | 0;
 var i1 = 0, i2 = 0, i5 = 0, i6 = 0;
 i5 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i1 = i5 + 16 | 0;
 i2 = i5;
 switch (HEAP32[i4 >> 2] | 0) {
 case 1:
  {
   i4 = HEAP32[i4 + 8 >> 2] ^ -2147483648;
   HEAP32[i3 >> 2] = 1;
   HEAP32[i3 + 8 >> 2] = i4;
   break;
  }
 case 2:
  {
   i2 = i4 + 8 | 0;
   i1 = HEAP32[i2 >> 2] | 0;
   i2 = HEAP32[i2 + 4 >> 2] ^ -2147483648;
   HEAP32[i3 >> 2] = 2;
   i4 = i3 + 8 | 0;
   HEAP32[i4 >> 2] = i1;
   HEAP32[i4 + 4 >> 2] = i2;
   break;
  }
 case 3:
  {
   i4 = HEAP32[i4 + 8 >> 2] ^ -2147483648;
   HEAP32[i1 >> 2] = 1;
   HEAP32[i1 + 8 >> 2] = i4;
   __ZN4wasm7Literal9castToF32Ev(i3, i1);
   break;
  }
 case 4:
  {
   i1 = i4 + 8 | 0;
   i6 = HEAP32[i1 >> 2] | 0;
   i1 = HEAP32[i1 + 4 >> 2] ^ -2147483648;
   HEAP32[i2 >> 2] = 2;
   i4 = i2 + 8 | 0;
   HEAP32[i4 >> 2] = i6;
   HEAP32[i4 + 4 >> 2] = i1;
   __ZN4wasm7Literal9castToF64Ev(i3, i2);
   break;
  }
 default:
  {}
 }
 STACKTOP = i5;
 return;
}

function __ZNSt3__112__hash_tableIPKcN6cashew7IString11CStringHashENS4_12CStringEqualENS_9allocatorIS2_EEE4findIS2_EENS_15__hash_iteratorIPNS_11__hash_nodeIS2_PvEEEERKT_(i4, i1) {
 i4 = i4 | 0;
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0;
 i8 = HEAP32[i1 >> 2] | 0;
 i1 = i8;
 i3 = 5381;
 while (1) {
  i2 = HEAP8[i1 >> 0] | 0;
  if (!(i2 << 24 >> 24)) break;
  i1 = i1 + 1 | 0;
  i3 = i2 << 24 >> 24 ^ i3 * 33;
 }
 i7 = HEAP32[i4 + 4 >> 2] | 0;
 L5 : do if (i7) {
  i5 = i7 + -1 | 0;
  i6 = (i5 & i7 | 0) == 0;
  if (i6) i3 = i5 & i3; else i3 = (i3 >>> 0) % (i7 >>> 0) | 0;
  i1 = HEAP32[(HEAP32[i4 >> 2] | 0) + (i3 << 2) >> 2] | 0;
  if (i1) do {
   i1 = HEAP32[i1 >> 2] | 0;
   if (!i1) {
    i1 = 0;
    break L5;
   }
   i2 = HEAP32[i1 + 4 >> 2] | 0;
   if (i6) i2 = i2 & i5; else i2 = (i2 >>> 0) % (i7 >>> 0) | 0;
   if ((i2 | 0) != (i3 | 0)) {
    i1 = 0;
    break L5;
   }
  } while ((_strcmp(HEAP32[i1 + 8 >> 2] | 0, i8) | 0) != 0); else i1 = 0;
 } else i1 = 0; while (0);
 return i1 | 0;
}

function __ZN4wasm6WalkerINS_11BreakSeekerENS_7VisitorIS1_vEEE4walkERPNS_10ExpressionE(i7, i1) {
 i7 = i7 | 0;
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i8 = 0;
 i5 = i7 + 4 | 0;
 i6 = i7 + 8 | 0;
 if ((HEAP32[i6 >> 2] | 0) != (HEAP32[i5 >> 2] | 0)) ___assert_fail(25256, 25274, 268, 25295);
 __ZN4wasm6WalkerINS_11BreakSeekerENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i7, 59, i1);
 while (1) {
  i4 = HEAP32[i6 >> 2] | 0;
  i1 = i4;
  if ((i4 | 0) == (HEAP32[i5 >> 2] | 0)) {
   i1 = 12;
   break;
  }
  i3 = i1 + -8 | 0;
  i2 = HEAP32[i3 >> 2] | 0;
  i4 = HEAP32[i1 + -4 >> 2] | 0;
  while (1) {
   if ((i1 | 0) == (i3 | 0)) break;
   i8 = i1 + -8 | 0;
   HEAP32[i6 >> 2] = i8;
   i1 = i8;
  }
  if (!(HEAP32[i4 >> 2] | 0)) {
   i1 = 9;
   break;
  }
  FUNCTION_TABLE_vii[i2 & 511](i7, i4);
  i1 = HEAP32[i7 >> 2] | 0;
  if (!i1) continue;
  HEAP32[i4 >> 2] = i1;
  HEAP32[i7 >> 2] = 0;
 }
 if ((i1 | 0) == 9) ___assert_fail(25300, 25274, 272, 25295); else if ((i1 | 0) == 12) return;
}

function __ZNK4wasm7Literal3absEv(i3, i4) {
 i3 = i3 | 0;
 i4 = i4 | 0;
 var i1 = 0, i2 = 0, i5 = 0, i6 = 0;
 i5 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i1 = i5 + 16 | 0;
 i2 = i5;
 switch (HEAP32[i4 >> 2] | 0) {
 case 1:
  {
   i4 = HEAP32[i4 + 8 >> 2] & 2147483647;
   HEAP32[i3 >> 2] = 1;
   HEAP32[i3 + 8 >> 2] = i4;
   break;
  }
 case 2:
  {
   i2 = i4 + 8 | 0;
   i1 = HEAP32[i2 >> 2] | 0;
   i2 = HEAP32[i2 + 4 >> 2] & 2147483647;
   HEAP32[i3 >> 2] = 2;
   i4 = i3 + 8 | 0;
   HEAP32[i4 >> 2] = i1;
   HEAP32[i4 + 4 >> 2] = i2;
   break;
  }
 case 3:
  {
   i4 = HEAP32[i4 + 8 >> 2] & 2147483647;
   HEAP32[i1 >> 2] = 1;
   HEAP32[i1 + 8 >> 2] = i4;
   __ZN4wasm7Literal9castToF32Ev(i3, i1);
   break;
  }
 case 4:
  {
   i1 = i4 + 8 | 0;
   i6 = HEAP32[i1 >> 2] | 0;
   i1 = HEAP32[i1 + 4 >> 2] & 2147483647;
   HEAP32[i2 >> 2] = 2;
   i4 = i2 + 8 | 0;
   HEAP32[i4 >> 2] = i6;
   HEAP32[i4 + 4 >> 2] = i1;
   __ZN4wasm7Literal9castToF64Ev(i3, i2);
   break;
  }
 default:
  {}
 }
 STACKTOP = i5;
 return;
}

function __ZN4wasm14SimplifyLocals17doNoteIfElseFalseEPS0_PPNS_10ExpressionE(i4, i2) {
 i4 = i4 | 0;
 i2 = i2 | 0;
 var i1 = 0, i3 = 0, i5 = 0;
 i1 = __ZN4wasm10Expression4castINS_2IfEEEPT_v(HEAP32[i2 >> 2] | 0) | 0;
 if (!(HEAP32[i1 + 16 >> 2] | 0)) ___assert_fail(22936, 22896, 151, 22949);
 i3 = i4 + 80 | 0;
 __ZN4wasm14SimplifyLocals16optimizeIfReturnEPNS_2IfEPPNS_10ExpressionERNSt3__13mapIjNS0_12SinkableInfoENS6_4lessIjEENS6_9allocatorINS6_4pairIKjS8_EEEEEE(i4, i1, i2, (HEAP32[i3 >> 2] | 0) + -12 | 0);
 i1 = HEAP32[i3 >> 2] | 0;
 i2 = i1 + -12 | 0;
 while (1) {
  if ((i1 | 0) == (i2 | 0)) break;
  i5 = i1 + -12 | 0;
  HEAP32[i3 >> 2] = i5;
  __ZNSt3__16__treeINS_12__value_typeIjN4wasm14SimplifyLocals12SinkableInfoEEENS_19__map_value_compareIjS5_NS_4lessIjEELb1EEENS_9allocatorIS5_EEED2Ev(i5);
  i1 = HEAP32[i3 >> 2] | 0;
 }
 __ZNSt3__16__treeINS_12__value_typeIjN4wasm14SimplifyLocals12SinkableInfoEEENS_19__map_value_compareIjS5_NS_4lessIjEELb1EEENS_9allocatorIS5_EEE5clearEv(i4 + 40 | 0);
 return;
}

function __ZNKSt3__18time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE11do_get_dateES4_S4_RNS_8ios_baseERjP2tm(i6, i1, i2, i4, i3, i5) {
 i6 = i6 | 0;
 i1 = i1 | 0;
 i2 = i2 | 0;
 i4 = i4 | 0;
 i3 = i3 | 0;
 i5 = i5 | 0;
 var i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0;
 i7 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i8 = i7 + 12 | 0;
 i9 = i7 + 8 | 0;
 i11 = i7 + 4 | 0;
 i10 = i7;
 i12 = i6 + 8 | 0;
 i12 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i12 >> 2] | 0) + 20 >> 2] & 127](i12) | 0;
 HEAP32[i11 >> 2] = HEAP32[i1 >> 2];
 HEAP32[i10 >> 2] = HEAP32[i2 >> 2];
 i2 = HEAP8[i12 >> 0] | 0;
 i13 = (i2 & 1) == 0;
 i1 = i13 ? i12 + 1 | 0 : HEAP32[i12 + 8 >> 2] | 0;
 i2 = i1 + (i13 ? (i2 & 255) >>> 1 : HEAP32[i12 + 4 >> 2] | 0) | 0;
 HEAP32[i9 >> 2] = HEAP32[i11 >> 2];
 HEAP32[i8 >> 2] = HEAP32[i10 >> 2];
 i6 = __ZNKSt3__18time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE3getES4_S4_RNS_8ios_baseERjP2tmPKcSC_(i6, i9, i8, i4, i3, i5, i1, i2) | 0;
 STACKTOP = i7;
 return i6 | 0;
}

function __ZNSt3__13mapIN4wasm4NameENS_6vectorINS1_14SimplifyLocals10BlockBreakENS_9allocatorIS5_EEEENS_4lessIS2_EENS6_INS_4pairIKS2_S8_EEEEE16__find_equal_keyERPNS_16__tree_node_baseIPvEERSC_(i1, i5, i4) {
 i1 = i1 | 0;
 i5 = i5 | 0;
 i4 = i4 | 0;
 var i2 = 0, i3 = 0;
 i1 = i1 + 4 | 0;
 i2 = HEAP32[i1 >> 2] | 0;
 do if (i2) {
  while (1) {
   i1 = i2 + 16 | 0;
   if (__ZNK6cashew7IStringltERKS0_(i4, i1) | 0) {
    i1 = HEAP32[i2 >> 2] | 0;
    if (!i1) {
     i1 = i2;
     i3 = 5;
     break;
    }
   } else {
    if (!(__ZNK6cashew7IStringltERKS0_(i1, i4) | 0)) {
     i1 = i2;
     i3 = 10;
     break;
    }
    i1 = i2 + 4 | 0;
    i3 = HEAP32[i1 >> 2] | 0;
    if (!i3) {
     i3 = 9;
     break;
    } else i1 = i3;
   }
   i2 = i1;
  }
  if ((i3 | 0) == 5) {
   HEAP32[i5 >> 2] = i2;
   break;
  } else if ((i3 | 0) == 9) {
   HEAP32[i5 >> 2] = i2;
   break;
  } else if ((i3 | 0) == 10) {
   HEAP32[i5 >> 2] = i1;
   i1 = i5;
   break;
  }
 } else HEAP32[i5 >> 2] = i1; while (0);
 return i1 | 0;
}

function __ZN4wasm14SimplifyLocals13visitGetLocalEPNS_8GetLocalE(i6, i5) {
 i6 = i6 | 0;
 i5 = i5 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i7 = 0, i8 = 0;
 i7 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i1 = i7 + 4 | 0;
 i2 = i7;
 i3 = i6 + 40 | 0;
 i4 = __ZNSt3__16__treeINS_12__value_typeIjN4wasm14SimplifyLocals12SinkableInfoEEENS_19__map_value_compareIjS5_NS_4lessIjEELb1EEENS_9allocatorIS5_EEE4findIjEENS_15__tree_iteratorIS5_PNS_11__tree_nodeIS5_PvEEiEERKT_(i3, i5 + 8 | 0) | 0;
 if ((i4 | 0) != (i6 + 44 | 0)) {
  i8 = HEAP32[i4 + 20 >> 2] | 0;
  HEAP32[i6 + 16 >> 2] = HEAP32[i8 >> 2];
  HEAP32[i8 >> 2] = i5;
  HEAP32[i5 >> 2] = 19;
  HEAP32[i5 + 4 >> 2] = 0;
  HEAP32[i2 >> 2] = i4;
  HEAP32[i1 >> 2] = HEAP32[i2 >> 2];
  __ZNSt3__16__treeINS_12__value_typeIjN4wasm14SimplifyLocals12SinkableInfoEEENS_19__map_value_compareIjS5_NS_4lessIjEELb1EEENS_9allocatorIS5_EEE5eraseENS_21__tree_const_iteratorIS5_PNS_11__tree_nodeIS5_PvEEiEE(i3, i1) | 0;
  HEAP8[i6 + 88 >> 0] = 1;
 }
 STACKTOP = i7;
 return;
}

function __ZNSt3__16__treeINS_12__value_typeIN4wasm4NameEjEENS_19__map_value_compareIS3_S4_NS_4lessIS3_EELb1EEENS_9allocatorIS4_EEE12__find_equalIS4_EERPNS_16__tree_node_baseIPvEESH_RKT_(i1, i5, i4) {
 i1 = i1 | 0;
 i5 = i5 | 0;
 i4 = i4 | 0;
 var i2 = 0, i3 = 0;
 i1 = i1 + 4 | 0;
 i2 = HEAP32[i1 >> 2] | 0;
 do if (i2) {
  while (1) {
   i1 = i2 + 16 | 0;
   if (__ZNK6cashew7IStringltERKS0_(i4, i1) | 0) {
    i1 = HEAP32[i2 >> 2] | 0;
    if (!i1) {
     i1 = i2;
     i3 = 5;
     break;
    }
   } else {
    if (!(__ZNK6cashew7IStringltERKS0_(i1, i4) | 0)) {
     i1 = i2;
     i3 = 10;
     break;
    }
    i1 = i2 + 4 | 0;
    i3 = HEAP32[i1 >> 2] | 0;
    if (!i3) {
     i3 = 9;
     break;
    } else i1 = i3;
   }
   i2 = i1;
  }
  if ((i3 | 0) == 5) {
   HEAP32[i5 >> 2] = i2;
   break;
  } else if ((i3 | 0) == 9) {
   HEAP32[i5 >> 2] = i2;
   break;
  } else if ((i3 | 0) == 10) {
   HEAP32[i5 >> 2] = i1;
   i1 = i5;
   break;
  }
 } else HEAP32[i5 >> 2] = i1; while (0);
 return i1 | 0;
}

function __ZNSt3__16__treeINS_12__value_typeINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEN4wasm12PassRegistry8PassInfoEEENS_19__map_value_compareIS7_SB_NS_4lessIS7_EELb1EEENS5_ISB_EEE13__lower_boundIS7_EENS_15__tree_iteratorISB_PNS_11__tree_nodeISB_PvEEiEERKT_SN_SN_(i3, i4, i2, i1) {
 i3 = i3 | 0;
 i4 = i4 | 0;
 i2 = i2 | 0;
 i1 = i1 | 0;
 var i5 = 0, i6 = 0, i7 = 0;
 i5 = HEAP8[i4 >> 0] | 0;
 i3 = (i5 & 1) == 0;
 i5 = i3 ? (i5 & 255) >>> 1 : HEAP32[i4 + 4 >> 2] | 0;
 i3 = i3 ? i4 + 1 | 0 : HEAP32[i4 + 8 >> 2] | 0;
 L1 : while (1) {
  while (1) {
   if (!i2) break L1;
   i4 = i2 + 16 | 0;
   i6 = HEAP8[i4 >> 0] | 0;
   i7 = (i6 & 1) == 0;
   i6 = i7 ? (i6 & 255) >>> 1 : HEAP32[i2 + 20 >> 2] | 0;
   i4 = _memcmp(i7 ? i4 + 1 | 0 : HEAP32[i2 + 24 >> 2] | 0, i3, i5 >>> 0 < i6 >>> 0 ? i5 : i6) | 0;
   if ((((i4 | 0) == 0 ? (i6 >>> 0 < i5 >>> 0 ? -2147483648 : 0) : i4) | 0) >= 0) break;
   i2 = HEAP32[i2 + 4 >> 2] | 0;
  }
  i1 = i2;
  i2 = HEAP32[i2 >> 2] | 0;
 }
 return i1 | 0;
}

function __ZN4wasm7Builder9makeUnaryENS_7UnaryOpEPNS_10ExpressionENS_8WasmTypeE(i1, i2, i4, i3) {
 i1 = i1 | 0;
 i2 = i2 | 0;
 i4 = i4 | 0;
 i3 = i3 | 0;
 i1 = __ZN10MixedArena5allocIN4wasm5UnaryEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 HEAP32[i1 + 8 >> 2] = i2;
 HEAP32[i1 + 12 >> 2] = i4;
 L1 : do if (!i3) switch (i2 | 0) {
 case 9:
 case 8:
 case 7:
 case 6:
 case 5:
 case 4:
 case 3:
 case 2:
 case 1:
 case 0:
  {
   HEAP32[i1 + 4 >> 2] = HEAP32[i4 + 4 >> 2];
   break L1;
  }
 case 10:
  {
   HEAP32[i1 + 4 >> 2] = 1;
   break L1;
  }
 case 12:
 case 11:
  {
   HEAP32[i1 + 4 >> 2] = 2;
   break L1;
  }
 case 13:
  {
   HEAP32[i1 + 4 >> 2] = 1;
   break L1;
  }
 case 23:
  {
   HEAP32[i1 + 4 >> 2] = 4;
   break L1;
  }
 case 24:
  {
   HEAP32[i1 + 4 >> 2] = 3;
   break L1;
  }
 case 25:
 case 22:
 case 21:
 case 20:
 case 19:
 case 18:
 case 17:
 case 16:
 case 15:
 case 14:
  {
   _abort();
   break;
  }
 default:
  _abort();
 } else HEAP32[i1 + 4 >> 2] = i3; while (0);
 return i1 | 0;
}

function __ZNSt3__16vectorIPcNS_9allocatorIS1_EEE21__push_back_slow_pathIS1_EEvOT_(i7, i6) {
 i7 = i7 | 0;
 i6 = i6 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i8 = 0;
 i8 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i5 = i8;
 i3 = i7 + 4 | 0;
 i4 = HEAP32[i7 >> 2] | 0;
 i2 = ((HEAP32[i3 >> 2] | 0) - i4 >> 2) + 1 | 0;
 if (i2 >>> 0 > 1073741823) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i7);
 i1 = (HEAP32[i7 + 8 >> 2] | 0) - i4 | 0;
 if (i1 >> 2 >>> 0 < 536870911) {
  i1 = i1 >> 1;
  i1 = i1 >>> 0 < i2 >>> 0 ? i2 : i1;
 } else i1 = 1073741823;
 __ZNSt3__114__split_bufferIPcRNS_9allocatorIS1_EEEC2EjjS4_(i5, i1, (HEAP32[i3 >> 2] | 0) - i4 >> 2, i7 + 8 | 0);
 i4 = i5 + 8 | 0;
 i3 = HEAP32[i4 >> 2] | 0;
 HEAP32[i3 >> 2] = HEAP32[i6 >> 2];
 HEAP32[i4 >> 2] = i3 + 4;
 __ZNSt3__16vectorIPcNS_9allocatorIS1_EEE26__swap_out_circular_bufferERNS_14__split_bufferIS1_RS3_EE(i7, i5);
 __ZNSt3__114__split_bufferIPcRNS_9allocatorIS1_EEED2Ev(i5);
 STACKTOP = i8;
 return;
}

function __ZNKSt3__18time_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_putES4_RNS_8ios_baseEcPK2tmcc(i6, i7, i1, i2, i5, i3, i4) {
 i6 = i6 | 0;
 i7 = i7 | 0;
 i1 = i1 | 0;
 i2 = i2 | 0;
 i5 = i5 | 0;
 i3 = i3 | 0;
 i4 = i4 | 0;
 var i8 = 0;
 i8 = STACKTOP;
 STACKTOP = STACKTOP + 112 | 0;
 i1 = i8 + 4 | 0;
 i2 = i8;
 HEAP32[i2 >> 2] = i1 + 100;
 __ZNKSt3__110__time_put8__do_putEPcRS1_PK2tmcc(i6 + 8 | 0, i1, i2, i5, i3, i4);
 i6 = HEAP32[i2 >> 2] | 0;
 i5 = i1;
 i1 = HEAP32[i7 >> 2] | 0;
 while (1) {
  if ((i5 | 0) == (i6 | 0)) break;
  i3 = HEAP8[i5 >> 0] | 0;
  do if (i1) {
   i4 = i1 + 24 | 0;
   i2 = HEAP32[i4 >> 2] | 0;
   if ((i2 | 0) == (HEAP32[i1 + 28 >> 2] | 0)) {
    i7 = (FUNCTION_TABLE_iii[HEAP32[(HEAP32[i1 >> 2] | 0) + 52 >> 2] & 63](i1, i3 & 255) | 0) == -1;
    i1 = i7 ? 0 : i1;
    break;
   } else {
    HEAP32[i4 >> 2] = i2 + 1;
    HEAP8[i2 >> 0] = i3;
    break;
   }
  } else i1 = 0; while (0);
  i5 = i5 + 1 | 0;
 }
 STACKTOP = i8;
 return i1 | 0;
}

function __ZNSt3__118__insertion_sort_3IRZN4wasm13ReorderLocals13visitFunctionEPNS1_8FunctionEEUljjE_PjEEvT0_S8_T_(i5, i7, i4) {
 i5 = i5 | 0;
 i7 = i7 | 0;
 i4 = i4 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i6 = 0, i8 = 0;
 i1 = i5 + 8 | 0;
 __ZNSt3__17__sort3IRZN4wasm13ReorderLocals13visitFunctionEPNS1_8FunctionEEUljjE_PjEEjT0_S8_S8_T_(i5, i5 + 4 | 0, i1, i4) | 0;
 i6 = i5 + 12 | 0;
 while (1) {
  if ((i6 | 0) == (i7 | 0)) break;
  if (__ZZN4wasm13ReorderLocals13visitFunctionEPNS_8FunctionEENKUljjE_clEjj(i4, HEAP32[i6 >> 2] | 0, HEAP32[i1 >> 2] | 0) | 0) {
   i3 = HEAP32[i6 >> 2] | 0;
   i2 = i6;
   while (1) {
    HEAP32[i2 >> 2] = HEAP32[i1 >> 2];
    if ((i1 | 0) == (i5 | 0)) {
     i1 = i5;
     break;
    }
    i2 = i1 + -4 | 0;
    if (__ZZN4wasm13ReorderLocals13visitFunctionEPNS_8FunctionEENKUljjE_clEjj(i4, i3, HEAP32[i2 >> 2] | 0) | 0) {
     i8 = i1;
     i1 = i2;
     i2 = i8;
    } else break;
   }
   HEAP32[i1 >> 2] = i3;
  }
  i1 = i6;
  i6 = i6 + 4 | 0;
 }
 return;
}

function ___shgetc(i6) {
 i6 = i6 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i7 = 0;
 i2 = i6 + 104 | 0;
 i5 = HEAP32[i2 >> 2] | 0;
 if ((i5 | 0) != 0 ? (HEAP32[i6 + 108 >> 2] | 0) >= (i5 | 0) : 0) i7 = 4; else {
  i1 = ___uflow(i6) | 0;
  if ((i1 | 0) >= 0) {
   i2 = HEAP32[i2 >> 2] | 0;
   i5 = HEAP32[i6 + 8 >> 2] | 0;
   if (i2) {
    i4 = HEAP32[i6 + 4 >> 2] | 0;
    i2 = i2 - (HEAP32[i6 + 108 >> 2] | 0) | 0;
    i3 = i5;
    if ((i5 - i4 | 0) < (i2 | 0)) i7 = 9; else HEAP32[i6 + 100 >> 2] = i4 + (i2 + -1);
   } else {
    i3 = i5;
    i7 = 9;
   }
   if ((i7 | 0) == 9) HEAP32[i6 + 100 >> 2] = i5;
   i2 = i6 + 4 | 0;
   if (!i3) i2 = HEAP32[i2 >> 2] | 0; else {
    i2 = HEAP32[i2 >> 2] | 0;
    i6 = i6 + 108 | 0;
    HEAP32[i6 >> 2] = i3 + 1 - i2 + (HEAP32[i6 >> 2] | 0);
   }
   i2 = i2 + -1 | 0;
   if ((HEAPU8[i2 >> 0] | 0 | 0) != (i1 | 0)) HEAP8[i2 >> 0] = i1;
  } else i7 = 4;
 }
 if ((i7 | 0) == 4) {
  HEAP32[i6 + 100 >> 2] = 0;
  i1 = -1;
 }
 return i1 | 0;
}

function __ZZN4wasm14ModuleInstance12callFunctionEN6cashew7IStringERNSt3__16vectorINS_7LiteralENS3_9allocatorIS5_EEEEEN16ExpressionRunner11visitReturnEPNS_6ReturnE(i4, i5, i1) {
 i4 = i4 | 0;
 i5 = i5 | 0;
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i6 = 0;
 i6 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i2 = i6;
 HEAP32[i4 >> 2] = 0;
 i3 = i4 + 8 | 0;
 HEAP32[i3 >> 2] = 0;
 HEAP32[i3 + 4 >> 2] = 0;
 i3 = i4 + 16 | 0;
 HEAP32[i3 >> 2] = 0;
 i1 = HEAP32[i1 + 8 >> 2] | 0;
 if (!((i1 | 0) != 0 ? (__ZN4wasm7VisitorIZNS_14ModuleInstance12callFunctionEN6cashew7IStringERNSt3__16vectorINS_7LiteralENS4_9allocatorIS6_EEEEE16ExpressionRunnerNS_4FlowEE5visitEPNS_10ExpressionE(i2, i5, i1), HEAP32[i4 >> 2] = HEAP32[i2 >> 2], HEAP32[i4 + 4 >> 2] = HEAP32[i2 + 4 >> 2], HEAP32[i4 + 8 >> 2] = HEAP32[i2 + 8 >> 2], HEAP32[i4 + 12 >> 2] = HEAP32[i2 + 12 >> 2], HEAP32[i4 + 16 >> 2] = HEAP32[i2 + 16 >> 2], (HEAP32[i3 >> 2] | 0) != 0) : 0)) HEAP32[i4 + 16 >> 2] = HEAP32[9052];
 STACKTOP = i6;
 return;
}

function __ZN4wasm22SExpressionWasmBuilder10makeSelectERNS_7ElementE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 var i3 = 0, i4 = 0, i5 = 0, i6 = 0;
 i3 = __ZN10MixedArena5allocIN4wasm6SelectEEEPT_v(HEAP32[i2 + 4 >> 2] | 0) | 0;
 i6 = __ZN4wasm7Element4listEv(i1) | 0;
 i6 = __ZN4wasm22SExpressionWasmBuilder15parseExpressionERNS_7ElementE(i2, HEAP32[(HEAP32[i6 >> 2] | 0) + 4 >> 2] | 0) | 0;
 i5 = i3 + 8 | 0;
 HEAP32[i5 >> 2] = i6;
 i6 = __ZN4wasm7Element4listEv(i1) | 0;
 i6 = __ZN4wasm22SExpressionWasmBuilder15parseExpressionERNS_7ElementE(i2, HEAP32[(HEAP32[i6 >> 2] | 0) + 8 >> 2] | 0) | 0;
 i4 = i3 + 12 | 0;
 HEAP32[i4 >> 2] = i6;
 i1 = __ZN4wasm7Element4listEv(i1) | 0;
 i2 = __ZN4wasm22SExpressionWasmBuilder15parseExpressionERNS_7ElementE(i2, HEAP32[(HEAP32[i1 >> 2] | 0) + 12 >> 2] | 0) | 0;
 HEAP32[i3 + 16 >> 2] = i2;
 i2 = HEAP32[(HEAP32[i5 >> 2] | 0) + 4 >> 2] | 0;
 HEAP32[i3 + 4 >> 2] = (i2 | 0) != 5 ? i2 : HEAP32[(HEAP32[i4 >> 2] | 0) + 4 >> 2] | 0;
 return i3 | 0;
}

function __ZN4wasm10ThreadPool3getEv() {
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0;
 i5 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i3 = i5;
 i1 = HEAP32[9171] | 0;
 if (!i1) {
  i1 = __ZNSt3__16thread20hardware_concurrencyEv() | 0;
  i2 = _getenv(26301) | 0;
  if (!i2) i4 = i1 >>> 0 > 1 ? i1 : 1; else {
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6__initEPKcj(i3, i2, _strlen(i2) | 0);
   i4 = __ZNSt3__14stoiERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEPji(i3, 0, 10) | 0;
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i3);
  }
  i1 = __Znwj(96) | 0;
  i2 = i1;
  i3 = i2 + 96 | 0;
  do {
   HEAP32[i2 >> 2] = 0;
   i2 = i2 + 4 | 0;
  } while ((i2 | 0) < (i3 | 0));
  i2 = HEAP32[9171] | 0;
  HEAP32[9171] = i1;
  if (i2) {
   __ZN4wasm10ThreadPoolD2Ev(i2);
   __ZdlPv(i2);
   i1 = HEAP32[9171] | 0;
  }
  __ZN4wasm10ThreadPool10initializeEj(i1, i4);
  i1 = HEAP32[9171] | 0;
 }
 STACKTOP = i5;
 return i1 | 0;
}

function __ZNSt3__16vectorIjNS_9allocatorIjEEE21__push_back_slow_pathIRKjEEvOT_(i7, i6) {
 i7 = i7 | 0;
 i6 = i6 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i8 = 0;
 i8 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i5 = i8;
 i3 = i7 + 4 | 0;
 i4 = HEAP32[i7 >> 2] | 0;
 i2 = ((HEAP32[i3 >> 2] | 0) - i4 >> 2) + 1 | 0;
 if (i2 >>> 0 > 1073741823) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i7);
 i1 = (HEAP32[i7 + 8 >> 2] | 0) - i4 | 0;
 if (i1 >> 2 >>> 0 < 536870911) {
  i1 = i1 >> 1;
  i1 = i1 >>> 0 < i2 >>> 0 ? i2 : i1;
 } else i1 = 1073741823;
 __ZNSt3__114__split_bufferIjRNS_9allocatorIjEEEC2EjjS3_(i5, i1, (HEAP32[i3 >> 2] | 0) - i4 >> 2, i7 + 8 | 0);
 i4 = i5 + 8 | 0;
 i3 = HEAP32[i4 >> 2] | 0;
 HEAP32[i3 >> 2] = HEAP32[i6 >> 2];
 HEAP32[i4 >> 2] = i3 + 4;
 __ZNSt3__16vectorIjNS_9allocatorIjEEE26__swap_out_circular_bufferERNS_14__split_bufferIjRS2_EE(i7, i5);
 __ZNSt3__114__split_bufferIjRNS_9allocatorIjEEED2Ev(i5);
 STACKTOP = i8;
 return;
}

function __ZNSt3__112__hash_tableINS_17__hash_value_typeIN6cashew7IStringEiEENS_22__unordered_map_hasherIS3_S4_NS_4hashIS3_EELb1EEENS_21__unordered_map_equalIS3_S4_NS_8equal_toIS3_EELb1EEENS_9allocatorIS4_EEE4findIS3_EENS_15__hash_iteratorIPNS_11__hash_nodeIS4_PvEEEERKT_(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 var i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0;
 i5 = HEAP32[i1 >> 2] | 0;
 i1 = i5 * 33 ^ 5381;
 i4 = HEAP32[i2 + 4 >> 2] | 0;
 L1 : do if (i4) {
  i6 = i4 + -1 | 0;
  i7 = (i6 & i4 | 0) == 0;
  if (i7) i3 = i6 & i1; else i3 = (i1 >>> 0) % (i4 >>> 0) | 0;
  i1 = HEAP32[(HEAP32[i2 >> 2] | 0) + (i3 << 2) >> 2] | 0;
  if (i1) do {
   i1 = HEAP32[i1 >> 2] | 0;
   if (!i1) {
    i1 = 0;
    break L1;
   }
   i2 = HEAP32[i1 + 4 >> 2] | 0;
   if (i7) i2 = i2 & i6; else i2 = (i2 >>> 0) % (i4 >>> 0) | 0;
   if ((i2 | 0) != (i3 | 0)) {
    i1 = 0;
    break L1;
   }
  } while ((HEAP32[i1 + 8 >> 2] | 0) != (i5 | 0)); else i1 = 0;
 } else i1 = 0; while (0);
 return i1 | 0;
}

function __ZNSt3__13mapIN4wasm4NameEPNS1_12FunctionTypeENS_4lessIS2_EENS_9allocatorINS_4pairIKS2_S4_EEEEE16__find_equal_keyERPNS_16__tree_node_baseIPvEERS9_(i1, i5, i4) {
 i1 = i1 | 0;
 i5 = i5 | 0;
 i4 = i4 | 0;
 var i2 = 0, i3 = 0;
 i1 = i1 + 4 | 0;
 i2 = HEAP32[i1 >> 2] | 0;
 do if (i2) {
  while (1) {
   i1 = i2 + 16 | 0;
   if (__ZNK6cashew7IStringltERKS0_(i4, i1) | 0) {
    i1 = HEAP32[i2 >> 2] | 0;
    if (!i1) {
     i1 = i2;
     i3 = 5;
     break;
    }
   } else {
    if (!(__ZNK6cashew7IStringltERKS0_(i1, i4) | 0)) {
     i1 = i2;
     i3 = 10;
     break;
    }
    i1 = i2 + 4 | 0;
    i3 = HEAP32[i1 >> 2] | 0;
    if (!i3) {
     i3 = 9;
     break;
    } else i1 = i3;
   }
   i2 = i1;
  }
  if ((i3 | 0) == 5) {
   HEAP32[i5 >> 2] = i2;
   break;
  } else if ((i3 | 0) == 9) {
   HEAP32[i5 >> 2] = i2;
   break;
  } else if ((i3 | 0) == 10) {
   HEAP32[i5 >> 2] = i1;
   i1 = i5;
   break;
  }
 } else HEAP32[i5 >> 2] = i1; while (0);
 return i1 | 0;
}

function __ZNSt3__13mapIjN4wasm14SimplifyLocals12SinkableInfoENS_4lessIjEENS_9allocatorINS_4pairIKjS3_EEEEE16__find_equal_keyERPNS_16__tree_node_baseIPvEERS8_(i1, i5, i3) {
 i1 = i1 | 0;
 i5 = i5 | 0;
 i3 = i3 | 0;
 var i2 = 0, i4 = 0;
 i1 = i1 + 4 | 0;
 i2 = HEAP32[i1 >> 2] | 0;
 do if (i2) {
  i4 = HEAP32[i3 >> 2] | 0;
  while (1) {
   i1 = HEAP32[i2 + 16 >> 2] | 0;
   if (i4 >>> 0 < i1 >>> 0) {
    i1 = HEAP32[i2 >> 2] | 0;
    if (!i1) {
     i1 = i2;
     i3 = 5;
     break;
    }
   } else {
    if (i1 >>> 0 >= i4 >>> 0) {
     i1 = i2;
     i3 = 10;
     break;
    }
    i1 = i2 + 4 | 0;
    i3 = HEAP32[i1 >> 2] | 0;
    if (!i3) {
     i3 = 9;
     break;
    } else i1 = i3;
   }
   i2 = i1;
  }
  if ((i3 | 0) == 5) {
   HEAP32[i5 >> 2] = i2;
   break;
  } else if ((i3 | 0) == 9) {
   HEAP32[i5 >> 2] = i2;
   break;
  } else if ((i3 | 0) == 10) {
   HEAP32[i5 >> 2] = i1;
   i1 = i5;
   break;
  }
 } else HEAP32[i5 >> 2] = i1; while (0);
 return i1 | 0;
}

function __ZNSt3__13mapIN6cashew7IStringEN4wasm7LiteralENS_4lessIS2_EENS_9allocatorINS_4pairIKS2_S4_EEEEE16__find_equal_keyERPNS_16__tree_node_baseIPvEERS9_(i1, i5, i4) {
 i1 = i1 | 0;
 i5 = i5 | 0;
 i4 = i4 | 0;
 var i2 = 0, i3 = 0;
 i1 = i1 + 4 | 0;
 i2 = HEAP32[i1 >> 2] | 0;
 do if (i2) {
  while (1) {
   i1 = i2 + 16 | 0;
   if (__ZNK6cashew7IStringltERKS0_(i4, i1) | 0) {
    i1 = HEAP32[i2 >> 2] | 0;
    if (!i1) {
     i1 = i2;
     i3 = 4;
     break;
    }
   } else {
    if (!(__ZNK6cashew7IStringltERKS0_(i1, i4) | 0)) {
     i1 = i2;
     i3 = 9;
     break;
    }
    i1 = i2 + 4 | 0;
    i3 = HEAP32[i1 >> 2] | 0;
    if (!i3) {
     i3 = 8;
     break;
    } else i1 = i3;
   }
   i2 = i1;
  }
  if ((i3 | 0) == 4) {
   HEAP32[i5 >> 2] = i2;
   break;
  } else if ((i3 | 0) == 8) {
   HEAP32[i5 >> 2] = i2;
   break;
  } else if ((i3 | 0) == 9) {
   HEAP32[i5 >> 2] = i1;
   i1 = i5;
   break;
  }
 } else HEAP32[i5 >> 2] = i1; while (0);
 return i1 | 0;
}

function __ZN4wasm14ModuleInstanceC2ERNS_6ModuleEPNS0_17ExternalInterfaceE(i6, i2, i1) {
 i6 = i6 | 0;
 i2 = i2 | 0;
 i1 = i1 | 0;
 var i3 = 0, i4 = 0, i5 = 0, i7 = 0, i8 = 0;
 i7 = STACKTOP;
 STACKTOP = STACKTOP + 48 | 0;
 i3 = i7 + 32 | 0;
 i5 = i7 + 20 | 0;
 i4 = i7 + 16 | 0;
 HEAP32[i6 >> 2] = i2;
 i8 = i6 + 4 | 0;
 HEAP32[i8 >> 2] = 0;
 HEAP32[i8 + 4 >> 2] = 0;
 HEAP32[i8 + 8 >> 2] = 0;
 HEAP32[i8 + 12 >> 2] = 0;
 HEAP32[i6 + 24 >> 2] = i1;
 HEAP32[i6 + 20 >> 2] = HEAP32[i2 + 60 >> 2];
 FUNCTION_TABLE_vii[HEAP32[HEAP32[i1 >> 2] >> 2] & 511](i1, i2);
 i1 = HEAP32[i2 + 84 >> 2] | 0;
 if (i1 | 0) {
  HEAP32[i5 >> 2] = 0;
  HEAP32[i5 + 4 >> 2] = 0;
  HEAP32[i5 + 8 >> 2] = 0;
  HEAP32[i4 >> 2] = i1;
  HEAP32[i3 >> 2] = HEAP32[i4 >> 2];
  __ZN4wasm14ModuleInstance12callFunctionEN6cashew7IStringERNSt3__16vectorINS_7LiteralENS3_9allocatorIS5_EEEE(i7, i6, i3, i5);
  __ZNSt3__113__vector_baseIN4wasm7LiteralENS_9allocatorIS2_EEED2Ev(i5);
 }
 STACKTOP = i7;
 return;
}

function __ZNSt3__16vectorINS_13unordered_mapIN6cashew7IStringEiNS_4hashIS3_EENS_8equal_toIS3_EENS_9allocatorINS_4pairIKS3_iEEEEEENS8_ISD_EEE6resizeEj(i5, i4) {
 i5 = i5 | 0;
 i4 = i4 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i6 = 0;
 i6 = i5 + 4 | 0;
 i1 = HEAP32[i6 >> 2] | 0;
 i3 = HEAP32[i5 >> 2] | 0;
 i2 = (i1 - i3 | 0) / 20 | 0;
 L1 : do if (i2 >>> 0 >= i4 >>> 0) {
  if (i2 >>> 0 > i4 >>> 0) {
   i2 = i3 + (i4 * 20 | 0) | 0;
   while (1) {
    if ((i1 | 0) == (i2 | 0)) break L1;
    i5 = i1 + -20 | 0;
    HEAP32[i6 >> 2] = i5;
    __ZNSt3__112__hash_tableINS_17__hash_value_typeIN6cashew7IStringEiEENS_22__unordered_map_hasherIS3_S4_NS_4hashIS3_EELb1EEENS_21__unordered_map_equalIS3_S4_NS_8equal_toIS3_EELb1EEENS_9allocatorIS4_EEED2Ev(i5);
    i1 = HEAP32[i6 >> 2] | 0;
   }
  }
 } else __ZNSt3__16vectorINS_13unordered_mapIN6cashew7IStringEiNS_4hashIS3_EENS_8equal_toIS3_EENS_9allocatorINS_4pairIKS3_iEEEEEENS8_ISD_EEE8__appendEj(i5, i4 - i2 | 0); while (0);
 return;
}

function __ZNSt3__13mapIN4wasm4NameEPNS1_8FunctionENS_4lessIS2_EENS_9allocatorINS_4pairIKS2_S4_EEEEE16__find_equal_keyERPNS_16__tree_node_baseIPvEERS9_(i1, i5, i4) {
 i1 = i1 | 0;
 i5 = i5 | 0;
 i4 = i4 | 0;
 var i2 = 0, i3 = 0;
 i1 = i1 + 4 | 0;
 i2 = HEAP32[i1 >> 2] | 0;
 do if (i2) {
  while (1) {
   i1 = i2 + 16 | 0;
   if (__ZNK6cashew7IStringltERKS0_(i4, i1) | 0) {
    i1 = HEAP32[i2 >> 2] | 0;
    if (!i1) {
     i1 = i2;
     i3 = 5;
     break;
    }
   } else {
    if (!(__ZNK6cashew7IStringltERKS0_(i1, i4) | 0)) {
     i1 = i2;
     i3 = 10;
     break;
    }
    i1 = i2 + 4 | 0;
    i3 = HEAP32[i1 >> 2] | 0;
    if (!i3) {
     i3 = 9;
     break;
    } else i1 = i3;
   }
   i2 = i1;
  }
  if ((i3 | 0) == 5) {
   HEAP32[i5 >> 2] = i2;
   break;
  } else if ((i3 | 0) == 9) {
   HEAP32[i5 >> 2] = i2;
   break;
  } else if ((i3 | 0) == 10) {
   HEAP32[i5 >> 2] = i1;
   i1 = i5;
   break;
  }
 } else HEAP32[i5 >> 2] = i1; while (0);
 return i1 | 0;
}

function __ZNSt3__13mapIN4wasm4NameENS1_8WasmTypeENS_4lessIS2_EENS_9allocatorINS_4pairIKS2_S3_EEEEE16__find_equal_keyERPNS_16__tree_node_baseIPvEERS8_(i1, i5, i4) {
 i1 = i1 | 0;
 i5 = i5 | 0;
 i4 = i4 | 0;
 var i2 = 0, i3 = 0;
 i1 = i1 + 4 | 0;
 i2 = HEAP32[i1 >> 2] | 0;
 do if (i2) {
  while (1) {
   i1 = i2 + 16 | 0;
   if (__ZNK6cashew7IStringltERKS0_(i4, i1) | 0) {
    i1 = HEAP32[i2 >> 2] | 0;
    if (!i1) {
     i1 = i2;
     i3 = 5;
     break;
    }
   } else {
    if (!(__ZNK6cashew7IStringltERKS0_(i1, i4) | 0)) {
     i1 = i2;
     i3 = 10;
     break;
    }
    i1 = i2 + 4 | 0;
    i3 = HEAP32[i1 >> 2] | 0;
    if (!i3) {
     i3 = 9;
     break;
    } else i1 = i3;
   }
   i2 = i1;
  }
  if ((i3 | 0) == 5) {
   HEAP32[i5 >> 2] = i2;
   break;
  } else if ((i3 | 0) == 9) {
   HEAP32[i5 >> 2] = i2;
   break;
  } else if ((i3 | 0) == 10) {
   HEAP32[i5 >> 2] = i1;
   i1 = i5;
   break;
  }
 } else HEAP32[i5 >> 2] = i1; while (0);
 return i1 | 0;
}

function __ZNSt3__13mapIN4wasm4NameEPNS1_6ImportENS_4lessIS2_EENS_9allocatorINS_4pairIKS2_S4_EEEEE16__find_equal_keyERPNS_16__tree_node_baseIPvEERS9_(i1, i5, i4) {
 i1 = i1 | 0;
 i5 = i5 | 0;
 i4 = i4 | 0;
 var i2 = 0, i3 = 0;
 i1 = i1 + 4 | 0;
 i2 = HEAP32[i1 >> 2] | 0;
 do if (i2) {
  while (1) {
   i1 = i2 + 16 | 0;
   if (__ZNK6cashew7IStringltERKS0_(i4, i1) | 0) {
    i1 = HEAP32[i2 >> 2] | 0;
    if (!i1) {
     i1 = i2;
     i3 = 5;
     break;
    }
   } else {
    if (!(__ZNK6cashew7IStringltERKS0_(i1, i4) | 0)) {
     i1 = i2;
     i3 = 10;
     break;
    }
    i1 = i2 + 4 | 0;
    i3 = HEAP32[i1 >> 2] | 0;
    if (!i3) {
     i3 = 9;
     break;
    } else i1 = i3;
   }
   i2 = i1;
  }
  if ((i3 | 0) == 5) {
   HEAP32[i5 >> 2] = i2;
   break;
  } else if ((i3 | 0) == 9) {
   HEAP32[i5 >> 2] = i2;
   break;
  } else if ((i3 | 0) == 10) {
   HEAP32[i5 >> 2] = i1;
   i1 = i5;
   break;
  }
 } else HEAP32[i5 >> 2] = i1; while (0);
 return i1 | 0;
}

function __ZNSt3__13mapIN4wasm4NameEPNS1_6ExportENS_4lessIS2_EENS_9allocatorINS_4pairIKS2_S4_EEEEE16__find_equal_keyERPNS_16__tree_node_baseIPvEERS9_(i1, i5, i4) {
 i1 = i1 | 0;
 i5 = i5 | 0;
 i4 = i4 | 0;
 var i2 = 0, i3 = 0;
 i1 = i1 + 4 | 0;
 i2 = HEAP32[i1 >> 2] | 0;
 do if (i2) {
  while (1) {
   i1 = i2 + 16 | 0;
   if (__ZNK6cashew7IStringltERKS0_(i4, i1) | 0) {
    i1 = HEAP32[i2 >> 2] | 0;
    if (!i1) {
     i1 = i2;
     i3 = 5;
     break;
    }
   } else {
    if (!(__ZNK6cashew7IStringltERKS0_(i1, i4) | 0)) {
     i1 = i2;
     i3 = 10;
     break;
    }
    i1 = i2 + 4 | 0;
    i3 = HEAP32[i1 >> 2] | 0;
    if (!i3) {
     i3 = 9;
     break;
    } else i1 = i3;
   }
   i2 = i1;
  }
  if ((i3 | 0) == 5) {
   HEAP32[i5 >> 2] = i2;
   break;
  } else if ((i3 | 0) == 9) {
   HEAP32[i5 >> 2] = i2;
   break;
  } else if ((i3 | 0) == 10) {
   HEAP32[i5 >> 2] = i1;
   i1 = i5;
   break;
  }
 } else HEAP32[i5 >> 2] = i1; while (0);
 return i1 | 0;
}

function __ZNSt3__16vectorINS_10unique_ptrIN4wasm17RemoveUnusedNamesENS_14default_deleteIS3_EEEENS_9allocatorIS6_EEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS8_EE(i6, i5) {
 i6 = i6 | 0;
 i5 = i5 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i7 = 0, i8 = 0, i9 = 0;
 i2 = HEAP32[i6 >> 2] | 0;
 i3 = i6 + 4 | 0;
 i4 = i5 + 4 | 0;
 i1 = HEAP32[i3 >> 2] | 0;
 while (1) {
  if ((i1 | 0) == (i2 | 0)) break;
  i8 = (HEAP32[i4 >> 2] | 0) + -4 | 0;
  i7 = i1 + -4 | 0;
  i9 = HEAP32[i7 >> 2] | 0;
  HEAP32[i7 >> 2] = 0;
  HEAP32[i8 >> 2] = i9;
  HEAP32[i4 >> 2] = (HEAP32[i4 >> 2] | 0) + -4;
  i1 = i7;
 }
 i7 = HEAP32[i6 >> 2] | 0;
 HEAP32[i6 >> 2] = HEAP32[i4 >> 2];
 HEAP32[i4 >> 2] = i7;
 i7 = i5 + 8 | 0;
 i9 = HEAP32[i3 >> 2] | 0;
 HEAP32[i3 >> 2] = HEAP32[i7 >> 2];
 HEAP32[i7 >> 2] = i9;
 i7 = i6 + 8 | 0;
 i9 = i5 + 12 | 0;
 i8 = HEAP32[i7 >> 2] | 0;
 HEAP32[i7 >> 2] = HEAP32[i9 >> 2];
 HEAP32[i9 >> 2] = i8;
 HEAP32[i5 >> 2] = HEAP32[i4 >> 2];
 return;
}

function __ZNSt3__16vectorINS_10unique_ptrIN4wasm15RemoveUnusedBrsENS_14default_deleteIS3_EEEENS_9allocatorIS6_EEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS8_EE(i6, i5) {
 i6 = i6 | 0;
 i5 = i5 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i7 = 0, i8 = 0, i9 = 0;
 i2 = HEAP32[i6 >> 2] | 0;
 i3 = i6 + 4 | 0;
 i4 = i5 + 4 | 0;
 i1 = HEAP32[i3 >> 2] | 0;
 while (1) {
  if ((i1 | 0) == (i2 | 0)) break;
  i8 = (HEAP32[i4 >> 2] | 0) + -4 | 0;
  i7 = i1 + -4 | 0;
  i9 = HEAP32[i7 >> 2] | 0;
  HEAP32[i7 >> 2] = 0;
  HEAP32[i8 >> 2] = i9;
  HEAP32[i4 >> 2] = (HEAP32[i4 >> 2] | 0) + -4;
  i1 = i7;
 }
 i7 = HEAP32[i6 >> 2] | 0;
 HEAP32[i6 >> 2] = HEAP32[i4 >> 2];
 HEAP32[i4 >> 2] = i7;
 i7 = i5 + 8 | 0;
 i9 = HEAP32[i3 >> 2] | 0;
 HEAP32[i3 >> 2] = HEAP32[i7 >> 2];
 HEAP32[i7 >> 2] = i9;
 i7 = i6 + 8 | 0;
 i9 = i5 + 12 | 0;
 i8 = HEAP32[i7 >> 2] | 0;
 HEAP32[i7 >> 2] = HEAP32[i9 >> 2];
 HEAP32[i9 >> 2] = i8;
 HEAP32[i5 >> 2] = HEAP32[i4 >> 2];
 return;
}

function __ZNSt3__16__treeINS_12__value_typeIjN4wasm14SimplifyLocals12SinkableInfoEEENS_19__map_value_compareIjS5_NS_4lessIjEELb1EEENS_9allocatorIS5_EEE20__node_insert_uniqueEPNS_11__tree_nodeIS5_PvEE(i6, i4, i5) {
 i6 = i6 | 0;
 i4 = i4 | 0;
 i5 = i5 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i7 = 0;
 i7 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i3 = i7;
 i2 = __ZNSt3__16__treeINS_12__value_typeIjN4wasm14SimplifyLocals12SinkableInfoEEENS_19__map_value_compareIjS5_NS_4lessIjEELb1EEENS_9allocatorIS5_EEE12__find_equalIS5_EERPNS_16__tree_node_baseIPvEESI_RKT_(i4, i3, i5 + 16 | 0) | 0;
 i1 = HEAP32[i2 >> 2] | 0;
 if (!i1) {
  __ZNSt3__16__treeINS_12__value_typeIjN4wasm14SimplifyLocals12SinkableInfoEEENS_19__map_value_compareIjS5_NS_4lessIjEELb1EEENS_9allocatorIS5_EEE16__insert_node_atEPNS_16__tree_node_baseIPvEERSG_SG_(i4, HEAP32[i3 >> 2] | 0, i2, i5);
  i2 = 1;
  i1 = i5;
 } else i2 = 0;
 HEAP32[i6 >> 2] = i1;
 HEAP8[i6 + 4 >> 0] = i2;
 STACKTOP = i7;
 return;
}

function __ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEE3putEc(i7, i5) {
 i7 = i7 | 0;
 i5 = i5 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i6 = 0, i8 = 0;
 i8 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i6 = i8;
 __ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEE6sentryC2ERS3_(i6, i7);
 L1 : do if (HEAP8[i6 >> 0] | 0) {
  i3 = HEAP32[i7 + (HEAP32[(HEAP32[i7 >> 2] | 0) + -12 >> 2] | 0) + 24 >> 2] | 0;
  i4 = i3;
  do if (i3 | 0) {
   i1 = i4 + 24 | 0;
   i2 = HEAP32[i1 >> 2] | 0;
   if ((i2 | 0) == (HEAP32[i4 + 28 >> 2] | 0)) if ((FUNCTION_TABLE_iii[HEAP32[(HEAP32[i3 >> 2] | 0) + 52 >> 2] & 63](i4, i5 & 255) | 0) == -1) break; else break L1; else {
    HEAP32[i1 >> 2] = i2 + 1;
    HEAP8[i2 >> 0] = i5;
    break L1;
   }
  } while (0);
  i5 = i7 + (HEAP32[(HEAP32[i7 >> 2] | 0) + -12 >> 2] | 0) + 16 | 0;
  HEAP32[i5 >> 2] = HEAP32[i5 >> 2] | 1;
 } while (0);
 __ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEE6sentryD2Ev(i6);
 STACKTOP = i8;
 return i7 | 0;
}

function __ZNSt3__16vectorINS_10unique_ptrIN4wasm14SimplifyLocalsENS_14default_deleteIS3_EEEENS_9allocatorIS6_EEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS8_EE(i6, i5) {
 i6 = i6 | 0;
 i5 = i5 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i7 = 0, i8 = 0, i9 = 0;
 i2 = HEAP32[i6 >> 2] | 0;
 i3 = i6 + 4 | 0;
 i4 = i5 + 4 | 0;
 i1 = HEAP32[i3 >> 2] | 0;
 while (1) {
  if ((i1 | 0) == (i2 | 0)) break;
  i8 = (HEAP32[i4 >> 2] | 0) + -4 | 0;
  i7 = i1 + -4 | 0;
  i9 = HEAP32[i7 >> 2] | 0;
  HEAP32[i7 >> 2] = 0;
  HEAP32[i8 >> 2] = i9;
  HEAP32[i4 >> 2] = (HEAP32[i4 >> 2] | 0) + -4;
  i1 = i7;
 }
 i7 = HEAP32[i6 >> 2] | 0;
 HEAP32[i6 >> 2] = HEAP32[i4 >> 2];
 HEAP32[i4 >> 2] = i7;
 i7 = i5 + 8 | 0;
 i9 = HEAP32[i3 >> 2] | 0;
 HEAP32[i3 >> 2] = HEAP32[i7 >> 2];
 HEAP32[i7 >> 2] = i9;
 i7 = i6 + 8 | 0;
 i9 = i5 + 12 | 0;
 i8 = HEAP32[i7 >> 2] | 0;
 HEAP32[i7 >> 2] = HEAP32[i9 >> 2];
 HEAP32[i9 >> 2] = i8;
 HEAP32[i5 >> 2] = HEAP32[i4 >> 2];
 return;
}

function __ZNSt3__16vectorINS_10unique_ptrIN4wasm14PostEmscriptenENS_14default_deleteIS3_EEEENS_9allocatorIS6_EEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS8_EE(i6, i5) {
 i6 = i6 | 0;
 i5 = i5 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i7 = 0, i8 = 0, i9 = 0;
 i2 = HEAP32[i6 >> 2] | 0;
 i3 = i6 + 4 | 0;
 i4 = i5 + 4 | 0;
 i1 = HEAP32[i3 >> 2] | 0;
 while (1) {
  if ((i1 | 0) == (i2 | 0)) break;
  i8 = (HEAP32[i4 >> 2] | 0) + -4 | 0;
  i7 = i1 + -4 | 0;
  i9 = HEAP32[i7 >> 2] | 0;
  HEAP32[i7 >> 2] = 0;
  HEAP32[i8 >> 2] = i9;
  HEAP32[i4 >> 2] = (HEAP32[i4 >> 2] | 0) + -4;
  i1 = i7;
 }
 i7 = HEAP32[i6 >> 2] | 0;
 HEAP32[i6 >> 2] = HEAP32[i4 >> 2];
 HEAP32[i4 >> 2] = i7;
 i7 = i5 + 8 | 0;
 i9 = HEAP32[i3 >> 2] | 0;
 HEAP32[i3 >> 2] = HEAP32[i7 >> 2];
 HEAP32[i7 >> 2] = i9;
 i7 = i6 + 8 | 0;
 i9 = i5 + 12 | 0;
 i8 = HEAP32[i7 >> 2] | 0;
 HEAP32[i7 >> 2] = HEAP32[i9 >> 2];
 HEAP32[i9 >> 2] = i8;
 HEAP32[i5 >> 2] = HEAP32[i4 >> 2];
 return;
}

function __ZNSt3__16__treeINS_12__value_typeIN4wasm4NameEjEENS_19__map_value_compareIS3_S4_NS_4lessIS3_EELb1EEENS_9allocatorIS4_EEE15__insert_uniqueIRKNS_4pairIKS3_jEEEENS_15__tree_iteratorIS4_PNS_11__tree_nodeIS4_PvEEiEENS_21__tree_const_iteratorIS4_SM_iEEOT_(i3, i1, i2) {
 i3 = i3 | 0;
 i1 = i1 | 0;
 i2 = i2 | 0;
 var i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0;
 i5 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i6 = i5 + 4 | 0;
 i7 = i5;
 i4 = __Znwj(24) | 0;
 i9 = i2;
 i8 = HEAP32[i9 + 4 >> 2] | 0;
 i2 = i4 + 16 | 0;
 HEAP32[i2 >> 2] = HEAP32[i9 >> 2];
 HEAP32[i2 + 4 >> 2] = i8;
 HEAP32[i7 >> 2] = HEAP32[i1 >> 2];
 HEAP32[i6 >> 2] = HEAP32[i7 >> 2];
 i1 = __ZNSt3__16__treeINS_12__value_typeIN4wasm4NameEjEENS_19__map_value_compareIS3_S4_NS_4lessIS3_EELb1EEENS_9allocatorIS4_EEE20__node_insert_uniqueENS_21__tree_const_iteratorIS4_PNS_11__tree_nodeIS4_PvEEiEESG_(i3, i6, i4) | 0;
 if ((i1 | 0) != (i4 | 0)) __ZdlPv(i4);
 STACKTOP = i5;
 return i1 | 0;
}

function __ZNSt3__16vectorINS_10unique_ptrIN4wasm13ReorderLocalsENS_14default_deleteIS3_EEEENS_9allocatorIS6_EEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS8_EE(i6, i5) {
 i6 = i6 | 0;
 i5 = i5 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i7 = 0, i8 = 0, i9 = 0;
 i2 = HEAP32[i6 >> 2] | 0;
 i3 = i6 + 4 | 0;
 i4 = i5 + 4 | 0;
 i1 = HEAP32[i3 >> 2] | 0;
 while (1) {
  if ((i1 | 0) == (i2 | 0)) break;
  i8 = (HEAP32[i4 >> 2] | 0) + -4 | 0;
  i7 = i1 + -4 | 0;
  i9 = HEAP32[i7 >> 2] | 0;
  HEAP32[i7 >> 2] = 0;
  HEAP32[i8 >> 2] = i9;
  HEAP32[i4 >> 2] = (HEAP32[i4 >> 2] | 0) + -4;
  i1 = i7;
 }
 i7 = HEAP32[i6 >> 2] | 0;
 HEAP32[i6 >> 2] = HEAP32[i4 >> 2];
 HEAP32[i4 >> 2] = i7;
 i7 = i5 + 8 | 0;
 i9 = HEAP32[i3 >> 2] | 0;
 HEAP32[i3 >> 2] = HEAP32[i7 >> 2];
 HEAP32[i7 >> 2] = i9;
 i7 = i6 + 8 | 0;
 i9 = i5 + 12 | 0;
 i8 = HEAP32[i7 >> 2] | 0;
 HEAP32[i7 >> 2] = HEAP32[i9 >> 2];
 HEAP32[i9 >> 2] = i8;
 HEAP32[i5 >> 2] = HEAP32[i4 >> 2];
 return;
}

function __ZNSt3__16vectorINS_10unique_ptrIN4wasm11MergeBlocksENS_14default_deleteIS3_EEEENS_9allocatorIS6_EEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS8_EE(i6, i5) {
 i6 = i6 | 0;
 i5 = i5 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i7 = 0, i8 = 0, i9 = 0;
 i2 = HEAP32[i6 >> 2] | 0;
 i3 = i6 + 4 | 0;
 i4 = i5 + 4 | 0;
 i1 = HEAP32[i3 >> 2] | 0;
 while (1) {
  if ((i1 | 0) == (i2 | 0)) break;
  i8 = (HEAP32[i4 >> 2] | 0) + -4 | 0;
  i7 = i1 + -4 | 0;
  i9 = HEAP32[i7 >> 2] | 0;
  HEAP32[i7 >> 2] = 0;
  HEAP32[i8 >> 2] = i9;
  HEAP32[i4 >> 2] = (HEAP32[i4 >> 2] | 0) + -4;
  i1 = i7;
 }
 i7 = HEAP32[i6 >> 2] | 0;
 HEAP32[i6 >> 2] = HEAP32[i4 >> 2];
 HEAP32[i4 >> 2] = i7;
 i7 = i5 + 8 | 0;
 i9 = HEAP32[i3 >> 2] | 0;
 HEAP32[i3 >> 2] = HEAP32[i7 >> 2];
 HEAP32[i7 >> 2] = i9;
 i7 = i6 + 8 | 0;
 i9 = i5 + 12 | 0;
 i8 = HEAP32[i7 >> 2] | 0;
 HEAP32[i7 >> 2] = HEAP32[i9 >> 2];
 HEAP32[i9 >> 2] = i8;
 HEAP32[i5 >> 2] = HEAP32[i4 >> 2];
 return;
}

function __ZNSt3__16vectorINS_10unique_ptrIN4wasm6VacuumENS_14default_deleteIS3_EEEENS_9allocatorIS6_EEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS8_EE(i6, i5) {
 i6 = i6 | 0;
 i5 = i5 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i7 = 0, i8 = 0, i9 = 0;
 i2 = HEAP32[i6 >> 2] | 0;
 i3 = i6 + 4 | 0;
 i4 = i5 + 4 | 0;
 i1 = HEAP32[i3 >> 2] | 0;
 while (1) {
  if ((i1 | 0) == (i2 | 0)) break;
  i8 = (HEAP32[i4 >> 2] | 0) + -4 | 0;
  i7 = i1 + -4 | 0;
  i9 = HEAP32[i7 >> 2] | 0;
  HEAP32[i7 >> 2] = 0;
  HEAP32[i8 >> 2] = i9;
  HEAP32[i4 >> 2] = (HEAP32[i4 >> 2] | 0) + -4;
  i1 = i7;
 }
 i7 = HEAP32[i6 >> 2] | 0;
 HEAP32[i6 >> 2] = HEAP32[i4 >> 2];
 HEAP32[i4 >> 2] = i7;
 i7 = i5 + 8 | 0;
 i9 = HEAP32[i3 >> 2] | 0;
 HEAP32[i3 >> 2] = HEAP32[i7 >> 2];
 HEAP32[i7 >> 2] = i9;
 i7 = i6 + 8 | 0;
 i9 = i5 + 12 | 0;
 i8 = HEAP32[i7 >> 2] | 0;
 HEAP32[i7 >> 2] = HEAP32[i9 >> 2];
 HEAP32[i9 >> 2] = i8;
 HEAP32[i5 >> 2] = HEAP32[i4 >> 2];
 return;
}

function __ZNSt3__16vectorINS_10unique_ptrIN4wasm6ThreadENS_14default_deleteIS3_EEEENS_9allocatorIS6_EEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS8_EE(i6, i5) {
 i6 = i6 | 0;
 i5 = i5 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i7 = 0, i8 = 0, i9 = 0;
 i2 = HEAP32[i6 >> 2] | 0;
 i3 = i6 + 4 | 0;
 i4 = i5 + 4 | 0;
 i1 = HEAP32[i3 >> 2] | 0;
 while (1) {
  if ((i1 | 0) == (i2 | 0)) break;
  i8 = (HEAP32[i4 >> 2] | 0) + -4 | 0;
  i7 = i1 + -4 | 0;
  i9 = HEAP32[i7 >> 2] | 0;
  HEAP32[i7 >> 2] = 0;
  HEAP32[i8 >> 2] = i9;
  HEAP32[i4 >> 2] = (HEAP32[i4 >> 2] | 0) + -4;
  i1 = i7;
 }
 i7 = HEAP32[i6 >> 2] | 0;
 HEAP32[i6 >> 2] = HEAP32[i4 >> 2];
 HEAP32[i4 >> 2] = i7;
 i7 = i5 + 8 | 0;
 i9 = HEAP32[i3 >> 2] | 0;
 HEAP32[i3 >> 2] = HEAP32[i7 >> 2];
 HEAP32[i7 >> 2] = i9;
 i7 = i6 + 8 | 0;
 i9 = i5 + 12 | 0;
 i8 = HEAP32[i7 >> 2] | 0;
 HEAP32[i7 >> 2] = HEAP32[i9 >> 2];
 HEAP32[i9 >> 2] = i8;
 HEAP32[i5 >> 2] = HEAP32[i4 >> 2];
 return;
}

function __ZNSt3__13mapIN4wasm4NameEjNS_4lessIS2_EENS_9allocatorINS_4pairIKS2_jEEEEE16__find_equal_keyERPNS_16__tree_node_baseIPvEERS7_(i1, i5, i4) {
 i1 = i1 | 0;
 i5 = i5 | 0;
 i4 = i4 | 0;
 var i2 = 0, i3 = 0;
 i1 = i1 + 4 | 0;
 i2 = HEAP32[i1 >> 2] | 0;
 do if (i2) {
  while (1) {
   i1 = i2 + 16 | 0;
   if (__ZNK6cashew7IStringltERKS0_(i4, i1) | 0) {
    i1 = HEAP32[i2 >> 2] | 0;
    if (!i1) {
     i1 = i2;
     i3 = 5;
     break;
    }
   } else {
    if (!(__ZNK6cashew7IStringltERKS0_(i1, i4) | 0)) {
     i1 = i2;
     i3 = 10;
     break;
    }
    i1 = i2 + 4 | 0;
    i3 = HEAP32[i1 >> 2] | 0;
    if (!i3) {
     i3 = 9;
     break;
    } else i1 = i3;
   }
   i2 = i1;
  }
  if ((i3 | 0) == 5) {
   HEAP32[i5 >> 2] = i2;
   break;
  } else if ((i3 | 0) == 9) {
   HEAP32[i5 >> 2] = i2;
   break;
  } else if ((i3 | 0) == 10) {
   HEAP32[i5 >> 2] = i1;
   i1 = i5;
   break;
  }
 } else HEAP32[i5 >> 2] = i1; while (0);
 return i1 | 0;
}

function __ZNSt3__112__hash_tableIPKcN6cashew7IString11CStringHashENS4_12CStringEqualENS_9allocatorIS2_EEE6rehashEj(i5, i1) {
 i5 = i5 | 0;
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i4 = 0;
 if ((i1 | 0) != 1) {
  if (i1 + -1 & i1) i1 = __ZNSt3__112__next_primeEj(i1) | 0;
 } else i1 = 2;
 i4 = HEAP32[i5 + 4 >> 2] | 0;
 if (i1 >>> 0 <= i4 >>> 0) {
  if (i1 >>> 0 < i4 >>> 0) {
   if (i4 >>> 0 > 2) i3 = (i4 + -1 & i4 | 0) == 0; else i3 = 0;
   i2 = ~~+Math_ceil(+(+((HEAP32[i5 + 12 >> 2] | 0) >>> 0) / +HEAPF32[i5 + 16 >> 2])) >>> 0;
   if (i3) i2 = 1 << 32 - (Math_clz32(i2 + -1 | 0) | 0); else i2 = __ZNSt3__112__next_primeEj(i2) | 0;
   i1 = i1 >>> 0 < i2 >>> 0 ? i2 : i1;
   if (i1 >>> 0 < i4 >>> 0) __ZNSt3__112__hash_tableIPKcN6cashew7IString11CStringHashENS4_12CStringEqualENS_9allocatorIS2_EEE8__rehashEj(i5, i1);
  }
 } else __ZNSt3__112__hash_tableIPKcN6cashew7IString11CStringHashENS4_12CStringEqualENS_9allocatorIS2_EEE8__rehashEj(i5, i1);
 return;
}

function __ZNSt3__16__treeIN4wasm4NameENS_4lessIS2_EENS_9allocatorIS2_EEE12__find_equalIS2_EERPNS_16__tree_node_baseIPvEESD_RKT_(i1, i5, i4) {
 i1 = i1 | 0;
 i5 = i5 | 0;
 i4 = i4 | 0;
 var i2 = 0, i3 = 0;
 i1 = i1 + 4 | 0;
 i2 = HEAP32[i1 >> 2] | 0;
 do if (i2) {
  while (1) {
   i1 = i2 + 16 | 0;
   if (__ZNK6cashew7IStringltERKS0_(i4, i1) | 0) {
    i1 = HEAP32[i2 >> 2] | 0;
    if (!i1) {
     i1 = i2;
     i3 = 5;
     break;
    }
   } else {
    if (!(__ZNK6cashew7IStringltERKS0_(i1, i4) | 0)) {
     i1 = i2;
     i3 = 10;
     break;
    }
    i1 = i2 + 4 | 0;
    i3 = HEAP32[i1 >> 2] | 0;
    if (!i3) {
     i3 = 9;
     break;
    } else i1 = i3;
   }
   i2 = i1;
  }
  if ((i3 | 0) == 5) {
   HEAP32[i5 >> 2] = i2;
   break;
  } else if ((i3 | 0) == 9) {
   HEAP32[i5 >> 2] = i2;
   break;
  } else if ((i3 | 0) == 10) {
   HEAP32[i5 >> 2] = i1;
   i1 = i5;
   break;
  }
 } else HEAP32[i5 >> 2] = i1; while (0);
 return i1 | 0;
}

function __ZNSt3__112__hash_tableIN6cashew7IStringENS_4hashIS2_EENS_8equal_toIS2_EENS_9allocatorIS2_EEE6rehashEj(i5, i1) {
 i5 = i5 | 0;
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i4 = 0;
 if ((i1 | 0) != 1) {
  if (i1 + -1 & i1) i1 = __ZNSt3__112__next_primeEj(i1) | 0;
 } else i1 = 2;
 i4 = HEAP32[i5 + 4 >> 2] | 0;
 if (i1 >>> 0 <= i4 >>> 0) {
  if (i1 >>> 0 < i4 >>> 0) {
   if (i4 >>> 0 > 2) i3 = (i4 + -1 & i4 | 0) == 0; else i3 = 0;
   i2 = ~~+Math_ceil(+(+((HEAP32[i5 + 12 >> 2] | 0) >>> 0) / +HEAPF32[i5 + 16 >> 2])) >>> 0;
   if (i3) i2 = 1 << 32 - (Math_clz32(i2 + -1 | 0) | 0); else i2 = __ZNSt3__112__next_primeEj(i2) | 0;
   i1 = i1 >>> 0 < i2 >>> 0 ? i2 : i1;
   if (i1 >>> 0 < i4 >>> 0) __ZNSt3__112__hash_tableIN6cashew7IStringENS_4hashIS2_EENS_8equal_toIS2_EENS_9allocatorIS2_EEE8__rehashEj(i5, i1);
  }
 } else __ZNSt3__112__hash_tableIN6cashew7IStringENS_4hashIS2_EENS_8equal_toIS2_EENS_9allocatorIS2_EEE8__rehashEj(i5, i1);
 return;
}

function __ZNKSt3__18time_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_putES4_RNS_8ios_baseEwPK2tmcc(i6, i7, i1, i2, i5, i3, i4) {
 i6 = i6 | 0;
 i7 = i7 | 0;
 i1 = i1 | 0;
 i2 = i2 | 0;
 i5 = i5 | 0;
 i3 = i3 | 0;
 i4 = i4 | 0;
 var i8 = 0;
 i8 = STACKTOP;
 STACKTOP = STACKTOP + 416 | 0;
 i1 = i8 + 8 | 0;
 i2 = i8;
 HEAP32[i2 >> 2] = i1 + 400;
 __ZNKSt3__110__time_put8__do_putEPwRS1_PK2tmcc(i6 + 8 | 0, i1, i2, i5, i3, i4);
 i6 = HEAP32[i2 >> 2] | 0;
 i5 = i1;
 i1 = HEAP32[i7 >> 2] | 0;
 while (1) {
  if ((i5 | 0) == (i6 | 0)) break;
  i2 = HEAP32[i5 >> 2] | 0;
  if (!i1) i1 = 0; else {
   i4 = i1 + 24 | 0;
   i3 = HEAP32[i4 >> 2] | 0;
   if ((i3 | 0) == (HEAP32[i1 + 28 >> 2] | 0)) i2 = FUNCTION_TABLE_iii[HEAP32[(HEAP32[i1 >> 2] | 0) + 52 >> 2] & 63](i1, i2) | 0; else {
    HEAP32[i4 >> 2] = i3 + 4;
    HEAP32[i3 >> 2] = i2;
   }
   i1 = (i2 | 0) == -1 ? 0 : i1;
  }
  i5 = i5 + 4 | 0;
 }
 STACKTOP = i8;
 return i1 | 0;
}

function __ZNSt3__112_GLOBAL__N_117as_integer_helperIlNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEPFlPKcPPciEEET_RKS7_RKT0_PjiT1_(i5, i1, i6, i2) {
 i5 = i5 | 0;
 i1 = i1 | 0;
 i6 = i6 | 0;
 i2 = i2 | 0;
 var i3 = 0, i4 = 0, i7 = 0, i8 = 0, i9 = 0;
 i7 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i4 = i7;
 i3 = (HEAP8[i1 >> 0] & 1) == 0 ? i1 + 1 | 0 : HEAP32[i1 + 8 >> 2] | 0;
 i8 = ___errno_location() | 0;
 i9 = HEAP32[i8 >> 2] | 0;
 HEAP32[i8 >> 2] = 0;
 i2 = _strtol(i3, i4, i2) | 0;
 i1 = HEAP32[i8 >> 2] | 0;
 HEAP32[i8 >> 2] = i9;
 if ((i1 | 0) == 34) __ZNSt3__112_GLOBAL__N_130throw_from_string_out_of_rangeERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEE(i5);
 i1 = HEAP32[i4 >> 2] | 0;
 if ((i1 | 0) == (i3 | 0)) __ZNSt3__112_GLOBAL__N_129throw_from_string_invalid_argERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEE(i5);
 if (i6 | 0) HEAP32[i6 >> 2] = i1 - i3;
 STACKTOP = i7;
 return i2 | 0;
}

function __ZN4wasm16PrintSExpression17visitCallIndirectEPNS_12CallIndirectE(i3, i1) {
 i3 = i3 | 0;
 i1 = i1 | 0;
 var i2 = 0, i4 = 0, i5 = 0, i6 = 0;
 i4 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i2 = i4 + 4 | 0;
 i6 = i4;
 i5 = __Z12printOpeningRNSt3__113basic_ostreamIcNS_11char_traitsIcEEEEPKcb(HEAP32[i3 >> 2] | 0, 18334, 0) | 0;
 HEAP32[i6 >> 2] = HEAP32[HEAP32[i1 + 20 >> 2] >> 2];
 HEAP32[i2 >> 2] = HEAP32[i6 >> 2];
 __ZN4wasmlsERNSt3__113basic_ostreamIcNS0_11char_traitsIcEEEENS_4NameE(i5, i2) | 0;
 __ZN4wasm16PrintSExpression9incIndentEv(i3);
 __ZN4wasm16PrintSExpression13printFullLineEPNS_10ExpressionE(i3, HEAP32[i1 + 24 >> 2] | 0);
 i2 = HEAP32[i1 + 12 >> 2] | 0;
 i1 = HEAP32[i1 + 8 >> 2] | 0;
 while (1) {
  if ((i1 | 0) == (i2 | 0)) break;
  __ZN4wasm16PrintSExpression13printFullLineEPNS_10ExpressionE(i3, HEAP32[i1 >> 2] | 0);
  i1 = i1 + 4 | 0;
 }
 __ZN4wasm16PrintSExpression9decIndentEv(i3);
 STACKTOP = i4;
 return;
}

function __ZN10__cxxabiv112_GLOBAL__N_119parse_discriminatorEPKcS2_(i1, i4) {
 i1 = i1 | 0;
 i4 = i4 | 0;
 var i2 = 0, i3 = 0;
 L1 : do if ((i1 | 0) != (i4 | 0)) {
  i2 = HEAP8[i1 >> 0] | 0;
  if (i2 << 24 >> 24 != 95) {
   if (((i2 << 24 >> 24) + -48 | 0) >>> 0 >= 10) break;
   while (1) {
    i1 = i1 + 1 | 0;
    if ((i1 | 0) == (i4 | 0)) {
     i1 = i4;
     break L1;
    }
    if (((HEAP8[i1 >> 0] | 0) + -48 | 0) >>> 0 >= 10) break L1;
   }
  }
  i2 = i1 + 1 | 0;
  if ((i2 | 0) != (i4 | 0)) {
   i2 = HEAP8[i2 >> 0] | 0;
   if (((i2 << 24 >> 24) + -48 | 0) >>> 0 < 10) {
    i1 = i1 + 2 | 0;
    break;
   }
   if (i2 << 24 >> 24 == 95) {
    i2 = i1 + 2 | 0;
    while (1) {
     if ((i2 | 0) == (i4 | 0)) break L1;
     i3 = HEAP8[i2 >> 0] | 0;
     if (((i3 << 24 >> 24) + -48 | 0) >>> 0 >= 10) break;
     i2 = i2 + 1 | 0;
    }
    return (i3 << 24 >> 24 == 95 ? i2 + 1 | 0 : i1) | 0;
   }
  }
 } while (0);
 return i1 | 0;
}

function __ZNSt3__13mapIjjNS_4lessIjEENS_9allocatorINS_4pairIKjjEEEEE16__find_equal_keyERPNS_16__tree_node_baseIPvEERS5_(i1, i5, i3) {
 i1 = i1 | 0;
 i5 = i5 | 0;
 i3 = i3 | 0;
 var i2 = 0, i4 = 0;
 i1 = i1 + 4 | 0;
 i2 = HEAP32[i1 >> 2] | 0;
 do if (i2) {
  i4 = HEAP32[i3 >> 2] | 0;
  while (1) {
   i1 = HEAP32[i2 + 16 >> 2] | 0;
   if (i4 >>> 0 < i1 >>> 0) {
    i1 = HEAP32[i2 >> 2] | 0;
    if (!i1) {
     i1 = i2;
     i3 = 5;
     break;
    }
   } else {
    if (i1 >>> 0 >= i4 >>> 0) {
     i1 = i2;
     i3 = 10;
     break;
    }
    i1 = i2 + 4 | 0;
    i3 = HEAP32[i1 >> 2] | 0;
    if (!i3) {
     i3 = 9;
     break;
    } else i1 = i3;
   }
   i2 = i1;
  }
  if ((i3 | 0) == 5) {
   HEAP32[i5 >> 2] = i2;
   break;
  } else if ((i3 | 0) == 9) {
   HEAP32[i5 >> 2] = i2;
   break;
  } else if ((i3 | 0) == 10) {
   HEAP32[i5 >> 2] = i1;
   i1 = i5;
   break;
  }
 } else HEAP32[i5 >> 2] = i1; while (0);
 return i1 | 0;
}

function __ZN4wasm16PrintSExpression13printCallBodyEPNS_4CallE(i4, i1) {
 i4 = i4 | 0;
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i5 = 0, i6 = 0;
 i5 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i3 = i5 + 4 | 0;
 i6 = i5;
 i2 = HEAP32[i4 >> 2] | 0;
 HEAP32[i6 >> 2] = HEAP32[i1 + 20 >> 2];
 HEAP32[i3 >> 2] = HEAP32[i6 >> 2];
 __ZN4wasmlsERNSt3__113basic_ostreamIcNS0_11char_traitsIcEEEENS_4NameE(i2, i3) | 0;
 i3 = i1 + 8 | 0;
 i1 = i1 + 12 | 0;
 if ((HEAP32[i1 >> 2] | 0) == (HEAP32[i3 >> 2] | 0)) __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_c(HEAP32[i4 >> 2] | 0, 41) | 0; else {
  __ZN4wasm16PrintSExpression9incIndentEv(i4);
  i2 = HEAP32[i1 >> 2] | 0;
  i1 = HEAP32[i3 >> 2] | 0;
  while (1) {
   if ((i1 | 0) == (i2 | 0)) break;
   __ZN4wasm16PrintSExpression13printFullLineEPNS_10ExpressionE(i4, HEAP32[i1 >> 2] | 0);
   i1 = i1 + 4 | 0;
  }
  __ZN4wasm16PrintSExpression9decIndentEv(i4);
 }
 STACKTOP = i5;
 return;
}

function __ZNSt3__127__num_get_unsigned_integralItEET_PKcS3_Rji(i1, i6, i7, i2) {
 i1 = i1 | 0;
 i6 = i6 | 0;
 i7 = i7 | 0;
 i2 = i2 | 0;
 var i3 = 0, i4 = 0, i5 = 0, i8 = 0, i9 = 0;
 i9 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i8 = i9;
 do if ((i1 | 0) == (i6 | 0)) {
  HEAP32[i7 >> 2] = 4;
  i1 = 0;
 } else {
  if ((HEAP8[i1 >> 0] | 0) == 45) {
   HEAP32[i7 >> 2] = 4;
   i1 = 0;
   break;
  }
  i4 = ___errno_location() | 0;
  i5 = HEAP32[i4 >> 2] | 0;
  HEAP32[i4 >> 2] = 0;
  i1 = _strtoull_l(i1, i8, i2, __ZNSt3__16__clocEv() | 0) | 0;
  i2 = tempRet0;
  i3 = HEAP32[i4 >> 2] | 0;
  if (!i3) HEAP32[i4 >> 2] = i5;
  do if ((HEAP32[i8 >> 2] | 0) == (i6 | 0)) if (i2 >>> 0 > 0 | (i2 | 0) == 0 & i1 >>> 0 > 65535 | (i3 | 0) == 34) {
   HEAP32[i7 >> 2] = 4;
   i1 = -1;
   break;
  } else {
   i1 = i1 & 65535;
   break;
  } else {
   HEAP32[i7 >> 2] = 4;
   i1 = 0;
  } while (0);
 } while (0);
 STACKTOP = i9;
 return i1 | 0;
}

function __ZNSt3__16__treeIjNS_4lessIjEENS_9allocatorIjEEE12__find_equalIjEERPNS_16__tree_node_baseIPvEESB_RKT_(i1, i5, i3) {
 i1 = i1 | 0;
 i5 = i5 | 0;
 i3 = i3 | 0;
 var i2 = 0, i4 = 0;
 i1 = i1 + 4 | 0;
 i2 = HEAP32[i1 >> 2] | 0;
 do if (i2) {
  i4 = HEAP32[i3 >> 2] | 0;
  while (1) {
   i1 = HEAP32[i2 + 16 >> 2] | 0;
   if (i4 >>> 0 < i1 >>> 0) {
    i1 = HEAP32[i2 >> 2] | 0;
    if (!i1) {
     i1 = i2;
     i3 = 5;
     break;
    }
   } else {
    if (i1 >>> 0 >= i4 >>> 0) {
     i1 = i2;
     i3 = 10;
     break;
    }
    i1 = i2 + 4 | 0;
    i3 = HEAP32[i1 >> 2] | 0;
    if (!i3) {
     i3 = 9;
     break;
    } else i1 = i3;
   }
   i2 = i1;
  }
  if ((i3 | 0) == 5) {
   HEAP32[i5 >> 2] = i2;
   break;
  } else if ((i3 | 0) == 9) {
   HEAP32[i5 >> 2] = i2;
   break;
  } else if ((i3 | 0) == 10) {
   HEAP32[i5 >> 2] = i1;
   i1 = i5;
   break;
  }
 } else HEAP32[i5 >> 2] = i1; while (0);
 return i1 | 0;
}

function __ZNKSt3__115basic_stringbufIcNS_11char_traitsIcEENS_9allocatorIcEEE3strEv(i5, i4) {
 i5 = i5 | 0;
 i4 = i4 | 0;
 var i1 = 0, i2 = 0, i3 = 0;
 i1 = HEAP32[i4 + 48 >> 2] | 0;
 L1 : do if (!(i1 & 16)) {
  if (i1 & 8 | 0) {
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6__initIPcEENS_9enable_ifIXsr21__is_forward_iteratorIT_EE5valueEvE4typeES9_S9_(i5, HEAP32[i4 + 8 >> 2] | 0, HEAP32[i4 + 16 >> 2] | 0);
   break;
  }
  i1 = 0;
  while (1) {
   if ((i1 | 0) == 3) break L1;
   HEAP32[i5 + (i1 << 2) >> 2] = 0;
   i1 = i1 + 1 | 0;
  }
 } else {
  i2 = i4 + 44 | 0;
  i1 = HEAP32[i2 >> 2] | 0;
  i3 = HEAP32[i4 + 24 >> 2] | 0;
  if (i1 >>> 0 < i3 >>> 0) {
   HEAP32[i2 >> 2] = i3;
   i1 = i3;
  }
  __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6__initIPcEENS_9enable_ifIXsr21__is_forward_iteratorIT_EE5valueEvE4typeES9_S9_(i5, HEAP32[i4 + 20 >> 2] | 0, i1);
 } while (0);
 return;
}

function __ZNSt3__13mapIN6cashew7IStringEN4wasm7LiteralENS_4lessIS2_EENS_9allocatorINS_4pairIKS2_S4_EEEEEixERS9_(i6, i4) {
 i6 = i6 | 0;
 i4 = i4 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i5 = 0, i7 = 0;
 i7 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i5 = i7 + 12 | 0;
 i3 = i7;
 i2 = __ZNSt3__13mapIN6cashew7IStringEN4wasm7LiteralENS_4lessIS2_EENS_9allocatorINS_4pairIKS2_S4_EEEEE16__find_equal_keyERPNS_16__tree_node_baseIPvEERS9_(i6, i5, i4) | 0;
 i1 = HEAP32[i2 >> 2] | 0;
 if (!i1) {
  __ZNSt3__13mapIN6cashew7IStringEN4wasm7LiteralENS_4lessIS2_EENS_9allocatorINS_4pairIKS2_S4_EEEEE25__construct_node_with_keyERS9_(i3, i6, i4);
  i1 = HEAP32[i3 >> 2] | 0;
  __ZNSt3__16__treeINS_12__value_typeIN6cashew7IStringEN4wasm7LiteralEEENS_19__map_value_compareIS3_S6_NS_4lessIS3_EELb1EEENS_9allocatorIS6_EEE16__insert_node_atEPNS_16__tree_node_baseIPvEERSH_SH_(i6, HEAP32[i5 >> 2] | 0, i2, i1);
 }
 STACKTOP = i7;
 return i1 + 24 | 0;
}

function __ZNSt3__13mapIN6cashew7IStringEN4wasm7LiteralENS_4lessIS2_EENS_9allocatorINS_4pairIKS2_S4_EEEEEixEOS2_(i6, i4) {
 i6 = i6 | 0;
 i4 = i4 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i5 = 0, i7 = 0;
 i7 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i5 = i7 + 12 | 0;
 i3 = i7;
 i2 = __ZNSt3__13mapIN6cashew7IStringEN4wasm7LiteralENS_4lessIS2_EENS_9allocatorINS_4pairIKS2_S4_EEEEE16__find_equal_keyERPNS_16__tree_node_baseIPvEERS9_(i6, i5, i4) | 0;
 i1 = HEAP32[i2 >> 2] | 0;
 if (!i1) {
  __ZNSt3__13mapIN6cashew7IStringEN4wasm7LiteralENS_4lessIS2_EENS_9allocatorINS_4pairIKS2_S4_EEEEE25__construct_node_with_keyEOS2_(i3, i6, i4);
  i1 = HEAP32[i3 >> 2] | 0;
  __ZNSt3__16__treeINS_12__value_typeIN6cashew7IStringEN4wasm7LiteralEEENS_19__map_value_compareIS3_S6_NS_4lessIS3_EELb1EEENS_9allocatorIS6_EEE16__insert_node_atEPNS_16__tree_node_baseIPvEERSH_SH_(i6, HEAP32[i5 >> 2] | 0, i2, i1);
 }
 STACKTOP = i7;
 return i1 + 24 | 0;
}

function __ZNSt3__13mapIN4wasm4NameEPNS1_12FunctionTypeENS_4lessIS2_EENS_9allocatorINS_4pairIKS2_S4_EEEEEixERS9_(i6, i4) {
 i6 = i6 | 0;
 i4 = i4 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i5 = 0, i7 = 0;
 i7 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i5 = i7 + 12 | 0;
 i3 = i7;
 i2 = __ZNSt3__13mapIN4wasm4NameEPNS1_12FunctionTypeENS_4lessIS2_EENS_9allocatorINS_4pairIKS2_S4_EEEEE16__find_equal_keyERPNS_16__tree_node_baseIPvEERS9_(i6, i5, i4) | 0;
 i1 = HEAP32[i2 >> 2] | 0;
 if (!i1) {
  __ZNSt3__13mapIN4wasm4NameEPNS1_12FunctionTypeENS_4lessIS2_EENS_9allocatorINS_4pairIKS2_S4_EEEEE25__construct_node_with_keyERS9_(i3, i6, i4);
  i1 = HEAP32[i3 >> 2] | 0;
  __ZNSt3__16__treeINS_12__value_typeIN4wasm4NameEPNS2_12FunctionTypeEEENS_19__map_value_compareIS3_S6_NS_4lessIS3_EELb1EEENS_9allocatorIS6_EEE16__insert_node_atEPNS_16__tree_node_baseIPvEERSH_SH_(i6, HEAP32[i5 >> 2] | 0, i2, i1);
 }
 STACKTOP = i7;
 return i1 + 20 | 0;
}

function __ZNSt3__16__treeINS_12__value_typeIjN4wasm14SimplifyLocals12SinkableInfoEEENS_19__map_value_compareIjS5_NS_4lessIjEELb1EEENS_9allocatorIS5_EEE14__erase_uniqueIjEEjRKT_(i4, i1) {
 i4 = i4 | 0;
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i5 = 0;
 i5 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i2 = i5 + 4 | 0;
 i3 = i5;
 i1 = __ZNSt3__16__treeINS_12__value_typeIjN4wasm14SimplifyLocals12SinkableInfoEEENS_19__map_value_compareIjS5_NS_4lessIjEELb1EEENS_9allocatorIS5_EEE4findIjEENS_15__tree_iteratorIS5_PNS_11__tree_nodeIS5_PvEEiEERKT_(i4, i1) | 0;
 if ((i1 | 0) == (i4 + 4 | 0)) i1 = 0; else {
  HEAP32[i3 >> 2] = i1;
  HEAP32[i2 >> 2] = HEAP32[i3 >> 2];
  __ZNSt3__16__treeINS_12__value_typeIjN4wasm14SimplifyLocals12SinkableInfoEEENS_19__map_value_compareIjS5_NS_4lessIjEELb1EEENS_9allocatorIS5_EEE5eraseENS_21__tree_const_iteratorIS5_PNS_11__tree_nodeIS5_PvEEiEE(i4, i2) | 0;
  i1 = 1;
 }
 STACKTOP = i5;
 return i1 | 0;
}

function __ZNK4wasm7Literal3mulERKS0_(i1, i3, i2) {
 i1 = i1 | 0;
 i3 = i3 | 0;
 i2 = i2 | 0;
 var d4 = 0.0;
 switch (HEAP32[i3 >> 2] | 0) {
 case 1:
  {
   i3 = Math_imul(HEAP32[i2 + 8 >> 2] | 0, HEAP32[i3 + 8 >> 2] | 0) | 0;
   HEAP32[i1 >> 2] = 1;
   HEAP32[i1 + 8 >> 2] = i3;
   break;
  }
 case 2:
  {
   i3 = i3 + 8 | 0;
   i2 = i2 + 8 | 0;
   i2 = ___muldi3(HEAP32[i2 >> 2] | 0, HEAP32[i2 + 4 >> 2] | 0, HEAP32[i3 >> 2] | 0, HEAP32[i3 + 4 >> 2] | 0) | 0;
   HEAP32[i1 >> 2] = 2;
   i3 = i1 + 8 | 0;
   HEAP32[i3 >> 2] = i2;
   HEAP32[i3 + 4 >> 2] = tempRet0;
   break;
  }
 case 3:
  {
   d4 = +__ZNK4wasm7Literal6getf32Ev(i3) * +__ZNK4wasm7Literal6getf32Ev(i2);
   HEAP32[i1 >> 2] = 3;
   HEAPF32[i1 + 8 >> 2] = d4;
   break;
  }
 case 4:
  {
   d4 = +__ZNK4wasm7Literal6getf64Ev(i3) * +__ZNK4wasm7Literal6getf64Ev(i2);
   HEAP32[i1 >> 2] = 4;
   HEAPF64[i1 + 8 >> 3] = d4;
   break;
  }
 default:
  {}
 }
 return;
}

function __ZNK10__cxxabiv117__class_type_info29process_static_type_above_dstEPNS_19__dynamic_cast_infoEPKvS4_i(i2, i5, i3, i1, i4) {
 i2 = i2 | 0;
 i5 = i5 | 0;
 i3 = i3 | 0;
 i1 = i1 | 0;
 i4 = i4 | 0;
 HEAP8[i5 + 53 >> 0] = 1;
 do if ((HEAP32[i5 + 4 >> 2] | 0) == (i1 | 0)) {
  HEAP8[i5 + 52 >> 0] = 1;
  i1 = i5 + 16 | 0;
  i2 = HEAP32[i1 >> 2] | 0;
  if (!i2) {
   HEAP32[i1 >> 2] = i3;
   HEAP32[i5 + 24 >> 2] = i4;
   HEAP32[i5 + 36 >> 2] = 1;
   if (!((i4 | 0) == 1 ? (HEAP32[i5 + 48 >> 2] | 0) == 1 : 0)) break;
   HEAP8[i5 + 54 >> 0] = 1;
   break;
  }
  if ((i2 | 0) != (i3 | 0)) {
   i4 = i5 + 36 | 0;
   HEAP32[i4 >> 2] = (HEAP32[i4 >> 2] | 0) + 1;
   HEAP8[i5 + 54 >> 0] = 1;
   break;
  }
  i2 = i5 + 24 | 0;
  i1 = HEAP32[i2 >> 2] | 0;
  if ((i1 | 0) == 2) {
   HEAP32[i2 >> 2] = i4;
   i1 = i4;
  }
  if ((i1 | 0) == 1 ? (HEAP32[i5 + 48 >> 2] | 0) == 1 : 0) HEAP8[i5 + 54 >> 0] = 1;
 } while (0);
 return;
}

function __ZNK4wasm7Literal3subERKS0_(i1, i3, i2) {
 i1 = i1 | 0;
 i3 = i3 | 0;
 i2 = i2 | 0;
 var d4 = 0.0;
 switch (HEAP32[i3 >> 2] | 0) {
 case 1:
  {
   i3 = (HEAP32[i3 + 8 >> 2] | 0) - (HEAP32[i2 + 8 >> 2] | 0) | 0;
   HEAP32[i1 >> 2] = 1;
   HEAP32[i1 + 8 >> 2] = i3;
   break;
  }
 case 2:
  {
   i3 = i3 + 8 | 0;
   i2 = i2 + 8 | 0;
   i2 = _i64Subtract(HEAP32[i3 >> 2] | 0, HEAP32[i3 + 4 >> 2] | 0, HEAP32[i2 >> 2] | 0, HEAP32[i2 + 4 >> 2] | 0) | 0;
   HEAP32[i1 >> 2] = 2;
   i3 = i1 + 8 | 0;
   HEAP32[i3 >> 2] = i2;
   HEAP32[i3 + 4 >> 2] = tempRet0;
   break;
  }
 case 3:
  {
   d4 = +__ZNK4wasm7Literal6getf32Ev(i3) - +__ZNK4wasm7Literal6getf32Ev(i2);
   HEAP32[i1 >> 2] = 3;
   HEAPF32[i1 + 8 >> 2] = d4;
   break;
  }
 case 4:
  {
   d4 = +__ZNK4wasm7Literal6getf64Ev(i3) - +__ZNK4wasm7Literal6getf64Ev(i2);
   HEAP32[i1 >> 2] = 4;
   HEAPF64[i1 + 8 >> 3] = d4;
   break;
  }
 default:
  {}
 }
 return;
}

function __ZNSt3__112__hash_tableINS_17__hash_value_typeIN6cashew7IStringEiEENS_22__unordered_map_hasherIS3_S4_NS_4hashIS3_EELb1EEENS_21__unordered_map_equalIS3_S4_NS_8equal_toIS3_EELb1EEENS_9allocatorIS4_EEEC2EOSF_(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 var i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0;
 i4 = HEAP32[i1 >> 2] | 0;
 HEAP32[i1 >> 2] = 0;
 i6 = i1 + 4 | 0;
 i5 = HEAP32[i6 >> 2] | 0;
 HEAP32[i6 >> 2] = 0;
 HEAP32[i2 >> 2] = i4;
 HEAP32[i2 + 4 >> 2] = i5;
 i6 = i2 + 8 | 0;
 i7 = i1 + 8 | 0;
 i3 = HEAP32[i7 >> 2] | 0;
 HEAP32[i6 >> 2] = i3;
 i8 = i1 + 12 | 0;
 i9 = HEAP32[i8 >> 2] | 0;
 HEAP32[i2 + 12 >> 2] = i9;
 HEAP32[i2 + 16 >> 2] = HEAP32[i1 + 16 >> 2];
 if (i9 | 0) {
  i1 = HEAP32[i3 + 4 >> 2] | 0;
  i2 = i5 + -1 | 0;
  if (!(i2 & i5)) i1 = i2 & i1; else i1 = (i1 >>> 0) % (i5 >>> 0) | 0;
  HEAP32[i4 + (i1 << 2) >> 2] = i6;
  HEAP32[i7 >> 2] = 0;
  HEAP32[i8 >> 2] = 0;
 }
 return;
}

function __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE9__grow_byEjjjjjj(i10, i9, i1, i4, i7, i8, i6) {
 i10 = i10 | 0;
 i9 = i9 | 0;
 i1 = i1 | 0;
 i4 = i4 | 0;
 i7 = i7 | 0;
 i8 = i8 | 0;
 i6 = i6 | 0;
 var i2 = 0, i3 = 0, i5 = 0;
 if ((1073741807 - i9 | 0) >>> 0 < i1 >>> 0) __ZNKSt3__121__basic_string_commonILb1EE20__throw_length_errorEv(i10);
 if (!(HEAP8[i10 >> 0] & 1)) i5 = i10 + 4 | 0; else i5 = HEAP32[i10 + 8 >> 2] | 0;
 if (i9 >>> 0 < 536870887) {
  i2 = i1 + i9 | 0;
  i3 = i9 << 1;
  i2 = i2 >>> 0 < i3 >>> 0 ? i3 : i2;
  i2 = i2 >>> 0 < 2 ? 2 : i2 + 4 & -4;
 } else i2 = 1073741807;
 i3 = __Znwj(i2 << 2) | 0;
 if (i7 | 0) _wmemcpy(i3, i5, i7) | 0;
 i1 = i4 - i8 | 0;
 if ((i1 | 0) != (i7 | 0)) _wmemcpy(i3 + (i7 << 2) + (i6 << 2) | 0, i5 + (i7 << 2) + (i8 << 2) | 0, i1 - i7 | 0) | 0;
 if ((i9 | 0) != 1) __ZdlPv(i5);
 HEAP32[i10 + 8 >> 2] = i3;
 HEAP32[i10 >> 2] = i2 | 1;
 return;
}

function ___strchrnul(i1, i4) {
 i1 = i1 | 0;
 i4 = i4 | 0;
 var i2 = 0, i3 = 0, i5 = 0;
 i3 = i4 & 255;
 L1 : do if (!i3) i1 = i1 + (_strlen(i1) | 0) | 0; else {
  if (i1 & 3) {
   i2 = i4 & 255;
   do {
    i5 = HEAP8[i1 >> 0] | 0;
    if (i5 << 24 >> 24 == 0 ? 1 : i5 << 24 >> 24 == i2 << 24 >> 24) break L1;
    i1 = i1 + 1 | 0;
   } while ((i1 & 3 | 0) != 0);
  }
  i3 = Math_imul(i3, 16843009) | 0;
  i2 = HEAP32[i1 >> 2] | 0;
  L10 : do if (!((i2 & -2139062144 ^ -2139062144) & i2 + -16843009)) do {
   i5 = i2 ^ i3;
   if ((i5 & -2139062144 ^ -2139062144) & i5 + -16843009 | 0) break L10;
   i1 = i1 + 4 | 0;
   i2 = HEAP32[i1 >> 2] | 0;
  } while (!((i2 & -2139062144 ^ -2139062144) & i2 + -16843009 | 0)); while (0);
  i2 = i4 & 255;
  while (1) {
   i5 = HEAP8[i1 >> 0] | 0;
   if (i5 << 24 >> 24 == 0 ? 1 : i5 << 24 >> 24 == i2 << 24 >> 24) break; else i1 = i1 + 1 | 0;
  }
 } while (0);
 return i1 | 0;
}

function __ZNK4wasm7Literal3addERKS0_(i1, i3, i2) {
 i1 = i1 | 0;
 i3 = i3 | 0;
 i2 = i2 | 0;
 var d4 = 0.0;
 switch (HEAP32[i3 >> 2] | 0) {
 case 1:
  {
   i3 = (HEAP32[i2 + 8 >> 2] | 0) + (HEAP32[i3 + 8 >> 2] | 0) | 0;
   HEAP32[i1 >> 2] = 1;
   HEAP32[i1 + 8 >> 2] = i3;
   break;
  }
 case 2:
  {
   i3 = i3 + 8 | 0;
   i2 = i2 + 8 | 0;
   i2 = _i64Add(HEAP32[i2 >> 2] | 0, HEAP32[i2 + 4 >> 2] | 0, HEAP32[i3 >> 2] | 0, HEAP32[i3 + 4 >> 2] | 0) | 0;
   HEAP32[i1 >> 2] = 2;
   i3 = i1 + 8 | 0;
   HEAP32[i3 >> 2] = i2;
   HEAP32[i3 + 4 >> 2] = tempRet0;
   break;
  }
 case 3:
  {
   d4 = +__ZNK4wasm7Literal6getf32Ev(i3) + +__ZNK4wasm7Literal6getf32Ev(i2);
   HEAP32[i1 >> 2] = 3;
   HEAPF32[i1 + 8 >> 2] = d4;
   break;
  }
 case 4:
  {
   d4 = +__ZNK4wasm7Literal6getf64Ev(i3) + +__ZNK4wasm7Literal6getf64Ev(i2);
   HEAP32[i1 >> 2] = 4;
   HEAPF64[i1 + 8 >> 3] = d4;
   break;
  }
 default:
  {}
 }
 return;
}

function __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i6, i5) {
 i6 = i6 | 0;
 i5 = i5 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i7 = 0;
 i2 = HEAP32[i6 >> 2] | 0;
 i3 = i6 + 4 | 0;
 i4 = i5 + 4 | 0;
 i1 = HEAP32[i3 >> 2] | 0;
 while (1) {
  if ((i1 | 0) == (i2 | 0)) break;
  i7 = i1 + -24 | 0;
  __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_((HEAP32[i4 >> 2] | 0) + -24 | 0, i7);
  HEAP32[i4 >> 2] = (HEAP32[i4 >> 2] | 0) + -24;
  i1 = i7;
 }
 i7 = HEAP32[i6 >> 2] | 0;
 HEAP32[i6 >> 2] = HEAP32[i4 >> 2];
 HEAP32[i4 >> 2] = i7;
 i7 = i5 + 8 | 0;
 i2 = HEAP32[i3 >> 2] | 0;
 HEAP32[i3 >> 2] = HEAP32[i7 >> 2];
 HEAP32[i7 >> 2] = i2;
 i3 = i6 + 8 | 0;
 i7 = i5 + 12 | 0;
 i6 = HEAP32[i3 >> 2] | 0;
 HEAP32[i3 >> 2] = HEAP32[i7 >> 2];
 HEAP32[i7 >> 2] = i6;
 HEAP32[i5 >> 2] = HEAP32[i4 >> 2];
 return;
}

function __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj(i6, i5, i4) {
 i6 = i6 | 0;
 i5 = i5 | 0;
 i4 = i4 | 0;
 var i1 = 0, i2 = 0, i3 = 0;
 i1 = HEAP8[i6 >> 0] | 0;
 if (!(i1 & 1)) i2 = 10; else {
  i1 = HEAP32[i6 >> 2] | 0;
  i2 = (i1 & -2) + -1 | 0;
  i1 = i1 & 255;
 }
 if (!(i1 & 1)) i3 = (i1 & 255) >>> 1; else i3 = HEAP32[i6 + 4 >> 2] | 0;
 if ((i2 - i3 | 0) >>> 0 >= i4 >>> 0) {
  if (i4 | 0) {
   if (!(i1 & 1)) i2 = i6 + 1 | 0; else i2 = HEAP32[i6 + 8 >> 2] | 0;
   _memcpy(i2 + i3 | 0, i5 | 0, i4 | 0) | 0;
   i1 = i3 + i4 | 0;
   if (!(HEAP8[i6 >> 0] & 1)) HEAP8[i6 >> 0] = i1 << 1; else HEAP32[i6 + 4 >> 2] = i1;
   HEAP8[i2 + i1 >> 0] = 0;
  }
 } else __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE21__grow_by_and_replaceEjjjjjjPKc(i6, i2, i4 - i2 + i3 | 0, i3, i3, 0, i4, i5);
 return i6 | 0;
}

function __ZNSt3__127__num_get_unsigned_integralImEET_PKcS3_Rji(i1, i6, i7, i2) {
 i1 = i1 | 0;
 i6 = i6 | 0;
 i7 = i7 | 0;
 i2 = i2 | 0;
 var i3 = 0, i4 = 0, i5 = 0, i8 = 0, i9 = 0;
 i9 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i8 = i9;
 do if ((i1 | 0) == (i6 | 0)) {
  HEAP32[i7 >> 2] = 4;
  i1 = 0;
 } else {
  if ((HEAP8[i1 >> 0] | 0) == 45) {
   HEAP32[i7 >> 2] = 4;
   i1 = 0;
   break;
  }
  i4 = ___errno_location() | 0;
  i5 = HEAP32[i4 >> 2] | 0;
  HEAP32[i4 >> 2] = 0;
  i1 = _strtoull_l(i1, i8, i2, __ZNSt3__16__clocEv() | 0) | 0;
  i2 = tempRet0;
  i3 = HEAP32[i4 >> 2] | 0;
  if (!i3) HEAP32[i4 >> 2] = i5;
  do if ((HEAP32[i8 >> 2] | 0) == (i6 | 0)) if (i2 >>> 0 > 0 | (i2 | 0) == 0 & i1 >>> 0 > 4294967295 | (i3 | 0) == 34) {
   HEAP32[i7 >> 2] = 4;
   i1 = -1;
   break;
  } else break; else {
   HEAP32[i7 >> 2] = 4;
   i1 = 0;
  } while (0);
 } while (0);
 STACKTOP = i9;
 return i1 | 0;
}

function __ZNSt3__127__num_get_unsigned_integralIjEET_PKcS3_Rji(i1, i6, i7, i2) {
 i1 = i1 | 0;
 i6 = i6 | 0;
 i7 = i7 | 0;
 i2 = i2 | 0;
 var i3 = 0, i4 = 0, i5 = 0, i8 = 0, i9 = 0;
 i9 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i8 = i9;
 do if ((i1 | 0) == (i6 | 0)) {
  HEAP32[i7 >> 2] = 4;
  i1 = 0;
 } else {
  if ((HEAP8[i1 >> 0] | 0) == 45) {
   HEAP32[i7 >> 2] = 4;
   i1 = 0;
   break;
  }
  i4 = ___errno_location() | 0;
  i5 = HEAP32[i4 >> 2] | 0;
  HEAP32[i4 >> 2] = 0;
  i1 = _strtoull_l(i1, i8, i2, __ZNSt3__16__clocEv() | 0) | 0;
  i2 = tempRet0;
  i3 = HEAP32[i4 >> 2] | 0;
  if (!i3) HEAP32[i4 >> 2] = i5;
  do if ((HEAP32[i8 >> 2] | 0) == (i6 | 0)) if (i2 >>> 0 > 0 | (i2 | 0) == 0 & i1 >>> 0 > 4294967295 | (i3 | 0) == 34) {
   HEAP32[i7 >> 2] = 4;
   i1 = -1;
   break;
  } else break; else {
   HEAP32[i7 >> 2] = 4;
   i1 = 0;
  } while (0);
 } while (0);
 STACKTOP = i9;
 return i1 | 0;
}

function _atoll(i1) {
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i4 = 0, i5 = 0;
 while (1) {
  i2 = i1 + 1 | 0;
  if (!(_isspace(HEAP8[i1 >> 0] | 0) | 0)) break; else i1 = i2;
 }
 i3 = HEAP8[i1 >> 0] | 0;
 switch (i3 << 24 >> 24 | 0) {
 case 45:
  {
   i4 = 1;
   i5 = 5;
   break;
  }
 case 43:
  {
   i4 = 0;
   i5 = 5;
   break;
  }
 default:
  i4 = 0;
 }
 if ((i5 | 0) == 5) {
  i1 = i2;
  i3 = HEAP8[i2 >> 0] | 0;
 }
 i5 = (i3 << 24 >> 24) + -48 | 0;
 if (i5 >>> 0 < 10) {
  i3 = 0;
  i2 = 0;
  do {
   i2 = ___muldi3(i2 | 0, i3 | 0, 10, 0) | 0;
   i1 = i1 + 1 | 0;
   i2 = _i64Subtract(i2 | 0, tempRet0 | 0, i5 | 0, ((i5 | 0) < 0) << 31 >> 31 | 0) | 0;
   i3 = tempRet0;
   i5 = (HEAP8[i1 >> 0] | 0) + -48 | 0;
  } while (i5 >>> 0 < 10);
  i1 = i3;
 } else {
  i2 = 0;
  i1 = 0;
 }
 i4 = (i4 | 0) != 0;
 i5 = _i64Subtract(0, 0, i2 | 0, i1 | 0) | 0;
 tempRet0 = i4 ? i1 : tempRet0;
 return (i4 ? i2 : i5) | 0;
}

function __ZNSt3__16vectorINS_8functionIFN4wasm15ThreadWorkStateEvEEENS_9allocatorIS5_EEE26__swap_out_circular_bufferERNS_14__split_bufferIS5_RS7_EE(i6, i5) {
 i6 = i6 | 0;
 i5 = i5 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i7 = 0;
 i2 = HEAP32[i6 >> 2] | 0;
 i3 = i6 + 4 | 0;
 i4 = i5 + 4 | 0;
 i1 = HEAP32[i3 >> 2] | 0;
 while (1) {
  if ((i1 | 0) == (i2 | 0)) break;
  i7 = i1 + -24 | 0;
  __ZNSt3__18functionIFN4wasm15ThreadWorkStateEvEEC2EOS4_((HEAP32[i4 >> 2] | 0) + -24 | 0, i7);
  HEAP32[i4 >> 2] = (HEAP32[i4 >> 2] | 0) + -24;
  i1 = i7;
 }
 i7 = HEAP32[i6 >> 2] | 0;
 HEAP32[i6 >> 2] = HEAP32[i4 >> 2];
 HEAP32[i4 >> 2] = i7;
 i7 = i5 + 8 | 0;
 i2 = HEAP32[i3 >> 2] | 0;
 HEAP32[i3 >> 2] = HEAP32[i7 >> 2];
 HEAP32[i7 >> 2] = i2;
 i3 = i6 + 8 | 0;
 i7 = i5 + 12 | 0;
 i6 = HEAP32[i3 >> 2] | 0;
 HEAP32[i3 >> 2] = HEAP32[i7 >> 2];
 HEAP32[i7 >> 2] = i6;
 HEAP32[i5 >> 2] = HEAP32[i4 >> 2];
 return;
}

function __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6assignEPKcj(i6, i5, i4) {
 i6 = i6 | 0;
 i5 = i5 | 0;
 i4 = i4 | 0;
 var i1 = 0, i2 = 0, i3 = 0;
 i1 = HEAP8[i6 >> 0] | 0;
 if (!(i1 & 1)) i3 = 10; else {
  i1 = HEAP32[i6 >> 2] | 0;
  i3 = (i1 & -2) + -1 | 0;
  i1 = i1 & 255;
 }
 i2 = (i1 & 1) == 0;
 do if (i3 >>> 0 >= i4 >>> 0) {
  if (i2) i1 = i6 + 1 | 0; else i1 = HEAP32[i6 + 8 >> 2] | 0;
  _memmove(i1 | 0, i5 | 0, i4 | 0) | 0;
  HEAP8[i1 + i4 >> 0] = 0;
  if (!(HEAP8[i6 >> 0] & 1)) {
   HEAP8[i6 >> 0] = i4 << 1;
   break;
  } else {
   HEAP32[i6 + 4 >> 2] = i4;
   break;
  }
 } else {
  if (i2) i1 = (i1 & 255) >>> 1; else i1 = HEAP32[i6 + 4 >> 2] | 0;
  __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE21__grow_by_and_replaceEjjjjjjPKc(i6, i3, i4 - i3 | 0, i1, 0, i1, i4, i5);
 } while (0);
 return;
}

function __ZN4wasm6ModuleC2Ev(i2) {
 i2 = i2 | 0;
 var i1 = 0, i3 = 0, i4 = 0;
 i1 = i2 + 64 | 0;
 i3 = i2;
 i4 = i3 + 64 | 0;
 do {
  HEAP32[i3 >> 2] = 0;
  i3 = i3 + 4 | 0;
 } while ((i3 | 0) < (i4 | 0));
 HEAP32[i1 >> 2] = -1;
 i4 = i2 + 68 | 0;
 HEAP32[i4 >> 2] = 0;
 HEAP32[i4 + 4 >> 2] = 0;
 HEAP32[i4 + 8 >> 2] = 0;
 HEAP32[i4 + 12 >> 2] = 0;
 HEAP32[i4 + 16 >> 2] = 0;
 __ZN10MixedArenaC2Ev(i2 + 88 | 0);
 HEAP32[i2 + 144 >> 2] = 0;
 HEAP32[i2 + 148 >> 2] = 0;
 HEAP32[i2 + 140 >> 2] = i2 + 144;
 HEAP32[i2 + 156 >> 2] = 0;
 HEAP32[i2 + 160 >> 2] = 0;
 HEAP32[i2 + 152 >> 2] = i2 + 156;
 HEAP32[i2 + 168 >> 2] = 0;
 HEAP32[i2 + 172 >> 2] = 0;
 HEAP32[i2 + 164 >> 2] = i2 + 168;
 HEAP32[i2 + 180 >> 2] = 0;
 HEAP32[i2 + 184 >> 2] = 0;
 HEAP32[i2 + 176 >> 2] = i2 + 180;
 i4 = i2 + 188 | 0;
 HEAP32[i4 >> 2] = 0;
 HEAP32[i4 + 4 >> 2] = 0;
 HEAP32[i4 + 8 >> 2] = 0;
 HEAP32[i4 + 12 >> 2] = 0;
 return;
}

function __ZNSt3__13mapIN4wasm4NameEPNS1_8FunctionENS_4lessIS2_EENS_9allocatorINS_4pairIKS2_S4_EEEEEixERS9_(i6, i4) {
 i6 = i6 | 0;
 i4 = i4 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i5 = 0, i7 = 0;
 i7 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i5 = i7 + 12 | 0;
 i3 = i7;
 i2 = __ZNSt3__13mapIN4wasm4NameEPNS1_8FunctionENS_4lessIS2_EENS_9allocatorINS_4pairIKS2_S4_EEEEE16__find_equal_keyERPNS_16__tree_node_baseIPvEERS9_(i6, i5, i4) | 0;
 i1 = HEAP32[i2 >> 2] | 0;
 if (!i1) {
  __ZNSt3__13mapIN4wasm4NameEPNS1_8FunctionENS_4lessIS2_EENS_9allocatorINS_4pairIKS2_S4_EEEEE25__construct_node_with_keyERS9_(i3, i6, i4);
  i1 = HEAP32[i3 >> 2] | 0;
  __ZNSt3__16__treeINS_12__value_typeIN4wasm4NameEPNS2_8FunctionEEENS_19__map_value_compareIS3_S6_NS_4lessIS3_EELb1EEENS_9allocatorIS6_EEE16__insert_node_atEPNS_16__tree_node_baseIPvEERSH_SH_(i6, HEAP32[i5 >> 2] | 0, i2, i1);
 }
 STACKTOP = i7;
 return i1 + 20 | 0;
}

function __ZN4wasm6WalkerIZNS_13ReorderLocals13visitFunctionEPNS_8FunctionEE9ReIndexerNS_7VisitorIS4_vEEE13maybePushTaskEPFvPS4_PPNS_10ExpressionEESB_(i7, i1, i2) {
 i7 = i7 | 0;
 i1 = i1 | 0;
 i2 = i2 | 0;
 var i3 = 0, i4 = 0, i5 = 0, i6 = 0, i8 = 0;
 i8 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i5 = i8 + 4 | 0;
 i6 = i8;
 HEAP32[i5 >> 2] = i1;
 HEAP32[i6 >> 2] = i2;
 i4 = i2;
 do if (HEAP32[i2 >> 2] | 0) {
  i2 = i7 + 8 | 0;
  i3 = HEAP32[i2 >> 2] | 0;
  if (i3 >>> 0 < (HEAP32[i7 + 12 >> 2] | 0) >>> 0) {
   HEAP32[i3 >> 2] = i1;
   HEAP32[i3 + 4 >> 2] = i4;
   HEAP32[i2 >> 2] = i3 + 8;
   break;
  } else {
   __ZNSt3__16vectorIN4wasm6WalkerIZNS1_13ReorderLocals13visitFunctionEPNS1_8FunctionEE9ReIndexerNS1_7VisitorIS6_vEEE4TaskENS_9allocatorISA_EEE24__emplace_back_slow_pathIJRPFvPS6_PPNS1_10ExpressionEERSI_EEEvDpOT_(i7 + 4 | 0, i5, i6);
   break;
  }
 } while (0);
 STACKTOP = i8;
 return;
}

function __ZN4wasm6Vacuum7visitIfEPNS_2IfE(i6, i5) {
 i6 = i6 | 0;
 i5 = i5 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i7 = 0, i8 = 0;
 i8 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i2 = i8;
 i3 = i5 + 16 | 0;
 i1 = HEAP32[i3 >> 2] | 0;
 i4 = i1;
 do if (i1) {
  if ((HEAP32[i1 >> 2] | 0) == 19) {
   HEAP32[i3 >> 2] = 0;
   i7 = 6;
   break;
  }
  i1 = i5 + 12 | 0;
  if ((HEAP32[HEAP32[i1 >> 2] >> 2] | 0) == 19 ? (HEAP32[i1 >> 2] = i4, HEAP32[i3 >> 2] = 0, HEAP32[i2 >> 2] = (HEAP32[i6 + 36 >> 2] | 0) + 88, i4 = i5 + 8 | 0, i1 = HEAP32[i4 >> 2] | 0, i2 = __ZN4wasm7Builder9makeUnaryENS_7UnaryOpEPNS_10ExpressionENS_8WasmTypeE(i2, 10, i1, HEAP32[i1 + 4 >> 2] | 0) | 0, HEAP32[i4 >> 2] = i2, (HEAP32[i3 >> 2] | 0) == 0) : 0) i7 = 6;
 } else i7 = 6; while (0);
 if ((i7 | 0) == 6 ? (HEAP32[HEAP32[i5 + 12 >> 2] >> 2] | 0) == 19 : 0) HEAP32[i6 + 16 >> 2] = HEAP32[i5 + 8 >> 2];
 STACKTOP = i8;
 return;
}

function __ZNSt3__19__num_getIwE19__stage2_float_prepERNS_8ios_baseEPwRwS5_(i5, i3, i1, i2, i4) {
 i5 = i5 | 0;
 i3 = i3 | 0;
 i1 = i1 | 0;
 i2 = i2 | 0;
 i4 = i4 | 0;
 var i6 = 0, i7 = 0, i8 = 0;
 i6 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i7 = i6;
 i3 = __ZNKSt3__18ios_base6getlocEv(i3) | 0;
 HEAP32[i7 >> 2] = i3;
 i8 = __ZNKSt3__16locale9use_facetERNS0_2idE(i7, 38408) | 0;
 FUNCTION_TABLE_iiiii[HEAP32[(HEAP32[i8 >> 2] | 0) + 48 >> 2] & 7](i8, 30448, 30480, i1) | 0;
 i1 = __ZNKSt3__16locale9use_facetERNS0_2idE(i7, 38416) | 0;
 i7 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 12 >> 2] & 127](i1) | 0;
 HEAP32[i2 >> 2] = i7;
 i2 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 16 >> 2] & 127](i1) | 0;
 HEAP32[i4 >> 2] = i2;
 FUNCTION_TABLE_vii[HEAP32[(HEAP32[i1 >> 2] | 0) + 20 >> 2] & 511](i5, i1);
 __ZNSt3__114__shared_count16__release_sharedEv(i3) | 0;
 STACKTOP = i6;
 return;
}

function __ZNSt3__13mapIN4wasm4NameENS1_8WasmTypeENS_4lessIS2_EENS_9allocatorINS_4pairIKS2_S3_EEEEEixERS8_(i6, i4) {
 i6 = i6 | 0;
 i4 = i4 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i5 = 0, i7 = 0;
 i7 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i5 = i7 + 12 | 0;
 i3 = i7;
 i2 = __ZNSt3__13mapIN4wasm4NameENS1_8WasmTypeENS_4lessIS2_EENS_9allocatorINS_4pairIKS2_S3_EEEEE16__find_equal_keyERPNS_16__tree_node_baseIPvEERS8_(i6, i5, i4) | 0;
 i1 = HEAP32[i2 >> 2] | 0;
 if (!i1) {
  __ZNSt3__13mapIN4wasm4NameENS1_8WasmTypeENS_4lessIS2_EENS_9allocatorINS_4pairIKS2_S3_EEEEE25__construct_node_with_keyERS8_(i3, i6, i4);
  i1 = HEAP32[i3 >> 2] | 0;
  __ZNSt3__16__treeINS_12__value_typeIN4wasm4NameENS2_8WasmTypeEEENS_19__map_value_compareIS3_S5_NS_4lessIS3_EELb1EEENS_9allocatorIS5_EEE16__insert_node_atEPNS_16__tree_node_baseIPvEERSG_SG_(i6, HEAP32[i5 >> 2] | 0, i2, i1);
 }
 STACKTOP = i7;
 return i1 + 20 | 0;
}

function __ZNSt3__19__num_getIcE19__stage2_float_prepERNS_8ios_baseEPcRcS5_(i5, i3, i1, i2, i4) {
 i5 = i5 | 0;
 i3 = i3 | 0;
 i1 = i1 | 0;
 i2 = i2 | 0;
 i4 = i4 | 0;
 var i6 = 0, i7 = 0, i8 = 0;
 i6 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i7 = i6;
 i3 = __ZNKSt3__18ios_base6getlocEv(i3) | 0;
 HEAP32[i7 >> 2] = i3;
 i8 = __ZNKSt3__16locale9use_facetERNS0_2idE(i7, 38376) | 0;
 FUNCTION_TABLE_iiiii[HEAP32[(HEAP32[i8 >> 2] | 0) + 32 >> 2] & 7](i8, 30448, 30480, i1) | 0;
 i1 = __ZNKSt3__16locale9use_facetERNS0_2idE(i7, 38388) | 0;
 i7 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 12 >> 2] & 127](i1) | 0;
 HEAP8[i2 >> 0] = i7;
 i2 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 16 >> 2] & 127](i1) | 0;
 HEAP8[i4 >> 0] = i2;
 FUNCTION_TABLE_vii[HEAP32[(HEAP32[i1 >> 2] | 0) + 20 >> 2] & 511](i5, i1);
 __ZNSt3__114__shared_count16__release_sharedEv(i3) | 0;
 STACKTOP = i6;
 return;
}

function __ZNSt3__16__treeINS_12__value_typeIN4wasm4NameENS_6vectorINS2_14SimplifyLocals10BlockBreakENS_9allocatorIS6_EEEEEENS_19__map_value_compareIS3_SA_NS_4lessIS3_EELb1EEENS7_ISA_EEE7destroyEPNS_11__tree_nodeISA_PvEE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 if (!i1) return; else {
  __ZNSt3__16__treeINS_12__value_typeIN4wasm4NameENS_6vectorINS2_14SimplifyLocals10BlockBreakENS_9allocatorIS6_EEEEEENS_19__map_value_compareIS3_SA_NS_4lessIS3_EELb1EEENS7_ISA_EEE7destroyEPNS_11__tree_nodeISA_PvEE(i2, HEAP32[i1 >> 2] | 0);
  __ZNSt3__16__treeINS_12__value_typeIN4wasm4NameENS_6vectorINS2_14SimplifyLocals10BlockBreakENS_9allocatorIS6_EEEEEENS_19__map_value_compareIS3_SA_NS_4lessIS3_EELb1EEENS7_ISA_EEE7destroyEPNS_11__tree_nodeISA_PvEE(i2, HEAP32[i1 + 4 >> 2] | 0);
  __ZNSt3__113__vector_baseIN4wasm14SimplifyLocals10BlockBreakENS_9allocatorIS3_EEED2Ev(i1 + 20 | 0);
  __ZdlPv(i1);
  return;
 }
}

function __ZN10__cxxabiv112_GLOBAL__N_117parse_call_offsetEPKcS2_(i1, i4) {
 i1 = i1 | 0;
 i4 = i4 | 0;
 var i2 = 0, i3 = 0, i5 = 0;
 L1 : do if ((i1 | 0) != (i4 | 0)) {
  switch (HEAP8[i1 >> 0] | 0) {
  case 104:
   {
    i3 = i1 + 1 | 0;
    i2 = __ZN10__cxxabiv112_GLOBAL__N_112parse_numberEPKcS2_(i3, i4) | 0;
    if ((i2 | 0) == (i3 | 0) | (i2 | 0) == (i4 | 0)) break L1;
    return ((HEAP8[i2 >> 0] | 0) == 95 ? i2 + 1 | 0 : i1) | 0;
   }
  case 118:
   break;
  default:
   break L1;
  }
  i5 = i1 + 1 | 0;
  i2 = __ZN10__cxxabiv112_GLOBAL__N_112parse_numberEPKcS2_(i5, i4) | 0;
  if ((!((i2 | 0) == (i5 | 0) | (i2 | 0) == (i4 | 0)) ? (HEAP8[i2 >> 0] | 0) == 95 : 0) ? (i5 = i2 + 1 | 0, i3 = __ZN10__cxxabiv112_GLOBAL__N_112parse_numberEPKcS2_(i5, i4) | 0, !((i3 | 0) == (i5 | 0) | (i3 | 0) == (i4 | 0))) : 0) i1 = (HEAP8[i3 >> 0] | 0) == 95 ? i3 + 1 | 0 : i1;
 } while (0);
 return i1 | 0;
}

function __ZNSt3__13mapINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEN4wasm12PassRegistry8PassInfoENS_4lessIS6_EENS4_INS_4pairIKS6_S9_EEEEE25__construct_node_with_keyEOS6_(i4, i1, i3) {
 i4 = i4 | 0;
 i1 = i1 | 0;
 i3 = i3 | 0;
 var i2 = 0, i5 = 0;
 i2 = __Znwj(72) | 0;
 HEAP32[i4 >> 2] = i2;
 HEAP32[i4 + 4 >> 2] = i1 + 4;
 i1 = i4 + 8 | 0;
 HEAP8[i1 >> 0] = 0;
 i5 = i4 + 9 | 0;
 HEAP8[i5 >> 0] = 0;
 i2 = i2 + 16 | 0;
 HEAP32[i2 >> 2] = HEAP32[i3 >> 2];
 HEAP32[i2 + 4 >> 2] = HEAP32[i3 + 4 >> 2];
 HEAP32[i2 + 8 >> 2] = HEAP32[i3 + 8 >> 2];
 i2 = 0;
 while (1) {
  if ((i2 | 0) == 3) break;
  HEAP32[i3 + (i2 << 2) >> 2] = 0;
  i2 = i2 + 1 | 0;
 }
 HEAP8[i1 >> 0] = 1;
 i1 = HEAP32[i4 >> 2] | 0;
 i2 = i1 + 32 | 0;
 i3 = 0;
 while (1) {
  if ((i3 | 0) == 3) break;
  HEAP32[i2 + (i3 << 2) >> 2] = 0;
  i3 = i3 + 1 | 0;
 }
 HEAP32[i1 + 64 >> 2] = 0;
 HEAP8[i5 >> 0] = 1;
 return;
}

function __ZNSt3__13mapIN4wasm4NameEPNS1_6ImportENS_4lessIS2_EENS_9allocatorINS_4pairIKS2_S4_EEEEEixERS9_(i6, i4) {
 i6 = i6 | 0;
 i4 = i4 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i5 = 0, i7 = 0;
 i7 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i5 = i7 + 12 | 0;
 i3 = i7;
 i2 = __ZNSt3__13mapIN4wasm4NameEPNS1_6ImportENS_4lessIS2_EENS_9allocatorINS_4pairIKS2_S4_EEEEE16__find_equal_keyERPNS_16__tree_node_baseIPvEERS9_(i6, i5, i4) | 0;
 i1 = HEAP32[i2 >> 2] | 0;
 if (!i1) {
  __ZNSt3__13mapIN4wasm4NameEPNS1_6ImportENS_4lessIS2_EENS_9allocatorINS_4pairIKS2_S4_EEEEE25__construct_node_with_keyERS9_(i3, i6, i4);
  i1 = HEAP32[i3 >> 2] | 0;
  __ZNSt3__16__treeINS_12__value_typeIN4wasm4NameEPNS2_6ImportEEENS_19__map_value_compareIS3_S6_NS_4lessIS3_EELb1EEENS_9allocatorIS6_EEE16__insert_node_atEPNS_16__tree_node_baseIPvEERSH_SH_(i6, HEAP32[i5 >> 2] | 0, i2, i1);
 }
 STACKTOP = i7;
 return i1 + 20 | 0;
}

function __ZNSt3__13mapIN4wasm4NameEPNS1_6ExportENS_4lessIS2_EENS_9allocatorINS_4pairIKS2_S4_EEEEEixERS9_(i6, i4) {
 i6 = i6 | 0;
 i4 = i4 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i5 = 0, i7 = 0;
 i7 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i5 = i7 + 12 | 0;
 i3 = i7;
 i2 = __ZNSt3__13mapIN4wasm4NameEPNS1_6ExportENS_4lessIS2_EENS_9allocatorINS_4pairIKS2_S4_EEEEE16__find_equal_keyERPNS_16__tree_node_baseIPvEERS9_(i6, i5, i4) | 0;
 i1 = HEAP32[i2 >> 2] | 0;
 if (!i1) {
  __ZNSt3__13mapIN4wasm4NameEPNS1_6ExportENS_4lessIS2_EENS_9allocatorINS_4pairIKS2_S4_EEEEE25__construct_node_with_keyERS9_(i3, i6, i4);
  i1 = HEAP32[i3 >> 2] | 0;
  __ZNSt3__16__treeINS_12__value_typeIN4wasm4NameEPNS2_6ExportEEENS_19__map_value_compareIS3_S6_NS_4lessIS3_EELb1EEENS_9allocatorIS6_EEE16__insert_node_atEPNS_16__tree_node_baseIPvEERSH_SH_(i6, HEAP32[i5 >> 2] | 0, i2, i1);
 }
 STACKTOP = i7;
 return i1 + 20 | 0;
}

function __ZNSt3__127__num_get_unsigned_integralIyEET_PKcS3_Rji(i1, i6, i7, i2) {
 i1 = i1 | 0;
 i6 = i6 | 0;
 i7 = i7 | 0;
 i2 = i2 | 0;
 var i3 = 0, i4 = 0, i5 = 0, i8 = 0, i9 = 0;
 i9 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i8 = i9;
 do if ((i1 | 0) == (i6 | 0)) {
  HEAP32[i7 >> 2] = 4;
  i2 = 0;
  i1 = 0;
 } else {
  if ((HEAP8[i1 >> 0] | 0) == 45) {
   HEAP32[i7 >> 2] = 4;
   i2 = 0;
   i1 = 0;
   break;
  }
  i4 = ___errno_location() | 0;
  i5 = HEAP32[i4 >> 2] | 0;
  HEAP32[i4 >> 2] = 0;
  i1 = _strtoull_l(i1, i8, i2, __ZNSt3__16__clocEv() | 0) | 0;
  i2 = tempRet0;
  i3 = HEAP32[i4 >> 2] | 0;
  if (!i3) HEAP32[i4 >> 2] = i5;
  if ((HEAP32[i8 >> 2] | 0) == (i6 | 0)) {
   if ((i3 | 0) == 34) {
    HEAP32[i7 >> 2] = 4;
    i1 = -1;
    i2 = -1;
   }
  } else {
   HEAP32[i7 >> 2] = 4;
   i1 = 0;
   i2 = 0;
  }
 } while (0);
 tempRet0 = i2;
 STACKTOP = i9;
 return i1 | 0;
}

function __ZNSt3__16vectorIN4wasm14SimplifyLocals10BlockBreakENS_9allocatorIS3_EEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i6, i5) {
 i6 = i6 | 0;
 i5 = i5 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i7 = 0;
 i2 = HEAP32[i6 >> 2] | 0;
 i3 = i6 + 4 | 0;
 i4 = i5 + 4 | 0;
 i1 = HEAP32[i3 >> 2] | 0;
 while (1) {
  if ((i1 | 0) == (i2 | 0)) break;
  i7 = i1 + -16 | 0;
  __ZN4wasm14SimplifyLocals10BlockBreakC2EOS1_((HEAP32[i4 >> 2] | 0) + -16 | 0, i7);
  HEAP32[i4 >> 2] = (HEAP32[i4 >> 2] | 0) + -16;
  i1 = i7;
 }
 i7 = HEAP32[i6 >> 2] | 0;
 HEAP32[i6 >> 2] = HEAP32[i4 >> 2];
 HEAP32[i4 >> 2] = i7;
 i7 = i5 + 8 | 0;
 i2 = HEAP32[i3 >> 2] | 0;
 HEAP32[i3 >> 2] = HEAP32[i7 >> 2];
 HEAP32[i7 >> 2] = i2;
 i3 = i6 + 8 | 0;
 i7 = i5 + 12 | 0;
 i6 = HEAP32[i3 >> 2] | 0;
 HEAP32[i3 >> 2] = HEAP32[i7 >> 2];
 HEAP32[i7 >> 2] = i6;
 HEAP32[i5 >> 2] = HEAP32[i4 >> 2];
 return;
}

function __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE9__grow_byEjjjjjj(i10, i9, i1, i4, i7, i8, i6) {
 i10 = i10 | 0;
 i9 = i9 | 0;
 i1 = i1 | 0;
 i4 = i4 | 0;
 i7 = i7 | 0;
 i8 = i8 | 0;
 i6 = i6 | 0;
 var i2 = 0, i3 = 0, i5 = 0;
 if ((-17 - i9 | 0) >>> 0 < i1 >>> 0) __ZNKSt3__121__basic_string_commonILb1EE20__throw_length_errorEv(i10);
 if (!(HEAP8[i10 >> 0] & 1)) i5 = i10 + 1 | 0; else i5 = HEAP32[i10 + 8 >> 2] | 0;
 if (i9 >>> 0 < 2147483623) {
  i2 = i1 + i9 | 0;
  i3 = i9 << 1;
  i2 = i2 >>> 0 < i3 >>> 0 ? i3 : i2;
  i2 = i2 >>> 0 < 11 ? 11 : i2 + 16 & -16;
 } else i2 = -17;
 i3 = __Znwj(i2) | 0;
 if (i7 | 0) _memcpy(i3 | 0, i5 | 0, i7 | 0) | 0;
 i1 = i4 - i8 | 0;
 if ((i1 | 0) != (i7 | 0)) _memcpy(i3 + i7 + i6 | 0, i5 + i7 + i8 | 0, i1 - i7 | 0) | 0;
 if ((i9 | 0) != 10) __ZdlPv(i5);
 HEAP32[i10 + 8 >> 2] = i3;
 HEAP32[i10 >> 2] = i2 | 1;
 return;
}

function __ZNK4wasm7Literal2neERKS0_(i1, i3, i2) {
 i1 = i1 | 0;
 i3 = i3 | 0;
 i2 = i2 | 0;
 var i4 = 0;
 switch (HEAP32[i3 >> 2] | 0) {
 case 1:
  {
   i3 = (HEAP32[i3 + 8 >> 2] | 0) != (HEAP32[i2 + 8 >> 2] | 0) & 1;
   HEAP32[i1 >> 2] = 1;
   HEAP32[i1 + 8 >> 2] = i3;
   break;
  }
 case 2:
  {
   i4 = i3 + 8 | 0;
   i3 = i2 + 8 | 0;
   i3 = ((HEAP32[i4 >> 2] | 0) != (HEAP32[i3 >> 2] | 0) ? 1 : (HEAP32[i4 + 4 >> 2] | 0) != (HEAP32[i3 + 4 >> 2] | 0)) & 1;
   HEAP32[i1 >> 2] = 1;
   HEAP32[i1 + 8 >> 2] = i3;
   break;
  }
 case 3:
  {
   i4 = +__ZNK4wasm7Literal6getf32Ev(i3) != +__ZNK4wasm7Literal6getf32Ev(i2) & 1;
   HEAP32[i1 >> 2] = 1;
   HEAP32[i1 + 8 >> 2] = i4;
   break;
  }
 case 4:
  {
   i4 = +__ZNK4wasm7Literal6getf64Ev(i3) != +__ZNK4wasm7Literal6getf64Ev(i2) & 1;
   HEAP32[i1 >> 2] = 1;
   HEAP32[i1 + 8 >> 2] = i4;
   break;
  }
 default:
  {}
 }
 return;
}

function __ZNK4wasm7Literal2eqERKS0_(i1, i3, i2) {
 i1 = i1 | 0;
 i3 = i3 | 0;
 i2 = i2 | 0;
 var i4 = 0;
 switch (HEAP32[i3 >> 2] | 0) {
 case 1:
  {
   i3 = (HEAP32[i3 + 8 >> 2] | 0) == (HEAP32[i2 + 8 >> 2] | 0) & 1;
   HEAP32[i1 >> 2] = 1;
   HEAP32[i1 + 8 >> 2] = i3;
   break;
  }
 case 2:
  {
   i4 = i3 + 8 | 0;
   i3 = i2 + 8 | 0;
   i3 = ((HEAP32[i4 >> 2] | 0) == (HEAP32[i3 >> 2] | 0) ? (HEAP32[i4 + 4 >> 2] | 0) == (HEAP32[i3 + 4 >> 2] | 0) : 0) & 1;
   HEAP32[i1 >> 2] = 1;
   HEAP32[i1 + 8 >> 2] = i3;
   break;
  }
 case 3:
  {
   i4 = +__ZNK4wasm7Literal6getf32Ev(i3) == +__ZNK4wasm7Literal6getf32Ev(i2) & 1;
   HEAP32[i1 >> 2] = 1;
   HEAP32[i1 + 8 >> 2] = i4;
   break;
  }
 case 4:
  {
   i4 = +__ZNK4wasm7Literal6getf64Ev(i3) == +__ZNK4wasm7Literal6getf64Ev(i2) & 1;
   HEAP32[i1 >> 2] = 1;
   HEAP32[i1 + 8 >> 2] = i4;
   break;
  }
 default:
  {}
 }
 return;
}

function __ZNK10__cxxabiv121__vmi_class_type_info27has_unambiguous_public_baseEPNS_19__dynamic_cast_infoEPvi(i1, i5, i4, i6) {
 i1 = i1 | 0;
 i5 = i5 | 0;
 i4 = i4 | 0;
 i6 = i6 | 0;
 var i2 = 0, i3 = 0;
 L1 : do if ((i1 | 0) != (HEAP32[i5 + 8 >> 2] | 0)) {
  i3 = HEAP32[i1 + 12 >> 2] | 0;
  i2 = i1 + 16 + (i3 << 3) | 0;
  __ZNK10__cxxabiv122__base_class_type_info27has_unambiguous_public_baseEPNS_19__dynamic_cast_infoEPvi(i1 + 16 | 0, i5, i4, i6);
  if ((i3 | 0) > 1) {
   i3 = i5 + 54 | 0;
   i1 = i1 + 24 | 0;
   do {
    __ZNK10__cxxabiv122__base_class_type_info27has_unambiguous_public_baseEPNS_19__dynamic_cast_infoEPvi(i1, i5, i4, i6);
    if (HEAP8[i3 >> 0] | 0) break L1;
    i1 = i1 + 8 | 0;
   } while (i1 >>> 0 < i2 >>> 0);
  }
 } else __ZNK10__cxxabiv117__class_type_info24process_found_base_classEPNS_19__dynamic_cast_infoEPvi(0, i5, i4, i6); while (0);
 return;
}

function __ZN4wasm22SExpressionWasmBuilder8getLabelERNS_7ElementE(i5, i1) {
 i5 = i5 | 0;
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i4 = 0, i6 = 0;
 i6 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i4 = i6;
 do if (!(HEAP8[i1 + 20 >> 0] | 0)) {
  i3 = _atol(__ZN4wasm7Element5c_strEv(i1) | 0) | 0;
  i1 = HEAP32[i5 + 88 >> 2] | 0;
  i2 = (HEAP32[i5 + 92 >> 2] | 0) - i1 >> 2;
  if (i3 >>> 0 < i2 >>> 0) {
   i1 = HEAP32[i1 + (i2 + ~i3 << 2) >> 2] | 0;
   break;
  } else {
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6__initEPKcj(i4, 15066, 7);
   i1 = __ZN4wasm22SExpressionWasmBuilder15getPrefixedNameENSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEE(i5, i4) | 0;
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i4);
   break;
  }
 } else i1 = __ZN4wasm7Element3strEv(i1) | 0; while (0);
 STACKTOP = i6;
 return i1 | 0;
}

function __ZNK10__cxxabiv117__class_type_info16search_below_dstEPNS_19__dynamic_cast_infoEPKvib(i6, i4, i3, i5, i7) {
 i6 = i6 | 0;
 i4 = i4 | 0;
 i3 = i3 | 0;
 i5 = i5 | 0;
 i7 = i7 | 0;
 var i1 = 0, i2 = 0;
 do if ((i6 | 0) == (HEAP32[i4 + 8 >> 2] | 0)) {
  if ((HEAP32[i4 + 4 >> 2] | 0) == (i3 | 0) ? (i2 = i4 + 28 | 0, (HEAP32[i2 >> 2] | 0) != 1) : 0) HEAP32[i2 >> 2] = i5;
 } else if ((i6 | 0) == (HEAP32[i4 >> 2] | 0)) {
  if ((HEAP32[i4 + 16 >> 2] | 0) != (i3 | 0) ? (i1 = i4 + 20 | 0, (HEAP32[i1 >> 2] | 0) != (i3 | 0)) : 0) {
   HEAP32[i4 + 32 >> 2] = i5;
   HEAP32[i1 >> 2] = i3;
   i7 = i4 + 40 | 0;
   HEAP32[i7 >> 2] = (HEAP32[i7 >> 2] | 0) + 1;
   if ((HEAP32[i4 + 36 >> 2] | 0) == 1 ? (HEAP32[i4 + 24 >> 2] | 0) == 2 : 0) HEAP8[i4 + 54 >> 0] = 1;
   HEAP32[i4 + 44 >> 2] = 4;
   break;
  }
  if ((i5 | 0) == 1) HEAP32[i4 + 32 >> 2] = 1;
 } while (0);
 return;
}

function __ZN4wasm22SExpressionWasmBuilder17parseCallOperandsINS_12CallIndirectEEEvRNS_7ElementEjPT_(i9, i8, i2, i1) {
 i9 = i9 | 0;
 i8 = i8 | 0;
 i2 = i2 | 0;
 i1 = i1 | 0;
 var i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i10 = 0;
 i10 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i5 = i10;
 i6 = i1 + 12 | 0;
 i7 = i1 + 16 | 0;
 i4 = i1 + 8 | 0;
 while (1) {
  if (i2 >>> 0 >= (__ZN4wasm7Element4sizeEv(i8) | 0) >>> 0) break;
  i1 = __ZN4wasm22SExpressionWasmBuilder15parseExpressionERNS_7ElementE(i9, __ZN4wasm7ElementixEj(i8, i2) | 0) | 0;
  HEAP32[i5 >> 2] = i1;
  i3 = HEAP32[i6 >> 2] | 0;
  if (i3 >>> 0 < (HEAP32[i7 >> 2] | 0) >>> 0) {
   HEAP32[i3 >> 2] = i1;
   HEAP32[i6 >> 2] = (HEAP32[i6 >> 2] | 0) + 4;
  } else __ZNSt3__16vectorIPN4wasm10ExpressionENS_9allocatorIS3_EEE21__push_back_slow_pathIS3_EEvOT_(i4, i5);
  i2 = i2 + 1 | 0;
 }
 STACKTOP = i10;
 return;
}

function __ZN4wasm14PostEmscripten13visitMemoryOpINS_5StoreEEEvPT_(i1, i2) {
 i1 = i1 | 0;
 i2 = i2 | 0;
 var i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0;
 i5 = i2 + 12 | 0;
 do if (((HEAP32[i5 >> 2] | 0) == 0 ? (i6 = i2 + 20 | 0, i7 = HEAP32[i6 >> 2] | 0, !((i7 | 0) == 0 | (HEAP32[i7 >> 2] | 0) != 15)) : 0) ? (HEAP32[i7 + 8 >> 2] | 0) == 0 : 0) {
  if ((HEAP32[i7 + 4 >> 2] | 0) != 1) ___assert_fail(21831, 21848, 51, 21878);
  i3 = i7 + 16 | 0;
  i1 = HEAP32[i3 >> 2] | 0;
  i4 = i1;
  if ((i1 | 0) == 0 | (HEAP32[i1 >> 2] | 0) != 13) {
   i2 = i7 + 12 | 0;
   i1 = HEAP32[i2 >> 2] | 0;
   if ((i1 | 0) == 0 | (HEAP32[i1 >> 2] | 0) != 13) break;
   HEAP32[i2 >> 2] = i4;
   HEAP32[i3 >> 2] = i1;
  }
  i1 = __ZNK4wasm7Literal6geti32Ev(i1 + 8 | 0) | 0;
  if (i1 >>> 0 < 1024) {
   HEAP32[i6 >> 2] = HEAP32[i7 + 12 >> 2];
   HEAP32[i5 >> 2] = i1;
  }
 } while (0);
 return;
}

function __ZN4wasm14PostEmscripten13visitMemoryOpINS_4LoadEEEvPT_(i1, i2) {
 i1 = i1 | 0;
 i2 = i2 | 0;
 var i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0;
 i5 = i2 + 16 | 0;
 do if (((HEAP32[i5 >> 2] | 0) == 0 ? (i6 = i2 + 24 | 0, i7 = HEAP32[i6 >> 2] | 0, !((i7 | 0) == 0 | (HEAP32[i7 >> 2] | 0) != 15)) : 0) ? (HEAP32[i7 + 8 >> 2] | 0) == 0 : 0) {
  if ((HEAP32[i7 + 4 >> 2] | 0) != 1) ___assert_fail(21831, 21848, 51, 21878);
  i3 = i7 + 16 | 0;
  i1 = HEAP32[i3 >> 2] | 0;
  i4 = i1;
  if ((i1 | 0) == 0 | (HEAP32[i1 >> 2] | 0) != 13) {
   i2 = i7 + 12 | 0;
   i1 = HEAP32[i2 >> 2] | 0;
   if ((i1 | 0) == 0 | (HEAP32[i1 >> 2] | 0) != 13) break;
   HEAP32[i2 >> 2] = i4;
   HEAP32[i3 >> 2] = i1;
  }
  i1 = __ZNK4wasm7Literal6geti32Ev(i1 + 8 | 0) | 0;
  if (i1 >>> 0 < 1024) {
   HEAP32[i6 >> 2] = HEAP32[i7 + 12 >> 2];
   HEAP32[i5 >> 2] = i1;
  }
 } while (0);
 return;
}

function __ZNSt3__125__num_get_signed_integralIxEET_PKcS3_Rji(i1, i6, i7, i2) {
 i1 = i1 | 0;
 i6 = i6 | 0;
 i7 = i7 | 0;
 i2 = i2 | 0;
 var i3 = 0, i4 = 0, i5 = 0, i8 = 0, i9 = 0;
 i9 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i8 = i9;
 if ((i1 | 0) == (i6 | 0)) {
  HEAP32[i7 >> 2] = 4;
  i2 = 0;
  i1 = 0;
 } else {
  i4 = ___errno_location() | 0;
  i5 = HEAP32[i4 >> 2] | 0;
  HEAP32[i4 >> 2] = 0;
  i1 = _strtoll_l(i1, i8, i2, __ZNSt3__16__clocEv() | 0) | 0;
  i2 = tempRet0;
  i3 = HEAP32[i4 >> 2] | 0;
  if (!i3) HEAP32[i4 >> 2] = i5;
  if ((HEAP32[i8 >> 2] | 0) == (i6 | 0)) {
   if ((i3 | 0) == 34) {
    HEAP32[i7 >> 2] = 4;
    i2 = (i2 | 0) > 0 | (i2 | 0) == 0 & i1 >>> 0 > 0;
    i1 = i2 ? -1 : 0;
    i2 = i2 ? 2147483647 : -2147483648;
   }
  } else {
   HEAP32[i7 >> 2] = 4;
   i1 = 0;
   i2 = 0;
  }
 }
 tempRet0 = i2;
 STACKTOP = i9;
 return i1 | 0;
}

function __ZN4wasm22SExpressionWasmBuilder17parseCallOperandsINS_10CallImportEEEvRNS_7ElementEjPT_(i9, i8, i2, i1) {
 i9 = i9 | 0;
 i8 = i8 | 0;
 i2 = i2 | 0;
 i1 = i1 | 0;
 var i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i10 = 0;
 i10 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i5 = i10;
 i6 = i1 + 12 | 0;
 i7 = i1 + 16 | 0;
 i4 = i1 + 8 | 0;
 while (1) {
  if (i2 >>> 0 >= (__ZN4wasm7Element4sizeEv(i8) | 0) >>> 0) break;
  i1 = __ZN4wasm22SExpressionWasmBuilder15parseExpressionERNS_7ElementE(i9, __ZN4wasm7ElementixEj(i8, i2) | 0) | 0;
  HEAP32[i5 >> 2] = i1;
  i3 = HEAP32[i6 >> 2] | 0;
  if (i3 >>> 0 < (HEAP32[i7 >> 2] | 0) >>> 0) {
   HEAP32[i3 >> 2] = i1;
   HEAP32[i6 >> 2] = (HEAP32[i6 >> 2] | 0) + 4;
  } else __ZNSt3__16vectorIPN4wasm10ExpressionENS_9allocatorIS3_EEE21__push_back_slow_pathIS3_EEvOT_(i4, i5);
  i2 = i2 + 1 | 0;
 }
 STACKTOP = i10;
 return;
}

function __ZNSt3__16vectorIN6cashew13OperatorClassENS_9allocatorIS2_EEE26__swap_out_circular_bufferERNS_14__split_bufferIS2_RS4_EE(i6, i5) {
 i6 = i6 | 0;
 i5 = i5 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i7 = 0;
 i2 = HEAP32[i6 >> 2] | 0;
 i3 = i6 + 4 | 0;
 i4 = i5 + 4 | 0;
 i1 = HEAP32[i3 >> 2] | 0;
 while (1) {
  if ((i1 | 0) == (i2 | 0)) break;
  i7 = i1 + -28 | 0;
  __ZN6cashew13OperatorClassC2EOS0_((HEAP32[i4 >> 2] | 0) + -28 | 0, i7);
  HEAP32[i4 >> 2] = (HEAP32[i4 >> 2] | 0) + -28;
  i1 = i7;
 }
 i7 = HEAP32[i6 >> 2] | 0;
 HEAP32[i6 >> 2] = HEAP32[i4 >> 2];
 HEAP32[i4 >> 2] = i7;
 i7 = i5 + 8 | 0;
 i2 = HEAP32[i3 >> 2] | 0;
 HEAP32[i3 >> 2] = HEAP32[i7 >> 2];
 HEAP32[i7 >> 2] = i2;
 i3 = i6 + 8 | 0;
 i7 = i5 + 12 | 0;
 i6 = HEAP32[i3 >> 2] | 0;
 HEAP32[i3 >> 2] = HEAP32[i7 >> 2];
 HEAP32[i7 >> 2] = i6;
 HEAP32[i5 >> 2] = HEAP32[i4 >> 2];
 return;
}

function __ZNSt3__16vectorIN4wasm6WalkerIZNS1_13ReorderLocals13visitFunctionEPNS1_8FunctionEE9ReIndexerNS1_7VisitorIS6_vEEE4TaskENS_9allocatorISA_EEE26__swap_out_circular_bufferERNS_14__split_bufferISA_RSC_EE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 var i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0;
 i4 = HEAP32[i2 >> 2] | 0;
 i6 = i2 + 4 | 0;
 i3 = i1 + 4 | 0;
 i5 = (HEAP32[i6 >> 2] | 0) - i4 | 0;
 i7 = (HEAP32[i3 >> 2] | 0) + (0 - (i5 >> 3) << 3) | 0;
 HEAP32[i3 >> 2] = i7;
 _memcpy(i7 | 0, i4 | 0, i5 | 0) | 0;
 i5 = HEAP32[i2 >> 2] | 0;
 HEAP32[i2 >> 2] = HEAP32[i3 >> 2];
 HEAP32[i3 >> 2] = i5;
 i5 = i1 + 8 | 0;
 i4 = HEAP32[i6 >> 2] | 0;
 HEAP32[i6 >> 2] = HEAP32[i5 >> 2];
 HEAP32[i5 >> 2] = i4;
 i5 = i2 + 8 | 0;
 i2 = i1 + 12 | 0;
 i4 = HEAP32[i5 >> 2] | 0;
 HEAP32[i5 >> 2] = HEAP32[i2 >> 2];
 HEAP32[i2 >> 2] = i4;
 HEAP32[i1 >> 2] = HEAP32[i3 >> 2];
 return;
}

function __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE9push_backEc(i5, i6) {
 i5 = i5 | 0;
 i6 = i6 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0;
 i1 = HEAP8[i5 >> 0] | 0;
 i2 = (i1 & 1) != 0;
 if (i2) {
  i3 = (HEAP32[i5 >> 2] & -2) + -1 | 0;
  i4 = HEAP32[i5 + 4 >> 2] | 0;
 } else {
  i3 = 10;
  i4 = (i1 & 255) >>> 1;
 }
 if ((i4 | 0) == (i3 | 0)) {
  __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE9__grow_byEjjjjjj(i5, i3, 1, i3, i3, 0);
  if (!(HEAP8[i5 >> 0] & 1)) i2 = 7; else i2 = 8;
 } else if (i2) i2 = 8; else i2 = 7;
 if ((i2 | 0) == 7) {
  HEAP8[i5 >> 0] = (i4 << 1) + 2;
  i1 = i5 + 1 | 0;
 } else if ((i2 | 0) == 8) {
  i1 = HEAP32[i5 + 8 >> 2] | 0;
  HEAP32[i5 + 4 >> 2] = i4 + 1;
 }
 i5 = i1 + i4 | 0;
 HEAP8[i5 >> 0] = i6;
 HEAP8[i5 + 1 >> 0] = 0;
 return;
}

function __ZNSt3__111__stdoutbufIwE4syncEv(i1) {
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0;
 i10 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i8 = i10 + 8 | 0;
 i7 = i10;
 i3 = i1 + 36 | 0;
 i4 = i1 + 40 | 0;
 i5 = i8 + 8 | 0;
 i6 = i8;
 i2 = i1 + 32 | 0;
 L1 : while (1) {
  i1 = HEAP32[i3 >> 2] | 0;
  i1 = FUNCTION_TABLE_iiiiii[HEAP32[(HEAP32[i1 >> 2] | 0) + 20 >> 2] & 31](i1, HEAP32[i4 >> 2] | 0, i8, i5, i7) | 0;
  i11 = (HEAP32[i7 >> 2] | 0) - i6 | 0;
  if ((_fwrite(i8, 1, i11, HEAP32[i2 >> 2] | 0) | 0) != (i11 | 0)) {
   i1 = -1;
   break;
  }
  switch (i1 | 0) {
  case 1:
   break;
  case 2:
   {
    i1 = -1;
    break L1;
   }
  default:
   {
    i9 = 4;
    break L1;
   }
  }
 }
 if ((i9 | 0) == 4) i1 = ((_fflush(HEAP32[i2 >> 2] | 0) | 0) != 0) << 31 >> 31;
 STACKTOP = i10;
 return i1 | 0;
}

function __ZNSt3__111__stdoutbufIcE4syncEv(i1) {
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0;
 i10 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i8 = i10 + 8 | 0;
 i7 = i10;
 i3 = i1 + 36 | 0;
 i4 = i1 + 40 | 0;
 i5 = i8 + 8 | 0;
 i6 = i8;
 i2 = i1 + 32 | 0;
 L1 : while (1) {
  i1 = HEAP32[i3 >> 2] | 0;
  i1 = FUNCTION_TABLE_iiiiii[HEAP32[(HEAP32[i1 >> 2] | 0) + 20 >> 2] & 31](i1, HEAP32[i4 >> 2] | 0, i8, i5, i7) | 0;
  i11 = (HEAP32[i7 >> 2] | 0) - i6 | 0;
  if ((_fwrite(i8, 1, i11, HEAP32[i2 >> 2] | 0) | 0) != (i11 | 0)) {
   i1 = -1;
   break;
  }
  switch (i1 | 0) {
  case 1:
   break;
  case 2:
   {
    i1 = -1;
    break L1;
   }
  default:
   {
    i9 = 4;
    break L1;
   }
  }
 }
 if ((i9 | 0) == 4) i1 = ((_fflush(HEAP32[i2 >> 2] | 0) | 0) != 0) << 31 >> 31;
 STACKTOP = i10;
 return i1 | 0;
}

function __ZN4wasm22SExpressionWasmBuilder17parseCallOperandsINS_4HostEEEvRNS_7ElementEjPT_(i9, i8, i2, i1) {
 i9 = i9 | 0;
 i8 = i8 | 0;
 i2 = i2 | 0;
 i1 = i1 | 0;
 var i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i10 = 0;
 i10 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i5 = i10;
 i6 = i1 + 20 | 0;
 i7 = i1 + 24 | 0;
 i4 = i1 + 16 | 0;
 while (1) {
  if (i2 >>> 0 >= (__ZN4wasm7Element4sizeEv(i8) | 0) >>> 0) break;
  i1 = __ZN4wasm22SExpressionWasmBuilder15parseExpressionERNS_7ElementE(i9, __ZN4wasm7ElementixEj(i8, i2) | 0) | 0;
  HEAP32[i5 >> 2] = i1;
  i3 = HEAP32[i6 >> 2] | 0;
  if (i3 >>> 0 < (HEAP32[i7 >> 2] | 0) >>> 0) {
   HEAP32[i3 >> 2] = i1;
   HEAP32[i6 >> 2] = (HEAP32[i6 >> 2] | 0) + 4;
  } else __ZNSt3__16vectorIPN4wasm10ExpressionENS_9allocatorIS3_EEE21__push_back_slow_pathIS3_EEvOT_(i4, i5);
  i2 = i2 + 1 | 0;
 }
 STACKTOP = i10;
 return;
}

function __ZN4wasm22SExpressionWasmBuilder17parseCallOperandsINS_4CallEEEvRNS_7ElementEjPT_(i9, i8, i2, i1) {
 i9 = i9 | 0;
 i8 = i8 | 0;
 i2 = i2 | 0;
 i1 = i1 | 0;
 var i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i10 = 0;
 i10 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i5 = i10;
 i6 = i1 + 12 | 0;
 i7 = i1 + 16 | 0;
 i4 = i1 + 8 | 0;
 while (1) {
  if (i2 >>> 0 >= (__ZN4wasm7Element4sizeEv(i8) | 0) >>> 0) break;
  i1 = __ZN4wasm22SExpressionWasmBuilder15parseExpressionERNS_7ElementE(i9, __ZN4wasm7ElementixEj(i8, i2) | 0) | 0;
  HEAP32[i5 >> 2] = i1;
  i3 = HEAP32[i6 >> 2] | 0;
  if (i3 >>> 0 < (HEAP32[i7 >> 2] | 0) >>> 0) {
   HEAP32[i3 >> 2] = i1;
   HEAP32[i6 >> 2] = (HEAP32[i6 >> 2] | 0) + 4;
  } else __ZNSt3__16vectorIPN4wasm10ExpressionENS_9allocatorIS3_EEE21__push_back_slow_pathIS3_EEvOT_(i4, i5);
  i2 = i2 + 1 | 0;
 }
 STACKTOP = i10;
 return;
}

function __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6appendEjc(i6, i5, i4) {
 i6 = i6 | 0;
 i5 = i5 | 0;
 i4 = i4 | 0;
 var i1 = 0, i2 = 0, i3 = 0;
 if (i5 | 0) {
  i1 = HEAP8[i6 >> 0] | 0;
  if (!(i1 & 1)) i2 = 10; else {
   i1 = HEAP32[i6 >> 2] | 0;
   i2 = (i1 & -2) + -1 | 0;
   i1 = i1 & 255;
  }
  if (!(i1 & 1)) i3 = (i1 & 255) >>> 1; else i3 = HEAP32[i6 + 4 >> 2] | 0;
  if ((i2 - i3 | 0) >>> 0 < i5 >>> 0) {
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE9__grow_byEjjjjjj(i6, i2, i5 - i2 + i3 | 0, i3, i3, 0, 0);
   i1 = HEAP8[i6 >> 0] | 0;
  }
  if (!(i1 & 1)) i2 = i6 + 1 | 0; else i2 = HEAP32[i6 + 8 >> 2] | 0;
  _memset(i2 + i3 | 0, i4 | 0, i5 | 0) | 0;
  i1 = i3 + i5 | 0;
  if (!(HEAP8[i6 >> 0] & 1)) HEAP8[i6 >> 0] = i1 << 1; else HEAP32[i6 + 4 >> 2] = i1;
  HEAP8[i2 + i1 >> 0] = 0;
 }
 return i6 | 0;
}

function __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6assignEPKcj(i6, i5, i4) {
 i6 = i6 | 0;
 i5 = i5 | 0;
 i4 = i4 | 0;
 var i1 = 0, i2 = 0, i3 = 0;
 i1 = HEAP8[i6 >> 0] | 0;
 if (!(i1 & 1)) i3 = 10; else {
  i1 = HEAP32[i6 >> 2] | 0;
  i3 = (i1 & -2) + -1 | 0;
  i1 = i1 & 255;
 }
 i2 = (i1 & 1) == 0;
 do if (i3 >>> 0 >= i4 >>> 0) {
  if (i2) i1 = i6 + 1 | 0; else i1 = HEAP32[i6 + 8 >> 2] | 0;
  _memmove(i1 | 0, i5 | 0, i4 | 0) | 0;
  HEAP8[i1 + i4 >> 0] = 0;
  if (!(HEAP8[i6 >> 0] & 1)) {
   HEAP8[i6 >> 0] = i4 << 1;
   break;
  } else {
   HEAP32[i6 + 4 >> 2] = i4;
   break;
  }
 } else {
  if (i2) i1 = (i1 & 255) >>> 1; else i1 = HEAP32[i6 + 4 >> 2] | 0;
  __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE21__grow_by_and_replaceEjjjjjjPKc(i6, i3, i4 - i3 | 0, i1, 0, i1, i4, i5);
 } while (0);
 return i6 | 0;
}

function __ZN4wasm16PrintSExpression10visitTableEPNS_5TableE(i5, i1) {
 i5 = i5 | 0;
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i4 = 0, i6 = 0, i7 = 0, i8 = 0;
 i6 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i2 = i6 + 4 | 0;
 i3 = i6;
 __Z12printOpeningRNSt3__113basic_ostreamIcNS_11char_traitsIcEEEEPKcb(HEAP32[i5 >> 2] | 0, 18212, 0) | 0;
 i4 = HEAP32[i1 + 4 >> 2] | 0;
 i1 = HEAP32[i1 >> 2] | 0;
 while (1) {
  if ((i1 | 0) == (i4 | 0)) break;
  i8 = HEAP32[i1 >> 2] | 0;
  i7 = __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_c(HEAP32[i5 >> 2] | 0, 32) | 0;
  HEAP32[i3 >> 2] = i8;
  HEAP32[i2 >> 2] = HEAP32[i3 >> 2];
  __ZN4wasmlsERNSt3__113basic_ostreamIcNS0_11char_traitsIcEEEENS_4NameE(i7, i2) | 0;
  i1 = i1 + 4 | 0;
 }
 __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_c(HEAP32[i5 >> 2] | 0, 41) | 0;
 STACKTOP = i6;
 return;
}

function __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6appendEPKcj(i6, i5, i4) {
 i6 = i6 | 0;
 i5 = i5 | 0;
 i4 = i4 | 0;
 var i1 = 0, i2 = 0, i3 = 0;
 i1 = HEAP8[i6 >> 0] | 0;
 if (!(i1 & 1)) i2 = 10; else {
  i1 = HEAP32[i6 >> 2] | 0;
  i2 = (i1 & -2) + -1 | 0;
  i1 = i1 & 255;
 }
 if (!(i1 & 1)) i3 = (i1 & 255) >>> 1; else i3 = HEAP32[i6 + 4 >> 2] | 0;
 if ((i2 - i3 | 0) >>> 0 >= i4 >>> 0) {
  if (i4 | 0) {
   if (!(i1 & 1)) i2 = i6 + 1 | 0; else i2 = HEAP32[i6 + 8 >> 2] | 0;
   _memcpy(i2 + i3 | 0, i5 | 0, i4 | 0) | 0;
   i1 = i3 + i4 | 0;
   if (!(HEAP8[i6 >> 0] & 1)) HEAP8[i6 >> 0] = i1 << 1; else HEAP32[i6 + 4 >> 2] = i1;
   HEAP8[i2 + i1 >> 0] = 0;
  }
 } else __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE21__grow_by_and_replaceEjjjjjjPKc(i6, i2, i4 - i2 + i3 | 0, i3, i3, 0, i4, i5);
 return i6 | 0;
}

function _wcrtomb(i1, i3, i2) {
 i1 = i1 | 0;
 i3 = i3 | 0;
 i2 = i2 | 0;
 do if (i1) {
  if (i3 >>> 0 < 128) {
   HEAP8[i1 >> 0] = i3;
   i1 = 1;
   break;
  }
  if (i3 >>> 0 < 2048) {
   HEAP8[i1 >> 0] = i3 >>> 6 | 192;
   HEAP8[i1 + 1 >> 0] = i3 & 63 | 128;
   i1 = 2;
   break;
  }
  if (i3 >>> 0 < 55296 | (i3 & -8192 | 0) == 57344) {
   HEAP8[i1 >> 0] = i3 >>> 12 | 224;
   HEAP8[i1 + 1 >> 0] = i3 >>> 6 & 63 | 128;
   HEAP8[i1 + 2 >> 0] = i3 & 63 | 128;
   i1 = 3;
   break;
  }
  if ((i3 + -65536 | 0) >>> 0 < 1048576) {
   HEAP8[i1 >> 0] = i3 >>> 18 | 240;
   HEAP8[i1 + 1 >> 0] = i3 >>> 12 & 63 | 128;
   HEAP8[i1 + 2 >> 0] = i3 >>> 6 & 63 | 128;
   HEAP8[i1 + 3 >> 0] = i3 & 63 | 128;
   i1 = 4;
   break;
  } else {
   i1 = ___errno_location() | 0;
   HEAP32[i1 >> 2] = 84;
   i1 = -1;
   break;
  }
 } else i1 = 1; while (0);
 return i1 | 0;
}

function __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6assignEPKwj(i6, i5, i4) {
 i6 = i6 | 0;
 i5 = i5 | 0;
 i4 = i4 | 0;
 var i1 = 0, i2 = 0, i3 = 0;
 i1 = HEAP8[i6 >> 0] | 0;
 if (!(i1 & 1)) i3 = 1; else {
  i1 = HEAP32[i6 >> 2] | 0;
  i3 = (i1 & -2) + -1 | 0;
  i1 = i1 & 255;
 }
 i2 = (i1 & 1) == 0;
 do if (i3 >>> 0 >= i4 >>> 0) {
  if (i2) i1 = i6 + 4 | 0; else i1 = HEAP32[i6 + 8 >> 2] | 0;
  _wmemmove(i1, i5, i4) | 0;
  HEAP32[i1 + (i4 << 2) >> 2] = 0;
  if (!(HEAP8[i6 >> 0] & 1)) {
   HEAP8[i6 >> 0] = i4 << 1;
   break;
  } else {
   HEAP32[i6 + 4 >> 2] = i4;
   break;
  }
 } else {
  if (i2) i1 = (i1 & 255) >>> 1; else i1 = HEAP32[i6 + 4 >> 2] | 0;
  __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE21__grow_by_and_replaceEjjjjjjPKw(i6, i3, i4 - i3 | 0, i1, 0, i1, i4, i5);
 } while (0);
 return i6 | 0;
}

function __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE9__grow_byEjjjjjj(i8, i6, i1, i7, i5, i4) {
 i8 = i8 | 0;
 i6 = i6 | 0;
 i1 = i1 | 0;
 i7 = i7 | 0;
 i5 = i5 | 0;
 i4 = i4 | 0;
 var i2 = 0, i3 = 0;
 if ((-17 - i6 | 0) >>> 0 < i1 >>> 0) __ZNKSt3__121__basic_string_commonILb1EE20__throw_length_errorEv(i8);
 if (!(HEAP8[i8 >> 0] & 1)) i3 = i8 + 1 | 0; else i3 = HEAP32[i8 + 8 >> 2] | 0;
 if (i6 >>> 0 < 2147483623) {
  i1 = i1 + i6 | 0;
  i2 = i6 << 1;
  i1 = i1 >>> 0 < i2 >>> 0 ? i2 : i1;
  i1 = i1 >>> 0 < 11 ? 11 : i1 + 16 & -16;
 } else i1 = -17;
 i2 = _malloc(i1) | 0;
 if (i5 | 0) _memcpy(i2 | 0, i3 | 0, i5 | 0) | 0;
 if ((i7 | 0) != (i5 | 0)) _memcpy(i2 + i5 + i4 | 0, i3 + i5 | 0, i7 - i5 | 0) | 0;
 if ((i6 | 0) != 10) _free(i3);
 HEAP32[i8 + 8 >> 2] = i2;
 HEAP32[i8 >> 2] = i1 | 1;
 return;
}

function __ZNSt3__112__hash_tableIN6cashew7IStringENS_4hashIS2_EENS_8equal_toIS2_EENS_9allocatorIS2_EEE15__insert_uniqueIS2_EENS_4pairINS_15__hash_iteratorIPNS_11__hash_nodeIS2_PvEEEEbEEOT_(i2, i3, i1) {
 i2 = i2 | 0;
 i3 = i3 | 0;
 i1 = i1 | 0;
 var i4 = 0, i5 = 0;
 i4 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i5 = i4;
 __ZNSt3__112__hash_tableIN6cashew7IStringENS_4hashIS2_EENS_8equal_toIS2_EENS_9allocatorIS2_EEE16__construct_nodeIJS2_EEENS_10unique_ptrINS_11__hash_nodeIS2_PvEENS_22__hash_node_destructorINS7_ISE_EEEEEEDpOT_(i5, i3, i1);
 i1 = HEAP32[i5 >> 2] | 0;
 __ZNSt3__112__hash_tableIN6cashew7IStringENS_4hashIS2_EENS_8equal_toIS2_EENS_9allocatorIS2_EEE20__node_insert_uniqueEPNS_11__hash_nodeIS2_PvEE(i2, i3, i1);
 i3 = (HEAP8[i2 + 4 >> 0] | 0) != 0;
 HEAP32[i5 >> 2] = 0;
 if (!(i3 | (i1 | 0) == 0)) __ZdlPv(i1);
 STACKTOP = i4;
 return;
}

function __ZN4wasm22ShellExternalInterface4initERNS_6ModuleE(i1, i2) {
 i1 = i1 | 0;
 i2 = i2 | 0;
 var i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0;
 i6 = i1 + 4 | 0;
 i7 = i2 + 60 | 0;
 __ZN4wasm22ShellExternalInterface6Memory6resizeEj(i6, HEAP32[i7 >> 2] << 16);
 i8 = HEAP32[i2 + 72 >> 2] | 0;
 i4 = HEAP32[i2 + 68 >> 2] | 0;
 while (1) {
  if ((i4 | 0) == (i8 | 0)) {
   i1 = 3;
   break;
  }
  i3 = HEAP32[i4 >> 2] | 0;
  i1 = HEAP32[i4 + 4 >> 2] | 0;
  i2 = HEAP32[i4 + 8 >> 2] | 0;
  if ((i2 + i3 | 0) >>> 0 > HEAP32[i7 >> 2] << 16 >>> 0) {
   i1 = 5;
   break;
  } else i5 = 0;
  while (1) {
   if ((i5 | 0) == (i2 | 0)) break;
   HEAP8[(HEAP32[i6 >> 2] | 0) + (i5 + i3) >> 0] = HEAP8[i1 + i5 >> 0] | 0;
   i5 = i5 + 1 | 0;
  }
  i4 = i4 + 12 | 0;
 }
 if ((i1 | 0) == 3) return; else if ((i1 | 0) == 5) ___assert_fail(15388, 15467, 92, 15489);
}

function __ZNSt3__119__thread_struct_impD2Ev(i4) {
 i4 = i4 | 0;
 var i1 = 0, i2 = 0, i3 = 0;
 i3 = i4 + 12 | 0;
 i1 = HEAP32[i4 + 16 >> 2] | 0;
 i2 = HEAP32[i3 >> 2] | 0;
 while (1) {
  if ((i2 | 0) == (i1 | 0)) break;
  __ZNSt3__15mutex6unlockEv(HEAP32[i2 + 4 >> 2] | 0);
  __ZNSt3__118condition_variable10notify_allEv(HEAP32[i2 >> 2] | 0);
  i2 = i2 + 8 | 0;
 }
 i1 = HEAP32[i4 + 4 >> 2] | 0;
 i2 = HEAP32[i4 >> 2] | 0;
 while (1) {
  if ((i2 | 0) == (i1 | 0)) break;
  __ZNSt3__117__assoc_sub_state12__make_readyEv(HEAP32[i2 >> 2] | 0);
  __ZNSt3__114__shared_count16__release_sharedEv(HEAP32[i2 >> 2] | 0) | 0;
  i2 = i2 + 4 | 0;
 }
 __ZNSt3__113__vector_baseINS_4pairIPNS_18condition_variableEPNS_5mutexEEENS_18__hidden_allocatorIS6_EEED2Ev(i3);
 __ZNSt3__113__vector_baseIPNS_17__assoc_sub_stateENS_18__hidden_allocatorIS2_EEED2Ev(i4);
 return;
}

function __ZNK10__cxxabiv117__class_type_info9can_catchEPKNS_16__shim_type_infoERPv(i6, i1, i4) {
 i6 = i6 | 0;
 i1 = i1 | 0;
 i4 = i4 | 0;
 var i2 = 0, i3 = 0, i5 = 0, i7 = 0;
 i7 = STACKTOP;
 STACKTOP = STACKTOP + 64 | 0;
 i5 = i7;
 if ((i6 | 0) != (i1 | 0)) if ((i1 | 0) != 0 ? (i3 = ___dynamic_cast(i1, 2848, 2816, 0) | 0, (i3 | 0) != 0) : 0) {
  i1 = i5;
  i2 = i1 + 56 | 0;
  do {
   HEAP32[i1 >> 2] = 0;
   i1 = i1 + 4 | 0;
  } while ((i1 | 0) < (i2 | 0));
  HEAP32[i5 >> 2] = i3;
  HEAP32[i5 + 8 >> 2] = i6;
  HEAP32[i5 + 12 >> 2] = -1;
  HEAP32[i5 + 48 >> 2] = 1;
  FUNCTION_TABLE_viiii[HEAP32[(HEAP32[i3 >> 2] | 0) + 28 >> 2] & 15](i3, i5, HEAP32[i4 >> 2] | 0, 1);
  if ((HEAP32[i5 + 24 >> 2] | 0) == 1) {
   HEAP32[i4 >> 2] = HEAP32[i5 + 16 >> 2];
   i1 = 1;
  } else i1 = 0;
 } else i1 = 0; else i1 = 1;
 STACKTOP = i7;
 return i1 | 0;
}

function __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj9EEERAT__Kc(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 var i3 = 0, i4 = 0, i5 = 0;
 HEAP8[i2 >> 0] = 16;
 i3 = i1;
 i5 = i3;
 i5 = HEAPU8[i5 >> 0] | HEAPU8[i5 + 1 >> 0] << 8 | HEAPU8[i5 + 2 >> 0] << 16 | HEAPU8[i5 + 3 >> 0] << 24;
 i3 = i3 + 4 | 0;
 i3 = HEAPU8[i3 >> 0] | HEAPU8[i3 + 1 >> 0] << 8 | HEAPU8[i3 + 2 >> 0] << 16 | HEAPU8[i3 + 3 >> 0] << 24;
 i1 = i2 + 1 | 0;
 i4 = i1;
 HEAP8[i4 >> 0] = i5;
 HEAP8[i4 + 1 >> 0] = i5 >> 8;
 HEAP8[i4 + 2 >> 0] = i5 >> 16;
 HEAP8[i4 + 3 >> 0] = i5 >> 24;
 i1 = i1 + 4 | 0;
 HEAP8[i1 >> 0] = i3;
 HEAP8[i1 + 1 >> 0] = i3 >> 8;
 HEAP8[i1 + 2 >> 0] = i3 >> 16;
 HEAP8[i1 + 3 >> 0] = i3 >> 24;
 HEAP8[i2 + 9 >> 0] = 0;
 i1 = i2 + 12 | 0;
 i2 = 0;
 while (1) {
  if ((i2 | 0) == 3) break;
  HEAP32[i1 + (i2 << 2) >> 2] = 0;
  i2 = i2 + 1 | 0;
 }
 return;
}

function __ZNSt3__115basic_stringbufIcNS_11char_traitsIcEENS_9allocatorIcEEE9pbackfailEi(i6, i1) {
 i6 = i6 | 0;
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i4 = 0, i5 = 0;
 i3 = i6 + 44 | 0;
 i2 = HEAP32[i3 >> 2] | 0;
 i4 = HEAP32[i6 + 24 >> 2] | 0;
 if (i2 >>> 0 < i4 >>> 0) {
  HEAP32[i3 >> 2] = i4;
  i2 = i4;
 }
 i5 = i6 + 12 | 0;
 i3 = HEAP32[i5 >> 2] | 0;
 do if ((HEAP32[i6 + 8 >> 2] | 0) >>> 0 < i3 >>> 0) {
  if ((i1 | 0) == -1) {
   HEAP32[i5 >> 2] = i3 + -1;
   HEAP32[i6 + 16 >> 2] = i2;
   i1 = 0;
   break;
  }
  if (!(HEAP32[i6 + 48 >> 2] & 16)) {
   i4 = i1 & 255;
   i3 = i3 + -1 | 0;
   if (i4 << 24 >> 24 != (HEAP8[i3 >> 0] | 0)) {
    i1 = -1;
    break;
   }
  } else {
   i4 = i1 & 255;
   i3 = i3 + -1 | 0;
  }
  HEAP32[i5 >> 2] = i3;
  HEAP32[i6 + 16 >> 2] = i2;
  HEAP8[i3 >> 0] = i4;
 } else i1 = -1; while (0);
 return i1 | 0;
}

function __ZNSt3__13mapIN4wasm4NameEjNS_4lessIS2_EENS_9allocatorINS_4pairIKS2_jEEEEEixERS7_(i6, i4) {
 i6 = i6 | 0;
 i4 = i4 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i5 = 0, i7 = 0;
 i7 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i5 = i7 + 12 | 0;
 i3 = i7;
 i2 = __ZNSt3__13mapIN4wasm4NameEjNS_4lessIS2_EENS_9allocatorINS_4pairIKS2_jEEEEE16__find_equal_keyERPNS_16__tree_node_baseIPvEERS7_(i6, i5, i4) | 0;
 i1 = HEAP32[i2 >> 2] | 0;
 if (!i1) {
  __ZNSt3__13mapIN4wasm4NameEjNS_4lessIS2_EENS_9allocatorINS_4pairIKS2_jEEEEE25__construct_node_with_keyERS7_(i3, i6, i4);
  i1 = HEAP32[i3 >> 2] | 0;
  __ZNSt3__16__treeINS_12__value_typeIN4wasm4NameEjEENS_19__map_value_compareIS3_S4_NS_4lessIS3_EELb1EEENS_9allocatorIS4_EEE16__insert_node_atEPNS_16__tree_node_baseIPvEERSF_SF_(i6, HEAP32[i5 >> 2] | 0, i2, i1);
 }
 STACKTOP = i7;
 return i1 + 20 | 0;
}

function __ZNKSt3__18time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE16do_get_monthnameES4_S4_RNS_8ios_baseERjP2tm(i6, i1, i2, i4, i3, i5) {
 i6 = i6 | 0;
 i1 = i1 | 0;
 i2 = i2 | 0;
 i4 = i4 | 0;
 i3 = i3 | 0;
 i5 = i5 | 0;
 var i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0;
 i7 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i8 = i7 + 8 | 0;
 i11 = i7 + 4 | 0;
 i9 = i7;
 i10 = __ZNKSt3__18ios_base6getlocEv(i4) | 0;
 HEAP32[i11 >> 2] = i10;
 i4 = __ZNKSt3__16locale9use_facetERNS0_2idE(i11, 38408) | 0;
 __ZNSt3__114__shared_count16__release_sharedEv(i10) | 0;
 HEAP32[i9 >> 2] = HEAP32[i2 >> 2];
 HEAP32[i8 >> 2] = HEAP32[i9 >> 2];
 __ZNKSt3__18time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE15__get_monthnameERiRS4_S4_RjRKNS_5ctypeIwEE(i6, i5 + 16 | 0, i1, i8, i3, i4);
 STACKTOP = i7;
 return HEAP32[i1 >> 2] | 0;
}

function __ZNKSt3__18time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE14do_get_weekdayES4_S4_RNS_8ios_baseERjP2tm(i6, i1, i2, i4, i3, i5) {
 i6 = i6 | 0;
 i1 = i1 | 0;
 i2 = i2 | 0;
 i4 = i4 | 0;
 i3 = i3 | 0;
 i5 = i5 | 0;
 var i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0;
 i7 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i8 = i7 + 8 | 0;
 i11 = i7 + 4 | 0;
 i9 = i7;
 i10 = __ZNKSt3__18ios_base6getlocEv(i4) | 0;
 HEAP32[i11 >> 2] = i10;
 i4 = __ZNKSt3__16locale9use_facetERNS0_2idE(i11, 38408) | 0;
 __ZNSt3__114__shared_count16__release_sharedEv(i10) | 0;
 HEAP32[i9 >> 2] = HEAP32[i2 >> 2];
 HEAP32[i8 >> 2] = HEAP32[i9 >> 2];
 __ZNKSt3__18time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE17__get_weekdaynameERiRS4_S4_RjRKNS_5ctypeIwEE(i6, i5 + 24 | 0, i1, i8, i3, i4);
 STACKTOP = i7;
 return HEAP32[i1 >> 2] | 0;
}

function __ZNKSt3__18time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE16do_get_monthnameES4_S4_RNS_8ios_baseERjP2tm(i6, i1, i2, i4, i3, i5) {
 i6 = i6 | 0;
 i1 = i1 | 0;
 i2 = i2 | 0;
 i4 = i4 | 0;
 i3 = i3 | 0;
 i5 = i5 | 0;
 var i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0;
 i7 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i8 = i7 + 8 | 0;
 i11 = i7 + 4 | 0;
 i9 = i7;
 i10 = __ZNKSt3__18ios_base6getlocEv(i4) | 0;
 HEAP32[i11 >> 2] = i10;
 i4 = __ZNKSt3__16locale9use_facetERNS0_2idE(i11, 38376) | 0;
 __ZNSt3__114__shared_count16__release_sharedEv(i10) | 0;
 HEAP32[i9 >> 2] = HEAP32[i2 >> 2];
 HEAP32[i8 >> 2] = HEAP32[i9 >> 2];
 __ZNKSt3__18time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE15__get_monthnameERiRS4_S4_RjRKNS_5ctypeIcEE(i6, i5 + 16 | 0, i1, i8, i3, i4);
 STACKTOP = i7;
 return HEAP32[i1 >> 2] | 0;
}

function __ZNKSt3__18time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE14do_get_weekdayES4_S4_RNS_8ios_baseERjP2tm(i6, i1, i2, i4, i3, i5) {
 i6 = i6 | 0;
 i1 = i1 | 0;
 i2 = i2 | 0;
 i4 = i4 | 0;
 i3 = i3 | 0;
 i5 = i5 | 0;
 var i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0;
 i7 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i8 = i7 + 8 | 0;
 i11 = i7 + 4 | 0;
 i9 = i7;
 i10 = __ZNKSt3__18ios_base6getlocEv(i4) | 0;
 HEAP32[i11 >> 2] = i10;
 i4 = __ZNKSt3__16locale9use_facetERNS0_2idE(i11, 38376) | 0;
 __ZNSt3__114__shared_count16__release_sharedEv(i10) | 0;
 HEAP32[i9 >> 2] = HEAP32[i2 >> 2];
 HEAP32[i8 >> 2] = HEAP32[i9 >> 2];
 __ZNKSt3__18time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE17__get_weekdaynameERiRS4_S4_RjRKNS_5ctypeIcEE(i6, i5 + 24 | 0, i1, i8, i3, i4);
 STACKTOP = i7;
 return HEAP32[i1 >> 2] | 0;
}

function __ZN4wasm14ModuleInstance10callExportENS_4NameERNSt3__16vectorINS_7LiteralENS2_9allocatorIS4_EEEE(i4, i6, i1, i5) {
 i4 = i4 | 0;
 i6 = i6 | 0;
 i1 = i1 | 0;
 i5 = i5 | 0;
 var i2 = 0, i3 = 0, i7 = 0, i8 = 0, i9 = 0;
 i7 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i2 = i7 + 8 | 0;
 i9 = i7 + 4 | 0;
 i3 = i7;
 i8 = HEAP32[i6 >> 2] | 0;
 HEAP32[i9 >> 2] = HEAP32[i1 >> 2];
 HEAP32[i2 >> 2] = HEAP32[i9 >> 2];
 i1 = __ZN4wasm6Module11checkExportENS_4NameE(i8, i2) | 0;
 if (!i1) {
  i9 = HEAP32[i6 + 24 >> 2] | 0;
  FUNCTION_TABLE_vii[HEAP32[(HEAP32[i9 >> 2] | 0) + 20 >> 2] & 511](i9, 17041);
 }
 HEAP32[i3 >> 2] = HEAP32[i1 + 4 >> 2];
 HEAP32[i2 >> 2] = HEAP32[i3 >> 2];
 __ZN4wasm14ModuleInstance12callFunctionEN6cashew7IStringERNSt3__16vectorINS_7LiteralENS3_9allocatorIS5_EEEE(i4, i6, i2, i5);
 STACKTOP = i7;
 return;
}

function __ZNSt3__16vectorIN4wasm6WalkerINS1_17RemoveUnusedNamesENS1_7VisitorIS3_vEEE4TaskENS_9allocatorIS7_EEE26__swap_out_circular_bufferERNS_14__split_bufferIS7_RS9_EE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 var i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0;
 i4 = HEAP32[i2 >> 2] | 0;
 i6 = i2 + 4 | 0;
 i3 = i1 + 4 | 0;
 i5 = (HEAP32[i6 >> 2] | 0) - i4 | 0;
 i7 = (HEAP32[i3 >> 2] | 0) + (0 - (i5 >> 3) << 3) | 0;
 HEAP32[i3 >> 2] = i7;
 _memcpy(i7 | 0, i4 | 0, i5 | 0) | 0;
 i5 = HEAP32[i2 >> 2] | 0;
 HEAP32[i2 >> 2] = HEAP32[i3 >> 2];
 HEAP32[i3 >> 2] = i5;
 i5 = i1 + 8 | 0;
 i4 = HEAP32[i6 >> 2] | 0;
 HEAP32[i6 >> 2] = HEAP32[i5 >> 2];
 HEAP32[i5 >> 2] = i4;
 i5 = i2 + 8 | 0;
 i2 = i1 + 12 | 0;
 i4 = HEAP32[i5 >> 2] | 0;
 HEAP32[i5 >> 2] = HEAP32[i2 >> 2];
 HEAP32[i2 >> 2] = i4;
 HEAP32[i1 >> 2] = HEAP32[i3 >> 2];
 return;
}

function __ZNKSt3__17codecvtIwc11__mbstate_tE10do_unshiftERS1_PcS4_RS4_(i2, i4, i3, i5, i6) {
 i2 = i2 | 0;
 i4 = i4 | 0;
 i3 = i3 | 0;
 i5 = i5 | 0;
 i6 = i6 | 0;
 var i1 = 0, i7 = 0;
 i7 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i1 = i7;
 HEAP32[i6 >> 2] = i3;
 i3 = _uselocale(HEAP32[i2 + 8 >> 2] | 0) | 0;
 i2 = _wcrtomb(i1, 0, i4) | 0;
 if (i3 | 0) _uselocale(i3) | 0;
 L4 : do switch (i2 | 0) {
 case 0:
 case -1:
  {
   i1 = 2;
   break;
  }
 default:
  {
   i2 = i2 + -1 | 0;
   if (i2 >>> 0 > (i5 - (HEAP32[i6 >> 2] | 0) | 0) >>> 0) i1 = 1; else while (1) {
    if (!i2) {
     i1 = 0;
     break L4;
    }
    i4 = HEAP8[i1 >> 0] | 0;
    i5 = HEAP32[i6 >> 2] | 0;
    HEAP32[i6 >> 2] = i5 + 1;
    HEAP8[i5 >> 0] = i4;
    i2 = i2 + -1 | 0;
    i1 = i1 + 1 | 0;
   }
  }
 } while (0);
 STACKTOP = i7;
 return i1 | 0;
}

function __ZN4wasm6WalkerINS_17RemoveUnusedNamesENS_7VisitorIS1_vEEE13maybePushTaskEPFvPS1_PPNS_10ExpressionEES8_(i7, i1, i2) {
 i7 = i7 | 0;
 i1 = i1 | 0;
 i2 = i2 | 0;
 var i3 = 0, i4 = 0, i5 = 0, i6 = 0, i8 = 0;
 i8 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i5 = i8 + 4 | 0;
 i6 = i8;
 HEAP32[i5 >> 2] = i1;
 HEAP32[i6 >> 2] = i2;
 i4 = i2;
 do if (HEAP32[i2 >> 2] | 0) {
  i2 = i7 + 8 | 0;
  i3 = HEAP32[i2 >> 2] | 0;
  if (i3 >>> 0 < (HEAP32[i7 + 12 >> 2] | 0) >>> 0) {
   HEAP32[i3 >> 2] = i1;
   HEAP32[i3 + 4 >> 2] = i4;
   HEAP32[i2 >> 2] = i3 + 8;
   break;
  } else {
   __ZNSt3__16vectorIN4wasm6WalkerINS1_17RemoveUnusedNamesENS1_7VisitorIS3_vEEE4TaskENS_9allocatorIS7_EEE24__emplace_back_slow_pathIJRPFvPS3_PPNS1_10ExpressionEERSF_EEEvDpOT_(i7 + 4 | 0, i5, i6);
   break;
  }
 } while (0);
 STACKTOP = i8;
 return;
}

function __ZNSt3__16vectorIN4wasm6WalkerINS1_15SetLocalRemoverENS1_7VisitorIS3_vEEE4TaskENS_9allocatorIS7_EEE26__swap_out_circular_bufferERNS_14__split_bufferIS7_RS9_EE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 var i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0;
 i4 = HEAP32[i2 >> 2] | 0;
 i6 = i2 + 4 | 0;
 i3 = i1 + 4 | 0;
 i5 = (HEAP32[i6 >> 2] | 0) - i4 | 0;
 i7 = (HEAP32[i3 >> 2] | 0) + (0 - (i5 >> 3) << 3) | 0;
 HEAP32[i3 >> 2] = i7;
 _memcpy(i7 | 0, i4 | 0, i5 | 0) | 0;
 i5 = HEAP32[i2 >> 2] | 0;
 HEAP32[i2 >> 2] = HEAP32[i3 >> 2];
 HEAP32[i3 >> 2] = i5;
 i5 = i1 + 8 | 0;
 i4 = HEAP32[i6 >> 2] | 0;
 HEAP32[i6 >> 2] = HEAP32[i5 >> 2];
 HEAP32[i5 >> 2] = i4;
 i5 = i2 + 8 | 0;
 i2 = i1 + 12 | 0;
 i4 = HEAP32[i5 >> 2] | 0;
 HEAP32[i5 >> 2] = HEAP32[i2 >> 2];
 HEAP32[i2 >> 2] = i4;
 HEAP32[i1 >> 2] = HEAP32[i3 >> 2];
 return;
}

function __ZNSt3__16vectorIN4wasm6WalkerINS1_15RemoveUnusedBrsENS1_7VisitorIS3_vEEE4TaskENS_9allocatorIS7_EEE26__swap_out_circular_bufferERNS_14__split_bufferIS7_RS9_EE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 var i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0;
 i4 = HEAP32[i2 >> 2] | 0;
 i6 = i2 + 4 | 0;
 i3 = i1 + 4 | 0;
 i5 = (HEAP32[i6 >> 2] | 0) - i4 | 0;
 i7 = (HEAP32[i3 >> 2] | 0) + (0 - (i5 >> 3) << 3) | 0;
 HEAP32[i3 >> 2] = i7;
 _memcpy(i7 | 0, i4 | 0, i5 | 0) | 0;
 i5 = HEAP32[i2 >> 2] | 0;
 HEAP32[i2 >> 2] = HEAP32[i3 >> 2];
 HEAP32[i3 >> 2] = i5;
 i5 = i1 + 8 | 0;
 i4 = HEAP32[i6 >> 2] | 0;
 HEAP32[i6 >> 2] = HEAP32[i5 >> 2];
 HEAP32[i5 >> 2] = i4;
 i5 = i2 + 8 | 0;
 i2 = i1 + 12 | 0;
 i4 = HEAP32[i5 >> 2] | 0;
 HEAP32[i5 >> 2] = HEAP32[i2 >> 2];
 HEAP32[i2 >> 2] = i4;
 HEAP32[i1 >> 2] = HEAP32[i3 >> 2];
 return;
}

function __ZNSt3__16vectorIN4wasm6WalkerINS1_15GetLocalCounterENS1_7VisitorIS3_vEEE4TaskENS_9allocatorIS7_EEE26__swap_out_circular_bufferERNS_14__split_bufferIS7_RS9_EE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 var i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0;
 i4 = HEAP32[i2 >> 2] | 0;
 i6 = i2 + 4 | 0;
 i3 = i1 + 4 | 0;
 i5 = (HEAP32[i6 >> 2] | 0) - i4 | 0;
 i7 = (HEAP32[i3 >> 2] | 0) + (0 - (i5 >> 3) << 3) | 0;
 HEAP32[i3 >> 2] = i7;
 _memcpy(i7 | 0, i4 | 0, i5 | 0) | 0;
 i5 = HEAP32[i2 >> 2] | 0;
 HEAP32[i2 >> 2] = HEAP32[i3 >> 2];
 HEAP32[i3 >> 2] = i5;
 i5 = i1 + 8 | 0;
 i4 = HEAP32[i6 >> 2] | 0;
 HEAP32[i6 >> 2] = HEAP32[i5 >> 2];
 HEAP32[i5 >> 2] = i4;
 i5 = i2 + 8 | 0;
 i2 = i1 + 12 | 0;
 i4 = HEAP32[i5 >> 2] | 0;
 HEAP32[i5 >> 2] = HEAP32[i2 >> 2];
 HEAP32[i2 >> 2] = i4;
 HEAP32[i1 >> 2] = HEAP32[i3 >> 2];
 return;
}

function __ZN6cashew10IStringSetC2EPKc(i6, i1) {
 i6 = i6 | 0;
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i7 = 0;
 i7 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i4 = i7 + 8 | 0;
 i5 = i7;
 HEAP32[i6 >> 2] = 0;
 HEAP32[i6 + 4 >> 2] = 0;
 HEAP32[i6 + 8 >> 2] = 0;
 HEAP32[i6 + 12 >> 2] = 0;
 HEAPF32[i6 + 16 >> 2] = 1.0;
 i2 = (_strlen(i1) | 0) + 1 | 0;
 i3 = __Znaj((i2 | 0) > -1 ? i2 : -1) | 0;
 _strncpy(i3, i1, i2) | 0;
 while (1) {
  i1 = _strchr(i3, 32) | 0;
  i2 = (i1 | 0) != 0;
  if (i2) HEAP8[i1 >> 0] = 0;
  __ZN6cashew7IStringC2EPKcb(i5, i3, 1);
  __ZNSt3__112__hash_tableIN6cashew7IStringENS_4hashIS2_EENS_8equal_toIS2_EENS_9allocatorIS2_EEE15__insert_uniqueIS2_EENS_4pairINS_15__hash_iteratorIPNS_11__hash_nodeIS2_PvEEEEbEEOT_(i4, i6, i5);
  if (i2) i3 = i1 + 1 | 0; else break;
 }
 STACKTOP = i7;
 return;
}

function __ZNSt3__16vectorIN4wasm6WalkerINS1_14SimplifyLocalsENS1_7VisitorIS3_vEEE4TaskENS_9allocatorIS7_EEE26__swap_out_circular_bufferERNS_14__split_bufferIS7_RS9_EE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 var i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0;
 i4 = HEAP32[i2 >> 2] | 0;
 i6 = i2 + 4 | 0;
 i3 = i1 + 4 | 0;
 i5 = (HEAP32[i6 >> 2] | 0) - i4 | 0;
 i7 = (HEAP32[i3 >> 2] | 0) + (0 - (i5 >> 3) << 3) | 0;
 HEAP32[i3 >> 2] = i7;
 _memcpy(i7 | 0, i4 | 0, i5 | 0) | 0;
 i5 = HEAP32[i2 >> 2] | 0;
 HEAP32[i2 >> 2] = HEAP32[i3 >> 2];
 HEAP32[i3 >> 2] = i5;
 i5 = i1 + 8 | 0;
 i4 = HEAP32[i6 >> 2] | 0;
 HEAP32[i6 >> 2] = HEAP32[i5 >> 2];
 HEAP32[i5 >> 2] = i4;
 i5 = i2 + 8 | 0;
 i2 = i1 + 12 | 0;
 i4 = HEAP32[i5 >> 2] | 0;
 HEAP32[i5 >> 2] = HEAP32[i2 >> 2];
 HEAP32[i2 >> 2] = i4;
 HEAP32[i1 >> 2] = HEAP32[i3 >> 2];
 return;
}

function __ZNSt3__16vectorIN4wasm6WalkerINS1_14PostEmscriptenENS1_7VisitorIS3_vEEE4TaskENS_9allocatorIS7_EEE26__swap_out_circular_bufferERNS_14__split_bufferIS7_RS9_EE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 var i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0;
 i4 = HEAP32[i2 >> 2] | 0;
 i6 = i2 + 4 | 0;
 i3 = i1 + 4 | 0;
 i5 = (HEAP32[i6 >> 2] | 0) - i4 | 0;
 i7 = (HEAP32[i3 >> 2] | 0) + (0 - (i5 >> 3) << 3) | 0;
 HEAP32[i3 >> 2] = i7;
 _memcpy(i7 | 0, i4 | 0, i5 | 0) | 0;
 i5 = HEAP32[i2 >> 2] | 0;
 HEAP32[i2 >> 2] = HEAP32[i3 >> 2];
 HEAP32[i3 >> 2] = i5;
 i5 = i1 + 8 | 0;
 i4 = HEAP32[i6 >> 2] | 0;
 HEAP32[i6 >> 2] = HEAP32[i5 >> 2];
 HEAP32[i5 >> 2] = i4;
 i5 = i2 + 8 | 0;
 i2 = i1 + 12 | 0;
 i4 = HEAP32[i5 >> 2] | 0;
 HEAP32[i5 >> 2] = HEAP32[i2 >> 2];
 HEAP32[i2 >> 2] = i4;
 HEAP32[i1 >> 2] = HEAP32[i3 >> 2];
 return;
}

function __ZNSt3__16vectorIN4wasm6WalkerINS1_14EffectAnalyzerENS1_7VisitorIS3_vEEE4TaskENS_9allocatorIS7_EEE26__swap_out_circular_bufferERNS_14__split_bufferIS7_RS9_EE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 var i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0;
 i4 = HEAP32[i2 >> 2] | 0;
 i6 = i2 + 4 | 0;
 i3 = i1 + 4 | 0;
 i5 = (HEAP32[i6 >> 2] | 0) - i4 | 0;
 i7 = (HEAP32[i3 >> 2] | 0) + (0 - (i5 >> 3) << 3) | 0;
 HEAP32[i3 >> 2] = i7;
 _memcpy(i7 | 0, i4 | 0, i5 | 0) | 0;
 i5 = HEAP32[i2 >> 2] | 0;
 HEAP32[i2 >> 2] = HEAP32[i3 >> 2];
 HEAP32[i3 >> 2] = i5;
 i5 = i1 + 8 | 0;
 i4 = HEAP32[i6 >> 2] | 0;
 HEAP32[i6 >> 2] = HEAP32[i5 >> 2];
 HEAP32[i5 >> 2] = i4;
 i5 = i2 + 8 | 0;
 i2 = i1 + 12 | 0;
 i4 = HEAP32[i5 >> 2] | 0;
 HEAP32[i5 >> 2] = HEAP32[i2 >> 2];
 HEAP32[i2 >> 2] = i4;
 HEAP32[i1 >> 2] = HEAP32[i3 >> 2];
 return;
}

function __ZNSt3__16vectorIN4wasm6WalkerINS1_13ReorderLocalsENS1_7VisitorIS3_vEEE4TaskENS_9allocatorIS7_EEE26__swap_out_circular_bufferERNS_14__split_bufferIS7_RS9_EE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 var i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0;
 i4 = HEAP32[i2 >> 2] | 0;
 i6 = i2 + 4 | 0;
 i3 = i1 + 4 | 0;
 i5 = (HEAP32[i6 >> 2] | 0) - i4 | 0;
 i7 = (HEAP32[i3 >> 2] | 0) + (0 - (i5 >> 3) << 3) | 0;
 HEAP32[i3 >> 2] = i7;
 _memcpy(i7 | 0, i4 | 0, i5 | 0) | 0;
 i5 = HEAP32[i2 >> 2] | 0;
 HEAP32[i2 >> 2] = HEAP32[i3 >> 2];
 HEAP32[i3 >> 2] = i5;
 i5 = i1 + 8 | 0;
 i4 = HEAP32[i6 >> 2] | 0;
 HEAP32[i6 >> 2] = HEAP32[i5 >> 2];
 HEAP32[i5 >> 2] = i4;
 i5 = i2 + 8 | 0;
 i2 = i1 + 12 | 0;
 i4 = HEAP32[i5 >> 2] | 0;
 HEAP32[i5 >> 2] = HEAP32[i2 >> 2];
 HEAP32[i2 >> 2] = i4;
 HEAP32[i1 >> 2] = HEAP32[i3 >> 2];
 return;
}

function __ZNKSt3__18time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE11do_get_yearES4_S4_RNS_8ios_baseERjP2tm(i6, i1, i2, i4, i3, i5) {
 i6 = i6 | 0;
 i1 = i1 | 0;
 i2 = i2 | 0;
 i4 = i4 | 0;
 i3 = i3 | 0;
 i5 = i5 | 0;
 var i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0;
 i7 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i8 = i7 + 8 | 0;
 i11 = i7 + 4 | 0;
 i9 = i7;
 i10 = __ZNKSt3__18ios_base6getlocEv(i4) | 0;
 HEAP32[i11 >> 2] = i10;
 i4 = __ZNKSt3__16locale9use_facetERNS0_2idE(i11, 38408) | 0;
 __ZNSt3__114__shared_count16__release_sharedEv(i10) | 0;
 HEAP32[i9 >> 2] = HEAP32[i2 >> 2];
 HEAP32[i8 >> 2] = HEAP32[i9 >> 2];
 __ZNKSt3__18time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE10__get_yearERiRS4_S4_RjRKNS_5ctypeIwEE(i6, i5 + 20 | 0, i1, i8, i3, i4);
 STACKTOP = i7;
 return HEAP32[i1 >> 2] | 0;
}

function __ZNKSt3__18time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE11do_get_yearES4_S4_RNS_8ios_baseERjP2tm(i6, i1, i2, i4, i3, i5) {
 i6 = i6 | 0;
 i1 = i1 | 0;
 i2 = i2 | 0;
 i4 = i4 | 0;
 i3 = i3 | 0;
 i5 = i5 | 0;
 var i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0;
 i7 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i8 = i7 + 8 | 0;
 i11 = i7 + 4 | 0;
 i9 = i7;
 i10 = __ZNKSt3__18ios_base6getlocEv(i4) | 0;
 HEAP32[i11 >> 2] = i10;
 i4 = __ZNKSt3__16locale9use_facetERNS0_2idE(i11, 38376) | 0;
 __ZNSt3__114__shared_count16__release_sharedEv(i10) | 0;
 HEAP32[i9 >> 2] = HEAP32[i2 >> 2];
 HEAP32[i8 >> 2] = HEAP32[i9 >> 2];
 __ZNKSt3__18time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE10__get_yearERiRS4_S4_RjRKNS_5ctypeIcEE(i6, i5 + 20 | 0, i1, i8, i3, i4);
 STACKTOP = i7;
 return HEAP32[i1 >> 2] | 0;
}

function __ZN4wasm6WalkerINS_15SetLocalRemoverENS_7VisitorIS1_vEEE13maybePushTaskEPFvPS1_PPNS_10ExpressionEES8_(i7, i1, i2) {
 i7 = i7 | 0;
 i1 = i1 | 0;
 i2 = i2 | 0;
 var i3 = 0, i4 = 0, i5 = 0, i6 = 0, i8 = 0;
 i8 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i5 = i8 + 4 | 0;
 i6 = i8;
 HEAP32[i5 >> 2] = i1;
 HEAP32[i6 >> 2] = i2;
 i4 = i2;
 do if (HEAP32[i2 >> 2] | 0) {
  i2 = i7 + 8 | 0;
  i3 = HEAP32[i2 >> 2] | 0;
  if (i3 >>> 0 < (HEAP32[i7 + 12 >> 2] | 0) >>> 0) {
   HEAP32[i3 >> 2] = i1;
   HEAP32[i3 + 4 >> 2] = i4;
   HEAP32[i2 >> 2] = i3 + 8;
   break;
  } else {
   __ZNSt3__16vectorIN4wasm6WalkerINS1_15SetLocalRemoverENS1_7VisitorIS3_vEEE4TaskENS_9allocatorIS7_EEE24__emplace_back_slow_pathIJRPFvPS3_PPNS1_10ExpressionEERSF_EEEvDpOT_(i7 + 4 | 0, i5, i6);
   break;
  }
 } while (0);
 STACKTOP = i8;
 return;
}

function __ZN4wasm6WalkerINS_15RemoveUnusedBrsENS_7VisitorIS1_vEEE13maybePushTaskEPFvPS1_PPNS_10ExpressionEES8_(i7, i1, i2) {
 i7 = i7 | 0;
 i1 = i1 | 0;
 i2 = i2 | 0;
 var i3 = 0, i4 = 0, i5 = 0, i6 = 0, i8 = 0;
 i8 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i5 = i8 + 4 | 0;
 i6 = i8;
 HEAP32[i5 >> 2] = i1;
 HEAP32[i6 >> 2] = i2;
 i4 = i2;
 do if (HEAP32[i2 >> 2] | 0) {
  i2 = i7 + 8 | 0;
  i3 = HEAP32[i2 >> 2] | 0;
  if (i3 >>> 0 < (HEAP32[i7 + 12 >> 2] | 0) >>> 0) {
   HEAP32[i3 >> 2] = i1;
   HEAP32[i3 + 4 >> 2] = i4;
   HEAP32[i2 >> 2] = i3 + 8;
   break;
  } else {
   __ZNSt3__16vectorIN4wasm6WalkerINS1_15RemoveUnusedBrsENS1_7VisitorIS3_vEEE4TaskENS_9allocatorIS7_EEE24__emplace_back_slow_pathIJRPFvPS3_PPNS1_10ExpressionEERSF_EEEvDpOT_(i7 + 4 | 0, i5, i6);
   break;
  }
 } while (0);
 STACKTOP = i8;
 return;
}

function __ZN4wasm6WalkerINS_15GetLocalCounterENS_7VisitorIS1_vEEE13maybePushTaskEPFvPS1_PPNS_10ExpressionEES8_(i7, i1, i2) {
 i7 = i7 | 0;
 i1 = i1 | 0;
 i2 = i2 | 0;
 var i3 = 0, i4 = 0, i5 = 0, i6 = 0, i8 = 0;
 i8 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i5 = i8 + 4 | 0;
 i6 = i8;
 HEAP32[i5 >> 2] = i1;
 HEAP32[i6 >> 2] = i2;
 i4 = i2;
 do if (HEAP32[i2 >> 2] | 0) {
  i2 = i7 + 8 | 0;
  i3 = HEAP32[i2 >> 2] | 0;
  if (i3 >>> 0 < (HEAP32[i7 + 12 >> 2] | 0) >>> 0) {
   HEAP32[i3 >> 2] = i1;
   HEAP32[i3 + 4 >> 2] = i4;
   HEAP32[i2 >> 2] = i3 + 8;
   break;
  } else {
   __ZNSt3__16vectorIN4wasm6WalkerINS1_15GetLocalCounterENS1_7VisitorIS3_vEEE4TaskENS_9allocatorIS7_EEE24__emplace_back_slow_pathIJRPFvPS3_PPNS1_10ExpressionEERSF_EEEvDpOT_(i7 + 4 | 0, i5, i6);
   break;
  }
 } while (0);
 STACKTOP = i8;
 return;
}

function __ZN4wasm22SExpressionWasmBuilder14makeCallImportERNS_7ElementE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 var i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0;
 i4 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i5 = i4 + 4 | 0;
 i7 = i4;
 i3 = __ZN10MixedArena5allocIN4wasm10CallImportEEEPT_v(HEAP32[i2 + 4 >> 2] | 0) | 0;
 i8 = __ZN4wasm7Element4listEv(i1) | 0;
 i8 = __ZN4wasm7Element3strEv(HEAP32[(HEAP32[i8 >> 2] | 0) + 4 >> 2] | 0) | 0;
 HEAP32[i3 + 20 >> 2] = i8;
 i6 = HEAP32[i2 >> 2] | 0;
 HEAP32[i7 >> 2] = i8;
 HEAP32[i5 >> 2] = HEAP32[i7 >> 2];
 i5 = (__ZN4wasm6Module9getImportENS_4NameE(i6, i5) | 0) + 12 | 0;
 HEAP32[i3 + 4 >> 2] = HEAP32[(HEAP32[i5 >> 2] | 0) + 4 >> 2];
 __ZN4wasm22SExpressionWasmBuilder17parseCallOperandsINS_10CallImportEEEvRNS_7ElementEjPT_(i2, i1, 2, i3);
 STACKTOP = i4;
 return i3 | 0;
}

function __ZNSt3__16vectorIN4wasm6WalkerINS1_11MergeBlocksENS1_7VisitorIS3_vEEE4TaskENS_9allocatorIS7_EEE26__swap_out_circular_bufferERNS_14__split_bufferIS7_RS9_EE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 var i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0;
 i4 = HEAP32[i2 >> 2] | 0;
 i6 = i2 + 4 | 0;
 i3 = i1 + 4 | 0;
 i5 = (HEAP32[i6 >> 2] | 0) - i4 | 0;
 i7 = (HEAP32[i3 >> 2] | 0) + (0 - (i5 >> 3) << 3) | 0;
 HEAP32[i3 >> 2] = i7;
 _memcpy(i7 | 0, i4 | 0, i5 | 0) | 0;
 i5 = HEAP32[i2 >> 2] | 0;
 HEAP32[i2 >> 2] = HEAP32[i3 >> 2];
 HEAP32[i3 >> 2] = i5;
 i5 = i1 + 8 | 0;
 i4 = HEAP32[i6 >> 2] | 0;
 HEAP32[i6 >> 2] = HEAP32[i5 >> 2];
 HEAP32[i5 >> 2] = i4;
 i5 = i2 + 8 | 0;
 i2 = i1 + 12 | 0;
 i4 = HEAP32[i5 >> 2] | 0;
 HEAP32[i5 >> 2] = HEAP32[i2 >> 2];
 HEAP32[i2 >> 2] = i4;
 HEAP32[i1 >> 2] = HEAP32[i3 >> 2];
 return;
}

function __ZNSt3__16vectorIN4wasm6WalkerINS1_11BreakSeekerENS1_7VisitorIS3_vEEE4TaskENS_9allocatorIS7_EEE26__swap_out_circular_bufferERNS_14__split_bufferIS7_RS9_EE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 var i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0;
 i4 = HEAP32[i2 >> 2] | 0;
 i6 = i2 + 4 | 0;
 i3 = i1 + 4 | 0;
 i5 = (HEAP32[i6 >> 2] | 0) - i4 | 0;
 i7 = (HEAP32[i3 >> 2] | 0) + (0 - (i5 >> 3) << 3) | 0;
 HEAP32[i3 >> 2] = i7;
 _memcpy(i7 | 0, i4 | 0, i5 | 0) | 0;
 i5 = HEAP32[i2 >> 2] | 0;
 HEAP32[i2 >> 2] = HEAP32[i3 >> 2];
 HEAP32[i3 >> 2] = i5;
 i5 = i1 + 8 | 0;
 i4 = HEAP32[i6 >> 2] | 0;
 HEAP32[i6 >> 2] = HEAP32[i5 >> 2];
 HEAP32[i5 >> 2] = i4;
 i5 = i2 + 8 | 0;
 i2 = i1 + 12 | 0;
 i4 = HEAP32[i5 >> 2] | 0;
 HEAP32[i5 >> 2] = HEAP32[i2 >> 2];
 HEAP32[i2 >> 2] = i4;
 HEAP32[i1 >> 2] = HEAP32[i3 >> 2];
 return;
}

function __ZN4wasm6WalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE13maybePushTaskEPFvPS1_PPNS_10ExpressionEES8_(i7, i1, i2) {
 i7 = i7 | 0;
 i1 = i1 | 0;
 i2 = i2 | 0;
 var i3 = 0, i4 = 0, i5 = 0, i6 = 0, i8 = 0;
 i8 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i5 = i8 + 4 | 0;
 i6 = i8;
 HEAP32[i5 >> 2] = i1;
 HEAP32[i6 >> 2] = i2;
 i4 = i2;
 do if (HEAP32[i2 >> 2] | 0) {
  i2 = i7 + 8 | 0;
  i3 = HEAP32[i2 >> 2] | 0;
  if (i3 >>> 0 < (HEAP32[i7 + 12 >> 2] | 0) >>> 0) {
   HEAP32[i3 >> 2] = i1;
   HEAP32[i3 + 4 >> 2] = i4;
   HEAP32[i2 >> 2] = i3 + 8;
   break;
  } else {
   __ZNSt3__16vectorIN4wasm6WalkerINS1_14SimplifyLocalsENS1_7VisitorIS3_vEEE4TaskENS_9allocatorIS7_EEE24__emplace_back_slow_pathIJRPFvPS3_PPNS1_10ExpressionEERSF_EEEvDpOT_(i7 + 4 | 0, i5, i6);
   break;
  }
 } while (0);
 STACKTOP = i8;
 return;
}

function __ZN4wasm6WalkerINS_14PostEmscriptenENS_7VisitorIS1_vEEE13maybePushTaskEPFvPS1_PPNS_10ExpressionEES8_(i7, i1, i2) {
 i7 = i7 | 0;
 i1 = i1 | 0;
 i2 = i2 | 0;
 var i3 = 0, i4 = 0, i5 = 0, i6 = 0, i8 = 0;
 i8 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i5 = i8 + 4 | 0;
 i6 = i8;
 HEAP32[i5 >> 2] = i1;
 HEAP32[i6 >> 2] = i2;
 i4 = i2;
 do if (HEAP32[i2 >> 2] | 0) {
  i2 = i7 + 8 | 0;
  i3 = HEAP32[i2 >> 2] | 0;
  if (i3 >>> 0 < (HEAP32[i7 + 12 >> 2] | 0) >>> 0) {
   HEAP32[i3 >> 2] = i1;
   HEAP32[i3 + 4 >> 2] = i4;
   HEAP32[i2 >> 2] = i3 + 8;
   break;
  } else {
   __ZNSt3__16vectorIN4wasm6WalkerINS1_14PostEmscriptenENS1_7VisitorIS3_vEEE4TaskENS_9allocatorIS7_EEE24__emplace_back_slow_pathIJRPFvPS3_PPNS1_10ExpressionEERSF_EEEvDpOT_(i7 + 4 | 0, i5, i6);
   break;
  }
 } while (0);
 STACKTOP = i8;
 return;
}

function __ZN4wasm6WalkerINS_14EffectAnalyzerENS_7VisitorIS1_vEEE13maybePushTaskEPFvPS1_PPNS_10ExpressionEES8_(i7, i1, i2) {
 i7 = i7 | 0;
 i1 = i1 | 0;
 i2 = i2 | 0;
 var i3 = 0, i4 = 0, i5 = 0, i6 = 0, i8 = 0;
 i8 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i5 = i8 + 4 | 0;
 i6 = i8;
 HEAP32[i5 >> 2] = i1;
 HEAP32[i6 >> 2] = i2;
 i4 = i2;
 do if (HEAP32[i2 >> 2] | 0) {
  i2 = i7 + 8 | 0;
  i3 = HEAP32[i2 >> 2] | 0;
  if (i3 >>> 0 < (HEAP32[i7 + 12 >> 2] | 0) >>> 0) {
   HEAP32[i3 >> 2] = i1;
   HEAP32[i3 + 4 >> 2] = i4;
   HEAP32[i2 >> 2] = i3 + 8;
   break;
  } else {
   __ZNSt3__16vectorIN4wasm6WalkerINS1_14EffectAnalyzerENS1_7VisitorIS3_vEEE4TaskENS_9allocatorIS7_EEE24__emplace_back_slow_pathIJRPFvPS3_PPNS1_10ExpressionEERSF_EEEvDpOT_(i7 + 4 | 0, i5, i6);
   break;
  }
 } while (0);
 STACKTOP = i8;
 return;
}

function __ZNKSt3__18time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE15__get_monthnameERiRS4_S4_RjRKNS_5ctypeIwEE(i5, i6, i1, i3, i4, i2) {
 i5 = i5 | 0;
 i6 = i6 | 0;
 i1 = i1 | 0;
 i3 = i3 | 0;
 i4 = i4 | 0;
 i2 = i2 | 0;
 var i7 = 0, i8 = 0, i9 = 0;
 i7 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i8 = i7 + 4 | 0;
 i9 = i7;
 i5 = i5 + 8 | 0;
 i5 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i5 >> 2] | 0) + 4 >> 2] & 127](i5) | 0;
 HEAP32[i9 >> 2] = HEAP32[i3 >> 2];
 HEAP32[i8 >> 2] = HEAP32[i9 >> 2];
 i1 = (__ZNSt3__114__scan_keywordINS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEPKNS_12basic_stringIwS3_NS_9allocatorIwEEEENS_5ctypeIwEEEET0_RT_SE_SD_SD_RKT1_Rjb(i1, i8, i5, i5 + 288 | 0, i2, i4, 0) | 0) - i5 | 0;
 if ((i1 | 0) < 288) HEAP32[i6 >> 2] = ((i1 | 0) / 12 | 0 | 0) % 12 | 0;
 STACKTOP = i7;
 return;
}

function __ZNKSt3__18time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE15__get_monthnameERiRS4_S4_RjRKNS_5ctypeIcEE(i5, i6, i1, i3, i4, i2) {
 i5 = i5 | 0;
 i6 = i6 | 0;
 i1 = i1 | 0;
 i3 = i3 | 0;
 i4 = i4 | 0;
 i2 = i2 | 0;
 var i7 = 0, i8 = 0, i9 = 0;
 i7 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i8 = i7 + 4 | 0;
 i9 = i7;
 i5 = i5 + 8 | 0;
 i5 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i5 >> 2] | 0) + 4 >> 2] & 127](i5) | 0;
 HEAP32[i9 >> 2] = HEAP32[i3 >> 2];
 HEAP32[i8 >> 2] = HEAP32[i9 >> 2];
 i1 = (__ZNSt3__114__scan_keywordINS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEPKNS_12basic_stringIcS3_NS_9allocatorIcEEEENS_5ctypeIcEEEET0_RT_SE_SD_SD_RKT1_Rjb(i1, i8, i5, i5 + 288 | 0, i2, i4, 0) | 0) - i5 | 0;
 if ((i1 | 0) < 288) HEAP32[i6 >> 2] = ((i1 | 0) / 12 | 0 | 0) % 12 | 0;
 STACKTOP = i7;
 return;
}

function __ZN4wasm6WalkerINS_13ReorderLocalsENS_7VisitorIS1_vEEE13maybePushTaskEPFvPS1_PPNS_10ExpressionEES8_(i7, i1, i2) {
 i7 = i7 | 0;
 i1 = i1 | 0;
 i2 = i2 | 0;
 var i3 = 0, i4 = 0, i5 = 0, i6 = 0, i8 = 0;
 i8 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i5 = i8 + 4 | 0;
 i6 = i8;
 HEAP32[i5 >> 2] = i1;
 HEAP32[i6 >> 2] = i2;
 i4 = i2;
 do if (HEAP32[i2 >> 2] | 0) {
  i2 = i7 + 8 | 0;
  i3 = HEAP32[i2 >> 2] | 0;
  if (i3 >>> 0 < (HEAP32[i7 + 12 >> 2] | 0) >>> 0) {
   HEAP32[i3 >> 2] = i1;
   HEAP32[i3 + 4 >> 2] = i4;
   HEAP32[i2 >> 2] = i3 + 8;
   break;
  } else {
   __ZNSt3__16vectorIN4wasm6WalkerINS1_13ReorderLocalsENS1_7VisitorIS3_vEEE4TaskENS_9allocatorIS7_EEE24__emplace_back_slow_pathIJRPFvPS3_PPNS1_10ExpressionEERSF_EEEvDpOT_(i7 + 4 | 0, i5, i6);
   break;
  }
 } while (0);
 STACKTOP = i8;
 return;
}

function __ZZN4wasm14ModuleInstance12callFunctionEN6cashew7IStringERNSt3__16vectorINS_7LiteralENS3_9allocatorIS5_EEEEEN16ExpressionRunner13visitGetLocalEPNS_8GetLocalE(i1, i3, i2) {
 i1 = i1 | 0;
 i3 = i3 | 0;
 i2 = i2 | 0;
 var i4 = 0, i5 = 0;
 i4 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i5 = i4;
 i3 = i3 + 4 | 0;
 i2 = __ZN4wasm8Function12getLocalNameEj(HEAP32[(HEAP32[i3 >> 2] | 0) + 12 >> 2] | 0, HEAP32[i2 + 8 >> 2] | 0) | 0;
 HEAP32[i5 >> 2] = i2;
 i3 = __ZNSt3__13mapIN6cashew7IStringEN4wasm7LiteralENS_4lessIS2_EENS_9allocatorINS_4pairIKS2_S4_EEEEEixERS9_(HEAP32[i3 >> 2] | 0, i5) | 0;
 HEAP32[i1 >> 2] = HEAP32[i3 >> 2];
 HEAP32[i1 + 4 >> 2] = HEAP32[i3 + 4 >> 2];
 HEAP32[i1 + 8 >> 2] = HEAP32[i3 + 8 >> 2];
 HEAP32[i1 + 12 >> 2] = HEAP32[i3 + 12 >> 2];
 HEAP32[i1 + 16 >> 2] = 0;
 STACKTOP = i4;
 return;
}

function __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE9push_backEw(i5, i6) {
 i5 = i5 | 0;
 i6 = i6 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0;
 i1 = HEAP8[i5 >> 0] | 0;
 i2 = (i1 & 1) != 0;
 if (i2) {
  i3 = (HEAP32[i5 >> 2] & -2) + -1 | 0;
  i4 = HEAP32[i5 + 4 >> 2] | 0;
 } else {
  i3 = 1;
  i4 = (i1 & 255) >>> 1;
 }
 if ((i4 | 0) == (i3 | 0)) {
  __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE9__grow_byEjjjjjj(i5, i3, 1, i3, i3, 0, 0);
  if (!(HEAP8[i5 >> 0] & 1)) i2 = 7; else i2 = 8;
 } else if (i2) i2 = 8; else i2 = 7;
 if ((i2 | 0) == 7) {
  HEAP8[i5 >> 0] = (i4 << 1) + 2;
  i1 = i5 + 4 | 0;
 } else if ((i2 | 0) == 8) {
  i1 = HEAP32[i5 + 8 >> 2] | 0;
  HEAP32[i5 + 4 >> 2] = i4 + 1;
 }
 i5 = i1 + (i4 << 2) | 0;
 HEAP32[i5 >> 2] = i6;
 HEAP32[i5 + 4 >> 2] = 0;
 return;
}

function __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6__initIPKwEENS_9enable_ifIXsr21__is_forward_iteratorIT_EE5valueEvE4typeESA_SA_(i4, i1, i6) {
 i4 = i4 | 0;
 i1 = i1 | 0;
 i6 = i6 | 0;
 var i2 = 0, i3 = 0, i5 = 0, i7 = 0;
 i5 = i1;
 i2 = i6 - i5 | 0;
 i3 = i2 >> 2;
 if (i3 >>> 0 > 1073741807) __ZNKSt3__121__basic_string_commonILb1EE20__throw_length_errorEv(i4);
 if (i3 >>> 0 < 2) {
  HEAP8[i4 >> 0] = i2 >>> 1;
  i4 = i4 + 4 | 0;
 } else {
  i7 = i3 + 4 & -4;
  i2 = __Znwj(i7 << 2) | 0;
  HEAP32[i4 + 8 >> 2] = i2;
  HEAP32[i4 >> 2] = i7 | 1;
  HEAP32[i4 + 4 >> 2] = i3;
  i4 = i2;
 }
 i3 = (i6 - i5 | 0) >>> 2;
 i2 = i4;
 while (1) {
  if ((i1 | 0) == (i6 | 0)) break;
  HEAP32[i2 >> 2] = HEAP32[i1 >> 2];
  i1 = i1 + 4 | 0;
  i2 = i2 + 4 | 0;
 }
 HEAP32[i4 + (i3 << 2) >> 2] = 0;
 return;
}

function __ZNSt3__16vectorIN4wasm6WalkerINS1_6VacuumENS1_7VisitorIS3_vEEE4TaskENS_9allocatorIS7_EEE26__swap_out_circular_bufferERNS_14__split_bufferIS7_RS9_EE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 var i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0;
 i4 = HEAP32[i2 >> 2] | 0;
 i6 = i2 + 4 | 0;
 i3 = i1 + 4 | 0;
 i5 = (HEAP32[i6 >> 2] | 0) - i4 | 0;
 i7 = (HEAP32[i3 >> 2] | 0) + (0 - (i5 >> 3) << 3) | 0;
 HEAP32[i3 >> 2] = i7;
 _memcpy(i7 | 0, i4 | 0, i5 | 0) | 0;
 i5 = HEAP32[i2 >> 2] | 0;
 HEAP32[i2 >> 2] = HEAP32[i3 >> 2];
 HEAP32[i3 >> 2] = i5;
 i5 = i1 + 8 | 0;
 i4 = HEAP32[i6 >> 2] | 0;
 HEAP32[i6 >> 2] = HEAP32[i5 >> 2];
 HEAP32[i5 >> 2] = i4;
 i5 = i2 + 8 | 0;
 i2 = i1 + 12 | 0;
 i4 = HEAP32[i5 >> 2] | 0;
 HEAP32[i5 >> 2] = HEAP32[i2 >> 2];
 HEAP32[i2 >> 2] = i4;
 HEAP32[i1 >> 2] = HEAP32[i3 >> 2];
 return;
}

function __ZN4wasm6WalkerINS_11MergeBlocksENS_7VisitorIS1_vEEE13maybePushTaskEPFvPS1_PPNS_10ExpressionEES8_(i7, i1, i2) {
 i7 = i7 | 0;
 i1 = i1 | 0;
 i2 = i2 | 0;
 var i3 = 0, i4 = 0, i5 = 0, i6 = 0, i8 = 0;
 i8 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i5 = i8 + 4 | 0;
 i6 = i8;
 HEAP32[i5 >> 2] = i1;
 HEAP32[i6 >> 2] = i2;
 i4 = i2;
 do if (HEAP32[i2 >> 2] | 0) {
  i2 = i7 + 8 | 0;
  i3 = HEAP32[i2 >> 2] | 0;
  if (i3 >>> 0 < (HEAP32[i7 + 12 >> 2] | 0) >>> 0) {
   HEAP32[i3 >> 2] = i1;
   HEAP32[i3 + 4 >> 2] = i4;
   HEAP32[i2 >> 2] = i3 + 8;
   break;
  } else {
   __ZNSt3__16vectorIN4wasm6WalkerINS1_11MergeBlocksENS1_7VisitorIS3_vEEE4TaskENS_9allocatorIS7_EEE24__emplace_back_slow_pathIJRPFvPS3_PPNS1_10ExpressionEERSF_EEEvDpOT_(i7 + 4 | 0, i5, i6);
   break;
  }
 } while (0);
 STACKTOP = i8;
 return;
}

function __ZN4wasm6WalkerINS_11BreakSeekerENS_7VisitorIS1_vEEE13maybePushTaskEPFvPS1_PPNS_10ExpressionEES8_(i7, i1, i2) {
 i7 = i7 | 0;
 i1 = i1 | 0;
 i2 = i2 | 0;
 var i3 = 0, i4 = 0, i5 = 0, i6 = 0, i8 = 0;
 i8 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i5 = i8 + 4 | 0;
 i6 = i8;
 HEAP32[i5 >> 2] = i1;
 HEAP32[i6 >> 2] = i2;
 i4 = i2;
 do if (HEAP32[i2 >> 2] | 0) {
  i2 = i7 + 8 | 0;
  i3 = HEAP32[i2 >> 2] | 0;
  if (i3 >>> 0 < (HEAP32[i7 + 12 >> 2] | 0) >>> 0) {
   HEAP32[i3 >> 2] = i1;
   HEAP32[i3 + 4 >> 2] = i4;
   HEAP32[i2 >> 2] = i3 + 8;
   break;
  } else {
   __ZNSt3__16vectorIN4wasm6WalkerINS1_11BreakSeekerENS1_7VisitorIS3_vEEE4TaskENS_9allocatorIS7_EEE24__emplace_back_slow_pathIJRPFvPS3_PPNS1_10ExpressionEERSF_EEEvDpOT_(i7 + 4 | 0, i5, i6);
   break;
  }
 } while (0);
 STACKTOP = i8;
 return;
}

function __ZNSt3__112__hash_tableIN6cashew7IStringENS_4hashIS2_EENS_8equal_toIS2_EENS_9allocatorIS2_EEEC2EOS9_(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 var i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0;
 i4 = HEAP32[i1 >> 2] | 0;
 HEAP32[i1 >> 2] = 0;
 i6 = i1 + 4 | 0;
 i5 = HEAP32[i6 >> 2] | 0;
 HEAP32[i6 >> 2] = 0;
 HEAP32[i2 >> 2] = i4;
 HEAP32[i2 + 4 >> 2] = i5;
 i6 = i2 + 8 | 0;
 i7 = i1 + 8 | 0;
 i3 = HEAP32[i7 >> 2] | 0;
 HEAP32[i6 >> 2] = i3;
 i8 = i1 + 12 | 0;
 i9 = HEAP32[i8 >> 2] | 0;
 HEAP32[i2 + 12 >> 2] = i9;
 HEAP32[i2 + 16 >> 2] = HEAP32[i1 + 16 >> 2];
 if (i9 | 0) {
  i1 = HEAP32[i3 + 4 >> 2] | 0;
  i2 = i5 + -1 | 0;
  if (!(i2 & i5)) i1 = i2 & i1; else i1 = (i1 >>> 0) % (i5 >>> 0) | 0;
  HEAP32[i4 + (i1 << 2) >> 2] = i6;
  HEAP32[i7 >> 2] = 0;
  HEAP32[i8 >> 2] = 0;
 }
 return;
}

function __ZN4wasm22SExpressionWasmBuilder10parseTableERNS_7ElementE(i8, i7) {
 i8 = i8 | 0;
 i7 = i7 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i9 = 0;
 i9 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i1 = i9;
 i6 = 1;
 while (1) {
  if (i6 >>> 0 >= (__ZN4wasm7Element4sizeEv(i7) | 0) >>> 0) break;
  i2 = HEAP32[i8 >> 2] | 0;
  i3 = __ZN4wasm22SExpressionWasmBuilder15getFunctionNameERNS_7ElementE(i8, __ZN4wasm7ElementixEj(i7, i6) | 0) | 0;
  HEAP32[i1 >> 2] = i3;
  i4 = i2 + 52 | 0;
  i5 = HEAP32[i4 >> 2] | 0;
  if (i5 >>> 0 < (HEAP32[i2 + 56 >> 2] | 0) >>> 0) {
   HEAP32[i5 >> 2] = i3;
   HEAP32[i4 >> 2] = (HEAP32[i4 >> 2] | 0) + 4;
  } else __ZNSt3__16vectorIN4wasm4NameENS_9allocatorIS2_EEE21__push_back_slow_pathIS2_EEvOT_(i2 + 48 | 0, i1);
  i6 = i6 + 1 | 0;
 }
 STACKTOP = i9;
 return;
}

function __ZNKSt3__18time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE17__get_weekdaynameERiRS4_S4_RjRKNS_5ctypeIwEE(i5, i6, i1, i3, i4, i2) {
 i5 = i5 | 0;
 i6 = i6 | 0;
 i1 = i1 | 0;
 i3 = i3 | 0;
 i4 = i4 | 0;
 i2 = i2 | 0;
 var i7 = 0, i8 = 0, i9 = 0;
 i7 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i8 = i7 + 4 | 0;
 i9 = i7;
 i5 = i5 + 8 | 0;
 i5 = FUNCTION_TABLE_ii[HEAP32[HEAP32[i5 >> 2] >> 2] & 127](i5) | 0;
 HEAP32[i9 >> 2] = HEAP32[i3 >> 2];
 HEAP32[i8 >> 2] = HEAP32[i9 >> 2];
 i1 = (__ZNSt3__114__scan_keywordINS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEPKNS_12basic_stringIwS3_NS_9allocatorIwEEEENS_5ctypeIwEEEET0_RT_SE_SD_SD_RKT1_Rjb(i1, i8, i5, i5 + 168 | 0, i2, i4, 0) | 0) - i5 | 0;
 if ((i1 | 0) < 168) HEAP32[i6 >> 2] = ((i1 | 0) / 12 | 0 | 0) % 7 | 0;
 STACKTOP = i7;
 return;
}

function __ZNKSt3__18time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE17__get_weekdaynameERiRS4_S4_RjRKNS_5ctypeIcEE(i5, i6, i1, i3, i4, i2) {
 i5 = i5 | 0;
 i6 = i6 | 0;
 i1 = i1 | 0;
 i3 = i3 | 0;
 i4 = i4 | 0;
 i2 = i2 | 0;
 var i7 = 0, i8 = 0, i9 = 0;
 i7 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i8 = i7 + 4 | 0;
 i9 = i7;
 i5 = i5 + 8 | 0;
 i5 = FUNCTION_TABLE_ii[HEAP32[HEAP32[i5 >> 2] >> 2] & 127](i5) | 0;
 HEAP32[i9 >> 2] = HEAP32[i3 >> 2];
 HEAP32[i8 >> 2] = HEAP32[i9 >> 2];
 i1 = (__ZNSt3__114__scan_keywordINS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEPKNS_12basic_stringIcS3_NS_9allocatorIcEEEENS_5ctypeIcEEEET0_RT_SE_SD_SD_RKT1_Rjb(i1, i8, i5, i5 + 168 | 0, i2, i4, 0) | 0) - i5 | 0;
 if ((i1 | 0) < 168) HEAP32[i6 >> 2] = ((i1 | 0) / 12 | 0 | 0) % 7 | 0;
 STACKTOP = i7;
 return;
}

function __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE9push_backEc(i5, i6) {
 i5 = i5 | 0;
 i6 = i6 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0;
 i1 = HEAP8[i5 >> 0] | 0;
 i2 = (i1 & 1) != 0;
 if (i2) {
  i3 = (HEAP32[i5 >> 2] & -2) + -1 | 0;
  i4 = HEAP32[i5 + 4 >> 2] | 0;
 } else {
  i3 = 10;
  i4 = (i1 & 255) >>> 1;
 }
 if ((i4 | 0) == (i3 | 0)) {
  __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE9__grow_byEjjjjjj(i5, i3, 1, i3, i3, 0, 0);
  if (!(HEAP8[i5 >> 0] & 1)) i2 = 7; else i2 = 8;
 } else if (i2) i2 = 8; else i2 = 7;
 if ((i2 | 0) == 7) {
  HEAP8[i5 >> 0] = (i4 << 1) + 2;
  i1 = i5 + 1 | 0;
 } else if ((i2 | 0) == 8) {
  i1 = HEAP32[i5 + 8 >> 2] | 0;
  HEAP32[i5 + 4 >> 2] = i4 + 1;
 }
 i5 = i1 + i4 | 0;
 HEAP8[i5 >> 0] = i6;
 HEAP8[i5 + 1 >> 0] = 0;
 return;
}

function __ZN4wasm6WalkerIZNS_13ReorderLocals13visitFunctionEPNS_8FunctionEE9ReIndexerNS_7VisitorIS4_vEEE8pushTaskEPFvPS4_PPNS_10ExpressionEESB_(i7, i6, i5) {
 i7 = i7 | 0;
 i6 = i6 | 0;
 i5 = i5 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i8 = 0;
 i8 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i1 = i8 + 4 | 0;
 i2 = i8;
 HEAP32[i1 >> 2] = i6;
 HEAP32[i2 >> 2] = i5;
 i3 = i7 + 8 | 0;
 i4 = HEAP32[i3 >> 2] | 0;
 if (i4 >>> 0 < (HEAP32[i7 + 12 >> 2] | 0) >>> 0) {
  HEAP32[i4 >> 2] = i6;
  HEAP32[i4 + 4 >> 2] = i5;
  HEAP32[i3 >> 2] = i4 + 8;
 } else __ZNSt3__16vectorIN4wasm6WalkerIZNS1_13ReorderLocals13visitFunctionEPNS1_8FunctionEE9ReIndexerNS1_7VisitorIS6_vEEE4TaskENS_9allocatorISA_EEE24__emplace_back_slow_pathIJRPFvPS6_PPNS1_10ExpressionEERSI_EEEvDpOT_(i7 + 4 | 0, i1, i2);
 STACKTOP = i8;
 return;
}

function __ZN4wasm14SimplifyLocals16doNoteIfElseTrueEPS0_PPNS_10ExpressionE(i4, i1) {
 i4 = i4 | 0;
 i1 = i1 | 0;
 var i2 = 0, i3 = 0;
 i3 = (__ZN4wasm10Expression4castINS_2IfEEEPT_v(HEAP32[i1 >> 2] | 0) | 0) + 16 | 0;
 if (!(HEAP32[i3 >> 2] | 0)) ___assert_fail(23082, 22896, 143, 23112);
 i1 = i4 + 40 | 0;
 i2 = i4 + 80 | 0;
 i3 = HEAP32[i2 >> 2] | 0;
 if (i3 >>> 0 < (HEAP32[i4 + 84 >> 2] | 0) >>> 0) {
  __ZNSt3__16__treeINS_12__value_typeIjN4wasm14SimplifyLocals12SinkableInfoEEENS_19__map_value_compareIjS5_NS_4lessIjEELb1EEENS_9allocatorIS5_EEEC2EOSC_(i3, i1);
  HEAP32[i2 >> 2] = (HEAP32[i2 >> 2] | 0) + 12;
 } else __ZNSt3__16vectorINS_3mapIjN4wasm14SimplifyLocals12SinkableInfoENS_4lessIjEENS_9allocatorINS_4pairIKjS4_EEEEEENS7_ISC_EEE21__push_back_slow_pathISC_EEvOT_(i4 + 76 | 0, i1);
 return;
}

function __ZN4wasm6WalkerINS_6VacuumENS_7VisitorIS1_vEEE13maybePushTaskEPFvPS1_PPNS_10ExpressionEES8_(i7, i1, i2) {
 i7 = i7 | 0;
 i1 = i1 | 0;
 i2 = i2 | 0;
 var i3 = 0, i4 = 0, i5 = 0, i6 = 0, i8 = 0;
 i8 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i5 = i8 + 4 | 0;
 i6 = i8;
 HEAP32[i5 >> 2] = i1;
 HEAP32[i6 >> 2] = i2;
 i4 = i2;
 do if (HEAP32[i2 >> 2] | 0) {
  i2 = i7 + 8 | 0;
  i3 = HEAP32[i2 >> 2] | 0;
  if (i3 >>> 0 < (HEAP32[i7 + 12 >> 2] | 0) >>> 0) {
   HEAP32[i3 >> 2] = i1;
   HEAP32[i3 + 4 >> 2] = i4;
   HEAP32[i2 >> 2] = i3 + 8;
   break;
  } else {
   __ZNSt3__16vectorIN4wasm6WalkerINS1_6VacuumENS1_7VisitorIS3_vEEE4TaskENS_9allocatorIS7_EEE24__emplace_back_slow_pathIJRPFvPS3_PPNS1_10ExpressionEERSF_EEEvDpOT_(i7 + 4 | 0, i5, i6);
   break;
  }
 } while (0);
 STACKTOP = i8;
 return;
}

function __ZNSt3__16vectorINS_4pairIPN4wasm7ElementEPNS2_5BlockEEENS_9allocatorIS7_EEE26__swap_out_circular_bufferERNS_14__split_bufferIS7_RS9_EE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 var i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0;
 i4 = HEAP32[i2 >> 2] | 0;
 i6 = i2 + 4 | 0;
 i3 = i1 + 4 | 0;
 i5 = (HEAP32[i6 >> 2] | 0) - i4 | 0;
 i7 = (HEAP32[i3 >> 2] | 0) + (0 - (i5 >> 3) << 3) | 0;
 HEAP32[i3 >> 2] = i7;
 _memcpy(i7 | 0, i4 | 0, i5 | 0) | 0;
 i5 = HEAP32[i2 >> 2] | 0;
 HEAP32[i2 >> 2] = HEAP32[i3 >> 2];
 HEAP32[i3 >> 2] = i5;
 i5 = i1 + 8 | 0;
 i4 = HEAP32[i6 >> 2] | 0;
 HEAP32[i6 >> 2] = HEAP32[i5 >> 2];
 HEAP32[i5 >> 2] = i4;
 i5 = i2 + 8 | 0;
 i2 = i1 + 12 | 0;
 i4 = HEAP32[i5 >> 2] | 0;
 HEAP32[i5 >> 2] = HEAP32[i2 >> 2];
 HEAP32[i2 >> 2] = i4;
 HEAP32[i1 >> 2] = HEAP32[i3 >> 2];
 return;
}

function __ZNSt3__13mapIN4wasm4NameENS1_8WasmTypeENS_4lessIS2_EENS_9allocatorINS_4pairIKS2_S3_EEEEEixEOS2_(i5, i3) {
 i5 = i5 | 0;
 i3 = i3 | 0;
 var i1 = 0, i2 = 0, i4 = 0, i6 = 0;
 i6 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i4 = i6;
 i2 = __ZNSt3__13mapIN4wasm4NameENS1_8WasmTypeENS_4lessIS2_EENS_9allocatorINS_4pairIKS2_S3_EEEEE16__find_equal_keyERPNS_16__tree_node_baseIPvEERS8_(i5, i4, i3) | 0;
 i1 = HEAP32[i2 >> 2] | 0;
 if (!i1) {
  i1 = __Znwj(24) | 0;
  HEAP32[i1 + 16 >> 2] = HEAP32[i3 >> 2];
  HEAP32[i1 + 20 >> 2] = 0;
  __ZNSt3__16__treeINS_12__value_typeIN4wasm4NameENS2_8WasmTypeEEENS_19__map_value_compareIS3_S5_NS_4lessIS3_EELb1EEENS_9allocatorIS5_EEE16__insert_node_atEPNS_16__tree_node_baseIPvEERSG_SG_(i5, HEAP32[i4 >> 2] | 0, i2, i1);
 }
 STACKTOP = i6;
 return i1 + 20 | 0;
}

function __ZNSt3__16vectorIN4wasm6Memory7SegmentENS_9allocatorIS3_EEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 var i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0;
 i4 = HEAP32[i2 >> 2] | 0;
 i6 = i2 + 4 | 0;
 i3 = i1 + 4 | 0;
 i5 = (HEAP32[i6 >> 2] | 0) - i4 | 0;
 i7 = (HEAP32[i3 >> 2] | 0) + (((i5 | 0) / -12 | 0) * 12 | 0) | 0;
 HEAP32[i3 >> 2] = i7;
 _memcpy(i7 | 0, i4 | 0, i5 | 0) | 0;
 i5 = HEAP32[i2 >> 2] | 0;
 HEAP32[i2 >> 2] = HEAP32[i3 >> 2];
 HEAP32[i3 >> 2] = i5;
 i5 = i1 + 8 | 0;
 i4 = HEAP32[i6 >> 2] | 0;
 HEAP32[i6 >> 2] = HEAP32[i5 >> 2];
 HEAP32[i5 >> 2] = i4;
 i5 = i2 + 8 | 0;
 i2 = i1 + 12 | 0;
 i4 = HEAP32[i5 >> 2] | 0;
 HEAP32[i5 >> 2] = HEAP32[i2 >> 2];
 HEAP32[i2 >> 2] = i4;
 HEAP32[i1 >> 2] = HEAP32[i3 >> 2];
 return;
}

function __ZNSt3__16vectorIPNS_6locale5facetENS_15__sso_allocatorIS3_Lj28EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 var i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0;
 i4 = HEAP32[i2 >> 2] | 0;
 i6 = i2 + 4 | 0;
 i3 = i1 + 4 | 0;
 i5 = (HEAP32[i6 >> 2] | 0) - i4 | 0;
 i7 = (HEAP32[i3 >> 2] | 0) + (0 - (i5 >> 2) << 2) | 0;
 HEAP32[i3 >> 2] = i7;
 _memcpy(i7 | 0, i4 | 0, i5 | 0) | 0;
 i5 = HEAP32[i2 >> 2] | 0;
 HEAP32[i2 >> 2] = HEAP32[i3 >> 2];
 HEAP32[i3 >> 2] = i5;
 i5 = i1 + 8 | 0;
 i4 = HEAP32[i6 >> 2] | 0;
 HEAP32[i6 >> 2] = HEAP32[i5 >> 2];
 HEAP32[i5 >> 2] = i4;
 i5 = i2 + 8 | 0;
 i2 = i1 + 12 | 0;
 i4 = HEAP32[i5 >> 2] | 0;
 HEAP32[i5 >> 2] = HEAP32[i2 >> 2];
 HEAP32[i2 >> 2] = i4;
 HEAP32[i1 >> 2] = HEAP32[i3 >> 2];
 return;
}

function __ZN4wasmlsERNSt3__113basic_ostreamIcNS0_11char_traitsIcEEEERNS_7ElementE(i3, i1) {
 i3 = i3 | 0;
 i1 = i1 | 0;
 var i2 = 0, i4 = 0;
 if (!(HEAP8[i1 >> 0] | 0)) __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(i3, HEAP32[i1 + 16 >> 2] | 0) | 0; else {
  __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_c(i3, 40) | 0;
  i2 = HEAP32[i1 + 8 >> 2] | 0;
  i1 = HEAP32[i1 + 4 >> 2] | 0;
  while (1) {
   if ((i1 | 0) == (i2 | 0)) break;
   i4 = HEAP32[i1 >> 2] | 0;
   __ZN4wasmlsERNSt3__113basic_ostreamIcNS0_11char_traitsIcEEEERNS_7ElementE(__ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_c(i3, 32) | 0, i4) | 0;
   i1 = i1 + 4 | 0;
  }
  __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(i3, 14292) | 0;
 }
 return i3 | 0;
}

function __ZNK4wasm7LiteraleqERKS0_(i4, i3) {
 i4 = i4 | 0;
 i3 = i3 | 0;
 var i1 = 0, i2 = 0;
 i2 = HEAP32[i4 >> 2] | 0;
 L1 : do if ((i2 | 0) == (HEAP32[i3 >> 2] | 0)) switch (i2 | 0) {
 case 0:
  {
   i1 = 1;
   break L1;
  }
 case 1:
  {
   i1 = (HEAP32[i4 + 8 >> 2] | 0) == (HEAP32[i3 + 8 >> 2] | 0);
   break L1;
  }
 case 3:
  {
   i1 = +__ZNK4wasm7Literal6getf32Ev(i4) == +__ZNK4wasm7Literal6getf32Ev(i3);
   break L1;
  }
 case 2:
  {
   i4 = i4 + 8 | 0;
   i1 = i3 + 8 | 0;
   i1 = (HEAP32[i4 >> 2] | 0) == (HEAP32[i1 >> 2] | 0) ? (HEAP32[i4 + 4 >> 2] | 0) == (HEAP32[i1 + 4 >> 2] | 0) : 0;
   break L1;
  }
 case 4:
  {
   i1 = +__ZNK4wasm7Literal6getf64Ev(i4) == +__ZNK4wasm7Literal6getf64Ev(i3);
   break L1;
  }
 default:
  _abort();
 } else i1 = 0; while (0);
 return i1 | 0;
}

function __ZNSt3__16vectorIPN4wasm12FunctionTypeENS_9allocatorIS3_EEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 var i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0;
 i4 = HEAP32[i2 >> 2] | 0;
 i6 = i2 + 4 | 0;
 i3 = i1 + 4 | 0;
 i5 = (HEAP32[i6 >> 2] | 0) - i4 | 0;
 i7 = (HEAP32[i3 >> 2] | 0) + (0 - (i5 >> 2) << 2) | 0;
 HEAP32[i3 >> 2] = i7;
 _memcpy(i7 | 0, i4 | 0, i5 | 0) | 0;
 i5 = HEAP32[i2 >> 2] | 0;
 HEAP32[i2 >> 2] = HEAP32[i3 >> 2];
 HEAP32[i3 >> 2] = i5;
 i5 = i1 + 8 | 0;
 i4 = HEAP32[i6 >> 2] | 0;
 HEAP32[i6 >> 2] = HEAP32[i5 >> 2];
 HEAP32[i5 >> 2] = i4;
 i5 = i2 + 8 | 0;
 i2 = i1 + 12 | 0;
 i4 = HEAP32[i5 >> 2] | 0;
 HEAP32[i5 >> 2] = HEAP32[i2 >> 2];
 HEAP32[i2 >> 2] = i4;
 HEAP32[i1 >> 2] = HEAP32[i3 >> 2];
 return;
}

function ___remdi3(i1, i2, i3, i4) {
 i1 = i1 | 0;
 i2 = i2 | 0;
 i3 = i3 | 0;
 i4 = i4 | 0;
 var i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0;
 i5 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i8 = i5 | 0;
 i7 = i2 >> 31 | ((i2 | 0) < 0 ? -1 : 0) << 1;
 i6 = ((i2 | 0) < 0 ? -1 : 0) >> 31 | ((i2 | 0) < 0 ? -1 : 0) << 1;
 i10 = i4 >> 31 | ((i4 | 0) < 0 ? -1 : 0) << 1;
 i9 = ((i4 | 0) < 0 ? -1 : 0) >> 31 | ((i4 | 0) < 0 ? -1 : 0) << 1;
 i1 = _i64Subtract(i7 ^ i1 | 0, i6 ^ i2 | 0, i7 | 0, i6 | 0) | 0;
 i2 = tempRet0;
 ___udivmoddi4(i1, i2, _i64Subtract(i10 ^ i3 | 0, i9 ^ i4 | 0, i10 | 0, i9 | 0) | 0, tempRet0, i8) | 0;
 i4 = _i64Subtract(HEAP32[i8 >> 2] ^ i7 | 0, HEAP32[i8 + 4 >> 2] ^ i6 | 0, i7 | 0, i6 | 0) | 0;
 i3 = tempRet0;
 STACKTOP = i5;
 return (tempRet0 = i3, i4) | 0;
}

function __ZNSt3__16vectorIPN4wasm10ExpressionENS_9allocatorIS3_EEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 var i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0;
 i4 = HEAP32[i2 >> 2] | 0;
 i6 = i2 + 4 | 0;
 i3 = i1 + 4 | 0;
 i5 = (HEAP32[i6 >> 2] | 0) - i4 | 0;
 i7 = (HEAP32[i3 >> 2] | 0) + (0 - (i5 >> 2) << 2) | 0;
 HEAP32[i3 >> 2] = i7;
 _memcpy(i7 | 0, i4 | 0, i5 | 0) | 0;
 i5 = HEAP32[i2 >> 2] | 0;
 HEAP32[i2 >> 2] = HEAP32[i3 >> 2];
 HEAP32[i3 >> 2] = i5;
 i5 = i1 + 8 | 0;
 i4 = HEAP32[i6 >> 2] | 0;
 HEAP32[i6 >> 2] = HEAP32[i5 >> 2];
 HEAP32[i5 >> 2] = i4;
 i5 = i2 + 8 | 0;
 i2 = i1 + 12 | 0;
 i4 = HEAP32[i5 >> 2] | 0;
 HEAP32[i5 >> 2] = HEAP32[i2 >> 2];
 HEAP32[i2 >> 2] = i4;
 HEAP32[i1 >> 2] = HEAP32[i3 >> 2];
 return;
}

function __ZNSt3__16vectorIPN4wasm8FunctionENS_9allocatorIS3_EEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 var i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0;
 i4 = HEAP32[i2 >> 2] | 0;
 i6 = i2 + 4 | 0;
 i3 = i1 + 4 | 0;
 i5 = (HEAP32[i6 >> 2] | 0) - i4 | 0;
 i7 = (HEAP32[i3 >> 2] | 0) + (0 - (i5 >> 2) << 2) | 0;
 HEAP32[i3 >> 2] = i7;
 _memcpy(i7 | 0, i4 | 0, i5 | 0) | 0;
 i5 = HEAP32[i2 >> 2] | 0;
 HEAP32[i2 >> 2] = HEAP32[i3 >> 2];
 HEAP32[i3 >> 2] = i5;
 i5 = i1 + 8 | 0;
 i4 = HEAP32[i6 >> 2] | 0;
 HEAP32[i6 >> 2] = HEAP32[i5 >> 2];
 HEAP32[i5 >> 2] = i4;
 i5 = i2 + 8 | 0;
 i2 = i1 + 12 | 0;
 i4 = HEAP32[i5 >> 2] | 0;
 HEAP32[i5 >> 2] = HEAP32[i2 >> 2];
 HEAP32[i2 >> 2] = i4;
 HEAP32[i1 >> 2] = HEAP32[i3 >> 2];
 return;
}

function __ZNSt3__13mapIjjNS_4lessIjEENS_9allocatorINS_4pairIKjjEEEEEixERS5_(i6, i4) {
 i6 = i6 | 0;
 i4 = i4 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i5 = 0, i7 = 0;
 i7 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i5 = i7 + 12 | 0;
 i3 = i7;
 i2 = __ZNSt3__13mapIjjNS_4lessIjEENS_9allocatorINS_4pairIKjjEEEEE16__find_equal_keyERPNS_16__tree_node_baseIPvEERS5_(i6, i5, i4) | 0;
 i1 = HEAP32[i2 >> 2] | 0;
 if (!i1) {
  __ZNSt3__13mapIjjNS_4lessIjEENS_9allocatorINS_4pairIKjjEEEEE25__construct_node_with_keyERS5_(i3, i6, i4);
  i1 = HEAP32[i3 >> 2] | 0;
  __ZNSt3__16__treeINS_12__value_typeIjjEENS_19__map_value_compareIjS2_NS_4lessIjEELb1EEENS_9allocatorIS2_EEE16__insert_node_atEPNS_16__tree_node_baseIPvEERSD_SD_(i6, HEAP32[i5 >> 2] | 0, i2, i1);
 }
 STACKTOP = i7;
 return i1 + 20 | 0;
}

function __ZNSt3__16vectorIPN4wasm7ElementENS_9allocatorIS3_EEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 var i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0;
 i4 = HEAP32[i2 >> 2] | 0;
 i6 = i2 + 4 | 0;
 i3 = i1 + 4 | 0;
 i5 = (HEAP32[i6 >> 2] | 0) - i4 | 0;
 i7 = (HEAP32[i3 >> 2] | 0) + (0 - (i5 >> 2) << 2) | 0;
 HEAP32[i3 >> 2] = i7;
 _memcpy(i7 | 0, i4 | 0, i5 | 0) | 0;
 i5 = HEAP32[i2 >> 2] | 0;
 HEAP32[i2 >> 2] = HEAP32[i3 >> 2];
 HEAP32[i3 >> 2] = i5;
 i5 = i1 + 8 | 0;
 i4 = HEAP32[i6 >> 2] | 0;
 HEAP32[i6 >> 2] = HEAP32[i5 >> 2];
 HEAP32[i5 >> 2] = i4;
 i5 = i2 + 8 | 0;
 i2 = i1 + 12 | 0;
 i4 = HEAP32[i5 >> 2] | 0;
 HEAP32[i5 >> 2] = HEAP32[i2 >> 2];
 HEAP32[i2 >> 2] = i4;
 HEAP32[i1 >> 2] = HEAP32[i3 >> 2];
 return;
}

function __ZNSt3__16vectorIN4wasm8WasmTypeENS_9allocatorIS2_EEE26__swap_out_circular_bufferERNS_14__split_bufferIS2_RS4_EE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 var i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0;
 i4 = HEAP32[i2 >> 2] | 0;
 i6 = i2 + 4 | 0;
 i3 = i1 + 4 | 0;
 i5 = (HEAP32[i6 >> 2] | 0) - i4 | 0;
 i7 = (HEAP32[i3 >> 2] | 0) + (0 - (i5 >> 2) << 2) | 0;
 HEAP32[i3 >> 2] = i7;
 _memcpy(i7 | 0, i4 | 0, i5 | 0) | 0;
 i5 = HEAP32[i2 >> 2] | 0;
 HEAP32[i2 >> 2] = HEAP32[i3 >> 2];
 HEAP32[i3 >> 2] = i5;
 i5 = i1 + 8 | 0;
 i4 = HEAP32[i6 >> 2] | 0;
 HEAP32[i6 >> 2] = HEAP32[i5 >> 2];
 HEAP32[i5 >> 2] = i4;
 i5 = i2 + 8 | 0;
 i2 = i1 + 12 | 0;
 i4 = HEAP32[i5 >> 2] | 0;
 HEAP32[i5 >> 2] = HEAP32[i2 >> 2];
 HEAP32[i2 >> 2] = i4;
 HEAP32[i1 >> 2] = HEAP32[i3 >> 2];
 return;
}

function __ZNSt3__16vectorIN4wasm8NameTypeENS_9allocatorIS2_EEE26__swap_out_circular_bufferERNS_14__split_bufferIS2_RS4_EE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 var i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0;
 i4 = HEAP32[i2 >> 2] | 0;
 i6 = i2 + 4 | 0;
 i3 = i1 + 4 | 0;
 i5 = (HEAP32[i6 >> 2] | 0) - i4 | 0;
 i7 = (HEAP32[i3 >> 2] | 0) + (0 - (i5 >> 3) << 3) | 0;
 HEAP32[i3 >> 2] = i7;
 _memcpy(i7 | 0, i4 | 0, i5 | 0) | 0;
 i5 = HEAP32[i2 >> 2] | 0;
 HEAP32[i2 >> 2] = HEAP32[i3 >> 2];
 HEAP32[i3 >> 2] = i5;
 i5 = i1 + 8 | 0;
 i4 = HEAP32[i6 >> 2] | 0;
 HEAP32[i6 >> 2] = HEAP32[i5 >> 2];
 HEAP32[i5 >> 2] = i4;
 i5 = i2 + 8 | 0;
 i2 = i1 + 12 | 0;
 i4 = HEAP32[i5 >> 2] | 0;
 HEAP32[i5 >> 2] = HEAP32[i2 >> 2];
 HEAP32[i2 >> 2] = i4;
 HEAP32[i1 >> 2] = HEAP32[i3 >> 2];
 return;
}

function __ZNSt3__114__num_put_base12__format_intEPcPKcbj(i1, i2, i5, i4) {
 i1 = i1 | 0;
 i2 = i2 | 0;
 i5 = i5 | 0;
 i4 = i4 | 0;
 var i3 = 0;
 if (i4 & 2048) {
  HEAP8[i1 >> 0] = 43;
  i1 = i1 + 1 | 0;
 }
 if (!(i4 & 512)) i3 = i2; else {
  HEAP8[i1 >> 0] = 35;
  i3 = i2;
  i1 = i1 + 1 | 0;
 }
 while (1) {
  i2 = HEAP8[i3 >> 0] | 0;
  if (!(i2 << 24 >> 24)) break;
  HEAP8[i1 >> 0] = i2;
  i3 = i3 + 1 | 0;
  i1 = i1 + 1 | 0;
 }
 L10 : do switch (i4 & 74 | 0) {
 case 64:
  {
   HEAP8[i1 >> 0] = 111;
   break;
  }
 case 8:
  if (!(i4 & 16384)) {
   HEAP8[i1 >> 0] = 120;
   break L10;
  } else {
   HEAP8[i1 >> 0] = 88;
   break L10;
  }
 default:
  if (i5) {
   HEAP8[i1 >> 0] = 100;
   break L10;
  } else {
   HEAP8[i1 >> 0] = 117;
   break L10;
  }
 } while (0);
 return;
}

function __ZNSt3__16vectorIPN4wasm6ImportENS_9allocatorIS3_EEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 var i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0;
 i4 = HEAP32[i2 >> 2] | 0;
 i6 = i2 + 4 | 0;
 i3 = i1 + 4 | 0;
 i5 = (HEAP32[i6 >> 2] | 0) - i4 | 0;
 i7 = (HEAP32[i3 >> 2] | 0) + (0 - (i5 >> 2) << 2) | 0;
 HEAP32[i3 >> 2] = i7;
 _memcpy(i7 | 0, i4 | 0, i5 | 0) | 0;
 i5 = HEAP32[i2 >> 2] | 0;
 HEAP32[i2 >> 2] = HEAP32[i3 >> 2];
 HEAP32[i3 >> 2] = i5;
 i5 = i1 + 8 | 0;
 i4 = HEAP32[i6 >> 2] | 0;
 HEAP32[i6 >> 2] = HEAP32[i5 >> 2];
 HEAP32[i5 >> 2] = i4;
 i5 = i2 + 8 | 0;
 i2 = i1 + 12 | 0;
 i4 = HEAP32[i5 >> 2] | 0;
 HEAP32[i5 >> 2] = HEAP32[i2 >> 2];
 HEAP32[i2 >> 2] = i4;
 HEAP32[i1 >> 2] = HEAP32[i3 >> 2];
 return;
}

function __ZNSt3__16vectorIPN4wasm6ExportENS_9allocatorIS3_EEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 var i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0;
 i4 = HEAP32[i2 >> 2] | 0;
 i6 = i2 + 4 | 0;
 i3 = i1 + 4 | 0;
 i5 = (HEAP32[i6 >> 2] | 0) - i4 | 0;
 i7 = (HEAP32[i3 >> 2] | 0) + (0 - (i5 >> 2) << 2) | 0;
 HEAP32[i3 >> 2] = i7;
 _memcpy(i7 | 0, i4 | 0, i5 | 0) | 0;
 i5 = HEAP32[i2 >> 2] | 0;
 HEAP32[i2 >> 2] = HEAP32[i3 >> 2];
 HEAP32[i3 >> 2] = i5;
 i5 = i1 + 8 | 0;
 i4 = HEAP32[i6 >> 2] | 0;
 HEAP32[i6 >> 2] = HEAP32[i5 >> 2];
 HEAP32[i5 >> 2] = i4;
 i5 = i2 + 8 | 0;
 i2 = i1 + 12 | 0;
 i4 = HEAP32[i5 >> 2] | 0;
 HEAP32[i5 >> 2] = HEAP32[i2 >> 2];
 HEAP32[i2 >> 2] = i4;
 HEAP32[i1 >> 2] = HEAP32[i3 >> 2];
 return;
}

function __ZNSt3__16vectorIN4wasm7LiteralENS_9allocatorIS2_EEE26__swap_out_circular_bufferERNS_14__split_bufferIS2_RS4_EE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 var i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0;
 i4 = HEAP32[i2 >> 2] | 0;
 i6 = i2 + 4 | 0;
 i3 = i1 + 4 | 0;
 i5 = (HEAP32[i6 >> 2] | 0) - i4 | 0;
 i7 = (HEAP32[i3 >> 2] | 0) + (0 - (i5 >> 4) << 4) | 0;
 HEAP32[i3 >> 2] = i7;
 _memcpy(i7 | 0, i4 | 0, i5 | 0) | 0;
 i5 = HEAP32[i2 >> 2] | 0;
 HEAP32[i2 >> 2] = HEAP32[i3 >> 2];
 HEAP32[i3 >> 2] = i5;
 i5 = i1 + 8 | 0;
 i4 = HEAP32[i6 >> 2] | 0;
 HEAP32[i6 >> 2] = HEAP32[i5 >> 2];
 HEAP32[i5 >> 2] = i4;
 i5 = i2 + 8 | 0;
 i2 = i1 + 12 | 0;
 i4 = HEAP32[i5 >> 2] | 0;
 HEAP32[i5 >> 2] = HEAP32[i2 >> 2];
 HEAP32[i2 >> 2] = i4;
 HEAP32[i1 >> 2] = HEAP32[i3 >> 2];
 return;
}

function __ZNSt3__16vectorIPN4wasm5BreakENS_9allocatorIS3_EEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 var i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0;
 i4 = HEAP32[i2 >> 2] | 0;
 i6 = i2 + 4 | 0;
 i3 = i1 + 4 | 0;
 i5 = (HEAP32[i6 >> 2] | 0) - i4 | 0;
 i7 = (HEAP32[i3 >> 2] | 0) + (0 - (i5 >> 2) << 2) | 0;
 HEAP32[i3 >> 2] = i7;
 _memcpy(i7 | 0, i4 | 0, i5 | 0) | 0;
 i5 = HEAP32[i2 >> 2] | 0;
 HEAP32[i2 >> 2] = HEAP32[i3 >> 2];
 HEAP32[i3 >> 2] = i5;
 i5 = i1 + 8 | 0;
 i4 = HEAP32[i6 >> 2] | 0;
 HEAP32[i6 >> 2] = HEAP32[i5 >> 2];
 HEAP32[i5 >> 2] = i4;
 i5 = i2 + 8 | 0;
 i2 = i1 + 12 | 0;
 i4 = HEAP32[i5 >> 2] | 0;
 HEAP32[i5 >> 2] = HEAP32[i2 >> 2];
 HEAP32[i2 >> 2] = i4;
 HEAP32[i1 >> 2] = HEAP32[i3 >> 2];
 return;
}

function __ZNSt3__16vectorIPN4wasm5BlockENS_9allocatorIS3_EEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 var i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0;
 i4 = HEAP32[i2 >> 2] | 0;
 i6 = i2 + 4 | 0;
 i3 = i1 + 4 | 0;
 i5 = (HEAP32[i6 >> 2] | 0) - i4 | 0;
 i7 = (HEAP32[i3 >> 2] | 0) + (0 - (i5 >> 2) << 2) | 0;
 HEAP32[i3 >> 2] = i7;
 _memcpy(i7 | 0, i4 | 0, i5 | 0) | 0;
 i5 = HEAP32[i2 >> 2] | 0;
 HEAP32[i2 >> 2] = HEAP32[i3 >> 2];
 HEAP32[i3 >> 2] = i5;
 i5 = i1 + 8 | 0;
 i4 = HEAP32[i6 >> 2] | 0;
 HEAP32[i6 >> 2] = HEAP32[i5 >> 2];
 HEAP32[i5 >> 2] = i4;
 i5 = i2 + 8 | 0;
 i2 = i1 + 12 | 0;
 i4 = HEAP32[i5 >> 2] | 0;
 HEAP32[i5 >> 2] = HEAP32[i2 >> 2];
 HEAP32[i2 >> 2] = i4;
 HEAP32[i1 >> 2] = HEAP32[i3 >> 2];
 return;
}

function __ZNSt3__16vectorIPN4wasm4PassENS_9allocatorIS3_EEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 var i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0;
 i4 = HEAP32[i2 >> 2] | 0;
 i6 = i2 + 4 | 0;
 i3 = i1 + 4 | 0;
 i5 = (HEAP32[i6 >> 2] | 0) - i4 | 0;
 i7 = (HEAP32[i3 >> 2] | 0) + (0 - (i5 >> 2) << 2) | 0;
 HEAP32[i3 >> 2] = i7;
 _memcpy(i7 | 0, i4 | 0, i5 | 0) | 0;
 i5 = HEAP32[i2 >> 2] | 0;
 HEAP32[i2 >> 2] = HEAP32[i3 >> 2];
 HEAP32[i3 >> 2] = i5;
 i5 = i1 + 8 | 0;
 i4 = HEAP32[i6 >> 2] | 0;
 HEAP32[i6 >> 2] = HEAP32[i5 >> 2];
 HEAP32[i5 >> 2] = i4;
 i5 = i2 + 8 | 0;
 i2 = i1 + 12 | 0;
 i4 = HEAP32[i5 >> 2] | 0;
 HEAP32[i5 >> 2] = HEAP32[i2 >> 2];
 HEAP32[i2 >> 2] = i4;
 HEAP32[i1 >> 2] = HEAP32[i3 >> 2];
 return;
}

function __ZNSt3__16vectorIN4wasm4NameENS_9allocatorIS2_EEE26__swap_out_circular_bufferERNS_14__split_bufferIS2_RS4_EE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 var i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0;
 i4 = HEAP32[i2 >> 2] | 0;
 i6 = i2 + 4 | 0;
 i3 = i1 + 4 | 0;
 i5 = (HEAP32[i6 >> 2] | 0) - i4 | 0;
 i7 = (HEAP32[i3 >> 2] | 0) + (0 - (i5 >> 2) << 2) | 0;
 HEAP32[i3 >> 2] = i7;
 _memcpy(i7 | 0, i4 | 0, i5 | 0) | 0;
 i5 = HEAP32[i2 >> 2] | 0;
 HEAP32[i2 >> 2] = HEAP32[i3 >> 2];
 HEAP32[i3 >> 2] = i5;
 i5 = i1 + 8 | 0;
 i4 = HEAP32[i6 >> 2] | 0;
 HEAP32[i6 >> 2] = HEAP32[i5 >> 2];
 HEAP32[i5 >> 2] = i4;
 i5 = i2 + 8 | 0;
 i2 = i1 + 12 | 0;
 i4 = HEAP32[i5 >> 2] | 0;
 HEAP32[i5 >> 2] = HEAP32[i2 >> 2];
 HEAP32[i2 >> 2] = i4;
 HEAP32[i1 >> 2] = HEAP32[i3 >> 2];
 return;
}

function _fputc(i5, i6) {
 i5 = i5 | 0;
 i6 = i6 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i7 = 0;
 if ((HEAP32[i6 + 76 >> 2] | 0) >= 0 ? (___lockfile(i6) | 0) != 0 : 0) {
  if ((HEAP8[i6 + 75 >> 0] | 0) != (i5 | 0) ? (i2 = i6 + 20 | 0, i3 = HEAP32[i2 >> 2] | 0, i3 >>> 0 < (HEAP32[i6 + 16 >> 2] | 0) >>> 0) : 0) {
   HEAP32[i2 >> 2] = i3 + 1;
   HEAP8[i3 >> 0] = i5;
   i1 = i5 & 255;
  } else i1 = ___overflow(i6, i5) | 0;
  ___unlockfile(i6);
 } else i7 = 3;
 do if ((i7 | 0) == 3) {
  if ((HEAP8[i6 + 75 >> 0] | 0) != (i5 | 0) ? (i4 = i6 + 20 | 0, i1 = HEAP32[i4 >> 2] | 0, i1 >>> 0 < (HEAP32[i6 + 16 >> 2] | 0) >>> 0) : 0) {
   HEAP32[i4 >> 2] = i1 + 1;
   HEAP8[i1 >> 0] = i5;
   i1 = i5 & 255;
   break;
  }
  i1 = ___overflow(i6, i5) | 0;
 } while (0);
 return i1 | 0;
}

function __ZNSt3__16vectorIPN4wasm2IfENS_9allocatorIS3_EEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 var i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0;
 i4 = HEAP32[i2 >> 2] | 0;
 i6 = i2 + 4 | 0;
 i3 = i1 + 4 | 0;
 i5 = (HEAP32[i6 >> 2] | 0) - i4 | 0;
 i7 = (HEAP32[i3 >> 2] | 0) + (0 - (i5 >> 2) << 2) | 0;
 HEAP32[i3 >> 2] = i7;
 _memcpy(i7 | 0, i4 | 0, i5 | 0) | 0;
 i5 = HEAP32[i2 >> 2] | 0;
 HEAP32[i2 >> 2] = HEAP32[i3 >> 2];
 HEAP32[i3 >> 2] = i5;
 i5 = i1 + 8 | 0;
 i4 = HEAP32[i6 >> 2] | 0;
 HEAP32[i6 >> 2] = HEAP32[i5 >> 2];
 HEAP32[i5 >> 2] = i4;
 i5 = i2 + 8 | 0;
 i2 = i1 + 12 | 0;
 i4 = HEAP32[i5 >> 2] | 0;
 HEAP32[i5 >> 2] = HEAP32[i2 >> 2];
 HEAP32[i2 >> 2] = i4;
 HEAP32[i1 >> 2] = HEAP32[i3 >> 2];
 return;
}

function __ZNK4wasm7Literal4rotRERKS0_(i4, i3, i2) {
 i4 = i4 | 0;
 i3 = i3 | 0;
 i2 = i2 | 0;
 var i1 = 0, i5 = 0, i6 = 0, i7 = 0;
 i1 = i3 + 8 | 0;
 if ((HEAP32[i3 >> 2] | 0) == 1) {
  i3 = HEAP32[i1 >> 2] | 0;
  i1 = HEAP32[i2 + 8 >> 2] | 0;
  HEAP32[i4 + 8 >> 2] = i3 >>> (i1 & 31) | i3 << (0 - i1 & 31);
  i1 = 1;
 } else {
  i6 = HEAP32[i1 >> 2] | 0;
  i1 = HEAP32[i1 + 4 >> 2] | 0;
  i2 = i2 + 8 | 0;
  i7 = HEAP32[i2 >> 2] | 0;
  i2 = HEAP32[i2 + 4 >> 2] | 0;
  i5 = _bitshift64Lshr(i6 | 0, i1 | 0, i7 & 63 | 0) | 0;
  i3 = tempRet0;
  i2 = _i64Subtract(0, 0, i7 | 0, i2 | 0) | 0;
  i2 = _bitshift64Shl(i6 | 0, i1 | 0, i2 & 63 | 0) | 0;
  i1 = i4 + 8 | 0;
  HEAP32[i1 >> 2] = i5 | i2;
  HEAP32[i1 + 4 >> 2] = i3 | tempRet0;
  i1 = 2;
 }
 HEAP32[i4 >> 2] = i1;
 return;
}

function __ZNK4wasm7Literal4rotLERKS0_(i4, i3, i2) {
 i4 = i4 | 0;
 i3 = i3 | 0;
 i2 = i2 | 0;
 var i1 = 0, i5 = 0, i6 = 0, i7 = 0;
 i1 = i3 + 8 | 0;
 if ((HEAP32[i3 >> 2] | 0) == 1) {
  i3 = HEAP32[i1 >> 2] | 0;
  i1 = HEAP32[i2 + 8 >> 2] | 0;
  HEAP32[i4 + 8 >> 2] = i3 << (i1 & 31) | i3 >>> (0 - i1 & 31);
  i1 = 1;
 } else {
  i6 = HEAP32[i1 >> 2] | 0;
  i1 = HEAP32[i1 + 4 >> 2] | 0;
  i2 = i2 + 8 | 0;
  i7 = HEAP32[i2 >> 2] | 0;
  i2 = HEAP32[i2 + 4 >> 2] | 0;
  i5 = _bitshift64Shl(i6 | 0, i1 | 0, i7 & 63 | 0) | 0;
  i3 = tempRet0;
  i2 = _i64Subtract(0, 0, i7 | 0, i2 | 0) | 0;
  i2 = _bitshift64Lshr(i6 | 0, i1 | 0, i2 & 63 | 0) | 0;
  i1 = i4 + 8 | 0;
  HEAP32[i1 >> 2] = i5 | i2;
  HEAP32[i1 + 4 >> 2] = i3 | tempRet0;
  i1 = 2;
 }
 HEAP32[i4 >> 2] = i1;
 return;
}

function __ZNSt3__19__num_getIwE17__stage2_int_prepERNS_8ios_baseEPwRw(i4, i2, i1, i3) {
 i4 = i4 | 0;
 i2 = i2 | 0;
 i1 = i1 | 0;
 i3 = i3 | 0;
 var i5 = 0, i6 = 0, i7 = 0;
 i5 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i6 = i5;
 i2 = __ZNKSt3__18ios_base6getlocEv(i2) | 0;
 HEAP32[i6 >> 2] = i2;
 i7 = __ZNKSt3__16locale9use_facetERNS0_2idE(i6, 38408) | 0;
 FUNCTION_TABLE_iiiii[HEAP32[(HEAP32[i7 >> 2] | 0) + 48 >> 2] & 7](i7, 30448, 30474, i1) | 0;
 i1 = __ZNKSt3__16locale9use_facetERNS0_2idE(i6, 38416) | 0;
 i6 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 16 >> 2] & 127](i1) | 0;
 HEAP32[i3 >> 2] = i6;
 FUNCTION_TABLE_vii[HEAP32[(HEAP32[i1 >> 2] | 0) + 20 >> 2] & 511](i4, i1);
 __ZNSt3__114__shared_count16__release_sharedEv(i2) | 0;
 STACKTOP = i5;
 return;
}

function __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEC2EjRKS3_RKS5_(i3, i2, i1) {
 i3 = i3 | 0;
 i2 = i2 | 0;
 i1 = i1 | 0;
 var i4 = 0;
 HEAP32[i3 >> 2] = 0;
 i4 = i3 + 4 | 0;
 HEAP32[i4 >> 2] = 0;
 i1 = HEAP32[i1 >> 2] | 0;
 HEAP32[i3 + 8 >> 2] = 0;
 HEAP32[i3 + 12 >> 2] = i1;
 i1 = __ZN10__cxxabiv112_GLOBAL__N_15arenaILj4096EE8allocateEj(i1, 24) | 0;
 HEAP32[i4 >> 2] = i1;
 HEAP32[i3 >> 2] = i1;
 HEAP32[i3 + 8 >> 2] = i1 + 24;
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_(i1, i2);
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_(i1 + 12 | 0, i2 + 12 | 0);
 HEAP32[i4 >> 2] = (HEAP32[i4 >> 2] | 0) + 24;
 return;
}

function __ZNSt3__119__double_or_nothingIwEEvRNS_10unique_ptrIT_PFvPvEEERPS2_S9_(i6, i8, i7) {
 i6 = i6 | 0;
 i8 = i8 | 0;
 i7 = i7 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0;
 i4 = i6 + 4 | 0;
 i2 = (HEAP32[i4 >> 2] | 0) != 232;
 i1 = HEAP32[i6 >> 2] | 0;
 i3 = (HEAP32[i7 >> 2] | 0) - i1 | 0;
 i3 = i3 >>> 0 < 2147483647 ? i3 << 1 : -1;
 i5 = (HEAP32[i8 >> 2] | 0) - i1 >> 2;
 i1 = _realloc(i2 ? i1 : 0, i3) | 0;
 if (!i1) __ZSt17__throw_bad_allocv();
 if (!i2) {
  i2 = HEAP32[i6 >> 2] | 0;
  HEAP32[i6 >> 2] = i1;
  if (i2) {
   FUNCTION_TABLE_vi[HEAP32[i4 >> 2] & 255](i2);
   i1 = HEAP32[i6 >> 2] | 0;
  }
 } else HEAP32[i6 >> 2] = i1;
 HEAP32[i4 >> 2] = 233;
 HEAP32[i8 >> 2] = i1 + (i5 << 2);
 HEAP32[i7 >> 2] = (HEAP32[i6 >> 2] | 0) + (i3 >>> 2 << 2);
 return;
}

function __ZNSt3__119__double_or_nothingIjEEvRNS_10unique_ptrIT_PFvPvEEERPS2_S9_(i6, i8, i7) {
 i6 = i6 | 0;
 i8 = i8 | 0;
 i7 = i7 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0;
 i4 = i6 + 4 | 0;
 i2 = (HEAP32[i4 >> 2] | 0) != 232;
 i1 = HEAP32[i6 >> 2] | 0;
 i3 = (HEAP32[i7 >> 2] | 0) - i1 | 0;
 i3 = i3 >>> 0 < 2147483647 ? i3 << 1 : -1;
 i5 = (HEAP32[i8 >> 2] | 0) - i1 >> 2;
 i1 = _realloc(i2 ? i1 : 0, i3) | 0;
 if (!i1) __ZSt17__throw_bad_allocv();
 if (!i2) {
  i2 = HEAP32[i6 >> 2] | 0;
  HEAP32[i6 >> 2] = i1;
  if (i2) {
   FUNCTION_TABLE_vi[HEAP32[i4 >> 2] & 255](i2);
   i1 = HEAP32[i6 >> 2] | 0;
  }
 } else HEAP32[i6 >> 2] = i1;
 HEAP32[i4 >> 2] = 233;
 HEAP32[i8 >> 2] = i1 + (i5 << 2);
 HEAP32[i7 >> 2] = (HEAP32[i6 >> 2] | 0) + (i3 >>> 2 << 2);
 return;
}

function __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6__initIPKcEENS_9enable_ifIXsr21__is_forward_iteratorIT_EE5valueEvE4typeESA_SA_(i3, i1, i6) {
 i3 = i3 | 0;
 i1 = i1 | 0;
 i6 = i6 | 0;
 var i2 = 0, i4 = 0, i5 = 0, i7 = 0;
 i4 = i1;
 i2 = i6 - i4 | 0;
 if (i2 >>> 0 > 4294967279) __ZNKSt3__121__basic_string_commonILb1EE20__throw_length_errorEv(i3);
 if (i2 >>> 0 < 11) {
  HEAP8[i3 >> 0] = i2 << 1;
  i5 = i3 + 1 | 0;
 } else {
  i7 = i2 + 16 & -16;
  i5 = __Znwj(i7) | 0;
  HEAP32[i3 + 8 >> 2] = i5;
  HEAP32[i3 >> 2] = i7 | 1;
  HEAP32[i3 + 4 >> 2] = i2;
 }
 i3 = i6 - i4 | 0;
 i2 = i5;
 while (1) {
  if ((i1 | 0) == (i6 | 0)) break;
  HEAP8[i2 >> 0] = HEAP8[i1 >> 0] | 0;
  i1 = i1 + 1 | 0;
  i2 = i2 + 1 | 0;
 }
 HEAP8[i5 + i3 >> 0] = 0;
 return;
}

function __ZNSt3__19__num_getIcE17__stage2_int_prepERNS_8ios_baseEPcRc(i4, i2, i1, i3) {
 i4 = i4 | 0;
 i2 = i2 | 0;
 i1 = i1 | 0;
 i3 = i3 | 0;
 var i5 = 0, i6 = 0, i7 = 0;
 i5 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i6 = i5;
 i2 = __ZNKSt3__18ios_base6getlocEv(i2) | 0;
 HEAP32[i6 >> 2] = i2;
 i7 = __ZNKSt3__16locale9use_facetERNS0_2idE(i6, 38376) | 0;
 FUNCTION_TABLE_iiiii[HEAP32[(HEAP32[i7 >> 2] | 0) + 32 >> 2] & 7](i7, 30448, 30474, i1) | 0;
 i1 = __ZNKSt3__16locale9use_facetERNS0_2idE(i6, 38388) | 0;
 i6 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 16 >> 2] & 127](i1) | 0;
 HEAP8[i3 >> 0] = i6;
 FUNCTION_TABLE_vii[HEAP32[(HEAP32[i1 >> 2] | 0) + 20 >> 2] & 511](i4, i1);
 __ZNSt3__114__shared_count16__release_sharedEv(i2) | 0;
 STACKTOP = i5;
 return;
}

function __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6__initIPcEENS_9enable_ifIXsr21__is_forward_iteratorIT_EE5valueEvE4typeES9_S9_(i3, i1, i6) {
 i3 = i3 | 0;
 i1 = i1 | 0;
 i6 = i6 | 0;
 var i2 = 0, i4 = 0, i5 = 0, i7 = 0;
 i4 = i1;
 i2 = i6 - i4 | 0;
 if (i2 >>> 0 > 4294967279) __ZNKSt3__121__basic_string_commonILb1EE20__throw_length_errorEv(i3);
 if (i2 >>> 0 < 11) {
  HEAP8[i3 >> 0] = i2 << 1;
  i5 = i3 + 1 | 0;
 } else {
  i7 = i2 + 16 & -16;
  i5 = __Znwj(i7) | 0;
  HEAP32[i3 + 8 >> 2] = i5;
  HEAP32[i3 >> 2] = i7 | 1;
  HEAP32[i3 + 4 >> 2] = i2;
 }
 i3 = i6 - i4 | 0;
 i2 = i5;
 while (1) {
  if ((i1 | 0) == (i6 | 0)) break;
  HEAP8[i2 >> 0] = HEAP8[i1 >> 0] | 0;
  i1 = i1 + 1 | 0;
  i2 = i2 + 1 | 0;
 }
 HEAP8[i5 + i3 >> 0] = 0;
 return;
}

function __ZN4wasm16PrintSExpression13visitSetLocalEPNS_8SetLocalE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 var i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0;
 i3 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i4 = i3 + 4 | 0;
 i6 = i3;
 i5 = __Z12printOpeningRNSt3__113basic_ostreamIcNS_11char_traitsIcEEEEPKcb(HEAP32[i2 >> 2] | 0, 18360, 0) | 0;
 i7 = __ZN4wasm16PrintSExpression14printableLocalEj(i2, HEAP32[i1 + 8 >> 2] | 0) | 0;
 HEAP32[i6 >> 2] = i7;
 HEAP32[i4 >> 2] = HEAP32[i6 >> 2];
 __ZN4wasmlsERNSt3__113basic_ostreamIcNS0_11char_traitsIcEEEENS_4NameE(i5, i4) | 0;
 __ZN4wasm16PrintSExpression9incIndentEv(i2);
 __ZN4wasm16PrintSExpression13printFullLineEPNS_10ExpressionE(i2, HEAP32[i1 + 12 >> 2] | 0);
 __ZN4wasm16PrintSExpression9decIndentEv(i2);
 STACKTOP = i3;
 return;
}

function _emscripten_bind_ModuleInstance_callExport_2(i6, i4, i5) {
 i6 = i6 | 0;
 i4 = i4 | 0;
 i5 = i5 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i7 = 0, i8 = 0;
 i7 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i1 = i7 + 20 | 0;
 i2 = i7;
 i3 = i7 + 16 | 0;
 if ((HEAP8[35216] | 0) == 0 ? ___cxa_guard_acquire(35216) | 0 : 0) {
  HEAP32[8800] = 0;
  i8 = 35208;
  HEAP32[i8 >> 2] = 0;
  HEAP32[i8 + 4 >> 2] = 0;
 }
 HEAP32[i3 >> 2] = HEAP32[i4 >> 2];
 HEAP32[i1 >> 2] = HEAP32[i3 >> 2];
 __ZN4wasm14ModuleInstance10callExportENS_4NameERNSt3__16vectorINS_7LiteralENS2_9allocatorIS4_EEEE(i2, i6, i1, i5);
 HEAP32[8800] = HEAP32[i2 >> 2];
 HEAP32[8801] = HEAP32[i2 + 4 >> 2];
 HEAP32[8802] = HEAP32[i2 + 8 >> 2];
 HEAP32[8803] = HEAP32[i2 + 12 >> 2];
 STACKTOP = i7;
 return 35200;
}

function __ZNSt3__16vectorIPcNS_9allocatorIS1_EEE26__swap_out_circular_bufferERNS_14__split_bufferIS1_RS3_EE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 var i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0;
 i4 = HEAP32[i2 >> 2] | 0;
 i6 = i2 + 4 | 0;
 i3 = i1 + 4 | 0;
 i5 = (HEAP32[i6 >> 2] | 0) - i4 | 0;
 i7 = (HEAP32[i3 >> 2] | 0) + (0 - (i5 >> 2) << 2) | 0;
 HEAP32[i3 >> 2] = i7;
 _memcpy(i7 | 0, i4 | 0, i5 | 0) | 0;
 i5 = HEAP32[i2 >> 2] | 0;
 HEAP32[i2 >> 2] = HEAP32[i3 >> 2];
 HEAP32[i3 >> 2] = i5;
 i5 = i1 + 8 | 0;
 i4 = HEAP32[i6 >> 2] | 0;
 HEAP32[i6 >> 2] = HEAP32[i5 >> 2];
 HEAP32[i5 >> 2] = i4;
 i5 = i2 + 8 | 0;
 i2 = i1 + 12 | 0;
 i4 = HEAP32[i5 >> 2] | 0;
 HEAP32[i5 >> 2] = HEAP32[i2 >> 2];
 HEAP32[i2 >> 2] = i4;
 HEAP32[i1 >> 2] = HEAP32[i3 >> 2];
 return;
}

function __ZZN4wasm14ModuleInstance12callFunctionEN6cashew7IStringERNSt3__16vectorINS_7LiteralENS3_9allocatorIS5_EEEEEN16ExpressionRunner9visitLoopEPNS_4LoopE(i6, i8, i7) {
 i6 = i6 | 0;
 i8 = i8 | 0;
 i7 = i7 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i9 = 0;
 i2 = i7 + 16 | 0;
 i3 = i6 + 16 | 0;
 i4 = i7 + 12 | 0;
 while (1) {
  __ZN4wasm7VisitorIZNS_14ModuleInstance12callFunctionEN6cashew7IStringERNSt3__16vectorINS_7LiteralENS4_9allocatorIS6_EEEEE16ExpressionRunnerNS_4FlowEE5visitEPNS_10ExpressionE(i6, i8, HEAP32[i2 >> 2] | 0);
  i5 = HEAP32[i3 >> 2] | 0;
  if (!i5) break;
  if ((i5 | 0) != (HEAP32[i4 >> 2] | 0)) {
   i1 = i5;
   i9 = 4;
   break;
  }
 }
 if ((i9 | 0) == 4 ? (i1 | 0) == (HEAP32[i7 + 8 >> 2] | 0) : 0) HEAP32[i3 >> 2] = 0;
 return;
}

function __ZN4wasm15RemoveUnusedBrs4walkERPNS_10ExpressionE(i1, i7) {
 i1 = i1 | 0;
 i7 = i7 | 0;
 var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0;
 i2 = i1 + 40 | 0;
 i3 = i1 + 16 | 0;
 i4 = i1 + 56 | 0;
 i5 = i1 + 60 | 0;
 i6 = i1 + 44 | 0;
 i1 = i1 + 48 | 0;
 while (1) {
  HEAP8[i2 >> 0] = 0;
  __ZN4wasm6WalkerINS_15RemoveUnusedBrsENS_7VisitorIS1_vEEE4walkERPNS_10ExpressionE(i3, i7);
  if ((HEAP32[i4 >> 2] | 0) != (HEAP32[i5 >> 2] | 0)) {
   i1 = 3;
   break;
  }
  if ((HEAP32[i6 >> 2] | 0) != (HEAP32[i1 >> 2] | 0)) {
   i1 = 5;
   break;
  }
  if (!(HEAP8[i2 >> 0] | 0)) {
   i1 = 7;
   break;
  }
 }
 if ((i1 | 0) == 3) ___assert_fail(20235, 20195, 139, 25295); else if ((i1 | 0) == 5) ___assert_fail(20251, 20195, 140, 25295); else if ((i1 | 0) == 7) return;
}

function __ZN4wasm15RemoveUnusedBrs10saveIfTrueEPS0_PPNS_10ExpressionE(i4, i1) {
 i4 = i4 | 0;
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i5 = 0, i6 = 0;
 i1 = i4 + 44 | 0;
 i2 = i4 + 60 | 0;
 i3 = HEAP32[i2 >> 2] | 0;
 if (i3 >>> 0 < (HEAP32[i4 + 64 >> 2] | 0) >>> 0) {
  HEAP32[i3 >> 2] = 0;
  i6 = i3 + 4 | 0;
  HEAP32[i6 >> 2] = 0;
  HEAP32[i3 + 8 >> 2] = 0;
  HEAP32[i3 >> 2] = HEAP32[i1 >> 2];
  i5 = i4 + 48 | 0;
  HEAP32[i6 >> 2] = HEAP32[i5 >> 2];
  i4 = i4 + 52 | 0;
  HEAP32[i3 + 8 >> 2] = HEAP32[i4 >> 2];
  HEAP32[i4 >> 2] = 0;
  HEAP32[i5 >> 2] = 0;
  HEAP32[i1 >> 2] = 0;
  HEAP32[i2 >> 2] = (HEAP32[i2 >> 2] | 0) + 12;
 } else __ZNSt3__16vectorINS0_IPN4wasm5BreakENS_9allocatorIS3_EEEENS4_IS6_EEE21__push_back_slow_pathIS6_EEvOT_(i4 + 56 | 0, i1);
 return;
}

function __ZNSt3__16vectorIjNS_9allocatorIjEEE26__swap_out_circular_bufferERNS_14__split_bufferIjRS2_EE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 var i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0;
 i4 = HEAP32[i2 >> 2] | 0;
 i6 = i2 + 4 | 0;
 i3 = i1 + 4 | 0;
 i5 = (HEAP32[i6 >> 2] | 0) - i4 | 0;
 i7 = (HEAP32[i3 >> 2] | 0) + (0 - (i5 >> 2) << 2) | 0;
 HEAP32[i3 >> 2] = i7;
 _memcpy(i7 | 0, i4 | 0, i5 | 0) | 0;
 i5 = HEAP32[i2 >> 2] | 0;
 HEAP32[i2 >> 2] = HEAP32[i3 >> 2];
 HEAP32[i3 >> 2] = i5;
 i5 = i1 + 8 | 0;
 i4 = HEAP32[i6 >> 2] | 0;
 HEAP32[i6 >> 2] = HEAP32[i5 >> 2];
 HEAP32[i5 >> 2] = i4;
 i5 = i2 + 8 | 0;
 i2 = i1 + 12 | 0;
 i4 = HEAP32[i5 >> 2] | 0;
 HEAP32[i5 >> 2] = HEAP32[i2 >> 2];
 HEAP32[i2 >> 2] = i4;
 HEAP32[i1 >> 2] = HEAP32[i3 >> 2];
 return;
}

function __ZNSt3__16vectorIiNS_9allocatorIiEEE26__swap_out_circular_bufferERNS_14__split_bufferIiRS2_EE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 var i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0;
 i4 = HEAP32[i2 >> 2] | 0;
 i6 = i2 + 4 | 0;
 i3 = i1 + 4 | 0;
 i5 = (HEAP32[i6 >> 2] | 0) - i4 | 0;
 i7 = (HEAP32[i3 >> 2] | 0) + (0 - (i5 >> 2) << 2) | 0;
 HEAP32[i3 >> 2] = i7;
 _memcpy(i7 | 0, i4 | 0, i5 | 0) | 0;
 i5 = HEAP32[i2 >> 2] | 0;
 HEAP32[i2 >> 2] = HEAP32[i3 >> 2];
 HEAP32[i3 >> 2] = i5;
 i5 = i1 + 8 | 0;
 i4 = HEAP32[i6 >> 2] | 0;
 HEAP32[i6 >> 2] = HEAP32[i5 >> 2];
 HEAP32[i5 >> 2] = i4;
 i5 = i2 + 8 | 0;
 i2 = i1 + 12 | 0;
 i4 = HEAP32[i5 >> 2] | 0;
 HEAP32[i5 >> 2] = HEAP32[i2 >> 2];
 HEAP32[i2 >> 2] = i4;
 HEAP32[i1 >> 2] = HEAP32[i3 >> 2];
 return;
}

function __ZNSt3__16__treeINS_12__value_typeIN4wasm4NameENS_6vectorINS2_14SimplifyLocals10BlockBreakENS_9allocatorIS6_EEEEEENS_19__map_value_compareIS3_SA_NS_4lessIS3_EELb1EEENS7_ISA_EEE5eraseENS_21__tree_const_iteratorISA_PNS_11__tree_nodeISA_PvEEiEE(i3, i1) {
 i3 = i3 | 0;
 i1 = i1 | 0;
 var i2 = 0, i4 = 0;
 i1 = HEAP32[i1 >> 2] | 0;
 i2 = __ZNSt3__111__tree_nextIPNS_16__tree_node_baseIPvEEEET_S5_(i1) | 0;
 if ((HEAP32[i3 >> 2] | 0) == (i1 | 0)) HEAP32[i3 >> 2] = i2;
 i4 = i3 + 8 | 0;
 HEAP32[i4 >> 2] = (HEAP32[i4 >> 2] | 0) + -1;
 __ZNSt3__113__tree_removeIPNS_16__tree_node_baseIPvEEEEvT_S5_(HEAP32[i3 + 4 >> 2] | 0, i1);
 __ZNSt3__113__vector_baseIN4wasm14SimplifyLocals10BlockBreakENS_9allocatorIS3_EEED2Ev(i1 + 20 | 0);
 __ZdlPv(i1);
 return i2 | 0;
}

function __ZN4wasm16PrintSExpression11visitExportEPNS_6ExportE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 var i3 = 0, i4 = 0, i5 = 0;
 i3 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i4 = i3 + 4 | 0;
 i5 = i3;
 __Z12printOpeningRNSt3__113basic_ostreamIcNS_11char_traitsIcEEEEPKcb(HEAP32[i2 >> 2] | 0, 18140, 0) | 0;
 i2 = __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_c(__Z9printTextRNSt3__113basic_ostreamIcNS_11char_traitsIcEEEEPKc(HEAP32[i2 >> 2] | 0, HEAP32[i1 >> 2] | 0) | 0, 32) | 0;
 HEAP32[i5 >> 2] = HEAP32[i1 + 4 >> 2];
 HEAP32[i4 >> 2] = HEAP32[i5 >> 2];
 __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_c(__ZN4wasmlsERNSt3__113basic_ostreamIcNS0_11char_traitsIcEEEENS_4NameE(i2, i4) | 0, 41) | 0;
 STACKTOP = i3;
 return;
}

function ___overflow(i8, i6) {
 i8 = i8 | 0;
 i6 = i6 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i7 = 0, i9 = 0;
 i9 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i7 = i9;
 i5 = i6 & 255;
 HEAP8[i7 >> 0] = i5;
 i2 = i8 + 16 | 0;
 i3 = HEAP32[i2 >> 2] | 0;
 if (!i3) if (!(___towrite(i8) | 0)) {
  i3 = HEAP32[i2 >> 2] | 0;
  i4 = 4;
 } else i1 = -1; else i4 = 4;
 do if ((i4 | 0) == 4) {
  i2 = i8 + 20 | 0;
  i4 = HEAP32[i2 >> 2] | 0;
  if (i4 >>> 0 < i3 >>> 0 ? (i1 = i6 & 255, (i1 | 0) != (HEAP8[i8 + 75 >> 0] | 0)) : 0) {
   HEAP32[i2 >> 2] = i4 + 1;
   HEAP8[i4 >> 0] = i5;
   break;
  }
  if ((FUNCTION_TABLE_iiii[HEAP32[i8 + 36 >> 2] & 31](i8, i7, 1) | 0) == 1) i1 = HEAPU8[i7 >> 0] | 0; else i1 = -1;
 } while (0);
 STACKTOP = i9;
 return i1 | 0;
}

function __ZN4wasm11BreakSeeker3hasEPNS_10ExpressionENS_4NameE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 var i3 = 0, i4 = 0, i5 = 0;
 i3 = STACKTOP;
 STACKTOP = STACKTOP + 48 | 0;
 i5 = i3;
 i4 = i3 + 8 | 0;
 HEAP32[i5 >> 2] = i2;
 i2 = HEAP32[i1 >> 2] | 0;
 HEAP32[i4 >> 2] = 0;
 HEAP32[i4 + 4 >> 2] = 0;
 HEAP32[i4 + 8 >> 2] = 0;
 HEAP32[i4 + 12 >> 2] = 0;
 HEAP32[i4 + 16 >> 2] = 0;
 HEAP32[i4 + 20 >> 2] = 0;
 HEAP32[i4 + 24 >> 2] = i2;
 i2 = i4 + 28 | 0;
 HEAP32[i2 >> 2] = 0;
 __ZN4wasm6WalkerINS_11BreakSeekerENS_7VisitorIS1_vEEE4walkERPNS_10ExpressionE(i4, i5);
 i2 = (HEAP32[i2 >> 2] | 0) != 0;
 __ZNSt3__113__vector_baseIN4wasm6WalkerINS1_11BreakSeekerENS1_7VisitorIS3_vEEE4TaskENS_9allocatorIS7_EEED2Ev(i4 + 4 | 0);
 STACKTOP = i3;
 return i2 | 0;
}

function __ZNSt3__1plIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEENS_12basic_stringIT_T0_T1_EEPKS8_RKSB_(i4, i2, i3) {
 i4 = i4 | 0;
 i2 = i2 | 0;
 i3 = i3 | 0;
 var i1 = 0, i5 = 0;
 i1 = 0;
 while (1) {
  if ((i1 | 0) == 3) break;
  HEAP32[i4 + (i1 << 2) >> 2] = 0;
  i1 = i1 + 1 | 0;
 }
 i5 = _strlen(i2) | 0;
 i1 = HEAP8[i3 >> 0] | 0;
 i1 = (i1 & 1) == 0 ? (i1 & 255) >>> 1 : HEAP32[i3 + 4 >> 2] | 0;
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcjj(i4, i2, i5, i1 + i5 | 0);
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj(i4, (HEAP8[i3 >> 0] & 1) == 0 ? i3 + 1 | 0 : HEAP32[i3 + 8 >> 2] | 0, i1) | 0;
 return;
}

function __ZNSt3__119__double_or_nothingIcEEvRNS_10unique_ptrIT_PFvPvEEERPS2_S9_(i6, i8, i7) {
 i6 = i6 | 0;
 i8 = i8 | 0;
 i7 = i7 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0;
 i4 = i6 + 4 | 0;
 i2 = (HEAP32[i4 >> 2] | 0) != 232;
 i1 = HEAP32[i6 >> 2] | 0;
 i3 = (HEAP32[i7 >> 2] | 0) - i1 | 0;
 i3 = i3 >>> 0 < 2147483647 ? i3 << 1 : -1;
 i5 = (HEAP32[i8 >> 2] | 0) - i1 | 0;
 i1 = _realloc(i2 ? i1 : 0, i3) | 0;
 if (!i1) __ZSt17__throw_bad_allocv();
 if (!i2) {
  i2 = HEAP32[i6 >> 2] | 0;
  HEAP32[i6 >> 2] = i1;
  if (i2) {
   FUNCTION_TABLE_vi[HEAP32[i4 >> 2] & 255](i2);
   i1 = HEAP32[i6 >> 2] | 0;
  }
 } else HEAP32[i6 >> 2] = i1;
 HEAP32[i4 >> 2] = 233;
 HEAP32[i8 >> 2] = i1 + i5;
 HEAP32[i7 >> 2] = (HEAP32[i6 >> 2] | 0) + i3;
 return;
}

function __ZNSt3__16vectorIcNS_9allocatorIcEEE26__swap_out_circular_bufferERNS_14__split_bufferIcRS2_EE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 var i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0;
 i4 = HEAP32[i2 >> 2] | 0;
 i6 = i2 + 4 | 0;
 i3 = i1 + 4 | 0;
 i5 = (HEAP32[i6 >> 2] | 0) - i4 | 0;
 i7 = (HEAP32[i3 >> 2] | 0) + (0 - i5) | 0;
 HEAP32[i3 >> 2] = i7;
 _memcpy(i7 | 0, i4 | 0, i5 | 0) | 0;
 i5 = HEAP32[i2 >> 2] | 0;
 HEAP32[i2 >> 2] = HEAP32[i3 >> 2];
 HEAP32[i3 >> 2] = i5;
 i5 = i1 + 8 | 0;
 i4 = HEAP32[i6 >> 2] | 0;
 HEAP32[i6 >> 2] = HEAP32[i5 >> 2];
 HEAP32[i5 >> 2] = i4;
 i5 = i2 + 8 | 0;
 i2 = i1 + 12 | 0;
 i4 = HEAP32[i5 >> 2] | 0;
 HEAP32[i5 >> 2] = HEAP32[i2 >> 2];
 HEAP32[i2 >> 2] = i4;
 HEAP32[i1 >> 2] = HEAP32[i3 >> 2];
 return;
}

function __ZN4wasm22SExpressionWasmBuilder12makeSetLocalERNS_7ElementE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 var i3 = 0, i4 = 0, i5 = 0;
 i3 = __ZN10MixedArena5allocIN4wasm8SetLocalEEEPT_v(HEAP32[i2 + 4 >> 2] | 0) | 0;
 i5 = __ZN4wasm7Element4listEv(i1) | 0;
 i5 = __ZN4wasm22SExpressionWasmBuilder13getLocalIndexERNS_7ElementE(i2, HEAP32[(HEAP32[i5 >> 2] | 0) + 4 >> 2] | 0) | 0;
 i4 = i3 + 8 | 0;
 HEAP32[i4 >> 2] = i5;
 i1 = __ZN4wasm7Element4listEv(i1) | 0;
 i1 = __ZN4wasm22SExpressionWasmBuilder15parseExpressionERNS_7ElementE(i2, HEAP32[(HEAP32[i1 >> 2] | 0) + 8 >> 2] | 0) | 0;
 HEAP32[i3 + 12 >> 2] = i1;
 i2 = __ZN4wasm8Function12getLocalTypeEj(HEAP32[i2 + 64 >> 2] | 0, HEAP32[i4 >> 2] | 0) | 0;
 HEAP32[i3 + 4 >> 2] = i2;
 return i3 | 0;
}

function __ZNSt3__1plIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEENS_12basic_stringIT_T0_T1_EERKSB_PKS8_(i4, i2, i3) {
 i4 = i4 | 0;
 i2 = i2 | 0;
 i3 = i3 | 0;
 var i1 = 0, i5 = 0, i6 = 0;
 i1 = 0;
 while (1) {
  if ((i1 | 0) == 3) break;
  HEAP32[i4 + (i1 << 2) >> 2] = 0;
  i1 = i1 + 1 | 0;
 }
 i5 = HEAP8[i2 >> 0] | 0;
 i6 = (i5 & 1) == 0;
 i5 = i6 ? (i5 & 255) >>> 1 : HEAP32[i2 + 4 >> 2] | 0;
 i1 = _strlen(i3) | 0;
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcjj(i4, i6 ? i2 + 1 | 0 : HEAP32[i2 + 8 >> 2] | 0, i5, i5 + i1 | 0);
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj(i4, i3, i1) | 0;
 return;
}

function __ZNSt3__16__treeIN4wasm4NameENS_4lessIS2_EENS_9allocatorIS2_EEE15__insert_uniqueERKS2_(i6, i5, i4) {
 i6 = i6 | 0;
 i5 = i5 | 0;
 i4 = i4 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i7 = 0;
 i7 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i3 = i7;
 i2 = __ZNSt3__16__treeIN4wasm4NameENS_4lessIS2_EENS_9allocatorIS2_EEE12__find_equalIS2_EERPNS_16__tree_node_baseIPvEESD_RKT_(i5, i3, i4) | 0;
 i1 = HEAP32[i2 >> 2] | 0;
 if (!i1) {
  i1 = __Znwj(20) | 0;
  HEAP32[i1 + 16 >> 2] = HEAP32[i4 >> 2];
  __ZNSt3__16__treeIN4wasm4NameENS_4lessIS2_EENS_9allocatorIS2_EEE16__insert_node_atEPNS_16__tree_node_baseIPvEERSB_SB_(i5, HEAP32[i3 >> 2] | 0, i2, i1);
  i2 = 1;
 } else i2 = 0;
 HEAP32[i6 >> 2] = i1;
 HEAP8[i6 + 4 >> 0] = i2;
 STACKTOP = i7;
 return;
}

function __ZN4wasm16PrintSExpression11visitSelectEPNS_6SelectE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_c(HEAP32[i2 >> 2] | 0, 40) | 0;
 __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(__Z12prepareColorRNSt3__113basic_ostreamIcNS_11char_traitsIcEEEE(HEAP32[i2 >> 2] | 0) | 0, 18809) | 0;
 __ZN4wasm16PrintSExpression9incIndentEv(i2);
 __ZN4wasm16PrintSExpression13printFullLineEPNS_10ExpressionE(i2, HEAP32[i1 + 8 >> 2] | 0);
 __ZN4wasm16PrintSExpression13printFullLineEPNS_10ExpressionE(i2, HEAP32[i1 + 12 >> 2] | 0);
 __ZN4wasm16PrintSExpression13printFullLineEPNS_10ExpressionE(i2, HEAP32[i1 + 16 >> 2] | 0);
 __ZN4wasm16PrintSExpression9decIndentEv(i2);
 return;
}

function _fflush(i2) {
 i2 = i2 | 0;
 var i1 = 0, i3 = 0;
 do if (i2) {
  if ((HEAP32[i2 + 76 >> 2] | 0) <= -1) {
   i1 = ___fflush_unlocked(i2) | 0;
   break;
  }
  i3 = (___lockfile(i2) | 0) == 0;
  i1 = ___fflush_unlocked(i2) | 0;
  if (!i3) ___unlockfile(i2);
 } else {
  if (!(HEAP32[1347] | 0)) i1 = 0; else i1 = _fflush(HEAP32[1347] | 0) | 0;
  ___lock(36716);
  i2 = HEAP32[9178] | 0;
  if (i2) do {
   if ((HEAP32[i2 + 76 >> 2] | 0) > -1) i3 = ___lockfile(i2) | 0; else i3 = 0;
   if ((HEAP32[i2 + 20 >> 2] | 0) >>> 0 > (HEAP32[i2 + 28 >> 2] | 0) >>> 0) i1 = ___fflush_unlocked(i2) | 0 | i1;
   if (i3 | 0) ___unlockfile(i2);
   i2 = HEAP32[i2 + 56 >> 2] | 0;
  } while ((i2 | 0) != 0);
  ___unlock(36716);
 } while (0);
 return i1 | 0;
}

function __ZZN4wasm22SExpressionWasmBuilder13parseFunctionERNS_7ElementEENKUlvE_clEv(i1) {
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0;
 i2 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i6 = i2 + 8 | 0;
 i7 = i2 + 4 | 0;
 i8 = i2;
 i3 = HEAP32[i1 >> 2] | 0;
 HEAP32[i7 >> 2] = (HEAP32[i3 >> 2] | 0) + 88;
 HEAP32[i8 >> 2] = HEAP32[HEAP32[i1 + 4 >> 2] >> 2];
 i5 = HEAP32[i1 + 8 >> 2] | 0;
 i4 = HEAP32[HEAP32[i1 + 12 >> 2] >> 2] | 0;
 i1 = HEAP32[i1 + 16 >> 2] | 0;
 HEAP32[i6 >> 2] = HEAP32[i8 >> 2];
 i1 = __ZN4wasm7Builder12makeFunctionENS_4NameEONSt3__16vectorINS_8NameTypeENS2_9allocatorIS4_EEEENS_8WasmTypeES8_PNS_10ExpressionE(i7, i6, i5, i4, i1, 0) | 0;
 HEAP32[i3 + 64 >> 2] = i1;
 STACKTOP = i2;
 return;
}

function __ZNSt3__113basic_ostreamIwNS_11char_traitsIwEEE5flushEv(i2) {
 i2 = i2 | 0;
 var i1 = 0, i3 = 0, i4 = 0;
 i3 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i1 = i3;
 if (HEAP32[i2 + (HEAP32[(HEAP32[i2 >> 2] | 0) + -12 >> 2] | 0) + 24 >> 2] | 0) {
  __ZNSt3__113basic_ostreamIwNS_11char_traitsIwEEE6sentryC2ERS3_(i1, i2);
  if (HEAP8[i1 >> 0] | 0 ? (i4 = HEAP32[i2 + (HEAP32[(HEAP32[i2 >> 2] | 0) + -12 >> 2] | 0) + 24 >> 2] | 0, (FUNCTION_TABLE_ii[HEAP32[(HEAP32[i4 >> 2] | 0) + 24 >> 2] & 127](i4) | 0) == -1) : 0) {
   i4 = i2 + (HEAP32[(HEAP32[i2 >> 2] | 0) + -12 >> 2] | 0) + 16 | 0;
   HEAP32[i4 >> 2] = HEAP32[i4 >> 2] | 1;
  }
  __ZNSt3__113basic_ostreamIwNS_11char_traitsIwEEE6sentryD2Ev(i1);
 }
 STACKTOP = i3;
 return i2 | 0;
}

function __ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEE5flushEv(i2) {
 i2 = i2 | 0;
 var i1 = 0, i3 = 0, i4 = 0;
 i3 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i1 = i3;
 if (HEAP32[i2 + (HEAP32[(HEAP32[i2 >> 2] | 0) + -12 >> 2] | 0) + 24 >> 2] | 0) {
  __ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEE6sentryC2ERS3_(i1, i2);
  if (HEAP8[i1 >> 0] | 0 ? (i4 = HEAP32[i2 + (HEAP32[(HEAP32[i2 >> 2] | 0) + -12 >> 2] | 0) + 24 >> 2] | 0, (FUNCTION_TABLE_ii[HEAP32[(HEAP32[i4 >> 2] | 0) + 24 >> 2] & 127](i4) | 0) == -1) : 0) {
   i4 = i2 + (HEAP32[(HEAP32[i2 >> 2] | 0) + -12 >> 2] | 0) + 16 | 0;
   HEAP32[i4 >> 2] = HEAP32[i4 >> 2] | 1;
  }
  __ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEE6sentryD2Ev(i1);
 }
 STACKTOP = i3;
 return i2 | 0;
}

function __ZNSt3__16__treeINS_12__value_typeIjN4wasm14SimplifyLocals12SinkableInfoEEENS_19__map_value_compareIjS5_NS_4lessIjEELb1EEENS_9allocatorIS5_EEE7destroyEPNS_11__tree_nodeIS5_PvEE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 if (!i1) return; else {
  __ZNSt3__16__treeINS_12__value_typeIjN4wasm14SimplifyLocals12SinkableInfoEEENS_19__map_value_compareIjS5_NS_4lessIjEELb1EEENS_9allocatorIS5_EEE7destroyEPNS_11__tree_nodeIS5_PvEE(i2, HEAP32[i1 >> 2] | 0);
  __ZNSt3__16__treeINS_12__value_typeIjN4wasm14SimplifyLocals12SinkableInfoEEENS_19__map_value_compareIjS5_NS_4lessIjEELb1EEENS_9allocatorIS5_EEE7destroyEPNS_11__tree_nodeIS5_PvEE(i2, HEAP32[i1 + 4 >> 2] | 0);
  __ZN4wasm14EffectAnalyzerD2Ev(i1 + 24 | 0);
  __ZdlPv(i1);
  return;
 }
}

function _pad(i6, i2, i5, i4, i1) {
 i6 = i6 | 0;
 i2 = i2 | 0;
 i5 = i5 | 0;
 i4 = i4 | 0;
 i1 = i1 | 0;
 var i3 = 0, i7 = 0, i8 = 0;
 i8 = STACKTOP;
 STACKTOP = STACKTOP + 256 | 0;
 i7 = i8;
 do if ((i5 | 0) > (i4 | 0) & (i1 & 73728 | 0) == 0) {
  i1 = i5 - i4 | 0;
  _memset(i7 | 0, i2 | 0, (i1 >>> 0 > 256 ? 256 : i1) | 0) | 0;
  i2 = HEAP32[i6 >> 2] | 0;
  i3 = (i2 & 32 | 0) == 0;
  if (i1 >>> 0 > 255) {
   i4 = i5 - i4 | 0;
   do {
    if (i3) {
     ___fwritex(i7, 256, i6) | 0;
     i2 = HEAP32[i6 >> 2] | 0;
    }
    i1 = i1 + -256 | 0;
    i3 = (i2 & 32 | 0) == 0;
   } while (i1 >>> 0 > 255);
   if (i3) i1 = i4 & 255; else break;
  } else if (!i3) break;
  ___fwritex(i7, i1, i6) | 0;
 } while (0);
 STACKTOP = i8;
 return;
}

function __ZNSt3__16__treeINS_12__value_typeIN4wasm4NameENS_6vectorINS2_14SimplifyLocals10BlockBreakENS_9allocatorIS6_EEEEEENS_19__map_value_compareIS3_SA_NS_4lessIS3_EELb1EEENS7_ISA_EEE4findIS3_EENS_15__tree_iteratorISA_PNS_11__tree_nodeISA_PvEEiEERKT_(i2, i3) {
 i2 = i2 | 0;
 i3 = i3 | 0;
 var i1 = 0;
 i1 = i2 + 4 | 0;
 i2 = __ZNSt3__16__treeINS_12__value_typeIN4wasm4NameENS_6vectorINS2_14SimplifyLocals10BlockBreakENS_9allocatorIS6_EEEEEENS_19__map_value_compareIS3_SA_NS_4lessIS3_EELb1EEENS7_ISA_EEE13__lower_boundIS3_EENS_15__tree_iteratorISA_PNS_11__tree_nodeISA_PvEEiEERKT_SM_SM_(i2, i3, HEAP32[i1 >> 2] | 0, i1) | 0;
 if ((i2 | 0) != (i1 | 0) ? !(__ZNK6cashew7IStringltERKS0_(i3, i2 + 16 | 0) | 0) : 0) i1 = i2;
 return i1 | 0;
}

function __ZNKSt3__120__time_get_c_storageIwE7__am_pmEv(i1) {
 i1 = i1 | 0;
 var i2 = 0;
 if ((HEAP8[35360] | 0) == 0 ? ___cxa_guard_acquire(35360) | 0 : 0) {
  if ((HEAP8[35368] | 0) == 0 ? ___cxa_guard_acquire(35368) | 0 : 0) {
   i1 = 39724;
   do {
    i2 = 0;
    while (1) {
     if ((i2 | 0) == 3) break;
     HEAP32[i1 + (i2 << 2) >> 2] = 0;
     i2 = i2 + 1 | 0;
    }
    i1 = i1 + 12 | 0;
   } while ((i1 | 0) != 40012);
   ___cxa_atexit(230, 0, ___dso_handle | 0) | 0;
  }
  __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6assignEPKw(39724, 11080) | 0;
  __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6assignEPKw(39736, 11092) | 0;
  HEAP32[10003] = 39724;
 }
 return HEAP32[10003] | 0;
}

function __ZN4wasm6WalkerINS_17RemoveUnusedNamesENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i7, i6, i5) {
 i7 = i7 | 0;
 i6 = i6 | 0;
 i5 = i5 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i8 = 0;
 i8 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i1 = i8 + 4 | 0;
 i2 = i8;
 HEAP32[i1 >> 2] = i6;
 HEAP32[i2 >> 2] = i5;
 i3 = i7 + 8 | 0;
 i4 = HEAP32[i3 >> 2] | 0;
 if (i4 >>> 0 < (HEAP32[i7 + 12 >> 2] | 0) >>> 0) {
  HEAP32[i4 >> 2] = i6;
  HEAP32[i4 + 4 >> 2] = i5;
  HEAP32[i3 >> 2] = i4 + 8;
 } else __ZNSt3__16vectorIN4wasm6WalkerINS1_17RemoveUnusedNamesENS1_7VisitorIS3_vEEE4TaskENS_9allocatorIS7_EEE24__emplace_back_slow_pathIJRPFvPS3_PPNS1_10ExpressionEERSF_EEEvDpOT_(i7 + 4 | 0, i1, i2);
 STACKTOP = i8;
 return;
}

function __ZNKSt3__120__time_get_c_storageIcE7__am_pmEv(i1) {
 i1 = i1 | 0;
 var i2 = 0;
 if ((HEAP8[35280] | 0) == 0 ? ___cxa_guard_acquire(35280) | 0 : 0) {
  if ((HEAP8[35288] | 0) == 0 ? ___cxa_guard_acquire(35288) | 0 : 0) {
   i1 = 38912;
   do {
    i2 = 0;
    while (1) {
     if ((i2 | 0) == 3) break;
     HEAP32[i1 + (i2 << 2) >> 2] = 0;
     i2 = i2 + 1 | 0;
    }
    i1 = i1 + 12 | 0;
   } while ((i1 | 0) != 39200);
   ___cxa_atexit(226, 0, ___dso_handle | 0) | 0;
  }
  __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6assignEPKc(38912, 31180) | 0;
  __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6assignEPKc(38924, 31183) | 0;
  HEAP32[9800] = 38912;
 }
 return HEAP32[9800] | 0;
}

function __ZNKSt3__18time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE11do_get_timeES4_S4_RNS_8ios_baseERjP2tm(i6, i1, i2, i4, i3, i5) {
 i6 = i6 | 0;
 i1 = i1 | 0;
 i2 = i2 | 0;
 i4 = i4 | 0;
 i3 = i3 | 0;
 i5 = i5 | 0;
 var i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0;
 i7 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i8 = i7 + 12 | 0;
 i9 = i7 + 8 | 0;
 i11 = i7 + 4 | 0;
 i10 = i7;
 HEAP32[i11 >> 2] = HEAP32[i1 >> 2];
 HEAP32[i10 >> 2] = HEAP32[i2 >> 2];
 HEAP32[i9 >> 2] = HEAP32[i11 >> 2];
 HEAP32[i8 >> 2] = HEAP32[i10 >> 2];
 i6 = __ZNKSt3__18time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE3getES4_S4_RNS_8ios_baseERjP2tmPKwSC_(i6, i9, i8, i4, i3, i5, 10028, 10060) | 0;
 STACKTOP = i7;
 return i6 | 0;
}

function __ZNKSt3__18time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE11do_get_timeES4_S4_RNS_8ios_baseERjP2tm(i6, i1, i2, i4, i3, i5) {
 i6 = i6 | 0;
 i1 = i1 | 0;
 i2 = i2 | 0;
 i4 = i4 | 0;
 i3 = i3 | 0;
 i5 = i5 | 0;
 var i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0;
 i7 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i8 = i7 + 12 | 0;
 i9 = i7 + 8 | 0;
 i11 = i7 + 4 | 0;
 i10 = i7;
 HEAP32[i11 >> 2] = HEAP32[i1 >> 2];
 HEAP32[i10 >> 2] = HEAP32[i2 >> 2];
 HEAP32[i9 >> 2] = HEAP32[i11 >> 2];
 HEAP32[i8 >> 2] = HEAP32[i10 >> 2];
 i6 = __ZNKSt3__18time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE3getES4_S4_RNS_8ios_baseERjP2tmPKcSC_(i6, i9, i8, i4, i3, i5, 30917, 30925) | 0;
 STACKTOP = i7;
 return i6 | 0;
}

function __ZNKSt3__110__time_put8__do_putEPwRS1_PK2tmcc(i4, i5, i6, i3, i1, i2) {
 i4 = i4 | 0;
 i5 = i5 | 0;
 i6 = i6 | 0;
 i3 = i3 | 0;
 i1 = i1 | 0;
 i2 = i2 | 0;
 var i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0;
 i7 = STACKTOP;
 STACKTOP = STACKTOP + 128 | 0;
 i10 = i7 + 16 | 0;
 i11 = i7 + 12 | 0;
 i8 = i7;
 i9 = i7 + 8 | 0;
 HEAP32[i11 >> 2] = i10 + 100;
 __ZNKSt3__110__time_put8__do_putEPcRS1_PK2tmcc(i4, i10, i11, i3, i1, i2);
 i2 = i8;
 HEAP32[i2 >> 2] = 0;
 HEAP32[i2 + 4 >> 2] = 0;
 HEAP32[i9 >> 2] = i10;
 i2 = (HEAP32[i6 >> 2] | 0) - i5 >> 2;
 i1 = _uselocale(HEAP32[i4 >> 2] | 0) | 0;
 i2 = _mbsrtowcs(i5, i9, i2, i8) | 0;
 if (i1 | 0) _uselocale(i1) | 0;
 HEAP32[i6 >> 2] = i5 + (i2 << 2);
 STACKTOP = i7;
 return;
}

function __ZNKSt3__18time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE10__get_yearERiRS4_S4_RjRKNS_5ctypeIwEE(i1, i7, i2, i4, i5, i3) {
 i1 = i1 | 0;
 i7 = i7 | 0;
 i2 = i2 | 0;
 i4 = i4 | 0;
 i5 = i5 | 0;
 i3 = i3 | 0;
 var i6 = 0, i8 = 0;
 i6 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i1 = i6 + 4 | 0;
 i8 = i6;
 HEAP32[i8 >> 2] = HEAP32[i4 >> 2];
 HEAP32[i1 >> 2] = HEAP32[i8 >> 2];
 i1 = __ZNSt3__120__get_up_to_n_digitsIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEEEiRT0_S5_RjRKNS_5ctypeIT_EEi(i2, i1, i5, i3, 4) | 0;
 if (!(HEAP32[i5 >> 2] & 4)) {
  if ((i1 | 0) < 69) i1 = i1 + 2e3 | 0; else i1 = (i1 + -69 | 0) >>> 0 < 31 ? i1 + 1900 | 0 : i1;
  HEAP32[i7 >> 2] = i1 + -1900;
 }
 STACKTOP = i6;
 return;
}

function __ZNKSt3__18time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE10__get_yearERiRS4_S4_RjRKNS_5ctypeIcEE(i1, i7, i2, i4, i5, i3) {
 i1 = i1 | 0;
 i7 = i7 | 0;
 i2 = i2 | 0;
 i4 = i4 | 0;
 i5 = i5 | 0;
 i3 = i3 | 0;
 var i6 = 0, i8 = 0;
 i6 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i1 = i6 + 4 | 0;
 i8 = i6;
 HEAP32[i8 >> 2] = HEAP32[i4 >> 2];
 HEAP32[i1 >> 2] = HEAP32[i8 >> 2];
 i1 = __ZNSt3__120__get_up_to_n_digitsIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEEEiRT0_S5_RjRKNS_5ctypeIT_EEi(i2, i1, i5, i3, 4) | 0;
 if (!(HEAP32[i5 >> 2] & 4)) {
  if ((i1 | 0) < 69) i1 = i1 + 2e3 | 0; else i1 = (i1 + -69 | 0) >>> 0 < 31 ? i1 + 1900 | 0 : i1;
  HEAP32[i7 >> 2] = i1 + -1900;
 }
 STACKTOP = i6;
 return;
}

function __ZN4wasm6WalkerINS_15SetLocalRemoverENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i7, i6, i5) {
 i7 = i7 | 0;
 i6 = i6 | 0;
 i5 = i5 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i8 = 0;
 i8 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i1 = i8 + 4 | 0;
 i2 = i8;
 HEAP32[i1 >> 2] = i6;
 HEAP32[i2 >> 2] = i5;
 i3 = i7 + 8 | 0;
 i4 = HEAP32[i3 >> 2] | 0;
 if (i4 >>> 0 < (HEAP32[i7 + 12 >> 2] | 0) >>> 0) {
  HEAP32[i4 >> 2] = i6;
  HEAP32[i4 + 4 >> 2] = i5;
  HEAP32[i3 >> 2] = i4 + 8;
 } else __ZNSt3__16vectorIN4wasm6WalkerINS1_15SetLocalRemoverENS1_7VisitorIS3_vEEE4TaskENS_9allocatorIS7_EEE24__emplace_back_slow_pathIJRPFvPS3_PPNS1_10ExpressionEERSF_EEEvDpOT_(i7 + 4 | 0, i1, i2);
 STACKTOP = i8;
 return;
}

function __ZN4wasm6WalkerINS_15RemoveUnusedBrsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i7, i6, i5) {
 i7 = i7 | 0;
 i6 = i6 | 0;
 i5 = i5 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i8 = 0;
 i8 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i1 = i8 + 4 | 0;
 i2 = i8;
 HEAP32[i1 >> 2] = i6;
 HEAP32[i2 >> 2] = i5;
 i3 = i7 + 8 | 0;
 i4 = HEAP32[i3 >> 2] | 0;
 if (i4 >>> 0 < (HEAP32[i7 + 12 >> 2] | 0) >>> 0) {
  HEAP32[i4 >> 2] = i6;
  HEAP32[i4 + 4 >> 2] = i5;
  HEAP32[i3 >> 2] = i4 + 8;
 } else __ZNSt3__16vectorIN4wasm6WalkerINS1_15RemoveUnusedBrsENS1_7VisitorIS3_vEEE4TaskENS_9allocatorIS7_EEE24__emplace_back_slow_pathIJRPFvPS3_PPNS1_10ExpressionEERSF_EEEvDpOT_(i7 + 4 | 0, i1, i2);
 STACKTOP = i8;
 return;
}

function __ZN4wasm6WalkerINS_15GetLocalCounterENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i7, i6, i5) {
 i7 = i7 | 0;
 i6 = i6 | 0;
 i5 = i5 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i8 = 0;
 i8 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i1 = i8 + 4 | 0;
 i2 = i8;
 HEAP32[i1 >> 2] = i6;
 HEAP32[i2 >> 2] = i5;
 i3 = i7 + 8 | 0;
 i4 = HEAP32[i3 >> 2] | 0;
 if (i4 >>> 0 < (HEAP32[i7 + 12 >> 2] | 0) >>> 0) {
  HEAP32[i4 >> 2] = i6;
  HEAP32[i4 + 4 >> 2] = i5;
  HEAP32[i3 >> 2] = i4 + 8;
 } else __ZNSt3__16vectorIN4wasm6WalkerINS1_15GetLocalCounterENS1_7VisitorIS3_vEEE4TaskENS_9allocatorIS7_EEE24__emplace_back_slow_pathIJRPFvPS3_PPNS1_10ExpressionEERSF_EEEvDpOT_(i7 + 4 | 0, i1, i2);
 STACKTOP = i8;
 return;
}

function __ZN4wasm6WalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i7, i6, i5) {
 i7 = i7 | 0;
 i6 = i6 | 0;
 i5 = i5 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i8 = 0;
 i8 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i1 = i8 + 4 | 0;
 i2 = i8;
 HEAP32[i1 >> 2] = i6;
 HEAP32[i2 >> 2] = i5;
 i3 = i7 + 8 | 0;
 i4 = HEAP32[i3 >> 2] | 0;
 if (i4 >>> 0 < (HEAP32[i7 + 12 >> 2] | 0) >>> 0) {
  HEAP32[i4 >> 2] = i6;
  HEAP32[i4 + 4 >> 2] = i5;
  HEAP32[i3 >> 2] = i4 + 8;
 } else __ZNSt3__16vectorIN4wasm6WalkerINS1_14SimplifyLocalsENS1_7VisitorIS3_vEEE4TaskENS_9allocatorIS7_EEE24__emplace_back_slow_pathIJRPFvPS3_PPNS1_10ExpressionEERSF_EEEvDpOT_(i7 + 4 | 0, i1, i2);
 STACKTOP = i8;
 return;
}

function __ZN4wasm6WalkerINS_14PostEmscriptenENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i7, i6, i5) {
 i7 = i7 | 0;
 i6 = i6 | 0;
 i5 = i5 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i8 = 0;
 i8 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i1 = i8 + 4 | 0;
 i2 = i8;
 HEAP32[i1 >> 2] = i6;
 HEAP32[i2 >> 2] = i5;
 i3 = i7 + 8 | 0;
 i4 = HEAP32[i3 >> 2] | 0;
 if (i4 >>> 0 < (HEAP32[i7 + 12 >> 2] | 0) >>> 0) {
  HEAP32[i4 >> 2] = i6;
  HEAP32[i4 + 4 >> 2] = i5;
  HEAP32[i3 >> 2] = i4 + 8;
 } else __ZNSt3__16vectorIN4wasm6WalkerINS1_14PostEmscriptenENS1_7VisitorIS3_vEEE4TaskENS_9allocatorIS7_EEE24__emplace_back_slow_pathIJRPFvPS3_PPNS1_10ExpressionEERSF_EEEvDpOT_(i7 + 4 | 0, i1, i2);
 STACKTOP = i8;
 return;
}

function __ZN4wasm6WalkerINS_14EffectAnalyzerENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i7, i6, i5) {
 i7 = i7 | 0;
 i6 = i6 | 0;
 i5 = i5 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i8 = 0;
 i8 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i1 = i8 + 4 | 0;
 i2 = i8;
 HEAP32[i1 >> 2] = i6;
 HEAP32[i2 >> 2] = i5;
 i3 = i7 + 8 | 0;
 i4 = HEAP32[i3 >> 2] | 0;
 if (i4 >>> 0 < (HEAP32[i7 + 12 >> 2] | 0) >>> 0) {
  HEAP32[i4 >> 2] = i6;
  HEAP32[i4 + 4 >> 2] = i5;
  HEAP32[i3 >> 2] = i4 + 8;
 } else __ZNSt3__16vectorIN4wasm6WalkerINS1_14EffectAnalyzerENS1_7VisitorIS3_vEEE4TaskENS_9allocatorIS7_EEE24__emplace_back_slow_pathIJRPFvPS3_PPNS1_10ExpressionEERSF_EEEvDpOT_(i7 + 4 | 0, i1, i2);
 STACKTOP = i8;
 return;
}

function __ZNSt3__18functionIFPN4wasm4PassEvEEaSEOS5_(i5, i4) {
 i5 = i5 | 0;
 i4 = i4 | 0;
 var i1 = 0, i2 = 0, i3 = 0;
 i3 = i5 + 16 | 0;
 i1 = HEAP32[i3 >> 2] | 0;
 if ((i1 | 0) != (i5 | 0)) {
  if (i1 | 0) FUNCTION_TABLE_vi[HEAP32[(HEAP32[i1 >> 2] | 0) + 20 >> 2] & 255](i1);
 } else FUNCTION_TABLE_vi[HEAP32[(HEAP32[i1 >> 2] | 0) + 16 >> 2] & 255](i1);
 HEAP32[i3 >> 2] = 0;
 i1 = i4 + 16 | 0;
 i2 = HEAP32[i1 >> 2] | 0;
 do if (i2) if ((i2 | 0) == (i4 | 0)) {
  HEAP32[i3 >> 2] = i5;
  i4 = HEAP32[i1 >> 2] | 0;
  FUNCTION_TABLE_vii[HEAP32[(HEAP32[i4 >> 2] | 0) + 12 >> 2] & 511](i4, i5);
  break;
 } else {
  HEAP32[i3 >> 2] = i2;
  HEAP32[i1 >> 2] = 0;
  break;
 } else HEAP32[i3 >> 2] = 0; while (0);
 return i5 | 0;
}

function __ZNSt3__16__treeINS_12__value_typeINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEN4wasm12PassRegistry8PassInfoEEENS_19__map_value_compareIS7_SB_NS_4lessIS7_EELb1EEENS5_ISB_EEE16__insert_node_atEPNS_16__tree_node_baseIPvEERSL_SL_(i4, i2, i3, i1) {
 i4 = i4 | 0;
 i2 = i2 | 0;
 i3 = i3 | 0;
 i1 = i1 | 0;
 HEAP32[i1 >> 2] = 0;
 HEAP32[i1 + 4 >> 2] = 0;
 HEAP32[i1 + 8 >> 2] = i2;
 HEAP32[i3 >> 2] = i1;
 i2 = HEAP32[i4 >> 2] | 0;
 if (HEAP32[i2 >> 2] | 0) {
  HEAP32[i4 >> 2] = HEAP32[i2 >> 2];
  i1 = HEAP32[i3 >> 2] | 0;
 }
 __ZNSt3__127__tree_balance_after_insertIPNS_16__tree_node_baseIPvEEEEvT_S5_(HEAP32[i4 + 4 >> 2] | 0, i1);
 i4 = i4 + 8 | 0;
 HEAP32[i4 >> 2] = (HEAP32[i4 >> 2] | 0) + 1;
 return;
}

function __ZNKSt3__17num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_getES4_S4_RNS_8ios_baseERjRf(i6, i1, i2, i4, i3, i5) {
 i6 = i6 | 0;
 i1 = i1 | 0;
 i2 = i2 | 0;
 i4 = i4 | 0;
 i3 = i3 | 0;
 i5 = i5 | 0;
 var i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0;
 i7 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i8 = i7 + 12 | 0;
 i9 = i7 + 8 | 0;
 i11 = i7 + 4 | 0;
 i10 = i7;
 HEAP32[i11 >> 2] = HEAP32[i1 >> 2];
 HEAP32[i10 >> 2] = HEAP32[i2 >> 2];
 HEAP32[i9 >> 2] = HEAP32[i11 >> 2];
 HEAP32[i8 >> 2] = HEAP32[i10 >> 2];
 i6 = __ZNKSt3__17num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE23__do_get_floating_pointIfEES4_S4_S4_RNS_8ios_baseERjRT_(i6, i9, i8, i4, i3, i5) | 0;
 STACKTOP = i7;
 return i6 | 0;
}

function __ZNKSt3__17num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_getES4_S4_RNS_8ios_baseERjRe(i6, i1, i2, i4, i3, i5) {
 i6 = i6 | 0;
 i1 = i1 | 0;
 i2 = i2 | 0;
 i4 = i4 | 0;
 i3 = i3 | 0;
 i5 = i5 | 0;
 var i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0;
 i7 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i8 = i7 + 12 | 0;
 i9 = i7 + 8 | 0;
 i11 = i7 + 4 | 0;
 i10 = i7;
 HEAP32[i11 >> 2] = HEAP32[i1 >> 2];
 HEAP32[i10 >> 2] = HEAP32[i2 >> 2];
 HEAP32[i9 >> 2] = HEAP32[i11 >> 2];
 HEAP32[i8 >> 2] = HEAP32[i10 >> 2];
 i6 = __ZNKSt3__17num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE23__do_get_floating_pointIeEES4_S4_S4_RNS_8ios_baseERjRT_(i6, i9, i8, i4, i3, i5) | 0;
 STACKTOP = i7;
 return i6 | 0;
}

function __ZNKSt3__17num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_getES4_S4_RNS_8ios_baseERjRd(i6, i1, i2, i4, i3, i5) {
 i6 = i6 | 0;
 i1 = i1 | 0;
 i2 = i2 | 0;
 i4 = i4 | 0;
 i3 = i3 | 0;
 i5 = i5 | 0;
 var i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0;
 i7 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i8 = i7 + 12 | 0;
 i9 = i7 + 8 | 0;
 i11 = i7 + 4 | 0;
 i10 = i7;
 HEAP32[i11 >> 2] = HEAP32[i1 >> 2];
 HEAP32[i10 >> 2] = HEAP32[i2 >> 2];
 HEAP32[i9 >> 2] = HEAP32[i11 >> 2];
 HEAP32[i8 >> 2] = HEAP32[i10 >> 2];
 i6 = __ZNKSt3__17num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE23__do_get_floating_pointIdEES4_S4_S4_RNS_8ios_baseERjRT_(i6, i9, i8, i4, i3, i5) | 0;
 STACKTOP = i7;
 return i6 | 0;
}

function __ZNKSt3__17num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_getES4_S4_RNS_8ios_baseERjRf(i6, i1, i2, i4, i3, i5) {
 i6 = i6 | 0;
 i1 = i1 | 0;
 i2 = i2 | 0;
 i4 = i4 | 0;
 i3 = i3 | 0;
 i5 = i5 | 0;
 var i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0;
 i7 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i8 = i7 + 12 | 0;
 i9 = i7 + 8 | 0;
 i11 = i7 + 4 | 0;
 i10 = i7;
 HEAP32[i11 >> 2] = HEAP32[i1 >> 2];
 HEAP32[i10 >> 2] = HEAP32[i2 >> 2];
 HEAP32[i9 >> 2] = HEAP32[i11 >> 2];
 HEAP32[i8 >> 2] = HEAP32[i10 >> 2];
 i6 = __ZNKSt3__17num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE23__do_get_floating_pointIfEES4_S4_S4_RNS_8ios_baseERjRT_(i6, i9, i8, i4, i3, i5) | 0;
 STACKTOP = i7;
 return i6 | 0;
}

function __ZNKSt3__17num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_getES4_S4_RNS_8ios_baseERjRe(i6, i1, i2, i4, i3, i5) {
 i6 = i6 | 0;
 i1 = i1 | 0;
 i2 = i2 | 0;
 i4 = i4 | 0;
 i3 = i3 | 0;
 i5 = i5 | 0;
 var i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0;
 i7 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i8 = i7 + 12 | 0;
 i9 = i7 + 8 | 0;
 i11 = i7 + 4 | 0;
 i10 = i7;
 HEAP32[i11 >> 2] = HEAP32[i1 >> 2];
 HEAP32[i10 >> 2] = HEAP32[i2 >> 2];
 HEAP32[i9 >> 2] = HEAP32[i11 >> 2];
 HEAP32[i8 >> 2] = HEAP32[i10 >> 2];
 i6 = __ZNKSt3__17num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE23__do_get_floating_pointIeEES4_S4_S4_RNS_8ios_baseERjRT_(i6, i9, i8, i4, i3, i5) | 0;
 STACKTOP = i7;
 return i6 | 0;
}

function __ZNKSt3__17num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_getES4_S4_RNS_8ios_baseERjRd(i6, i1, i2, i4, i3, i5) {
 i6 = i6 | 0;
 i1 = i1 | 0;
 i2 = i2 | 0;
 i4 = i4 | 0;
 i3 = i3 | 0;
 i5 = i5 | 0;
 var i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0;
 i7 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i8 = i7 + 12 | 0;
 i9 = i7 + 8 | 0;
 i11 = i7 + 4 | 0;
 i10 = i7;
 HEAP32[i11 >> 2] = HEAP32[i1 >> 2];
 HEAP32[i10 >> 2] = HEAP32[i2 >> 2];
 HEAP32[i9 >> 2] = HEAP32[i11 >> 2];
 HEAP32[i8 >> 2] = HEAP32[i10 >> 2];
 i6 = __ZNKSt3__17num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE23__do_get_floating_pointIdEES4_S4_S4_RNS_8ios_baseERjRT_(i6, i9, i8, i4, i3, i5) | 0;
 STACKTOP = i7;
 return i6 | 0;
}

function __ZN4wasm6WalkerINS_13ReorderLocalsENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i7, i6, i5) {
 i7 = i7 | 0;
 i6 = i6 | 0;
 i5 = i5 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i8 = 0;
 i8 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i1 = i8 + 4 | 0;
 i2 = i8;
 HEAP32[i1 >> 2] = i6;
 HEAP32[i2 >> 2] = i5;
 i3 = i7 + 8 | 0;
 i4 = HEAP32[i3 >> 2] | 0;
 if (i4 >>> 0 < (HEAP32[i7 + 12 >> 2] | 0) >>> 0) {
  HEAP32[i4 >> 2] = i6;
  HEAP32[i4 + 4 >> 2] = i5;
  HEAP32[i3 >> 2] = i4 + 8;
 } else __ZNSt3__16vectorIN4wasm6WalkerINS1_13ReorderLocalsENS1_7VisitorIS3_vEEE4TaskENS_9allocatorIS7_EEE24__emplace_back_slow_pathIJRPFvPS3_PPNS1_10ExpressionEERSF_EEEvDpOT_(i7 + 4 | 0, i1, i2);
 STACKTOP = i8;
 return;
}

function __ZNK4wasm7Literal8copysignERKS0_(i4, i6, i5) {
 i4 = i4 | 0;
 i6 = i6 | 0;
 i5 = i5 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i7 = 0;
 i7 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i1 = i7 + 16 | 0;
 i2 = i7;
 i3 = i6 + 8 | 0;
 if ((HEAP32[i6 >> 2] | 0) == 3) {
  i6 = HEAP32[i5 + 8 >> 2] & -2147483648 | HEAP32[i3 >> 2] & 2147483647;
  HEAP32[i1 >> 2] = 1;
  HEAP32[i1 + 8 >> 2] = i6;
  __ZN4wasm7Literal9castToF32Ev(i4, i1);
 } else {
  i6 = i3;
  i3 = HEAP32[i6 >> 2] | 0;
  i5 = HEAP32[i5 + 8 + 4 >> 2] & -2147483648 | HEAP32[i6 + 4 >> 2] & 2147483647;
  HEAP32[i2 >> 2] = 2;
  i6 = i2 + 8 | 0;
  HEAP32[i6 >> 2] = i3;
  HEAP32[i6 + 4 >> 2] = i5;
  __ZN4wasm7Literal9castToF64Ev(i4, i2);
 }
 STACKTOP = i7;
 return;
}

function __ZNSt3__114__split_bufferINS_6vectorINS1_IN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEENS5_IS7_Lj4096EEEEERNS5_IS9_Lj4096EEEED2Ev(i4) {
 i4 = i4 | 0;
 var i1 = 0, i2 = 0, i3 = 0;
 i1 = HEAP32[i4 + 4 >> 2] | 0;
 i2 = i4 + 8 | 0;
 while (1) {
  i3 = HEAP32[i2 >> 2] | 0;
  if ((i3 | 0) == (i1 | 0)) break;
  i3 = i3 + -16 | 0;
  HEAP32[i2 >> 2] = i3;
  __ZNSt3__113__vector_baseINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEENS5_IS7_Lj4096EEEED2Ev(i3);
 }
 i1 = HEAP32[i4 >> 2] | 0;
 if (i1 | 0) __ZN10__cxxabiv112_GLOBAL__N_15arenaILj4096EE10deallocateEPcj(HEAP32[HEAP32[i4 + 16 >> 2] >> 2] | 0, i1, (HEAP32[i4 + 12 >> 2] | 0) - i1 | 0);
 return;
}

function __ZNKSt3__17num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_getES4_S4_RNS_8ios_baseERjS8_(i6, i1, i2, i4, i3, i5) {
 i6 = i6 | 0;
 i1 = i1 | 0;
 i2 = i2 | 0;
 i4 = i4 | 0;
 i3 = i3 | 0;
 i5 = i5 | 0;
 var i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0;
 i7 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i8 = i7 + 12 | 0;
 i9 = i7 + 8 | 0;
 i11 = i7 + 4 | 0;
 i10 = i7;
 HEAP32[i11 >> 2] = HEAP32[i1 >> 2];
 HEAP32[i10 >> 2] = HEAP32[i2 >> 2];
 HEAP32[i9 >> 2] = HEAP32[i11 >> 2];
 HEAP32[i8 >> 2] = HEAP32[i10 >> 2];
 i6 = __ZNKSt3__17num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE17__do_get_unsignedIjEES4_S4_S4_RNS_8ios_baseERjRT_(i6, i9, i8, i4, i3, i5) | 0;
 STACKTOP = i7;
 return i6 | 0;
}

function __ZNKSt3__17num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_getES4_S4_RNS_8ios_baseERjS8_(i6, i1, i2, i4, i3, i5) {
 i6 = i6 | 0;
 i1 = i1 | 0;
 i2 = i2 | 0;
 i4 = i4 | 0;
 i3 = i3 | 0;
 i5 = i5 | 0;
 var i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0;
 i7 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i8 = i7 + 12 | 0;
 i9 = i7 + 8 | 0;
 i11 = i7 + 4 | 0;
 i10 = i7;
 HEAP32[i11 >> 2] = HEAP32[i1 >> 2];
 HEAP32[i10 >> 2] = HEAP32[i2 >> 2];
 HEAP32[i9 >> 2] = HEAP32[i11 >> 2];
 HEAP32[i8 >> 2] = HEAP32[i10 >> 2];
 i6 = __ZNKSt3__17num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE17__do_get_unsignedIjEES4_S4_S4_RNS_8ios_baseERjRT_(i6, i9, i8, i4, i3, i5) | 0;
 STACKTOP = i7;
 return i6 | 0;
}

function __ZN4wasm6WalkerINS_11MergeBlocksENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i7, i6, i5) {
 i7 = i7 | 0;
 i6 = i6 | 0;
 i5 = i5 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i8 = 0;
 i8 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i1 = i8 + 4 | 0;
 i2 = i8;
 HEAP32[i1 >> 2] = i6;
 HEAP32[i2 >> 2] = i5;
 i3 = i7 + 8 | 0;
 i4 = HEAP32[i3 >> 2] | 0;
 if (i4 >>> 0 < (HEAP32[i7 + 12 >> 2] | 0) >>> 0) {
  HEAP32[i4 >> 2] = i6;
  HEAP32[i4 + 4 >> 2] = i5;
  HEAP32[i3 >> 2] = i4 + 8;
 } else __ZNSt3__16vectorIN4wasm6WalkerINS1_11MergeBlocksENS1_7VisitorIS3_vEEE4TaskENS_9allocatorIS7_EEE24__emplace_back_slow_pathIJRPFvPS3_PPNS1_10ExpressionEERSF_EEEvDpOT_(i7 + 4 | 0, i1, i2);
 STACKTOP = i8;
 return;
}

function __ZN4wasm6WalkerINS_11BreakSeekerENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i7, i6, i5) {
 i7 = i7 | 0;
 i6 = i6 | 0;
 i5 = i5 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i8 = 0;
 i8 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i1 = i8 + 4 | 0;
 i2 = i8;
 HEAP32[i1 >> 2] = i6;
 HEAP32[i2 >> 2] = i5;
 i3 = i7 + 8 | 0;
 i4 = HEAP32[i3 >> 2] | 0;
 if (i4 >>> 0 < (HEAP32[i7 + 12 >> 2] | 0) >>> 0) {
  HEAP32[i4 >> 2] = i6;
  HEAP32[i4 + 4 >> 2] = i5;
  HEAP32[i3 >> 2] = i4 + 8;
 } else __ZNSt3__16vectorIN4wasm6WalkerINS1_11BreakSeekerENS1_7VisitorIS3_vEEE4TaskENS_9allocatorIS7_EEE24__emplace_back_slow_pathIJRPFvPS3_PPNS1_10ExpressionEERSF_EEEvDpOT_(i7 + 4 | 0, i1, i2);
 STACKTOP = i8;
 return;
}

function __ZNKSt3__17num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_getES4_S4_RNS_8ios_baseERjRy(i6, i1, i2, i4, i3, i5) {
 i6 = i6 | 0;
 i1 = i1 | 0;
 i2 = i2 | 0;
 i4 = i4 | 0;
 i3 = i3 | 0;
 i5 = i5 | 0;
 var i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0;
 i7 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i8 = i7 + 12 | 0;
 i9 = i7 + 8 | 0;
 i11 = i7 + 4 | 0;
 i10 = i7;
 HEAP32[i11 >> 2] = HEAP32[i1 >> 2];
 HEAP32[i10 >> 2] = HEAP32[i2 >> 2];
 HEAP32[i9 >> 2] = HEAP32[i11 >> 2];
 HEAP32[i8 >> 2] = HEAP32[i10 >> 2];
 i6 = __ZNKSt3__17num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE17__do_get_unsignedIyEES4_S4_S4_RNS_8ios_baseERjRT_(i6, i9, i8, i4, i3, i5) | 0;
 STACKTOP = i7;
 return i6 | 0;
}

function __ZNKSt3__17num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_getES4_S4_RNS_8ios_baseERjRt(i6, i1, i2, i4, i3, i5) {
 i6 = i6 | 0;
 i1 = i1 | 0;
 i2 = i2 | 0;
 i4 = i4 | 0;
 i3 = i3 | 0;
 i5 = i5 | 0;
 var i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0;
 i7 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i8 = i7 + 12 | 0;
 i9 = i7 + 8 | 0;
 i11 = i7 + 4 | 0;
 i10 = i7;
 HEAP32[i11 >> 2] = HEAP32[i1 >> 2];
 HEAP32[i10 >> 2] = HEAP32[i2 >> 2];
 HEAP32[i9 >> 2] = HEAP32[i11 >> 2];
 HEAP32[i8 >> 2] = HEAP32[i10 >> 2];
 i6 = __ZNKSt3__17num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE17__do_get_unsignedItEES4_S4_S4_RNS_8ios_baseERjRT_(i6, i9, i8, i4, i3, i5) | 0;
 STACKTOP = i7;
 return i6 | 0;
}

function __ZNKSt3__17num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_getES4_S4_RNS_8ios_baseERjRm(i6, i1, i2, i4, i3, i5) {
 i6 = i6 | 0;
 i1 = i1 | 0;
 i2 = i2 | 0;
 i4 = i4 | 0;
 i3 = i3 | 0;
 i5 = i5 | 0;
 var i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0;
 i7 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i8 = i7 + 12 | 0;
 i9 = i7 + 8 | 0;
 i11 = i7 + 4 | 0;
 i10 = i7;
 HEAP32[i11 >> 2] = HEAP32[i1 >> 2];
 HEAP32[i10 >> 2] = HEAP32[i2 >> 2];
 HEAP32[i9 >> 2] = HEAP32[i11 >> 2];
 HEAP32[i8 >> 2] = HEAP32[i10 >> 2];
 i6 = __ZNKSt3__17num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE17__do_get_unsignedImEES4_S4_S4_RNS_8ios_baseERjRT_(i6, i9, i8, i4, i3, i5) | 0;
 STACKTOP = i7;
 return i6 | 0;
}

function __ZNKSt3__17num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_getES4_S4_RNS_8ios_baseERjRy(i6, i1, i2, i4, i3, i5) {
 i6 = i6 | 0;
 i1 = i1 | 0;
 i2 = i2 | 0;
 i4 = i4 | 0;
 i3 = i3 | 0;
 i5 = i5 | 0;
 var i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0;
 i7 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i8 = i7 + 12 | 0;
 i9 = i7 + 8 | 0;
 i11 = i7 + 4 | 0;
 i10 = i7;
 HEAP32[i11 >> 2] = HEAP32[i1 >> 2];
 HEAP32[i10 >> 2] = HEAP32[i2 >> 2];
 HEAP32[i9 >> 2] = HEAP32[i11 >> 2];
 HEAP32[i8 >> 2] = HEAP32[i10 >> 2];
 i6 = __ZNKSt3__17num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE17__do_get_unsignedIyEES4_S4_S4_RNS_8ios_baseERjRT_(i6, i9, i8, i4, i3, i5) | 0;
 STACKTOP = i7;
 return i6 | 0;
}

function __ZNKSt3__17num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_getES4_S4_RNS_8ios_baseERjRt(i6, i1, i2, i4, i3, i5) {
 i6 = i6 | 0;
 i1 = i1 | 0;
 i2 = i2 | 0;
 i4 = i4 | 0;
 i3 = i3 | 0;
 i5 = i5 | 0;
 var i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0;
 i7 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i8 = i7 + 12 | 0;
 i9 = i7 + 8 | 0;
 i11 = i7 + 4 | 0;
 i10 = i7;
 HEAP32[i11 >> 2] = HEAP32[i1 >> 2];
 HEAP32[i10 >> 2] = HEAP32[i2 >> 2];
 HEAP32[i9 >> 2] = HEAP32[i11 >> 2];
 HEAP32[i8 >> 2] = HEAP32[i10 >> 2];
 i6 = __ZNKSt3__17num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE17__do_get_unsignedItEES4_S4_S4_RNS_8ios_baseERjRT_(i6, i9, i8, i4, i3, i5) | 0;
 STACKTOP = i7;
 return i6 | 0;
}

function __ZNKSt3__17num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_getES4_S4_RNS_8ios_baseERjRm(i6, i1, i2, i4, i3, i5) {
 i6 = i6 | 0;
 i1 = i1 | 0;
 i2 = i2 | 0;
 i4 = i4 | 0;
 i3 = i3 | 0;
 i5 = i5 | 0;
 var i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0;
 i7 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i8 = i7 + 12 | 0;
 i9 = i7 + 8 | 0;
 i11 = i7 + 4 | 0;
 i10 = i7;
 HEAP32[i11 >> 2] = HEAP32[i1 >> 2];
 HEAP32[i10 >> 2] = HEAP32[i2 >> 2];
 HEAP32[i9 >> 2] = HEAP32[i11 >> 2];
 HEAP32[i8 >> 2] = HEAP32[i10 >> 2];
 i6 = __ZNKSt3__17num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE17__do_get_unsignedImEES4_S4_S4_RNS_8ios_baseERjRT_(i6, i9, i8, i4, i3, i5) | 0;
 STACKTOP = i7;
 return i6 | 0;
}

function __ZNSt3__113__vector_baseINS_6vectorINS1_IN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEENS5_IS7_Lj4096EEEEENS5_IS9_Lj4096EEEED2Ev(i4) {
 i4 = i4 | 0;
 var i1 = 0, i2 = 0, i3 = 0;
 i1 = HEAP32[i4 >> 2] | 0;
 if (i1 | 0) {
  i2 = i4 + 4 | 0;
  while (1) {
   i3 = HEAP32[i2 >> 2] | 0;
   if ((i3 | 0) == (i1 | 0)) break;
   i3 = i3 + -16 | 0;
   HEAP32[i2 >> 2] = i3;
   __ZNSt3__113__vector_baseINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEENS5_IS7_Lj4096EEEED2Ev(i3);
  }
  i3 = HEAP32[i4 >> 2] | 0;
  __ZN10__cxxabiv112_GLOBAL__N_15arenaILj4096EE10deallocateEPcj(HEAP32[i4 + 12 >> 2] | 0, i3, (HEAP32[i4 + 8 >> 2] | 0) - i3 | 0);
 }
 return;
}

function __ZNKSt3__17num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_getES4_S4_RNS_8ios_baseERjRx(i6, i1, i2, i4, i3, i5) {
 i6 = i6 | 0;
 i1 = i1 | 0;
 i2 = i2 | 0;
 i4 = i4 | 0;
 i3 = i3 | 0;
 i5 = i5 | 0;
 var i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0;
 i7 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i8 = i7 + 12 | 0;
 i9 = i7 + 8 | 0;
 i11 = i7 + 4 | 0;
 i10 = i7;
 HEAP32[i11 >> 2] = HEAP32[i1 >> 2];
 HEAP32[i10 >> 2] = HEAP32[i2 >> 2];
 HEAP32[i9 >> 2] = HEAP32[i11 >> 2];
 HEAP32[i8 >> 2] = HEAP32[i10 >> 2];
 i6 = __ZNKSt3__17num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE15__do_get_signedIxEES4_S4_S4_RNS_8ios_baseERjRT_(i6, i9, i8, i4, i3, i5) | 0;
 STACKTOP = i7;
 return i6 | 0;
}

function __ZNKSt3__17num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_getES4_S4_RNS_8ios_baseERjRl(i6, i1, i2, i4, i3, i5) {
 i6 = i6 | 0;
 i1 = i1 | 0;
 i2 = i2 | 0;
 i4 = i4 | 0;
 i3 = i3 | 0;
 i5 = i5 | 0;
 var i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0;
 i7 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i8 = i7 + 12 | 0;
 i9 = i7 + 8 | 0;
 i11 = i7 + 4 | 0;
 i10 = i7;
 HEAP32[i11 >> 2] = HEAP32[i1 >> 2];
 HEAP32[i10 >> 2] = HEAP32[i2 >> 2];
 HEAP32[i9 >> 2] = HEAP32[i11 >> 2];
 HEAP32[i8 >> 2] = HEAP32[i10 >> 2];
 i6 = __ZNKSt3__17num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE15__do_get_signedIlEES4_S4_S4_RNS_8ios_baseERjRT_(i6, i9, i8, i4, i3, i5) | 0;
 STACKTOP = i7;
 return i6 | 0;
}

function __ZNKSt3__17num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_getES4_S4_RNS_8ios_baseERjRx(i6, i1, i2, i4, i3, i5) {
 i6 = i6 | 0;
 i1 = i1 | 0;
 i2 = i2 | 0;
 i4 = i4 | 0;
 i3 = i3 | 0;
 i5 = i5 | 0;
 var i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0;
 i7 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i8 = i7 + 12 | 0;
 i9 = i7 + 8 | 0;
 i11 = i7 + 4 | 0;
 i10 = i7;
 HEAP32[i11 >> 2] = HEAP32[i1 >> 2];
 HEAP32[i10 >> 2] = HEAP32[i2 >> 2];
 HEAP32[i9 >> 2] = HEAP32[i11 >> 2];
 HEAP32[i8 >> 2] = HEAP32[i10 >> 2];
 i6 = __ZNKSt3__17num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE15__do_get_signedIxEES4_S4_S4_RNS_8ios_baseERjRT_(i6, i9, i8, i4, i3, i5) | 0;
 STACKTOP = i7;
 return i6 | 0;
}

function __ZNKSt3__17num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_getES4_S4_RNS_8ios_baseERjRl(i6, i1, i2, i4, i3, i5) {
 i6 = i6 | 0;
 i1 = i1 | 0;
 i2 = i2 | 0;
 i4 = i4 | 0;
 i3 = i3 | 0;
 i5 = i5 | 0;
 var i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0;
 i7 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i8 = i7 + 12 | 0;
 i9 = i7 + 8 | 0;
 i11 = i7 + 4 | 0;
 i10 = i7;
 HEAP32[i11 >> 2] = HEAP32[i1 >> 2];
 HEAP32[i10 >> 2] = HEAP32[i2 >> 2];
 HEAP32[i9 >> 2] = HEAP32[i11 >> 2];
 HEAP32[i8 >> 2] = HEAP32[i10 >> 2];
 i6 = __ZNKSt3__17num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE15__do_get_signedIlEES4_S4_S4_RNS_8ios_baseERjRT_(i6, i9, i8, i4, i3, i5) | 0;
 STACKTOP = i7;
 return i6 | 0;
}

function __ZNSt3__16__treeINS_12__value_typeIN4wasm4NameENS_6vectorINS2_14SimplifyLocals10BlockBreakENS_9allocatorIS6_EEEEEENS_19__map_value_compareIS3_SA_NS_4lessIS3_EELb1EEENS7_ISA_EEE16__insert_node_atEPNS_16__tree_node_baseIPvEERSK_SK_(i4, i2, i3, i1) {
 i4 = i4 | 0;
 i2 = i2 | 0;
 i3 = i3 | 0;
 i1 = i1 | 0;
 HEAP32[i1 >> 2] = 0;
 HEAP32[i1 + 4 >> 2] = 0;
 HEAP32[i1 + 8 >> 2] = i2;
 HEAP32[i3 >> 2] = i1;
 i2 = HEAP32[i4 >> 2] | 0;
 if (HEAP32[i2 >> 2] | 0) {
  HEAP32[i4 >> 2] = HEAP32[i2 >> 2];
  i1 = HEAP32[i3 >> 2] | 0;
 }
 __ZNSt3__127__tree_balance_after_insertIPNS_16__tree_node_baseIPvEEEEvT_S5_(HEAP32[i4 + 4 >> 2] | 0, i1);
 i4 = i4 + 8 | 0;
 HEAP32[i4 >> 2] = (HEAP32[i4 >> 2] | 0) + 1;
 return;
}

function _scalbn(d1, i3) {
 d1 = +d1;
 i3 = i3 | 0;
 var i2 = 0;
 if ((i3 | 0) > 1023) {
  d1 = d1 * 8988465674311579538646525.0e283;
  i2 = i3 + -1023 | 0;
  if ((i2 | 0) > 1023) {
   i2 = i3 + -2046 | 0;
   i2 = (i2 | 0) > 1023 ? 1023 : i2;
   d1 = d1 * 8988465674311579538646525.0e283;
  }
 } else if ((i3 | 0) < -1022) {
  d1 = d1 * 2.2250738585072014e-308;
  i2 = i3 + 1022 | 0;
  if ((i2 | 0) < -1022) {
   i2 = i3 + 2044 | 0;
   i2 = (i2 | 0) < -1022 ? -1022 : i2;
   d1 = d1 * 2.2250738585072014e-308;
  }
 } else i2 = i3;
 i2 = _bitshift64Shl(i2 + 1023 | 0, 0, 52) | 0;
 i3 = tempRet0;
 HEAP32[tempDoublePtr >> 2] = i2;
 HEAP32[tempDoublePtr + 4 >> 2] = i3;
 return +(d1 * +HEAPF64[tempDoublePtr >> 3]);
}

function __ZNSt3__113basic_ostreamIwNS_11char_traitsIwEEE6sentryD2Ev(i1) {
 i1 = i1 | 0;
 var i2 = 0;
 i1 = i1 + 4 | 0;
 i2 = HEAP32[i1 >> 2] | 0;
 i2 = i2 + (HEAP32[(HEAP32[i2 >> 2] | 0) + -12 >> 2] | 0) | 0;
 if ((((HEAP32[i2 + 24 >> 2] | 0 ? (HEAP32[i2 + 16 >> 2] | 0) == 0 : 0) ? HEAP32[i2 + 4 >> 2] & 8192 | 0 : 0) ? !(__ZSt18uncaught_exceptionv() | 0) : 0) ? (i2 = HEAP32[i1 >> 2] | 0, i2 = HEAP32[i2 + (HEAP32[(HEAP32[i2 >> 2] | 0) + -12 >> 2] | 0) + 24 >> 2] | 0, (FUNCTION_TABLE_ii[HEAP32[(HEAP32[i2 >> 2] | 0) + 24 >> 2] & 127](i2) | 0) == -1) : 0) {
  i2 = HEAP32[i1 >> 2] | 0;
  i2 = i2 + (HEAP32[(HEAP32[i2 >> 2] | 0) + -12 >> 2] | 0) + 16 | 0;
  HEAP32[i2 >> 2] = HEAP32[i2 >> 2] | 1;
 }
 return;
}

function __ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEE6sentryD2Ev(i1) {
 i1 = i1 | 0;
 var i2 = 0;
 i1 = i1 + 4 | 0;
 i2 = HEAP32[i1 >> 2] | 0;
 i2 = i2 + (HEAP32[(HEAP32[i2 >> 2] | 0) + -12 >> 2] | 0) | 0;
 if ((((HEAP32[i2 + 24 >> 2] | 0 ? (HEAP32[i2 + 16 >> 2] | 0) == 0 : 0) ? HEAP32[i2 + 4 >> 2] & 8192 | 0 : 0) ? !(__ZSt18uncaught_exceptionv() | 0) : 0) ? (i2 = HEAP32[i1 >> 2] | 0, i2 = HEAP32[i2 + (HEAP32[(HEAP32[i2 >> 2] | 0) + -12 >> 2] | 0) + 24 >> 2] | 0, (FUNCTION_TABLE_ii[HEAP32[(HEAP32[i2 >> 2] | 0) + 24 >> 2] & 127](i2) | 0) == -1) : 0) {
  i2 = HEAP32[i1 >> 2] | 0;
  i2 = i2 + (HEAP32[(HEAP32[i2 >> 2] | 0) + -12 >> 2] | 0) + 16 | 0;
  HEAP32[i2 >> 2] = HEAP32[i2 >> 2] | 1;
 }
 return;
}

function __ZN4wasm22SExpressionWasmBuilder10makeBinaryERNS_7ElementENS_8BinaryOpENS_8WasmTypeE(i3, i2, i1, i4) {
 i3 = i3 | 0;
 i2 = i2 | 0;
 i1 = i1 | 0;
 i4 = i4 | 0;
 i4 = __ZN10MixedArena5allocIN4wasm6BinaryEEEPT_v(HEAP32[i3 + 4 >> 2] | 0) | 0;
 HEAP32[i4 + 8 >> 2] = i1;
 i1 = __ZN4wasm7Element4listEv(i2) | 0;
 i1 = __ZN4wasm22SExpressionWasmBuilder15parseExpressionERNS_7ElementE(i3, HEAP32[(HEAP32[i1 >> 2] | 0) + 4 >> 2] | 0) | 0;
 HEAP32[i4 + 12 >> 2] = i1;
 i2 = __ZN4wasm7Element4listEv(i2) | 0;
 i3 = __ZN4wasm22SExpressionWasmBuilder15parseExpressionERNS_7ElementE(i3, HEAP32[(HEAP32[i2 >> 2] | 0) + 8 >> 2] | 0) | 0;
 HEAP32[i4 + 16 >> 2] = i3;
 __ZN4wasm6Binary8finalizeEv(i4);
 return i4 | 0;
}

function __ZN4wasm6WalkerINS_6VacuumENS_7VisitorIS1_vEEE8pushTaskEPFvPS1_PPNS_10ExpressionEES8_(i7, i6, i5) {
 i7 = i7 | 0;
 i6 = i6 | 0;
 i5 = i5 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i8 = 0;
 i8 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i1 = i8 + 4 | 0;
 i2 = i8;
 HEAP32[i1 >> 2] = i6;
 HEAP32[i2 >> 2] = i5;
 i3 = i7 + 8 | 0;
 i4 = HEAP32[i3 >> 2] | 0;
 if (i4 >>> 0 < (HEAP32[i7 + 12 >> 2] | 0) >>> 0) {
  HEAP32[i4 >> 2] = i6;
  HEAP32[i4 + 4 >> 2] = i5;
  HEAP32[i3 >> 2] = i4 + 8;
 } else __ZNSt3__16vectorIN4wasm6WalkerINS1_6VacuumENS1_7VisitorIS3_vEEE4TaskENS_9allocatorIS7_EEE24__emplace_back_slow_pathIJRPFvPS3_PPNS1_10ExpressionEERSF_EEEvDpOT_(i7 + 4 | 0, i1, i2);
 STACKTOP = i8;
 return;
}

function __ZN4wasm6ThreadC2Ev(i4) {
 i4 = i4 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i5 = 0;
 i5 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i1 = i5;
 HEAP32[i4 + 104 >> 2] = 0;
 i2 = i4;
 i3 = i2 + 80 | 0;
 do {
  HEAP32[i2 >> 2] = 0;
  i2 = i2 + 4 | 0;
 } while ((i2 | 0) < (i3 | 0));
 HEAP8[i4 + 80 >> 0] = 0;
 __ZN4wasm10ThreadPool3getEv() | 0;
 i3 = HEAP32[9171] | 0;
 if (i3 | 0 ? HEAP8[i3 + 12 >> 0] | 0 : 0) ___assert_fail(26383, 26338, 48, 26415);
 i3 = __Znwj(4) | 0;
 HEAP32[i1 >> 2] = i4;
 __ZNSt3__16threadC2IRFvPvEJPN4wasm6ThreadEEvEEOT_DpOT0_(i3, 216, i1);
 i1 = HEAP32[i4 >> 2] | 0;
 HEAP32[i4 >> 2] = i3;
 if (i1 | 0) {
  __ZNSt3__16threadD2Ev(i1);
  __ZdlPv(i1);
 }
 STACKTOP = i5;
 return;
}

function __ZNSt3__111__stdoutbufIwEC2EP8_IO_FILEP11__mbstate_t(i3, i1, i2) {
 i3 = i3 | 0;
 i1 = i1 | 0;
 i2 = i2 | 0;
 var i4 = 0, i5 = 0, i6 = 0;
 i4 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i6 = i4 + 4 | 0;
 i5 = i4;
 __ZNSt3__115basic_streambufIwNS_11char_traitsIwEEEC2Ev(i3);
 HEAP32[i3 >> 2] = 8820;
 HEAP32[i3 + 32 >> 2] = i1;
 __ZNSt3__16localeC2ERKS0_(i6, i3 + 4 | 0);
 HEAP32[i5 >> 2] = HEAP32[i6 >> 2];
 i1 = __ZNKSt3__16locale9use_facetERNS0_2idE(i5, 40176) | 0;
 __ZNSt3__16localeD2Ev(i5);
 HEAP32[i3 + 36 >> 2] = i1;
 HEAP32[i3 + 40 >> 2] = i2;
 i2 = (FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 28 >> 2] & 127](i1) | 0) & 1;
 HEAP8[i3 + 44 >> 0] = i2;
 STACKTOP = i4;
 return;
}

function __ZNSt3__111__stdoutbufIcEC2EP8_IO_FILEP11__mbstate_t(i3, i1, i2) {
 i3 = i3 | 0;
 i1 = i1 | 0;
 i2 = i2 | 0;
 var i4 = 0, i5 = 0, i6 = 0;
 i4 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i6 = i4 + 4 | 0;
 i5 = i4;
 __ZNSt3__115basic_streambufIcNS_11char_traitsIcEEEC2Ev(i3);
 HEAP32[i3 >> 2] = 8692;
 HEAP32[i3 + 32 >> 2] = i1;
 __ZNSt3__16localeC2ERKS0_(i6, i3 + 4 | 0);
 HEAP32[i5 >> 2] = HEAP32[i6 >> 2];
 i1 = __ZNKSt3__16locale9use_facetERNS0_2idE(i5, 40168) | 0;
 __ZNSt3__16localeD2Ev(i5);
 HEAP32[i3 + 36 >> 2] = i1;
 HEAP32[i3 + 40 >> 2] = i2;
 i2 = (FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 28 >> 2] & 127](i1) | 0) & 1;
 HEAP8[i3 + 44 >> 0] = i2;
 STACKTOP = i4;
 return;
}

function __ZNSt3__16__treeIjNS_4lessIjEENS_9allocatorIjEEE15__insert_uniqueERKj(i6, i5, i4) {
 i6 = i6 | 0;
 i5 = i5 | 0;
 i4 = i4 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i7 = 0;
 i7 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i3 = i7;
 i2 = __ZNSt3__16__treeIjNS_4lessIjEENS_9allocatorIjEEE12__find_equalIjEERPNS_16__tree_node_baseIPvEESB_RKT_(i5, i3, i4) | 0;
 i1 = HEAP32[i2 >> 2] | 0;
 if (!i1) {
  i1 = __Znwj(20) | 0;
  HEAP32[i1 + 16 >> 2] = HEAP32[i4 >> 2];
  __ZNSt3__16__treeIjNS_4lessIjEENS_9allocatorIjEEE16__insert_node_atEPNS_16__tree_node_baseIPvEERS9_S9_(i5, HEAP32[i3 >> 2] | 0, i2, i1);
  i2 = 1;
 } else i2 = 0;
 HEAP32[i6 >> 2] = i1;
 HEAP8[i6 + 4 >> 0] = i2;
 STACKTOP = i7;
 return;
}

function __ZNKSt3__18time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE13__get_12_hourERiRS4_S4_RjRKNS_5ctypeIwEE(i1, i7, i2, i4, i6, i3) {
 i1 = i1 | 0;
 i7 = i7 | 0;
 i2 = i2 | 0;
 i4 = i4 | 0;
 i6 = i6 | 0;
 i3 = i3 | 0;
 var i5 = 0, i8 = 0;
 i5 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i1 = i5 + 4 | 0;
 i8 = i5;
 HEAP32[i8 >> 2] = HEAP32[i4 >> 2];
 HEAP32[i1 >> 2] = HEAP32[i8 >> 2];
 i1 = __ZNSt3__120__get_up_to_n_digitsIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEEEiRT0_S5_RjRKNS_5ctypeIT_EEi(i2, i1, i6, i3, 2) | 0;
 i2 = HEAP32[i6 >> 2] | 0;
 if ((i1 + -1 | 0) >>> 0 < 12 & (i2 & 4 | 0) == 0) HEAP32[i7 >> 2] = i1; else HEAP32[i6 >> 2] = i2 | 4;
 STACKTOP = i5;
 return;
}

function __ZNKSt3__18time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE13__get_12_hourERiRS4_S4_RjRKNS_5ctypeIcEE(i1, i7, i2, i4, i6, i3) {
 i1 = i1 | 0;
 i7 = i7 | 0;
 i2 = i2 | 0;
 i4 = i4 | 0;
 i6 = i6 | 0;
 i3 = i3 | 0;
 var i5 = 0, i8 = 0;
 i5 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i1 = i5 + 4 | 0;
 i8 = i5;
 HEAP32[i8 >> 2] = HEAP32[i4 >> 2];
 HEAP32[i1 >> 2] = HEAP32[i8 >> 2];
 i1 = __ZNSt3__120__get_up_to_n_digitsIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEEEiRT0_S5_RjRKNS_5ctypeIT_EEi(i2, i1, i6, i3, 2) | 0;
 i2 = HEAP32[i6 >> 2] | 0;
 if ((i1 + -1 | 0) >>> 0 < 12 & (i2 & 4 | 0) == 0) HEAP32[i7 >> 2] = i1; else HEAP32[i6 >> 2] = i2 | 4;
 STACKTOP = i5;
 return;
}

function __ZNSt3__114__num_put_base18__identify_paddingEPcS1_RKNS_8ios_baseE(i1, i3, i2) {
 i1 = i1 | 0;
 i3 = i3 | 0;
 i2 = i2 | 0;
 var i4 = 0;
 L1 : do switch (HEAP32[i2 + 4 >> 2] & 176 | 0) {
 case 16:
  {
   i2 = HEAP8[i1 >> 0] | 0;
   switch (i2 << 24 >> 24) {
   case 43:
   case 45:
    {
     i1 = i1 + 1 | 0;
     break L1;
    }
   default:
    {}
   }
   if ((i3 - i1 | 0) > 1 & i2 << 24 >> 24 == 48) {
    switch (HEAP8[i1 + 1 >> 0] | 0) {
    case 88:
    case 120:
     break;
    default:
     {
      i4 = 7;
      break L1;
     }
    }
    i1 = i1 + 2 | 0;
   } else i4 = 7;
   break;
  }
 case 32:
  {
   i1 = i3;
   break;
  }
 default:
  i4 = 7;
 } while (0);
 return i1 | 0;
}

function __ZZN4wasm6WalkerINS_14PostEmscriptenENS_7VisitorIS1_vEEE9startWalkEPNS_6ModuleEENKUlvE_clEv(i3) {
 i3 = i3 | 0;
 var i1 = 0, i2 = 0, i4 = 0, i5 = 0;
 i2 = HEAP32[i3 + 4 >> 2] | 0;
 i1 = HEAP32[i2 >> 2] | 0;
 HEAP32[i2 >> 2] = i1 + 1;
 i2 = i3 + 8 | 0;
 if (i1 >>> 0 < (HEAP32[i2 >> 2] | 0) >>> 0) {
  i4 = HEAP32[(HEAP32[(HEAP32[HEAP32[i3 + 12 >> 2] >> 2] | 0) + 36 >> 2] | 0) + (i1 << 2) >> 2] | 0;
  i5 = HEAP32[i3 >> 2] | 0;
  i3 = i5 + 32 | 0;
  HEAP32[i3 >> 2] = i4;
  __ZN4wasm6WalkerINS_14PostEmscriptenENS_7VisitorIS1_vEEE4walkERPNS_10ExpressionE(i5 + 16 | 0, i4 + 36 | 0);
  HEAP32[i3 >> 2] = 0;
  i1 = (i1 + 1 | 0) == (HEAP32[i2 >> 2] | 0) & 1;
 } else i1 = 1;
 return i1 | 0;
}

function __ZN4wasm6ThreadD2Ev(i2) {
 i2 = i2 | 0;
 var i1 = 0, i3 = 0;
 __ZN4wasm10ThreadPool3getEv() | 0;
 i1 = HEAP32[9171] | 0;
 if (i1 | 0 ? HEAP8[i1 + 12 >> 0] | 0 : 0) ___assert_fail(26383, 26338, 53, 26448);
 i1 = i2 + 4 | 0;
 __ZNSt3__15mutex4lockEv(i1);
 HEAP8[i2 + 80 >> 0] = 1;
 i3 = i2 + 32 | 0;
 __ZNSt3__118condition_variable10notify_oneEv(i3);
 __ZNSt3__15mutex6unlockEv(i1);
 __ZNSt3__16thread4joinEv(HEAP32[i2 >> 2] | 0);
 __ZNSt3__18functionIFN4wasm15ThreadWorkStateEvEED2Ev(i2 + 88 | 0);
 __ZNSt3__118condition_variableD2Ev(i3);
 __ZNSt3__15mutexD2Ev(i1);
 i1 = HEAP32[i2 >> 2] | 0;
 HEAP32[i2 >> 2] = 0;
 if (i1 | 0) {
  __ZNSt3__16threadD2Ev(i1);
  __ZdlPv(i1);
 }
 return;
}

function __ZNKSt3__18time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE9__get_dayERiRS4_S4_RjRKNS_5ctypeIwEE(i1, i6, i2, i4, i7, i3) {
 i1 = i1 | 0;
 i6 = i6 | 0;
 i2 = i2 | 0;
 i4 = i4 | 0;
 i7 = i7 | 0;
 i3 = i3 | 0;
 var i5 = 0, i8 = 0;
 i5 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i1 = i5 + 4 | 0;
 i8 = i5;
 HEAP32[i8 >> 2] = HEAP32[i4 >> 2];
 HEAP32[i1 >> 2] = HEAP32[i8 >> 2];
 i1 = __ZNSt3__120__get_up_to_n_digitsIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEEEiRT0_S5_RjRKNS_5ctypeIT_EEi(i2, i1, i7, i3, 2) | 0;
 i2 = HEAP32[i7 >> 2] | 0;
 if ((i1 + -1 | 0) >>> 0 < 31 & (i2 & 4 | 0) == 0) HEAP32[i6 >> 2] = i1; else HEAP32[i7 >> 2] = i2 | 4;
 STACKTOP = i5;
 return;
}

function __ZNKSt3__18time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE18__get_day_year_numERiRS4_S4_RjRKNS_5ctypeIwEE(i1, i6, i2, i4, i7, i3) {
 i1 = i1 | 0;
 i6 = i6 | 0;
 i2 = i2 | 0;
 i4 = i4 | 0;
 i7 = i7 | 0;
 i3 = i3 | 0;
 var i5 = 0, i8 = 0;
 i5 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i1 = i5 + 4 | 0;
 i8 = i5;
 HEAP32[i8 >> 2] = HEAP32[i4 >> 2];
 HEAP32[i1 >> 2] = HEAP32[i8 >> 2];
 i1 = __ZNSt3__120__get_up_to_n_digitsIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEEEiRT0_S5_RjRKNS_5ctypeIT_EEi(i2, i1, i7, i3, 3) | 0;
 i2 = HEAP32[i7 >> 2] | 0;
 if ((i1 | 0) < 366 & (i2 & 4 | 0) == 0) HEAP32[i6 >> 2] = i1; else HEAP32[i7 >> 2] = i2 | 4;
 STACKTOP = i5;
 return;
}

function __ZNKSt3__18time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE9__get_dayERiRS4_S4_RjRKNS_5ctypeIcEE(i1, i6, i2, i4, i7, i3) {
 i1 = i1 | 0;
 i6 = i6 | 0;
 i2 = i2 | 0;
 i4 = i4 | 0;
 i7 = i7 | 0;
 i3 = i3 | 0;
 var i5 = 0, i8 = 0;
 i5 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i1 = i5 + 4 | 0;
 i8 = i5;
 HEAP32[i8 >> 2] = HEAP32[i4 >> 2];
 HEAP32[i1 >> 2] = HEAP32[i8 >> 2];
 i1 = __ZNSt3__120__get_up_to_n_digitsIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEEEiRT0_S5_RjRKNS_5ctypeIT_EEi(i2, i1, i7, i3, 2) | 0;
 i2 = HEAP32[i7 >> 2] | 0;
 if ((i1 + -1 | 0) >>> 0 < 31 & (i2 & 4 | 0) == 0) HEAP32[i6 >> 2] = i1; else HEAP32[i7 >> 2] = i2 | 4;
 STACKTOP = i5;
 return;
}

function __ZNKSt3__18time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE18__get_day_year_numERiRS4_S4_RjRKNS_5ctypeIcEE(i1, i6, i2, i4, i7, i3) {
 i1 = i1 | 0;
 i6 = i6 | 0;
 i2 = i2 | 0;
 i4 = i4 | 0;
 i7 = i7 | 0;
 i3 = i3 | 0;
 var i5 = 0, i8 = 0;
 i5 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i1 = i5 + 4 | 0;
 i8 = i5;
 HEAP32[i8 >> 2] = HEAP32[i4 >> 2];
 HEAP32[i1 >> 2] = HEAP32[i8 >> 2];
 i1 = __ZNSt3__120__get_up_to_n_digitsIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEEEiRT0_S5_RjRKNS_5ctypeIT_EEi(i2, i1, i7, i3, 3) | 0;
 i2 = HEAP32[i7 >> 2] | 0;
 if ((i1 | 0) < 366 & (i2 & 4 | 0) == 0) HEAP32[i6 >> 2] = i1; else HEAP32[i7 >> 2] = i2 | 4;
 STACKTOP = i5;
 return;
}

function __ZZN4wasm6WalkerINS_11MergeBlocksENS_7VisitorIS1_vEEE9startWalkEPNS_6ModuleEENKUlvE_clEv(i3) {
 i3 = i3 | 0;
 var i1 = 0, i2 = 0, i4 = 0, i5 = 0;
 i2 = HEAP32[i3 + 4 >> 2] | 0;
 i1 = HEAP32[i2 >> 2] | 0;
 HEAP32[i2 >> 2] = i1 + 1;
 i2 = i3 + 8 | 0;
 if (i1 >>> 0 < (HEAP32[i2 >> 2] | 0) >>> 0) {
  i4 = HEAP32[(HEAP32[(HEAP32[HEAP32[i3 + 12 >> 2] >> 2] | 0) + 36 >> 2] | 0) + (i1 << 2) >> 2] | 0;
  i5 = HEAP32[i3 >> 2] | 0;
  i3 = i5 + 32 | 0;
  HEAP32[i3 >> 2] = i4;
  __ZN4wasm6WalkerINS_11MergeBlocksENS_7VisitorIS1_vEEE4walkERPNS_10ExpressionE(i5 + 16 | 0, i4 + 36 | 0);
  HEAP32[i3 >> 2] = 0;
  i1 = (i1 + 1 | 0) == (HEAP32[i2 >> 2] | 0) & 1;
 } else i1 = 1;
 return i1 | 0;
}

function __ZNSt3__16__treeIN4wasm4NameENS_4lessIS2_EENS_9allocatorIS2_EEE14__erase_uniqueIS2_EEjRKT_(i4, i1) {
 i4 = i4 | 0;
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i5 = 0;
 i5 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i2 = i5 + 4 | 0;
 i3 = i5;
 i1 = __ZNSt3__16__treeIN4wasm4NameENS_4lessIS2_EENS_9allocatorIS2_EEE4findIS2_EENS_15__tree_iteratorIS2_PNS_11__tree_nodeIS2_PvEEiEERKT_(i4, i1) | 0;
 if ((i1 | 0) == (i4 + 4 | 0)) i1 = 0; else {
  HEAP32[i3 >> 2] = i1;
  HEAP32[i2 >> 2] = HEAP32[i3 >> 2];
  __ZNSt3__16__treeIN4wasm4NameENS_4lessIS2_EENS_9allocatorIS2_EEE5eraseENS_21__tree_const_iteratorIS2_PNS_11__tree_nodeIS2_PvEEiEE(i4, i2) | 0;
  i1 = 1;
 }
 STACKTOP = i5;
 return i1 | 0;
}

function __ZNKSt3__18time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE11__get_monthERiRS4_S4_RjRKNS_5ctypeIwEE(i1, i7, i2, i4, i6, i3) {
 i1 = i1 | 0;
 i7 = i7 | 0;
 i2 = i2 | 0;
 i4 = i4 | 0;
 i6 = i6 | 0;
 i3 = i3 | 0;
 var i5 = 0, i8 = 0;
 i5 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i1 = i5 + 4 | 0;
 i8 = i5;
 HEAP32[i8 >> 2] = HEAP32[i4 >> 2];
 HEAP32[i1 >> 2] = HEAP32[i8 >> 2];
 i1 = __ZNSt3__120__get_up_to_n_digitsIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEEEiRT0_S5_RjRKNS_5ctypeIT_EEi(i2, i1, i6, i3, 2) | 0;
 i2 = HEAP32[i6 >> 2] | 0;
 if ((i1 | 0) < 13 & (i2 & 4 | 0) == 0) HEAP32[i7 >> 2] = i1 + -1; else HEAP32[i6 >> 2] = i2 | 4;
 STACKTOP = i5;
 return;
}

function __ZNKSt3__18time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE11__get_monthERiRS4_S4_RjRKNS_5ctypeIcEE(i1, i7, i2, i4, i6, i3) {
 i1 = i1 | 0;
 i7 = i7 | 0;
 i2 = i2 | 0;
 i4 = i4 | 0;
 i6 = i6 | 0;
 i3 = i3 | 0;
 var i5 = 0, i8 = 0;
 i5 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i1 = i5 + 4 | 0;
 i8 = i5;
 HEAP32[i8 >> 2] = HEAP32[i4 >> 2];
 HEAP32[i1 >> 2] = HEAP32[i8 >> 2];
 i1 = __ZNSt3__120__get_up_to_n_digitsIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEEEiRT0_S5_RjRKNS_5ctypeIT_EEi(i2, i1, i6, i3, 2) | 0;
 i2 = HEAP32[i6 >> 2] | 0;
 if ((i1 | 0) < 13 & (i2 & 4 | 0) == 0) HEAP32[i7 >> 2] = i1 + -1; else HEAP32[i6 >> 2] = i2 | 4;
 STACKTOP = i5;
 return;
}

function _frexp(d1, i5) {
 d1 = +d1;
 i5 = i5 | 0;
 var i2 = 0, i3 = 0, i4 = 0;
 HEAPF64[tempDoublePtr >> 3] = d1;
 i2 = HEAP32[tempDoublePtr >> 2] | 0;
 i3 = HEAP32[tempDoublePtr + 4 >> 2] | 0;
 i4 = _bitshift64Lshr(i2 | 0, i3 | 0, 52) | 0;
 i4 = i4 & 2047;
 switch (i4 | 0) {
 case 0:
  {
   if (d1 != 0.0) {
    d1 = +_frexp(d1 * 18446744073709551616.0, i5);
    i2 = (HEAP32[i5 >> 2] | 0) + -64 | 0;
   } else i2 = 0;
   HEAP32[i5 >> 2] = i2;
   break;
  }
 case 2047:
  break;
 default:
  {
   HEAP32[i5 >> 2] = i4 + -1022;
   HEAP32[tempDoublePtr >> 2] = i2;
   HEAP32[tempDoublePtr + 4 >> 2] = i3 & -2146435073 | 1071644672;
   d1 = +HEAPF64[tempDoublePtr >> 3];
  }
 }
 return +d1;
}

function __ZNSt3__16__treeINS_12__value_typeIN6cashew7IStringEN4wasm7LiteralEEENS_19__map_value_compareIS3_S6_NS_4lessIS3_EELb1EEENS_9allocatorIS6_EEE7destroyEPNS_11__tree_nodeIS6_PvEE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 if (!i1) return; else {
  __ZNSt3__16__treeINS_12__value_typeIN6cashew7IStringEN4wasm7LiteralEEENS_19__map_value_compareIS3_S6_NS_4lessIS3_EELb1EEENS_9allocatorIS6_EEE7destroyEPNS_11__tree_nodeIS6_PvEE(i2, HEAP32[i1 >> 2] | 0);
  __ZNSt3__16__treeINS_12__value_typeIN6cashew7IStringEN4wasm7LiteralEEENS_19__map_value_compareIS3_S6_NS_4lessIS3_EELb1EEENS_9allocatorIS6_EEE7destroyEPNS_11__tree_nodeIS6_PvEE(i2, HEAP32[i1 + 4 >> 2] | 0);
  __ZdlPv(i1);
  return;
 }
}

function __ZNSt3__16__treeINS_12__value_typeIN4wasm4NameEPNS2_12FunctionTypeEEENS_19__map_value_compareIS3_S6_NS_4lessIS3_EELb1EEENS_9allocatorIS6_EEE7destroyEPNS_11__tree_nodeIS6_PvEE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 if (!i1) return; else {
  __ZNSt3__16__treeINS_12__value_typeIN4wasm4NameEPNS2_12FunctionTypeEEENS_19__map_value_compareIS3_S6_NS_4lessIS3_EELb1EEENS_9allocatorIS6_EEE7destroyEPNS_11__tree_nodeIS6_PvEE(i2, HEAP32[i1 >> 2] | 0);
  __ZNSt3__16__treeINS_12__value_typeIN4wasm4NameEPNS2_12FunctionTypeEEENS_19__map_value_compareIS3_S6_NS_4lessIS3_EELb1EEENS_9allocatorIS6_EEE7destroyEPNS_11__tree_nodeIS6_PvEE(i2, HEAP32[i1 + 4 >> 2] | 0);
  __ZdlPv(i1);
  return;
 }
}

function __ZNKSt3__18time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE13__get_weekdayERiRS4_S4_RjRKNS_5ctypeIwEE(i1, i7, i2, i4, i6, i3) {
 i1 = i1 | 0;
 i7 = i7 | 0;
 i2 = i2 | 0;
 i4 = i4 | 0;
 i6 = i6 | 0;
 i3 = i3 | 0;
 var i5 = 0, i8 = 0;
 i5 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i1 = i5 + 4 | 0;
 i8 = i5;
 HEAP32[i8 >> 2] = HEAP32[i4 >> 2];
 HEAP32[i1 >> 2] = HEAP32[i8 >> 2];
 i1 = __ZNSt3__120__get_up_to_n_digitsIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEEEiRT0_S5_RjRKNS_5ctypeIT_EEi(i2, i1, i6, i3, 1) | 0;
 i2 = HEAP32[i6 >> 2] | 0;
 if ((i1 | 0) < 7 & (i2 & 4 | 0) == 0) HEAP32[i7 >> 2] = i1; else HEAP32[i6 >> 2] = i2 | 4;
 STACKTOP = i5;
 return;
}

function __ZNKSt3__18time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE12__get_secondERiRS4_S4_RjRKNS_5ctypeIwEE(i1, i7, i2, i4, i6, i3) {
 i1 = i1 | 0;
 i7 = i7 | 0;
 i2 = i2 | 0;
 i4 = i4 | 0;
 i6 = i6 | 0;
 i3 = i3 | 0;
 var i5 = 0, i8 = 0;
 i5 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i1 = i5 + 4 | 0;
 i8 = i5;
 HEAP32[i8 >> 2] = HEAP32[i4 >> 2];
 HEAP32[i1 >> 2] = HEAP32[i8 >> 2];
 i1 = __ZNSt3__120__get_up_to_n_digitsIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEEEiRT0_S5_RjRKNS_5ctypeIT_EEi(i2, i1, i6, i3, 2) | 0;
 i2 = HEAP32[i6 >> 2] | 0;
 if ((i1 | 0) < 61 & (i2 & 4 | 0) == 0) HEAP32[i7 >> 2] = i1; else HEAP32[i6 >> 2] = i2 | 4;
 STACKTOP = i5;
 return;
}

function __ZNKSt3__18time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE12__get_minuteERiRS4_S4_RjRKNS_5ctypeIwEE(i1, i7, i2, i4, i6, i3) {
 i1 = i1 | 0;
 i7 = i7 | 0;
 i2 = i2 | 0;
 i4 = i4 | 0;
 i6 = i6 | 0;
 i3 = i3 | 0;
 var i5 = 0, i8 = 0;
 i5 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i1 = i5 + 4 | 0;
 i8 = i5;
 HEAP32[i8 >> 2] = HEAP32[i4 >> 2];
 HEAP32[i1 >> 2] = HEAP32[i8 >> 2];
 i1 = __ZNSt3__120__get_up_to_n_digitsIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEEEiRT0_S5_RjRKNS_5ctypeIT_EEi(i2, i1, i6, i3, 2) | 0;
 i2 = HEAP32[i6 >> 2] | 0;
 if ((i1 | 0) < 60 & (i2 & 4 | 0) == 0) HEAP32[i7 >> 2] = i1; else HEAP32[i6 >> 2] = i2 | 4;
 STACKTOP = i5;
 return;
}

function __ZNKSt3__18time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE13__get_weekdayERiRS4_S4_RjRKNS_5ctypeIcEE(i1, i7, i2, i4, i6, i3) {
 i1 = i1 | 0;
 i7 = i7 | 0;
 i2 = i2 | 0;
 i4 = i4 | 0;
 i6 = i6 | 0;
 i3 = i3 | 0;
 var i5 = 0, i8 = 0;
 i5 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i1 = i5 + 4 | 0;
 i8 = i5;
 HEAP32[i8 >> 2] = HEAP32[i4 >> 2];
 HEAP32[i1 >> 2] = HEAP32[i8 >> 2];
 i1 = __ZNSt3__120__get_up_to_n_digitsIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEEEiRT0_S5_RjRKNS_5ctypeIT_EEi(i2, i1, i6, i3, 1) | 0;
 i2 = HEAP32[i6 >> 2] | 0;
 if ((i1 | 0) < 7 & (i2 & 4 | 0) == 0) HEAP32[i7 >> 2] = i1; else HEAP32[i6 >> 2] = i2 | 4;
 STACKTOP = i5;
 return;
}

function __ZNKSt3__18time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE12__get_secondERiRS4_S4_RjRKNS_5ctypeIcEE(i1, i7, i2, i4, i6, i3) {
 i1 = i1 | 0;
 i7 = i7 | 0;
 i2 = i2 | 0;
 i4 = i4 | 0;
 i6 = i6 | 0;
 i3 = i3 | 0;
 var i5 = 0, i8 = 0;
 i5 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i1 = i5 + 4 | 0;
 i8 = i5;
 HEAP32[i8 >> 2] = HEAP32[i4 >> 2];
 HEAP32[i1 >> 2] = HEAP32[i8 >> 2];
 i1 = __ZNSt3__120__get_up_to_n_digitsIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEEEiRT0_S5_RjRKNS_5ctypeIT_EEi(i2, i1, i6, i3, 2) | 0;
 i2 = HEAP32[i6 >> 2] | 0;
 if ((i1 | 0) < 61 & (i2 & 4 | 0) == 0) HEAP32[i7 >> 2] = i1; else HEAP32[i6 >> 2] = i2 | 4;
 STACKTOP = i5;
 return;
}

function __ZNKSt3__18time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE12__get_minuteERiRS4_S4_RjRKNS_5ctypeIcEE(i1, i7, i2, i4, i6, i3) {
 i1 = i1 | 0;
 i7 = i7 | 0;
 i2 = i2 | 0;
 i4 = i4 | 0;
 i6 = i6 | 0;
 i3 = i3 | 0;
 var i5 = 0, i8 = 0;
 i5 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i1 = i5 + 4 | 0;
 i8 = i5;
 HEAP32[i8 >> 2] = HEAP32[i4 >> 2];
 HEAP32[i1 >> 2] = HEAP32[i8 >> 2];
 i1 = __ZNSt3__120__get_up_to_n_digitsIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEEEiRT0_S5_RjRKNS_5ctypeIT_EEi(i2, i1, i6, i3, 2) | 0;
 i2 = HEAP32[i6 >> 2] | 0;
 if ((i1 | 0) < 60 & (i2 & 4 | 0) == 0) HEAP32[i7 >> 2] = i1; else HEAP32[i6 >> 2] = i2 | 4;
 STACKTOP = i5;
 return;
}

function __ZNKSt3__18time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE10__get_hourERiRS4_S4_RjRKNS_5ctypeIwEE(i1, i7, i2, i4, i6, i3) {
 i1 = i1 | 0;
 i7 = i7 | 0;
 i2 = i2 | 0;
 i4 = i4 | 0;
 i6 = i6 | 0;
 i3 = i3 | 0;
 var i5 = 0, i8 = 0;
 i5 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i1 = i5 + 4 | 0;
 i8 = i5;
 HEAP32[i8 >> 2] = HEAP32[i4 >> 2];
 HEAP32[i1 >> 2] = HEAP32[i8 >> 2];
 i1 = __ZNSt3__120__get_up_to_n_digitsIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEEEiRT0_S5_RjRKNS_5ctypeIT_EEi(i2, i1, i6, i3, 2) | 0;
 i2 = HEAP32[i6 >> 2] | 0;
 if ((i1 | 0) < 24 & (i2 & 4 | 0) == 0) HEAP32[i7 >> 2] = i1; else HEAP32[i6 >> 2] = i2 | 4;
 STACKTOP = i5;
 return;
}

function __ZNKSt3__18time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE10__get_hourERiRS4_S4_RjRKNS_5ctypeIcEE(i1, i7, i2, i4, i6, i3) {
 i1 = i1 | 0;
 i7 = i7 | 0;
 i2 = i2 | 0;
 i4 = i4 | 0;
 i6 = i6 | 0;
 i3 = i3 | 0;
 var i5 = 0, i8 = 0;
 i5 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i1 = i5 + 4 | 0;
 i8 = i5;
 HEAP32[i8 >> 2] = HEAP32[i4 >> 2];
 HEAP32[i1 >> 2] = HEAP32[i8 >> 2];
 i1 = __ZNSt3__120__get_up_to_n_digitsIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEEEiRT0_S5_RjRKNS_5ctypeIT_EEi(i2, i1, i6, i3, 2) | 0;
 i2 = HEAP32[i6 >> 2] | 0;
 if ((i1 | 0) < 24 & (i2 & 4 | 0) == 0) HEAP32[i7 >> 2] = i1; else HEAP32[i6 >> 2] = i2 | 4;
 STACKTOP = i5;
 return;
}

function _ungetc(i1, i5) {
 i1 = i1 | 0;
 i5 = i5 | 0;
 var i2 = 0, i3 = 0, i4 = 0, i6 = 0;
 do if ((i1 | 0) != -1) {
  if ((HEAP32[i5 + 76 >> 2] | 0) > -1) i4 = ___lockfile(i5) | 0; else i4 = 0;
  if (!((HEAP32[i5 + 8 >> 2] | 0) == 0 ? (___toread(i5) | 0) != 0 : 0)) i6 = 6;
  if ((i6 | 0) == 6 ? (i2 = i5 + 4 | 0, i3 = HEAP32[i2 >> 2] | 0, i3 >>> 0 > ((HEAP32[i5 + 44 >> 2] | 0) + -8 | 0) >>> 0) : 0) {
   i6 = i3 + -1 | 0;
   HEAP32[i2 >> 2] = i6;
   HEAP8[i6 >> 0] = i1;
   HEAP32[i5 >> 2] = HEAP32[i5 >> 2] & -17;
   if (!i4) break;
   ___unlockfile(i5);
   break;
  }
  if (i4) {
   ___unlockfile(i5);
   i1 = -1;
  } else i1 = -1;
 } else i1 = -1; while (0);
 return i1 | 0;
}

function __ZNSt3__16__treeINS_12__value_typeIjN4wasm14SimplifyLocals12SinkableInfoEEENS_19__map_value_compareIjS5_NS_4lessIjEELb1EEENS_9allocatorIS5_EEE16__insert_node_atEPNS_16__tree_node_baseIPvEERSG_SG_(i4, i2, i3, i1) {
 i4 = i4 | 0;
 i2 = i2 | 0;
 i3 = i3 | 0;
 i1 = i1 | 0;
 HEAP32[i1 >> 2] = 0;
 HEAP32[i1 + 4 >> 2] = 0;
 HEAP32[i1 + 8 >> 2] = i2;
 HEAP32[i3 >> 2] = i1;
 i2 = HEAP32[i4 >> 2] | 0;
 if (HEAP32[i2 >> 2] | 0) {
  HEAP32[i4 >> 2] = HEAP32[i2 >> 2];
  i1 = HEAP32[i3 >> 2] | 0;
 }
 __ZNSt3__127__tree_balance_after_insertIPNS_16__tree_node_baseIPvEEEEvT_S5_(HEAP32[i4 + 4 >> 2] | 0, i1);
 i4 = i4 + 8 | 0;
 HEAP32[i4 >> 2] = (HEAP32[i4 >> 2] | 0) + 1;
 return;
}

function __ZZN4wasm6WalkerINS_6VacuumENS_7VisitorIS1_vEEE9startWalkEPNS_6ModuleEENKUlvE_clEv(i3) {
 i3 = i3 | 0;
 var i1 = 0, i2 = 0, i4 = 0, i5 = 0;
 i2 = HEAP32[i3 + 4 >> 2] | 0;
 i1 = HEAP32[i2 >> 2] | 0;
 HEAP32[i2 >> 2] = i1 + 1;
 i2 = i3 + 8 | 0;
 if (i1 >>> 0 < (HEAP32[i2 >> 2] | 0) >>> 0) {
  i4 = HEAP32[(HEAP32[(HEAP32[HEAP32[i3 + 12 >> 2] >> 2] | 0) + 36 >> 2] | 0) + (i1 << 2) >> 2] | 0;
  i5 = HEAP32[i3 >> 2] | 0;
  i3 = i5 + 32 | 0;
  HEAP32[i3 >> 2] = i4;
  __ZN4wasm6WalkerINS_6VacuumENS_7VisitorIS1_vEEE4walkERPNS_10ExpressionE(i5 + 16 | 0, i4 + 36 | 0);
  HEAP32[i3 >> 2] = 0;
  i1 = (i1 + 1 | 0) == (HEAP32[i2 >> 2] | 0) & 1;
 } else i1 = 1;
 return i1 | 0;
}

function __ZNSt3__16__treeINS_12__value_typeIN6cashew7IStringEN4wasm7LiteralEEENS_19__map_value_compareIS3_S6_NS_4lessIS3_EELb1EEENS_9allocatorIS6_EEE16__insert_node_atEPNS_16__tree_node_baseIPvEERSH_SH_(i4, i2, i3, i1) {
 i4 = i4 | 0;
 i2 = i2 | 0;
 i3 = i3 | 0;
 i1 = i1 | 0;
 HEAP32[i1 >> 2] = 0;
 HEAP32[i1 + 4 >> 2] = 0;
 HEAP32[i1 + 8 >> 2] = i2;
 HEAP32[i3 >> 2] = i1;
 i2 = HEAP32[i4 >> 2] | 0;
 if (HEAP32[i2 >> 2] | 0) {
  HEAP32[i4 >> 2] = HEAP32[i2 >> 2];
  i1 = HEAP32[i3 >> 2] | 0;
 }
 __ZNSt3__127__tree_balance_after_insertIPNS_16__tree_node_baseIPvEEEEvT_S5_(HEAP32[i4 + 4 >> 2] | 0, i1);
 i4 = i4 + 8 | 0;
 HEAP32[i4 >> 2] = (HEAP32[i4 >> 2] | 0) + 1;
 return;
}

function __ZNSt3__16__treeINS_12__value_typeIN4wasm4NameEPNS2_12FunctionTypeEEENS_19__map_value_compareIS3_S6_NS_4lessIS3_EELb1EEENS_9allocatorIS6_EEE16__insert_node_atEPNS_16__tree_node_baseIPvEERSH_SH_(i4, i2, i3, i1) {
 i4 = i4 | 0;
 i2 = i2 | 0;
 i3 = i3 | 0;
 i1 = i1 | 0;
 HEAP32[i1 >> 2] = 0;
 HEAP32[i1 + 4 >> 2] = 0;
 HEAP32[i1 + 8 >> 2] = i2;
 HEAP32[i3 >> 2] = i1;
 i2 = HEAP32[i4 >> 2] | 0;
 if (HEAP32[i2 >> 2] | 0) {
  HEAP32[i4 >> 2] = HEAP32[i2 >> 2];
  i1 = HEAP32[i3 >> 2] | 0;
 }
 __ZNSt3__127__tree_balance_after_insertIPNS_16__tree_node_baseIPvEEEEvT_S5_(HEAP32[i4 + 4 >> 2] | 0, i1);
 i4 = i4 + 8 | 0;
 HEAP32[i4 >> 2] = (HEAP32[i4 >> 2] | 0) + 1;
 return;
}

function __ZNSt3__16__treeINS_12__value_typeIN4wasm4NameEPNS2_8FunctionEEENS_19__map_value_compareIS3_S6_NS_4lessIS3_EELb1EEENS_9allocatorIS6_EEE16__insert_node_atEPNS_16__tree_node_baseIPvEERSH_SH_(i4, i2, i3, i1) {
 i4 = i4 | 0;
 i2 = i2 | 0;
 i3 = i3 | 0;
 i1 = i1 | 0;
 HEAP32[i1 >> 2] = 0;
 HEAP32[i1 + 4 >> 2] = 0;
 HEAP32[i1 + 8 >> 2] = i2;
 HEAP32[i3 >> 2] = i1;
 i2 = HEAP32[i4 >> 2] | 0;
 if (HEAP32[i2 >> 2] | 0) {
  HEAP32[i4 >> 2] = HEAP32[i2 >> 2];
  i1 = HEAP32[i3 >> 2] | 0;
 }
 __ZNSt3__127__tree_balance_after_insertIPNS_16__tree_node_baseIPvEEEEvT_S5_(HEAP32[i4 + 4 >> 2] | 0, i1);
 i4 = i4 + 8 | 0;
 HEAP32[i4 >> 2] = (HEAP32[i4 >> 2] | 0) + 1;
 return;
}

function _atol(i1) {
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i4 = 0, i5 = 0;
 while (1) {
  i2 = i1 + 1 | 0;
  if (!(_isspace(HEAP8[i1 >> 0] | 0) | 0)) break; else i1 = i2;
 }
 i3 = HEAP8[i1 >> 0] | 0;
 switch (i3 << 24 >> 24 | 0) {
 case 45:
  {
   i4 = 1;
   i5 = 5;
   break;
  }
 case 43:
  {
   i4 = 0;
   i5 = 5;
   break;
  }
 default:
  i4 = 0;
 }
 if ((i5 | 0) == 5) {
  i1 = i2;
  i3 = HEAP8[i2 >> 0] | 0;
 }
 i2 = (i3 << 24 >> 24) + -48 | 0;
 if (i2 >>> 0 < 10) {
  i3 = i1;
  i1 = 0;
  do {
   i3 = i3 + 1 | 0;
   i1 = (i1 * 10 | 0) - i2 | 0;
   i2 = (HEAP8[i3 >> 0] | 0) + -48 | 0;
  } while (i2 >>> 0 < 10);
 } else i1 = 0;
 return (i4 | 0 ? i1 : 0 - i1 | 0) | 0;
}

function _atoi(i1) {
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i4 = 0, i5 = 0;
 while (1) {
  i2 = i1 + 1 | 0;
  if (!(_isspace(HEAP8[i1 >> 0] | 0) | 0)) break; else i1 = i2;
 }
 i3 = HEAP8[i1 >> 0] | 0;
 switch (i3 << 24 >> 24 | 0) {
 case 45:
  {
   i4 = 1;
   i5 = 5;
   break;
  }
 case 43:
  {
   i4 = 0;
   i5 = 5;
   break;
  }
 default:
  i4 = 0;
 }
 if ((i5 | 0) == 5) {
  i1 = i2;
  i3 = HEAP8[i2 >> 0] | 0;
 }
 i2 = (i3 << 24 >> 24) + -48 | 0;
 if (i2 >>> 0 < 10) {
  i3 = i1;
  i1 = 0;
  do {
   i3 = i3 + 1 | 0;
   i1 = (i1 * 10 | 0) - i2 | 0;
   i2 = (HEAP8[i3 >> 0] | 0) + -48 | 0;
  } while (i2 >>> 0 < 10);
 } else i1 = 0;
 return (i4 | 0 ? i1 : 0 - i1 | 0) | 0;
}

function __ZNSt3__16__treeINS_12__value_typeIjN4wasm14SimplifyLocals12SinkableInfoEEENS_19__map_value_compareIjS5_NS_4lessIjEELb1EEENS_9allocatorIS5_EEE5eraseENS_21__tree_const_iteratorIS5_PNS_11__tree_nodeIS5_PvEEiEE(i3, i1) {
 i3 = i3 | 0;
 i1 = i1 | 0;
 var i2 = 0, i4 = 0;
 i1 = HEAP32[i1 >> 2] | 0;
 i2 = __ZNSt3__111__tree_nextIPNS_16__tree_node_baseIPvEEEET_S5_(i1) | 0;
 if ((HEAP32[i3 >> 2] | 0) == (i1 | 0)) HEAP32[i3 >> 2] = i2;
 i4 = i3 + 8 | 0;
 HEAP32[i4 >> 2] = (HEAP32[i4 >> 2] | 0) + -1;
 __ZNSt3__113__tree_removeIPNS_16__tree_node_baseIPvEEEEvT_S5_(HEAP32[i3 + 4 >> 2] | 0, i1);
 __ZN4wasm14EffectAnalyzerD2Ev(i1 + 24 | 0);
 __ZdlPv(i1);
 return i2 | 0;
}

function __ZNSt3__16__treeINS_12__value_typeIN4wasm4NameEPNS2_8FunctionEEENS_19__map_value_compareIS3_S6_NS_4lessIS3_EELb1EEENS_9allocatorIS6_EEE7destroyEPNS_11__tree_nodeIS6_PvEE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 if (!i1) return; else {
  __ZNSt3__16__treeINS_12__value_typeIN4wasm4NameEPNS2_8FunctionEEENS_19__map_value_compareIS3_S6_NS_4lessIS3_EELb1EEENS_9allocatorIS6_EEE7destroyEPNS_11__tree_nodeIS6_PvEE(i2, HEAP32[i1 >> 2] | 0);
  __ZNSt3__16__treeINS_12__value_typeIN4wasm4NameEPNS2_8FunctionEEENS_19__map_value_compareIS3_S6_NS_4lessIS3_EELb1EEENS_9allocatorIS6_EEE7destroyEPNS_11__tree_nodeIS6_PvEE(i2, HEAP32[i1 + 4 >> 2] | 0);
  __ZdlPv(i1);
  return;
 }
}

function __ZNSt3__16__treeINS_12__value_typeIN4wasm4NameENS2_8WasmTypeEEENS_19__map_value_compareIS3_S5_NS_4lessIS3_EELb1EEENS_9allocatorIS5_EEE16__insert_node_atEPNS_16__tree_node_baseIPvEERSG_SG_(i4, i2, i3, i1) {
 i4 = i4 | 0;
 i2 = i2 | 0;
 i3 = i3 | 0;
 i1 = i1 | 0;
 HEAP32[i1 >> 2] = 0;
 HEAP32[i1 + 4 >> 2] = 0;
 HEAP32[i1 + 8 >> 2] = i2;
 HEAP32[i3 >> 2] = i1;
 i2 = HEAP32[i4 >> 2] | 0;
 if (HEAP32[i2 >> 2] | 0) {
  HEAP32[i4 >> 2] = HEAP32[i2 >> 2];
  i1 = HEAP32[i3 >> 2] | 0;
 }
 __ZNSt3__127__tree_balance_after_insertIPNS_16__tree_node_baseIPvEEEEvT_S5_(HEAP32[i4 + 4 >> 2] | 0, i1);
 i4 = i4 + 8 | 0;
 HEAP32[i4 >> 2] = (HEAP32[i4 >> 2] | 0) + 1;
 return;
}

function __ZNSt3__16__treeINS_12__value_typeIN4wasm4NameEPNS2_6ImportEEENS_19__map_value_compareIS3_S6_NS_4lessIS3_EELb1EEENS_9allocatorIS6_EEE16__insert_node_atEPNS_16__tree_node_baseIPvEERSH_SH_(i4, i2, i3, i1) {
 i4 = i4 | 0;
 i2 = i2 | 0;
 i3 = i3 | 0;
 i1 = i1 | 0;
 HEAP32[i1 >> 2] = 0;
 HEAP32[i1 + 4 >> 2] = 0;
 HEAP32[i1 + 8 >> 2] = i2;
 HEAP32[i3 >> 2] = i1;
 i2 = HEAP32[i4 >> 2] | 0;
 if (HEAP32[i2 >> 2] | 0) {
  HEAP32[i4 >> 2] = HEAP32[i2 >> 2];
  i1 = HEAP32[i3 >> 2] | 0;
 }
 __ZNSt3__127__tree_balance_after_insertIPNS_16__tree_node_baseIPvEEEEvT_S5_(HEAP32[i4 + 4 >> 2] | 0, i1);
 i4 = i4 + 8 | 0;
 HEAP32[i4 >> 2] = (HEAP32[i4 >> 2] | 0) + 1;
 return;
}

function __ZNSt3__16__treeINS_12__value_typeIN4wasm4NameEPNS2_6ExportEEENS_19__map_value_compareIS3_S6_NS_4lessIS3_EELb1EEENS_9allocatorIS6_EEE16__insert_node_atEPNS_16__tree_node_baseIPvEERSH_SH_(i4, i2, i3, i1) {
 i4 = i4 | 0;
 i2 = i2 | 0;
 i3 = i3 | 0;
 i1 = i1 | 0;
 HEAP32[i1 >> 2] = 0;
 HEAP32[i1 + 4 >> 2] = 0;
 HEAP32[i1 + 8 >> 2] = i2;
 HEAP32[i3 >> 2] = i1;
 i2 = HEAP32[i4 >> 2] | 0;
 if (HEAP32[i2 >> 2] | 0) {
  HEAP32[i4 >> 2] = HEAP32[i2 >> 2];
  i1 = HEAP32[i3 >> 2] | 0;
 }
 __ZNSt3__127__tree_balance_after_insertIPNS_16__tree_node_baseIPvEEEEvT_S5_(HEAP32[i4 + 4 >> 2] | 0, i1);
 i4 = i4 + 8 | 0;
 HEAP32[i4 >> 2] = (HEAP32[i4 >> 2] | 0) + 1;
 return;
}

function __ZNSt3__1plIcNS_11char_traitsIcEENS_9allocatorIcEEEENS_12basic_stringIT_T0_T1_EEPKS6_RKS9_(i4, i2, i3) {
 i4 = i4 | 0;
 i2 = i2 | 0;
 i3 = i3 | 0;
 var i1 = 0, i5 = 0;
 i1 = 0;
 while (1) {
  if ((i1 | 0) == 3) break;
  HEAP32[i4 + (i1 << 2) >> 2] = 0;
  i1 = i1 + 1 | 0;
 }
 i5 = _strlen(i2) | 0;
 i1 = HEAP8[i3 >> 0] | 0;
 i1 = (i1 & 1) == 0 ? (i1 & 255) >>> 1 : HEAP32[i3 + 4 >> 2] | 0;
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6__initEPKcjj(i4, i2, i5, i1 + i5 | 0);
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6appendEPKcj(i4, (HEAP8[i3 >> 0] & 1) == 0 ? i3 + 1 | 0 : HEAP32[i3 + 8 >> 2] | 0, i1) | 0;
 return;
}

function __ZNSt3__16__treeINS_12__value_typeIN4wasm4NameENS2_8WasmTypeEEENS_19__map_value_compareIS3_S5_NS_4lessIS3_EELb1EEENS_9allocatorIS5_EEE7destroyEPNS_11__tree_nodeIS5_PvEE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 if (!i1) return; else {
  __ZNSt3__16__treeINS_12__value_typeIN4wasm4NameENS2_8WasmTypeEEENS_19__map_value_compareIS3_S5_NS_4lessIS3_EELb1EEENS_9allocatorIS5_EEE7destroyEPNS_11__tree_nodeIS5_PvEE(i2, HEAP32[i1 >> 2] | 0);
  __ZNSt3__16__treeINS_12__value_typeIN4wasm4NameENS2_8WasmTypeEEENS_19__map_value_compareIS3_S5_NS_4lessIS3_EELb1EEENS_9allocatorIS5_EEE7destroyEPNS_11__tree_nodeIS5_PvEE(i2, HEAP32[i1 + 4 >> 2] | 0);
  __ZdlPv(i1);
  return;
 }
}

function __ZN4wasm7Builder9makeBlockEPNS_10ExpressionE(i1, i2) {
 i1 = i1 | 0;
 i2 = i2 | 0;
 var i3 = 0, i4 = 0, i5 = 0, i6 = 0;
 i6 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i5 = i6;
 HEAP32[i5 >> 2] = i2;
 i3 = __ZN10MixedArena5allocIN4wasm5BlockEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 i4 = i2;
 if (i2 | 0) {
  i1 = i3 + 16 | 0;
  i2 = HEAP32[i1 >> 2] | 0;
  if ((i2 | 0) == (HEAP32[i3 + 20 >> 2] | 0)) __ZNSt3__16vectorIPN4wasm10ExpressionENS_9allocatorIS3_EEE21__push_back_slow_pathIRKS3_EEvOT_(i3 + 12 | 0, i5); else {
   HEAP32[i2 >> 2] = i4;
   HEAP32[i1 >> 2] = (HEAP32[i1 >> 2] | 0) + 4;
  }
  __ZN4wasm5Block8finalizeEv(i3);
 }
 STACKTOP = i6;
 return i3 | 0;
}

function __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEED2Ev(i4) {
 i4 = i4 | 0;
 var i1 = 0, i2 = 0, i3 = 0;
 i1 = HEAP32[i4 + 4 >> 2] | 0;
 i2 = i4 + 8 | 0;
 while (1) {
  i3 = HEAP32[i2 >> 2] | 0;
  if ((i3 | 0) == (i1 | 0)) break;
  i3 = i3 + -16 | 0;
  HEAP32[i2 >> 2] = i3;
  __ZNSt3__113__vector_baseIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEED2Ev(i3);
 }
 i1 = HEAP32[i4 >> 2] | 0;
 if (i1 | 0) __ZN10__cxxabiv112_GLOBAL__N_15arenaILj4096EE10deallocateEPcj(HEAP32[HEAP32[i4 + 16 >> 2] >> 2] | 0, i1, (HEAP32[i4 + 12 >> 2] | 0) - i1 | 0);
 return;
}

function __ZNSt3__16__treeINS_12__value_typeIN4wasm4NameEPNS2_6ImportEEENS_19__map_value_compareIS3_S6_NS_4lessIS3_EELb1EEENS_9allocatorIS6_EEE7destroyEPNS_11__tree_nodeIS6_PvEE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 if (!i1) return; else {
  __ZNSt3__16__treeINS_12__value_typeIN4wasm4NameEPNS2_6ImportEEENS_19__map_value_compareIS3_S6_NS_4lessIS3_EELb1EEENS_9allocatorIS6_EEE7destroyEPNS_11__tree_nodeIS6_PvEE(i2, HEAP32[i1 >> 2] | 0);
  __ZNSt3__16__treeINS_12__value_typeIN4wasm4NameEPNS2_6ImportEEENS_19__map_value_compareIS3_S6_NS_4lessIS3_EELb1EEENS_9allocatorIS6_EEE7destroyEPNS_11__tree_nodeIS6_PvEE(i2, HEAP32[i1 + 4 >> 2] | 0);
  __ZdlPv(i1);
  return;
 }
}

function __ZNSt3__16__treeINS_12__value_typeIN4wasm4NameEPNS2_6ExportEEENS_19__map_value_compareIS3_S6_NS_4lessIS3_EELb1EEENS_9allocatorIS6_EEE7destroyEPNS_11__tree_nodeIS6_PvEE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 if (!i1) return; else {
  __ZNSt3__16__treeINS_12__value_typeIN4wasm4NameEPNS2_6ExportEEENS_19__map_value_compareIS3_S6_NS_4lessIS3_EELb1EEENS_9allocatorIS6_EEE7destroyEPNS_11__tree_nodeIS6_PvEE(i2, HEAP32[i1 >> 2] | 0);
  __ZNSt3__16__treeINS_12__value_typeIN4wasm4NameEPNS2_6ExportEEENS_19__map_value_compareIS3_S6_NS_4lessIS3_EELb1EEENS_9allocatorIS6_EEE7destroyEPNS_11__tree_nodeIS6_PvEE(i2, HEAP32[i1 + 4 >> 2] | 0);
  __ZdlPv(i1);
  return;
 }
}

function __ZNSt3__16__treeINS_12__value_typeIN4wasm4NameEPNS2_12FunctionTypeEEENS_19__map_value_compareIS3_S6_NS_4lessIS3_EELb1EEENS_9allocatorIS6_EEE4findIS3_EENS_15__tree_iteratorIS6_PNS_11__tree_nodeIS6_PvEEiEERKT_(i2, i3) {
 i2 = i2 | 0;
 i3 = i3 | 0;
 var i1 = 0;
 i1 = i2 + 4 | 0;
 i2 = __ZNSt3__16__treeINS_12__value_typeIN4wasm4NameEPNS2_12FunctionTypeEEENS_19__map_value_compareIS3_S6_NS_4lessIS3_EELb1EEENS_9allocatorIS6_EEE13__lower_boundIS3_EENS_15__tree_iteratorIS6_PNS_11__tree_nodeIS6_PvEEiEERKT_SJ_SJ_(i2, i3, HEAP32[i1 >> 2] | 0, i1) | 0;
 if ((i2 | 0) != (i1 | 0) ? !(__ZNK6cashew7IStringltERKS0_(i3, i2 + 16 | 0) | 0) : 0) i1 = i2;
 return i1 | 0;
}

function __ZN4wasm14SimplifyLocalsC2Ev(i1) {
 i1 = i1 | 0;
 var i2 = 0;
 __ZN4wasm10WalkerPassINS_21LinearExecutionWalkerINS_14SimplifyLocalsENS_7VisitorIS2_vEEEEEC2Ev(i1);
 HEAP32[i1 >> 2] = 4528;
 HEAP32[i1 + 44 >> 2] = 0;
 HEAP32[i1 + 48 >> 2] = 0;
 HEAP32[i1 + 40 >> 2] = i1 + 44;
 HEAP32[i1 + 56 >> 2] = 0;
 HEAP32[i1 + 60 >> 2] = 0;
 HEAP32[i1 + 52 >> 2] = i1 + 56;
 HEAP32[i1 + 68 >> 2] = 0;
 HEAP32[i1 + 72 >> 2] = 0;
 HEAP32[i1 + 64 >> 2] = i1 + 68;
 HEAP32[i1 + 76 >> 2] = 0;
 HEAP32[i1 + 80 >> 2] = 0;
 HEAP32[i1 + 84 >> 2] = 0;
 i1 = i1 + 92 | 0;
 i2 = i1 + 36 | 0;
 do {
  HEAP32[i1 >> 2] = 0;
  i1 = i1 + 4 | 0;
 } while ((i1 | 0) < (i2 | 0));
 return;
}

function __ZNSt3__1plIcNS_11char_traitsIcEENS_9allocatorIcEEEENS_12basic_stringIT_T0_T1_EERKS9_PKS6_(i4, i2, i3) {
 i4 = i4 | 0;
 i2 = i2 | 0;
 i3 = i3 | 0;
 var i1 = 0, i5 = 0, i6 = 0;
 i1 = 0;
 while (1) {
  if ((i1 | 0) == 3) break;
  HEAP32[i4 + (i1 << 2) >> 2] = 0;
  i1 = i1 + 1 | 0;
 }
 i5 = HEAP8[i2 >> 0] | 0;
 i6 = (i5 & 1) == 0;
 i5 = i6 ? (i5 & 255) >>> 1 : HEAP32[i2 + 4 >> 2] | 0;
 i1 = _strlen(i3) | 0;
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6__initEPKcjj(i4, i6 ? i2 + 1 | 0 : HEAP32[i2 + 8 >> 2] | 0, i5, i5 + i1 | 0);
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6appendEPKcj(i4, i3, i1) | 0;
 return;
}

function __ZNSt3__16vectorIPN4wasm10ExpressionENS_9allocatorIS3_EEEC2ERKS6_(i3, i4) {
 i3 = i3 | 0;
 i4 = i4 | 0;
 var i1 = 0, i2 = 0, i5 = 0;
 HEAP32[i3 >> 2] = 0;
 i5 = i3 + 4 | 0;
 HEAP32[i5 >> 2] = 0;
 HEAP32[i3 + 8 >> 2] = 0;
 i1 = i4 + 4 | 0;
 i2 = (HEAP32[i1 >> 2] | 0) - (HEAP32[i4 >> 2] | 0) >> 2;
 L1 : do if (i2 | 0) {
  __ZNSt3__16vectorIPN4wasm10ExpressionENS_9allocatorIS3_EEE8allocateEj(i3, i2);
  i2 = HEAP32[i1 >> 2] | 0;
  i1 = HEAP32[i4 >> 2] | 0;
  while (1) {
   if ((i1 | 0) == (i2 | 0)) break L1;
   HEAP32[HEAP32[i5 >> 2] >> 2] = HEAP32[i1 >> 2];
   HEAP32[i5 >> 2] = (HEAP32[i5 >> 2] | 0) + 4;
   i1 = i1 + 4 | 0;
  }
 } while (0);
 return;
}

function ___divdi3(i1, i2, i3, i4) {
 i1 = i1 | 0;
 i2 = i2 | 0;
 i3 = i3 | 0;
 i4 = i4 | 0;
 var i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0;
 i10 = i2 >> 31 | ((i2 | 0) < 0 ? -1 : 0) << 1;
 i9 = ((i2 | 0) < 0 ? -1 : 0) >> 31 | ((i2 | 0) < 0 ? -1 : 0) << 1;
 i6 = i4 >> 31 | ((i4 | 0) < 0 ? -1 : 0) << 1;
 i5 = ((i4 | 0) < 0 ? -1 : 0) >> 31 | ((i4 | 0) < 0 ? -1 : 0) << 1;
 i8 = _i64Subtract(i10 ^ i1 | 0, i9 ^ i2 | 0, i10 | 0, i9 | 0) | 0;
 i7 = tempRet0;
 i1 = i6 ^ i10;
 i2 = i5 ^ i9;
 return _i64Subtract((___udivmoddi4(i8, i7, _i64Subtract(i6 ^ i3 | 0, i5 ^ i4 | 0, i6 | 0, i5 | 0) | 0, tempRet0, 0) | 0) ^ i1 | 0, tempRet0 ^ i2 | 0, i1 | 0, i2 | 0) | 0;
}

function __ZN4wasm12PassRegistry8PassInfoaSEOS1_(i3, i1) {
 i3 = i3 | 0;
 i1 = i1 | 0;
 var i2 = 0;
 if (!(HEAP8[i3 >> 0] & 1)) {
  HEAP8[i3 + 1 >> 0] = 0;
  HEAP8[i3 >> 0] = 0;
 } else {
  HEAP8[HEAP32[i3 + 8 >> 2] >> 0] = 0;
  HEAP32[i3 + 4 >> 2] = 0;
 }
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE7reserveEj(i3, 0);
 HEAP32[i3 >> 2] = HEAP32[i1 >> 2];
 HEAP32[i3 + 4 >> 2] = HEAP32[i1 + 4 >> 2];
 HEAP32[i3 + 8 >> 2] = HEAP32[i1 + 8 >> 2];
 i2 = 0;
 while (1) {
  if ((i2 | 0) == 3) break;
  HEAP32[i1 + (i2 << 2) >> 2] = 0;
  i2 = i2 + 1 | 0;
 }
 __ZNSt3__18functionIFPN4wasm4PassEvEEaSEOS5_(i3 + 16 | 0, i1 + 16 | 0) | 0;
 return i3 | 0;
}

function __ZNSt3__113__vector_baseINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEENS5_IS7_Lj4096EEEED2Ev(i4) {
 i4 = i4 | 0;
 var i1 = 0, i2 = 0, i3 = 0;
 i1 = HEAP32[i4 >> 2] | 0;
 if (i1 | 0) {
  i2 = i4 + 4 | 0;
  while (1) {
   i3 = HEAP32[i2 >> 2] | 0;
   if ((i3 | 0) == (i1 | 0)) break;
   i3 = i3 + -16 | 0;
   HEAP32[i2 >> 2] = i3;
   __ZNSt3__113__vector_baseIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEED2Ev(i3);
  }
  i3 = HEAP32[i4 >> 2] | 0;
  __ZN10__cxxabiv112_GLOBAL__N_15arenaILj4096EE10deallocateEPcj(HEAP32[i4 + 12 >> 2] | 0, i3, (HEAP32[i4 + 8 >> 2] | 0) - i3 | 0);
 }
 return;
}

function __ZNKSt3__17codecvtIwc11__mbstate_tE9do_lengthERS1_PKcS5_j(i1, i10, i2, i8, i9) {
 i1 = i1 | 0;
 i10 = i10 | 0;
 i2 = i2 | 0;
 i8 = i8 | 0;
 i9 = i9 | 0;
 var i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0;
 i7 = i8;
 i6 = i1 + 8 | 0;
 i1 = 0;
 i5 = 0;
 L1 : while (1) {
  if ((i2 | 0) == (i8 | 0) | i5 >>> 0 >= i9 >>> 0) break;
  i4 = _uselocale(HEAP32[i6 >> 2] | 0) | 0;
  i3 = _mbrlen(i2, i7 - i2 | 0, i10) | 0;
  if (i4 | 0) _uselocale(i4) | 0;
  switch (i3 | 0) {
  case -2:
  case -1:
   break L1;
  case 0:
   {
    i2 = i2 + 1 | 0;
    i3 = 1;
    break;
   }
  default:
   i2 = i2 + i3 | 0;
  }
  i1 = i3 + i1 | 0;
  i5 = i5 + 1 | 0;
 }
 return i1 | 0;
}

function __ZN4wasm10PassRunner3addINS_7PrinterENSt3__113basic_ostreamIcNS3_11char_traitsIcEEEEEEvRT0_(i5, i1) {
 i5 = i5 | 0;
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i4 = 0, i6 = 0;
 i6 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i3 = i6;
 i4 = __Znwj(20) | 0;
 __ZN4wasm7PrinterC2ERNSt3__113basic_ostreamIcNS1_11char_traitsIcEEEE(i4, i1);
 HEAP32[i3 >> 2] = i4;
 i1 = i5 + 8 | 0;
 i2 = HEAP32[i1 >> 2] | 0;
 if (i2 >>> 0 < (HEAP32[i5 + 12 >> 2] | 0) >>> 0) {
  HEAP32[i2 >> 2] = i4;
  HEAP32[i1 >> 2] = (HEAP32[i1 >> 2] | 0) + 4;
 } else __ZNSt3__16vectorIPN4wasm4PassENS_9allocatorIS3_EEE21__push_back_slow_pathIS3_EEvOT_(i5 + 4 | 0, i3);
 STACKTOP = i6;
 return;
}

function __ZNSt3__16__treeINS_12__value_typeIN4wasm4NameEjEENS_19__map_value_compareIS3_S4_NS_4lessIS3_EELb1EEENS_9allocatorIS4_EEE16__insert_node_atEPNS_16__tree_node_baseIPvEERSF_SF_(i4, i2, i3, i1) {
 i4 = i4 | 0;
 i2 = i2 | 0;
 i3 = i3 | 0;
 i1 = i1 | 0;
 HEAP32[i1 >> 2] = 0;
 HEAP32[i1 + 4 >> 2] = 0;
 HEAP32[i1 + 8 >> 2] = i2;
 HEAP32[i3 >> 2] = i1;
 i2 = HEAP32[i4 >> 2] | 0;
 if (HEAP32[i2 >> 2] | 0) {
  HEAP32[i4 >> 2] = HEAP32[i2 >> 2];
  i1 = HEAP32[i3 >> 2] | 0;
 }
 __ZNSt3__127__tree_balance_after_insertIPNS_16__tree_node_baseIPvEEEEvT_S5_(HEAP32[i4 + 4 >> 2] | 0, i1);
 i4 = i4 + 8 | 0;
 HEAP32[i4 >> 2] = (HEAP32[i4 >> 2] | 0) + 1;
 return;
}

function __ZZN4wasm6WalkerINS_15RemoveUnusedBrsENS_7VisitorIS1_vEEE9startWalkEPNS_6ModuleEENKUlvE_clEv(i3) {
 i3 = i3 | 0;
 var i1 = 0, i2 = 0, i4 = 0, i5 = 0;
 i2 = HEAP32[i3 + 4 >> 2] | 0;
 i1 = HEAP32[i2 >> 2] | 0;
 HEAP32[i2 >> 2] = i1 + 1;
 i2 = i3 + 8 | 0;
 if (i1 >>> 0 < (HEAP32[i2 >> 2] | 0) >>> 0) {
  i4 = HEAP32[(HEAP32[(HEAP32[HEAP32[i3 + 12 >> 2] >> 2] | 0) + 36 >> 2] | 0) + (i1 << 2) >> 2] | 0;
  i5 = HEAP32[i3 >> 2] | 0;
  i3 = i5 + 32 | 0;
  HEAP32[i3 >> 2] = i4;
  __ZN4wasm15RemoveUnusedBrs4walkERPNS_10ExpressionE(i5, i4 + 36 | 0);
  HEAP32[i3 >> 2] = 0;
  i1 = (i1 + 1 | 0) == (HEAP32[i2 >> 2] | 0) & 1;
 } else i1 = 1;
 return i1 | 0;
}

function ___fflush_unlocked(i7) {
 i7 = i7 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0;
 i1 = i7 + 20 | 0;
 i5 = i7 + 28 | 0;
 if ((HEAP32[i1 >> 2] | 0) >>> 0 > (HEAP32[i5 >> 2] | 0) >>> 0 ? (FUNCTION_TABLE_iiii[HEAP32[i7 + 36 >> 2] & 31](i7, 0, 0) | 0, (HEAP32[i1 >> 2] | 0) == 0) : 0) i1 = -1; else {
  i6 = i7 + 4 | 0;
  i2 = HEAP32[i6 >> 2] | 0;
  i3 = i7 + 8 | 0;
  i4 = HEAP32[i3 >> 2] | 0;
  if (i2 >>> 0 < i4 >>> 0) FUNCTION_TABLE_iiii[HEAP32[i7 + 40 >> 2] & 31](i7, i2 - i4 | 0, 1) | 0;
  HEAP32[i7 + 16 >> 2] = 0;
  HEAP32[i5 >> 2] = 0;
  HEAP32[i1 >> 2] = 0;
  HEAP32[i3 >> 2] = 0;
  HEAP32[i6 >> 2] = 0;
  i1 = 0;
 }
 return i1 | 0;
}

function __ZN4wasm6WalkerINS_14EffectAnalyzerENS_7VisitorIS1_vEEEC2EOS4_(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 var i3 = 0, i4 = 0, i5 = 0;
 HEAP32[i2 >> 2] = HEAP32[i1 >> 2];
 i4 = i2 + 4 | 0;
 i3 = i1 + 4 | 0;
 HEAP32[i4 >> 2] = 0;
 i5 = i2 + 8 | 0;
 HEAP32[i5 >> 2] = 0;
 HEAP32[i2 + 12 >> 2] = 0;
 HEAP32[i4 >> 2] = HEAP32[i3 >> 2];
 i4 = i1 + 8 | 0;
 HEAP32[i5 >> 2] = HEAP32[i4 >> 2];
 i5 = i1 + 12 | 0;
 HEAP32[i2 + 12 >> 2] = HEAP32[i5 >> 2];
 HEAP32[i5 >> 2] = 0;
 HEAP32[i4 >> 2] = 0;
 HEAP32[i3 >> 2] = 0;
 i3 = i1 + 16 | 0;
 i1 = HEAP32[i3 + 4 >> 2] | 0;
 i2 = i2 + 16 | 0;
 HEAP32[i2 >> 2] = HEAP32[i3 >> 2];
 HEAP32[i2 + 4 >> 2] = i1;
 return;
}

function __ZZN4wasm6WalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE9startWalkEPNS_6ModuleEENKUlvE_clEv(i3) {
 i3 = i3 | 0;
 var i1 = 0, i2 = 0, i4 = 0, i5 = 0;
 i2 = HEAP32[i3 + 4 >> 2] | 0;
 i1 = HEAP32[i2 >> 2] | 0;
 HEAP32[i2 >> 2] = i1 + 1;
 i2 = i3 + 8 | 0;
 if (i1 >>> 0 < (HEAP32[i2 >> 2] | 0) >>> 0) {
  i4 = HEAP32[(HEAP32[(HEAP32[HEAP32[i3 + 12 >> 2] >> 2] | 0) + 36 >> 2] | 0) + (i1 << 2) >> 2] | 0;
  i5 = HEAP32[i3 >> 2] | 0;
  i3 = i5 + 32 | 0;
  HEAP32[i3 >> 2] = i4;
  __ZN4wasm14SimplifyLocals4walkERPNS_10ExpressionE(i5, i4 + 36 | 0);
  HEAP32[i3 >> 2] = 0;
  i1 = (i1 + 1 | 0) == (HEAP32[i2 >> 2] | 0) & 1;
 } else i1 = 1;
 return i1 | 0;
}

function __ZN4wasm16PrintSExpression13visitGetLocalEPNS_8GetLocalE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 var i3 = 0, i4 = 0, i5 = 0, i6 = 0;
 i3 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i4 = i3 + 4 | 0;
 i6 = i3;
 i5 = __Z12printOpeningRNSt3__113basic_ostreamIcNS_11char_traitsIcEEEEPKcb(HEAP32[i2 >> 2] | 0, 18349, 0) | 0;
 i2 = __ZN4wasm16PrintSExpression14printableLocalEj(i2, HEAP32[i1 + 8 >> 2] | 0) | 0;
 HEAP32[i6 >> 2] = i2;
 HEAP32[i4 >> 2] = HEAP32[i6 >> 2];
 __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_c(__ZN4wasmlsERNSt3__113basic_ostreamIcNS0_11char_traitsIcEEEENS_4NameE(i5, i4) | 0, 41) | 0;
 STACKTOP = i3;
 return;
}

function __ZNSt3__16vectorIN4wasm8WasmTypeENS_9allocatorIS2_EEEC2ERKS5_(i3, i4) {
 i3 = i3 | 0;
 i4 = i4 | 0;
 var i1 = 0, i2 = 0, i5 = 0;
 HEAP32[i3 >> 2] = 0;
 i5 = i3 + 4 | 0;
 HEAP32[i5 >> 2] = 0;
 HEAP32[i3 + 8 >> 2] = 0;
 i1 = i4 + 4 | 0;
 i2 = (HEAP32[i1 >> 2] | 0) - (HEAP32[i4 >> 2] | 0) >> 2;
 L1 : do if (i2 | 0) {
  __ZNSt3__16vectorIN4wasm8WasmTypeENS_9allocatorIS2_EEE8allocateEj(i3, i2);
  i2 = HEAP32[i1 >> 2] | 0;
  i1 = HEAP32[i4 >> 2] | 0;
  while (1) {
   if ((i1 | 0) == (i2 | 0)) break L1;
   i4 = HEAP32[i5 >> 2] | 0;
   HEAP32[i4 >> 2] = HEAP32[i1 >> 2];
   HEAP32[i5 >> 2] = i4 + 4;
   i1 = i1 + 4 | 0;
  }
 } while (0);
 return;
}

function __ZNSt3__115__num_get_floatIfEET_PKcS3_Rj(i2, i5, i6) {
 i2 = i2 | 0;
 i5 = i5 | 0;
 i6 = i6 | 0;
 var d1 = 0.0, i3 = 0, i4 = 0, i7 = 0, i8 = 0;
 i8 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i7 = i8;
 if ((i2 | 0) == (i5 | 0)) {
  HEAP32[i6 >> 2] = 4;
  d1 = 0.0;
 } else {
  i3 = ___errno_location() | 0;
  i4 = HEAP32[i3 >> 2] | 0;
  HEAP32[i3 >> 2] = 0;
  d1 = +_strtold_l(i2, i7, __ZNSt3__16__clocEv() | 0);
  i2 = HEAP32[i3 >> 2] | 0;
  if (!i2) HEAP32[i3 >> 2] = i4;
  if ((HEAP32[i7 >> 2] | 0) == (i5 | 0)) {
   if ((i2 | 0) == 34) HEAP32[i6 >> 2] = 4;
  } else {
   HEAP32[i6 >> 2] = 4;
   d1 = 0.0;
  }
 }
 STACKTOP = i8;
 return +d1;
}

function __ZNSt3__115__num_get_floatIeEET_PKcS3_Rj(i2, i5, i6) {
 i2 = i2 | 0;
 i5 = i5 | 0;
 i6 = i6 | 0;
 var d1 = 0.0, i3 = 0, i4 = 0, i7 = 0, i8 = 0;
 i8 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i7 = i8;
 if ((i2 | 0) == (i5 | 0)) {
  HEAP32[i6 >> 2] = 4;
  d1 = 0.0;
 } else {
  i3 = ___errno_location() | 0;
  i4 = HEAP32[i3 >> 2] | 0;
  HEAP32[i3 >> 2] = 0;
  d1 = +_strtold_l(i2, i7, __ZNSt3__16__clocEv() | 0);
  i2 = HEAP32[i3 >> 2] | 0;
  if (!i2) HEAP32[i3 >> 2] = i4;
  if ((HEAP32[i7 >> 2] | 0) == (i5 | 0)) {
   if ((i2 | 0) == 34) HEAP32[i6 >> 2] = 4;
  } else {
   HEAP32[i6 >> 2] = 4;
   d1 = 0.0;
  }
 }
 STACKTOP = i8;
 return +d1;
}

function __ZNSt3__115__num_get_floatIdEET_PKcS3_Rj(i2, i5, i6) {
 i2 = i2 | 0;
 i5 = i5 | 0;
 i6 = i6 | 0;
 var d1 = 0.0, i3 = 0, i4 = 0, i7 = 0, i8 = 0;
 i8 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i7 = i8;
 if ((i2 | 0) == (i5 | 0)) {
  HEAP32[i6 >> 2] = 4;
  d1 = 0.0;
 } else {
  i3 = ___errno_location() | 0;
  i4 = HEAP32[i3 >> 2] | 0;
  HEAP32[i3 >> 2] = 0;
  d1 = +_strtold_l(i2, i7, __ZNSt3__16__clocEv() | 0);
  i2 = HEAP32[i3 >> 2] | 0;
  if (!i2) HEAP32[i3 >> 2] = i4;
  if ((HEAP32[i7 >> 2] | 0) == (i5 | 0)) {
   if ((i2 | 0) == 34) HEAP32[i6 >> 2] = 4;
  } else {
   HEAP32[i6 >> 2] = 4;
   d1 = 0.0;
  }
 }
 STACKTOP = i8;
 return +d1;
}

function __ZN4wasm22SExpressionWasmBuilder8makeCallERNS_7ElementE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 var i3 = 0, i4 = 0, i5 = 0;
 i3 = __ZN10MixedArena5allocIN4wasm4CallEEEPT_v(HEAP32[i2 + 4 >> 2] | 0) | 0;
 i4 = i3 + 20 | 0;
 i5 = __ZN4wasm7Element4listEv(i1) | 0;
 i5 = __ZN4wasm7Element3strEv(HEAP32[(HEAP32[i5 >> 2] | 0) + 4 >> 2] | 0) | 0;
 HEAP32[i4 >> 2] = i5;
 i4 = __ZNSt3__13mapIN4wasm4NameENS1_8WasmTypeENS_4lessIS2_EENS_9allocatorINS_4pairIKS2_S3_EEEEEixERS8_(i2 + 52 | 0, i4) | 0;
 HEAP32[i3 + 4 >> 2] = HEAP32[i4 >> 2];
 __ZN4wasm22SExpressionWasmBuilder17parseCallOperandsINS_4CallEEEvRNS_7ElementEjPT_(i2, i1, 2, i3);
 return i3 | 0;
}

function __ZNSt3__16__treeINS_12__value_typeIN4wasm4NameEPNS2_6ExportEEENS_19__map_value_compareIS3_S6_NS_4lessIS3_EELb1EEENS_9allocatorIS6_EEE4findIS3_EENS_15__tree_iteratorIS6_PNS_11__tree_nodeIS6_PvEEiEERKT_(i2, i3) {
 i2 = i2 | 0;
 i3 = i3 | 0;
 var i1 = 0;
 i1 = i2 + 4 | 0;
 i2 = __ZNSt3__16__treeINS_12__value_typeIN4wasm4NameEPNS2_6ExportEEENS_19__map_value_compareIS3_S6_NS_4lessIS3_EELb1EEENS_9allocatorIS6_EEE13__lower_boundIS3_EENS_15__tree_iteratorIS6_PNS_11__tree_nodeIS6_PvEEiEERKT_SJ_SJ_(i2, i3, HEAP32[i1 >> 2] | 0, i1) | 0;
 if ((i2 | 0) != (i1 | 0) ? !(__ZNK6cashew7IStringltERKS0_(i3, i2 + 16 | 0) | 0) : 0) i1 = i2;
 return i1 | 0;
}

function __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv(i3, i1) {
 i3 = i3 | 0;
 i1 = i1 | 0;
 var i2 = 0, i4 = 0, i5 = 0;
 i5 = i1 + 12 | 0;
 i2 = HEAP8[i5 >> 0] | 0;
 i4 = (i2 & 1) == 0;
 i2 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj(i1, i4 ? i5 + 1 | 0 : HEAP32[i1 + 20 >> 2] | 0, i4 ? (i2 & 255) >>> 1 : HEAP32[i1 + 16 >> 2] | 0) | 0;
 HEAP32[i3 >> 2] = HEAP32[i2 >> 2];
 HEAP32[i3 + 4 >> 2] = HEAP32[i2 + 4 >> 2];
 HEAP32[i3 + 8 >> 2] = HEAP32[i2 + 8 >> 2];
 i1 = 0;
 while (1) {
  if ((i1 | 0) == 3) break;
  HEAP32[i2 + (i1 << 2) >> 2] = 0;
  i1 = i1 + 1 | 0;
 }
 return;
}

function __ZNSt3__114__split_bufferINS_13unordered_mapIN6cashew7IStringEiNS_4hashIS3_EENS_8equal_toIS3_EENS_9allocatorINS_4pairIKS3_iEEEEEERNS8_ISD_EEED2Ev(i4) {
 i4 = i4 | 0;
 var i1 = 0, i2 = 0, i3 = 0;
 i1 = HEAP32[i4 + 4 >> 2] | 0;
 i2 = i4 + 8 | 0;
 while (1) {
  i3 = HEAP32[i2 >> 2] | 0;
  if ((i3 | 0) == (i1 | 0)) break;
  i3 = i3 + -20 | 0;
  HEAP32[i2 >> 2] = i3;
  __ZNSt3__112__hash_tableINS_17__hash_value_typeIN6cashew7IStringEiEENS_22__unordered_map_hasherIS3_S4_NS_4hashIS3_EELb1EEENS_21__unordered_map_equalIS3_S4_NS_8equal_toIS3_EELb1EEENS_9allocatorIS4_EEED2Ev(i3);
 }
 i1 = HEAP32[i4 >> 2] | 0;
 if (i1 | 0) __ZdlPv(i1);
 return;
}

function _strtox(i7, i6, i1) {
 i7 = i7 | 0;
 i6 = i6 | 0;
 i1 = i1 | 0;
 var d2 = 0.0, i3 = 0, i4 = 0, i5 = 0, i8 = 0;
 i8 = STACKTOP;
 STACKTOP = STACKTOP + 112 | 0;
 i5 = i8;
 i3 = i5;
 i4 = i3 + 112 | 0;
 do {
  HEAP32[i3 >> 2] = 0;
  i3 = i3 + 4 | 0;
 } while ((i3 | 0) < (i4 | 0));
 i3 = i5 + 4 | 0;
 HEAP32[i3 >> 2] = i7;
 i4 = i5 + 8 | 0;
 HEAP32[i4 >> 2] = -1;
 HEAP32[i5 + 44 >> 2] = i7;
 HEAP32[i5 + 76 >> 2] = -1;
 ___shlim(i5, 0);
 d2 = +___floatscan(i5, i1, 1);
 i1 = (HEAP32[i3 >> 2] | 0) - (HEAP32[i4 >> 2] | 0) + (HEAP32[i5 + 108 >> 2] | 0) | 0;
 if (i6 | 0) HEAP32[i6 >> 2] = i1 | 0 ? i7 + i1 | 0 : i7;
 STACKTOP = i8;
 return +d2;
}

function __ZNSt3__16vectorIN4wasm4NameENS_9allocatorIS2_EEEC2ERKS5_(i3, i4) {
 i3 = i3 | 0;
 i4 = i4 | 0;
 var i1 = 0, i2 = 0, i5 = 0;
 HEAP32[i3 >> 2] = 0;
 i5 = i3 + 4 | 0;
 HEAP32[i5 >> 2] = 0;
 HEAP32[i3 + 8 >> 2] = 0;
 i1 = i4 + 4 | 0;
 i2 = (HEAP32[i1 >> 2] | 0) - (HEAP32[i4 >> 2] | 0) >> 2;
 L1 : do if (i2 | 0) {
  __ZNSt3__16vectorIN4wasm4NameENS_9allocatorIS2_EEE8allocateEj(i3, i2);
  i2 = HEAP32[i1 >> 2] | 0;
  i1 = HEAP32[i4 >> 2] | 0;
  while (1) {
   if ((i1 | 0) == (i2 | 0)) break L1;
   HEAP32[HEAP32[i5 >> 2] >> 2] = HEAP32[i1 >> 2];
   HEAP32[i5 >> 2] = (HEAP32[i5 >> 2] | 0) + 4;
   i1 = i1 + 4 | 0;
  }
 } while (0);
 return;
}

function __ZNSt3__113__vector_baseINS_13unordered_mapIN6cashew7IStringEiNS_4hashIS3_EENS_8equal_toIS3_EENS_9allocatorINS_4pairIKS3_iEEEEEENS8_ISD_EEED2Ev(i4) {
 i4 = i4 | 0;
 var i1 = 0, i2 = 0, i3 = 0;
 i1 = HEAP32[i4 >> 2] | 0;
 if (i1 | 0) {
  i2 = i4 + 4 | 0;
  while (1) {
   i3 = HEAP32[i2 >> 2] | 0;
   if ((i3 | 0) == (i1 | 0)) break;
   i3 = i3 + -20 | 0;
   HEAP32[i2 >> 2] = i3;
   __ZNSt3__112__hash_tableINS_17__hash_value_typeIN6cashew7IStringEiEENS_22__unordered_map_hasherIS3_S4_NS_4hashIS3_EELb1EEENS_21__unordered_map_equalIS3_S4_NS_8equal_toIS3_EELb1EEENS_9allocatorIS4_EEED2Ev(i3);
  }
  __ZdlPv(HEAP32[i4 >> 2] | 0);
 }
 return;
}

function __ZN4wasm17RemoveUnusedNames11visitSwitchEPNS_6SwitchE(i1, i5) {
 i1 = i1 | 0;
 i5 = i5 | 0;
 var i2 = 0, i3 = 0, i4 = 0, i6 = 0, i7 = 0;
 i7 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i3 = i7 + 8 | 0;
 i6 = i7;
 i4 = HEAP32[i5 + 12 >> 2] | 0;
 i1 = i1 + 40 | 0;
 i2 = HEAP32[i5 + 8 >> 2] | 0;
 while (1) {
  if ((i2 | 0) == (i4 | 0)) break;
  HEAP32[i6 >> 2] = HEAP32[i2 >> 2];
  __ZNSt3__16__treeIN4wasm4NameENS_4lessIS2_EENS_9allocatorIS2_EEE15__insert_uniqueERKS2_(i3, i1, i6);
  i2 = i2 + 4 | 0;
 }
 __ZNSt3__16__treeIN4wasm4NameENS_4lessIS2_EENS_9allocatorIS2_EEE15__insert_uniqueERKS2_(i3, i1, i5 + 20 | 0);
 STACKTOP = i7;
 return;
}

function __ZNSt3__16__treeINS_12__value_typeIjjEENS_19__map_value_compareIjS2_NS_4lessIjEELb1EEENS_9allocatorIS2_EEE16__insert_node_atEPNS_16__tree_node_baseIPvEERSD_SD_(i4, i2, i3, i1) {
 i4 = i4 | 0;
 i2 = i2 | 0;
 i3 = i3 | 0;
 i1 = i1 | 0;
 HEAP32[i1 >> 2] = 0;
 HEAP32[i1 + 4 >> 2] = 0;
 HEAP32[i1 + 8 >> 2] = i2;
 HEAP32[i3 >> 2] = i1;
 i2 = HEAP32[i4 >> 2] | 0;
 if (HEAP32[i2 >> 2] | 0) {
  HEAP32[i4 >> 2] = HEAP32[i2 >> 2];
  i1 = HEAP32[i3 >> 2] | 0;
 }
 __ZNSt3__127__tree_balance_after_insertIPNS_16__tree_node_baseIPvEEEEvT_S5_(HEAP32[i4 + 4 >> 2] | 0, i1);
 i4 = i4 + 8 | 0;
 HEAP32[i4 >> 2] = (HEAP32[i4 >> 2] | 0) + 1;
 return;
}

function __ZNSt3__16vectorIN4wasm7LiteralENS_9allocatorIS2_EEE7reserveEj(i4, i2) {
 i4 = i4 | 0;
 i2 = i2 | 0;
 var i1 = 0, i3 = 0, i5 = 0;
 i5 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i3 = i5;
 i1 = HEAP32[i4 >> 2] | 0;
 if ((HEAP32[i4 + 8 >> 2] | 0) - i1 >> 4 >>> 0 < i2 >>> 0) {
  __ZNSt3__114__split_bufferIN4wasm7LiteralERNS_9allocatorIS2_EEEC2EjjS5_(i3, i2, (HEAP32[i4 + 4 >> 2] | 0) - i1 >> 4, i4 + 8 | 0);
  __ZNSt3__16vectorIN4wasm7LiteralENS_9allocatorIS2_EEE26__swap_out_circular_bufferERNS_14__split_bufferIS2_RS4_EE(i4, i3);
  __ZNSt3__114__split_bufferIN4wasm7LiteralERNS_9allocatorIS2_EEED2Ev(i3);
 }
 STACKTOP = i5;
 return;
}

function __ZN4wasm6getSigEPNS_12FunctionTypeE(i4, i3) {
 i4 = i4 | 0;
 i3 = i3 | 0;
 var i1 = 0, i2 = 0;
 i1 = 0;
 while (1) {
  if ((i1 | 0) == 3) break;
  HEAP32[i4 + (i1 << 2) >> 2] = 0;
  i1 = i1 + 1 | 0;
 }
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE9push_backEc(i4, __ZN4wasm6getSigENS_8WasmTypeE(HEAP32[i3 + 4 >> 2] | 0) | 0);
 i2 = HEAP32[i3 + 12 >> 2] | 0;
 i1 = HEAP32[i3 + 8 >> 2] | 0;
 while (1) {
  if ((i1 | 0) == (i2 | 0)) break;
  __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE9push_backEc(i4, __ZN4wasm6getSigENS_8WasmTypeE(HEAP32[i1 >> 2] | 0) | 0);
  i1 = i1 + 4 | 0;
 }
 return;
}

function _vasprintf(i7, i6, i5) {
 i7 = i7 | 0;
 i6 = i6 | 0;
 i5 = i5 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i8 = 0;
 i8 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i1 = i8;
 i2 = _malloc(240) | 0;
 do if (i2) {
  HEAP32[i1 >> 2] = HEAP32[i5 >> 2];
  i1 = _vsnprintf(i2, 240, i6, i1) | 0;
  if (i1 >>> 0 < 240) {
   i6 = _realloc(i2, i1 + 1 | 0) | 0;
   HEAP32[i7 >> 2] = i6 | 0 ? i6 : i2;
   break;
  }
  _free(i2);
  if ((i1 | 0) >= 0 ? (i4 = i1 + 1 | 0, i3 = _malloc(i4) | 0, HEAP32[i7 >> 2] = i3, (i3 | 0) != 0) : 0) i1 = _vsnprintf(i3, i4, i6, i5) | 0; else i1 = -1;
 } else i1 = -1; while (0);
 STACKTOP = i8;
 return i1 | 0;
}

function _realloc(i3, i2) {
 i3 = i3 | 0;
 i2 = i2 | 0;
 var i1 = 0, i4 = 0;
 if (!i3) {
  i3 = _malloc(i2) | 0;
  return i3 | 0;
 }
 if (i2 >>> 0 > 4294967231) {
  i3 = ___errno_location() | 0;
  HEAP32[i3 >> 2] = 12;
  i3 = 0;
  return i3 | 0;
 }
 i1 = _try_realloc_chunk(i3 + -8 | 0, i2 >>> 0 < 11 ? 16 : i2 + 11 & -8) | 0;
 if (i1 | 0) {
  i3 = i1 + 8 | 0;
  return i3 | 0;
 }
 i1 = _malloc(i2) | 0;
 if (!i1) {
  i3 = 0;
  return i3 | 0;
 }
 i4 = HEAP32[i3 + -4 >> 2] | 0;
 i4 = (i4 & -8) - ((i4 & 3 | 0) == 0 ? 8 : 4) | 0;
 _memcpy(i1 | 0, i3 | 0, (i4 >>> 0 < i2 >>> 0 ? i4 : i2) | 0) | 0;
 _free(i3);
 i3 = i1;
 return i3 | 0;
}

function __ZN4wasm10Expression4castINS_6SwitchEEEPT_v(i2) {
 i2 = i2 | 0;
 var i1 = 0, i3 = 0, i4 = 0, i5 = 0;
 i3 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i1 = i3;
 i4 = HEAP32[i2 >> 2] | 0;
 HEAP32[i1 >> 2] = 5;
 i5 = i1 + 4 | 0;
 HEAP32[i5 >> 2] = 0;
 HEAP32[i5 + 4 >> 2] = 0;
 HEAP32[i5 + 8 >> 2] = 0;
 HEAP32[i5 + 12 >> 2] = 0;
 HEAP32[i5 + 16 >> 2] = 0;
 HEAP32[i5 + 20 >> 2] = 0;
 HEAP32[i5 + 24 >> 2] = 0;
 HEAP32[i5 >> 2] = 5;
 if ((i4 | 0) == 5) {
  __ZNSt3__113__vector_baseIN4wasm4NameENS_9allocatorIS2_EEED2Ev(i1 + 8 | 0);
  STACKTOP = i3;
  return i2 | 0;
 } else ___assert_fail(15191, 14223, 775, 15206);
 return 0;
}

function __ZNSt3__13mapIjN4wasm14SimplifyLocals12SinkableInfoENS_4lessIjEENS_9allocatorINS_4pairIKjS3_EEEEE2atERS8_(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 var i3 = 0;
 i3 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i1 = __ZNSt3__13mapIjN4wasm14SimplifyLocals12SinkableInfoENS_4lessIjEENS_9allocatorINS_4pairIKjS3_EEEEE16__find_equal_keyERPNS_16__tree_node_baseIPvEERS8_(i2, i3, i1) | 0;
 i1 = HEAP32[i1 >> 2] | 0;
 if (!i1) {
  i3 = ___cxa_allocate_exception(8) | 0;
  __ZNSt11logic_errorC2EPKc(i3, 23014);
  HEAP32[i3 >> 2] = 12464;
  ___cxa_throw(i3 | 0, 2904, 207);
 } else {
  STACKTOP = i3;
  return i1 + 20 | 0;
 }
 return 0;
}

function _memcpy(i1, i4, i2) {
 i1 = i1 | 0;
 i4 = i4 | 0;
 i2 = i2 | 0;
 var i3 = 0;
 if ((i2 | 0) >= 4096) return _emscripten_memcpy_big(i1 | 0, i4 | 0, i2 | 0) | 0;
 i3 = i1 | 0;
 if ((i1 & 3) == (i4 & 3)) {
  while (i1 & 3) {
   if (!i2) return i3 | 0;
   HEAP8[i1 >> 0] = HEAP8[i4 >> 0] | 0;
   i1 = i1 + 1 | 0;
   i4 = i4 + 1 | 0;
   i2 = i2 - 1 | 0;
  }
  while ((i2 | 0) >= 4) {
   HEAP32[i1 >> 2] = HEAP32[i4 >> 2];
   i1 = i1 + 4 | 0;
   i4 = i4 + 4 | 0;
   i2 = i2 - 4 | 0;
  }
 }
 while ((i2 | 0) > 0) {
  HEAP8[i1 >> 0] = HEAP8[i4 >> 0] | 0;
  i1 = i1 + 1 | 0;
  i4 = i4 + 1 | 0;
  i2 = i2 - 1 | 0;
 }
 return i3 | 0;
}

function __ZNSt3__16__treeINS_12__value_typeIN4wasm4NameEjEENS_19__map_value_compareIS3_S4_NS_4lessIS3_EELb1EEENS_9allocatorIS4_EEE7destroyEPNS_11__tree_nodeIS4_PvEE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 if (!i1) return; else {
  __ZNSt3__16__treeINS_12__value_typeIN4wasm4NameEjEENS_19__map_value_compareIS3_S4_NS_4lessIS3_EELb1EEENS_9allocatorIS4_EEE7destroyEPNS_11__tree_nodeIS4_PvEE(i2, HEAP32[i1 >> 2] | 0);
  __ZNSt3__16__treeINS_12__value_typeIN4wasm4NameEjEENS_19__map_value_compareIS3_S4_NS_4lessIS3_EELb1EEENS_9allocatorIS4_EEE7destroyEPNS_11__tree_nodeIS4_PvEE(i2, HEAP32[i1 + 4 >> 2] | 0);
  __ZdlPv(i1);
  return;
 }
}

function __ZNSt3__16__treeINS_12__value_typeIjN4wasm14SimplifyLocals12SinkableInfoEEENS_19__map_value_compareIjS5_NS_4lessIjEELb1EEENS_9allocatorIS5_EEE4findIjEENS_15__tree_iteratorIS5_PNS_11__tree_nodeIS5_PvEEiEERKT_(i1, i2) {
 i1 = i1 | 0;
 i2 = i2 | 0;
 var i3 = 0, i4 = 0;
 i4 = i1 + 4 | 0;
 i3 = HEAP32[i2 >> 2] | 0;
 i1 = i4;
 i2 = i4;
 L1 : while (1) {
  while (1) {
   i2 = HEAP32[i2 >> 2] | 0;
   if (!i2) break L1;
   if ((HEAP32[i2 + 16 >> 2] | 0) >>> 0 >= i3 >>> 0) break;
   i2 = i2 + 4 | 0;
  }
  i1 = i2;
 }
 if (!((i1 | 0) != (i4 | 0) ? i3 >>> 0 >= (HEAP32[i1 + 16 >> 2] | 0) >>> 0 : 0)) i1 = i4;
 return i1 | 0;
}

function __ZZN4wasm6WalkerINS_17RemoveUnusedNamesENS_7VisitorIS1_vEEE9startWalkEPNS_6ModuleEENKUlvE_clEv(i3) {
 i3 = i3 | 0;
 var i1 = 0, i2 = 0;
 i2 = HEAP32[i3 + 4 >> 2] | 0;
 i1 = HEAP32[i2 >> 2] | 0;
 HEAP32[i2 >> 2] = i1 + 1;
 i2 = i3 + 8 | 0;
 if (i1 >>> 0 < (HEAP32[i2 >> 2] | 0) >>> 0) {
  __ZZN4wasm6WalkerINS_17RemoveUnusedNamesENS_7VisitorIS1_vEEE9startWalkEPNS_6ModuleEENKUlPS1_PNS_8FunctionEE_clES7_S9_(i3 + 16 | 0, HEAP32[i3 >> 2] | 0, HEAP32[(HEAP32[(HEAP32[HEAP32[i3 + 12 >> 2] >> 2] | 0) + 36 >> 2] | 0) + (i1 << 2) >> 2] | 0);
  i1 = (i1 + 1 | 0) == (HEAP32[i2 >> 2] | 0) & 1;
 } else i1 = 1;
 return i1 | 0;
}

function __ZNSt3__115basic_streambufIwNS_11char_traitsIwEEE6xsputnEPKwi(i7, i1, i6) {
 i7 = i7 | 0;
 i1 = i1 | 0;
 i6 = i6 | 0;
 var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i8 = 0;
 i4 = i7 + 24 | 0;
 i5 = i7 + 28 | 0;
 i2 = i1;
 i1 = 0;
 while (1) {
  if ((i1 | 0) >= (i6 | 0)) break;
  i3 = HEAP32[i4 >> 2] | 0;
  if (i3 >>> 0 >= (HEAP32[i5 >> 2] | 0) >>> 0) {
   if ((FUNCTION_TABLE_iii[HEAP32[(HEAP32[i7 >> 2] | 0) + 52 >> 2] & 63](i7, HEAP32[i2 >> 2] | 0) | 0) == -1) break;
  } else {
   i8 = HEAP32[i2 >> 2] | 0;
   HEAP32[i4 >> 2] = i3 + 4;
   HEAP32[i3 >> 2] = i8;
  }
  i2 = i2 + 4 | 0;
  i1 = i1 + 1 | 0;
 }
 return i1 | 0;
}

function __ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE6xsgetnEPci(i7, i1, i6) {
 i7 = i7 | 0;
 i1 = i1 | 0;
 i6 = i6 | 0;
 var i2 = 0, i3 = 0, i4 = 0, i5 = 0;
 i4 = i7 + 12 | 0;
 i5 = i7 + 16 | 0;
 i3 = i1;
 i1 = 0;
 while (1) {
  if ((i1 | 0) >= (i6 | 0)) break;
  i2 = HEAP32[i4 >> 2] | 0;
  if (i2 >>> 0 < (HEAP32[i5 >> 2] | 0) >>> 0) {
   HEAP32[i4 >> 2] = i2 + 1;
   i2 = HEAP8[i2 >> 0] | 0;
  } else {
   i2 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i7 >> 2] | 0) + 40 >> 2] & 127](i7) | 0;
   if ((i2 | 0) == -1) break;
   i2 = i2 & 255;
  }
  HEAP8[i3 >> 0] = i2;
  i3 = i3 + 1 | 0;
  i1 = i1 + 1 | 0;
 }
 return i1 | 0;
}

function __ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE6xsputnEPKci(i7, i1, i6) {
 i7 = i7 | 0;
 i1 = i1 | 0;
 i6 = i6 | 0;
 var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i8 = 0;
 i4 = i7 + 24 | 0;
 i5 = i7 + 28 | 0;
 i2 = i1;
 i1 = 0;
 while (1) {
  if ((i1 | 0) >= (i6 | 0)) break;
  i3 = HEAP32[i4 >> 2] | 0;
  if (i3 >>> 0 >= (HEAP32[i5 >> 2] | 0) >>> 0) {
   if ((FUNCTION_TABLE_iii[HEAP32[(HEAP32[i7 >> 2] | 0) + 52 >> 2] & 63](i7, HEAPU8[i2 >> 0] | 0) | 0) == -1) break;
  } else {
   i8 = HEAP8[i2 >> 0] | 0;
   HEAP32[i4 >> 2] = i3 + 1;
   HEAP8[i3 >> 0] = i8;
  }
  i2 = i2 + 1 | 0;
  i1 = i1 + 1 | 0;
 }
 return i1 | 0;
}

function __ZNKSt3__18time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE11__get_year4ERiRS4_S4_RjRKNS_5ctypeIwEE(i1, i7, i2, i4, i6, i3) {
 i1 = i1 | 0;
 i7 = i7 | 0;
 i2 = i2 | 0;
 i4 = i4 | 0;
 i6 = i6 | 0;
 i3 = i3 | 0;
 var i5 = 0, i8 = 0;
 i5 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i1 = i5 + 4 | 0;
 i8 = i5;
 HEAP32[i8 >> 2] = HEAP32[i4 >> 2];
 HEAP32[i1 >> 2] = HEAP32[i8 >> 2];
 i1 = __ZNSt3__120__get_up_to_n_digitsIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEEEiRT0_S5_RjRKNS_5ctypeIT_EEi(i2, i1, i6, i3, 4) | 0;
 if (!(HEAP32[i6 >> 2] & 4)) HEAP32[i7 >> 2] = i1 + -1900;
 STACKTOP = i5;
 return;
}

function __ZNKSt3__18time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE11__get_year4ERiRS4_S4_RjRKNS_5ctypeIcEE(i1, i7, i2, i4, i6, i3) {
 i1 = i1 | 0;
 i7 = i7 | 0;
 i2 = i2 | 0;
 i4 = i4 | 0;
 i6 = i6 | 0;
 i3 = i3 | 0;
 var i5 = 0, i8 = 0;
 i5 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i1 = i5 + 4 | 0;
 i8 = i5;
 HEAP32[i8 >> 2] = HEAP32[i4 >> 2];
 HEAP32[i1 >> 2] = HEAP32[i8 >> 2];
 i1 = __ZNSt3__120__get_up_to_n_digitsIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEEEiRT0_S5_RjRKNS_5ctypeIT_EEi(i2, i1, i6, i3, 4) | 0;
 if (!(HEAP32[i6 >> 2] & 4)) HEAP32[i7 >> 2] = i1 + -1900;
 STACKTOP = i5;
 return;
}

function __ZN4wasm22SExpressionWasmBuilder9makeConstERNS_7ElementENS_8WasmTypeE(i3, i1, i2) {
 i3 = i3 | 0;
 i1 = i1 | 0;
 i2 = i2 | 0;
 var i4 = 0, i5 = 0, i6 = 0;
 i4 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i5 = i4 + 4 | 0;
 i6 = i4;
 i1 = __ZN4wasm7Element4listEv(i1) | 0;
 i1 = __ZN4wasm7Element3strEv(HEAP32[(HEAP32[i1 >> 2] | 0) + 4 >> 2] | 0) | 0;
 HEAP32[i6 >> 2] = i1;
 i1 = HEAP32[i3 + 4 >> 2] | 0;
 HEAP32[i5 >> 2] = HEAP32[i6 >> 2];
 i1 = __ZN4wasm10parseConstEN6cashew7IStringENS_8WasmTypeER10MixedArena(i5, i2, i1) | 0;
 if (!i1) __ZNKSt3__18functionIFvvEEclEv(i3 + 8 | 0);
 STACKTOP = i4;
 return i1 | 0;
}

function __ZNKSt3__110__time_put8__do_putEPcRS1_PK2tmcc(i9, i5, i6, i7, i3, i4) {
 i9 = i9 | 0;
 i5 = i5 | 0;
 i6 = i6 | 0;
 i7 = i7 | 0;
 i3 = i3 | 0;
 i4 = i4 | 0;
 var i1 = 0, i2 = 0, i8 = 0, i10 = 0;
 i10 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i8 = i10;
 HEAP8[i8 >> 0] = 37;
 i1 = i8 + 1 | 0;
 HEAP8[i1 >> 0] = i3;
 i2 = i8 + 2 | 0;
 HEAP8[i2 >> 0] = i4;
 HEAP8[i8 + 3 >> 0] = 0;
 if (i4 << 24 >> 24) {
  HEAP8[i1 >> 0] = i4;
  HEAP8[i2 >> 0] = i3;
 }
 i9 = i5 + (_strftime_l(i5 | 0, (HEAP32[i6 >> 2] | 0) - i5 | 0, i8 | 0, i7 | 0, HEAP32[i9 >> 2] | 0) | 0) | 0;
 HEAP32[i6 >> 2] = i9;
 STACKTOP = i10;
 return;
}

function __ZN4wasm16PrintSExpression11visitReturnEPNS_6ReturnE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 var i3 = 0;
 __Z12printOpeningRNSt3__113basic_ostreamIcNS_11char_traitsIcEEEEPKcb(HEAP32[i2 >> 2] | 0, 25504, 0) | 0;
 i1 = i1 + 8 | 0;
 i3 = HEAP32[i1 >> 2] | 0;
 if ((i3 | 0) != 0 ? (HEAP32[i3 >> 2] | 0) != 19 : 0) {
  __ZN4wasm16PrintSExpression9incIndentEv(i2);
  __ZN4wasm16PrintSExpression13printFullLineEPNS_10ExpressionE(i2, HEAP32[i1 >> 2] | 0);
  __ZN4wasm16PrintSExpression9decIndentEv(i2);
 } else __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(HEAP32[i2 >> 2] | 0, 33621) | 0;
 return;
}

function __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_(i3, i1) {
 i3 = i3 | 0;
 i1 = i1 | 0;
 var i2 = 0;
 HEAP32[i3 >> 2] = HEAP32[i1 >> 2];
 HEAP32[i3 + 4 >> 2] = HEAP32[i1 + 4 >> 2];
 HEAP32[i3 + 8 >> 2] = HEAP32[i1 + 8 >> 2];
 i2 = 0;
 while (1) {
  if ((i2 | 0) == 3) break;
  HEAP32[i1 + (i2 << 2) >> 2] = 0;
  i2 = i2 + 1 | 0;
 }
 i2 = i3 + 12 | 0;
 i1 = i1 + 12 | 0;
 HEAP32[i2 >> 2] = HEAP32[i1 >> 2];
 HEAP32[i2 + 4 >> 2] = HEAP32[i1 + 4 >> 2];
 HEAP32[i2 + 8 >> 2] = HEAP32[i1 + 8 >> 2];
 i2 = 0;
 while (1) {
  if ((i2 | 0) == 3) break;
  HEAP32[i1 + (i2 << 2) >> 2] = 0;
  i2 = i2 + 1 | 0;
 }
 return;
}

function __ZZN4wasm6WalkerINS_13ReorderLocalsENS_7VisitorIS1_vEEE9startWalkEPNS_6ModuleEENKUlvE_clEv(i3) {
 i3 = i3 | 0;
 var i1 = 0, i2 = 0;
 i2 = HEAP32[i3 + 4 >> 2] | 0;
 i1 = HEAP32[i2 >> 2] | 0;
 HEAP32[i2 >> 2] = i1 + 1;
 i2 = i3 + 8 | 0;
 if (i1 >>> 0 < (HEAP32[i2 >> 2] | 0) >>> 0) {
  __ZZN4wasm6WalkerINS_13ReorderLocalsENS_7VisitorIS1_vEEE9startWalkEPNS_6ModuleEENKUlPS1_PNS_8FunctionEE_clES7_S9_(i3 + 16 | 0, HEAP32[i3 >> 2] | 0, HEAP32[(HEAP32[(HEAP32[HEAP32[i3 + 12 >> 2] >> 2] | 0) + 36 >> 2] | 0) + (i1 << 2) >> 2] | 0);
  i1 = (i1 + 1 | 0) == (HEAP32[i2 >> 2] | 0) & 1;
 } else i1 = 1;
 return i1 | 0;
}

function _getc(i3) {
 i3 = i3 | 0;
 var i1 = 0, i2 = 0, i4 = 0;
 if ((HEAP32[i3 + 76 >> 2] | 0) >= 0 ? (___lockfile(i3) | 0) != 0 : 0) {
  i1 = i3 + 4 | 0;
  i2 = HEAP32[i1 >> 2] | 0;
  if (i2 >>> 0 < (HEAP32[i3 + 8 >> 2] | 0) >>> 0) {
   HEAP32[i1 >> 2] = i2 + 1;
   i1 = HEAPU8[i2 >> 0] | 0;
  } else i1 = ___uflow(i3) | 0;
 } else i4 = 3;
 do if ((i4 | 0) == 3) {
  i1 = i3 + 4 | 0;
  i2 = HEAP32[i1 >> 2] | 0;
  if (i2 >>> 0 < (HEAP32[i3 + 8 >> 2] | 0) >>> 0) {
   HEAP32[i1 >> 2] = i2 + 1;
   i1 = HEAPU8[i2 >> 0] | 0;
   break;
  } else {
   i1 = ___uflow(i3) | 0;
   break;
  }
 } while (0);
 return i1 | 0;
}

function ___toread(i3) {
 i3 = i3 | 0;
 var i1 = 0, i2 = 0;
 i1 = i3 + 74 | 0;
 i2 = HEAP8[i1 >> 0] | 0;
 HEAP8[i1 >> 0] = i2 + 255 | i2;
 i1 = i3 + 20 | 0;
 i2 = i3 + 44 | 0;
 if ((HEAP32[i1 >> 2] | 0) >>> 0 > (HEAP32[i2 >> 2] | 0) >>> 0) FUNCTION_TABLE_iiii[HEAP32[i3 + 36 >> 2] & 31](i3, 0, 0) | 0;
 HEAP32[i3 + 16 >> 2] = 0;
 HEAP32[i3 + 28 >> 2] = 0;
 HEAP32[i1 >> 2] = 0;
 i1 = HEAP32[i3 >> 2] | 0;
 if (i1 & 20) if (!(i1 & 4)) i1 = -1; else {
  HEAP32[i3 >> 2] = i1 | 32;
  i1 = -1;
 } else {
  i1 = HEAP32[i2 >> 2] | 0;
  HEAP32[i3 + 8 >> 2] = i1;
  HEAP32[i3 + 4 >> 2] = i1;
  i1 = 0;
 }
 return i1 | 0;
}

function __ZNSt3__16locale5__imp7installEPNS0_5facetEl(i2, i4, i5) {
 i2 = i2 | 0;
 i4 = i4 | 0;
 i5 = i5 | 0;
 var i1 = 0, i3 = 0;
 __ZNSt3__114__shared_count12__add_sharedEv(i4);
 i3 = i2 + 8 | 0;
 i1 = HEAP32[i3 >> 2] | 0;
 if ((HEAP32[i2 + 12 >> 2] | 0) - i1 >> 2 >>> 0 > i5 >>> 0) i2 = i3; else {
  __ZNSt3__16vectorIPNS_6locale5facetENS_15__sso_allocatorIS3_Lj28EEEE6resizeEj(i3, i5 + 1 | 0);
  i2 = i3;
  i1 = HEAP32[i3 >> 2] | 0;
 }
 i1 = HEAP32[i1 + (i5 << 2) >> 2] | 0;
 if (i1 | 0) __ZNSt3__114__shared_count16__release_sharedEv(i1) | 0;
 HEAP32[(HEAP32[i2 >> 2] | 0) + (i5 << 2) >> 2] = i4;
 return;
}

function __ZNSt3__115basic_streambufIwNS_11char_traitsIwEEE6xsgetnEPwi(i7, i1, i6) {
 i7 = i7 | 0;
 i1 = i1 | 0;
 i6 = i6 | 0;
 var i2 = 0, i3 = 0, i4 = 0, i5 = 0;
 i4 = i7 + 12 | 0;
 i5 = i7 + 16 | 0;
 i3 = i1;
 i1 = 0;
 while (1) {
  if ((i1 | 0) >= (i6 | 0)) break;
  i2 = HEAP32[i4 >> 2] | 0;
  if (i2 >>> 0 >= (HEAP32[i5 >> 2] | 0) >>> 0) {
   i2 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i7 >> 2] | 0) + 40 >> 2] & 127](i7) | 0;
   if ((i2 | 0) == -1) break;
  } else {
   HEAP32[i4 >> 2] = i2 + 4;
   i2 = HEAP32[i2 >> 2] | 0;
  }
  HEAP32[i3 >> 2] = i2;
  i3 = i3 + 4 | 0;
  i1 = i1 + 1 | 0;
 }
 return i1 | 0;
}

function _strtox_519(i8, i7, i3, i1, i2) {
 i8 = i8 | 0;
 i7 = i7 | 0;
 i3 = i3 | 0;
 i1 = i1 | 0;
 i2 = i2 | 0;
 var i4 = 0, i5 = 0, i6 = 0, i9 = 0;
 i9 = STACKTOP;
 STACKTOP = STACKTOP + 112 | 0;
 i6 = i9;
 HEAP32[i6 >> 2] = 0;
 i4 = i6 + 4 | 0;
 HEAP32[i4 >> 2] = i8;
 HEAP32[i6 + 44 >> 2] = i8;
 i5 = i6 + 8 | 0;
 HEAP32[i5 >> 2] = (i8 | 0) < 0 ? -1 : i8 + 2147483647 | 0;
 HEAP32[i6 + 76 >> 2] = -1;
 ___shlim(i6, 0);
 i1 = ___intscan(i6, i3, 1, i1, i2) | 0;
 if (i7 | 0) HEAP32[i7 >> 2] = i8 + ((HEAP32[i4 >> 2] | 0) + (HEAP32[i6 + 108 >> 2] | 0) - (HEAP32[i5 >> 2] | 0));
 STACKTOP = i9;
 return i1 | 0;
}

function __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6resizeEjc(i5, i4, i3) {
 i5 = i5 | 0;
 i4 = i4 | 0;
 i3 = i3 | 0;
 var i1 = 0, i2 = 0;
 i1 = HEAP8[i5 >> 0] | 0;
 i2 = (i1 & 1) == 0;
 if (i2) i1 = (i1 & 255) >>> 1; else i1 = HEAP32[i5 + 4 >> 2] | 0;
 do if (i1 >>> 0 >= i4 >>> 0) if (i2) {
  HEAP8[i5 + 1 + i4 >> 0] = 0;
  HEAP8[i5 >> 0] = i4 << 1;
  break;
 } else {
  HEAP8[(HEAP32[i5 + 8 >> 2] | 0) + i4 >> 0] = 0;
  HEAP32[i5 + 4 >> 2] = i4;
  break;
 } else __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6appendEjc(i5, i4 - i1 | 0, i3) | 0; while (0);
 return;
}

function __ZNK10__cxxabiv117__class_type_info24process_found_base_classEPNS_19__dynamic_cast_infoEPvi(i1, i4, i3, i5) {
 i1 = i1 | 0;
 i4 = i4 | 0;
 i3 = i3 | 0;
 i5 = i5 | 0;
 var i2 = 0;
 i1 = i4 + 16 | 0;
 i2 = HEAP32[i1 >> 2] | 0;
 do if (i2) {
  if ((i2 | 0) != (i3 | 0)) {
   i5 = i4 + 36 | 0;
   HEAP32[i5 >> 2] = (HEAP32[i5 >> 2] | 0) + 1;
   HEAP32[i4 + 24 >> 2] = 2;
   HEAP8[i4 + 54 >> 0] = 1;
   break;
  }
  i1 = i4 + 24 | 0;
  if ((HEAP32[i1 >> 2] | 0) == 2) HEAP32[i1 >> 2] = i5;
 } else {
  HEAP32[i1 >> 2] = i3;
  HEAP32[i4 + 24 >> 2] = i5;
  HEAP32[i4 + 36 >> 2] = 1;
 } while (0);
 return;
}

function __ZNSt3__110__stdinbufIwEC2EP8_IO_FILEP11__mbstate_t(i3, i1, i2) {
 i3 = i3 | 0;
 i1 = i1 | 0;
 i2 = i2 | 0;
 var i4 = 0, i5 = 0, i6 = 0;
 i4 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i6 = i4 + 4 | 0;
 i5 = i4;
 __ZNSt3__115basic_streambufIwNS_11char_traitsIwEEEC2Ev(i3);
 HEAP32[i3 >> 2] = 8756;
 HEAP32[i3 + 32 >> 2] = i1;
 HEAP32[i3 + 40 >> 2] = i2;
 HEAP32[i3 + 48 >> 2] = -1;
 HEAP8[i3 + 52 >> 0] = 0;
 __ZNSt3__16localeC2ERKS0_(i6, i3 + 4 | 0);
 HEAP32[i5 >> 2] = HEAP32[i6 >> 2];
 __ZNSt3__110__stdinbufIwE5imbueERKNS_6localeE(i3, i5);
 __ZNSt3__16localeD2Ev(i5);
 STACKTOP = i4;
 return;
}

function __ZNSt3__110__stdinbufIcEC2EP8_IO_FILEP11__mbstate_t(i3, i1, i2) {
 i3 = i3 | 0;
 i1 = i1 | 0;
 i2 = i2 | 0;
 var i4 = 0, i5 = 0, i6 = 0;
 i4 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i6 = i4 + 4 | 0;
 i5 = i4;
 __ZNSt3__115basic_streambufIcNS_11char_traitsIcEEEC2Ev(i3);
 HEAP32[i3 >> 2] = 8628;
 HEAP32[i3 + 32 >> 2] = i1;
 HEAP32[i3 + 40 >> 2] = i2;
 HEAP32[i3 + 48 >> 2] = -1;
 HEAP8[i3 + 52 >> 0] = 0;
 __ZNSt3__16localeC2ERKS0_(i6, i3 + 4 | 0);
 HEAP32[i5 >> 2] = HEAP32[i6 >> 2];
 __ZNSt3__110__stdinbufIcE5imbueERKNS_6localeE(i3, i5);
 __ZNSt3__16localeD2Ev(i5);
 STACKTOP = i4;
 return;
}

function __ZNSt3__16__treeIN4wasm4NameENS_4lessIS2_EENS_9allocatorIS2_EEE16__insert_node_atEPNS_16__tree_node_baseIPvEERSB_SB_(i4, i2, i3, i1) {
 i4 = i4 | 0;
 i2 = i2 | 0;
 i3 = i3 | 0;
 i1 = i1 | 0;
 HEAP32[i1 >> 2] = 0;
 HEAP32[i1 + 4 >> 2] = 0;
 HEAP32[i1 + 8 >> 2] = i2;
 HEAP32[i3 >> 2] = i1;
 i2 = HEAP32[i4 >> 2] | 0;
 if (HEAP32[i2 >> 2] | 0) {
  HEAP32[i4 >> 2] = HEAP32[i2 >> 2];
  i1 = HEAP32[i3 >> 2] | 0;
 }
 __ZNSt3__127__tree_balance_after_insertIPNS_16__tree_node_baseIPvEEEEvT_S5_(HEAP32[i4 + 4 >> 2] | 0, i1);
 i4 = i4 + 8 | 0;
 HEAP32[i4 >> 2] = (HEAP32[i4 >> 2] | 0) + 1;
 return;
}

function __ZNSt3__112__hash_tableINS_17__hash_value_typeIN6cashew7IStringEiEENS_22__unordered_map_hasherIS3_S4_NS_4hashIS3_EELb1EEENS_21__unordered_map_equalIS3_S4_NS_8equal_toIS3_EELb1EEENS_9allocatorIS4_EEED2Ev(i2) {
 i2 = i2 | 0;
 var i1 = 0;
 __ZNSt3__112__hash_tableINS_17__hash_value_typeIN6cashew7IStringEiEENS_22__unordered_map_hasherIS3_S4_NS_4hashIS3_EELb1EEENS_21__unordered_map_equalIS3_S4_NS_8equal_toIS3_EELb1EEENS_9allocatorIS4_EEE12__deallocateEPNS_11__hash_nodeIS4_PvEE(i2, HEAP32[i2 + 8 >> 2] | 0);
 i1 = HEAP32[i2 >> 2] | 0;
 HEAP32[i2 >> 2] = 0;
 if (i1 | 0) __ZdlPv(i1);
 return;
}

function __ZNSt3__16vectorIPNS_6locale5facetENS_15__sso_allocatorIS3_Lj28EEEE6resizeEj(i5, i4) {
 i5 = i5 | 0;
 i4 = i4 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i6 = 0;
 i6 = i5 + 4 | 0;
 i1 = HEAP32[i6 >> 2] | 0;
 i3 = HEAP32[i5 >> 2] | 0;
 i2 = i1 - i3 >> 2;
 L1 : do if (i2 >>> 0 >= i4 >>> 0) {
  if (i2 >>> 0 > i4 >>> 0) {
   i2 = i3 + (i4 << 2) | 0;
   while (1) {
    if ((i1 | 0) == (i2 | 0)) break L1;
    i5 = i1 + -4 | 0;
    HEAP32[i6 >> 2] = i5;
    i1 = i5;
   }
  }
 } else __ZNSt3__16vectorIPNS_6locale5facetENS_15__sso_allocatorIS3_Lj28EEEE8__appendEj(i5, i4 - i2 | 0); while (0);
 return;
}

function _trunc(d1) {
 d1 = +d1;
 var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0;
 HEAPF64[tempDoublePtr >> 3] = d1;
 i2 = HEAP32[tempDoublePtr >> 2] | 0;
 i3 = HEAP32[tempDoublePtr + 4 >> 2] | 0;
 i6 = _bitshift64Lshr(i2 | 0, i3 | 0, 52) | 0;
 i6 = (i6 & 2047) + -1011 | 0;
 if ((i6 | 0) <= 63 ? (i5 = (i6 | 0) < 12, i4 = _bitshift64Lshr(-1, -1, i6 | 0) | 0, i4 = i5 ? -1 : i4, i5 = i5 ? 2147483647 : tempRet0, !((i4 & i2 | 0) == 0 & (i5 & i3 | 0) == 0)) : 0) {
  HEAP32[tempDoublePtr >> 2] = i2 & ~i4;
  HEAP32[tempDoublePtr + 4 >> 2] = i3 & ~i5;
  d1 = +HEAPF64[tempDoublePtr >> 3];
 }
 return +d1;
}

function __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE5eraseEjj(i6) {
 i6 = i6 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0;
 i1 = HEAP8[i6 >> 0] | 0;
 if (!(i1 & 1)) {
  i2 = (i1 & 255) >>> 1;
  i5 = i6 + 1 | 0;
 } else {
  i2 = HEAP32[i6 + 4 >> 2] | 0;
  i5 = HEAP32[i6 + 8 >> 2] | 0;
 }
 i3 = (i2 | 0) != 0 & 1;
 i4 = i2 - i3 | 0;
 if ((i2 | 0) != (i3 | 0)) {
  _memmove(i5 | 0, i5 + i3 | 0, i4 | 0) | 0;
  i1 = HEAP8[i6 >> 0] | 0;
 }
 if (!(i1 & 1)) HEAP8[i6 >> 0] = i4 << 1; else HEAP32[i6 + 4 >> 2] = i4;
 HEAP8[i5 + i4 >> 0] = 0;
 return;
}

function __ZN10__cxxabiv112_GLOBAL__N_119parse_cv_qualifiersEPKcS2_Rj(i1, i2, i4) {
 i1 = i1 | 0;
 i2 = i2 | 0;
 i4 = i4 | 0;
 var i3 = 0;
 HEAP32[i4 >> 2] = 0;
 if ((i1 | 0) != (i2 | 0)) {
  i2 = HEAP8[i1 >> 0] | 0;
  if (i2 << 24 >> 24 == 114) {
   HEAP32[i4 >> 2] = 4;
   i2 = i1 + 1 | 0;
   i1 = i2;
   i2 = HEAP8[i2 >> 0] | 0;
   i3 = 4;
  } else i3 = 0;
  if (i2 << 24 >> 24 == 86) {
   i3 = i3 | 2;
   HEAP32[i4 >> 2] = i3;
   i2 = i1 + 1 | 0;
   i1 = i2;
   i2 = HEAP8[i2 >> 0] | 0;
  }
  if (i2 << 24 >> 24 == 75) {
   HEAP32[i4 >> 2] = i3 | 1;
   i1 = i1 + 1 | 0;
  }
 }
 return i1 | 0;
}

function _fmt_u(i2, i3, i1) {
 i2 = i2 | 0;
 i3 = i3 | 0;
 i1 = i1 | 0;
 var i4 = 0;
 if (i3 >>> 0 > 0 | (i3 | 0) == 0 & i2 >>> 0 > 4294967295) while (1) {
  i4 = ___uremdi3(i2 | 0, i3 | 0, 10, 0) | 0;
  i1 = i1 + -1 | 0;
  HEAP8[i1 >> 0] = i4 | 48;
  i4 = ___udivdi3(i2 | 0, i3 | 0, 10, 0) | 0;
  if (i3 >>> 0 > 9 | (i3 | 0) == 9 & i2 >>> 0 > 4294967295) {
   i2 = i4;
   i3 = tempRet0;
  } else {
   i2 = i4;
   break;
  }
 }
 if (i2) while (1) {
  i1 = i1 + -1 | 0;
  HEAP8[i1 >> 0] = (i2 >>> 0) % 10 | 0 | 48;
  if (i2 >>> 0 < 10) break; else i2 = (i2 >>> 0) / 10 | 0;
 }
 return i1 | 0;
}

function __ZNSt3__114__split_bufferIPNS_6locale5facetERNS_15__sso_allocatorIS3_Lj28EEEEC2EjjS6_(i5, i3, i4, i1) {
 i5 = i5 | 0;
 i3 = i3 | 0;
 i4 = i4 | 0;
 i1 = i1 | 0;
 var i2 = 0;
 HEAP32[i5 + 12 >> 2] = 0;
 HEAP32[i5 + 16 >> 2] = i1;
 do if (i3) {
  i2 = i1 + 112 | 0;
  if (i3 >>> 0 < 29 & (HEAP8[i2 >> 0] | 0) == 0) {
   HEAP8[i2 >> 0] = 1;
   break;
  } else {
   i1 = __Znwj(i3 << 2) | 0;
   break;
  }
 } else i1 = 0; while (0);
 HEAP32[i5 >> 2] = i1;
 i4 = i1 + (i4 << 2) | 0;
 HEAP32[i5 + 8 >> 2] = i4;
 HEAP32[i5 + 4 >> 2] = i4;
 HEAP32[i5 + 12 >> 2] = i1 + (i3 << 2);
 return;
}

function __ZNKSt3__17collateIcE10do_compareEPKcS3_S3_S3_(i3, i1, i6, i2, i5) {
 i3 = i3 | 0;
 i1 = i1 | 0;
 i6 = i6 | 0;
 i2 = i2 | 0;
 i5 = i5 | 0;
 var i4 = 0, i7 = 0;
 while (1) {
  if ((i2 | 0) == (i5 | 0)) {
   i7 = 7;
   break;
  }
  if ((i1 | 0) == (i6 | 0)) {
   i1 = -1;
   break;
  }
  i3 = HEAP8[i1 >> 0] | 0;
  i4 = HEAP8[i2 >> 0] | 0;
  if (i3 << 24 >> 24 < i4 << 24 >> 24) {
   i1 = -1;
   break;
  }
  if (i4 << 24 >> 24 < i3 << 24 >> 24) {
   i1 = 1;
   break;
  }
  i2 = i2 + 1 | 0;
  i1 = i1 + 1 | 0;
 }
 if ((i7 | 0) == 7) i1 = (i1 | 0) != (i6 | 0) & 1;
 return i1 | 0;
}

function __ZNSt3__16__treeIjNS_4lessIjEENS_9allocatorIjEEE16__insert_node_atEPNS_16__tree_node_baseIPvEERS9_S9_(i4, i2, i3, i1) {
 i4 = i4 | 0;
 i2 = i2 | 0;
 i3 = i3 | 0;
 i1 = i1 | 0;
 HEAP32[i1 >> 2] = 0;
 HEAP32[i1 + 4 >> 2] = 0;
 HEAP32[i1 + 8 >> 2] = i2;
 HEAP32[i3 >> 2] = i1;
 i2 = HEAP32[i4 >> 2] | 0;
 if (HEAP32[i2 >> 2] | 0) {
  HEAP32[i4 >> 2] = HEAP32[i2 >> 2];
  i1 = HEAP32[i3 >> 2] | 0;
 }
 __ZNSt3__127__tree_balance_after_insertIPNS_16__tree_node_baseIPvEEEEvT_S5_(HEAP32[i4 + 4 >> 2] | 0, i1);
 i4 = i4 + 8 | 0;
 HEAP32[i4 >> 2] = (HEAP32[i4 >> 2] | 0) + 1;
 return;
}

function __ZNSt3__16__treeINS_12__value_typeIjN4wasm14SimplifyLocals12SinkableInfoEEENS_19__map_value_compareIjS5_NS_4lessIjEELb1EEENS_9allocatorIS5_EEEC2EOSC_(i5, i4) {
 i5 = i5 | 0;
 i4 = i4 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i6 = 0;
 HEAP32[i5 >> 2] = HEAP32[i4 >> 2];
 i1 = HEAP32[i4 + 4 >> 2] | 0;
 HEAP32[i5 + 4 >> 2] = i1;
 i2 = i4 + 8 | 0;
 i6 = HEAP32[i2 >> 2] | 0;
 HEAP32[i5 + 8 >> 2] = i6;
 i3 = i5 + 4 | 0;
 if (!i6) HEAP32[i5 >> 2] = i3; else {
  HEAP32[i1 + 8 >> 2] = i3;
  i6 = i4 + 4 | 0;
  HEAP32[i4 >> 2] = i6;
  HEAP32[i6 >> 2] = 0;
  HEAP32[i2 >> 2] = 0;
 }
 return;
}

function __ZNSt3__16__treeINS_12__value_typeIjjEENS_19__map_value_compareIjS2_NS_4lessIjEELb1EEENS_9allocatorIS2_EEE7destroyEPNS_11__tree_nodeIS2_PvEE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 if (!i1) return; else {
  __ZNSt3__16__treeINS_12__value_typeIjjEENS_19__map_value_compareIjS2_NS_4lessIjEELb1EEENS_9allocatorIS2_EEE7destroyEPNS_11__tree_nodeIS2_PvEE(i2, HEAP32[i1 >> 2] | 0);
  __ZNSt3__16__treeINS_12__value_typeIjjEENS_19__map_value_compareIjS2_NS_4lessIjEELb1EEENS_9allocatorIS2_EEE7destroyEPNS_11__tree_nodeIS2_PvEE(i2, HEAP32[i1 + 4 >> 2] | 0);
  __ZdlPv(i1);
  return;
 }
}

function __ZN4wasm22SExpressionWasmBuilderD2Ev(i1) {
 i1 = i1 | 0;
 __ZNSt3__113__vector_baseIN4wasm4NameENS_9allocatorIS2_EEED2Ev(i1 + 88 | 0);
 __ZNSt3__16__treeINS_12__value_typeIN4wasm4NameENS2_8WasmTypeEEENS_19__map_value_compareIS3_S5_NS_4lessIS3_EELb1EEENS_9allocatorIS5_EEED2Ev(i1 + 68 | 0);
 __ZNSt3__16__treeINS_12__value_typeIN4wasm4NameENS2_8WasmTypeEEENS_19__map_value_compareIS3_S5_NS_4lessIS3_EELb1EEENS_9allocatorIS5_EEED2Ev(i1 + 52 | 0);
 __ZNSt3__113__vector_baseIN4wasm4NameENS_9allocatorIS2_EEED2Ev(i1 + 32 | 0);
 __ZNSt3__18functionIFvvEED2Ev(i1 + 8 | 0);
 return;
}

function __ZNSt3__14stoiERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEPji(i3, i2, i1) {
 i3 = i3 | 0;
 i2 = i2 | 0;
 i1 = i1 | 0;
 var i4 = 0, i5 = 0;
 i4 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i5 = i4;
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6__initEPKcj(i5, 29758, 4);
 i3 = __ZNSt3__112_GLOBAL__N_117as_integer_helperIlNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEPFlPKcPPciEEET_RKS7_RKT0_PjiT1_(i5, i3, i2, i1) | 0;
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i5);
 STACKTOP = i4;
 return i3 | 0;
}

function __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcjj(i2, i3, i4, i1) {
 i2 = i2 | 0;
 i3 = i3 | 0;
 i4 = i4 | 0;
 i1 = i1 | 0;
 var i5 = 0;
 if (i1 >>> 0 > 4294967279) __ZNKSt3__121__basic_string_commonILb1EE20__throw_length_errorEv(i2);
 if (i1 >>> 0 < 11) {
  HEAP8[i2 >> 0] = i4 << 1;
  i1 = i2 + 1 | 0;
 } else {
  i5 = i1 + 16 & -16;
  i1 = _malloc(i5) | 0;
  HEAP32[i2 + 8 >> 2] = i1;
  HEAP32[i2 >> 2] = i5 | 1;
  HEAP32[i2 + 4 >> 2] = i4;
 }
 _memcpy(i1 | 0, i3 | 0, i4 | 0) | 0;
 HEAP8[i1 + i4 >> 0] = 0;
 return;
}

function __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj(i1, i2, i3) {
 i1 = i1 | 0;
 i2 = i2 | 0;
 i3 = i3 | 0;
 var i4 = 0, i5 = 0;
 if (i3 >>> 0 > 4294967279) __ZNKSt3__121__basic_string_commonILb1EE20__throw_length_errorEv(i1);
 if (i3 >>> 0 < 11) {
  HEAP8[i1 >> 0] = i3 << 1;
  i1 = i1 + 1 | 0;
 } else {
  i5 = i3 + 16 & -16;
  i4 = _malloc(i5) | 0;
  HEAP32[i1 + 8 >> 2] = i4;
  HEAP32[i1 >> 2] = i5 | 1;
  HEAP32[i1 + 4 >> 2] = i3;
  i1 = i4;
 }
 _memcpy(i1 | 0, i2 | 0, i3 | 0) | 0;
 HEAP8[i1 + i3 >> 0] = 0;
 return;
}

function __ZNSt3__16locale5__impD2Ev(i5) {
 i5 = i5 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0;
 HEAP32[i5 >> 2] = 11908;
 i2 = i5 + 8 | 0;
 i3 = i5 + 12 | 0;
 i4 = 0;
 while (1) {
  i1 = HEAP32[i2 >> 2] | 0;
  if (i4 >>> 0 >= (HEAP32[i3 >> 2] | 0) - i1 >> 2 >>> 0) break;
  i1 = HEAP32[i1 + (i4 << 2) >> 2] | 0;
  if (i1 | 0) __ZNSt3__114__shared_count16__release_sharedEv(i1) | 0;
  i4 = i4 + 1 | 0;
 }
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i5 + 144 | 0);
 __ZNSt3__113__vector_baseIPNS_6locale5facetENS_15__sso_allocatorIS3_Lj28EEEED2Ev(i2);
 return;
}

function __ZNSt3__114__split_bufferINS_3mapIjN4wasm14SimplifyLocals12SinkableInfoENS_4lessIjEENS_9allocatorINS_4pairIKjS4_EEEEEERNS7_ISC_EEED2Ev(i4) {
 i4 = i4 | 0;
 var i1 = 0, i2 = 0, i3 = 0;
 i1 = HEAP32[i4 + 4 >> 2] | 0;
 i2 = i4 + 8 | 0;
 while (1) {
  i3 = HEAP32[i2 >> 2] | 0;
  if ((i3 | 0) == (i1 | 0)) break;
  i3 = i3 + -12 | 0;
  HEAP32[i2 >> 2] = i3;
  __ZNSt3__16__treeINS_12__value_typeIjN4wasm14SimplifyLocals12SinkableInfoEEENS_19__map_value_compareIjS5_NS_4lessIjEELb1EEENS_9allocatorIS5_EEED2Ev(i3);
 }
 i1 = HEAP32[i4 >> 2] | 0;
 if (i1 | 0) __ZdlPv(i1);
 return;
}

function __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev(i4) {
 i4 = i4 | 0;
 var i1 = 0, i2 = 0, i3 = 0;
 i1 = HEAP32[i4 + 4 >> 2] | 0;
 i2 = i4 + 8 | 0;
 while (1) {
  i3 = HEAP32[i2 >> 2] | 0;
  if ((i3 | 0) == (i1 | 0)) break;
  i3 = i3 + -24 | 0;
  HEAP32[i2 >> 2] = i3;
  __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i3);
 }
 i1 = HEAP32[i4 >> 2] | 0;
 if (i1 | 0) __ZN10__cxxabiv112_GLOBAL__N_15arenaILj4096EE10deallocateEPcj(HEAP32[HEAP32[i4 + 16 >> 2] >> 2] | 0, i1, (HEAP32[i4 + 12 >> 2] | 0) - i1 | 0);
 return;
}

function __ZNSt3__113__vector_baseINS_3mapIjN4wasm14SimplifyLocals12SinkableInfoENS_4lessIjEENS_9allocatorINS_4pairIKjS4_EEEEEENS7_ISC_EEED2Ev(i4) {
 i4 = i4 | 0;
 var i1 = 0, i2 = 0, i3 = 0;
 i1 = HEAP32[i4 >> 2] | 0;
 if (i1 | 0) {
  i2 = i4 + 4 | 0;
  while (1) {
   i3 = HEAP32[i2 >> 2] | 0;
   if ((i3 | 0) == (i1 | 0)) break;
   i3 = i3 + -12 | 0;
   HEAP32[i2 >> 2] = i3;
   __ZNSt3__16__treeINS_12__value_typeIjN4wasm14SimplifyLocals12SinkableInfoEEENS_19__map_value_compareIjS5_NS_4lessIjEELb1EEENS_9allocatorIS5_EEED2Ev(i3);
  }
  __ZdlPv(HEAP32[i4 >> 2] | 0);
 }
 return;
}

function __ZNSt3__115basic_stringbufIcNS_11char_traitsIcEENS_9allocatorIcEEE9underflowEv(i4) {
 i4 = i4 | 0;
 var i1 = 0, i2 = 0, i3 = 0;
 i1 = i4 + 44 | 0;
 i2 = HEAP32[i1 >> 2] | 0;
 i3 = HEAP32[i4 + 24 >> 2] | 0;
 if (i2 >>> 0 < i3 >>> 0) {
  HEAP32[i1 >> 2] = i3;
  i1 = i3;
 } else i1 = i2;
 if (HEAP32[i4 + 48 >> 2] & 8) {
  i3 = i4 + 16 | 0;
  i2 = HEAP32[i3 >> 2] | 0;
  if (i2 >>> 0 < i1 >>> 0) {
   HEAP32[i3 >> 2] = i1;
   i2 = i1;
  }
  i1 = HEAP32[i4 + 12 >> 2] | 0;
  if (i1 >>> 0 < i2 >>> 0) i1 = HEAPU8[i1 >> 0] | 0; else i1 = -1;
 } else i1 = -1;
 return i1 | 0;
}

function __ZNSt3__16vectorIPN4wasm10ExpressionENS_9allocatorIS3_EEE6resizeEj(i5, i4) {
 i5 = i5 | 0;
 i4 = i4 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i6 = 0;
 i6 = i5 + 4 | 0;
 i1 = HEAP32[i6 >> 2] | 0;
 i3 = HEAP32[i5 >> 2] | 0;
 i2 = i1 - i3 >> 2;
 L1 : do if (i2 >>> 0 >= i4 >>> 0) {
  if (i2 >>> 0 > i4 >>> 0) {
   i2 = i3 + (i4 << 2) | 0;
   while (1) {
    if ((i1 | 0) == (i2 | 0)) break L1;
    i5 = i1 + -4 | 0;
    HEAP32[i6 >> 2] = i5;
    i1 = i5;
   }
  }
 } else __ZNSt3__16vectorIPN4wasm10ExpressionENS_9allocatorIS3_EEE8__appendEj(i5, i4 - i2 | 0); while (0);
 return;
}

function __ZNSt3__113__vector_baseIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEED2Ev(i4) {
 i4 = i4 | 0;
 var i1 = 0, i2 = 0, i3 = 0;
 i1 = HEAP32[i4 >> 2] | 0;
 if (i1 | 0) {
  i2 = i4 + 4 | 0;
  while (1) {
   i3 = HEAP32[i2 >> 2] | 0;
   if ((i3 | 0) == (i1 | 0)) break;
   i3 = i3 + -24 | 0;
   HEAP32[i2 >> 2] = i3;
   __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i3);
  }
  i3 = HEAP32[i4 >> 2] | 0;
  __ZN10__cxxabiv112_GLOBAL__N_15arenaILj4096EE10deallocateEPcj(HEAP32[i4 + 12 >> 2] | 0, i3, (HEAP32[i4 + 8 >> 2] | 0) - i3 | 0);
 }
 return;
}

function __ZN4wasm22SExpressionWasmBuilder8makeHostERNS_7ElementENS_6HostOpE(i4, i3, i2) {
 i4 = i4 | 0;
 i3 = i3 | 0;
 i2 = i2 | 0;
 var i1 = 0;
 i1 = __ZN10MixedArena5allocIN4wasm4HostEEEPT_v(HEAP32[i4 + 4 >> 2] | 0) | 0;
 HEAP32[i1 + 8 >> 2] = i2;
 if ((i2 | 0) == 3) {
  i4 = __ZN4wasm7Element4listEv(i3) | 0;
  i4 = __ZN4wasm7Element3strEv(HEAP32[(HEAP32[i4 >> 2] | 0) + 4 >> 2] | 0) | 0;
  HEAP32[i1 + 12 >> 2] = i4;
 } else __ZN4wasm22SExpressionWasmBuilder17parseCallOperandsINS_4HostEEEvRNS_7ElementEjPT_(i4, i3, 1, i1);
 __ZN4wasm4Host8finalizeEv(i1);
 return i1 | 0;
}

function __ZNKSt3__17codecvtIDsc11__mbstate_tE6do_outERS1_PKDsS5_RS5_PcS7_RS7_(i5, i1, i2, i3, i4, i6, i7, i8) {
 i5 = i5 | 0;
 i1 = i1 | 0;
 i2 = i2 | 0;
 i3 = i3 | 0;
 i4 = i4 | 0;
 i6 = i6 | 0;
 i7 = i7 | 0;
 i8 = i8 | 0;
 var i9 = 0;
 i5 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i9 = i5 + 4 | 0;
 i1 = i5;
 HEAP32[i9 >> 2] = i2;
 HEAP32[i1 >> 2] = i6;
 i7 = __ZNSt3__1L13utf16_to_utf8EPKtS1_RS1_PhS3_RS3_mNS_12codecvt_modeE(i2, i3, i9, i6, i7, i1, 1114111, 0) | 0;
 HEAP32[i4 >> 2] = HEAP32[i9 >> 2];
 HEAP32[i8 >> 2] = HEAP32[i1 >> 2];
 STACKTOP = i5;
 return i7 | 0;
}

function __ZNKSt3__17codecvtIDsc11__mbstate_tE5do_inERS1_PKcS5_RS5_PDsS7_RS7_(i5, i1, i2, i3, i4, i6, i7, i8) {
 i5 = i5 | 0;
 i1 = i1 | 0;
 i2 = i2 | 0;
 i3 = i3 | 0;
 i4 = i4 | 0;
 i6 = i6 | 0;
 i7 = i7 | 0;
 i8 = i8 | 0;
 var i9 = 0;
 i5 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i9 = i5 + 4 | 0;
 i1 = i5;
 HEAP32[i9 >> 2] = i2;
 HEAP32[i1 >> 2] = i6;
 i7 = __ZNSt3__1L13utf8_to_utf16EPKhS1_RS1_PtS3_RS3_mNS_12codecvt_modeE(i2, i3, i9, i6, i7, i1, 1114111, 0) | 0;
 HEAP32[i4 >> 2] = HEAP32[i9 >> 2];
 HEAP32[i8 >> 2] = HEAP32[i1 >> 2];
 STACKTOP = i5;
 return i7 | 0;
}

function __ZNKSt3__17codecvtIDic11__mbstate_tE6do_outERS1_PKDiS5_RS5_PcS7_RS7_(i5, i1, i2, i3, i4, i6, i7, i8) {
 i5 = i5 | 0;
 i1 = i1 | 0;
 i2 = i2 | 0;
 i3 = i3 | 0;
 i4 = i4 | 0;
 i6 = i6 | 0;
 i7 = i7 | 0;
 i8 = i8 | 0;
 var i9 = 0;
 i5 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i9 = i5 + 4 | 0;
 i1 = i5;
 HEAP32[i9 >> 2] = i2;
 HEAP32[i1 >> 2] = i6;
 i7 = __ZNSt3__1L12ucs4_to_utf8EPKjS1_RS1_PhS3_RS3_mNS_12codecvt_modeE(i2, i3, i9, i6, i7, i1, 1114111, 0) | 0;
 HEAP32[i4 >> 2] = HEAP32[i9 >> 2];
 HEAP32[i8 >> 2] = HEAP32[i1 >> 2];
 STACKTOP = i5;
 return i7 | 0;
}

function __ZNKSt3__17codecvtIDic11__mbstate_tE5do_inERS1_PKcS5_RS5_PDiS7_RS7_(i5, i1, i2, i3, i4, i6, i7, i8) {
 i5 = i5 | 0;
 i1 = i1 | 0;
 i2 = i2 | 0;
 i3 = i3 | 0;
 i4 = i4 | 0;
 i6 = i6 | 0;
 i7 = i7 | 0;
 i8 = i8 | 0;
 var i9 = 0;
 i5 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i9 = i5 + 4 | 0;
 i1 = i5;
 HEAP32[i9 >> 2] = i2;
 HEAP32[i1 >> 2] = i6;
 i7 = __ZNSt3__1L12utf8_to_ucs4EPKhS1_RS1_PjS3_RS3_mNS_12codecvt_modeE(i2, i3, i9, i6, i7, i1, 1114111, 0) | 0;
 HEAP32[i4 >> 2] = HEAP32[i9 >> 2];
 HEAP32[i8 >> 2] = HEAP32[i1 >> 2];
 STACKTOP = i5;
 return i7 | 0;
}

function __ZNSt3__114__split_bufferINS_6vectorINS1_IN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEENS5_IS7_Lj4096EEEEERNS5_IS9_Lj4096EEEEC2EjjSB_(i4, i2, i3, i1) {
 i4 = i4 | 0;
 i2 = i2 | 0;
 i3 = i3 | 0;
 i1 = i1 | 0;
 HEAP32[i4 + 12 >> 2] = 0;
 HEAP32[i4 + 16 >> 2] = i1;
 if (!i2) i1 = 0; else i1 = __ZN10__cxxabiv112_GLOBAL__N_15arenaILj4096EE8allocateEj(HEAP32[i1 >> 2] | 0, i2 << 4) | 0;
 HEAP32[i4 >> 2] = i1;
 i3 = i1 + (i3 << 4) | 0;
 HEAP32[i4 + 8 >> 2] = i3;
 HEAP32[i4 + 4 >> 2] = i3;
 HEAP32[i4 + 12 >> 2] = i1 + (i2 << 4);
 return;
}

function __ZN4wasm10Expression7dynCastINS_6SwitchEEEPT_v(i1) {
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i4 = 0, i5 = 0;
 i3 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i4 = i3;
 i2 = HEAP32[i1 >> 2] | 0;
 HEAP32[i4 >> 2] = 5;
 i5 = i4 + 4 | 0;
 HEAP32[i5 >> 2] = 0;
 HEAP32[i5 + 4 >> 2] = 0;
 HEAP32[i5 + 8 >> 2] = 0;
 HEAP32[i5 + 12 >> 2] = 0;
 HEAP32[i5 + 16 >> 2] = 0;
 HEAP32[i5 + 20 >> 2] = 0;
 HEAP32[i5 + 24 >> 2] = 0;
 HEAP32[i5 >> 2] = 5;
 __ZNSt3__113__vector_baseIN4wasm4NameENS_9allocatorIS2_EEED2Ev(i4 + 8 | 0);
 STACKTOP = i3;
 return ((i2 | 0) == 5 ? i1 : 0) | 0;
}

function __ZN4wasm10Expression4castINS_10CallImportEEEPT_v(i2) {
 i2 = i2 | 0;
 var i1 = 0, i3 = 0, i4 = 0, i5 = 0;
 i3 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i1 = i3;
 i4 = HEAP32[i2 >> 2] | 0;
 i5 = i1 + 4 | 0;
 HEAP32[i5 >> 2] = 0;
 HEAP32[i5 + 4 >> 2] = 0;
 HEAP32[i5 + 8 >> 2] = 0;
 HEAP32[i5 + 12 >> 2] = 0;
 HEAP32[i5 + 16 >> 2] = 0;
 HEAP32[i1 >> 2] = 7;
 if ((i4 | 0) == 7) {
  __ZNSt3__113__vector_baseIPN4wasm10ExpressionENS_9allocatorIS3_EEED2Ev(i1 + 8 | 0);
  STACKTOP = i3;
  return i2 | 0;
 } else ___assert_fail(15191, 14223, 775, 15206);
 return 0;
}

function _strlen(i1) {
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i4 = 0;
 i4 = i1;
 L1 : do if (!(i4 & 3)) i3 = 4; else {
  i2 = i1;
  i1 = i4;
  while (1) {
   if (!(HEAP8[i2 >> 0] | 0)) break L1;
   i2 = i2 + 1 | 0;
   i1 = i2;
   if (!(i1 & 3)) {
    i1 = i2;
    i3 = 4;
    break;
   }
  }
 } while (0);
 if ((i3 | 0) == 4) {
  while (1) {
   i2 = HEAP32[i1 >> 2] | 0;
   if (!((i2 & -2139062144 ^ -2139062144) & i2 + -16843009)) i1 = i1 + 4 | 0; else break;
  }
  if ((i2 & 255) << 24 >> 24) do i1 = i1 + 1 | 0; while ((HEAP8[i1 >> 0] | 0) != 0);
 }
 return i1 - i4 | 0;
}

function __ZNSt3__16vectorIPN4wasm5BreakENS_9allocatorIS3_EEE6resizeEj(i5, i4) {
 i5 = i5 | 0;
 i4 = i4 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i6 = 0;
 i6 = i5 + 4 | 0;
 i1 = HEAP32[i6 >> 2] | 0;
 i3 = HEAP32[i5 >> 2] | 0;
 i2 = i1 - i3 >> 2;
 L1 : do if (i2 >>> 0 >= i4 >>> 0) {
  if (i2 >>> 0 > i4 >>> 0) {
   i2 = i3 + (i4 << 2) | 0;
   while (1) {
    if ((i1 | 0) == (i2 | 0)) break L1;
    i5 = i1 + -4 | 0;
    HEAP32[i6 >> 2] = i5;
    i1 = i5;
   }
  }
 } else __ZNSt3__16vectorIPN4wasm5BreakENS_9allocatorIS3_EEE8__appendEj(i5, i4 - i2 | 0); while (0);
 return;
}

function __ZNSt3__113__vector_baseINS_10unique_ptrIN4wasm17RemoveUnusedNamesENS_14default_deleteIS3_EEEENS_9allocatorIS6_EEED2Ev(i4) {
 i4 = i4 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i5 = 0;
 i2 = HEAP32[i4 >> 2] | 0;
 if (i2 | 0) {
  i3 = i4 + 4 | 0;
  while (1) {
   i1 = HEAP32[i3 >> 2] | 0;
   if ((i1 | 0) == (i2 | 0)) break;
   i5 = i1 + -4 | 0;
   HEAP32[i3 >> 2] = i5;
   i1 = HEAP32[i5 >> 2] | 0;
   HEAP32[i5 >> 2] = 0;
   if (!i1) continue;
   FUNCTION_TABLE_vi[HEAP32[(HEAP32[i1 >> 2] | 0) + 4 >> 2] & 255](i1);
  }
  __ZdlPv(HEAP32[i4 >> 2] | 0);
 }
 return;
}

function __ZNKSt3__17collateIwE10do_compareEPKwS3_S3_S3_(i3, i1, i6, i2, i5) {
 i3 = i3 | 0;
 i1 = i1 | 0;
 i6 = i6 | 0;
 i2 = i2 | 0;
 i5 = i5 | 0;
 var i4 = 0, i7 = 0;
 while (1) {
  if ((i2 | 0) == (i5 | 0)) {
   i7 = 7;
   break;
  }
  if ((i1 | 0) == (i6 | 0)) {
   i1 = -1;
   break;
  }
  i3 = HEAP32[i1 >> 2] | 0;
  i4 = HEAP32[i2 >> 2] | 0;
  if ((i3 | 0) < (i4 | 0)) {
   i1 = -1;
   break;
  }
  if ((i4 | 0) < (i3 | 0)) {
   i1 = 1;
   break;
  }
  i2 = i2 + 4 | 0;
  i1 = i1 + 4 | 0;
 }
 if ((i7 | 0) == 7) i1 = (i1 | 0) != (i6 | 0) & 1;
 return i1 | 0;
}

function __ZN4wasm10Expression4castINS_4HostEEEPT_v(i2) {
 i2 = i2 | 0;
 var i1 = 0, i3 = 0, i4 = 0, i5 = 0;
 i3 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i1 = i3;
 i4 = HEAP32[i2 >> 2] | 0;
 HEAP32[i1 >> 2] = 18;
 HEAP32[i1 + 4 >> 2] = 0;
 i5 = i1 + 12 | 0;
 HEAP32[i5 >> 2] = 0;
 HEAP32[i5 + 4 >> 2] = 0;
 HEAP32[i5 + 8 >> 2] = 0;
 HEAP32[i5 + 12 >> 2] = 0;
 if ((i4 | 0) == 18) {
  __ZNSt3__113__vector_baseIPN4wasm10ExpressionENS_9allocatorIS3_EEED2Ev(i1 + 16 | 0);
  STACKTOP = i3;
  return i2 | 0;
 } else ___assert_fail(15191, 14223, 775, 15206);
 return 0;
}

function __ZN4wasm10Expression4castINS_5BlockEEEPT_v(i2) {
 i2 = i2 | 0;
 var i1 = 0, i3 = 0, i4 = 0, i5 = 0;
 i3 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i1 = i3;
 i4 = HEAP32[i2 >> 2] | 0;
 HEAP32[i1 >> 2] = 1;
 i5 = i1 + 4 | 0;
 HEAP32[i5 >> 2] = 0;
 HEAP32[i5 + 4 >> 2] = 0;
 HEAP32[i5 + 8 >> 2] = 0;
 HEAP32[i5 + 12 >> 2] = 0;
 HEAP32[i5 + 16 >> 2] = 0;
 if ((i4 | 0) == 1) {
  __ZNSt3__113__vector_baseIPN4wasm10ExpressionENS_9allocatorIS3_EEED2Ev(i1 + 12 | 0);
  STACKTOP = i3;
  return i2 | 0;
 } else ___assert_fail(15191, 14223, 775, 15206);
 return 0;
}

function __ZNSt3__16__treeINS_12__value_typeIN4wasm4NameENS_6vectorINS2_14SimplifyLocals10BlockBreakENS_9allocatorIS6_EEEEEENS_19__map_value_compareIS3_SA_NS_4lessIS3_EELb1EEENS7_ISA_EEE5clearEv(i1) {
 i1 = i1 | 0;
 var i2 = 0;
 i2 = i1 + 4 | 0;
 __ZNSt3__16__treeINS_12__value_typeIN4wasm4NameENS_6vectorINS2_14SimplifyLocals10BlockBreakENS_9allocatorIS6_EEEEEENS_19__map_value_compareIS3_SA_NS_4lessIS3_EELb1EEENS7_ISA_EEE7destroyEPNS_11__tree_nodeISA_PvEE(i1, HEAP32[i2 >> 2] | 0);
 HEAP32[i1 + 8 >> 2] = 0;
 HEAP32[i1 >> 2] = i2;
 HEAP32[i2 >> 2] = 0;
 return;
}

function __ZNSt3__114__split_bufferINS_10unique_ptrIN4wasm17RemoveUnusedNamesENS_14default_deleteIS3_EEEERNS_9allocatorIS6_EEED2Ev(i4) {
 i4 = i4 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i5 = 0;
 i2 = HEAP32[i4 + 4 >> 2] | 0;
 i3 = i4 + 8 | 0;
 while (1) {
  i1 = HEAP32[i3 >> 2] | 0;
  if ((i1 | 0) == (i2 | 0)) break;
  i5 = i1 + -4 | 0;
  HEAP32[i3 >> 2] = i5;
  i1 = HEAP32[i5 >> 2] | 0;
  HEAP32[i5 >> 2] = 0;
  if (!i1) continue;
  FUNCTION_TABLE_vi[HEAP32[(HEAP32[i1 >> 2] | 0) + 4 >> 2] & 255](i1);
 }
 i1 = HEAP32[i4 >> 2] | 0;
 if (i1 | 0) __ZdlPv(i1);
 return;
}

function __ZNSt3__113__vector_baseINS_10unique_ptrIN4wasm15RemoveUnusedBrsENS_14default_deleteIS3_EEEENS_9allocatorIS6_EEED2Ev(i4) {
 i4 = i4 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i5 = 0;
 i2 = HEAP32[i4 >> 2] | 0;
 if (i2 | 0) {
  i3 = i4 + 4 | 0;
  while (1) {
   i1 = HEAP32[i3 >> 2] | 0;
   if ((i1 | 0) == (i2 | 0)) break;
   i5 = i1 + -4 | 0;
   HEAP32[i3 >> 2] = i5;
   i1 = HEAP32[i5 >> 2] | 0;
   HEAP32[i5 >> 2] = 0;
   if (!i1) continue;
   FUNCTION_TABLE_vi[HEAP32[(HEAP32[i1 >> 2] | 0) + 4 >> 2] & 255](i1);
  }
  __ZdlPv(HEAP32[i4 >> 2] | 0);
 }
 return;
}

function __ZN4wasm11WasmPrinter11printModuleEPNS_6ModuleERNSt3__113basic_ostreamIcNS3_11char_traitsIcEEEE(i1, i2) {
 i1 = i1 | 0;
 i2 = i2 | 0;
 var i3 = 0, i4 = 0;
 i3 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i4 = i3;
 HEAP8[i4 + 20 >> 0] = 0;
 HEAP32[i4 >> 2] = 0;
 HEAP32[i4 + 4 >> 2] = 0;
 HEAP32[i4 + 8 >> 2] = 0;
 HEAP32[i4 + 12 >> 2] = 0;
 __ZN4wasm10PassRunner3addINS_7PrinterENSt3__113basic_ostreamIcNS3_11char_traitsIcEEEEEEvRT0_(i4, i2);
 __ZN4wasm10PassRunner3runEPNS_6ModuleE(i4, i1);
 __ZN4wasm10PassRunnerD2Ev(i4);
 STACKTOP = i3;
 return i2 | 0;
}

function __ZNSt3__13mapIjN4wasm14SimplifyLocals12SinkableInfoENS_4lessIjEENS_9allocatorINS_4pairIKjS3_EEEEE16__construct_nodeINS7_IjS3_EEEENS_10unique_ptrINS_11__tree_nodeINS_12__value_typeIjS3_EEPvEENS_21__map_node_destructorINS6_ISJ_EEEEEEOT_(i2, i3, i1) {
 i2 = i2 | 0;
 i3 = i3 | 0;
 i1 = i1 | 0;
 var i4 = 0;
 i4 = __Znwj(80) | 0;
 HEAP32[i2 >> 2] = i4;
 HEAP32[i2 + 4 >> 2] = i3 + 4;
 HEAP32[i4 + 16 >> 2] = HEAP32[i1 >> 2];
 __ZN4wasm14SimplifyLocals12SinkableInfoC2EOS1_(i4 + 20 | 0, i1 + 4 | 0);
 HEAP8[i2 + 8 >> 0] = 1;
 HEAP8[i2 + 9 >> 0] = 1;
 return;
}

function __ZNSt3__113__vector_baseINS_10unique_ptrIN4wasm14SimplifyLocalsENS_14default_deleteIS3_EEEENS_9allocatorIS6_EEED2Ev(i4) {
 i4 = i4 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i5 = 0;
 i2 = HEAP32[i4 >> 2] | 0;
 if (i2 | 0) {
  i3 = i4 + 4 | 0;
  while (1) {
   i1 = HEAP32[i3 >> 2] | 0;
   if ((i1 | 0) == (i2 | 0)) break;
   i5 = i1 + -4 | 0;
   HEAP32[i3 >> 2] = i5;
   i1 = HEAP32[i5 >> 2] | 0;
   HEAP32[i5 >> 2] = 0;
   if (!i1) continue;
   FUNCTION_TABLE_vi[HEAP32[(HEAP32[i1 >> 2] | 0) + 4 >> 2] & 255](i1);
  }
  __ZdlPv(HEAP32[i4 >> 2] | 0);
 }
 return;
}

function __ZNSt3__113__vector_baseINS_10unique_ptrIN4wasm14PostEmscriptenENS_14default_deleteIS3_EEEENS_9allocatorIS6_EEED2Ev(i4) {
 i4 = i4 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i5 = 0;
 i2 = HEAP32[i4 >> 2] | 0;
 if (i2 | 0) {
  i3 = i4 + 4 | 0;
  while (1) {
   i1 = HEAP32[i3 >> 2] | 0;
   if ((i1 | 0) == (i2 | 0)) break;
   i5 = i1 + -4 | 0;
   HEAP32[i3 >> 2] = i5;
   i1 = HEAP32[i5 >> 2] | 0;
   HEAP32[i5 >> 2] = 0;
   if (!i1) continue;
   FUNCTION_TABLE_vi[HEAP32[(HEAP32[i1 >> 2] | 0) + 4 >> 2] & 255](i1);
  }
  __ZdlPv(HEAP32[i4 >> 2] | 0);
 }
 return;
}

function __ZN4wasm10Expression4castINS_4CallEEEPT_v(i2) {
 i2 = i2 | 0;
 var i1 = 0, i3 = 0, i4 = 0, i5 = 0;
 i3 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i1 = i3;
 i4 = HEAP32[i2 >> 2] | 0;
 HEAP32[i1 >> 2] = 6;
 i5 = i1 + 4 | 0;
 HEAP32[i5 >> 2] = 0;
 HEAP32[i5 + 4 >> 2] = 0;
 HEAP32[i5 + 8 >> 2] = 0;
 HEAP32[i5 + 12 >> 2] = 0;
 HEAP32[i5 + 16 >> 2] = 0;
 if ((i4 | 0) == 6) {
  __ZNSt3__113__vector_baseIPN4wasm10ExpressionENS_9allocatorIS3_EEED2Ev(i1 + 8 | 0);
  STACKTOP = i3;
  return i2 | 0;
 } else ___assert_fail(15191, 14223, 775, 15206);
 return 0;
}

function __ZNSt3__16vectorIN4wasm4NameENS_9allocatorIS2_EEE6resizeEj(i5, i4) {
 i5 = i5 | 0;
 i4 = i4 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i6 = 0;
 i6 = i5 + 4 | 0;
 i1 = HEAP32[i6 >> 2] | 0;
 i3 = HEAP32[i5 >> 2] | 0;
 i2 = i1 - i3 >> 2;
 L1 : do if (i2 >>> 0 >= i4 >>> 0) {
  if (i2 >>> 0 > i4 >>> 0) {
   i2 = i3 + (i4 << 2) | 0;
   while (1) {
    if ((i1 | 0) == (i2 | 0)) break L1;
    i5 = i1 + -4 | 0;
    HEAP32[i6 >> 2] = i5;
    i1 = i5;
   }
  }
 } else __ZNSt3__16vectorIN4wasm4NameENS_9allocatorIS2_EEE8__appendEj(i5, i4 - i2 | 0); while (0);
 return;
}

function __ZNSt3__114__split_bufferINS_10unique_ptrIN4wasm15RemoveUnusedBrsENS_14default_deleteIS3_EEEERNS_9allocatorIS6_EEED2Ev(i4) {
 i4 = i4 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i5 = 0;
 i2 = HEAP32[i4 + 4 >> 2] | 0;
 i3 = i4 + 8 | 0;
 while (1) {
  i1 = HEAP32[i3 >> 2] | 0;
  if ((i1 | 0) == (i2 | 0)) break;
  i5 = i1 + -4 | 0;
  HEAP32[i3 >> 2] = i5;
  i1 = HEAP32[i5 >> 2] | 0;
  HEAP32[i5 >> 2] = 0;
  if (!i1) continue;
  FUNCTION_TABLE_vi[HEAP32[(HEAP32[i1 >> 2] | 0) + 4 >> 2] & 255](i1);
 }
 i1 = HEAP32[i4 >> 2] | 0;
 if (i1 | 0) __ZdlPv(i1);
 return;
}

function __ZNSt3__113__vector_baseINS_10unique_ptrIN4wasm13ReorderLocalsENS_14default_deleteIS3_EEEENS_9allocatorIS6_EEED2Ev(i4) {
 i4 = i4 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i5 = 0;
 i2 = HEAP32[i4 >> 2] | 0;
 if (i2 | 0) {
  i3 = i4 + 4 | 0;
  while (1) {
   i1 = HEAP32[i3 >> 2] | 0;
   if ((i1 | 0) == (i2 | 0)) break;
   i5 = i1 + -4 | 0;
   HEAP32[i3 >> 2] = i5;
   i1 = HEAP32[i5 >> 2] | 0;
   HEAP32[i5 >> 2] = 0;
   if (!i1) continue;
   FUNCTION_TABLE_vi[HEAP32[(HEAP32[i1 >> 2] | 0) + 4 >> 2] & 255](i1);
  }
  __ZdlPv(HEAP32[i4 >> 2] | 0);
 }
 return;
}

function __ZN4wasm6WalkerINS_15SetLocalRemoverENS_7VisitorIS1_vEEE9startWalkEPNS_6ModuleE(i1, i5) {
 i1 = i1 | 0;
 i5 = i5 | 0;
 var i2 = 0, i3 = 0, i4 = 0;
 HEAP32[i1 + 20 >> 2] = i5;
 i4 = i1 + -16 | 0;
 i2 = HEAP32[i5 + 40 >> 2] | 0;
 i3 = i4 + 16 | 0;
 i4 = i4 + 32 | 0;
 i1 = HEAP32[i5 + 36 >> 2] | 0;
 while (1) {
  if ((i1 | 0) == (i2 | 0)) break;
  i5 = HEAP32[i1 >> 2] | 0;
  HEAP32[i4 >> 2] = i5;
  __ZN4wasm6WalkerINS_15SetLocalRemoverENS_7VisitorIS1_vEEE4walkERPNS_10ExpressionE(i3, i5 + 36 | 0);
  HEAP32[i4 >> 2] = 0;
  i1 = i1 + 4 | 0;
 }
 return;
}

function __ZN4wasm6WalkerINS_15GetLocalCounterENS_7VisitorIS1_vEEE9startWalkEPNS_6ModuleE(i1, i5) {
 i1 = i1 | 0;
 i5 = i5 | 0;
 var i2 = 0, i3 = 0, i4 = 0;
 HEAP32[i1 + 20 >> 2] = i5;
 i4 = i1 + -16 | 0;
 i2 = HEAP32[i5 + 40 >> 2] | 0;
 i3 = i4 + 16 | 0;
 i4 = i4 + 32 | 0;
 i1 = HEAP32[i5 + 36 >> 2] | 0;
 while (1) {
  if ((i1 | 0) == (i2 | 0)) break;
  i5 = HEAP32[i1 >> 2] | 0;
  HEAP32[i4 >> 2] = i5;
  __ZN4wasm6WalkerINS_15GetLocalCounterENS_7VisitorIS1_vEEE4walkERPNS_10ExpressionE(i3, i5 + 36 | 0);
  HEAP32[i4 >> 2] = 0;
  i1 = i1 + 4 | 0;
 }
 return;
}

function __ZNSt3__114__split_bufferINS_10unique_ptrIN4wasm14SimplifyLocalsENS_14default_deleteIS3_EEEERNS_9allocatorIS6_EEED2Ev(i4) {
 i4 = i4 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i5 = 0;
 i2 = HEAP32[i4 + 4 >> 2] | 0;
 i3 = i4 + 8 | 0;
 while (1) {
  i1 = HEAP32[i3 >> 2] | 0;
  if ((i1 | 0) == (i2 | 0)) break;
  i5 = i1 + -4 | 0;
  HEAP32[i3 >> 2] = i5;
  i1 = HEAP32[i5 >> 2] | 0;
  HEAP32[i5 >> 2] = 0;
  if (!i1) continue;
  FUNCTION_TABLE_vi[HEAP32[(HEAP32[i1 >> 2] | 0) + 4 >> 2] & 255](i1);
 }
 i1 = HEAP32[i4 >> 2] | 0;
 if (i1 | 0) __ZdlPv(i1);
 return;
}

function __ZNSt3__114__split_bufferINS_10unique_ptrIN4wasm14PostEmscriptenENS_14default_deleteIS3_EEEERNS_9allocatorIS6_EEED2Ev(i4) {
 i4 = i4 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i5 = 0;
 i2 = HEAP32[i4 + 4 >> 2] | 0;
 i3 = i4 + 8 | 0;
 while (1) {
  i1 = HEAP32[i3 >> 2] | 0;
  if ((i1 | 0) == (i2 | 0)) break;
  i5 = i1 + -4 | 0;
  HEAP32[i3 >> 2] = i5;
  i1 = HEAP32[i5 >> 2] | 0;
  HEAP32[i5 >> 2] = 0;
  if (!i1) continue;
  FUNCTION_TABLE_vi[HEAP32[(HEAP32[i1 >> 2] | 0) + 4 >> 2] & 255](i1);
 }
 i1 = HEAP32[i4 >> 2] | 0;
 if (i1 | 0) __ZdlPv(i1);
 return;
}

function __ZNSt3__16__treeINS_12__value_typeIN4wasm4NameENS_6vectorINS2_14SimplifyLocals10BlockBreakENS_9allocatorIS6_EEEEEENS_19__map_value_compareIS3_SA_NS_4lessIS3_EELb1EEENS7_ISA_EEE13__lower_boundIS3_EENS_15__tree_iteratorISA_PNS_11__tree_nodeISA_PvEEiEERKT_SM_SM_(i3, i4, i2, i1) {
 i3 = i3 | 0;
 i4 = i4 | 0;
 i2 = i2 | 0;
 i1 = i1 | 0;
 L1 : while (1) {
  while (1) {
   if (!i2) break L1;
   if (!(__ZNK6cashew7IStringltERKS0_(i2 + 16 | 0, i4) | 0)) break;
   i2 = HEAP32[i2 + 4 >> 2] | 0;
  }
  i1 = i2;
  i2 = HEAP32[i2 >> 2] | 0;
 }
 return i1 | 0;
}

function __ZNSt3__114__split_bufferINS_10unique_ptrIN4wasm13ReorderLocalsENS_14default_deleteIS3_EEEERNS_9allocatorIS6_EEED2Ev(i4) {
 i4 = i4 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i5 = 0;
 i2 = HEAP32[i4 + 4 >> 2] | 0;
 i3 = i4 + 8 | 0;
 while (1) {
  i1 = HEAP32[i3 >> 2] | 0;
  if ((i1 | 0) == (i2 | 0)) break;
  i5 = i1 + -4 | 0;
  HEAP32[i3 >> 2] = i5;
  i1 = HEAP32[i5 >> 2] | 0;
  HEAP32[i5 >> 2] = 0;
  if (!i1) continue;
  FUNCTION_TABLE_vi[HEAP32[(HEAP32[i1 >> 2] | 0) + 4 >> 2] & 255](i1);
 }
 i1 = HEAP32[i4 >> 2] | 0;
 if (i1 | 0) __ZdlPv(i1);
 return;
}

function __ZNSt3__113__vector_baseINS_10unique_ptrIN4wasm11MergeBlocksENS_14default_deleteIS3_EEEENS_9allocatorIS6_EEED2Ev(i4) {
 i4 = i4 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i5 = 0;
 i2 = HEAP32[i4 >> 2] | 0;
 if (i2 | 0) {
  i3 = i4 + 4 | 0;
  while (1) {
   i1 = HEAP32[i3 >> 2] | 0;
   if ((i1 | 0) == (i2 | 0)) break;
   i5 = i1 + -4 | 0;
   HEAP32[i3 >> 2] = i5;
   i1 = HEAP32[i5 >> 2] | 0;
   HEAP32[i5 >> 2] = 0;
   if (!i1) continue;
   FUNCTION_TABLE_vi[HEAP32[(HEAP32[i1 >> 2] | 0) + 4 >> 2] & 255](i1);
  }
  __ZdlPv(HEAP32[i4 >> 2] | 0);
 }
 return;
}

function __ZN10__cxxabiv112_GLOBAL__N_112parse_numberEPKcS2_(i3, i4) {
 i3 = i3 | 0;
 i4 = i4 | 0;
 var i1 = 0, i2 = 0;
 L1 : do if ((i3 | 0) != (i4 | 0) ? (i1 = (HEAP8[i3 >> 0] | 0) == 110 ? i3 + 1 | 0 : i3, (i1 | 0) != (i4 | 0)) : 0) {
  i2 = HEAP8[i1 >> 0] | 0;
  if (i2 << 24 >> 24 == 48) {
   i1 = i1 + 1 | 0;
   break;
  }
  if ((i2 + -49 & 255) < 9) do {
   i1 = i1 + 1 | 0;
   if ((i1 | 0) == (i4 | 0)) {
    i1 = i4;
    break L1;
   }
  } while (((HEAP8[i1 >> 0] | 0) + -48 | 0) >>> 0 < 10); else i1 = i3;
 } else i1 = i3; while (0);
 return i1 | 0;
}

function __ZNSt3__114__split_bufferINS_10unique_ptrIN4wasm11MergeBlocksENS_14default_deleteIS3_EEEERNS_9allocatorIS6_EEED2Ev(i4) {
 i4 = i4 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i5 = 0;
 i2 = HEAP32[i4 + 4 >> 2] | 0;
 i3 = i4 + 8 | 0;
 while (1) {
  i1 = HEAP32[i3 >> 2] | 0;
  if ((i1 | 0) == (i2 | 0)) break;
  i5 = i1 + -4 | 0;
  HEAP32[i3 >> 2] = i5;
  i1 = HEAP32[i5 >> 2] | 0;
  HEAP32[i5 >> 2] = 0;
  if (!i1) continue;
  FUNCTION_TABLE_vi[HEAP32[(HEAP32[i1 >> 2] | 0) + 4 >> 2] & 255](i1);
 }
 i1 = HEAP32[i4 >> 2] | 0;
 if (i1 | 0) __ZdlPv(i1);
 return;
}

function __ZN4wasm6Module17checkFunctionTypeENS_4NameE(i3, i2) {
 i3 = i3 | 0;
 i2 = i2 | 0;
 var i1 = 0;
 i1 = i3 + 140 | 0;
 if ((__ZNSt3__16__treeINS_12__value_typeIN4wasm4NameEPNS2_12FunctionTypeEEENS_19__map_value_compareIS3_S6_NS_4lessIS3_EELb1EEENS_9allocatorIS6_EEE4findIS3_EENS_15__tree_iteratorIS6_PNS_11__tree_nodeIS6_PvEEiEERKT_(i1, i2) | 0) == (i3 + 144 | 0)) i1 = 0; else {
  i1 = __ZNSt3__13mapIN4wasm4NameEPNS1_12FunctionTypeENS_4lessIS2_EENS_9allocatorINS_4pairIKS2_S4_EEEEEixERS9_(i1, i2) | 0;
  i1 = HEAP32[i1 >> 2] | 0;
 }
 return i1 | 0;
}

function __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6__initEPKcjj(i2, i3, i4, i1) {
 i2 = i2 | 0;
 i3 = i3 | 0;
 i4 = i4 | 0;
 i1 = i1 | 0;
 var i5 = 0;
 if (i1 >>> 0 > 4294967279) __ZNKSt3__121__basic_string_commonILb1EE20__throw_length_errorEv(i2);
 if (i1 >>> 0 < 11) {
  HEAP8[i2 >> 0] = i4 << 1;
  i1 = i2 + 1 | 0;
 } else {
  i5 = i1 + 16 & -16;
  i1 = __Znwj(i5) | 0;
  HEAP32[i2 + 8 >> 2] = i1;
  HEAP32[i2 >> 2] = i5 | 1;
  HEAP32[i2 + 4 >> 2] = i4;
 }
 _memcpy(i1 | 0, i3 | 0, i4 | 0) | 0;
 HEAP8[i1 + i4 >> 0] = 0;
 return;
}

function __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6__initEPKcj(i1, i2, i3) {
 i1 = i1 | 0;
 i2 = i2 | 0;
 i3 = i3 | 0;
 var i4 = 0, i5 = 0;
 if (i3 >>> 0 > 4294967279) __ZNKSt3__121__basic_string_commonILb1EE20__throw_length_errorEv(i1);
 if (i3 >>> 0 < 11) {
  HEAP8[i1 >> 0] = i3 << 1;
  i1 = i1 + 1 | 0;
 } else {
  i5 = i3 + 16 & -16;
  i4 = __Znwj(i5) | 0;
  HEAP32[i1 + 8 >> 2] = i4;
  HEAP32[i1 >> 2] = i5 | 1;
  HEAP32[i1 + 4 >> 2] = i3;
  i1 = i4;
 }
 _memcpy(i1 | 0, i2 | 0, i3 | 0) | 0;
 HEAP8[i1 + i3 >> 0] = 0;
 return;
}

function __ZNSt3__113__vector_baseINS_10unique_ptrIN4wasm6VacuumENS_14default_deleteIS3_EEEENS_9allocatorIS6_EEED2Ev(i4) {
 i4 = i4 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i5 = 0;
 i2 = HEAP32[i4 >> 2] | 0;
 if (i2 | 0) {
  i3 = i4 + 4 | 0;
  while (1) {
   i1 = HEAP32[i3 >> 2] | 0;
   if ((i1 | 0) == (i2 | 0)) break;
   i5 = i1 + -4 | 0;
   HEAP32[i3 >> 2] = i5;
   i1 = HEAP32[i5 >> 2] | 0;
   HEAP32[i5 >> 2] = 0;
   if (!i1) continue;
   FUNCTION_TABLE_vi[HEAP32[(HEAP32[i1 >> 2] | 0) + 4 >> 2] & 255](i1);
  }
  __ZdlPv(HEAP32[i4 >> 2] | 0);
 }
 return;
}

function __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6__initEPKwj(i1, i2, i3) {
 i1 = i1 | 0;
 i2 = i2 | 0;
 i3 = i3 | 0;
 var i4 = 0, i5 = 0;
 if (i3 >>> 0 > 1073741807) __ZNKSt3__121__basic_string_commonILb1EE20__throw_length_errorEv(i1);
 if (i3 >>> 0 < 2) {
  HEAP8[i1 >> 0] = i3 << 1;
  i1 = i1 + 4 | 0;
 } else {
  i5 = i3 + 4 & -4;
  i4 = __Znwj(i5 << 2) | 0;
  HEAP32[i1 + 8 >> 2] = i4;
  HEAP32[i1 >> 2] = i5 | 1;
  HEAP32[i1 + 4 >> 2] = i3;
  i1 = i4;
 }
 _wmemcpy(i1, i2, i3) | 0;
 HEAP32[i1 + (i3 << 2) >> 2] = 0;
 return;
}

function __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6__initEjc(i1, i3, i2) {
 i1 = i1 | 0;
 i3 = i3 | 0;
 i2 = i2 | 0;
 var i4 = 0, i5 = 0;
 if (i3 >>> 0 > 4294967279) __ZNKSt3__121__basic_string_commonILb1EE20__throw_length_errorEv(i1);
 if (i3 >>> 0 < 11) {
  HEAP8[i1 >> 0] = i3 << 1;
  i1 = i1 + 1 | 0;
 } else {
  i5 = i3 + 16 & -16;
  i4 = __Znwj(i5) | 0;
  HEAP32[i1 + 8 >> 2] = i4;
  HEAP32[i1 >> 2] = i5 | 1;
  HEAP32[i1 + 4 >> 2] = i3;
  i1 = i4;
 }
 _memset(i1 | 0, i2 | 0, i3 | 0) | 0;
 HEAP8[i1 + i3 >> 0] = 0;
 return;
}

function __ZNSt3__114__split_bufferINS_10unique_ptrIN4wasm6VacuumENS_14default_deleteIS3_EEEERNS_9allocatorIS6_EEED2Ev(i4) {
 i4 = i4 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i5 = 0;
 i2 = HEAP32[i4 + 4 >> 2] | 0;
 i3 = i4 + 8 | 0;
 while (1) {
  i1 = HEAP32[i3 >> 2] | 0;
  if ((i1 | 0) == (i2 | 0)) break;
  i5 = i1 + -4 | 0;
  HEAP32[i3 >> 2] = i5;
  i1 = HEAP32[i5 >> 2] | 0;
  HEAP32[i5 >> 2] = 0;
  if (!i1) continue;
  FUNCTION_TABLE_vi[HEAP32[(HEAP32[i1 >> 2] | 0) + 4 >> 2] & 255](i1);
 }
 i1 = HEAP32[i4 >> 2] | 0;
 if (i1 | 0) __ZdlPv(i1);
 return;
}

function __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6__initEjw(i1, i3, i2) {
 i1 = i1 | 0;
 i3 = i3 | 0;
 i2 = i2 | 0;
 var i4 = 0, i5 = 0;
 if (i3 >>> 0 > 1073741807) __ZNKSt3__121__basic_string_commonILb1EE20__throw_length_errorEv(i1);
 if (i3 >>> 0 < 2) {
  HEAP8[i1 >> 0] = i3 << 1;
  i1 = i1 + 4 | 0;
 } else {
  i5 = i3 + 4 & -4;
  i4 = __Znwj(i5 << 2) | 0;
  HEAP32[i1 + 8 >> 2] = i4;
  HEAP32[i1 >> 2] = i5 | 1;
  HEAP32[i1 + 4 >> 2] = i3;
  i1 = i4;
 }
 _wmemset(i1, i2, i3) | 0;
 HEAP32[i1 + (i3 << 2) >> 2] = 0;
 return;
}

function _puts(i3) {
 i3 = i3 | 0;
 var i1 = 0, i2 = 0, i4 = 0, i5 = 0;
 i4 = HEAP32[1318] | 0;
 if ((HEAP32[i4 + 76 >> 2] | 0) > -1) i5 = ___lockfile(i4) | 0; else i5 = 0;
 do if ((_fputs(i3, i4) | 0) < 0) i1 = 1; else {
  if ((HEAP8[i4 + 75 >> 0] | 0) != 10 ? (i1 = i4 + 20 | 0, i2 = HEAP32[i1 >> 2] | 0, i2 >>> 0 < (HEAP32[i4 + 16 >> 2] | 0) >>> 0) : 0) {
   HEAP32[i1 >> 2] = i2 + 1;
   HEAP8[i2 >> 0] = 10;
   i1 = 0;
   break;
  }
  i1 = (___overflow(i4, 10) | 0) < 0;
 } while (0);
 if (i5 | 0) ___unlockfile(i4);
 return i1 << 31 >> 31 | 0;
}

function _memset(i2, i6, i1) {
 i2 = i2 | 0;
 i6 = i6 | 0;
 i1 = i1 | 0;
 var i3 = 0, i4 = 0, i5 = 0, i7 = 0;
 i3 = i2 + i1 | 0;
 if ((i1 | 0) >= 20) {
  i6 = i6 & 255;
  i5 = i2 & 3;
  i7 = i6 | i6 << 8 | i6 << 16 | i6 << 24;
  i4 = i3 & ~3;
  if (i5) {
   i5 = i2 + 4 - i5 | 0;
   while ((i2 | 0) < (i5 | 0)) {
    HEAP8[i2 >> 0] = i6;
    i2 = i2 + 1 | 0;
   }
  }
  while ((i2 | 0) < (i4 | 0)) {
   HEAP32[i2 >> 2] = i7;
   i2 = i2 + 4 | 0;
  }
 }
 while ((i2 | 0) < (i3 | 0)) {
  HEAP8[i2 >> 0] = i6;
  i2 = i2 + 1 | 0;
 }
 return i2 - i1 | 0;
}

function __ZNSt3__16__treeIN4wasm4NameENS_4lessIS2_EENS_9allocatorIS2_EEE5eraseENS_21__tree_const_iteratorIS2_PNS_11__tree_nodeIS2_PvEEiEE(i3, i1) {
 i3 = i3 | 0;
 i1 = i1 | 0;
 var i2 = 0, i4 = 0;
 i1 = HEAP32[i1 >> 2] | 0;
 i2 = __ZNSt3__111__tree_nextIPNS_16__tree_node_baseIPvEEEET_S5_(i1) | 0;
 if ((HEAP32[i3 >> 2] | 0) == (i1 | 0)) HEAP32[i3 >> 2] = i2;
 i4 = i3 + 8 | 0;
 HEAP32[i4 >> 2] = (HEAP32[i4 >> 2] | 0) + -1;
 __ZNSt3__113__tree_removeIPNS_16__tree_node_baseIPvEEEEvT_S5_(HEAP32[i3 + 4 >> 2] | 0, i1);
 __ZdlPv(i1);
 return i2 | 0;
}

function __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEEC2EjjS9_(i4, i2, i3, i1) {
 i4 = i4 | 0;
 i2 = i2 | 0;
 i3 = i3 | 0;
 i1 = i1 | 0;
 HEAP32[i4 + 12 >> 2] = 0;
 HEAP32[i4 + 16 >> 2] = i1;
 if (!i2) i1 = 0; else i1 = __ZN10__cxxabiv112_GLOBAL__N_15arenaILj4096EE8allocateEj(HEAP32[i1 >> 2] | 0, i2 << 4) | 0;
 HEAP32[i4 >> 2] = i1;
 i3 = i1 + (i3 << 4) | 0;
 HEAP32[i4 + 8 >> 2] = i3;
 HEAP32[i4 + 4 >> 2] = i3;
 HEAP32[i4 + 12 >> 2] = i1 + (i2 << 4);
 return;
}

function __ZNSt3__117__assoc_sub_state12__make_readyEv(i2) {
 i2 = i2 | 0;
 var i1 = 0, i3 = 0, i4 = 0, i5 = 0;
 i3 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i1 = i3;
 i5 = i2 + 12 | 0;
 HEAP32[i1 >> 2] = i5;
 i4 = i1 + 4 | 0;
 HEAP8[i4 >> 0] = 1;
 __ZNSt3__15mutex4lockEv(i5);
 i5 = i2 + 88 | 0;
 HEAP32[i5 >> 2] = HEAP32[i5 >> 2] | 4;
 __ZNSt3__111unique_lockINS_5mutexEE6unlockEv(i1);
 __ZNSt3__118condition_variable10notify_allEv(i2 + 40 | 0);
 if (HEAP8[i4 >> 0] | 0) __ZNSt3__15mutex6unlockEv(HEAP32[i1 >> 2] | 0);
 STACKTOP = i3;
 return;
}

function __ZNSt3__112__hash_tableIN6cashew7IStringENS_4hashIS2_EENS_8equal_toIS2_EENS_9allocatorIS2_EEE16__construct_nodeIJS2_EEENS_10unique_ptrINS_11__hash_nodeIS2_PvEENS_22__hash_node_destructorINS7_ISE_EEEEEEDpOT_(i2, i3, i1) {
 i2 = i2 | 0;
 i3 = i3 | 0;
 i1 = i1 | 0;
 var i4 = 0;
 i4 = __Znwj(12) | 0;
 HEAP32[i2 >> 2] = i4;
 HEAP32[i2 + 4 >> 2] = i3 + 8;
 HEAP32[i4 + 8 >> 2] = HEAP32[i1 >> 2];
 HEAP8[i2 + 8 >> 0] = 1;
 i3 = HEAP32[i2 >> 2] | 0;
 HEAP32[i3 + 4 >> 2] = (HEAP32[i3 + 8 >> 2] | 0) * 33 ^ 5381;
 HEAP32[i3 >> 2] = 0;
 return;
}

function __ZN4wasm10Expression2isINS_6SwitchEEEbv(i1) {
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i4 = 0;
 i2 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i3 = i2;
 i1 = HEAP32[i1 >> 2] | 0;
 HEAP32[i3 >> 2] = 5;
 i4 = i3 + 4 | 0;
 HEAP32[i4 >> 2] = 0;
 HEAP32[i4 + 4 >> 2] = 0;
 HEAP32[i4 + 8 >> 2] = 0;
 HEAP32[i4 + 12 >> 2] = 0;
 HEAP32[i4 + 16 >> 2] = 0;
 HEAP32[i4 + 20 >> 2] = 0;
 HEAP32[i4 + 24 >> 2] = 0;
 HEAP32[i4 >> 2] = 5;
 __ZNSt3__113__vector_baseIN4wasm4NameENS_9allocatorIS2_EEED2Ev(i3 + 8 | 0);
 STACKTOP = i2;
 return (i1 | 0) == 5 | 0;
}

function __ZN4wasm10Expression4castINS_12CallIndirectEEEPT_v(i2) {
 i2 = i2 | 0;
 var i1 = 0, i3 = 0, i4 = 0, i5 = 0;
 i3 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i1 = i3;
 i4 = HEAP32[i2 >> 2] | 0;
 HEAP32[i1 >> 2] = 8;
 i5 = i1 + 4 | 0;
 HEAP32[i5 >> 2] = 0;
 HEAP32[i5 + 4 >> 2] = 0;
 HEAP32[i5 + 8 >> 2] = 0;
 HEAP32[i5 + 12 >> 2] = 0;
 if ((i4 | 0) == 8) {
  __ZNSt3__113__vector_baseIPN4wasm10ExpressionENS_9allocatorIS3_EEED2Ev(i1 + 8 | 0);
  STACKTOP = i3;
  return i2 | 0;
 } else ___assert_fail(15191, 14223, 775, 15206);
 return 0;
}

function __ZNSt3__114__split_bufferIPNS_6locale5facetERNS_15__sso_allocatorIS3_Lj28EEEED2Ev(i4) {
 i4 = i4 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i5 = 0;
 i1 = HEAP32[i4 + 4 >> 2] | 0;
 i2 = i4 + 8 | 0;
 i3 = HEAP32[i2 >> 2] | 0;
 while (1) {
  if ((i3 | 0) == (i1 | 0)) break;
  i5 = i3 + -4 | 0;
  HEAP32[i2 >> 2] = i5;
  i3 = i5;
 }
 i2 = HEAP32[i4 >> 2] | 0;
 do if (i2 | 0) {
  i1 = HEAP32[i4 + 16 >> 2] | 0;
  if ((i1 | 0) == (i2 | 0)) {
   HEAP8[i1 + 112 >> 0] = 0;
   break;
  } else {
   __ZdlPv(i2);
   break;
  }
 } while (0);
 return;
}

function __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj6EEERAT__Kc(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 var i3 = 0;
 HEAP8[i2 >> 0] = 10;
 i3 = i2 + 1 | 0;
 HEAP8[i3 >> 0] = HEAP8[i1 >> 0] | 0;
 HEAP8[i3 + 1 >> 0] = HEAP8[i1 + 1 >> 0] | 0;
 HEAP8[i3 + 2 >> 0] = HEAP8[i1 + 2 >> 0] | 0;
 HEAP8[i3 + 3 >> 0] = HEAP8[i1 + 3 >> 0] | 0;
 HEAP8[i3 + 4 >> 0] = HEAP8[i1 + 4 >> 0] | 0;
 HEAP8[i2 + 6 >> 0] = 0;
 i1 = i2 + 12 | 0;
 i2 = 0;
 while (1) {
  if ((i2 | 0) == 3) break;
  HEAP32[i1 + (i2 << 2) >> 2] = 0;
  i2 = i2 + 1 | 0;
 }
 return;
}

function __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj5EEERAT__Kc(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 var i3 = 0;
 HEAP8[i2 >> 0] = 8;
 i3 = i2 + 1 | 0;
 i1 = HEAPU8[i1 >> 0] | HEAPU8[i1 + 1 >> 0] << 8 | HEAPU8[i1 + 2 >> 0] << 16 | HEAPU8[i1 + 3 >> 0] << 24;
 HEAP8[i3 >> 0] = i1;
 HEAP8[i3 + 1 >> 0] = i1 >> 8;
 HEAP8[i3 + 2 >> 0] = i1 >> 16;
 HEAP8[i3 + 3 >> 0] = i1 >> 24;
 HEAP8[i2 + 5 >> 0] = 0;
 i1 = i2 + 12 | 0;
 i2 = 0;
 while (1) {
  if ((i2 | 0) == 3) break;
  HEAP32[i1 + (i2 << 2) >> 2] = 0;
  i2 = i2 + 1 | 0;
 }
 return;
}

function __ZNKSt3__110__function6__funcIZN4wasm6WalkerINS2_17RemoveUnusedNamesENS2_7VisitorIS4_vEEE9startWalkEPNS2_6ModuleEEUlvE_NS_9allocatorISA_EEFNS2_15ThreadWorkStateEvEE7__cloneEv(i1) {
 i1 = i1 | 0;
 var i2 = 0, i3 = 0;
 i2 = __Znwj(24) | 0;
 i3 = i1 + 4 | 0;
 HEAP32[i2 >> 2] = 4084;
 i1 = i2 + 4 | 0;
 HEAP32[i1 >> 2] = HEAP32[i3 >> 2];
 HEAP32[i1 + 4 >> 2] = HEAP32[i3 + 4 >> 2];
 HEAP32[i1 + 8 >> 2] = HEAP32[i3 + 8 >> 2];
 HEAP32[i1 + 12 >> 2] = HEAP32[i3 + 12 >> 2];
 HEAP32[i1 + 16 >> 2] = HEAP32[i3 + 16 >> 2];
 return i2 | 0;
}

function __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE(i3, i2) {
 i3 = i3 | 0;
 i2 = i2 | 0;
 var i1 = 0;
 HEAP32[i3 >> 2] = HEAP32[i2 >> 2];
 HEAP32[i3 + 4 >> 2] = HEAP32[i2 + 4 >> 2];
 HEAP32[i3 + 8 >> 2] = HEAP32[i2 + 8 >> 2];
 i1 = 0;
 while (1) {
  if ((i1 | 0) == 3) break;
  HEAP32[i2 + (i1 << 2) >> 2] = 0;
  i1 = i1 + 1 | 0;
 }
 i1 = i3 + 12 | 0;
 i2 = 0;
 while (1) {
  if ((i2 | 0) == 3) break;
  HEAP32[i1 + (i2 << 2) >> 2] = 0;
  i2 = i2 + 1 | 0;
 }
 return;
}

function __ZNSt3__111__call_onceERVmPvPFvS2_E(i2, i1, i3) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 i3 = i3 | 0;
 _pthread_mutex_lock(38280) | 0;
 while (1) {
  if ((HEAP32[i2 >> 2] | 0) != 1) break;
  _pthread_cond_wait(38308, 38280) | 0;
 }
 if (!(HEAP32[i2 >> 2] | 0)) {
  HEAP32[i2 >> 2] = 1;
  _pthread_mutex_unlock(38280) | 0;
  FUNCTION_TABLE_vi[i3 & 255](i1);
  _pthread_mutex_lock(38280) | 0;
  HEAP32[i2 >> 2] = -1;
  _pthread_mutex_unlock(38280) | 0;
  _pthread_cond_broadcast(38308) | 0;
 } else _pthread_mutex_unlock(38280) | 0;
 return;
}

function __ZNKSt3__110__function6__funcIZN4wasm6WalkerINS2_17RemoveUnusedNamesENS2_7VisitorIS4_vEEE9startWalkEPNS2_6ModuleEEUlvE_NS_9allocatorISA_EEFNS2_15ThreadWorkStateEvEE7__cloneEPNS0_6__baseISE_EE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 var i3 = 0;
 i3 = i2 + 4 | 0;
 HEAP32[i1 >> 2] = 4084;
 i2 = i1 + 4 | 0;
 HEAP32[i2 >> 2] = HEAP32[i3 >> 2];
 HEAP32[i2 + 4 >> 2] = HEAP32[i3 + 4 >> 2];
 HEAP32[i2 + 8 >> 2] = HEAP32[i3 + 8 >> 2];
 HEAP32[i2 + 12 >> 2] = HEAP32[i3 + 12 >> 2];
 HEAP32[i2 + 16 >> 2] = HEAP32[i3 + 16 >> 2];
 return;
}

function __ZNKSt3__110__function6__funcIZN4wasm6WalkerINS2_15RemoveUnusedBrsENS2_7VisitorIS4_vEEE9startWalkEPNS2_6ModuleEEUlvE_NS_9allocatorISA_EEFNS2_15ThreadWorkStateEvEE7__cloneEv(i1) {
 i1 = i1 | 0;
 var i2 = 0, i3 = 0;
 i2 = __Znwj(24) | 0;
 i3 = i1 + 4 | 0;
 HEAP32[i2 >> 2] = 3940;
 i1 = i2 + 4 | 0;
 HEAP32[i1 >> 2] = HEAP32[i3 >> 2];
 HEAP32[i1 + 4 >> 2] = HEAP32[i3 + 4 >> 2];
 HEAP32[i1 + 8 >> 2] = HEAP32[i3 + 8 >> 2];
 HEAP32[i1 + 12 >> 2] = HEAP32[i3 + 12 >> 2];
 HEAP32[i1 + 16 >> 2] = HEAP32[i3 + 16 >> 2];
 return i2 | 0;
}

function __ZN4wasm6Module11checkExportENS_4NameE(i3, i2) {
 i3 = i3 | 0;
 i2 = i2 | 0;
 var i1 = 0;
 i1 = i3 + 164 | 0;
 if ((__ZNSt3__16__treeINS_12__value_typeIN4wasm4NameEPNS2_6ExportEEENS_19__map_value_compareIS3_S6_NS_4lessIS3_EELb1EEENS_9allocatorIS6_EEE4findIS3_EENS_15__tree_iteratorIS6_PNS_11__tree_nodeIS6_PvEEiEERKT_(i1, i2) | 0) == (i3 + 168 | 0)) i1 = 0; else {
  i1 = __ZNSt3__13mapIN4wasm4NameEPNS1_6ExportENS_4lessIS2_EENS_9allocatorINS_4pairIKS2_S4_EEEEEixERS9_(i1, i2) | 0;
  i1 = HEAP32[i1 >> 2] | 0;
 }
 return i1 | 0;
}

function __ZNKSt3__110__function6__funcIZN4wasm6WalkerINS2_14SimplifyLocalsENS2_7VisitorIS4_vEEE9startWalkEPNS2_6ModuleEEUlvE_NS_9allocatorISA_EEFNS2_15ThreadWorkStateEvEE7__cloneEv(i1) {
 i1 = i1 | 0;
 var i2 = 0, i3 = 0;
 i2 = __Znwj(24) | 0;
 i3 = i1 + 4 | 0;
 HEAP32[i2 >> 2] = 4372;
 i1 = i2 + 4 | 0;
 HEAP32[i1 >> 2] = HEAP32[i3 >> 2];
 HEAP32[i1 + 4 >> 2] = HEAP32[i3 + 4 >> 2];
 HEAP32[i1 + 8 >> 2] = HEAP32[i3 + 8 >> 2];
 HEAP32[i1 + 12 >> 2] = HEAP32[i3 + 12 >> 2];
 HEAP32[i1 + 16 >> 2] = HEAP32[i3 + 16 >> 2];
 return i2 | 0;
}

function __ZNKSt3__110__function6__funcIZN4wasm6WalkerINS2_14PostEmscriptenENS2_7VisitorIS4_vEEE9startWalkEPNS2_6ModuleEEUlvE_NS_9allocatorISA_EEFNS2_15ThreadWorkStateEvEE7__cloneEv(i1) {
 i1 = i1 | 0;
 var i2 = 0, i3 = 0;
 i2 = __Znwj(24) | 0;
 i3 = i1 + 4 | 0;
 HEAP32[i2 >> 2] = 4256;
 i1 = i2 + 4 | 0;
 HEAP32[i1 >> 2] = HEAP32[i3 >> 2];
 HEAP32[i1 + 4 >> 2] = HEAP32[i3 + 4 >> 2];
 HEAP32[i1 + 8 >> 2] = HEAP32[i3 + 8 >> 2];
 HEAP32[i1 + 12 >> 2] = HEAP32[i3 + 12 >> 2];
 HEAP32[i1 + 16 >> 2] = HEAP32[i3 + 16 >> 2];
 return i2 | 0;
}

function __ZN4wasm22SExpressionWasmBuilder13getLocalIndexERNS_7ElementE(i4, i3) {
 i4 = i4 | 0;
 i3 = i3 | 0;
 var i1 = 0, i2 = 0, i5 = 0;
 i5 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i1 = i5 + 4 | 0;
 i2 = i5;
 if (!(HEAP8[i3 + 20 >> 0] | 0)) i1 = _atoi(__ZN4wasm7Element5c_strEv(i3) | 0) | 0; else {
  i4 = HEAP32[i4 + 64 >> 2] | 0;
  i3 = __ZN4wasm7Element3strEv(i3) | 0;
  HEAP32[i2 >> 2] = i3;
  HEAP32[i1 >> 2] = HEAP32[i2 >> 2];
  i1 = __ZN4wasm8Function13getLocalIndexENS_4NameE(i4, i1) | 0;
 }
 STACKTOP = i5;
 return i1 | 0;
}

function _emscripten_bind_LiteralList_push_back_1(i4, i3) {
 i4 = i4 | 0;
 i3 = i3 | 0;
 var i1 = 0, i2 = 0;
 i1 = i4 + 4 | 0;
 i2 = HEAP32[i1 >> 2] | 0;
 if ((i2 | 0) == (HEAP32[i4 + 8 >> 2] | 0)) __ZNSt3__16vectorIN4wasm7LiteralENS_9allocatorIS2_EEE21__push_back_slow_pathIRKS2_EEvOT_(i4, i3); else {
  HEAP32[i2 >> 2] = HEAP32[i3 >> 2];
  HEAP32[i2 + 4 >> 2] = HEAP32[i3 + 4 >> 2];
  HEAP32[i2 + 8 >> 2] = HEAP32[i3 + 8 >> 2];
  HEAP32[i2 + 12 >> 2] = HEAP32[i3 + 12 >> 2];
  HEAP32[i1 >> 2] = (HEAP32[i1 >> 2] | 0) + 16;
 }
 return;
}

function __ZNSt3__16vectorIjNS_9allocatorIjEEE6resizeEj(i5, i4) {
 i5 = i5 | 0;
 i4 = i4 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i6 = 0;
 i6 = i5 + 4 | 0;
 i1 = HEAP32[i6 >> 2] | 0;
 i3 = HEAP32[i5 >> 2] | 0;
 i2 = i1 - i3 >> 2;
 L1 : do if (i2 >>> 0 >= i4 >>> 0) {
  if (i2 >>> 0 > i4 >>> 0) {
   i2 = i3 + (i4 << 2) | 0;
   while (1) {
    if ((i1 | 0) == (i2 | 0)) break L1;
    i5 = i1 + -4 | 0;
    HEAP32[i6 >> 2] = i5;
    i1 = i5;
   }
  }
 } else __ZNSt3__16vectorIjNS_9allocatorIjEEE8__appendEj(i5, i4 - i2 | 0); while (0);
 return;
}

function __ZNSt3__16vectorIiNS_9allocatorIiEEE6resizeEj(i5, i4) {
 i5 = i5 | 0;
 i4 = i4 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i6 = 0;
 i6 = i5 + 4 | 0;
 i1 = HEAP32[i6 >> 2] | 0;
 i3 = HEAP32[i5 >> 2] | 0;
 i2 = i1 - i3 >> 2;
 L1 : do if (i2 >>> 0 >= i4 >>> 0) {
  if (i2 >>> 0 > i4 >>> 0) {
   i2 = i3 + (i4 << 2) | 0;
   while (1) {
    if ((i1 | 0) == (i2 | 0)) break L1;
    i5 = i1 + -4 | 0;
    HEAP32[i6 >> 2] = i5;
    i1 = i5;
   }
  }
 } else __ZNSt3__16vectorIiNS_9allocatorIiEEE8__appendEj(i5, i4 - i2 | 0); while (0);
 return;
}

function __ZNSt3__16vectorIPNS_6locale5facetENS_15__sso_allocatorIS3_Lj28EEEEC2Ej(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 var i3 = 0;
 HEAP32[i2 >> 2] = 0;
 i3 = i2 + 4 | 0;
 HEAP32[i3 >> 2] = 0;
 HEAP32[i2 + 8 >> 2] = 0;
 HEAP8[i2 + 128 >> 0] = 0;
 if (i1 | 0) {
  __ZNSt3__16vectorIPNS_6locale5facetENS_15__sso_allocatorIS3_Lj28EEEE8allocateEj(i2, i1);
  i2 = HEAP32[i3 >> 2] | 0;
  do {
   HEAP32[i2 >> 2] = 0;
   i2 = (HEAP32[i3 >> 2] | 0) + 4 | 0;
   HEAP32[i3 >> 2] = i2;
   i1 = i1 + -1 | 0;
  } while ((i1 | 0) != 0);
 }
 return;
}

function __ZNKSt3__110__function6__funcIZN4wasm6WalkerINS2_15RemoveUnusedBrsENS2_7VisitorIS4_vEEE9startWalkEPNS2_6ModuleEEUlvE_NS_9allocatorISA_EEFNS2_15ThreadWorkStateEvEE7__cloneEPNS0_6__baseISE_EE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 var i3 = 0;
 i3 = i2 + 4 | 0;
 HEAP32[i1 >> 2] = 3940;
 i2 = i1 + 4 | 0;
 HEAP32[i2 >> 2] = HEAP32[i3 >> 2];
 HEAP32[i2 + 4 >> 2] = HEAP32[i3 + 4 >> 2];
 HEAP32[i2 + 8 >> 2] = HEAP32[i3 + 8 >> 2];
 HEAP32[i2 + 12 >> 2] = HEAP32[i3 + 12 >> 2];
 HEAP32[i2 + 16 >> 2] = HEAP32[i3 + 16 >> 2];
 return;
}

function __ZNKSt3__110__function6__funcIZN4wasm6WalkerINS2_13ReorderLocalsENS2_7VisitorIS4_vEEE9startWalkEPNS2_6ModuleEEUlvE_NS_9allocatorISA_EEFNS2_15ThreadWorkStateEvEE7__cloneEv(i1) {
 i1 = i1 | 0;
 var i2 = 0, i3 = 0;
 i2 = __Znwj(24) | 0;
 i3 = i1 + 4 | 0;
 HEAP32[i2 >> 2] = 4628;
 i1 = i2 + 4 | 0;
 HEAP32[i1 >> 2] = HEAP32[i3 >> 2];
 HEAP32[i1 + 4 >> 2] = HEAP32[i3 + 4 >> 2];
 HEAP32[i1 + 8 >> 2] = HEAP32[i3 + 8 >> 2];
 HEAP32[i1 + 12 >> 2] = HEAP32[i3 + 12 >> 2];
 HEAP32[i1 + 16 >> 2] = HEAP32[i3 + 16 >> 2];
 return i2 | 0;
}

function __ZNSt3__18functionIFN4wasm15ThreadWorkStateEvEEC2ERKS4_(i4, i3) {
 i4 = i4 | 0;
 i3 = i3 | 0;
 var i1 = 0, i2 = 0;
 i1 = i3 + 16 | 0;
 i2 = HEAP32[i1 >> 2] | 0;
 do if (i2) if ((i2 | 0) == (i3 | 0)) {
  HEAP32[i4 + 16 >> 2] = i4;
  i3 = HEAP32[i1 >> 2] | 0;
  FUNCTION_TABLE_vii[HEAP32[(HEAP32[i3 >> 2] | 0) + 12 >> 2] & 511](i3, i4);
  break;
 } else {
  i3 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i2 >> 2] | 0) + 8 >> 2] & 127](i2) | 0;
  HEAP32[i4 + 16 >> 2] = i3;
  break;
 } else HEAP32[i4 + 16 >> 2] = 0; while (0);
 return;
}

function __ZNKSt3__110__function6__funcIZN4wasm6WalkerINS2_14SimplifyLocalsENS2_7VisitorIS4_vEEE9startWalkEPNS2_6ModuleEEUlvE_NS_9allocatorISA_EEFNS2_15ThreadWorkStateEvEE7__cloneEPNS0_6__baseISE_EE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 var i3 = 0;
 i3 = i2 + 4 | 0;
 HEAP32[i1 >> 2] = 4372;
 i2 = i1 + 4 | 0;
 HEAP32[i2 >> 2] = HEAP32[i3 >> 2];
 HEAP32[i2 + 4 >> 2] = HEAP32[i3 + 4 >> 2];
 HEAP32[i2 + 8 >> 2] = HEAP32[i3 + 8 >> 2];
 HEAP32[i2 + 12 >> 2] = HEAP32[i3 + 12 >> 2];
 HEAP32[i2 + 16 >> 2] = HEAP32[i3 + 16 >> 2];
 return;
}

function __ZNKSt3__110__function6__funcIZN4wasm6WalkerINS2_14PostEmscriptenENS2_7VisitorIS4_vEEE9startWalkEPNS2_6ModuleEEUlvE_NS_9allocatorISA_EEFNS2_15ThreadWorkStateEvEE7__cloneEPNS0_6__baseISE_EE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 var i3 = 0;
 i3 = i2 + 4 | 0;
 HEAP32[i1 >> 2] = 4256;
 i2 = i1 + 4 | 0;
 HEAP32[i2 >> 2] = HEAP32[i3 >> 2];
 HEAP32[i2 + 4 >> 2] = HEAP32[i3 + 4 >> 2];
 HEAP32[i2 + 8 >> 2] = HEAP32[i3 + 8 >> 2];
 HEAP32[i2 + 12 >> 2] = HEAP32[i3 + 12 >> 2];
 HEAP32[i2 + 16 >> 2] = HEAP32[i3 + 16 >> 2];
 return;
}

function __ZNKSt3__110__function6__funcIZN4wasm6WalkerINS2_13ReorderLocalsENS2_7VisitorIS4_vEEE9startWalkEPNS2_6ModuleEEUlvE_NS_9allocatorISA_EEFNS2_15ThreadWorkStateEvEE7__cloneEPNS0_6__baseISE_EE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 var i3 = 0;
 i3 = i2 + 4 | 0;
 HEAP32[i1 >> 2] = 4628;
 i2 = i1 + 4 | 0;
 HEAP32[i2 >> 2] = HEAP32[i3 >> 2];
 HEAP32[i2 + 4 >> 2] = HEAP32[i3 + 4 >> 2];
 HEAP32[i2 + 8 >> 2] = HEAP32[i3 + 8 >> 2];
 HEAP32[i2 + 12 >> 2] = HEAP32[i3 + 12 >> 2];
 HEAP32[i2 + 16 >> 2] = HEAP32[i3 + 16 >> 2];
 return;
}

function __ZNKSt3__110__function6__funcIZN4wasm6WalkerINS2_11MergeBlocksENS2_7VisitorIS4_vEEE9startWalkEPNS2_6ModuleEEUlvE_NS_9allocatorISA_EEFNS2_15ThreadWorkStateEvEE7__cloneEv(i1) {
 i1 = i1 | 0;
 var i2 = 0, i3 = 0;
 i2 = __Znwj(24) | 0;
 i3 = i1 + 4 | 0;
 HEAP32[i2 >> 2] = 3608;
 i1 = i2 + 4 | 0;
 HEAP32[i1 >> 2] = HEAP32[i3 >> 2];
 HEAP32[i1 + 4 >> 2] = HEAP32[i3 + 4 >> 2];
 HEAP32[i1 + 8 >> 2] = HEAP32[i3 + 8 >> 2];
 HEAP32[i1 + 12 >> 2] = HEAP32[i3 + 12 >> 2];
 HEAP32[i1 + 16 >> 2] = HEAP32[i3 + 16 >> 2];
 return i2 | 0;
}

function __ZN4wasm12FunctionTypeaSERKS0_(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 var i3 = 0, i4 = 0, i5 = 0;
 i5 = i1;
 i4 = HEAP32[i5 + 4 >> 2] | 0;
 i3 = i2;
 HEAP32[i3 >> 2] = HEAP32[i5 >> 2];
 HEAP32[i3 + 4 >> 2] = i4;
 if ((i2 | 0) != (i1 | 0)) __ZNSt3__16vectorIN4wasm8WasmTypeENS_9allocatorIS2_EEE6assignIPS2_EENS_9enable_ifIXaasr21__is_forward_iteratorIT_EE5valuesr16is_constructibleIS2_NS_15iterator_traitsIS9_E9referenceEEE5valueEvE4typeES9_S9_(i2 + 8 | 0, HEAP32[i1 + 8 >> 2] | 0, HEAP32[i1 + 12 >> 2] | 0);
 return i2 | 0;
}

function _strerror(i1) {
 i1 = i1 | 0;
 var i2 = 0, i3 = 0;
 i2 = 0;
 while (1) {
  if ((HEAPU8[27280 + i2 >> 0] | 0) == (i1 | 0)) {
   i3 = 2;
   break;
  }
  i2 = i2 + 1 | 0;
  if ((i2 | 0) == 87) {
   i2 = 87;
   i1 = 27368;
   i3 = 5;
   break;
  }
 }
 if ((i3 | 0) == 2) if (!i2) i1 = 27368; else {
  i1 = 27368;
  i3 = 5;
 }
 if ((i3 | 0) == 5) while (1) {
  i3 = i1;
  while (1) {
   i1 = i3 + 1 | 0;
   if (!(HEAP8[i3 >> 0] | 0)) break; else i3 = i1;
  }
  i2 = i2 + -1 | 0;
  if (!i2) break; else i3 = 5;
 }
 return i1 | 0;
}

function __ZNKSt3__110__function6__funcIZN4wasm6WalkerINS2_11MergeBlocksENS2_7VisitorIS4_vEEE9startWalkEPNS2_6ModuleEEUlvE_NS_9allocatorISA_EEFNS2_15ThreadWorkStateEvEE7__cloneEPNS0_6__baseISE_EE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 var i3 = 0;
 i3 = i2 + 4 | 0;
 HEAP32[i1 >> 2] = 3608;
 i2 = i1 + 4 | 0;
 HEAP32[i2 >> 2] = HEAP32[i3 >> 2];
 HEAP32[i2 + 4 >> 2] = HEAP32[i3 + 4 >> 2];
 HEAP32[i2 + 8 >> 2] = HEAP32[i3 + 8 >> 2];
 HEAP32[i2 + 12 >> 2] = HEAP32[i3 + 12 >> 2];
 HEAP32[i2 + 16 >> 2] = HEAP32[i3 + 16 >> 2];
 return;
}

function __ZNSt3__114__split_bufferIN4wasm14SimplifyLocals10BlockBreakERNS_9allocatorIS3_EEED2Ev(i4) {
 i4 = i4 | 0;
 var i1 = 0, i2 = 0, i3 = 0;
 i1 = HEAP32[i4 + 4 >> 2] | 0;
 i2 = i4 + 8 | 0;
 while (1) {
  i3 = HEAP32[i2 >> 2] | 0;
  if ((i3 | 0) == (i1 | 0)) break;
  HEAP32[i2 >> 2] = i3 + -16;
  __ZNSt3__16__treeINS_12__value_typeIjN4wasm14SimplifyLocals12SinkableInfoEEENS_19__map_value_compareIjS5_NS_4lessIjEELb1EEENS_9allocatorIS5_EEED2Ev(i3 + -12 | 0);
 }
 i1 = HEAP32[i4 >> 2] | 0;
 if (i1 | 0) __ZdlPv(i1);
 return;
}

function __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_(i4, i2, i3, i1) {
 i4 = i4 | 0;
 i2 = i2 | 0;
 i3 = i3 | 0;
 i1 = i1 | 0;
 HEAP32[i4 + 12 >> 2] = 0;
 HEAP32[i4 + 16 >> 2] = i1;
 if (!i2) i1 = 0; else i1 = __ZN10__cxxabiv112_GLOBAL__N_15arenaILj4096EE8allocateEj(HEAP32[i1 >> 2] | 0, i2 * 24 | 0) | 0;
 HEAP32[i4 >> 2] = i1;
 i3 = i1 + (i3 * 24 | 0) | 0;
 HEAP32[i4 + 8 >> 2] = i3;
 HEAP32[i4 + 4 >> 2] = i3;
 HEAP32[i4 + 12 >> 2] = i1 + (i2 * 24 | 0);
 return;
}

function __ZNSt3__16vectorINS_13unordered_mapIN6cashew7IStringEiNS_4hashIS3_EENS_8equal_toIS3_EENS_9allocatorINS_4pairIKS3_iEEEEEENS8_ISD_EEE18__construct_at_endEj(i1, i2) {
 i1 = i1 | 0;
 i2 = i2 | 0;
 var i3 = 0;
 i3 = i1 + 4 | 0;
 i1 = i2;
 i2 = HEAP32[i3 >> 2] | 0;
 do {
  HEAP32[i2 >> 2] = 0;
  HEAP32[i2 + 4 >> 2] = 0;
  HEAP32[i2 + 8 >> 2] = 0;
  HEAP32[i2 + 12 >> 2] = 0;
  HEAPF32[i2 + 16 >> 2] = 1.0;
  i2 = (HEAP32[i3 >> 2] | 0) + 20 | 0;
  HEAP32[i3 >> 2] = i2;
  i1 = i1 + -1 | 0;
 } while ((i1 | 0) != 0);
 return;
}

function __ZNSt3__16vectorIcNS_9allocatorIcEEE6resizeEj(i5, i4) {
 i5 = i5 | 0;
 i4 = i4 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i6 = 0;
 i6 = i5 + 4 | 0;
 i1 = HEAP32[i6 >> 2] | 0;
 i3 = HEAP32[i5 >> 2] | 0;
 i2 = i1 - i3 | 0;
 L1 : do if (i2 >>> 0 >= i4 >>> 0) {
  if (i2 >>> 0 > i4 >>> 0) {
   i2 = i3 + i4 | 0;
   while (1) {
    if ((i1 | 0) == (i2 | 0)) break L1;
    i5 = i1 + -1 | 0;
    HEAP32[i6 >> 2] = i5;
    i1 = i5;
   }
  }
 } else __ZNSt3__16vectorIcNS_9allocatorIcEEE8__appendEj(i5, i4 - i2 | 0); while (0);
 return;
}

function __ZNSt3__113__vector_baseIN4wasm14SimplifyLocals10BlockBreakENS_9allocatorIS3_EEED2Ev(i4) {
 i4 = i4 | 0;
 var i1 = 0, i2 = 0, i3 = 0;
 i1 = HEAP32[i4 >> 2] | 0;
 if (i1 | 0) {
  i2 = i4 + 4 | 0;
  while (1) {
   i3 = HEAP32[i2 >> 2] | 0;
   if ((i3 | 0) == (i1 | 0)) break;
   HEAP32[i2 >> 2] = i3 + -16;
   __ZNSt3__16__treeINS_12__value_typeIjN4wasm14SimplifyLocals12SinkableInfoEEENS_19__map_value_compareIjS5_NS_4lessIjEELb1EEENS_9allocatorIS5_EEED2Ev(i3 + -12 | 0);
  }
  __ZdlPv(HEAP32[i4 >> 2] | 0);
 }
 return;
}

function __ZNKSt3__110__function6__funcIZN4wasm6WalkerINS2_6VacuumENS2_7VisitorIS4_vEEE9startWalkEPNS2_6ModuleEEUlvE_NS_9allocatorISA_EEFNS2_15ThreadWorkStateEvEE7__cloneEv(i1) {
 i1 = i1 | 0;
 var i2 = 0, i3 = 0;
 i2 = __Znwj(24) | 0;
 i3 = i1 + 4 | 0;
 HEAP32[i2 >> 2] = 4800;
 i1 = i2 + 4 | 0;
 HEAP32[i1 >> 2] = HEAP32[i3 >> 2];
 HEAP32[i1 + 4 >> 2] = HEAP32[i3 + 4 >> 2];
 HEAP32[i1 + 8 >> 2] = HEAP32[i3 + 8 >> 2];
 HEAP32[i1 + 12 >> 2] = HEAP32[i3 + 12 >> 2];
 HEAP32[i1 + 16 >> 2] = HEAP32[i3 + 16 >> 2];
 return i2 | 0;
}

function __ZNSt3__113__vector_baseINS_10unique_ptrIN4wasm6ThreadENS_14default_deleteIS3_EEEENS_9allocatorIS6_EEED2Ev(i4) {
 i4 = i4 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i5 = 0;
 i2 = HEAP32[i4 >> 2] | 0;
 if (i2 | 0) {
  i3 = i4 + 4 | 0;
  while (1) {
   i1 = HEAP32[i3 >> 2] | 0;
   if ((i1 | 0) == (i2 | 0)) break;
   i5 = i1 + -4 | 0;
   HEAP32[i3 >> 2] = i5;
   i1 = HEAP32[i5 >> 2] | 0;
   HEAP32[i5 >> 2] = 0;
   if (!i1) continue;
   __ZN4wasm6ThreadD2Ev(i1);
   __ZdlPv(i1);
  }
  __ZdlPv(HEAP32[i4 >> 2] | 0);
 }
 return;
}

function __ZSt9terminatev() {
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0;
 i3 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i4 = i3 + 8 | 0;
 i1 = ___cxa_get_globals_fast() | 0;
 if ((i1 | 0 ? (i2 = HEAP32[i1 >> 2] | 0, i2 | 0) : 0) ? (i1 = i2 + 48 | 0, (HEAP32[i1 >> 2] & -256 | 0) == 1126902528 ? (HEAP32[i1 + 4 >> 2] | 0) == 1129074247 : 0) : 0) {
  FUNCTION_TABLE_v[HEAP32[i2 + 12 >> 2] & 3]();
  _abort_message(33045, i3);
 }
 i3 = HEAP32[3082] | 0;
 HEAP32[3082] = i3 + 0;
 FUNCTION_TABLE_v[i3 & 3]();
 _abort_message(33045, i4);
}

function __ZNKSt3__110__function6__funcIZN4wasm6WalkerINS2_6VacuumENS2_7VisitorIS4_vEEE9startWalkEPNS2_6ModuleEEUlvE_NS_9allocatorISA_EEFNS2_15ThreadWorkStateEvEE7__cloneEPNS0_6__baseISE_EE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 var i3 = 0;
 i3 = i2 + 4 | 0;
 HEAP32[i1 >> 2] = 4800;
 i2 = i1 + 4 | 0;
 HEAP32[i2 >> 2] = HEAP32[i3 >> 2];
 HEAP32[i2 + 4 >> 2] = HEAP32[i3 + 4 >> 2];
 HEAP32[i2 + 8 >> 2] = HEAP32[i3 + 8 >> 2];
 HEAP32[i2 + 12 >> 2] = HEAP32[i3 + 12 >> 2];
 HEAP32[i2 + 16 >> 2] = HEAP32[i3 + 16 >> 2];
 return;
}

function __ZNSt3__18functionIFPN4wasm4PassEvEEC2ERKS5_(i4, i3) {
 i4 = i4 | 0;
 i3 = i3 | 0;
 var i1 = 0, i2 = 0;
 i1 = i3 + 16 | 0;
 i2 = HEAP32[i1 >> 2] | 0;
 do if (i2) if ((i2 | 0) == (i3 | 0)) {
  HEAP32[i4 + 16 >> 2] = i4;
  i3 = HEAP32[i1 >> 2] | 0;
  FUNCTION_TABLE_vii[HEAP32[(HEAP32[i3 >> 2] | 0) + 12 >> 2] & 511](i3, i4);
  break;
 } else {
  i3 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i2 >> 2] | 0) + 8 >> 2] & 127](i2) | 0;
  HEAP32[i4 + 16 >> 2] = i3;
  break;
 } else HEAP32[i4 + 16 >> 2] = 0; while (0);
 return;
}

function __ZNSt3__16__treeINS_12__value_typeIN4wasm4NameEPNS2_12FunctionTypeEEENS_19__map_value_compareIS3_S6_NS_4lessIS3_EELb1EEENS_9allocatorIS6_EEE13__lower_boundIS3_EENS_15__tree_iteratorIS6_PNS_11__tree_nodeIS6_PvEEiEERKT_SJ_SJ_(i3, i4, i2, i1) {
 i3 = i3 | 0;
 i4 = i4 | 0;
 i2 = i2 | 0;
 i1 = i1 | 0;
 L1 : while (1) {
  while (1) {
   if (!i2) break L1;
   if (!(__ZNK6cashew7IStringltERKS0_(i2 + 16 | 0, i4) | 0)) break;
   i2 = HEAP32[i2 + 4 >> 2] | 0;
  }
  i1 = i2;
  i2 = HEAP32[i2 >> 2] | 0;
 }
 return i1 | 0;
}

function __ZNSt3__114__split_bufferINS_10unique_ptrIN4wasm6ThreadENS_14default_deleteIS3_EEEERNS_9allocatorIS6_EEED2Ev(i4) {
 i4 = i4 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i5 = 0;
 i2 = HEAP32[i4 + 4 >> 2] | 0;
 i3 = i4 + 8 | 0;
 while (1) {
  i1 = HEAP32[i3 >> 2] | 0;
  if ((i1 | 0) == (i2 | 0)) break;
  i5 = i1 + -4 | 0;
  HEAP32[i3 >> 2] = i5;
  i1 = HEAP32[i5 >> 2] | 0;
  HEAP32[i5 >> 2] = 0;
  if (!i1) continue;
  __ZN4wasm6ThreadD2Ev(i1);
  __ZdlPv(i1);
 }
 i1 = HEAP32[i4 >> 2] | 0;
 if (i1 | 0) __ZdlPv(i1);
 return;
}

function __ZNK10__cxxabiv120__si_class_type_info16search_above_dstEPNS_19__dynamic_cast_infoEPKvS4_ib(i5, i3, i2, i1, i4, i6) {
 i5 = i5 | 0;
 i3 = i3 | 0;
 i2 = i2 | 0;
 i1 = i1 | 0;
 i4 = i4 | 0;
 i6 = i6 | 0;
 if ((i5 | 0) == (HEAP32[i3 + 8 >> 2] | 0)) __ZNK10__cxxabiv117__class_type_info29process_static_type_above_dstEPNS_19__dynamic_cast_infoEPKvS4_i(0, i3, i2, i1, i4); else {
  i5 = HEAP32[i5 + 8 >> 2] | 0;
  FUNCTION_TABLE_viiiiii[HEAP32[(HEAP32[i5 >> 2] | 0) + 20 >> 2] & 15](i5, i3, i2, i1, i4, i6);
 }
 return;
}

function __ZNK4wasm7Literal19countTrailingZeroesEv(i3, i2) {
 i3 = i3 | 0;
 i2 = i2 | 0;
 var i1 = 0;
 i1 = i2 + 8 | 0;
 if ((HEAP32[i2 >> 2] | 0) == 1) {
  i1 = __ZN4wasm19CountTrailingZeroesIjEEiT_(HEAP32[i1 >> 2] | 0) | 0;
  HEAP32[i3 + 8 >> 2] = i1;
  i1 = 1;
 } else {
  i2 = i1;
  i2 = __ZN4wasm19CountTrailingZeroesIyEEiT_(HEAP32[i2 >> 2] | 0, HEAP32[i2 + 4 >> 2] | 0) | 0;
  i1 = i3 + 8 | 0;
  HEAP32[i1 >> 2] = i2;
  HEAP32[i1 + 4 >> 2] = ((i2 | 0) < 0) << 31 >> 31;
  i1 = 2;
 }
 HEAP32[i3 >> 2] = i1;
 return;
}

function __ZN4wasm22SExpressionWasmBuilder9makeUnaryERNS_7ElementENS_7UnaryOpENS_8WasmTypeE(i3, i2, i1, i4) {
 i3 = i3 | 0;
 i2 = i2 | 0;
 i1 = i1 | 0;
 i4 = i4 | 0;
 var i5 = 0;
 i5 = __ZN10MixedArena5allocIN4wasm5UnaryEEEPT_v(HEAP32[i3 + 4 >> 2] | 0) | 0;
 HEAP32[i5 + 8 >> 2] = i1;
 i2 = __ZN4wasm7Element4listEv(i2) | 0;
 i3 = __ZN4wasm22SExpressionWasmBuilder15parseExpressionERNS_7ElementE(i3, HEAP32[(HEAP32[i2 >> 2] | 0) + 4 >> 2] | 0) | 0;
 HEAP32[i5 + 12 >> 2] = i3;
 HEAP32[i5 + 4 >> 2] = i4;
 return i5 | 0;
}

function __ZNSt3__16__treeINS_12__value_typeIN4wasm4NameEPNS2_6ExportEEENS_19__map_value_compareIS3_S6_NS_4lessIS3_EELb1EEENS_9allocatorIS6_EEE13__lower_boundIS3_EENS_15__tree_iteratorIS6_PNS_11__tree_nodeIS6_PvEEiEERKT_SJ_SJ_(i3, i4, i2, i1) {
 i3 = i3 | 0;
 i4 = i4 | 0;
 i2 = i2 | 0;
 i1 = i1 | 0;
 L1 : while (1) {
  while (1) {
   if (!i2) break L1;
   if (!(__ZNK6cashew7IStringltERKS0_(i2 + 16 | 0, i4) | 0)) break;
   i2 = HEAP32[i2 + 4 >> 2] | 0;
  }
  i1 = i2;
  i2 = HEAP32[i2 >> 2] | 0;
 }
 return i1 | 0;
}

function __ZNK4wasm7Literal18countLeadingZeroesEv(i3, i2) {
 i3 = i3 | 0;
 i2 = i2 | 0;
 var i1 = 0;
 i1 = i2 + 8 | 0;
 if ((HEAP32[i2 >> 2] | 0) == 1) {
  i1 = __ZN4wasm18CountLeadingZeroesIjEEiT_(HEAP32[i1 >> 2] | 0) | 0;
  HEAP32[i3 + 8 >> 2] = i1;
  i1 = 1;
 } else {
  i2 = i1;
  i2 = __ZN4wasm18CountLeadingZeroesIyEEiT_(HEAP32[i2 >> 2] | 0, HEAP32[i2 + 4 >> 2] | 0) | 0;
  i1 = i3 + 8 | 0;
  HEAP32[i1 >> 2] = i2;
  HEAP32[i1 + 4 >> 2] = ((i2 | 0) < 0) << 31 >> 31;
  i1 = 2;
 }
 HEAP32[i3 >> 2] = i1;
 return;
}

function __ZNKSt3__16__treeINS_12__value_typeIjN4wasm14SimplifyLocals12SinkableInfoEEENS_19__map_value_compareIjS5_NS_4lessIjEELb1EEENS_9allocatorIS5_EEE14__count_uniqueIjEEjRKT_(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 var i3 = 0;
 i3 = HEAP32[i1 >> 2] | 0;
 i1 = i2 + 4 | 0;
 while (1) {
  i1 = HEAP32[i1 >> 2] | 0;
  if (!i1) {
   i1 = 0;
   break;
  }
  i2 = HEAP32[i1 + 16 >> 2] | 0;
  if (i3 >>> 0 < i2 >>> 0) continue;
  if (i2 >>> 0 >= i3 >>> 0) {
   i1 = 1;
   break;
  }
  i1 = i1 + 4 | 0;
 }
 return i1 | 0;
}

function __ZNSt3__18functionIFvvEEC2ERKS2_(i4, i3) {
 i4 = i4 | 0;
 i3 = i3 | 0;
 var i1 = 0, i2 = 0;
 i1 = i3 + 16 | 0;
 i2 = HEAP32[i1 >> 2] | 0;
 do if (i2) if ((i2 | 0) == (i3 | 0)) {
  HEAP32[i4 + 16 >> 2] = i4;
  i3 = HEAP32[i1 >> 2] | 0;
  FUNCTION_TABLE_vii[HEAP32[(HEAP32[i3 >> 2] | 0) + 12 >> 2] & 511](i3, i4);
  break;
 } else {
  i3 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i2 >> 2] | 0) + 8 >> 2] & 127](i2) | 0;
  HEAP32[i4 + 16 >> 2] = i3;
  break;
 } else HEAP32[i4 + 16 >> 2] = 0; while (0);
 return;
}

function __ZNSt3__16__treeIN4wasm4NameENS_4lessIS2_EENS_9allocatorIS2_EEE4findIS2_EENS_15__tree_iteratorIS2_PNS_11__tree_nodeIS2_PvEEiEERKT_(i2, i3) {
 i2 = i2 | 0;
 i3 = i3 | 0;
 var i1 = 0;
 i1 = i2 + 4 | 0;
 i2 = __ZNSt3__16__treeIN4wasm4NameENS_4lessIS2_EENS_9allocatorIS2_EEE13__lower_boundIS2_EENS_15__tree_iteratorIS2_PNS_11__tree_nodeIS2_PvEEiEERKT_SD_SD_(i2, i3, HEAP32[i1 >> 2] | 0, i1) | 0;
 if ((i2 | 0) != (i1 | 0) ? !(__ZNK6cashew7IStringltERKS0_(i3, i2 + 16 | 0) | 0) : 0) i1 = i2;
 return i1 | 0;
}

function __ZN4wasm22SExpressionWasmBuilder12makeGetLocalERNS_7ElementE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 var i3 = 0;
 i3 = __ZN10MixedArena5allocIN4wasm8GetLocalEEEPT_v(HEAP32[i2 + 4 >> 2] | 0) | 0;
 i1 = __ZN4wasm7Element4listEv(i1) | 0;
 i1 = __ZN4wasm22SExpressionWasmBuilder13getLocalIndexERNS_7ElementE(i2, HEAP32[(HEAP32[i1 >> 2] | 0) + 4 >> 2] | 0) | 0;
 HEAP32[i3 + 8 >> 2] = i1;
 i2 = __ZN4wasm8Function12getLocalTypeEj(HEAP32[i2 + 64 >> 2] | 0, i1) | 0;
 HEAP32[i3 + 4 >> 2] = i2;
 return i3 | 0;
}

function __ZN4wasm10Expression7dynCastINS_5BlockEEEPT_v(i1) {
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i4 = 0, i5 = 0;
 i3 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i4 = i3;
 i2 = HEAP32[i1 >> 2] | 0;
 HEAP32[i4 >> 2] = 1;
 i5 = i4 + 4 | 0;
 HEAP32[i5 >> 2] = 0;
 HEAP32[i5 + 4 >> 2] = 0;
 HEAP32[i5 + 8 >> 2] = 0;
 HEAP32[i5 + 12 >> 2] = 0;
 HEAP32[i5 + 16 >> 2] = 0;
 __ZNSt3__113__vector_baseIPN4wasm10ExpressionENS_9allocatorIS3_EEED2Ev(i4 + 12 | 0);
 STACKTOP = i3;
 return ((i2 | 0) == 1 ? i1 : 0) | 0;
}

function __ZN10__cxxabiv112_GLOBAL__N_12DbD2Ev(i1) {
 i1 = i1 | 0;
 __ZNSt3__113__vector_baseINS_6vectorINS1_IN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEENS5_IS7_Lj4096EEEEENS5_IS9_Lj4096EEEED2Ev(i1 + 32 | 0);
 __ZNSt3__113__vector_baseINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEENS5_IS7_Lj4096EEEED2Ev(i1 + 16 | 0);
 __ZNSt3__113__vector_baseIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEED2Ev(i1);
 return;
}

function __ZNSt3__13mapIN6cashew7IStringEN4wasm7LiteralENS_4lessIS2_EENS_9allocatorINS_4pairIKS2_S4_EEEEE25__construct_node_with_keyEOS2_(i2, i3, i1) {
 i2 = i2 | 0;
 i3 = i3 | 0;
 i1 = i1 | 0;
 var i4 = 0;
 i4 = __Znwj(40) | 0;
 HEAP32[i2 >> 2] = i4;
 HEAP32[i2 + 4 >> 2] = i3 + 4;
 HEAP32[i4 + 16 >> 2] = HEAP32[i1 >> 2];
 HEAP8[i2 + 8 >> 0] = 1;
 i3 = HEAP32[i2 >> 2] | 0;
 HEAP32[i3 + 24 >> 2] = 0;
 i3 = i3 + 32 | 0;
 HEAP32[i3 >> 2] = 0;
 HEAP32[i3 + 4 >> 2] = 0;
 HEAP8[i2 + 9 >> 0] = 1;
 return;
}

function __ZN4wasm10WalkerPassINS_21LinearExecutionWalkerINS_14SimplifyLocalsENS_7VisitorIS2_vEEEEEC2Ev(i3) {
 i3 = i3 | 0;
 var i1 = 0, i2 = 0;
 HEAP32[i3 >> 2] = 3200;
 i1 = i3 + 4 | 0;
 i2 = 0;
 while (1) {
  if ((i2 | 0) == 3) break;
  HEAP32[i1 + (i2 << 2) >> 2] = 0;
  i2 = i2 + 1 | 0;
 }
 i2 = i3 + 16 | 0;
 HEAP32[i2 >> 2] = 0;
 HEAP32[i2 + 4 >> 2] = 0;
 HEAP32[i2 + 8 >> 2] = 0;
 HEAP32[i2 + 12 >> 2] = 0;
 HEAP32[i2 + 16 >> 2] = 0;
 HEAP32[i2 + 20 >> 2] = 0;
 HEAP32[i3 >> 2] = 4344;
 return;
}

function __ZNSt3__114__split_bufferINS_13unordered_mapIN6cashew7IStringEiNS_4hashIS3_EENS_8equal_toIS3_EENS_9allocatorINS_4pairIKS3_iEEEEEERNS8_ISD_EEEC2EjjSF_(i4, i2, i3, i1) {
 i4 = i4 | 0;
 i2 = i2 | 0;
 i3 = i3 | 0;
 i1 = i1 | 0;
 HEAP32[i4 + 12 >> 2] = 0;
 HEAP32[i4 + 16 >> 2] = i1;
 if (!i2) i1 = 0; else i1 = __Znwj(i2 * 20 | 0) | 0;
 HEAP32[i4 >> 2] = i1;
 i3 = i1 + (i3 * 20 | 0) | 0;
 HEAP32[i4 + 8 >> 2] = i3;
 HEAP32[i4 + 4 >> 2] = i3;
 HEAP32[i4 + 12 >> 2] = i1 + (i2 * 20 | 0);
 return;
}

function __ZNKSt3__16__treeINS_12__value_typeIN4wasm4NameEjEENS_19__map_value_compareIS3_S4_NS_4lessIS3_EELb1EEENS_9allocatorIS4_EEE14__count_uniqueIS3_EEjRKT_(i1, i3) {
 i1 = i1 | 0;
 i3 = i3 | 0;
 var i2 = 0;
 i1 = i1 + 4 | 0;
 while (1) {
  i1 = HEAP32[i1 >> 2] | 0;
  if (!i1) {
   i1 = 0;
   break;
  }
  i2 = i1 + 16 | 0;
  if (__ZNK6cashew7IStringltERKS0_(i3, i2) | 0) continue;
  if (!(__ZNK6cashew7IStringltERKS0_(i2, i3) | 0)) {
   i1 = 1;
   break;
  }
  i1 = i1 + 4 | 0;
 }
 return i1 | 0;
}

function __ZNK10__cxxabiv122__base_class_type_info16search_above_dstEPNS_19__dynamic_cast_infoEPKvS4_ib(i7, i5, i4, i3, i6, i8) {
 i7 = i7 | 0;
 i5 = i5 | 0;
 i4 = i4 | 0;
 i3 = i3 | 0;
 i6 = i6 | 0;
 i8 = i8 | 0;
 var i1 = 0, i2 = 0;
 i2 = HEAP32[i7 + 4 >> 2] | 0;
 i1 = i2 >> 8;
 if (i2 & 1) i1 = HEAP32[(HEAP32[i3 >> 2] | 0) + i1 >> 2] | 0;
 i7 = HEAP32[i7 >> 2] | 0;
 FUNCTION_TABLE_viiiiii[HEAP32[(HEAP32[i7 >> 2] | 0) + 20 >> 2] & 15](i7, i5, i4, i3 + i1 | 0, i2 & 2 | 0 ? i6 : 2, i8);
 return;
}

function ___stdio_seek(i1, i2, i4) {
 i1 = i1 | 0;
 i2 = i2 | 0;
 i4 = i4 | 0;
 var i3 = 0, i5 = 0, i6 = 0;
 i5 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i6 = i5;
 i3 = i5 + 20 | 0;
 HEAP32[i6 >> 2] = HEAP32[i1 + 60 >> 2];
 HEAP32[i6 + 4 >> 2] = 0;
 HEAP32[i6 + 8 >> 2] = i2;
 HEAP32[i6 + 12 >> 2] = i3;
 HEAP32[i6 + 16 >> 2] = i4;
 if ((___syscall_ret(___syscall140(140, i6 | 0) | 0) | 0) < 0) {
  HEAP32[i3 >> 2] = -1;
  i1 = -1;
 } else i1 = HEAP32[i3 >> 2] | 0;
 STACKTOP = i5;
 return i1 | 0;
}

function __ZNSt3__119__tree_right_rotateIPNS_16__tree_node_baseIPvEEEEvT_(i5) {
 i5 = i5 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i4 = 0;
 i3 = HEAP32[i5 >> 2] | 0;
 i4 = i3 + 4 | 0;
 i1 = HEAP32[i4 >> 2] | 0;
 HEAP32[i5 >> 2] = i1;
 if (i1 | 0) HEAP32[i1 + 8 >> 2] = i5;
 i1 = i5 + 8 | 0;
 HEAP32[i3 + 8 >> 2] = HEAP32[i1 >> 2];
 i2 = HEAP32[i1 >> 2] | 0;
 if ((HEAP32[i2 >> 2] | 0) == (i5 | 0)) HEAP32[i2 >> 2] = i3; else HEAP32[i2 + 4 >> 2] = i3;
 HEAP32[i4 >> 2] = i5;
 HEAP32[i1 >> 2] = i3;
 return;
}

function __ZNSt3__114__split_bufferIN4wasm6WalkerIZNS1_13ReorderLocals13visitFunctionEPNS1_8FunctionEE9ReIndexerNS1_7VisitorIS6_vEEE4TaskERNS_9allocatorISA_EEEC2EjjSD_(i4, i2, i3, i1) {
 i4 = i4 | 0;
 i2 = i2 | 0;
 i3 = i3 | 0;
 i1 = i1 | 0;
 HEAP32[i4 + 12 >> 2] = 0;
 HEAP32[i4 + 16 >> 2] = i1;
 if (!i2) i1 = 0; else i1 = __Znwj(i2 << 3) | 0;
 HEAP32[i4 >> 2] = i1;
 i3 = i1 + (i3 << 3) | 0;
 HEAP32[i4 + 8 >> 2] = i3;
 HEAP32[i4 + 4 >> 2] = i3;
 HEAP32[i4 + 12 >> 2] = i1 + (i2 << 3);
 return;
}

function __ZNSt3__16__treeINS_12__value_typeIjN4wasm14SimplifyLocals12SinkableInfoEEENS_19__map_value_compareIjS5_NS_4lessIjEELb1EEENS_9allocatorIS5_EEE5clearEv(i1) {
 i1 = i1 | 0;
 var i2 = 0;
 i2 = i1 + 4 | 0;
 __ZNSt3__16__treeINS_12__value_typeIjN4wasm14SimplifyLocals12SinkableInfoEEENS_19__map_value_compareIjS5_NS_4lessIjEELb1EEENS_9allocatorIS5_EEE7destroyEPNS_11__tree_nodeIS5_PvEE(i1, HEAP32[i2 >> 2] | 0);
 HEAP32[i1 + 8 >> 2] = 0;
 HEAP32[i1 >> 2] = i2;
 HEAP32[i2 >> 2] = 0;
 return;
}

function __ZN4wasm10WalkerPassINS_10PostWalkerINS_17RemoveUnusedNamesENS_7VisitorIS2_vEEEEEC2Ev(i3) {
 i3 = i3 | 0;
 var i1 = 0, i2 = 0;
 HEAP32[i3 >> 2] = 3200;
 i1 = i3 + 4 | 0;
 i2 = 0;
 while (1) {
  if ((i2 | 0) == 3) break;
  HEAP32[i1 + (i2 << 2) >> 2] = 0;
  i2 = i2 + 1 | 0;
 }
 i2 = i3 + 16 | 0;
 HEAP32[i2 >> 2] = 0;
 HEAP32[i2 + 4 >> 2] = 0;
 HEAP32[i2 + 8 >> 2] = 0;
 HEAP32[i2 + 12 >> 2] = 0;
 HEAP32[i2 + 16 >> 2] = 0;
 HEAP32[i2 + 20 >> 2] = 0;
 HEAP32[i3 >> 2] = 4056;
 return;
}

function __ZN4wasm6Module15getFunctionTypeENS_4NameE(i1, i2) {
 i1 = i1 | 0;
 i2 = i2 | 0;
 var i3 = 0;
 i1 = i1 + 140 | 0;
 i3 = __ZNSt3__13mapIN4wasm4NameEPNS1_12FunctionTypeENS_4lessIS2_EENS_9allocatorINS_4pairIKS2_S4_EEEEEixERS9_(i1, i2) | 0;
 if (!(HEAP32[i3 >> 2] | 0)) ___assert_fail(14717, 14223, 1194, 14740); else {
  i3 = __ZNSt3__13mapIN4wasm4NameEPNS1_12FunctionTypeENS_4lessIS2_EENS_9allocatorINS_4pairIKS2_S4_EEEEEixERS9_(i1, i2) | 0;
  return HEAP32[i3 >> 2] | 0;
 }
 return 0;
}

function __ZN4wasm22SExpressionWasmBuilder15getFunctionNameERNS_7ElementE(i4, i1) {
 i4 = i4 | 0;
 i1 = i1 | 0;
 var i2 = 0, i3 = 0;
 i3 = (HEAP8[i1 + 20 >> 0] | 0) == 0;
 i1 = __ZN4wasm7Element3strEv(i1) | 0;
 if (i3) {
  i3 = _atoi(i1) | 0;
  i2 = i4 + 32 | 0;
  i1 = HEAP32[i2 >> 2] | 0;
  if (i3 >>> 0 >= (HEAP32[i4 + 36 >> 2] | 0) - i1 >> 2 >>> 0) {
   __ZNKSt3__18functionIFvvEEclEv(i4 + 8 | 0);
   i1 = HEAP32[i2 >> 2] | 0;
  }
  i1 = HEAP32[i1 + (i3 << 2) >> 2] | 0;
 }
 return i1 | 0;
}

function __ZNSt3__16__treeIjNS_4lessIjEENS_9allocatorIjEEEC2EOS5_(i5, i4) {
 i5 = i5 | 0;
 i4 = i4 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i6 = 0;
 HEAP32[i5 >> 2] = HEAP32[i4 >> 2];
 i1 = HEAP32[i4 + 4 >> 2] | 0;
 HEAP32[i5 + 4 >> 2] = i1;
 i2 = i4 + 8 | 0;
 i6 = HEAP32[i2 >> 2] | 0;
 HEAP32[i5 + 8 >> 2] = i6;
 i3 = i5 + 4 | 0;
 if (!i6) HEAP32[i5 >> 2] = i3; else {
  HEAP32[i1 + 8 >> 2] = i3;
  i6 = i4 + 4 | 0;
  HEAP32[i4 >> 2] = i6;
  HEAP32[i6 >> 2] = 0;
  HEAP32[i2 >> 2] = 0;
 }
 return;
}

function __ZN4wasm10WalkerPassINS_10PostWalkerINS_15SetLocalRemoverENS_7VisitorIS2_vEEEEEC2Ev(i3) {
 i3 = i3 | 0;
 var i1 = 0, i2 = 0;
 HEAP32[i3 >> 2] = 3200;
 i1 = i3 + 4 | 0;
 i2 = 0;
 while (1) {
  if ((i2 | 0) == 3) break;
  HEAP32[i1 + (i2 << 2) >> 2] = 0;
  i2 = i2 + 1 | 0;
 }
 i2 = i3 + 16 | 0;
 HEAP32[i2 >> 2] = 0;
 HEAP32[i2 + 4 >> 2] = 0;
 HEAP32[i2 + 8 >> 2] = 0;
 HEAP32[i2 + 12 >> 2] = 0;
 HEAP32[i2 + 16 >> 2] = 0;
 HEAP32[i2 + 20 >> 2] = 0;
 HEAP32[i3 >> 2] = 4472;
 return;
}

function __ZN4wasm10WalkerPassINS_10PostWalkerINS_15RemoveUnusedBrsENS_7VisitorIS2_vEEEEEC2Ev(i3) {
 i3 = i3 | 0;
 var i1 = 0, i2 = 0;
 HEAP32[i3 >> 2] = 3200;
 i1 = i3 + 4 | 0;
 i2 = 0;
 while (1) {
  if ((i2 | 0) == 3) break;
  HEAP32[i1 + (i2 << 2) >> 2] = 0;
  i2 = i2 + 1 | 0;
 }
 i2 = i3 + 16 | 0;
 HEAP32[i2 >> 2] = 0;
 HEAP32[i2 + 4 >> 2] = 0;
 HEAP32[i2 + 8 >> 2] = 0;
 HEAP32[i2 + 12 >> 2] = 0;
 HEAP32[i2 + 16 >> 2] = 0;
 HEAP32[i2 + 20 >> 2] = 0;
 HEAP32[i3 >> 2] = 3912;
 return;
}

function __ZN4wasm10WalkerPassINS_10PostWalkerINS_15GetLocalCounterENS_7VisitorIS2_vEEEEEC2Ev(i3) {
 i3 = i3 | 0;
 var i1 = 0, i2 = 0;
 HEAP32[i3 >> 2] = 3200;
 i1 = i3 + 4 | 0;
 i2 = 0;
 while (1) {
  if ((i2 | 0) == 3) break;
  HEAP32[i1 + (i2 << 2) >> 2] = 0;
  i2 = i2 + 1 | 0;
 }
 i2 = i3 + 16 | 0;
 HEAP32[i2 >> 2] = 0;
 HEAP32[i2 + 4 >> 2] = 0;
 HEAP32[i2 + 8 >> 2] = 0;
 HEAP32[i2 + 12 >> 2] = 0;
 HEAP32[i2 + 16 >> 2] = 0;
 HEAP32[i2 + 20 >> 2] = 0;
 HEAP32[i3 >> 2] = 4416;
 return;
}

function __ZNSt3__13mapIN4wasm4NameENS_6vectorINS1_14SimplifyLocals10BlockBreakENS_9allocatorIS5_EEEENS_4lessIS2_EENS6_INS_4pairIKS2_S8_EEEEE25__construct_node_with_keyERSC_(i2, i3, i1) {
 i2 = i2 | 0;
 i3 = i3 | 0;
 i1 = i1 | 0;
 var i4 = 0;
 i4 = __Znwj(32) | 0;
 HEAP32[i4 + 16 >> 2] = HEAP32[i1 >> 2];
 HEAP32[i4 + 20 >> 2] = 0;
 HEAP32[i4 + 24 >> 2] = 0;
 HEAP32[i4 + 28 >> 2] = 0;
 HEAP32[i2 >> 2] = i4;
 i2 = i2 + 4 | 0;
 HEAP32[i2 >> 2] = i3 + 4;
 HEAP32[i2 + 4 >> 2] = 257;
 return;
}

function __ZN4wasm15MinifiedPrinter3runEPNS_10PassRunnerEPNS_6ModuleE(i3, i2, i1) {
 i3 = i3 | 0;
 i2 = i2 | 0;
 i1 = i1 | 0;
 var i4 = 0;
 i2 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i4 = i2;
 HEAP32[i4 >> 2] = HEAP32[i3 + 16 >> 2];
 HEAP32[i4 + 4 >> 2] = 0;
 HEAP8[i4 + 20 >> 0] = 0;
 HEAP32[i4 + 24 >> 2] = 0;
 HEAP8[i4 + 8 >> 0] = 1;
 HEAP32[i4 + 12 >> 2] = 44318;
 HEAP32[i4 + 16 >> 2] = 44318;
 __ZN4wasm16PrintSExpression11visitModuleEPNS_6ModuleE(i4, i1);
 STACKTOP = i2;
 return;
}

function __ZN4wasm10WalkerPassINS_10PostWalkerINS_14PostEmscriptenENS_7VisitorIS2_vEEEEEC2Ev(i3) {
 i3 = i3 | 0;
 var i1 = 0, i2 = 0;
 HEAP32[i3 >> 2] = 3200;
 i1 = i3 + 4 | 0;
 i2 = 0;
 while (1) {
  if ((i2 | 0) == 3) break;
  HEAP32[i1 + (i2 << 2) >> 2] = 0;
  i2 = i2 + 1 | 0;
 }
 i2 = i3 + 16 | 0;
 HEAP32[i2 >> 2] = 0;
 HEAP32[i2 + 4 >> 2] = 0;
 HEAP32[i2 + 8 >> 2] = 0;
 HEAP32[i2 + 12 >> 2] = 0;
 HEAP32[i2 + 16 >> 2] = 0;
 HEAP32[i2 + 20 >> 2] = 0;
 HEAP32[i3 >> 2] = 4200;
 return;
}

function __ZNSt3__114__split_bufferINS_3mapIjN4wasm14SimplifyLocals12SinkableInfoENS_4lessIjEENS_9allocatorINS_4pairIKjS4_EEEEEERNS7_ISC_EEEC2EjjSE_(i4, i2, i3, i1) {
 i4 = i4 | 0;
 i2 = i2 | 0;
 i3 = i3 | 0;
 i1 = i1 | 0;
 HEAP32[i4 + 12 >> 2] = 0;
 HEAP32[i4 + 16 >> 2] = i1;
 if (!i2) i1 = 0; else i1 = __Znwj(i2 * 12 | 0) | 0;
 HEAP32[i4 >> 2] = i1;
 i3 = i1 + (i3 * 12 | 0) | 0;
 HEAP32[i4 + 8 >> 2] = i3;
 HEAP32[i4 + 4 >> 2] = i3;
 HEAP32[i4 + 12 >> 2] = i1 + (i2 * 12 | 0);
 return;
}

function __ZN4wasm10WalkerPassINS_10PostWalkerINS_13ReorderLocalsENS_7VisitorIS2_vEEEEEC2Ev(i3) {
 i3 = i3 | 0;
 var i1 = 0, i2 = 0;
 HEAP32[i3 >> 2] = 3200;
 i1 = i3 + 4 | 0;
 i2 = 0;
 while (1) {
  if ((i2 | 0) == 3) break;
  HEAP32[i1 + (i2 << 2) >> 2] = 0;
  i2 = i2 + 1 | 0;
 }
 i2 = i3 + 16 | 0;
 HEAP32[i2 >> 2] = 0;
 HEAP32[i2 + 4 >> 2] = 0;
 HEAP32[i2 + 8 >> 2] = 0;
 HEAP32[i2 + 12 >> 2] = 0;
 HEAP32[i2 + 16 >> 2] = 0;
 HEAP32[i2 + 20 >> 2] = 0;
 HEAP32[i3 >> 2] = 4600;
 return;
}

function __ZNSt3__118__tree_left_rotateIPNS_16__tree_node_baseIPvEEEEvT_(i4) {
 i4 = i4 | 0;
 var i1 = 0, i2 = 0, i3 = 0;
 i2 = i4 + 4 | 0;
 i3 = HEAP32[i2 >> 2] | 0;
 i1 = HEAP32[i3 >> 2] | 0;
 HEAP32[i2 >> 2] = i1;
 if (i1 | 0) HEAP32[i1 + 8 >> 2] = i4;
 i1 = i4 + 8 | 0;
 HEAP32[i3 + 8 >> 2] = HEAP32[i1 >> 2];
 i2 = HEAP32[i1 >> 2] | 0;
 if ((HEAP32[i2 >> 2] | 0) == (i4 | 0)) HEAP32[i2 >> 2] = i3; else HEAP32[i2 + 4 >> 2] = i3;
 HEAP32[i3 >> 2] = i4;
 HEAP32[i1 >> 2] = i3;
 return;
}

function __ZNSt3__113__vector_baseIPNS_6locale5facetENS_15__sso_allocatorIS3_Lj28EEEED2Ev(i4) {
 i4 = i4 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i5 = 0;
 i1 = HEAP32[i4 >> 2] | 0;
 do if (i1 | 0) {
  i2 = i4 + 4 | 0;
  i3 = HEAP32[i2 >> 2] | 0;
  while (1) {
   if ((i3 | 0) == (i1 | 0)) break;
   i5 = i3 + -4 | 0;
   HEAP32[i2 >> 2] = i5;
   i3 = i5;
  }
  if ((i4 + 16 | 0) == (i1 | 0)) {
   HEAP8[i4 + 128 >> 0] = 0;
   break;
  } else {
   __ZdlPv(i1);
   break;
  }
 } while (0);
 return;
}

function __ZN4wasm10WalkerPassINS_10PostWalkerINS_11MergeBlocksENS_7VisitorIS2_vEEEEEC2Ev(i3) {
 i3 = i3 | 0;
 var i1 = 0, i2 = 0;
 HEAP32[i3 >> 2] = 3200;
 i1 = i3 + 4 | 0;
 i2 = 0;
 while (1) {
  if ((i2 | 0) == 3) break;
  HEAP32[i1 + (i2 << 2) >> 2] = 0;
  i2 = i2 + 1 | 0;
 }
 i2 = i3 + 16 | 0;
 HEAP32[i2 >> 2] = 0;
 HEAP32[i2 + 4 >> 2] = 0;
 HEAP32[i2 + 8 >> 2] = 0;
 HEAP32[i2 + 12 >> 2] = 0;
 HEAP32[i2 + 16 >> 2] = 0;
 HEAP32[i2 + 20 >> 2] = 0;
 HEAP32[i3 >> 2] = 3552;
 return;
}

function __ZNSt3__111__stdoutbufIwE6xsputnEPKwi(i4, i1, i3) {
 i4 = i4 | 0;
 i1 = i1 | 0;
 i3 = i3 | 0;
 var i2 = 0;
 L1 : do if (!(HEAP8[i4 + 44 >> 0] | 0)) {
  i2 = i1;
  i1 = 0;
  while (1) {
   if ((i1 | 0) >= (i3 | 0)) break L1;
   if ((FUNCTION_TABLE_iii[HEAP32[(HEAP32[i4 >> 2] | 0) + 52 >> 2] & 63](i4, HEAP32[i2 >> 2] | 0) | 0) == -1) break L1;
   i2 = i2 + 4 | 0;
   i1 = i1 + 1 | 0;
  }
 } else i1 = _fwrite(i1, 4, i3, HEAP32[i4 + 32 >> 2] | 0) | 0; while (0);
 return i1 | 0;
}

function __ZNSt3__111__stdoutbufIcE6xsputnEPKci(i4, i1, i3) {
 i4 = i4 | 0;
 i1 = i1 | 0;
 i3 = i3 | 0;
 var i2 = 0;
 L1 : do if (!(HEAP8[i4 + 44 >> 0] | 0)) {
  i2 = i1;
  i1 = 0;
  while (1) {
   if ((i1 | 0) >= (i3 | 0)) break L1;
   if ((FUNCTION_TABLE_iii[HEAP32[(HEAP32[i4 >> 2] | 0) + 52 >> 2] & 63](i4, HEAPU8[i2 >> 0] | 0) | 0) == -1) break L1;
   i2 = i2 + 1 | 0;
   i1 = i1 + 1 | 0;
  }
 } else i1 = _fwrite(i1, 1, i3, HEAP32[i4 + 32 >> 2] | 0) | 0; while (0);
 return i1 | 0;
}

function __ZNSt3__110__stdinbufIwE5imbueERKNS_6localeE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 var i3 = 0, i4 = 0;
 i4 = __ZNKSt3__16locale9use_facetERNS0_2idE(i1, 40176) | 0;
 i3 = i2 + 36 | 0;
 HEAP32[i3 >> 2] = i4;
 i4 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i4 >> 2] | 0) + 24 >> 2] & 127](i4) | 0;
 i1 = i2 + 44 | 0;
 HEAP32[i1 >> 2] = i4;
 i3 = HEAP32[i3 >> 2] | 0;
 i3 = (FUNCTION_TABLE_ii[HEAP32[(HEAP32[i3 >> 2] | 0) + 28 >> 2] & 127](i3) | 0) & 1;
 HEAP8[i2 + 53 >> 0] = i3;
 return;
}

function __ZNSt3__110__stdinbufIcE5imbueERKNS_6localeE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 var i3 = 0, i4 = 0;
 i4 = __ZNKSt3__16locale9use_facetERNS0_2idE(i1, 40168) | 0;
 i3 = i2 + 36 | 0;
 HEAP32[i3 >> 2] = i4;
 i4 = FUNCTION_TABLE_ii[HEAP32[(HEAP32[i4 >> 2] | 0) + 24 >> 2] & 127](i4) | 0;
 i1 = i2 + 44 | 0;
 HEAP32[i1 >> 2] = i4;
 i3 = HEAP32[i3 >> 2] | 0;
 i3 = (FUNCTION_TABLE_ii[HEAP32[(HEAP32[i3 >> 2] | 0) + 28 >> 2] & 127](i3) | 0) & 1;
 HEAP8[i2 + 53 >> 0] = i3;
 return;
}

function __ZN4wasm11FullPrinter3runEPNS_10PassRunnerEPNS_6ModuleE(i3, i2, i1) {
 i3 = i3 | 0;
 i2 = i2 | 0;
 i1 = i1 | 0;
 var i4 = 0;
 i2 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i4 = i2;
 HEAP32[i4 >> 2] = HEAP32[i3 + 16 >> 2];
 HEAP32[i4 + 4 >> 2] = 0;
 HEAP32[i4 + 24 >> 2] = 0;
 HEAP8[i4 + 8 >> 0] = 0;
 HEAP32[i4 + 12 >> 2] = 34710;
 HEAP32[i4 + 16 >> 2] = 18047;
 HEAP8[i4 + 20 >> 0] = 1;
 __ZN4wasm16PrintSExpression11visitModuleEPNS_6ModuleE(i4, i1);
 STACKTOP = i2;
 return;
}

function __ZNKSt3__15ctypeIwE5do_isEPKwS3_Pt(i1, i6, i5, i2) {
 i1 = i1 | 0;
 i6 = i6 | 0;
 i5 = i5 | 0;
 i2 = i2 | 0;
 var i3 = 0, i4 = 0, i7 = 0;
 i4 = (i5 - i6 | 0) >>> 2;
 i3 = i6;
 while (1) {
  if ((i3 | 0) == (i5 | 0)) break;
  i1 = HEAP32[i3 >> 2] | 0;
  if (i1 >>> 0 < 128) {
   i7 = ___ctype_b_loc() | 0;
   i1 = HEAPU16[(HEAP32[i7 >> 2] | 0) + (i1 << 1) >> 1] | 0;
  } else i1 = 0;
  HEAP16[i2 >> 1] = i1;
  i2 = i2 + 2 | 0;
  i3 = i3 + 4 | 0;
 }
 return i6 + (i4 << 2) | 0;
}

function __ZNK4wasm7Literal8popCountEv(i3, i2) {
 i3 = i3 | 0;
 i2 = i2 | 0;
 var i1 = 0;
 i1 = i2 + 8 | 0;
 if ((HEAP32[i2 >> 2] | 0) == 1) {
  i1 = __ZN4wasm8PopCountIjEEiT_(HEAP32[i1 >> 2] | 0) | 0;
  HEAP32[i3 + 8 >> 2] = i1;
  i1 = 1;
 } else {
  i2 = i1;
  i2 = __ZN4wasm8PopCountIyEEiT_(HEAP32[i2 >> 2] | 0, HEAP32[i2 + 4 >> 2] | 0) | 0;
  i1 = i3 + 8 | 0;
  HEAP32[i1 >> 2] = i2;
  HEAP32[i1 + 4 >> 2] = ((i2 | 0) < 0) << 31 >> 31;
  i1 = 2;
 }
 HEAP32[i3 >> 2] = i1;
 return;
}

function _wmemmove(i4, i3, i1) {
 i4 = i4 | 0;
 i3 = i3 | 0;
 i1 = i1 | 0;
 var i2 = 0;
 i2 = (i1 | 0) == 0;
 if (i4 - i3 >> 2 >>> 0 < i1 >>> 0) {
  if (!i2) do {
   i1 = i1 + -1 | 0;
   HEAP32[i4 + (i1 << 2) >> 2] = HEAP32[i3 + (i1 << 2) >> 2];
  } while ((i1 | 0) != 0);
 } else if (!i2) {
  i2 = i3;
  i3 = i4;
  while (1) {
   i1 = i1 + -1 | 0;
   HEAP32[i3 >> 2] = HEAP32[i2 >> 2];
   if (!i1) break; else {
    i2 = i2 + 4 | 0;
    i3 = i3 + 4 | 0;
   }
  }
 }
 return i4 | 0;
}

function __ZN4wasm7Printer3runEPNS_10PassRunnerEPNS_6ModuleE(i3, i2, i1) {
 i3 = i3 | 0;
 i2 = i2 | 0;
 i1 = i1 | 0;
 var i4 = 0;
 i2 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i4 = i2;
 HEAP32[i4 >> 2] = HEAP32[i3 + 16 >> 2];
 HEAP32[i4 + 4 >> 2] = 0;
 HEAP8[i4 + 20 >> 0] = 0;
 HEAP32[i4 + 24 >> 2] = 0;
 HEAP8[i4 + 8 >> 0] = 0;
 HEAP32[i4 + 12 >> 2] = 34710;
 HEAP32[i4 + 16 >> 2] = 18047;
 __ZN4wasm16PrintSExpression11visitModuleEPNS_6ModuleE(i4, i1);
 STACKTOP = i2;
 return;
}

function __ZN4wasm10WalkerPassINS_10PostWalkerINS_6VacuumENS_7VisitorIS2_vEEEEEC2Ev(i3) {
 i3 = i3 | 0;
 var i1 = 0, i2 = 0;
 HEAP32[i3 >> 2] = 3200;
 i1 = i3 + 4 | 0;
 i2 = 0;
 while (1) {
  if ((i2 | 0) == 3) break;
  HEAP32[i1 + (i2 << 2) >> 2] = 0;
  i2 = i2 + 1 | 0;
 }
 i2 = i3 + 16 | 0;
 HEAP32[i2 >> 2] = 0;
 HEAP32[i2 + 4 >> 2] = 0;
 HEAP32[i2 + 8 >> 2] = 0;
 HEAP32[i2 + 12 >> 2] = 0;
 HEAP32[i2 + 16 >> 2] = 0;
 HEAP32[i2 + 20 >> 2] = 0;
 HEAP32[i3 >> 2] = 4744;
 return;
}

function __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 if (!(HEAP8[i1 >> 0] & 1)) {
  HEAP32[i2 >> 2] = HEAP32[i1 >> 2];
  HEAP32[i2 + 4 >> 2] = HEAP32[i1 + 4 >> 2];
  HEAP32[i2 + 8 >> 2] = HEAP32[i1 + 8 >> 2];
 } else __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj(i2, HEAP32[i1 + 8 >> 2] | 0, HEAP32[i1 + 4 >> 2] | 0);
 return;
}

function __ZNSt3__16vectorIPNS_6locale5facetENS_15__sso_allocatorIS3_Lj28EEEE8allocateEj(i3, i2) {
 i3 = i3 | 0;
 i2 = i2 | 0;
 var i1 = 0;
 if (i2 >>> 0 > 1073741823) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i3);
 i1 = i3 + 128 | 0;
 if (i2 >>> 0 < 29 & (HEAP8[i1 >> 0] | 0) == 0) {
  HEAP8[i1 >> 0] = 1;
  i1 = i3 + 16 | 0;
 } else i1 = __Znwj(i2 << 2) | 0;
 HEAP32[i3 + 4 >> 2] = i1;
 HEAP32[i3 >> 2] = i1;
 HEAP32[i3 + 8 >> 2] = i1 + (i2 << 2);
 return;
}

function __ZNSt3__16__treeINS_12__value_typeIN4wasm4NameENS2_8WasmTypeEEENS_19__map_value_compareIS3_S5_NS_4lessIS3_EELb1EEENS_9allocatorIS5_EEE5clearEv(i1) {
 i1 = i1 | 0;
 var i2 = 0;
 i2 = i1 + 4 | 0;
 __ZNSt3__16__treeINS_12__value_typeIN4wasm4NameENS2_8WasmTypeEEENS_19__map_value_compareIS3_S5_NS_4lessIS3_EELb1EEENS_9allocatorIS5_EEE7destroyEPNS_11__tree_nodeIS5_PvEE(i1, HEAP32[i2 >> 2] | 0);
 HEAP32[i1 + 8 >> 2] = 0;
 HEAP32[i1 >> 2] = i2;
 HEAP32[i2 >> 2] = 0;
 return;
}

function __ZN4wasm6Module11getFunctionENS_4NameE(i1, i2) {
 i1 = i1 | 0;
 i2 = i2 | 0;
 var i3 = 0;
 i1 = i1 + 176 | 0;
 i3 = __ZNSt3__13mapIN4wasm4NameEPNS1_8FunctionENS_4lessIS2_EENS_9allocatorINS_4pairIKS2_S4_EEEEEixERS9_(i1, i2) | 0;
 if (!(HEAP32[i3 >> 2] | 0)) ___assert_fail(15914, 14223, 1197, 15933); else {
  i3 = __ZNSt3__13mapIN4wasm4NameEPNS1_8FunctionENS_4lessIS2_EENS_9allocatorINS_4pairIKS2_S4_EEEEEixERS9_(i1, i2) | 0;
  return HEAP32[i3 >> 2] | 0;
 }
 return 0;
}

function __ZN4wasm8Function13getLocalIndexENS_4NameE(i1, i2) {
 i1 = i1 | 0;
 i2 = i2 | 0;
 i1 = i1 + 52 | 0;
 if (!(__ZNKSt3__16__treeINS_12__value_typeIN4wasm4NameEjEENS_19__map_value_compareIS3_S4_NS_4lessIS3_EELb1EEENS_9allocatorIS4_EEE14__count_uniqueIS3_EEjRKT_(i1, i2) | 0)) ___assert_fail(15132, 14223, 1110, 15161); else {
  i2 = __ZNSt3__13mapIN4wasm4NameEjNS_4lessIS2_EENS_9allocatorINS_4pairIKS2_jEEEEEixERS7_(i1, i2) | 0;
  return HEAP32[i2 >> 2] | 0;
 }
 return 0;
}

function __ZN4wasm10Expression2isINS_5BlockEEEbv(i1) {
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i4 = 0;
 i2 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i3 = i2;
 i1 = HEAP32[i1 >> 2] | 0;
 HEAP32[i3 >> 2] = 1;
 i4 = i3 + 4 | 0;
 HEAP32[i4 >> 2] = 0;
 HEAP32[i4 + 4 >> 2] = 0;
 HEAP32[i4 + 8 >> 2] = 0;
 HEAP32[i4 + 12 >> 2] = 0;
 HEAP32[i4 + 16 >> 2] = 0;
 __ZNSt3__113__vector_baseIPN4wasm10ExpressionENS_9allocatorIS3_EEED2Ev(i3 + 12 | 0);
 STACKTOP = i2;
 return (i1 | 0) == 1 | 0;
}

function __ZNSt3__18functionIFN4wasm15ThreadWorkStateEvEEC2EOS4_(i4, i3) {
 i4 = i4 | 0;
 i3 = i3 | 0;
 var i1 = 0, i2 = 0;
 i1 = i3 + 16 | 0;
 i2 = HEAP32[i1 >> 2] | 0;
 do if (i2) if ((i2 | 0) == (i3 | 0)) {
  HEAP32[i4 + 16 >> 2] = i4;
  i3 = HEAP32[i1 >> 2] | 0;
  FUNCTION_TABLE_vii[HEAP32[(HEAP32[i3 >> 2] | 0) + 12 >> 2] & 511](i3, i4);
  break;
 } else {
  HEAP32[i4 + 16 >> 2] = i2;
  HEAP32[i1 >> 2] = 0;
  break;
 } else HEAP32[i4 + 16 >> 2] = 0; while (0);
 return;
}

function __ZN4wasm12toUInteger64Ed(d2) {
 d2 = +d2;
 var i1 = 0, i3 = 0;
 HEAPF64[tempDoublePtr >> 3] = d2;
 if ((HEAP32[tempDoublePtr + 4 >> 2] | 0) >= 0) if (d2 < 18446744073709551616.0) {
  i3 = +Math_abs(d2) >= 1.0 ? (d2 > 0.0 ? ~~+Math_min(+Math_floor(d2 / 4294967296.0), 4294967295.0) >>> 0 : ~~+Math_ceil((d2 - +(~~d2 >>> 0)) / 4294967296.0) >>> 0) : 0;
  i1 = ~~d2 >>> 0;
 } else {
  i3 = -1;
  i1 = -1;
 } else {
  i3 = 0;
  i1 = 0;
 }
 tempRet0 = i3;
 return i1 | 0;
}

function __Z12printOpeningRNSt3__113basic_ostreamIcNS_11char_traitsIcEEEEPKcb(i2, i3, i1) {
 i2 = i2 | 0;
 i3 = i3 | 0;
 i1 = i1 | 0;
 __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_c(i2, 40) | 0;
 if (i1) __Z17prepareMajorColorRNSt3__113basic_ostreamIcNS_11char_traitsIcEEEE(i2) | 0; else __Z12prepareColorRNSt3__113basic_ostreamIcNS_11char_traitsIcEEEE(i2) | 0;
 __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(i2, i3) | 0;
 return i2 | 0;
}

function __ZNSt3__114__split_bufferIN6cashew13OperatorClassERNS_9allocatorIS2_EEED2Ev(i4) {
 i4 = i4 | 0;
 var i1 = 0, i2 = 0, i3 = 0;
 i1 = HEAP32[i4 + 4 >> 2] | 0;
 i2 = i4 + 8 | 0;
 while (1) {
  i3 = HEAP32[i2 >> 2] | 0;
  if ((i3 | 0) == (i1 | 0)) break;
  i3 = i3 + -28 | 0;
  HEAP32[i2 >> 2] = i3;
  __ZNSt3__112__hash_tableIN6cashew7IStringENS_4hashIS2_EENS_8equal_toIS2_EENS_9allocatorIS2_EEED2Ev(i3);
 }
 i1 = HEAP32[i4 >> 2] | 0;
 if (i1 | 0) __ZdlPv(i1);
 return;
}

function __ZN4wasm14EffectAnalyzerC2Ev(i1) {
 i1 = i1 | 0;
 HEAP32[i1 + 32 >> 2] = 0;
 HEAP32[i1 + 36 >> 2] = 0;
 HEAP32[i1 >> 2] = 0;
 HEAP32[i1 + 4 >> 2] = 0;
 HEAP32[i1 + 8 >> 2] = 0;
 HEAP32[i1 + 12 >> 2] = 0;
 HEAP32[i1 + 16 >> 2] = 0;
 HEAP32[i1 + 20 >> 2] = 0;
 HEAP16[i1 + 24 >> 1] = 0;
 HEAP32[i1 + 28 >> 2] = i1 + 32;
 HEAP32[i1 + 44 >> 2] = 0;
 HEAP32[i1 + 48 >> 2] = 0;
 HEAP32[i1 + 40 >> 2] = i1 + 44;
 HEAP8[i1 + 52 >> 0] = 0;
 HEAP8[i1 + 53 >> 0] = 0;
 return;
}

function __ZNSt3__113__vector_baseIN6cashew13OperatorClassENS_9allocatorIS2_EEED2Ev(i4) {
 i4 = i4 | 0;
 var i1 = 0, i2 = 0, i3 = 0;
 i1 = HEAP32[i4 >> 2] | 0;
 if (i1 | 0) {
  i2 = i4 + 4 | 0;
  while (1) {
   i3 = HEAP32[i2 >> 2] | 0;
   if ((i3 | 0) == (i1 | 0)) break;
   i3 = i3 + -28 | 0;
   HEAP32[i2 >> 2] = i3;
   __ZNSt3__112__hash_tableIN6cashew7IStringENS_4hashIS2_EENS_8equal_toIS2_EENS_9allocatorIS2_EEED2Ev(i3);
  }
  __ZdlPv(HEAP32[i4 >> 2] | 0);
 }
 return;
}

function __ZNK10__cxxabiv122__base_class_type_info16search_below_dstEPNS_19__dynamic_cast_infoEPKvib(i6, i4, i3, i5, i7) {
 i6 = i6 | 0;
 i4 = i4 | 0;
 i3 = i3 | 0;
 i5 = i5 | 0;
 i7 = i7 | 0;
 var i1 = 0, i2 = 0;
 i2 = HEAP32[i6 + 4 >> 2] | 0;
 i1 = i2 >> 8;
 if (i2 & 1) i1 = HEAP32[(HEAP32[i3 >> 2] | 0) + i1 >> 2] | 0;
 i6 = HEAP32[i6 >> 2] | 0;
 FUNCTION_TABLE_viiiii[HEAP32[(HEAP32[i6 >> 2] | 0) + 24 >> 2] & 3](i6, i4, i3 + i1 | 0, i2 & 2 | 0 ? i5 : 2, i7);
 return;
}

function __ZN4wasm6Module9getImportENS_4NameE(i1, i2) {
 i1 = i1 | 0;
 i2 = i2 | 0;
 var i3 = 0;
 i1 = i1 + 152 | 0;
 i3 = __ZNSt3__13mapIN4wasm4NameEPNS1_6ImportENS_4lessIS2_EENS_9allocatorINS_4pairIKS2_S4_EEEEEixERS9_(i1, i2) | 0;
 if (!(HEAP32[i3 >> 2] | 0)) ___assert_fail(15074, 14223, 1195, 15091); else {
  i3 = __ZNSt3__13mapIN4wasm4NameEPNS1_6ImportENS_4lessIS2_EENS_9allocatorINS_4pairIKS2_S4_EEEEEixERS9_(i1, i2) | 0;
  return HEAP32[i3 >> 2] | 0;
 }
 return 0;
}

function __ZNK10__cxxabiv120__si_class_type_info27has_unambiguous_public_baseEPNS_19__dynamic_cast_infoEPvi(i4, i2, i1, i3) {
 i4 = i4 | 0;
 i2 = i2 | 0;
 i1 = i1 | 0;
 i3 = i3 | 0;
 if ((i4 | 0) == (HEAP32[i2 + 8 >> 2] | 0)) __ZNK10__cxxabiv117__class_type_info24process_found_base_classEPNS_19__dynamic_cast_infoEPvi(0, i2, i1, i3); else {
  i4 = HEAP32[i4 + 8 >> 2] | 0;
  FUNCTION_TABLE_viiii[HEAP32[(HEAP32[i4 >> 2] | 0) + 28 >> 2] & 15](i4, i2, i1, i3);
 }
 return;
}

function __ZNSt3__13mapIN6cashew7IStringEN4wasm7LiteralENS_4lessIS2_EENS_9allocatorINS_4pairIKS2_S4_EEEEE25__construct_node_with_keyERS9_(i2, i3, i1) {
 i2 = i2 | 0;
 i3 = i3 | 0;
 i1 = i1 | 0;
 var i4 = 0;
 i4 = __Znwj(40) | 0;
 HEAP32[i4 + 16 >> 2] = HEAP32[i1 >> 2];
 HEAP32[i4 + 24 >> 2] = 0;
 i1 = i4 + 32 | 0;
 HEAP32[i1 >> 2] = 0;
 HEAP32[i1 + 4 >> 2] = 0;
 HEAP32[i2 >> 2] = i4;
 i2 = i2 + 4 | 0;
 HEAP32[i2 >> 2] = i3 + 4;
 HEAP32[i2 + 4 >> 2] = 257;
 return;
}

function ___towrite(i2) {
 i2 = i2 | 0;
 var i1 = 0, i3 = 0;
 i1 = i2 + 74 | 0;
 i3 = HEAP8[i1 >> 0] | 0;
 HEAP8[i1 >> 0] = i3 + 255 | i3;
 i1 = HEAP32[i2 >> 2] | 0;
 if (!(i1 & 8)) {
  HEAP32[i2 + 8 >> 2] = 0;
  HEAP32[i2 + 4 >> 2] = 0;
  i1 = HEAP32[i2 + 44 >> 2] | 0;
  HEAP32[i2 + 28 >> 2] = i1;
  HEAP32[i2 + 20 >> 2] = i1;
  HEAP32[i2 + 16 >> 2] = i1 + (HEAP32[i2 + 48 >> 2] | 0);
  i1 = 0;
 } else {
  HEAP32[i2 >> 2] = i1 | 32;
  i1 = -1;
 }
 return i1 | 0;
}

function __ZN4wasm22SExpressionWasmBuilder10makeReturnERNS_7ElementE(i3, i2) {
 i3 = i3 | 0;
 i2 = i2 | 0;
 var i1 = 0;
 i1 = __ZN10MixedArena5allocIN4wasm6ReturnEEEPT_v(HEAP32[i3 + 4 >> 2] | 0) | 0;
 if ((__ZN4wasm7Element4sizeEv(i2) | 0) >>> 0 > 1) {
  i2 = __ZN4wasm7Element4listEv(i2) | 0;
  i3 = __ZN4wasm22SExpressionWasmBuilder15parseExpressionERNS_7ElementE(i3, HEAP32[(HEAP32[i2 >> 2] | 0) + 4 >> 2] | 0) | 0;
  HEAP32[i1 + 8 >> 2] = i3;
 }
 return i1 | 0;
}

function __ZNSt3__114__split_bufferINS_10unique_ptrIN4wasm17RemoveUnusedNamesENS_14default_deleteIS3_EEEERNS_9allocatorIS6_EEEC2EjjS9_(i4, i2, i3, i1) {
 i4 = i4 | 0;
 i2 = i2 | 0;
 i3 = i3 | 0;
 i1 = i1 | 0;
 HEAP32[i4 + 12 >> 2] = 0;
 HEAP32[i4 + 16 >> 2] = i1;
 if (!i2) i1 = 0; else i1 = __Znwj(i2 << 2) | 0;
 HEAP32[i4 >> 2] = i1;
 i3 = i1 + (i3 << 2) | 0;
 HEAP32[i4 + 8 >> 2] = i3;
 HEAP32[i4 + 4 >> 2] = i3;
 HEAP32[i4 + 12 >> 2] = i1 + (i2 << 2);
 return;
}

function __ZNSt3__114__split_bufferIN4wasm6WalkerIZNS1_13ReorderLocals13visitFunctionEPNS1_8FunctionEE9ReIndexerNS1_7VisitorIS6_vEEE4TaskERNS_9allocatorISA_EEED2Ev(i4) {
 i4 = i4 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i5 = 0;
 i1 = HEAP32[i4 + 4 >> 2] | 0;
 i2 = i4 + 8 | 0;
 i3 = HEAP32[i2 >> 2] | 0;
 while (1) {
  if ((i3 | 0) == (i1 | 0)) break;
  i5 = i3 + -8 | 0;
  HEAP32[i2 >> 2] = i5;
  i3 = i5;
 }
 i1 = HEAP32[i4 >> 2] | 0;
 if (i1 | 0) __ZdlPv(i1);
 return;
}

function __ZN4wasm12RegisterPassINS_17RemoveUnusedNamesEEC2EPKcS4_(i3, i2, i1) {
 i3 = i3 | 0;
 i2 = i2 | 0;
 i1 = i1 | 0;
 var i4 = 0, i5 = 0;
 i3 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i4 = i3;
 i5 = __ZN4wasm12PassRegistry3getEv() | 0;
 HEAP32[i4 + 16 >> 2] = i4;
 HEAP32[i4 >> 2] = 4012;
 __ZN4wasm12PassRegistry12registerPassEPKcS2_NSt3__18functionIFPNS_4PassEvEEE(i5, i2, i1, i4);
 __ZNSt3__18functionIFPN4wasm4PassEvEED2Ev(i4);
 STACKTOP = i3;
 return;
}

function __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj11EEERAT__Kc(i3, i1) {
 i3 = i3 | 0;
 i1 = i1 | 0;
 var i2 = 0, i4 = 0;
 HEAP8[i3 >> 0] = 20;
 i4 = i3 + 1 | 0;
 i2 = i4 + 10 | 0;
 do {
  HEAP8[i4 >> 0] = HEAP8[i1 >> 0] | 0;
  i4 = i4 + 1 | 0;
  i1 = i1 + 1 | 0;
 } while ((i4 | 0) < (i2 | 0));
 HEAP8[i3 + 11 >> 0] = 0;
 i1 = i3 + 12 | 0;
 i2 = 0;
 while (1) {
  if ((i2 | 0) == 3) break;
  HEAP32[i1 + (i2 << 2) >> 2] = 0;
  i2 = i2 + 1 | 0;
 }
 return;
}

function __ZNSt3__16__treeINS_12__value_typeIN4wasm4NameENS_6vectorINS2_14SimplifyLocals10BlockBreakENS_9allocatorIS6_EEEEEENS_19__map_value_compareIS3_SA_NS_4lessIS3_EELb1EEENS7_ISA_EEED2Ev(i1) {
 i1 = i1 | 0;
 __ZNSt3__16__treeINS_12__value_typeIN4wasm4NameENS_6vectorINS2_14SimplifyLocals10BlockBreakENS_9allocatorIS6_EEEEEENS_19__map_value_compareIS3_SA_NS_4lessIS3_EELb1EEENS7_ISA_EEE7destroyEPNS_11__tree_nodeISA_PvEE(i1, HEAP32[i1 + 4 >> 2] | 0);
 return;
}

function __ZNSt3__114__split_bufferINS_10unique_ptrIN4wasm15RemoveUnusedBrsENS_14default_deleteIS3_EEEERNS_9allocatorIS6_EEEC2EjjS9_(i4, i2, i3, i1) {
 i4 = i4 | 0;
 i2 = i2 | 0;
 i3 = i3 | 0;
 i1 = i1 | 0;
 HEAP32[i4 + 12 >> 2] = 0;
 HEAP32[i4 + 16 >> 2] = i1;
 if (!i2) i1 = 0; else i1 = __Znwj(i2 << 2) | 0;
 HEAP32[i4 >> 2] = i1;
 i3 = i1 + (i3 << 2) | 0;
 HEAP32[i4 + 8 >> 2] = i3;
 HEAP32[i4 + 4 >> 2] = i3;
 HEAP32[i4 + 12 >> 2] = i1 + (i2 << 2);
 return;
}

function __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEaSERKS7_(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 var i3 = 0, i4 = 0;
 if ((i2 | 0) != (i1 | 0)) {
  i3 = HEAP8[i1 >> 0] | 0;
  i4 = (i3 & 1) == 0;
  __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6assignEPKcj(i2, i4 ? i1 + 1 | 0 : HEAP32[i1 + 8 >> 2] | 0, i4 ? (i3 & 255) >>> 1 : HEAP32[i1 + 4 >> 2] | 0);
 }
 return;
}

function __ZN4wasm12RegisterPassINS_15RemoveUnusedBrsEEC2EPKcS4_(i3, i2, i1) {
 i3 = i3 | 0;
 i2 = i2 | 0;
 i1 = i1 | 0;
 var i4 = 0, i5 = 0;
 i3 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i4 = i3;
 i5 = __ZN4wasm12PassRegistry3getEv() | 0;
 HEAP32[i4 + 16 >> 2] = i4;
 HEAP32[i4 >> 2] = 3868;
 __ZN4wasm12PassRegistry12registerPassEPKcS2_NSt3__18functionIFPNS_4PassEvEEE(i5, i2, i1, i4);
 __ZNSt3__18functionIFPN4wasm4PassEvEED2Ev(i4);
 STACKTOP = i3;
 return;
}

function __ZN4wasm12RegisterPassINS_15MinifiedPrinterEEC2EPKcS4_(i3, i2, i1) {
 i3 = i3 | 0;
 i2 = i2 | 0;
 i1 = i1 | 0;
 var i4 = 0, i5 = 0;
 i3 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i4 = i3;
 i5 = __ZN4wasm12PassRegistry3getEv() | 0;
 HEAP32[i4 + 16 >> 2] = i4;
 HEAP32[i4 >> 2] = 3724;
 __ZN4wasm12PassRegistry12registerPassEPKcS2_NSt3__18functionIFPNS_4PassEvEEE(i5, i2, i1, i4);
 __ZNSt3__18functionIFPN4wasm4PassEvEED2Ev(i4);
 STACKTOP = i3;
 return;
}

function __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj10EEERAT__Kc(i3, i1) {
 i3 = i3 | 0;
 i1 = i1 | 0;
 var i2 = 0, i4 = 0;
 HEAP8[i3 >> 0] = 18;
 i4 = i3 + 1 | 0;
 i2 = i4 + 9 | 0;
 do {
  HEAP8[i4 >> 0] = HEAP8[i1 >> 0] | 0;
  i4 = i4 + 1 | 0;
  i1 = i1 + 1 | 0;
 } while ((i4 | 0) < (i2 | 0));
 HEAP8[i3 + 10 >> 0] = 0;
 i1 = i3 + 12 | 0;
 i2 = 0;
 while (1) {
  if ((i2 | 0) == 3) break;
  HEAP32[i1 + (i2 << 2) >> 2] = 0;
  i2 = i2 + 1 | 0;
 }
 return;
}

function __ZNSt3__114__split_bufferINS_10unique_ptrIN4wasm14SimplifyLocalsENS_14default_deleteIS3_EEEERNS_9allocatorIS6_EEEC2EjjS9_(i4, i2, i3, i1) {
 i4 = i4 | 0;
 i2 = i2 | 0;
 i3 = i3 | 0;
 i1 = i1 | 0;
 HEAP32[i4 + 12 >> 2] = 0;
 HEAP32[i4 + 16 >> 2] = i1;
 if (!i2) i1 = 0; else i1 = __Znwj(i2 << 2) | 0;
 HEAP32[i4 >> 2] = i1;
 i3 = i1 + (i3 << 2) | 0;
 HEAP32[i4 + 8 >> 2] = i3;
 HEAP32[i4 + 4 >> 2] = i3;
 HEAP32[i4 + 12 >> 2] = i1 + (i2 << 2);
 return;
}

function __ZNSt3__114__split_bufferINS_10unique_ptrIN4wasm14PostEmscriptenENS_14default_deleteIS3_EEEERNS_9allocatorIS6_EEEC2EjjS9_(i4, i2, i3, i1) {
 i4 = i4 | 0;
 i2 = i2 | 0;
 i3 = i3 | 0;
 i1 = i1 | 0;
 HEAP32[i4 + 12 >> 2] = 0;
 HEAP32[i4 + 16 >> 2] = i1;
 if (!i2) i1 = 0; else i1 = __Znwj(i2 << 2) | 0;
 HEAP32[i4 >> 2] = i1;
 i3 = i1 + (i3 << 2) | 0;
 HEAP32[i4 + 8 >> 2] = i3;
 HEAP32[i4 + 4 >> 2] = i3;
 HEAP32[i4 + 12 >> 2] = i1 + (i2 << 2);
 return;
}

function __ZN4wasm14SimplifyLocals21doNoteIfElseConditionEPS0_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 i1 = (__ZN4wasm10Expression4castINS_2IfEEEPT_v(HEAP32[i1 >> 2] | 0) | 0) + 16 | 0;
 if (!(HEAP32[i1 >> 2] | 0)) ___assert_fail(23082, 22896, 137, 23129); else {
  __ZNSt3__16__treeINS_12__value_typeIjN4wasm14SimplifyLocals12SinkableInfoEEENS_19__map_value_compareIjS5_NS_4lessIjEELb1EEENS_9allocatorIS5_EEE5clearEv(i2 + 40 | 0);
  return;
 }
}

function __ZN4wasm12RegisterPassINS_14SimplifyLocalsEEC2EPKcS4_(i3, i2, i1) {
 i3 = i3 | 0;
 i2 = i2 | 0;
 i1 = i1 | 0;
 var i4 = 0, i5 = 0;
 i3 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i4 = i3;
 i5 = __ZN4wasm12PassRegistry3getEv() | 0;
 HEAP32[i4 + 16 >> 2] = i4;
 HEAP32[i4 >> 2] = 4300;
 __ZN4wasm12PassRegistry12registerPassEPKcS2_NSt3__18functionIFPNS_4PassEvEEE(i5, i2, i1, i4);
 __ZNSt3__18functionIFPN4wasm4PassEvEED2Ev(i4);
 STACKTOP = i3;
 return;
}

function __ZN4wasm12RegisterPassINS_14PostEmscriptenEEC2EPKcS4_(i3, i2, i1) {
 i3 = i3 | 0;
 i2 = i2 | 0;
 i1 = i1 | 0;
 var i4 = 0, i5 = 0;
 i3 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i4 = i3;
 i5 = __ZN4wasm12PassRegistry3getEv() | 0;
 HEAP32[i4 + 16 >> 2] = i4;
 HEAP32[i4 >> 2] = 4156;
 __ZN4wasm12PassRegistry12registerPassEPKcS2_NSt3__18functionIFPNS_4PassEvEEE(i5, i2, i1, i4);
 __ZNSt3__18functionIFPN4wasm4PassEvEED2Ev(i4);
 STACKTOP = i3;
 return;
}

function __ZNSt3__114__split_bufferINS_10unique_ptrIN4wasm13ReorderLocalsENS_14default_deleteIS3_EEEERNS_9allocatorIS6_EEEC2EjjS9_(i4, i2, i3, i1) {
 i4 = i4 | 0;
 i2 = i2 | 0;
 i3 = i3 | 0;
 i1 = i1 | 0;
 HEAP32[i4 + 12 >> 2] = 0;
 HEAP32[i4 + 16 >> 2] = i1;
 if (!i2) i1 = 0; else i1 = __Znwj(i2 << 2) | 0;
 HEAP32[i4 >> 2] = i1;
 i3 = i1 + (i3 << 2) | 0;
 HEAP32[i4 + 8 >> 2] = i3;
 HEAP32[i4 + 4 >> 2] = i3;
 HEAP32[i4 + 12 >> 2] = i1 + (i2 << 2);
 return;
}

function __ZNK10__cxxabiv122__base_class_type_info27has_unambiguous_public_baseEPNS_19__dynamic_cast_infoEPvi(i6, i4, i3, i5) {
 i6 = i6 | 0;
 i4 = i4 | 0;
 i3 = i3 | 0;
 i5 = i5 | 0;
 var i1 = 0, i2 = 0;
 i2 = HEAP32[i6 + 4 >> 2] | 0;
 i1 = i2 >> 8;
 if (i2 & 1) i1 = HEAP32[(HEAP32[i3 >> 2] | 0) + i1 >> 2] | 0;
 i6 = HEAP32[i6 >> 2] | 0;
 FUNCTION_TABLE_viiii[HEAP32[(HEAP32[i6 >> 2] | 0) + 28 >> 2] & 15](i6, i4, i3 + i1 | 0, i2 & 2 | 0 ? i5 : 2);
 return;
}

function __ZN4wasm12RegisterPassINS_13ReorderLocalsEEC2EPKcS4_(i3, i2, i1) {
 i3 = i3 | 0;
 i2 = i2 | 0;
 i1 = i1 | 0;
 var i4 = 0, i5 = 0;
 i3 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i4 = i3;
 i5 = __ZN4wasm12PassRegistry3getEv() | 0;
 HEAP32[i4 + 16 >> 2] = i4;
 HEAP32[i4 >> 2] = 4556;
 __ZN4wasm12PassRegistry12registerPassEPKcS2_NSt3__18functionIFPNS_4PassEvEEE(i5, i2, i1, i4);
 __ZNSt3__18functionIFPN4wasm4PassEvEED2Ev(i4);
 STACKTOP = i3;
 return;
}

function __ZNSt3__114__split_bufferIN4wasm6WalkerINS1_17RemoveUnusedNamesENS1_7VisitorIS3_vEEE4TaskERNS_9allocatorIS7_EEEC2EjjSA_(i4, i2, i3, i1) {
 i4 = i4 | 0;
 i2 = i2 | 0;
 i3 = i3 | 0;
 i1 = i1 | 0;
 HEAP32[i4 + 12 >> 2] = 0;
 HEAP32[i4 + 16 >> 2] = i1;
 if (!i2) i1 = 0; else i1 = __Znwj(i2 << 3) | 0;
 HEAP32[i4 >> 2] = i1;
 i3 = i1 + (i3 << 3) | 0;
 HEAP32[i4 + 8 >> 2] = i3;
 HEAP32[i4 + 4 >> 2] = i3;
 HEAP32[i4 + 12 >> 2] = i1 + (i2 << 3);
 return;
}

function __ZNSt3__114__split_bufferINS_10unique_ptrIN4wasm11MergeBlocksENS_14default_deleteIS3_EEEERNS_9allocatorIS6_EEEC2EjjS9_(i4, i2, i3, i1) {
 i4 = i4 | 0;
 i2 = i2 | 0;
 i3 = i3 | 0;
 i1 = i1 | 0;
 HEAP32[i4 + 12 >> 2] = 0;
 HEAP32[i4 + 16 >> 2] = i1;
 if (!i2) i1 = 0; else i1 = __Znwj(i2 << 2) | 0;
 HEAP32[i4 >> 2] = i1;
 i3 = i1 + (i3 << 2) | 0;
 HEAP32[i4 + 8 >> 2] = i3;
 HEAP32[i4 + 4 >> 2] = i3;
 HEAP32[i4 + 12 >> 2] = i1 + (i2 << 2);
 return;
}

function __ZN4wasm12RegisterPassINS_11MergeBlocksEEC2EPKcS4_(i3, i2, i1) {
 i3 = i3 | 0;
 i2 = i2 | 0;
 i1 = i1 | 0;
 var i4 = 0, i5 = 0;
 i3 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i4 = i3;
 i5 = __ZN4wasm12PassRegistry3getEv() | 0;
 HEAP32[i4 + 16 >> 2] = i4;
 HEAP32[i4 >> 2] = 3508;
 __ZN4wasm12PassRegistry12registerPassEPKcS2_NSt3__18functionIFPNS_4PassEvEEE(i5, i2, i1, i4);
 __ZNSt3__18functionIFPN4wasm4PassEvEED2Ev(i4);
 STACKTOP = i3;
 return;
}

function __ZN4wasm12RegisterPassINS_11FullPrinterEEC2EPKcS4_(i3, i2, i1) {
 i3 = i3 | 0;
 i2 = i2 | 0;
 i1 = i1 | 0;
 var i4 = 0, i5 = 0;
 i3 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i4 = i3;
 i5 = __ZN4wasm12PassRegistry3getEv() | 0;
 HEAP32[i4 + 16 >> 2] = i4;
 HEAP32[i4 >> 2] = 3796;
 __ZN4wasm12PassRegistry12registerPassEPKcS2_NSt3__18functionIFPNS_4PassEvEEE(i5, i2, i1, i4);
 __ZNSt3__18functionIFPN4wasm4PassEvEED2Ev(i4);
 STACKTOP = i3;
 return;
}

function __ZN10MixedArenaC2Ev(i1) {
 i1 = i1 | 0;
 var i2 = 0, i3 = 0;
 HEAP32[i1 >> 2] = 0;
 HEAP32[i1 + 4 >> 2] = 0;
 HEAP32[i1 + 8 >> 2] = 0;
 i2 = i1 + 16 | 0;
 i3 = _pthread_self() | 0;
 HEAP32[i2 >> 2] = 0;
 HEAP32[i2 + 4 >> 2] = 0;
 HEAP32[i2 + 8 >> 2] = 0;
 HEAP32[i2 + 12 >> 2] = 0;
 HEAP32[i2 + 16 >> 2] = 0;
 HEAP32[i2 + 20 >> 2] = 0;
 HEAP32[i2 + 24 >> 2] = 0;
 HEAP32[i2 + 28 >> 2] = 0;
 HEAP32[i2 >> 2] = i3;
 HEAP32[i1 + 48 >> 2] = 0;
 return;
}

function __ZNSt3__114__split_bufferIN4wasm6WalkerINS1_15SetLocalRemoverENS1_7VisitorIS3_vEEE4TaskERNS_9allocatorIS7_EEEC2EjjSA_(i4, i2, i3, i1) {
 i4 = i4 | 0;
 i2 = i2 | 0;
 i3 = i3 | 0;
 i1 = i1 | 0;
 HEAP32[i4 + 12 >> 2] = 0;
 HEAP32[i4 + 16 >> 2] = i1;
 if (!i2) i1 = 0; else i1 = __Znwj(i2 << 3) | 0;
 HEAP32[i4 >> 2] = i1;
 i3 = i1 + (i3 << 3) | 0;
 HEAP32[i4 + 8 >> 2] = i3;
 HEAP32[i4 + 4 >> 2] = i3;
 HEAP32[i4 + 12 >> 2] = i1 + (i2 << 3);
 return;
}

function __ZNSt3__114__split_bufferIN4wasm6WalkerINS1_15RemoveUnusedBrsENS1_7VisitorIS3_vEEE4TaskERNS_9allocatorIS7_EEEC2EjjSA_(i4, i2, i3, i1) {
 i4 = i4 | 0;
 i2 = i2 | 0;
 i3 = i3 | 0;
 i1 = i1 | 0;
 HEAP32[i4 + 12 >> 2] = 0;
 HEAP32[i4 + 16 >> 2] = i1;
 if (!i2) i1 = 0; else i1 = __Znwj(i2 << 3) | 0;
 HEAP32[i4 >> 2] = i1;
 i3 = i1 + (i3 << 3) | 0;
 HEAP32[i4 + 8 >> 2] = i3;
 HEAP32[i4 + 4 >> 2] = i3;
 HEAP32[i4 + 12 >> 2] = i1 + (i2 << 3);
 return;
}

function __ZNSt3__114__split_bufferIN4wasm6WalkerINS1_15GetLocalCounterENS1_7VisitorIS3_vEEE4TaskERNS_9allocatorIS7_EEEC2EjjSA_(i4, i2, i3, i1) {
 i4 = i4 | 0;
 i2 = i2 | 0;
 i3 = i3 | 0;
 i1 = i1 | 0;
 HEAP32[i4 + 12 >> 2] = 0;
 HEAP32[i4 + 16 >> 2] = i1;
 if (!i2) i1 = 0; else i1 = __Znwj(i2 << 3) | 0;
 HEAP32[i4 >> 2] = i1;
 i3 = i1 + (i3 << 3) | 0;
 HEAP32[i4 + 8 >> 2] = i3;
 HEAP32[i4 + 4 >> 2] = i3;
 HEAP32[i4 + 12 >> 2] = i1 + (i2 << 3);
 return;
}

function __ZN4wasm16PrintSExpression13printFullLineEPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 if (!(HEAP8[i2 + 8 >> 0] | 0)) __Z8doIndentRNSt3__113basic_ostreamIcNS_11char_traitsIcEEEEj(HEAP32[i2 >> 2] | 0, HEAP32[i2 + 4 >> 2] | 0) | 0;
 __ZN4wasm7VisitorINS_16PrintSExpressionEvE5visitEPNS_10ExpressionE(i2, i1);
 __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(HEAP32[i2 >> 2] | 0, HEAP32[i2 + 16 >> 2] | 0) | 0;
 return;
}

function _memcmp(i2, i3, i1) {
 i2 = i2 | 0;
 i3 = i3 | 0;
 i1 = i1 | 0;
 var i4 = 0, i5 = 0;
 L1 : do if (!i1) i1 = 0; else {
  i5 = i1;
  i4 = i2;
  while (1) {
   i2 = HEAP8[i4 >> 0] | 0;
   i1 = HEAP8[i3 >> 0] | 0;
   if (i2 << 24 >> 24 != i1 << 24 >> 24) break;
   i5 = i5 + -1 | 0;
   if (!i5) {
    i1 = 0;
    break L1;
   } else {
    i4 = i4 + 1 | 0;
    i3 = i3 + 1 | 0;
   }
  }
  i1 = (i2 & 255) - (i1 & 255) | 0;
 } while (0);
 return i1 | 0;
}

function ___stdout_write(i2, i1, i3) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 i3 = i3 | 0;
 var i4 = 0, i5 = 0;
 i5 = STACKTOP;
 STACKTOP = STACKTOP + 80 | 0;
 i4 = i5;
 HEAP32[i2 + 36 >> 2] = 4;
 if ((HEAP32[i2 >> 2] & 64 | 0) == 0 ? (HEAP32[i4 >> 2] = HEAP32[i2 + 60 >> 2], HEAP32[i4 + 4 >> 2] = 21505, HEAP32[i4 + 8 >> 2] = i5 + 12, ___syscall54(54, i4 | 0) | 0) : 0) HEAP8[i2 + 75 >> 0] = -1;
 i4 = ___stdio_write(i2, i1, i3) | 0;
 STACKTOP = i5;
 return i4 | 0;
}

function __ZNSt3__16__treeIN4wasm4NameENS_4lessIS2_EENS_9allocatorIS2_EEE7destroyEPNS_11__tree_nodeIS2_PvEE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 if (!i1) return; else {
  __ZNSt3__16__treeIN4wasm4NameENS_4lessIS2_EENS_9allocatorIS2_EEE7destroyEPNS_11__tree_nodeIS2_PvEE(i2, HEAP32[i1 >> 2] | 0);
  __ZNSt3__16__treeIN4wasm4NameENS_4lessIS2_EENS_9allocatorIS2_EEE7destroyEPNS_11__tree_nodeIS2_PvEE(i2, HEAP32[i1 + 4 >> 2] | 0);
  __ZdlPv(i1);
  return;
 }
}

function __ZNSt3__114__split_bufferIN4wasm6WalkerINS1_14SimplifyLocalsENS1_7VisitorIS3_vEEE4TaskERNS_9allocatorIS7_EEEC2EjjSA_(i4, i2, i3, i1) {
 i4 = i4 | 0;
 i2 = i2 | 0;
 i3 = i3 | 0;
 i1 = i1 | 0;
 HEAP32[i4 + 12 >> 2] = 0;
 HEAP32[i4 + 16 >> 2] = i1;
 if (!i2) i1 = 0; else i1 = __Znwj(i2 << 3) | 0;
 HEAP32[i4 >> 2] = i1;
 i3 = i1 + (i3 << 3) | 0;
 HEAP32[i4 + 8 >> 2] = i3;
 HEAP32[i4 + 4 >> 2] = i3;
 HEAP32[i4 + 12 >> 2] = i1 + (i2 << 3);
 return;
}

function __ZNSt3__114__split_bufferIN4wasm6WalkerINS1_14PostEmscriptenENS1_7VisitorIS3_vEEE4TaskERNS_9allocatorIS7_EEEC2EjjSA_(i4, i2, i3, i1) {
 i4 = i4 | 0;
 i2 = i2 | 0;
 i3 = i3 | 0;
 i1 = i1 | 0;
 HEAP32[i4 + 12 >> 2] = 0;
 HEAP32[i4 + 16 >> 2] = i1;
 if (!i2) i1 = 0; else i1 = __Znwj(i2 << 3) | 0;
 HEAP32[i4 >> 2] = i1;
 i3 = i1 + (i3 << 3) | 0;
 HEAP32[i4 + 8 >> 2] = i3;
 HEAP32[i4 + 4 >> 2] = i3;
 HEAP32[i4 + 12 >> 2] = i1 + (i2 << 3);
 return;
}

function __ZNSt3__114__split_bufferIN4wasm6WalkerINS1_14EffectAnalyzerENS1_7VisitorIS3_vEEE4TaskERNS_9allocatorIS7_EEEC2EjjSA_(i4, i2, i3, i1) {
 i4 = i4 | 0;
 i2 = i2 | 0;
 i3 = i3 | 0;
 i1 = i1 | 0;
 HEAP32[i4 + 12 >> 2] = 0;
 HEAP32[i4 + 16 >> 2] = i1;
 if (!i2) i1 = 0; else i1 = __Znwj(i2 << 3) | 0;
 HEAP32[i4 >> 2] = i1;
 i3 = i1 + (i3 << 3) | 0;
 HEAP32[i4 + 8 >> 2] = i3;
 HEAP32[i4 + 4 >> 2] = i3;
 HEAP32[i4 + 12 >> 2] = i1 + (i2 << 3);
 return;
}

function __ZN4wasm10WalkerPassINS_21LinearExecutionWalkerINS_14SimplifyLocalsENS_7VisitorIS2_vEEEEE3runEPNS_10PassRunnerEPNS_6ModuleE(i3, i2, i1) {
 i3 = i3 | 0;
 i2 = i2 | 0;
 i1 = i1 | 0;
 FUNCTION_TABLE_viii[HEAP32[(HEAP32[i3 >> 2] | 0) + 8 >> 2] & 15](i3, i2, i1);
 __ZN4wasm6WalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE9startWalkEPNS_6ModuleE(i3 + 16 | 0, i1);
 FUNCTION_TABLE_viii[HEAP32[(HEAP32[i3 >> 2] | 0) + 16 >> 2] & 15](i3, i2, i1);
 return;
}

function __ZZN4wasm6WalkerINS_17RemoveUnusedNamesENS_7VisitorIS1_vEEE9startWalkEPNS_6ModuleEENKUlPS1_PNS_8FunctionEE_clES7_S9_(i3, i2, i1) {
 i3 = i3 | 0;
 i2 = i2 | 0;
 i1 = i1 | 0;
 i3 = i2 + 32 | 0;
 HEAP32[i3 >> 2] = i1;
 __ZN4wasm6WalkerINS_17RemoveUnusedNamesENS_7VisitorIS1_vEEE4walkERPNS_10ExpressionE(i2 + 16 | 0, i1 + 36 | 0);
 __ZNSt3__16__treeIN4wasm4NameENS_4lessIS2_EENS_9allocatorIS2_EEE5clearEv(i2 + 40 | 0);
 HEAP32[i3 >> 2] = 0;
 return;
}

function __ZNSt3__114__split_bufferIN4wasm6WalkerINS1_13ReorderLocalsENS1_7VisitorIS3_vEEE4TaskERNS_9allocatorIS7_EEEC2EjjSA_(i4, i2, i3, i1) {
 i4 = i4 | 0;
 i2 = i2 | 0;
 i3 = i3 | 0;
 i1 = i1 | 0;
 HEAP32[i4 + 12 >> 2] = 0;
 HEAP32[i4 + 16 >> 2] = i1;
 if (!i2) i1 = 0; else i1 = __Znwj(i2 << 3) | 0;
 HEAP32[i4 >> 2] = i1;
 i3 = i1 + (i3 << 3) | 0;
 HEAP32[i4 + 8 >> 2] = i3;
 HEAP32[i4 + 4 >> 2] = i3;
 HEAP32[i4 + 12 >> 2] = i1 + (i2 << 3);
 return;
}

function _vsscanf(i4, i3, i1) {
 i4 = i4 | 0;
 i3 = i3 | 0;
 i1 = i1 | 0;
 var i2 = 0, i5 = 0, i6 = 0, i7 = 0;
 i6 = STACKTOP;
 STACKTOP = STACKTOP + 112 | 0;
 i2 = i6;
 i5 = i2;
 i7 = i5 + 112 | 0;
 do {
  HEAP32[i5 >> 2] = 0;
  i5 = i5 + 4 | 0;
 } while ((i5 | 0) < (i7 | 0));
 HEAP32[i2 + 32 >> 2] = 26;
 HEAP32[i2 + 44 >> 2] = i4;
 HEAP32[i2 + 76 >> 2] = -1;
 HEAP32[i2 + 84 >> 2] = i4;
 i7 = _vfscanf(i2, i3, i1) | 0;
 STACKTOP = i6;
 return i7 | 0;
}

function __ZNSt3__16__treeINS_12__value_typeIN4wasm4NameEjEENS_19__map_value_compareIS3_S4_NS_4lessIS3_EELb1EEENS_9allocatorIS4_EEE5clearEv(i1) {
 i1 = i1 | 0;
 var i2 = 0;
 i2 = i1 + 4 | 0;
 __ZNSt3__16__treeINS_12__value_typeIN4wasm4NameEjEENS_19__map_value_compareIS3_S4_NS_4lessIS3_EELb1EEENS_9allocatorIS4_EEE7destroyEPNS_11__tree_nodeIS4_PvEE(i1, HEAP32[i2 >> 2] | 0);
 HEAP32[i1 + 8 >> 2] = 0;
 HEAP32[i1 >> 2] = i2;
 HEAP32[i2 >> 2] = 0;
 return;
}

function __ZNSt3__114__split_bufferINS_6vectorIPN4wasm5BreakENS_9allocatorIS4_EEEERNS5_IS7_EEED2Ev(i4) {
 i4 = i4 | 0;
 var i1 = 0, i2 = 0, i3 = 0;
 i1 = HEAP32[i4 + 4 >> 2] | 0;
 i2 = i4 + 8 | 0;
 while (1) {
  i3 = HEAP32[i2 >> 2] | 0;
  if ((i3 | 0) == (i1 | 0)) break;
  i3 = i3 + -12 | 0;
  HEAP32[i2 >> 2] = i3;
  __ZNSt3__113__vector_baseIPN4wasm5BreakENS_9allocatorIS3_EEED2Ev(i3);
 }
 i1 = HEAP32[i4 >> 2] | 0;
 if (i1 | 0) __ZdlPv(i1);
 return;
}

function __ZN4wasm7Element4dumpEv(i1) {
 i1 = i1 | 0;
 __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(__ZN4wasmlsERNSt3__113basic_ostreamIcNS0_11char_traitsIcEEEERNS_7ElementE(__ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(__ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEElsEPKv(__ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(37336, 14276) | 0, i1) | 0, 14285) | 0, i1) | 0, 14289) | 0;
 return;
}

function __ZNSt3__114__split_bufferIN4wasm6WalkerINS1_11MergeBlocksENS1_7VisitorIS3_vEEE4TaskERNS_9allocatorIS7_EEEC2EjjSA_(i4, i2, i3, i1) {
 i4 = i4 | 0;
 i2 = i2 | 0;
 i3 = i3 | 0;
 i1 = i1 | 0;
 HEAP32[i4 + 12 >> 2] = 0;
 HEAP32[i4 + 16 >> 2] = i1;
 if (!i2) i1 = 0; else i1 = __Znwj(i2 << 3) | 0;
 HEAP32[i4 >> 2] = i1;
 i3 = i1 + (i3 << 3) | 0;
 HEAP32[i4 + 8 >> 2] = i3;
 HEAP32[i4 + 4 >> 2] = i3;
 HEAP32[i4 + 12 >> 2] = i1 + (i2 << 3);
 return;
}

function __ZNSt3__114__split_bufferIN4wasm6WalkerINS1_11BreakSeekerENS1_7VisitorIS3_vEEE4TaskERNS_9allocatorIS7_EEEC2EjjSA_(i4, i2, i3, i1) {
 i4 = i4 | 0;
 i2 = i2 | 0;
 i3 = i3 | 0;
 i1 = i1 | 0;
 HEAP32[i4 + 12 >> 2] = 0;
 HEAP32[i4 + 16 >> 2] = i1;
 if (!i2) i1 = 0; else i1 = __Znwj(i2 << 3) | 0;
 HEAP32[i4 >> 2] = i1;
 i3 = i1 + (i3 << 3) | 0;
 HEAP32[i4 + 8 >> 2] = i3;
 HEAP32[i4 + 4 >> 2] = i3;
 HEAP32[i4 + 12 >> 2] = i1 + (i2 << 3);
 return;
}

function __ZNSt3__113__vector_baseINS_6vectorIPN4wasm5BreakENS_9allocatorIS4_EEEENS5_IS7_EEED2Ev(i4) {
 i4 = i4 | 0;
 var i1 = 0, i2 = 0, i3 = 0;
 i1 = HEAP32[i4 >> 2] | 0;
 if (i1 | 0) {
  i2 = i4 + 4 | 0;
  while (1) {
   i3 = HEAP32[i2 >> 2] | 0;
   if ((i3 | 0) == (i1 | 0)) break;
   i3 = i3 + -12 | 0;
   HEAP32[i2 >> 2] = i3;
   __ZNSt3__113__vector_baseIPN4wasm5BreakENS_9allocatorIS3_EEED2Ev(i3);
  }
  __ZdlPv(HEAP32[i4 >> 2] | 0);
 }
 return;
}

function __ZN4wasm12RegisterPassINS_7PrinterEEC2EPKcS4_(i3, i2, i1) {
 i3 = i3 | 0;
 i2 = i2 | 0;
 i1 = i1 | 0;
 var i4 = 0, i5 = 0;
 i3 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i4 = i3;
 i5 = __ZN4wasm12PassRegistry3getEv() | 0;
 HEAP32[i4 + 16 >> 2] = i4;
 HEAP32[i4 >> 2] = 3680;
 __ZN4wasm12PassRegistry12registerPassEPKcS2_NSt3__18functionIFPNS_4PassEvEEE(i5, i2, i1, i4);
 __ZNSt3__18functionIFPN4wasm4PassEvEED2Ev(i4);
 STACKTOP = i3;
 return;
}

function __ZNSt3__114__split_bufferINS_10unique_ptrIN4wasm6VacuumENS_14default_deleteIS3_EEEERNS_9allocatorIS6_EEEC2EjjS9_(i4, i2, i3, i1) {
 i4 = i4 | 0;
 i2 = i2 | 0;
 i3 = i3 | 0;
 i1 = i1 | 0;
 HEAP32[i4 + 12 >> 2] = 0;
 HEAP32[i4 + 16 >> 2] = i1;
 if (!i2) i1 = 0; else i1 = __Znwj(i2 << 2) | 0;
 HEAP32[i4 >> 2] = i1;
 i3 = i1 + (i3 << 2) | 0;
 HEAP32[i4 + 8 >> 2] = i3;
 HEAP32[i4 + 4 >> 2] = i3;
 HEAP32[i4 + 12 >> 2] = i1 + (i2 << 2);
 return;
}

function __ZNSt3__114__split_bufferINS_10unique_ptrIN4wasm6ThreadENS_14default_deleteIS3_EEEERNS_9allocatorIS6_EEEC2EjjS9_(i4, i2, i3, i1) {
 i4 = i4 | 0;
 i2 = i2 | 0;
 i3 = i3 | 0;
 i1 = i1 | 0;
 HEAP32[i4 + 12 >> 2] = 0;
 HEAP32[i4 + 16 >> 2] = i1;
 if (!i2) i1 = 0; else i1 = __Znwj(i2 << 2) | 0;
 HEAP32[i4 >> 2] = i1;
 i3 = i1 + (i3 << 2) | 0;
 HEAP32[i4 + 8 >> 2] = i3;
 HEAP32[i4 + 4 >> 2] = i3;
 HEAP32[i4 + 12 >> 2] = i1 + (i2 << 2);
 return;
}

function __ZN4wasm12RegisterPassINS_6VacuumEEC2EPKcS4_(i3, i2, i1) {
 i3 = i3 | 0;
 i2 = i2 | 0;
 i1 = i1 | 0;
 var i4 = 0, i5 = 0;
 i3 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i4 = i3;
 i5 = __ZN4wasm12PassRegistry3getEv() | 0;
 HEAP32[i4 + 16 >> 2] = i4;
 HEAP32[i4 >> 2] = 4700;
 __ZN4wasm12PassRegistry12registerPassEPKcS2_NSt3__18functionIFPNS_4PassEvEEE(i5, i2, i1, i4);
 __ZNSt3__18functionIFPN4wasm4PassEvEED2Ev(i4);
 STACKTOP = i3;
 return;
}

function __ZN4wasm10WalkerPassINS_10PostWalkerINS_17RemoveUnusedNamesENS_7VisitorIS2_vEEEEE3runEPNS_10PassRunnerEPNS_6ModuleE(i3, i2, i1) {
 i3 = i3 | 0;
 i2 = i2 | 0;
 i1 = i1 | 0;
 FUNCTION_TABLE_viii[HEAP32[(HEAP32[i3 >> 2] | 0) + 8 >> 2] & 15](i3, i2, i1);
 __ZN4wasm6WalkerINS_17RemoveUnusedNamesENS_7VisitorIS1_vEEE9startWalkEPNS_6ModuleE(i3 + 16 | 0, i1);
 FUNCTION_TABLE_viii[HEAP32[(HEAP32[i3 >> 2] | 0) + 16 >> 2] & 15](i3, i2, i1);
 return;
}

function __ZNK4wasm7Literal2leERKS0_(i1, i3, i2) {
 i1 = i1 | 0;
 i3 = i3 | 0;
 i2 = i2 | 0;
 var d4 = 0.0;
 if ((HEAP32[i3 >> 2] | 0) == 3) {
  d4 = +__ZNK4wasm7Literal6getf32Ev(i3);
  i3 = d4 <= +__ZNK4wasm7Literal6getf32Ev(i2) & 1;
  HEAP32[i1 >> 2] = 1;
  HEAP32[i1 + 8 >> 2] = i3;
 } else {
  d4 = +__ZNK4wasm7Literal6getf64Ev(i3);
  i3 = d4 <= +__ZNK4wasm7Literal6getf64Ev(i2) & 1;
  HEAP32[i1 >> 2] = 1;
  HEAP32[i1 + 8 >> 2] = i3;
 }
 return;
}

function __ZNK4wasm7Literal2geERKS0_(i1, i3, i2) {
 i1 = i1 | 0;
 i3 = i3 | 0;
 i2 = i2 | 0;
 var d4 = 0.0;
 if ((HEAP32[i3 >> 2] | 0) == 3) {
  d4 = +__ZNK4wasm7Literal6getf32Ev(i3);
  i3 = d4 >= +__ZNK4wasm7Literal6getf32Ev(i2) & 1;
  HEAP32[i1 >> 2] = 1;
  HEAP32[i1 + 8 >> 2] = i3;
 } else {
  d4 = +__ZNK4wasm7Literal6getf64Ev(i3);
  i3 = d4 >= +__ZNK4wasm7Literal6getf64Ev(i2) & 1;
  HEAP32[i1 >> 2] = 1;
  HEAP32[i1 + 8 >> 2] = i3;
 }
 return;
}

function __ZNSt3__114__split_bufferINS_8functionIFN4wasm15ThreadWorkStateEvEEERNS_9allocatorIS5_EEEC2EjjS8_(i4, i2, i3, i1) {
 i4 = i4 | 0;
 i2 = i2 | 0;
 i3 = i3 | 0;
 i1 = i1 | 0;
 HEAP32[i4 + 12 >> 2] = 0;
 HEAP32[i4 + 16 >> 2] = i1;
 if (!i2) i1 = 0; else i1 = __Znwj(i2 * 24 | 0) | 0;
 HEAP32[i4 >> 2] = i1;
 i3 = i1 + (i3 * 24 | 0) | 0;
 HEAP32[i4 + 8 >> 2] = i3;
 HEAP32[i4 + 4 >> 2] = i3;
 HEAP32[i4 + 12 >> 2] = i1 + (i2 * 24 | 0);
 return;
}

function __ZNK4wasm7Literal2ltERKS0_(i1, i3, i2) {
 i1 = i1 | 0;
 i3 = i3 | 0;
 i2 = i2 | 0;
 var d4 = 0.0;
 if ((HEAP32[i3 >> 2] | 0) == 3) {
  d4 = +__ZNK4wasm7Literal6getf32Ev(i3);
  i3 = d4 < +__ZNK4wasm7Literal6getf32Ev(i2) & 1;
  HEAP32[i1 >> 2] = 1;
  HEAP32[i1 + 8 >> 2] = i3;
 } else {
  d4 = +__ZNK4wasm7Literal6getf64Ev(i3);
  i3 = d4 < +__ZNK4wasm7Literal6getf64Ev(i2) & 1;
  HEAP32[i1 >> 2] = 1;
  HEAP32[i1 + 8 >> 2] = i3;
 }
 return;
}

function __ZNK4wasm7Literal2gtERKS0_(i1, i3, i2) {
 i1 = i1 | 0;
 i3 = i3 | 0;
 i2 = i2 | 0;
 var d4 = 0.0;
 if ((HEAP32[i3 >> 2] | 0) == 3) {
  d4 = +__ZNK4wasm7Literal6getf32Ev(i3);
  i3 = d4 > +__ZNK4wasm7Literal6getf32Ev(i2) & 1;
  HEAP32[i1 >> 2] = 1;
  HEAP32[i1 + 8 >> 2] = i3;
 } else {
  d4 = +__ZNK4wasm7Literal6getf64Ev(i3);
  i3 = d4 > +__ZNK4wasm7Literal6getf64Ev(i2) & 1;
  HEAP32[i1 >> 2] = 1;
  HEAP32[i1 + 8 >> 2] = i3;
 }
 return;
}

function __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj4EEERAT__Kc(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 var i3 = 0;
 HEAP8[i2 >> 0] = 6;
 i3 = i2 + 1 | 0;
 HEAP8[i3 >> 0] = HEAP8[i1 >> 0] | 0;
 HEAP8[i3 + 1 >> 0] = HEAP8[i1 + 1 >> 0] | 0;
 HEAP8[i3 + 2 >> 0] = HEAP8[i1 + 2 >> 0] | 0;
 HEAP8[i2 + 4 >> 0] = 0;
 i1 = i2 + 12 | 0;
 i2 = 0;
 while (1) {
  if ((i2 | 0) == 3) break;
  HEAP32[i1 + (i2 << 2) >> 2] = 0;
  i2 = i2 + 1 | 0;
 }
 return;
}

function __ZNSt3__16__treeIN4wasm4NameENS_4lessIS2_EENS_9allocatorIS2_EEE13__lower_boundIS2_EENS_15__tree_iteratorIS2_PNS_11__tree_nodeIS2_PvEEiEERKT_SD_SD_(i3, i4, i2, i1) {
 i3 = i3 | 0;
 i4 = i4 | 0;
 i2 = i2 | 0;
 i1 = i1 | 0;
 L1 : while (1) {
  while (1) {
   if (!i2) break L1;
   if (!(__ZNK6cashew7IStringltERKS0_(i2 + 16 | 0, i4) | 0)) break;
   i2 = HEAP32[i2 + 4 >> 2] | 0;
  }
  i1 = i2;
  i2 = HEAP32[i2 >> 2] | 0;
 }
 return i1 | 0;
}

function __ZNSt3__114__split_bufferINS_8functionIFN4wasm15ThreadWorkStateEvEEERNS_9allocatorIS5_EEED2Ev(i4) {
 i4 = i4 | 0;
 var i1 = 0, i2 = 0, i3 = 0;
 i1 = HEAP32[i4 + 4 >> 2] | 0;
 i2 = i4 + 8 | 0;
 while (1) {
  i3 = HEAP32[i2 >> 2] | 0;
  if ((i3 | 0) == (i1 | 0)) break;
  i3 = i3 + -24 | 0;
  HEAP32[i2 >> 2] = i3;
  __ZNSt3__18functionIFN4wasm15ThreadWorkStateEvEED2Ev(i3);
 }
 i1 = HEAP32[i4 >> 2] | 0;
 if (i1 | 0) __ZdlPv(i1);
 return;
}

function __ZNSt3__114__split_bufferIN4wasm6WalkerINS1_6VacuumENS1_7VisitorIS3_vEEE4TaskERNS_9allocatorIS7_EEEC2EjjSA_(i4, i2, i3, i1) {
 i4 = i4 | 0;
 i2 = i2 | 0;
 i3 = i3 | 0;
 i1 = i1 | 0;
 HEAP32[i4 + 12 >> 2] = 0;
 HEAP32[i4 + 16 >> 2] = i1;
 if (!i2) i1 = 0; else i1 = __Znwj(i2 << 3) | 0;
 HEAP32[i4 >> 2] = i1;
 i3 = i1 + (i3 << 3) | 0;
 HEAP32[i4 + 8 >> 2] = i3;
 HEAP32[i4 + 4 >> 2] = i3;
 HEAP32[i4 + 12 >> 2] = i1 + (i2 << 3);
 return;
}

function __ZN4wasm10WalkerPassINS_10PostWalkerINS_15SetLocalRemoverENS_7VisitorIS2_vEEEEE3runEPNS_10PassRunnerEPNS_6ModuleE(i3, i2, i1) {
 i3 = i3 | 0;
 i2 = i2 | 0;
 i1 = i1 | 0;
 FUNCTION_TABLE_viii[HEAP32[(HEAP32[i3 >> 2] | 0) + 8 >> 2] & 15](i3, i2, i1);
 __ZN4wasm6WalkerINS_15SetLocalRemoverENS_7VisitorIS1_vEEE9startWalkEPNS_6ModuleE(i3 + 16 | 0, i1);
 FUNCTION_TABLE_viii[HEAP32[(HEAP32[i3 >> 2] | 0) + 16 >> 2] & 15](i3, i2, i1);
 return;
}

function __ZN4wasm10WalkerPassINS_10PostWalkerINS_15RemoveUnusedBrsENS_7VisitorIS2_vEEEEE3runEPNS_10PassRunnerEPNS_6ModuleE(i3, i2, i1) {
 i3 = i3 | 0;
 i2 = i2 | 0;
 i1 = i1 | 0;
 FUNCTION_TABLE_viii[HEAP32[(HEAP32[i3 >> 2] | 0) + 8 >> 2] & 15](i3, i2, i1);
 __ZN4wasm6WalkerINS_15RemoveUnusedBrsENS_7VisitorIS1_vEEE9startWalkEPNS_6ModuleE(i3 + 16 | 0, i1);
 FUNCTION_TABLE_viii[HEAP32[(HEAP32[i3 >> 2] | 0) + 16 >> 2] & 15](i3, i2, i1);
 return;
}

function __ZN4wasm10WalkerPassINS_10PostWalkerINS_15GetLocalCounterENS_7VisitorIS2_vEEEEE3runEPNS_10PassRunnerEPNS_6ModuleE(i3, i2, i1) {
 i3 = i3 | 0;
 i2 = i2 | 0;
 i1 = i1 | 0;
 FUNCTION_TABLE_viii[HEAP32[(HEAP32[i3 >> 2] | 0) + 8 >> 2] & 15](i3, i2, i1);
 __ZN4wasm6WalkerINS_15GetLocalCounterENS_7VisitorIS1_vEEE9startWalkEPNS_6ModuleE(i3 + 16 | 0, i1);
 FUNCTION_TABLE_viii[HEAP32[(HEAP32[i3 >> 2] | 0) + 16 >> 2] & 15](i3, i2, i1);
 return;
}

function __ZNSt3__113__vector_baseINS_8functionIFN4wasm15ThreadWorkStateEvEEENS_9allocatorIS5_EEED2Ev(i4) {
 i4 = i4 | 0;
 var i1 = 0, i2 = 0, i3 = 0;
 i1 = HEAP32[i4 >> 2] | 0;
 if (i1 | 0) {
  i2 = i4 + 4 | 0;
  while (1) {
   i3 = HEAP32[i2 >> 2] | 0;
   if ((i3 | 0) == (i1 | 0)) break;
   i3 = i3 + -24 | 0;
   HEAP32[i2 >> 2] = i3;
   __ZNSt3__18functionIFN4wasm15ThreadWorkStateEvEED2Ev(i3);
  }
  __ZdlPv(HEAP32[i4 >> 2] | 0);
 }
 return;
}

function __ZN4wasm10WalkerPassINS_10PostWalkerINS_14PostEmscriptenENS_7VisitorIS2_vEEEEE3runEPNS_10PassRunnerEPNS_6ModuleE(i3, i2, i1) {
 i3 = i3 | 0;
 i2 = i2 | 0;
 i1 = i1 | 0;
 FUNCTION_TABLE_viii[HEAP32[(HEAP32[i3 >> 2] | 0) + 8 >> 2] & 15](i3, i2, i1);
 __ZN4wasm6WalkerINS_14PostEmscriptenENS_7VisitorIS1_vEEE9startWalkEPNS_6ModuleE(i3 + 16 | 0, i1);
 FUNCTION_TABLE_viii[HEAP32[(HEAP32[i3 >> 2] | 0) + 16 >> 2] & 15](i3, i2, i1);
 return;
}

function ___string_read(i2, i1, i3) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 i3 = i3 | 0;
 var i4 = 0, i5 = 0, i6 = 0, i7 = 0;
 i4 = i2 + 84 | 0;
 i6 = HEAP32[i4 >> 2] | 0;
 i7 = i3 + 256 | 0;
 i5 = _memchr(i6, 0, i7) | 0;
 i5 = (i5 | 0) == 0 ? i7 : i5 - i6 | 0;
 i3 = i5 >>> 0 < i3 >>> 0 ? i5 : i3;
 _memcpy(i1 | 0, i6 | 0, i3 | 0) | 0;
 HEAP32[i2 + 4 >> 2] = i6 + i3;
 i1 = i6 + i5 | 0;
 HEAP32[i2 + 8 >> 2] = i1;
 HEAP32[i4 >> 2] = i1;
 return i3 | 0;
}

function __ZNSt3__114__split_bufferINS_6vectorIPN4wasm5BreakENS_9allocatorIS4_EEEERNS5_IS7_EEEC2EjjS9_(i4, i2, i3, i1) {
 i4 = i4 | 0;
 i2 = i2 | 0;
 i3 = i3 | 0;
 i1 = i1 | 0;
 HEAP32[i4 + 12 >> 2] = 0;
 HEAP32[i4 + 16 >> 2] = i1;
 if (!i2) i1 = 0; else i1 = __Znwj(i2 * 12 | 0) | 0;
 HEAP32[i4 >> 2] = i1;
 i3 = i1 + (i3 * 12 | 0) | 0;
 HEAP32[i4 + 8 >> 2] = i3;
 HEAP32[i4 + 4 >> 2] = i3;
 HEAP32[i4 + 12 >> 2] = i1 + (i2 * 12 | 0);
 return;
}

function __Znwj(i1) {
 i1 = i1 | 0;
 var i2 = 0;
 i2 = (i1 | 0) == 0 ? 1 : i1;
 while (1) {
  i1 = _malloc(i2) | 0;
  if (i1 | 0) {
   i2 = 6;
   break;
  }
  i1 = __ZSt15get_new_handlerv() | 0;
  if (!i1) {
   i2 = 5;
   break;
  }
  FUNCTION_TABLE_v[i1 & 3]();
 }
 if ((i2 | 0) == 5) {
  i2 = ___cxa_allocate_exception(4) | 0;
  HEAP32[i2 >> 2] = 12424;
  ___cxa_throw(i2 | 0, 2872, 205);
 } else if ((i2 | 0) == 6) return i1 | 0;
 return 0;
}

function __ZNKSt3__16__treeIN4wasm4NameENS_4lessIS2_EENS_9allocatorIS2_EEE14__count_uniqueIS2_EEjRKT_(i1, i3) {
 i1 = i1 | 0;
 i3 = i3 | 0;
 var i2 = 0;
 i1 = i1 + 4 | 0;
 while (1) {
  i1 = HEAP32[i1 >> 2] | 0;
  if (!i1) {
   i1 = 0;
   break;
  }
  i2 = i1 + 16 | 0;
  if (__ZNK6cashew7IStringltERKS0_(i3, i2) | 0) continue;
  if (!(__ZNK6cashew7IStringltERKS0_(i2, i3) | 0)) {
   i1 = 1;
   break;
  }
  i1 = i1 + 4 | 0;
 }
 return i1 | 0;
}

function __ZNKSt3__15ctypeIwE10do_toupperEPwPKw(i1, i5, i4) {
 i1 = i1 | 0;
 i5 = i5 | 0;
 i4 = i4 | 0;
 var i2 = 0, i3 = 0, i6 = 0;
 i3 = (i4 - i5 | 0) >>> 2;
 i2 = i5;
 while (1) {
  if ((i2 | 0) == (i4 | 0)) break;
  i1 = HEAP32[i2 >> 2] | 0;
  if (i1 >>> 0 < 128) {
   i6 = ___ctype_toupper_loc() | 0;
   i1 = HEAP32[(HEAP32[i6 >> 2] | 0) + (i1 << 2) >> 2] | 0;
  }
  HEAP32[i2 >> 2] = i1;
  i2 = i2 + 4 | 0;
 }
 return i5 + (i3 << 2) | 0;
}

function __ZNKSt3__15ctypeIwE10do_tolowerEPwPKw(i1, i5, i4) {
 i1 = i1 | 0;
 i5 = i5 | 0;
 i4 = i4 | 0;
 var i2 = 0, i3 = 0, i6 = 0;
 i3 = (i4 - i5 | 0) >>> 2;
 i2 = i5;
 while (1) {
  if ((i2 | 0) == (i4 | 0)) break;
  i1 = HEAP32[i2 >> 2] | 0;
  if (i1 >>> 0 < 128) {
   i6 = ___ctype_tolower_loc() | 0;
   i1 = HEAP32[(HEAP32[i6 >> 2] | 0) + (i1 << 2) >> 2] | 0;
  }
  HEAP32[i2 >> 2] = i1;
  i2 = i2 + 4 | 0;
 }
 return i5 + (i3 << 2) | 0;
}

function __ZN4wasm10WalkerPassINS_10PostWalkerINS_13ReorderLocalsENS_7VisitorIS2_vEEEEE3runEPNS_10PassRunnerEPNS_6ModuleE(i3, i2, i1) {
 i3 = i3 | 0;
 i2 = i2 | 0;
 i1 = i1 | 0;
 FUNCTION_TABLE_viii[HEAP32[(HEAP32[i3 >> 2] | 0) + 8 >> 2] & 15](i3, i2, i1);
 __ZN4wasm6WalkerINS_13ReorderLocalsENS_7VisitorIS1_vEEE9startWalkEPNS_6ModuleE(i3 + 16 | 0, i1);
 FUNCTION_TABLE_viii[HEAP32[(HEAP32[i3 >> 2] | 0) + 16 >> 2] & 15](i3, i2, i1);
 return;
}

function __ZNSt3__18ios_base4initEPv(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 var i3 = 0;
 HEAP32[i2 + 24 >> 2] = i1;
 HEAP32[i2 + 16 >> 2] = (i1 | 0) == 0 & 1;
 HEAP32[i2 + 20 >> 2] = 0;
 HEAP32[i2 + 4 >> 2] = 4098;
 HEAP32[i2 + 12 >> 2] = 0;
 HEAP32[i2 + 8 >> 2] = 6;
 i3 = i2 + 28 | 0;
 i1 = i2 + 32 | 0;
 i2 = i1 + 40 | 0;
 do {
  HEAP32[i1 >> 2] = 0;
  i1 = i1 + 4 | 0;
 } while ((i1 | 0) < (i2 | 0));
 __ZNSt3__16localeC2Ev(i3);
 return;
}

function __ZNK4wasm7Literal3divERKS0_(i3, i2, i1) {
 i3 = i3 | 0;
 i2 = i2 | 0;
 i1 = i1 | 0;
 var d4 = 0.0;
 if ((HEAP32[i2 >> 2] | 0) == 3) {
  d4 = +__ZNK4wasm7Literal6getf32Ev(i2);
  d4 = d4 / +__ZNK4wasm7Literal6getf32Ev(i1);
  HEAPF32[i3 + 8 >> 2] = d4;
  i1 = 3;
 } else {
  d4 = +__ZNK4wasm7Literal6getf64Ev(i2);
  d4 = d4 / +__ZNK4wasm7Literal6getf64Ev(i1);
  HEAPF64[i3 + 8 >> 3] = d4;
  i1 = 4;
 }
 HEAP32[i3 >> 2] = i1;
 return;
}

function __ZNSt3__16vectorIPN4wasm10ExpressionENS_9allocatorIS3_EEE10deallocateEv(i4) {
 i4 = i4 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i5 = 0;
 i1 = HEAP32[i4 >> 2] | 0;
 if (i1 | 0) {
  i2 = i4 + 4 | 0;
  i3 = HEAP32[i2 >> 2] | 0;
  while (1) {
   if ((i3 | 0) == (i1 | 0)) break;
   i5 = i3 + -4 | 0;
   HEAP32[i2 >> 2] = i5;
   i3 = i5;
  }
  __ZdlPv(i1);
  HEAP32[i4 + 8 >> 2] = 0;
  HEAP32[i2 >> 2] = 0;
  HEAP32[i4 >> 2] = 0;
 }
 return;
}

function __ZN4wasm10WalkerPassINS_10PostWalkerINS_11MergeBlocksENS_7VisitorIS2_vEEEEE3runEPNS_10PassRunnerEPNS_6ModuleE(i3, i2, i1) {
 i3 = i3 | 0;
 i2 = i2 | 0;
 i1 = i1 | 0;
 FUNCTION_TABLE_viii[HEAP32[(HEAP32[i3 >> 2] | 0) + 8 >> 2] & 15](i3, i2, i1);
 __ZN4wasm6WalkerINS_11MergeBlocksENS_7VisitorIS1_vEEE9startWalkEPNS_6ModuleE(i3 + 16 | 0, i1);
 FUNCTION_TABLE_viii[HEAP32[(HEAP32[i3 >> 2] | 0) + 16 >> 2] & 15](i3, i2, i1);
 return;
}

function __ZNSt3__113__vector_baseIN4wasm6WalkerIZNS1_13ReorderLocals13visitFunctionEPNS1_8FunctionEE9ReIndexerNS1_7VisitorIS6_vEEE4TaskENS_9allocatorISA_EEED2Ev(i1) {
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i4 = 0;
 i3 = HEAP32[i1 >> 2] | 0;
 if (i3 | 0) {
  i1 = i1 + 4 | 0;
  i2 = HEAP32[i1 >> 2] | 0;
  while (1) {
   if ((i2 | 0) == (i3 | 0)) break;
   i4 = i2 + -8 | 0;
   HEAP32[i1 >> 2] = i4;
   i2 = i4;
  }
  __ZdlPv(i3);
 }
 return;
}

function _strcmp(i4, i2) {
 i4 = i4 | 0;
 i2 = i2 | 0;
 var i1 = 0, i3 = 0;
 i3 = HEAP8[i4 >> 0] | 0;
 i1 = HEAP8[i2 >> 0] | 0;
 if (i3 << 24 >> 24 == 0 ? 1 : i3 << 24 >> 24 != i1 << 24 >> 24) i2 = i3; else {
  do {
   i4 = i4 + 1 | 0;
   i2 = i2 + 1 | 0;
   i3 = HEAP8[i4 >> 0] | 0;
   i1 = HEAP8[i2 >> 0] | 0;
  } while (!(i3 << 24 >> 24 == 0 ? 1 : i3 << 24 >> 24 != i1 << 24 >> 24));
  i2 = i3;
 }
 return (i2 & 255) - (i1 & 255) | 0;
}

function __ZNSt3__1lsIcNS_11char_traitsIcEENS_9allocatorIcEEEERNS_13basic_ostreamIT_T0_EES9_RKNS_12basic_stringIS6_S7_T1_EE(i1, i2) {
 i1 = i1 | 0;
 i2 = i2 | 0;
 var i3 = 0, i4 = 0;
 i3 = HEAP8[i2 >> 0] | 0;
 i4 = (i3 & 1) == 0;
 return __ZNSt3__124__put_character_sequenceIcNS_11char_traitsIcEEEERNS_13basic_ostreamIT_T0_EES7_PKS4_j(i1, i4 ? i2 + 1 | 0 : HEAP32[i2 + 8 >> 2] | 0, i4 ? (i3 & 255) >>> 1 : HEAP32[i2 + 4 >> 2] | 0) | 0;
}

function __ZNSt3__16vectorIN4wasm8WasmTypeENS_9allocatorIS2_EEE10deallocateEv(i4) {
 i4 = i4 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i5 = 0;
 i1 = HEAP32[i4 >> 2] | 0;
 if (i1 | 0) {
  i2 = i4 + 4 | 0;
  i3 = HEAP32[i2 >> 2] | 0;
  while (1) {
   if ((i3 | 0) == (i1 | 0)) break;
   i5 = i3 + -4 | 0;
   HEAP32[i2 >> 2] = i5;
   i3 = i5;
  }
  __ZdlPv(i1);
  HEAP32[i4 + 8 >> 2] = 0;
  HEAP32[i2 >> 2] = 0;
  HEAP32[i4 >> 2] = 0;
 }
 return;
}

function __ZNSt3__16vectorIN4wasm8NameTypeENS_9allocatorIS2_EEE10deallocateEv(i4) {
 i4 = i4 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i5 = 0;
 i1 = HEAP32[i4 >> 2] | 0;
 if (i1 | 0) {
  i2 = i4 + 4 | 0;
  i3 = HEAP32[i2 >> 2] | 0;
  while (1) {
   if ((i3 | 0) == (i1 | 0)) break;
   i5 = i3 + -8 | 0;
   HEAP32[i2 >> 2] = i5;
   i3 = i5;
  }
  __ZdlPv(i1);
  HEAP32[i4 + 8 >> 2] = 0;
  HEAP32[i2 >> 2] = 0;
  HEAP32[i4 >> 2] = 0;
 }
 return;
}

function __ZNSt3__114__split_bufferINS_4pairIPN4wasm7ElementEPNS2_5BlockEEERNS_9allocatorIS7_EEEC2EjjSA_(i4, i2, i3, i1) {
 i4 = i4 | 0;
 i2 = i2 | 0;
 i3 = i3 | 0;
 i1 = i1 | 0;
 HEAP32[i4 + 12 >> 2] = 0;
 HEAP32[i4 + 16 >> 2] = i1;
 if (!i2) i1 = 0; else i1 = __Znwj(i2 << 3) | 0;
 HEAP32[i4 >> 2] = i1;
 i3 = i1 + (i3 << 3) | 0;
 HEAP32[i4 + 8 >> 2] = i3;
 HEAP32[i4 + 4 >> 2] = i3;
 HEAP32[i4 + 12 >> 2] = i1 + (i2 << 3);
 return;
}

function __ZNSt3__112__hash_tableIPKcN6cashew7IString11CStringHashENS4_12CStringEqualENS_9allocatorIS2_EEE16__construct_nodeERKS2_j(i3, i4, i2, i1) {
 i3 = i3 | 0;
 i4 = i4 | 0;
 i2 = i2 | 0;
 i1 = i1 | 0;
 var i5 = 0;
 i5 = __Znwj(12) | 0;
 HEAP32[i5 + 8 >> 2] = HEAP32[i2 >> 2];
 HEAP32[i5 + 4 >> 2] = i1;
 HEAP32[i5 >> 2] = 0;
 HEAP32[i3 >> 2] = i5;
 i3 = i3 + 4 | 0;
 HEAP32[i3 >> 2] = i4 + 8;
 HEAP32[i3 + 4 >> 2] = 1;
 return;
}

function __ZN4wasm14EffectAnalyzerC2EOS0_(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm6WalkerINS_14EffectAnalyzerENS_7VisitorIS1_vEEEC2EOS4_(i2, i1);
 HEAP16[i2 + 24 >> 1] = HEAP16[i1 + 24 >> 1] | 0;
 __ZNSt3__16__treeIjNS_4lessIjEENS_9allocatorIjEEEC2EOS5_(i2 + 28 | 0, i1 + 28 | 0);
 __ZNSt3__16__treeIjNS_4lessIjEENS_9allocatorIjEEEC2EOS5_(i2 + 40 | 0, i1 + 40 | 0);
 HEAP16[i2 + 52 >> 1] = HEAP16[i1 + 52 >> 1] | 0;
 return;
}

function __ZNSt3__114__split_bufferIN6cashew13OperatorClassERNS_9allocatorIS2_EEEC2EjjS5_(i4, i2, i3, i1) {
 i4 = i4 | 0;
 i2 = i2 | 0;
 i3 = i3 | 0;
 i1 = i1 | 0;
 HEAP32[i4 + 12 >> 2] = 0;
 HEAP32[i4 + 16 >> 2] = i1;
 if (!i2) i1 = 0; else i1 = __Znwj(i2 * 28 | 0) | 0;
 HEAP32[i4 >> 2] = i1;
 i3 = i1 + (i3 * 28 | 0) | 0;
 HEAP32[i4 + 8 >> 2] = i3;
 HEAP32[i4 + 4 >> 2] = i3;
 HEAP32[i4 + 12 >> 2] = i1 + (i2 * 28 | 0);
 return;
}

function __ZNSt3__114__split_bufferIN4wasm14SimplifyLocals10BlockBreakERNS_9allocatorIS3_EEEC2EjjS6_(i4, i2, i3, i1) {
 i4 = i4 | 0;
 i2 = i2 | 0;
 i3 = i3 | 0;
 i1 = i1 | 0;
 HEAP32[i4 + 12 >> 2] = 0;
 HEAP32[i4 + 16 >> 2] = i1;
 if (!i2) i1 = 0; else i1 = __Znwj(i2 << 4) | 0;
 HEAP32[i4 >> 2] = i1;
 i3 = i1 + (i3 << 4) | 0;
 HEAP32[i4 + 8 >> 2] = i3;
 HEAP32[i4 + 4 >> 2] = i3;
 HEAP32[i4 + 12 >> 2] = i1 + (i2 << 4);
 return;
}

function __ZNSt3__114__split_bufferIN4wasm6Memory7SegmentERNS_9allocatorIS3_EEEC2EjjS6_(i4, i2, i3, i1) {
 i4 = i4 | 0;
 i2 = i2 | 0;
 i3 = i3 | 0;
 i1 = i1 | 0;
 HEAP32[i4 + 12 >> 2] = 0;
 HEAP32[i4 + 16 >> 2] = i1;
 if (!i2) i1 = 0; else i1 = __Znwj(i2 * 12 | 0) | 0;
 HEAP32[i4 >> 2] = i1;
 i3 = i1 + (i3 * 12 | 0) | 0;
 HEAP32[i4 + 8 >> 2] = i3;
 HEAP32[i4 + 4 >> 2] = i3;
 HEAP32[i4 + 12 >> 2] = i1 + (i2 * 12 | 0);
 return;
}

function __ZN4wasm6Binary8finalizeEv(i3) {
 i3 = i3 | 0;
 var i1 = 0, i2 = 0;
 if ((HEAP32[i3 + 8 >> 2] | 0) > 18) HEAP32[i3 + 4 >> 2] = 1; else {
  i2 = HEAP32[(HEAP32[i3 + 12 >> 2] | 0) + 4 >> 2] | 0;
  i1 = HEAP32[(HEAP32[i3 + 16 >> 2] | 0) + 4 >> 2] | 0;
  if ((i2 | 0) != 5 ? !((i1 | 0) == 5 | (i2 | 0) == (i1 | 0)) : 0) ___assert_fail(14873, 14223, 1008, 14964);
  HEAP32[i3 + 4 >> 2] = (i2 | 0) != 5 ? i2 : i1;
 }
 return;
}

function __ZN4wasm4Name7fromIntEj(i1) {
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i4 = 0;
 i2 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i4 = i2 + 12 | 0;
 i3 = i2;
 __ZNSt3__19to_stringEj(i3, i1);
 __ZN6cashew7IStringC2EPKcb(i4, (HEAP8[i3 >> 0] & 1) == 0 ? i3 + 1 | 0 : HEAP32[i3 + 8 >> 2] | 0, 0);
 i1 = HEAP32[i4 >> 2] | 0;
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i3);
 STACKTOP = i2;
 return i1 | 0;
}

function __ZN4wasm10WalkerPassINS_10PostWalkerINS_6VacuumENS_7VisitorIS2_vEEEEE3runEPNS_10PassRunnerEPNS_6ModuleE(i3, i2, i1) {
 i3 = i3 | 0;
 i2 = i2 | 0;
 i1 = i1 | 0;
 FUNCTION_TABLE_viii[HEAP32[(HEAP32[i3 >> 2] | 0) + 8 >> 2] & 15](i3, i2, i1);
 __ZN4wasm6WalkerINS_6VacuumENS_7VisitorIS1_vEEE9startWalkEPNS_6ModuleE(i3 + 16 | 0, i1);
 FUNCTION_TABLE_viii[HEAP32[(HEAP32[i3 >> 2] | 0) + 16 >> 2] & 15](i3, i2, i1);
 return;
}

function __ZNSt3__114__split_bufferIN4wasm6WalkerINS1_17RemoveUnusedNamesENS1_7VisitorIS3_vEEE4TaskERNS_9allocatorIS7_EEED2Ev(i4) {
 i4 = i4 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i5 = 0;
 i1 = HEAP32[i4 + 4 >> 2] | 0;
 i2 = i4 + 8 | 0;
 i3 = HEAP32[i2 >> 2] | 0;
 while (1) {
  if ((i3 | 0) == (i1 | 0)) break;
  i5 = i3 + -8 | 0;
  HEAP32[i2 >> 2] = i5;
  i3 = i5;
 }
 i1 = HEAP32[i4 >> 2] | 0;
 if (i1 | 0) __ZdlPv(i1);
 return;
}

function __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC2ERKS5_(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 if (!(HEAP8[i1 >> 0] & 1)) {
  HEAP32[i2 >> 2] = HEAP32[i1 >> 2];
  HEAP32[i2 + 4 >> 2] = HEAP32[i1 + 4 >> 2];
  HEAP32[i2 + 8 >> 2] = HEAP32[i1 + 8 >> 2];
 } else __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6__initEPKcj(i2, HEAP32[i1 + 8 >> 2] | 0, HEAP32[i1 + 4 >> 2] | 0);
 return;
}

function __ZN10MixedArena5clearEv(i3) {
 i3 = i3 | 0;
 var i1 = 0, i2 = 0, i4 = 0;
 i4 = i3 + 4 | 0;
 i1 = HEAP32[i4 >> 2] | 0;
 i2 = HEAP32[i3 >> 2] | 0;
 while (1) {
  if ((i2 | 0) == (i1 | 0)) break;
  __ZdaPv(HEAP32[i2 >> 2] | 0);
  i2 = i2 + 4 | 0;
 }
 i1 = HEAP32[i3 >> 2] | 0;
 i2 = HEAP32[i4 >> 2] | 0;
 while (1) {
  if ((i2 | 0) == (i1 | 0)) break;
  i3 = i2 + -4 | 0;
  HEAP32[i4 >> 2] = i3;
  i2 = i3;
 }
 return;
}

function __ZZN4wasm6WalkerINS_13ReorderLocalsENS_7VisitorIS1_vEEE9startWalkEPNS_6ModuleEENKUlPS1_PNS_8FunctionEE_clES7_S9_(i3, i2, i1) {
 i3 = i3 | 0;
 i2 = i2 | 0;
 i1 = i1 | 0;
 i3 = i2 + 32 | 0;
 HEAP32[i3 >> 2] = i1;
 __ZN4wasm6WalkerINS_13ReorderLocalsENS_7VisitorIS1_vEEE4walkERPNS_10ExpressionE(i2 + 16 | 0, i1 + 36 | 0);
 __ZN4wasm13ReorderLocals13visitFunctionEPNS_8FunctionE(i2, i1);
 HEAP32[i3 >> 2] = 0;
 return;
}

function __ZNSt3__16__treeINS_12__value_typeIjjEENS_19__map_value_compareIjS2_NS_4lessIjEELb1EEENS_9allocatorIS2_EEE5clearEv(i1) {
 i1 = i1 | 0;
 var i2 = 0;
 i2 = i1 + 4 | 0;
 __ZNSt3__16__treeINS_12__value_typeIjjEENS_19__map_value_compareIjS2_NS_4lessIjEELb1EEENS_9allocatorIS2_EEE7destroyEPNS_11__tree_nodeIS2_PvEE(i1, HEAP32[i2 >> 2] | 0);
 HEAP32[i1 + 8 >> 2] = 0;
 HEAP32[i1 >> 2] = i2;
 HEAP32[i2 >> 2] = 0;
 return;
}

function __ZNSt3__114__split_bufferIN4wasm6WalkerINS1_15SetLocalRemoverENS1_7VisitorIS3_vEEE4TaskERNS_9allocatorIS7_EEED2Ev(i4) {
 i4 = i4 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i5 = 0;
 i1 = HEAP32[i4 + 4 >> 2] | 0;
 i2 = i4 + 8 | 0;
 i3 = HEAP32[i2 >> 2] | 0;
 while (1) {
  if ((i3 | 0) == (i1 | 0)) break;
  i5 = i3 + -8 | 0;
  HEAP32[i2 >> 2] = i5;
  i3 = i5;
 }
 i1 = HEAP32[i4 >> 2] | 0;
 if (i1 | 0) __ZdlPv(i1);
 return;
}

function __ZNSt3__114__split_bufferIN4wasm6WalkerINS1_15RemoveUnusedBrsENS1_7VisitorIS3_vEEE4TaskERNS_9allocatorIS7_EEED2Ev(i4) {
 i4 = i4 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i5 = 0;
 i1 = HEAP32[i4 + 4 >> 2] | 0;
 i2 = i4 + 8 | 0;
 i3 = HEAP32[i2 >> 2] | 0;
 while (1) {
  if ((i3 | 0) == (i1 | 0)) break;
  i5 = i3 + -8 | 0;
  HEAP32[i2 >> 2] = i5;
  i3 = i5;
 }
 i1 = HEAP32[i4 >> 2] | 0;
 if (i1 | 0) __ZdlPv(i1);
 return;
}

function __ZNSt3__114__split_bufferIN4wasm6WalkerINS1_15GetLocalCounterENS1_7VisitorIS3_vEEE4TaskERNS_9allocatorIS7_EEED2Ev(i4) {
 i4 = i4 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i5 = 0;
 i1 = HEAP32[i4 + 4 >> 2] | 0;
 i2 = i4 + 8 | 0;
 i3 = HEAP32[i2 >> 2] | 0;
 while (1) {
  if ((i3 | 0) == (i1 | 0)) break;
  i5 = i3 + -8 | 0;
  HEAP32[i2 >> 2] = i5;
  i3 = i5;
 }
 i1 = HEAP32[i4 >> 2] | 0;
 if (i1 | 0) __ZdlPv(i1);
 return;
}

function __ZNSt3__114__split_bufferIN4wasm6WalkerINS1_14SimplifyLocalsENS1_7VisitorIS3_vEEE4TaskERNS_9allocatorIS7_EEED2Ev(i4) {
 i4 = i4 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i5 = 0;
 i1 = HEAP32[i4 + 4 >> 2] | 0;
 i2 = i4 + 8 | 0;
 i3 = HEAP32[i2 >> 2] | 0;
 while (1) {
  if ((i3 | 0) == (i1 | 0)) break;
  i5 = i3 + -8 | 0;
  HEAP32[i2 >> 2] = i5;
  i3 = i5;
 }
 i1 = HEAP32[i4 >> 2] | 0;
 if (i1 | 0) __ZdlPv(i1);
 return;
}

function __ZNSt3__114__split_bufferIN4wasm6WalkerINS1_14PostEmscriptenENS1_7VisitorIS3_vEEE4TaskERNS_9allocatorIS7_EEED2Ev(i4) {
 i4 = i4 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i5 = 0;
 i1 = HEAP32[i4 + 4 >> 2] | 0;
 i2 = i4 + 8 | 0;
 i3 = HEAP32[i2 >> 2] | 0;
 while (1) {
  if ((i3 | 0) == (i1 | 0)) break;
  i5 = i3 + -8 | 0;
  HEAP32[i2 >> 2] = i5;
  i3 = i5;
 }
 i1 = HEAP32[i4 >> 2] | 0;
 if (i1 | 0) __ZdlPv(i1);
 return;
}

function __ZNSt3__114__split_bufferIN4wasm6WalkerINS1_14EffectAnalyzerENS1_7VisitorIS3_vEEE4TaskERNS_9allocatorIS7_EEED2Ev(i4) {
 i4 = i4 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i5 = 0;
 i1 = HEAP32[i4 + 4 >> 2] | 0;
 i2 = i4 + 8 | 0;
 i3 = HEAP32[i2 >> 2] | 0;
 while (1) {
  if ((i3 | 0) == (i1 | 0)) break;
  i5 = i3 + -8 | 0;
  HEAP32[i2 >> 2] = i5;
  i3 = i5;
 }
 i1 = HEAP32[i4 >> 2] | 0;
 if (i1 | 0) __ZdlPv(i1);
 return;
}

function __ZNSt3__114__split_bufferIN4wasm6WalkerINS1_13ReorderLocalsENS1_7VisitorIS3_vEEE4TaskERNS_9allocatorIS7_EEED2Ev(i4) {
 i4 = i4 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i5 = 0;
 i1 = HEAP32[i4 + 4 >> 2] | 0;
 i2 = i4 + 8 | 0;
 i3 = HEAP32[i2 >> 2] | 0;
 while (1) {
  if ((i3 | 0) == (i1 | 0)) break;
  i5 = i3 + -8 | 0;
  HEAP32[i2 >> 2] = i5;
  i3 = i5;
 }
 i1 = HEAP32[i4 >> 2] | 0;
 if (i1 | 0) __ZdlPv(i1);
 return;
}

function __ZNKSt3__16__treeIjNS_4lessIjEENS_9allocatorIjEEE14__count_uniqueIjEEjRKT_(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 var i3 = 0;
 i3 = HEAP32[i1 >> 2] | 0;
 i1 = i2 + 4 | 0;
 while (1) {
  i1 = HEAP32[i1 >> 2] | 0;
  if (!i1) {
   i1 = 0;
   break;
  }
  i2 = HEAP32[i1 + 16 >> 2] | 0;
  if (i3 >>> 0 < i2 >>> 0) continue;
  if (i2 >>> 0 >= i3 >>> 0) {
   i1 = 1;
   break;
  }
  i1 = i1 + 4 | 0;
 }
 return i1 | 0;
}

function __ZNKSt3__17codecvtIwc11__mbstate_tE11do_encodingEv(i1) {
 i1 = i1 | 0;
 var i2 = 0, i3 = 0;
 i1 = i1 + 8 | 0;
 i2 = _uselocale(HEAP32[i1 >> 2] | 0) | 0;
 i3 = _mbtowc(0, 0, 4) | 0;
 if (i2 | 0) _uselocale(i2) | 0;
 if (!i3) {
  i1 = HEAP32[i1 >> 2] | 0;
  if (i1) {
   i1 = _uselocale(i1) | 0;
   if (!i1) i1 = 0; else {
    _uselocale(i1) | 0;
    i1 = 0;
   }
  } else i1 = 1;
 } else i1 = -1;
 return i1 | 0;
}

function __ZN4wasm22SExpressionWasmBuilderC2ERNS_6ModuleERNS_7ElementE(i2, i3, i1) {
 i2 = i2 | 0;
 i3 = i3 | 0;
 i1 = i1 | 0;
 var i4 = 0, i5 = 0;
 i4 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i5 = i4;
 HEAP32[i5 + 16 >> 2] = i5;
 HEAP32[i5 >> 2] = 3136;
 __ZN4wasm22SExpressionWasmBuilderC2ERNS_6ModuleERNS_7ElementENSt3__18functionIFvvEEE(i2, i3, i1, i5);
 __ZNSt3__18functionIFvvEED2Ev(i5);
 STACKTOP = i4;
 return;
}

function __ZNSt3__114__split_bufferIN4wasm6WalkerINS1_11MergeBlocksENS1_7VisitorIS3_vEEE4TaskERNS_9allocatorIS7_EEED2Ev(i4) {
 i4 = i4 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i5 = 0;
 i1 = HEAP32[i4 + 4 >> 2] | 0;
 i2 = i4 + 8 | 0;
 i3 = HEAP32[i2 >> 2] | 0;
 while (1) {
  if ((i3 | 0) == (i1 | 0)) break;
  i5 = i3 + -8 | 0;
  HEAP32[i2 >> 2] = i5;
  i3 = i5;
 }
 i1 = HEAP32[i4 >> 2] | 0;
 if (i1 | 0) __ZdlPv(i1);
 return;
}

function __ZNSt3__114__split_bufferIN4wasm6WalkerINS1_11BreakSeekerENS1_7VisitorIS3_vEEE4TaskERNS_9allocatorIS7_EEED2Ev(i4) {
 i4 = i4 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i5 = 0;
 i1 = HEAP32[i4 + 4 >> 2] | 0;
 i2 = i4 + 8 | 0;
 i3 = HEAP32[i2 >> 2] | 0;
 while (1) {
  if ((i3 | 0) == (i1 | 0)) break;
  i5 = i3 + -8 | 0;
  HEAP32[i2 >> 2] = i5;
  i3 = i5;
 }
 i1 = HEAP32[i4 >> 2] | 0;
 if (i1 | 0) __ZdlPv(i1);
 return;
}

function __ZZN4wasm13ReorderLocals13visitFunctionEPNS_8FunctionEEN9ReIndexer13visitSetLocalEPNS_8SetLocalE(i3, i1) {
 i3 = i3 | 0;
 i1 = i1 | 0;
 var i2 = 0, i4 = 0;
 i4 = HEAP32[i3 + 24 >> 2] | 0;
 i1 = i1 + 8 | 0;
 i2 = HEAP32[i1 >> 2] | 0;
 if ((HEAP32[i4 + 12 >> 2] | 0) - (HEAP32[i4 + 8 >> 2] | 0) >> 2 >>> 0 <= i2 >>> 0) HEAP32[i1 >> 2] = HEAP32[(HEAP32[HEAP32[i3 + 28 >> 2] >> 2] | 0) + (i2 << 2) >> 2];
 return;
}

function __ZZN4wasm13ReorderLocals13visitFunctionEPNS_8FunctionEEN9ReIndexer13visitGetLocalEPNS_8GetLocalE(i3, i1) {
 i3 = i3 | 0;
 i1 = i1 | 0;
 var i2 = 0, i4 = 0;
 i4 = HEAP32[i3 + 24 >> 2] | 0;
 i1 = i1 + 8 | 0;
 i2 = HEAP32[i1 >> 2] | 0;
 if ((HEAP32[i4 + 12 >> 2] | 0) - (HEAP32[i4 + 8 >> 2] | 0) >> 2 >>> 0 <= i2 >>> 0) HEAP32[i1 >> 2] = HEAP32[(HEAP32[HEAP32[i3 + 28 >> 2] >> 2] | 0) + (i2 << 2) >> 2];
 return;
}

function __ZN4wasm10PassRunnerD2Ev(i1) {
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i4 = 0;
 i4 = i1 + 4 | 0;
 i1 = HEAP32[i1 + 8 >> 2] | 0;
 i3 = HEAP32[i4 >> 2] | 0;
 while (1) {
  if ((i3 | 0) == (i1 | 0)) break;
  i2 = HEAP32[i3 >> 2] | 0;
  if (i2 | 0) FUNCTION_TABLE_vi[HEAP32[(HEAP32[i2 >> 2] | 0) + 4 >> 2] & 255](i2);
  i3 = i3 + 4 | 0;
 }
 __ZNSt3__113__vector_baseIPN4wasm4PassENS_9allocatorIS3_EEED2Ev(i4);
 return;
}

function __ZNSt3__114__split_bufferIPN4wasm12FunctionTypeERNS_9allocatorIS3_EEEC2EjjS6_(i4, i2, i3, i1) {
 i4 = i4 | 0;
 i2 = i2 | 0;
 i3 = i3 | 0;
 i1 = i1 | 0;
 HEAP32[i4 + 12 >> 2] = 0;
 HEAP32[i4 + 16 >> 2] = i1;
 if (!i2) i1 = 0; else i1 = __Znwj(i2 << 2) | 0;
 HEAP32[i4 >> 2] = i1;
 i3 = i1 + (i3 << 2) | 0;
 HEAP32[i4 + 8 >> 2] = i3;
 HEAP32[i4 + 4 >> 2] = i3;
 HEAP32[i4 + 12 >> 2] = i1 + (i2 << 2);
 return;
}

function __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEaSERKS5_(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 var i3 = 0, i4 = 0;
 if ((i2 | 0) != (i1 | 0)) {
  i3 = HEAP8[i1 >> 0] | 0;
  i4 = (i3 & 1) == 0;
  __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6assignEPKcj(i2, i4 ? i1 + 1 | 0 : HEAP32[i1 + 8 >> 2] | 0, i4 ? (i3 & 255) >>> 1 : HEAP32[i1 + 4 >> 2] | 0) | 0;
 }
 return i2 | 0;
}

function __ZNSt3__114__split_bufferIPN4wasm10ExpressionERNS_9allocatorIS3_EEEC2EjjS6_(i4, i2, i3, i1) {
 i4 = i4 | 0;
 i2 = i2 | 0;
 i3 = i3 | 0;
 i1 = i1 | 0;
 HEAP32[i4 + 12 >> 2] = 0;
 HEAP32[i4 + 16 >> 2] = i1;
 if (!i2) i1 = 0; else i1 = __Znwj(i2 << 2) | 0;
 HEAP32[i4 >> 2] = i1;
 i3 = i1 + (i3 << 2) | 0;
 HEAP32[i4 + 8 >> 2] = i3;
 HEAP32[i4 + 4 >> 2] = i3;
 HEAP32[i4 + 12 >> 2] = i1 + (i2 << 2);
 return;
}

function __ZNSt3__114__split_bufferIN4wasm6WalkerINS1_6VacuumENS1_7VisitorIS3_vEEE4TaskERNS_9allocatorIS7_EEED2Ev(i4) {
 i4 = i4 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i5 = 0;
 i1 = HEAP32[i4 + 4 >> 2] | 0;
 i2 = i4 + 8 | 0;
 i3 = HEAP32[i2 >> 2] | 0;
 while (1) {
  if ((i3 | 0) == (i1 | 0)) break;
  i5 = i3 + -8 | 0;
  HEAP32[i2 >> 2] = i5;
  i3 = i5;
 }
 i1 = HEAP32[i4 >> 2] | 0;
 if (i1 | 0) __ZdlPv(i1);
 return;
}

function __ZNKSt3__15ctypeIwE11do_scan_notEtPKwS3_(i2, i4, i1, i3) {
 i2 = i2 | 0;
 i4 = i4 | 0;
 i1 = i1 | 0;
 i3 = i3 | 0;
 var i5 = 0;
 while (1) {
  if ((i1 | 0) == (i3 | 0)) {
   i1 = i3;
   break;
  }
  i2 = HEAP32[i1 >> 2] | 0;
  if (i2 >>> 0 >= 128) break;
  i5 = ___ctype_b_loc() | 0;
  if (!((HEAP16[(HEAP32[i5 >> 2] | 0) + (i2 << 1) >> 1] & i4) << 16 >> 16)) break;
  i1 = i1 + 4 | 0;
 }
 return i1 | 0;
}

function __ZNSt3__18ios_base16__call_callbacksENS0_5eventE(i5, i3) {
 i5 = i5 | 0;
 i3 = i3 | 0;
 var i1 = 0, i2 = 0, i4 = 0, i6 = 0;
 i1 = i5 + 32 | 0;
 i2 = i5 + 36 | 0;
 i4 = HEAP32[i5 + 40 >> 2] | 0;
 while (1) {
  if (!i4) break;
  i6 = i4 + -1 | 0;
  FUNCTION_TABLE_viii[HEAP32[(HEAP32[i1 >> 2] | 0) + (i6 << 2) >> 2] & 15](i3, i5, HEAP32[(HEAP32[i2 >> 2] | 0) + (i6 << 2) >> 2] | 0);
  i4 = i6;
 }
 return;
}

function __ZNSt3__113unordered_mapIN6cashew7IStringEiNS_4hashIS2_EENS_8equal_toIS2_EENS_9allocatorINS_4pairIKS2_iEEEEE25__construct_node_with_keyERS9_(i2, i3, i1) {
 i2 = i2 | 0;
 i3 = i3 | 0;
 i1 = i1 | 0;
 var i4 = 0;
 i4 = __Znwj(16) | 0;
 HEAP32[i4 + 8 >> 2] = HEAP32[i1 >> 2];
 HEAP32[i4 + 12 >> 2] = 0;
 HEAP32[i2 >> 2] = i4;
 i2 = i2 + 4 | 0;
 HEAP32[i2 >> 2] = i3 + 8;
 HEAP32[i2 + 4 >> 2] = 257;
 return;
}

function __ZNSt3__114__split_bufferIPN4wasm8FunctionERNS_9allocatorIS3_EEEC2EjjS6_(i4, i2, i3, i1) {
 i4 = i4 | 0;
 i2 = i2 | 0;
 i3 = i3 | 0;
 i1 = i1 | 0;
 HEAP32[i4 + 12 >> 2] = 0;
 HEAP32[i4 + 16 >> 2] = i1;
 if (!i2) i1 = 0; else i1 = __Znwj(i2 << 2) | 0;
 HEAP32[i4 >> 2] = i1;
 i3 = i1 + (i3 << 2) | 0;
 HEAP32[i4 + 8 >> 2] = i3;
 HEAP32[i4 + 4 >> 2] = i3;
 HEAP32[i4 + 12 >> 2] = i1 + (i2 << 2);
 return;
}

function __ZNSt3__114__split_bufferIPN4wasm7ElementERNS_9allocatorIS3_EEEC2EjjS6_(i4, i2, i3, i1) {
 i4 = i4 | 0;
 i2 = i2 | 0;
 i3 = i3 | 0;
 i1 = i1 | 0;
 HEAP32[i4 + 12 >> 2] = 0;
 HEAP32[i4 + 16 >> 2] = i1;
 if (!i2) i1 = 0; else i1 = __Znwj(i2 << 2) | 0;
 HEAP32[i4 >> 2] = i1;
 i3 = i1 + (i3 << 2) | 0;
 HEAP32[i4 + 8 >> 2] = i3;
 HEAP32[i4 + 4 >> 2] = i3;
 HEAP32[i4 + 12 >> 2] = i1 + (i2 << 2);
 return;
}

function __ZNSt3__114__split_bufferIN4wasm8WasmTypeERNS_9allocatorIS2_EEEC2EjjS5_(i4, i2, i3, i1) {
 i4 = i4 | 0;
 i2 = i2 | 0;
 i3 = i3 | 0;
 i1 = i1 | 0;
 HEAP32[i4 + 12 >> 2] = 0;
 HEAP32[i4 + 16 >> 2] = i1;
 if (!i2) i1 = 0; else i1 = __Znwj(i2 << 2) | 0;
 HEAP32[i4 >> 2] = i1;
 i3 = i1 + (i3 << 2) | 0;
 HEAP32[i4 + 8 >> 2] = i3;
 HEAP32[i4 + 4 >> 2] = i3;
 HEAP32[i4 + 12 >> 2] = i1 + (i2 << 2);
 return;
}

function __ZNSt3__114__split_bufferIN4wasm8NameTypeERNS_9allocatorIS2_EEEC2EjjS5_(i4, i2, i3, i1) {
 i4 = i4 | 0;
 i2 = i2 | 0;
 i3 = i3 | 0;
 i1 = i1 | 0;
 HEAP32[i4 + 12 >> 2] = 0;
 HEAP32[i4 + 16 >> 2] = i1;
 if (!i2) i1 = 0; else i1 = __Znwj(i2 << 3) | 0;
 HEAP32[i4 >> 2] = i1;
 i3 = i1 + (i3 << 3) | 0;
 HEAP32[i4 + 8 >> 2] = i3;
 HEAP32[i4 + 4 >> 2] = i3;
 HEAP32[i4 + 12 >> 2] = i1 + (i2 << 3);
 return;
}

function __ZNSt3__114__split_bufferIPN4wasm6ImportERNS_9allocatorIS3_EEEC2EjjS6_(i4, i2, i3, i1) {
 i4 = i4 | 0;
 i2 = i2 | 0;
 i3 = i3 | 0;
 i1 = i1 | 0;
 HEAP32[i4 + 12 >> 2] = 0;
 HEAP32[i4 + 16 >> 2] = i1;
 if (!i2) i1 = 0; else i1 = __Znwj(i2 << 2) | 0;
 HEAP32[i4 >> 2] = i1;
 i3 = i1 + (i3 << 2) | 0;
 HEAP32[i4 + 8 >> 2] = i3;
 HEAP32[i4 + 4 >> 2] = i3;
 HEAP32[i4 + 12 >> 2] = i1 + (i2 << 2);
 return;
}

function __ZNSt3__114__split_bufferIPN4wasm6ExportERNS_9allocatorIS3_EEEC2EjjS6_(i4, i2, i3, i1) {
 i4 = i4 | 0;
 i2 = i2 | 0;
 i3 = i3 | 0;
 i1 = i1 | 0;
 HEAP32[i4 + 12 >> 2] = 0;
 HEAP32[i4 + 16 >> 2] = i1;
 if (!i2) i1 = 0; else i1 = __Znwj(i2 << 2) | 0;
 HEAP32[i4 >> 2] = i1;
 i3 = i1 + (i3 << 2) | 0;
 HEAP32[i4 + 8 >> 2] = i3;
 HEAP32[i4 + 4 >> 2] = i3;
 HEAP32[i4 + 12 >> 2] = i1 + (i2 << 2);
 return;
}

function __ZNSt3__114__split_bufferIN4wasm7LiteralERNS_9allocatorIS2_EEEC2EjjS5_(i4, i2, i3, i1) {
 i4 = i4 | 0;
 i2 = i2 | 0;
 i3 = i3 | 0;
 i1 = i1 | 0;
 HEAP32[i4 + 12 >> 2] = 0;
 HEAP32[i4 + 16 >> 2] = i1;
 if (!i2) i1 = 0; else i1 = __Znwj(i2 << 4) | 0;
 HEAP32[i4 >> 2] = i1;
 i3 = i1 + (i3 << 4) | 0;
 HEAP32[i4 + 8 >> 2] = i3;
 HEAP32[i4 + 4 >> 2] = i3;
 HEAP32[i4 + 12 >> 2] = i1 + (i2 << 4);
 return;
}

function __ZNSt3__114__split_bufferIPN4wasm5BreakERNS_9allocatorIS3_EEEC2EjjS6_(i4, i2, i3, i1) {
 i4 = i4 | 0;
 i2 = i2 | 0;
 i3 = i3 | 0;
 i1 = i1 | 0;
 HEAP32[i4 + 12 >> 2] = 0;
 HEAP32[i4 + 16 >> 2] = i1;
 if (!i2) i1 = 0; else i1 = __Znwj(i2 << 2) | 0;
 HEAP32[i4 >> 2] = i1;
 i3 = i1 + (i3 << 2) | 0;
 HEAP32[i4 + 8 >> 2] = i3;
 HEAP32[i4 + 4 >> 2] = i3;
 HEAP32[i4 + 12 >> 2] = i1 + (i2 << 2);
 return;
}

function __ZNSt3__114__split_bufferIPN4wasm5BlockERNS_9allocatorIS3_EEEC2EjjS6_(i4, i2, i3, i1) {
 i4 = i4 | 0;
 i2 = i2 | 0;
 i3 = i3 | 0;
 i1 = i1 | 0;
 HEAP32[i4 + 12 >> 2] = 0;
 HEAP32[i4 + 16 >> 2] = i1;
 if (!i2) i1 = 0; else i1 = __Znwj(i2 << 2) | 0;
 HEAP32[i4 >> 2] = i1;
 i3 = i1 + (i3 << 2) | 0;
 HEAP32[i4 + 8 >> 2] = i3;
 HEAP32[i4 + 4 >> 2] = i3;
 HEAP32[i4 + 12 >> 2] = i1 + (i2 << 2);
 return;
}

function __ZNSt3__18functionIFN4wasm15ThreadWorkStateEvEEaSERKS4_(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 var i3 = 0, i4 = 0;
 i3 = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 i4 = i3;
 __ZNSt3__18functionIFN4wasm15ThreadWorkStateEvEEC2ERKS4_(i4, i1);
 __ZNSt3__18functionIFN4wasm15ThreadWorkStateEvEE4swapERS4_(i4, i2);
 __ZNSt3__18functionIFN4wasm15ThreadWorkStateEvEED2Ev(i4);
 STACKTOP = i3;
 return i2 | 0;
}

function __ZNSt3__16chrono12steady_clock3nowEv() {
 var i1 = 0, i2 = 0, i3 = 0;
 i2 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i1 = i2;
 _clock_gettime(1, i1 | 0) | 0;
 i3 = HEAP32[i1 >> 2] | 0;
 i1 = HEAP32[i1 + 4 >> 2] | 0;
 i3 = ___muldi3(i3 | 0, ((i3 | 0) < 0) << 31 >> 31 | 0, 1e9, 0) | 0;
 i1 = _i64Add(i3 | 0, tempRet0 | 0, i1 | 0, ((i1 | 0) < 0) << 31 >> 31 | 0) | 0;
 STACKTOP = i2;
 return i1 | 0;
}

function __ZNSt3__114__split_bufferIPN4wasm4PassERNS_9allocatorIS3_EEEC2EjjS6_(i4, i2, i3, i1) {
 i4 = i4 | 0;
 i2 = i2 | 0;
 i3 = i3 | 0;
 i1 = i1 | 0;
 HEAP32[i4 + 12 >> 2] = 0;
 HEAP32[i4 + 16 >> 2] = i1;
 if (!i2) i1 = 0; else i1 = __Znwj(i2 << 2) | 0;
 HEAP32[i4 >> 2] = i1;
 i3 = i1 + (i3 << 2) | 0;
 HEAP32[i4 + 8 >> 2] = i3;
 HEAP32[i4 + 4 >> 2] = i3;
 HEAP32[i4 + 12 >> 2] = i1 + (i2 << 2);
 return;
}

function __ZNSt3__114__split_bufferIN4wasm4NameERNS_9allocatorIS2_EEEC2EjjS5_(i4, i2, i3, i1) {
 i4 = i4 | 0;
 i2 = i2 | 0;
 i3 = i3 | 0;
 i1 = i1 | 0;
 HEAP32[i4 + 12 >> 2] = 0;
 HEAP32[i4 + 16 >> 2] = i1;
 if (!i2) i1 = 0; else i1 = __Znwj(i2 << 2) | 0;
 HEAP32[i4 >> 2] = i1;
 i3 = i1 + (i3 << 2) | 0;
 HEAP32[i4 + 8 >> 2] = i3;
 HEAP32[i4 + 4 >> 2] = i3;
 HEAP32[i4 + 12 >> 2] = i1 + (i2 << 2);
 return;
}

function ___muldsi3(i1, i2) {
 i1 = i1 | 0;
 i2 = i2 | 0;
 var i3 = 0, i4 = 0, i5 = 0, i6 = 0;
 i6 = i1 & 65535;
 i5 = i2 & 65535;
 i3 = Math_imul(i5, i6) | 0;
 i4 = i1 >>> 16;
 i1 = (i3 >>> 16) + (Math_imul(i5, i4) | 0) | 0;
 i5 = i2 >>> 16;
 i2 = Math_imul(i5, i6) | 0;
 return (tempRet0 = (i1 >>> 16) + (Math_imul(i5, i4) | 0) + (((i1 & 65535) + i2 | 0) >>> 16) | 0, i1 + i2 << 16 | i3 & 65535 | 0) | 0;
}

function __ZNSt3__114__split_bufferIPN4wasm2IfERNS_9allocatorIS3_EEEC2EjjS6_(i4, i2, i3, i1) {
 i4 = i4 | 0;
 i2 = i2 | 0;
 i3 = i3 | 0;
 i1 = i1 | 0;
 HEAP32[i4 + 12 >> 2] = 0;
 HEAP32[i4 + 16 >> 2] = i1;
 if (!i2) i1 = 0; else i1 = __Znwj(i2 << 2) | 0;
 HEAP32[i4 >> 2] = i1;
 i3 = i1 + (i3 << 2) | 0;
 HEAP32[i4 + 8 >> 2] = i3;
 HEAP32[i4 + 4 >> 2] = i3;
 HEAP32[i4 + 12 >> 2] = i1 + (i2 << 2);
 return;
}

function __ZN4wasm16PrintSExpression9decIndentEv(i1) {
 i1 = i1 | 0;
 var i2 = 0, i3 = 0;
 if (!(HEAP8[i1 + 8 >> 0] | 0)) {
  i3 = i1 + 4 | 0;
  i2 = (HEAP32[i3 >> 2] | 0) + -1 | 0;
  HEAP32[i3 >> 2] = i2;
  __Z8doIndentRNSt3__113basic_ostreamIcNS_11char_traitsIcEEEEj(HEAP32[i1 >> 2] | 0, i2) | 0;
 }
 __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_c(HEAP32[i1 >> 2] | 0, 41) | 0;
 return;
}

function __ZNSt3__16__treeIjNS_4lessIjEENS_9allocatorIjEEE7destroyEPNS_11__tree_nodeIjPvEE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 if (!i1) return; else {
  __ZNSt3__16__treeIjNS_4lessIjEENS_9allocatorIjEEE7destroyEPNS_11__tree_nodeIjPvEE(i2, HEAP32[i1 >> 2] | 0);
  __ZNSt3__16__treeIjNS_4lessIjEENS_9allocatorIjEEE7destroyEPNS_11__tree_nodeIjPvEE(i2, HEAP32[i1 + 4 >> 2] | 0);
  __ZdlPv(i1);
  return;
 }
}

function __ZNKSt3__15ctypeIwE9do_narrowEPKwS3_cPc(i1, i6, i5, i4, i2) {
 i1 = i1 | 0;
 i6 = i6 | 0;
 i5 = i5 | 0;
 i4 = i4 | 0;
 i2 = i2 | 0;
 var i3 = 0, i7 = 0;
 i3 = (i5 - i6 | 0) >>> 2;
 i1 = i2;
 i2 = i6;
 while (1) {
  if ((i2 | 0) == (i5 | 0)) break;
  i7 = HEAP32[i2 >> 2] | 0;
  HEAP8[i1 >> 0] = i7 >>> 0 < 128 ? i7 & 255 : i4;
  i1 = i1 + 1 | 0;
  i2 = i2 + 4 | 0;
 }
 return i6 + (i3 << 2) | 0;
}

function __ZNKSt3__15ctypeIcE10do_toupperEPcPKc(i2, i1, i3) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 i3 = i3 | 0;
 var i4 = 0;
 i2 = i1;
 while (1) {
  if ((i2 | 0) == (i3 | 0)) break;
  i1 = HEAP8[i2 >> 0] | 0;
  if (i1 << 24 >> 24 > -1) {
   i4 = ___ctype_toupper_loc() | 0;
   i1 = HEAP32[(HEAP32[i4 >> 2] | 0) + (i1 << 24 >> 24 << 2) >> 2] & 255;
  }
  HEAP8[i2 >> 0] = i1;
  i2 = i2 + 1 | 0;
 }
 return i3 | 0;
}

function __ZNKSt3__15ctypeIcE10do_tolowerEPcPKc(i2, i1, i3) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 i3 = i3 | 0;
 var i4 = 0;
 i2 = i1;
 while (1) {
  if ((i2 | 0) == (i3 | 0)) break;
  i1 = HEAP8[i2 >> 0] | 0;
  if (i1 << 24 >> 24 > -1) {
   i4 = ___ctype_tolower_loc() | 0;
   i1 = HEAP32[(HEAP32[i4 >> 2] | 0) + (i1 << 24 >> 24 << 2) >> 2] & 255;
  }
  HEAP8[i2 >> 0] = i1;
  i2 = i2 + 1 | 0;
 }
 return i3 | 0;
}

function __ZNSt3__112_GLOBAL__N_130throw_from_string_out_of_rangeERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEE(i1) {
 i1 = i1 | 0;
 var i2 = 0;
 i2 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 __ZNSt3__1plIcNS_11char_traitsIcEENS_9allocatorIcEEEENS_12basic_stringIT_T0_T1_EERKS9_PKS6_(i2, i1, 29763);
 _puts((HEAP8[i2 >> 0] & 1) == 0 ? i2 + 1 | 0 : HEAP32[i2 + 8 >> 2] | 0) | 0;
 _abort();
}

function __ZNSt3__113basic_ostreamIwNS_11char_traitsIwEEE6sentryC2ERS3_(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 HEAP8[i2 >> 0] = 0;
 HEAP32[i2 + 4 >> 2] = i1;
 i1 = i1 + (HEAP32[(HEAP32[i1 >> 2] | 0) + -12 >> 2] | 0) | 0;
 if (!(HEAP32[i1 + 16 >> 2] | 0)) {
  i1 = HEAP32[i1 + 72 >> 2] | 0;
  if (i1 | 0) __ZNSt3__113basic_ostreamIwNS_11char_traitsIwEEE5flushEv(i1) | 0;
  HEAP8[i2 >> 0] = 1;
 }
 return;
}

function __ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEE6sentryC2ERS3_(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 HEAP8[i2 >> 0] = 0;
 HEAP32[i2 + 4 >> 2] = i1;
 i1 = i1 + (HEAP32[(HEAP32[i1 >> 2] | 0) + -12 >> 2] | 0) | 0;
 if (!(HEAP32[i1 + 16 >> 2] | 0)) {
  i1 = HEAP32[i1 + 72 >> 2] | 0;
  if (i1 | 0) __ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEE5flushEv(i1) | 0;
  HEAP8[i2 >> 0] = 1;
 }
 return;
}

function __ZNSt3__112_GLOBAL__N_129throw_from_string_invalid_argERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEE(i1) {
 i1 = i1 | 0;
 var i2 = 0;
 i2 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 __ZNSt3__1plIcNS_11char_traitsIcEENS_9allocatorIcEEEENS_12basic_stringIT_T0_T1_EERKS9_PKS6_(i2, i1, 29778);
 _puts((HEAP8[i2 >> 0] & 1) == 0 ? i2 + 1 | 0 : HEAP32[i2 + 8 >> 2] | 0) | 0;
 _abort();
}

function _rint(d1) {
 d1 = +d1;
 var i2 = 0, i3 = 0;
 HEAPF64[tempDoublePtr >> 3] = d1;
 i2 = HEAP32[tempDoublePtr + 4 >> 2] | 0;
 i3 = i2 & 2146435072;
 if (!(i3 >>> 0 > 1126170624 | (i3 | 0) == 1126170624 & 0 > 0)) {
  i2 = (i2 | 0) < 0;
  d1 = i2 ? d1 + -4503599627370496.0 + 4503599627370496.0 : d1 + 4503599627370496.0 + -4503599627370496.0;
  if (d1 == 0.0) d1 = i2 ? -0.0 : 0.0;
 }
 return +d1;
}

function __ZNSt3__13mapIN4wasm4NameEPNS1_12FunctionTypeENS_4lessIS2_EENS_9allocatorINS_4pairIKS2_S4_EEEEE25__construct_node_with_keyERS9_(i2, i3, i1) {
 i2 = i2 | 0;
 i3 = i3 | 0;
 i1 = i1 | 0;
 var i4 = 0;
 i4 = __Znwj(24) | 0;
 HEAP32[i4 + 16 >> 2] = HEAP32[i1 >> 2];
 HEAP32[i4 + 20 >> 2] = 0;
 HEAP32[i2 >> 2] = i4;
 i2 = i2 + 4 | 0;
 HEAP32[i2 >> 2] = i3 + 4;
 HEAP32[i2 + 4 >> 2] = 257;
 return;
}

function __ZNSt3__114__split_bufferINS_4pairIPN4wasm7ElementEPNS2_5BlockEEERNS_9allocatorIS7_EEED2Ev(i4) {
 i4 = i4 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i5 = 0;
 i1 = HEAP32[i4 + 4 >> 2] | 0;
 i2 = i4 + 8 | 0;
 i3 = HEAP32[i2 >> 2] | 0;
 while (1) {
  if ((i3 | 0) == (i1 | 0)) break;
  i5 = i3 + -8 | 0;
  HEAP32[i2 >> 2] = i5;
  i3 = i5;
 }
 i1 = HEAP32[i4 >> 2] | 0;
 if (i1 | 0) __ZdlPv(i1);
 return;
}

function __ZNKSt3__15ctypeIwE10do_scan_isEtPKwS3_(i2, i4, i1, i3) {
 i2 = i2 | 0;
 i4 = i4 | 0;
 i1 = i1 | 0;
 i3 = i3 | 0;
 var i5 = 0;
 while (1) {
  if ((i1 | 0) == (i3 | 0)) {
   i1 = i3;
   break;
  }
  i2 = HEAP32[i1 >> 2] | 0;
  if (i2 >>> 0 < 128 ? (i5 = ___ctype_b_loc() | 0, (HEAP16[(HEAP32[i5 >> 2] | 0) + (i2 << 1) >> 1] & i4) << 16 >> 16) : 0) break;
  i1 = i1 + 4 | 0;
 }
 return i1 | 0;
}

function __ZNSt3__113__vector_baseIN4wasm6WalkerINS1_17RemoveUnusedNamesENS1_7VisitorIS3_vEEE4TaskENS_9allocatorIS7_EEED2Ev(i1) {
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i4 = 0;
 i3 = HEAP32[i1 >> 2] | 0;
 if (i3 | 0) {
  i1 = i1 + 4 | 0;
  i2 = HEAP32[i1 >> 2] | 0;
  while (1) {
   if ((i2 | 0) == (i3 | 0)) break;
   i4 = i2 + -8 | 0;
   HEAP32[i1 >> 2] = i4;
   i2 = i4;
  }
  __ZdlPv(i3);
 }
 return;
}

function __ZN4wasm15RemoveUnusedBrs7visitIfEPNS_2IfE(i4, i3) {
 i4 = i4 | 0;
 i3 = i3 | 0;
 var i1 = 0, i2 = 0;
 if (((HEAP32[i3 + 16 >> 2] | 0) == 0 ? (i1 = HEAP32[i3 + 12 >> 2] | 0, !((i1 | 0) == 0 | (HEAP32[i1 >> 2] | 0) != 4)) : 0) ? (i2 = i1 + 16 | 0, (HEAP32[i2 >> 2] | 0) == 0) : 0) {
  HEAP32[i2 >> 2] = HEAP32[i3 + 8 >> 2];
  HEAP32[i4 + 16 >> 2] = i1;
  HEAP8[i4 + 40 >> 0] = 1;
 }
 return;
}

function _fwrite(i2, i5, i1, i3) {
 i2 = i2 | 0;
 i5 = i5 | 0;
 i1 = i1 | 0;
 i3 = i3 | 0;
 var i4 = 0, i6 = 0;
 i4 = Math_imul(i1, i5) | 0;
 if ((HEAP32[i3 + 76 >> 2] | 0) > -1) {
  i6 = (___lockfile(i3) | 0) == 0;
  i2 = ___fwritex(i2, i4, i3) | 0;
  if (!i6) ___unlockfile(i3);
 } else i2 = ___fwritex(i2, i4, i3) | 0;
 if ((i2 | 0) != (i4 | 0)) i1 = (i2 >>> 0) / (i5 >>> 0) | 0;
 return i1 | 0;
}

function __ZNSt3__113__vector_baseIN4wasm6WalkerINS1_15SetLocalRemoverENS1_7VisitorIS3_vEEE4TaskENS_9allocatorIS7_EEED2Ev(i1) {
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i4 = 0;
 i3 = HEAP32[i1 >> 2] | 0;
 if (i3 | 0) {
  i1 = i1 + 4 | 0;
  i2 = HEAP32[i1 >> 2] | 0;
  while (1) {
   if ((i2 | 0) == (i3 | 0)) break;
   i4 = i2 + -8 | 0;
   HEAP32[i1 >> 2] = i4;
   i2 = i4;
  }
  __ZdlPv(i3);
 }
 return;
}

function __ZNSt3__113__vector_baseIN4wasm6WalkerINS1_15RemoveUnusedBrsENS1_7VisitorIS3_vEEE4TaskENS_9allocatorIS7_EEED2Ev(i1) {
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i4 = 0;
 i3 = HEAP32[i1 >> 2] | 0;
 if (i3 | 0) {
  i1 = i1 + 4 | 0;
  i2 = HEAP32[i1 >> 2] | 0;
  while (1) {
   if ((i2 | 0) == (i3 | 0)) break;
   i4 = i2 + -8 | 0;
   HEAP32[i1 >> 2] = i4;
   i2 = i4;
  }
  __ZdlPv(i3);
 }
 return;
}

function __ZNSt3__113__vector_baseIN4wasm6WalkerINS1_15GetLocalCounterENS1_7VisitorIS3_vEEE4TaskENS_9allocatorIS7_EEED2Ev(i1) {
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i4 = 0;
 i3 = HEAP32[i1 >> 2] | 0;
 if (i3 | 0) {
  i1 = i1 + 4 | 0;
  i2 = HEAP32[i1 >> 2] | 0;
  while (1) {
   if ((i2 | 0) == (i3 | 0)) break;
   i4 = i2 + -8 | 0;
   HEAP32[i1 >> 2] = i4;
   i2 = i4;
  }
  __ZdlPv(i3);
 }
 return;
}

function __ZNSt3__114__thread_proxyINS_5tupleIJPFvPvEPN4wasm6ThreadEEEEEES2_S2_(i1) {
 i1 = i1 | 0;
 var i2 = 0, i3 = 0;
 i3 = __ZNSt3__119__thread_local_dataEv() | 0;
 i2 = __Znwj(4) | 0;
 __ZNSt3__115__thread_structC2Ev(i2);
 __ZNSt3__121__thread_specific_ptrINS_15__thread_structEE5resetEPS1_(i3, i2);
 FUNCTION_TABLE_vi[HEAP32[i1 >> 2] & 255](HEAP32[i1 + 4 >> 2] | 0);
 __ZdlPv(i1);
 return 0;
}

function __ZNSt3__114__split_bufferIPcRNS_9allocatorIS1_EEEC2EjjS4_(i4, i2, i3, i1) {
 i4 = i4 | 0;
 i2 = i2 | 0;
 i3 = i3 | 0;
 i1 = i1 | 0;
 HEAP32[i4 + 12 >> 2] = 0;
 HEAP32[i4 + 16 >> 2] = i1;
 if (!i2) i1 = 0; else i1 = __Znwj(i2 << 2) | 0;
 HEAP32[i4 >> 2] = i1;
 i3 = i1 + (i3 << 2) | 0;
 HEAP32[i4 + 8 >> 2] = i3;
 HEAP32[i4 + 4 >> 2] = i3;
 HEAP32[i4 + 12 >> 2] = i1 + (i2 << 2);
 return;
}

function __ZNSt3__113__vector_baseIN4wasm6WalkerINS1_14SimplifyLocalsENS1_7VisitorIS3_vEEE4TaskENS_9allocatorIS7_EEED2Ev(i1) {
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i4 = 0;
 i3 = HEAP32[i1 >> 2] | 0;
 if (i3 | 0) {
  i1 = i1 + 4 | 0;
  i2 = HEAP32[i1 >> 2] | 0;
  while (1) {
   if ((i2 | 0) == (i3 | 0)) break;
   i4 = i2 + -8 | 0;
   HEAP32[i1 >> 2] = i4;
   i2 = i4;
  }
  __ZdlPv(i3);
 }
 return;
}

function __ZNSt3__113__vector_baseIN4wasm6WalkerINS1_14PostEmscriptenENS1_7VisitorIS3_vEEE4TaskENS_9allocatorIS7_EEED2Ev(i1) {
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i4 = 0;
 i3 = HEAP32[i1 >> 2] | 0;
 if (i3 | 0) {
  i1 = i1 + 4 | 0;
  i2 = HEAP32[i1 >> 2] | 0;
  while (1) {
   if ((i2 | 0) == (i3 | 0)) break;
   i4 = i2 + -8 | 0;
   HEAP32[i1 >> 2] = i4;
   i2 = i4;
  }
  __ZdlPv(i3);
 }
 return;
}

function __ZNSt3__113__vector_baseIN4wasm6WalkerINS1_14EffectAnalyzerENS1_7VisitorIS3_vEEE4TaskENS_9allocatorIS7_EEED2Ev(i1) {
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i4 = 0;
 i3 = HEAP32[i1 >> 2] | 0;
 if (i3 | 0) {
  i1 = i1 + 4 | 0;
  i2 = HEAP32[i1 >> 2] | 0;
  while (1) {
   if ((i2 | 0) == (i3 | 0)) break;
   i4 = i2 + -8 | 0;
   HEAP32[i1 >> 2] = i4;
   i2 = i4;
  }
  __ZdlPv(i3);
 }
 return;
}

function __ZNSt3__13mapIN4wasm4NameEPNS1_8FunctionENS_4lessIS2_EENS_9allocatorINS_4pairIKS2_S4_EEEEE25__construct_node_with_keyERS9_(i2, i3, i1) {
 i2 = i2 | 0;
 i3 = i3 | 0;
 i1 = i1 | 0;
 var i4 = 0;
 i4 = __Znwj(24) | 0;
 HEAP32[i4 + 16 >> 2] = HEAP32[i1 >> 2];
 HEAP32[i4 + 20 >> 2] = 0;
 HEAP32[i2 >> 2] = i4;
 i2 = i2 + 4 | 0;
 HEAP32[i2 >> 2] = i3 + 4;
 HEAP32[i2 + 4 >> 2] = 257;
 return;
}

function __ZNSt3__118basic_stringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i1, i2) {
 i1 = i1 | 0;
 i2 = i2 | 0;
 var i3 = 0;
 i3 = HEAP32[i2 >> 2] | 0;
 HEAP32[i1 >> 2] = i3;
 HEAP32[i1 + (HEAP32[i3 + -12 >> 2] | 0) >> 2] = HEAP32[i2 + 32 >> 2];
 HEAP32[i1 + 8 >> 2] = HEAP32[i2 + 36 >> 2];
 __ZNSt3__115basic_stringbufIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i1 + 12 | 0);
 return;
}

function __ZNSt3__113__vector_baseIN4wasm6WalkerINS1_13ReorderLocalsENS1_7VisitorIS3_vEEE4TaskENS_9allocatorIS7_EEED2Ev(i1) {
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i4 = 0;
 i3 = HEAP32[i1 >> 2] | 0;
 if (i3 | 0) {
  i1 = i1 + 4 | 0;
  i2 = HEAP32[i1 >> 2] | 0;
  while (1) {
   if ((i2 | 0) == (i3 | 0)) break;
   i4 = i2 + -8 | 0;
   HEAP32[i1 >> 2] = i4;
   i2 = i4;
  }
  __ZdlPv(i3);
 }
 return;
}

function __ZNSt3__13mapIN4wasm4NameENS1_8WasmTypeENS_4lessIS2_EENS_9allocatorINS_4pairIKS2_S3_EEEEE25__construct_node_with_keyERS8_(i2, i3, i1) {
 i2 = i2 | 0;
 i3 = i3 | 0;
 i1 = i1 | 0;
 var i4 = 0;
 i4 = __Znwj(24) | 0;
 HEAP32[i4 + 16 >> 2] = HEAP32[i1 >> 2];
 HEAP32[i4 + 20 >> 2] = 0;
 HEAP32[i2 >> 2] = i4;
 i2 = i2 + 4 | 0;
 HEAP32[i2 >> 2] = i3 + 4;
 HEAP32[i2 + 4 >> 2] = 257;
 return;
}

function __ZNSt3__16__treeINS_12__value_typeIjN4wasm14SimplifyLocals12SinkableInfoEEENS_19__map_value_compareIjS5_NS_4lessIjEELb1EEENS_9allocatorIS5_EEED2Ev(i1) {
 i1 = i1 | 0;
 __ZNSt3__16__treeINS_12__value_typeIjN4wasm14SimplifyLocals12SinkableInfoEEENS_19__map_value_compareIjS5_NS_4lessIjEELb1EEENS_9allocatorIS5_EEE7destroyEPNS_11__tree_nodeIS5_PvEE(i1, HEAP32[i1 + 4 >> 2] | 0);
 return;
}

function __ZNSt3__13mapIN4wasm4NameEPNS1_6ImportENS_4lessIS2_EENS_9allocatorINS_4pairIKS2_S4_EEEEE25__construct_node_with_keyERS9_(i2, i3, i1) {
 i2 = i2 | 0;
 i3 = i3 | 0;
 i1 = i1 | 0;
 var i4 = 0;
 i4 = __Znwj(24) | 0;
 HEAP32[i4 + 16 >> 2] = HEAP32[i1 >> 2];
 HEAP32[i4 + 20 >> 2] = 0;
 HEAP32[i2 >> 2] = i4;
 i2 = i2 + 4 | 0;
 HEAP32[i2 >> 2] = i3 + 4;
 HEAP32[i2 + 4 >> 2] = 257;
 return;
}

function __ZNSt3__13mapIN4wasm4NameEPNS1_6ExportENS_4lessIS2_EENS_9allocatorINS_4pairIKS2_S4_EEEEE25__construct_node_with_keyERS9_(i2, i3, i1) {
 i2 = i2 | 0;
 i3 = i3 | 0;
 i1 = i1 | 0;
 var i4 = 0;
 i4 = __Znwj(24) | 0;
 HEAP32[i4 + 16 >> 2] = HEAP32[i1 >> 2];
 HEAP32[i4 + 20 >> 2] = 0;
 HEAP32[i2 >> 2] = i4;
 i2 = i2 + 4 | 0;
 HEAP32[i2 >> 2] = i3 + 4;
 HEAP32[i2 + 4 >> 2] = 257;
 return;
}

function __ZNSt3__114__split_bufferIjRNS_9allocatorIjEEEC2EjjS3_(i4, i2, i3, i1) {
 i4 = i4 | 0;
 i2 = i2 | 0;
 i3 = i3 | 0;
 i1 = i1 | 0;
 HEAP32[i4 + 12 >> 2] = 0;
 HEAP32[i4 + 16 >> 2] = i1;
 if (!i2) i1 = 0; else i1 = __Znwj(i2 << 2) | 0;
 HEAP32[i4 >> 2] = i1;
 i3 = i1 + (i3 << 2) | 0;
 HEAP32[i4 + 8 >> 2] = i3;
 HEAP32[i4 + 4 >> 2] = i3;
 HEAP32[i4 + 12 >> 2] = i1 + (i2 << 2);
 return;
}

function __ZNSt3__114__split_bufferIiRNS_9allocatorIiEEEC2EjjS3_(i4, i2, i3, i1) {
 i4 = i4 | 0;
 i2 = i2 | 0;
 i3 = i3 | 0;
 i1 = i1 | 0;
 HEAP32[i4 + 12 >> 2] = 0;
 HEAP32[i4 + 16 >> 2] = i1;
 if (!i2) i1 = 0; else i1 = __Znwj(i2 << 2) | 0;
 HEAP32[i4 >> 2] = i1;
 i3 = i1 + (i3 << 2) | 0;
 HEAP32[i4 + 8 >> 2] = i3;
 HEAP32[i4 + 4 >> 2] = i3;
 HEAP32[i4 + 12 >> 2] = i1 + (i2 << 2);
 return;
}

function __ZNSt3__113__vector_baseIN4wasm6WalkerINS1_11MergeBlocksENS1_7VisitorIS3_vEEE4TaskENS_9allocatorIS7_EEED2Ev(i1) {
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i4 = 0;
 i3 = HEAP32[i1 >> 2] | 0;
 if (i3 | 0) {
  i1 = i1 + 4 | 0;
  i2 = HEAP32[i1 >> 2] | 0;
  while (1) {
   if ((i2 | 0) == (i3 | 0)) break;
   i4 = i2 + -8 | 0;
   HEAP32[i1 >> 2] = i4;
   i2 = i4;
  }
  __ZdlPv(i3);
 }
 return;
}

function __ZNSt3__113__vector_baseIN4wasm6WalkerINS1_11BreakSeekerENS1_7VisitorIS3_vEEE4TaskENS_9allocatorIS7_EEED2Ev(i1) {
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i4 = 0;
 i3 = HEAP32[i1 >> 2] | 0;
 if (i3 | 0) {
  i1 = i1 + 4 | 0;
  i2 = HEAP32[i1 >> 2] | 0;
  while (1) {
   if ((i2 | 0) == (i3 | 0)) break;
   i4 = i2 + -8 | 0;
   HEAP32[i1 >> 2] = i4;
   i2 = i4;
  }
  __ZdlPv(i3);
 }
 return;
}

function __ZNSt3__113__vector_baseINS_4pairIPNS_18condition_variableEPNS_5mutexEEENS_18__hidden_allocatorIS6_EEED2Ev(i1) {
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i4 = 0;
 i3 = HEAP32[i1 >> 2] | 0;
 if (i3 | 0) {
  i1 = i1 + 4 | 0;
  i2 = HEAP32[i1 >> 2] | 0;
  while (1) {
   if ((i2 | 0) == (i3 | 0)) break;
   i4 = i2 + -8 | 0;
   HEAP32[i1 >> 2] = i4;
   i2 = i4;
  }
  __ZdlPv(i3);
 }
 return;
}

function _newlocale(i2, i3, i1) {
 i2 = i2 | 0;
 i3 = i3 | 0;
 i1 = i1 | 0;
 var i4 = 0;
 if (((HEAP8[i3 >> 0] | 0) != 0 ? (_strcmp(i3, 30481) | 0) != 0 : 0) ? (_strcmp(i3, 29223) | 0) != 0 : 0) i1 = 0; else i4 = 4;
 do if ((i4 | 0) == 4) if (!i1) if (!(HEAP32[9185] | 0)) {
  HEAP32[9185] = 1;
  i1 = 36744;
  break;
 } else {
  i1 = _calloc(1, 4) | 0;
  break;
 } while (0);
 return i1 | 0;
}

function _copysign(d1, d2) {
 d1 = +d1;
 d2 = +d2;
 var i3 = 0;
 HEAPF64[tempDoublePtr >> 3] = d2;
 i3 = HEAP32[tempDoublePtr + 4 >> 2] | 0;
 d2 = +Math_abs(+d1);
 HEAPF64[tempDoublePtr >> 3] = d2;
 i3 = i3 & -2147483648 | HEAP32[tempDoublePtr + 4 >> 2];
 HEAP32[tempDoublePtr >> 2] = HEAP32[tempDoublePtr >> 2];
 HEAP32[tempDoublePtr + 4 >> 2] = i3;
 return +(+HEAPF64[tempDoublePtr >> 3]);
}

function __ZNSt3__16__treeINS_12__value_typeIN6cashew7IStringEN4wasm7LiteralEEENS_19__map_value_compareIS3_S6_NS_4lessIS3_EELb1EEENS_9allocatorIS6_EEED2Ev(i1) {
 i1 = i1 | 0;
 __ZNSt3__16__treeINS_12__value_typeIN6cashew7IStringEN4wasm7LiteralEEENS_19__map_value_compareIS3_S6_NS_4lessIS3_EELb1EEENS_9allocatorIS6_EEE7destroyEPNS_11__tree_nodeIS6_PvEE(i1, HEAP32[i1 + 4 >> 2] | 0);
 return;
}

function __ZNSt3__16__treeINS_12__value_typeIN4wasm4NameEPNS2_12FunctionTypeEEENS_19__map_value_compareIS3_S6_NS_4lessIS3_EELb1EEENS_9allocatorIS6_EEED2Ev(i1) {
 i1 = i1 | 0;
 __ZNSt3__16__treeINS_12__value_typeIN4wasm4NameEPNS2_12FunctionTypeEEENS_19__map_value_compareIS3_S6_NS_4lessIS3_EELb1EEENS_9allocatorIS6_EEE7destroyEPNS_11__tree_nodeIS6_PvEE(i1, HEAP32[i1 + 4 >> 2] | 0);
 return;
}

function __ZNSt3__112__hash_tableIN6cashew7IStringENS_4hashIS2_EENS_8equal_toIS2_EENS_9allocatorIS2_EEED2Ev(i2) {
 i2 = i2 | 0;
 var i1 = 0;
 __ZNSt3__112__hash_tableIN6cashew7IStringENS_4hashIS2_EENS_8equal_toIS2_EENS_9allocatorIS2_EEE12__deallocateEPNS_11__hash_nodeIS2_PvEE(i2, HEAP32[i2 + 8 >> 2] | 0);
 i1 = HEAP32[i2 >> 2] | 0;
 HEAP32[i2 >> 2] = 0;
 if (i1 | 0) __ZdlPv(i1);
 return;
}

function __ZNSt3__18functionIFN4wasm15ThreadWorkStateEvEEaSEDn(i3, i1) {
 i3 = i3 | 0;
 i1 = i1 | 0;
 var i2 = 0;
 i1 = i3 + 16 | 0;
 i2 = HEAP32[i1 >> 2] | 0;
 if ((i2 | 0) != (i3 | 0)) {
  if (i2 | 0) FUNCTION_TABLE_vi[HEAP32[(HEAP32[i2 >> 2] | 0) + 20 >> 2] & 255](i2);
 } else FUNCTION_TABLE_vi[HEAP32[(HEAP32[i2 >> 2] | 0) + 16 >> 2] & 255](i2);
 HEAP32[i1 >> 2] = 0;
 return i3 | 0;
}

function __ZNSt3__113__vector_baseIN4wasm6WalkerINS1_6VacuumENS1_7VisitorIS3_vEEE4TaskENS_9allocatorIS7_EEED2Ev(i1) {
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i4 = 0;
 i3 = HEAP32[i1 >> 2] | 0;
 if (i3 | 0) {
  i1 = i1 + 4 | 0;
  i2 = HEAP32[i1 >> 2] | 0;
  while (1) {
   if ((i2 | 0) == (i3 | 0)) break;
   i4 = i2 + -8 | 0;
   HEAP32[i1 >> 2] = i4;
   i2 = i4;
  }
  __ZdlPv(i3);
 }
 return;
}

function __ZN4wasm22ShellExternalInterface4trapEPKc(i1, i2) {
 i1 = i1 | 0;
 i2 = i2 | 0;
 __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(__ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(__ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(37420, 15727) | 0, i2) | 0, 15734) | 0;
 ___cxa_throw(___cxa_allocate_exception(1) | 0, 128, 0);
}

function __ZNSt3__114__split_bufferIN4wasm6Memory7SegmentERNS_9allocatorIS3_EEED2Ev(i4) {
 i4 = i4 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i5 = 0;
 i1 = HEAP32[i4 + 4 >> 2] | 0;
 i2 = i4 + 8 | 0;
 i3 = HEAP32[i2 >> 2] | 0;
 while (1) {
  if ((i3 | 0) == (i1 | 0)) break;
  i5 = i3 + -12 | 0;
  HEAP32[i2 >> 2] = i5;
  i3 = i5;
 }
 i1 = HEAP32[i4 >> 2] | 0;
 if (i1 | 0) __ZdlPv(i1);
 return;
}

function __ZN4wasm13printWasmTypeENS_8WasmTypeE(i2) {
 i2 = i2 | 0;
 var i1 = 0;
 switch (i2 | 0) {
 case 0:
  {
   i1 = 15545;
   break;
  }
 case 1:
  {
   i1 = 18657;
   break;
  }
 case 2:
  {
   i1 = 18653;
   break;
  }
 case 3:
  {
   i1 = 18570;
   break;
  }
 case 4:
  {
   i1 = 18566;
   break;
  }
 case 5:
  {
   i1 = 18868;
   break;
  }
 default:
  {}
 }
 return i1 | 0;
}

function __ZNSt3__114__split_bufferIPN4wasm12FunctionTypeERNS_9allocatorIS3_EEED2Ev(i4) {
 i4 = i4 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i5 = 0;
 i1 = HEAP32[i4 + 4 >> 2] | 0;
 i2 = i4 + 8 | 0;
 i3 = HEAP32[i2 >> 2] | 0;
 while (1) {
  if ((i3 | 0) == (i1 | 0)) break;
  i5 = i3 + -4 | 0;
  HEAP32[i2 >> 2] = i5;
  i3 = i5;
 }
 i1 = HEAP32[i4 >> 2] | 0;
 if (i1 | 0) __ZdlPv(i1);
 return;
}

function __ZNSt3__112__hash_tableINS_17__hash_value_typeIN6cashew7IStringEiEENS_22__unordered_map_hasherIS3_S4_NS_4hashIS3_EELb1EEENS_21__unordered_map_equalIS3_S4_NS_8equal_toIS3_EELb1EEENS_9allocatorIS4_EEE12__deallocateEPNS_11__hash_nodeIS4_PvEE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 while (1) {
  if (!i1) break;
  i2 = HEAP32[i1 >> 2] | 0;
  __ZdlPv(i1);
  i1 = i2;
 }
 return;
}

function __ZNK10__cxxabiv117__class_type_info16search_above_dstEPNS_19__dynamic_cast_infoEPKvS4_ib(i5, i3, i2, i1, i4, i6) {
 i5 = i5 | 0;
 i3 = i3 | 0;
 i2 = i2 | 0;
 i1 = i1 | 0;
 i4 = i4 | 0;
 i6 = i6 | 0;
 if ((i5 | 0) == (HEAP32[i3 + 8 >> 2] | 0)) __ZNK10__cxxabiv117__class_type_info29process_static_type_above_dstEPNS_19__dynamic_cast_infoEPKvS4_i(0, i3, i2, i1, i4);
 return;
}

function __ZNSt3__114__split_bufferIPN4wasm10ExpressionERNS_9allocatorIS3_EEED2Ev(i4) {
 i4 = i4 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i5 = 0;
 i1 = HEAP32[i4 + 4 >> 2] | 0;
 i2 = i4 + 8 | 0;
 i3 = HEAP32[i2 >> 2] | 0;
 while (1) {
  if ((i3 | 0) == (i1 | 0)) break;
  i5 = i3 + -4 | 0;
  HEAP32[i2 >> 2] = i5;
  i3 = i5;
 }
 i1 = HEAP32[i4 >> 2] | 0;
 if (i1 | 0) __ZdlPv(i1);
 return;
}

function _memmove(i1, i4, i2) {
 i1 = i1 | 0;
 i4 = i4 | 0;
 i2 = i2 | 0;
 var i3 = 0;
 if ((i4 | 0) < (i1 | 0) & (i1 | 0) < (i4 + i2 | 0)) {
  i3 = i1;
  i4 = i4 + i2 | 0;
  i1 = i1 + i2 | 0;
  while ((i2 | 0) > 0) {
   i1 = i1 - 1 | 0;
   i4 = i4 - 1 | 0;
   i2 = i2 - 1 | 0;
   HEAP8[i1 >> 0] = HEAP8[i4 >> 0] | 0;
  }
  i1 = i3;
 } else _memcpy(i1, i4, i2) | 0;
 return i1 | 0;
}

function __ZNSt3__112__snprintf_lEPcjP15__locale_structPKcz(i5, i4, i1, i3, i2) {
 i5 = i5 | 0;
 i4 = i4 | 0;
 i1 = i1 | 0;
 i3 = i3 | 0;
 i2 = i2 | 0;
 var i6 = 0, i7 = 0;
 i6 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i7 = i6;
 HEAP32[i7 >> 2] = i2;
 i2 = _uselocale(i1) | 0;
 i1 = _vsnprintf(i5, i4, i3, i7) | 0;
 if (i2 | 0) _uselocale(i2) | 0;
 STACKTOP = i6;
 return i1 | 0;
}

function __ZNSt3__16__treeINS_12__value_typeIN4wasm4NameEPNS2_8FunctionEEENS_19__map_value_compareIS3_S6_NS_4lessIS3_EELb1EEENS_9allocatorIS6_EEED2Ev(i1) {
 i1 = i1 | 0;
 __ZNSt3__16__treeINS_12__value_typeIN4wasm4NameEPNS2_8FunctionEEENS_19__map_value_compareIS3_S6_NS_4lessIS3_EELb1EEENS_9allocatorIS6_EEE7destroyEPNS_11__tree_nodeIS6_PvEE(i1, HEAP32[i1 + 4 >> 2] | 0);
 return;
}

function __ZNSt3__13mapIN4wasm4NameEjNS_4lessIS2_EENS_9allocatorINS_4pairIKS2_jEEEEE25__construct_node_with_keyERS7_(i2, i3, i1) {
 i2 = i2 | 0;
 i3 = i3 | 0;
 i1 = i1 | 0;
 var i4 = 0;
 i4 = __Znwj(24) | 0;
 HEAP32[i4 + 16 >> 2] = HEAP32[i1 >> 2];
 HEAP32[i4 + 20 >> 2] = 0;
 HEAP32[i2 >> 2] = i4;
 i2 = i2 + 4 | 0;
 HEAP32[i2 >> 2] = i3 + 4;
 HEAP32[i2 + 4 >> 2] = 257;
 return;
}

function __ZZN4wasm12RegisterPassINS_14PostEmscriptenEEC1EPKcS4_ENKUlvE_clEv(i1) {
 i1 = i1 | 0;
 var i2 = 0, i3 = 0;
 i1 = __Znwj(40) | 0;
 i2 = i1;
 i3 = i2 + 40 | 0;
 do {
  HEAP32[i2 >> 2] = 0;
  i2 = i2 + 4 | 0;
 } while ((i2 | 0) < (i3 | 0));
 __ZN4wasm10WalkerPassINS_10PostWalkerINS_14PostEmscriptenENS_7VisitorIS2_vEEEEEC2Ev(i1);
 HEAP32[i1 >> 2] = 4228;
 return i1 | 0;
}

function __ZNSt3__114__split_bufferIPN4wasm8FunctionERNS_9allocatorIS3_EEED2Ev(i4) {
 i4 = i4 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i5 = 0;
 i1 = HEAP32[i4 + 4 >> 2] | 0;
 i2 = i4 + 8 | 0;
 i3 = HEAP32[i2 >> 2] | 0;
 while (1) {
  if ((i3 | 0) == (i1 | 0)) break;
  i5 = i3 + -4 | 0;
  HEAP32[i2 >> 2] = i5;
  i3 = i5;
 }
 i1 = HEAP32[i4 >> 2] | 0;
 if (i1 | 0) __ZdlPv(i1);
 return;
}

function __ZNSt3__111__stdoutbufIwE5imbueERKNS_6localeE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 FUNCTION_TABLE_ii[HEAP32[(HEAP32[i2 >> 2] | 0) + 24 >> 2] & 127](i2) | 0;
 i1 = __ZNKSt3__16locale9use_facetERNS0_2idE(i1, 40176) | 0;
 HEAP32[i2 + 36 >> 2] = i1;
 i1 = (FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 28 >> 2] & 127](i1) | 0) & 1;
 HEAP8[i2 + 44 >> 0] = i1;
 return;
}

function __ZNSt3__111__stdoutbufIcE5imbueERKNS_6localeE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 FUNCTION_TABLE_ii[HEAP32[(HEAP32[i2 >> 2] | 0) + 24 >> 2] & 127](i2) | 0;
 i1 = __ZNKSt3__16locale9use_facetERNS0_2idE(i1, 40168) | 0;
 HEAP32[i2 + 36 >> 2] = i1;
 i1 = (FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 28 >> 2] & 127](i1) | 0) & 1;
 HEAP8[i2 + 44 >> 0] = i1;
 return;
}

function __ZNSt3__16__treeINS_12__value_typeIN4wasm4NameENS2_8WasmTypeEEENS_19__map_value_compareIS3_S5_NS_4lessIS3_EELb1EEENS_9allocatorIS5_EEED2Ev(i1) {
 i1 = i1 | 0;
 __ZNSt3__16__treeINS_12__value_typeIN4wasm4NameENS2_8WasmTypeEEENS_19__map_value_compareIS3_S5_NS_4lessIS3_EELb1EEENS_9allocatorIS5_EEE7destroyEPNS_11__tree_nodeIS5_PvEE(i1, HEAP32[i1 + 4 >> 2] | 0);
 return;
}

function __ZNSt3__114__split_bufferIPN4wasm7ElementERNS_9allocatorIS3_EEED2Ev(i4) {
 i4 = i4 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i5 = 0;
 i1 = HEAP32[i4 + 4 >> 2] | 0;
 i2 = i4 + 8 | 0;
 i3 = HEAP32[i2 >> 2] | 0;
 while (1) {
  if ((i3 | 0) == (i1 | 0)) break;
  i5 = i3 + -4 | 0;
  HEAP32[i2 >> 2] = i5;
  i3 = i5;
 }
 i1 = HEAP32[i4 >> 2] | 0;
 if (i1 | 0) __ZdlPv(i1);
 return;
}

function __ZNSt3__114__split_bufferIN4wasm8WasmTypeERNS_9allocatorIS2_EEED2Ev(i4) {
 i4 = i4 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i5 = 0;
 i1 = HEAP32[i4 + 4 >> 2] | 0;
 i2 = i4 + 8 | 0;
 i3 = HEAP32[i2 >> 2] | 0;
 while (1) {
  if ((i3 | 0) == (i1 | 0)) break;
  i5 = i3 + -4 | 0;
  HEAP32[i2 >> 2] = i5;
  i3 = i5;
 }
 i1 = HEAP32[i4 >> 2] | 0;
 if (i1 | 0) __ZdlPv(i1);
 return;
}

function __ZNSt3__114__split_bufferIN4wasm8NameTypeERNS_9allocatorIS2_EEED2Ev(i4) {
 i4 = i4 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i5 = 0;
 i1 = HEAP32[i4 + 4 >> 2] | 0;
 i2 = i4 + 8 | 0;
 i3 = HEAP32[i2 >> 2] | 0;
 while (1) {
  if ((i3 | 0) == (i1 | 0)) break;
  i5 = i3 + -8 | 0;
  HEAP32[i2 >> 2] = i5;
  i3 = i5;
 }
 i1 = HEAP32[i4 >> 2] | 0;
 if (i1 | 0) __ZdlPv(i1);
 return;
}

function __ZNSt3__114__split_bufferIN4wasm7LiteralERNS_9allocatorIS2_EEED2Ev(i4) {
 i4 = i4 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i5 = 0;
 i1 = HEAP32[i4 + 4 >> 2] | 0;
 i2 = i4 + 8 | 0;
 i3 = HEAP32[i2 >> 2] | 0;
 while (1) {
  if ((i3 | 0) == (i1 | 0)) break;
  i5 = i3 + -16 | 0;
  HEAP32[i2 >> 2] = i5;
  i3 = i5;
 }
 i1 = HEAP32[i4 >> 2] | 0;
 if (i1 | 0) __ZdlPv(i1);
 return;
}

function __ZNSt3__114__split_bufferIPN4wasm6ImportERNS_9allocatorIS3_EEED2Ev(i4) {
 i4 = i4 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i5 = 0;
 i1 = HEAP32[i4 + 4 >> 2] | 0;
 i2 = i4 + 8 | 0;
 i3 = HEAP32[i2 >> 2] | 0;
 while (1) {
  if ((i3 | 0) == (i1 | 0)) break;
  i5 = i3 + -4 | 0;
  HEAP32[i2 >> 2] = i5;
  i3 = i5;
 }
 i1 = HEAP32[i4 >> 2] | 0;
 if (i1 | 0) __ZdlPv(i1);
 return;
}

function __ZNSt3__114__split_bufferIPN4wasm6ExportERNS_9allocatorIS3_EEED2Ev(i4) {
 i4 = i4 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i5 = 0;
 i1 = HEAP32[i4 + 4 >> 2] | 0;
 i2 = i4 + 8 | 0;
 i3 = HEAP32[i2 >> 2] | 0;
 while (1) {
  if ((i3 | 0) == (i1 | 0)) break;
  i5 = i3 + -4 | 0;
  HEAP32[i2 >> 2] = i5;
  i3 = i5;
 }
 i1 = HEAP32[i4 >> 2] | 0;
 if (i1 | 0) __ZdlPv(i1);
 return;
}

function __ZNSt3__16__treeINS_12__value_typeIN4wasm4NameEPNS2_6ImportEEENS_19__map_value_compareIS3_S6_NS_4lessIS3_EELb1EEENS_9allocatorIS6_EEED2Ev(i1) {
 i1 = i1 | 0;
 __ZNSt3__16__treeINS_12__value_typeIN4wasm4NameEPNS2_6ImportEEENS_19__map_value_compareIS3_S6_NS_4lessIS3_EELb1EEENS_9allocatorIS6_EEE7destroyEPNS_11__tree_nodeIS6_PvEE(i1, HEAP32[i1 + 4 >> 2] | 0);
 return;
}

function __ZNSt3__16__treeINS_12__value_typeIN4wasm4NameEPNS2_6ExportEEENS_19__map_value_compareIS3_S6_NS_4lessIS3_EELb1EEENS_9allocatorIS6_EEED2Ev(i1) {
 i1 = i1 | 0;
 __ZNSt3__16__treeINS_12__value_typeIN4wasm4NameEPNS2_6ExportEEENS_19__map_value_compareIS3_S6_NS_4lessIS3_EELb1EEENS_9allocatorIS6_EEE7destroyEPNS_11__tree_nodeIS6_PvEE(i1, HEAP32[i1 + 4 >> 2] | 0);
 return;
}

function __ZNSt3__114__split_bufferIPN4wasm5BreakERNS_9allocatorIS3_EEED2Ev(i4) {
 i4 = i4 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i5 = 0;
 i1 = HEAP32[i4 + 4 >> 2] | 0;
 i2 = i4 + 8 | 0;
 i3 = HEAP32[i2 >> 2] | 0;
 while (1) {
  if ((i3 | 0) == (i1 | 0)) break;
  i5 = i3 + -4 | 0;
  HEAP32[i2 >> 2] = i5;
  i3 = i5;
 }
 i1 = HEAP32[i4 >> 2] | 0;
 if (i1 | 0) __ZdlPv(i1);
 return;
}

function __ZNSt3__114__split_bufferIPN4wasm5BlockERNS_9allocatorIS3_EEED2Ev(i4) {
 i4 = i4 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i5 = 0;
 i1 = HEAP32[i4 + 4 >> 2] | 0;
 i2 = i4 + 8 | 0;
 i3 = HEAP32[i2 >> 2] | 0;
 while (1) {
  if ((i3 | 0) == (i1 | 0)) break;
  i5 = i3 + -4 | 0;
  HEAP32[i2 >> 2] = i5;
  i3 = i5;
 }
 i1 = HEAP32[i4 >> 2] | 0;
 if (i1 | 0) __ZdlPv(i1);
 return;
}

function __ZNSt3__114__split_bufferIcRNS_9allocatorIcEEEC2EjjS3_(i4, i2, i3, i1) {
 i4 = i4 | 0;
 i2 = i2 | 0;
 i3 = i3 | 0;
 i1 = i1 | 0;
 HEAP32[i4 + 12 >> 2] = 0;
 HEAP32[i4 + 16 >> 2] = i1;
 if (!i2) i1 = 0; else i1 = __Znwj(i2) | 0;
 HEAP32[i4 >> 2] = i1;
 i3 = i1 + i3 | 0;
 HEAP32[i4 + 8 >> 2] = i3;
 HEAP32[i4 + 4 >> 2] = i3;
 HEAP32[i4 + 12 >> 2] = i1 + i2;
 return;
}

function __ZNSt3__114__split_bufferIPN4wasm4PassERNS_9allocatorIS3_EEED2Ev(i4) {
 i4 = i4 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i5 = 0;
 i1 = HEAP32[i4 + 4 >> 2] | 0;
 i2 = i4 + 8 | 0;
 i3 = HEAP32[i2 >> 2] | 0;
 while (1) {
  if ((i3 | 0) == (i1 | 0)) break;
  i5 = i3 + -4 | 0;
  HEAP32[i2 >> 2] = i5;
  i3 = i5;
 }
 i1 = HEAP32[i4 >> 2] | 0;
 if (i1 | 0) __ZdlPv(i1);
 return;
}

function __ZNSt3__113__vector_baseINS_4pairIPN4wasm7ElementEPNS2_5BlockEEENS_9allocatorIS7_EEED2Ev(i1) {
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i4 = 0;
 i3 = HEAP32[i1 >> 2] | 0;
 if (i3 | 0) {
  i1 = i1 + 4 | 0;
  i2 = HEAP32[i1 >> 2] | 0;
  while (1) {
   if ((i2 | 0) == (i3 | 0)) break;
   i4 = i2 + -8 | 0;
   HEAP32[i1 >> 2] = i4;
   i2 = i4;
  }
  __ZdlPv(i3);
 }
 return;
}

function __ZN4wasm7Literal10getIntegerEv(i3) {
 i3 = i3 | 0;
 var i1 = 0, i2 = 0;
 switch (HEAP32[i3 >> 2] | 0) {
 case 1:
  {
   i2 = HEAP32[i3 + 8 >> 2] | 0;
   i1 = ((i2 | 0) < 0) << 31 >> 31;
   break;
  }
 case 2:
  {
   i2 = i3 + 8 | 0;
   i1 = HEAP32[i2 + 4 >> 2] | 0;
   i2 = HEAP32[i2 >> 2] | 0;
   break;
  }
 default:
  _abort();
 }
 tempRet0 = i1;
 return i2 | 0;
}

function __ZNSt3__114__split_bufferIN4wasm4NameERNS_9allocatorIS2_EEED2Ev(i4) {
 i4 = i4 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i5 = 0;
 i1 = HEAP32[i4 + 4 >> 2] | 0;
 i2 = i4 + 8 | 0;
 i3 = HEAP32[i2 >> 2] | 0;
 while (1) {
  if ((i3 | 0) == (i1 | 0)) break;
  i5 = i3 + -4 | 0;
  HEAP32[i2 >> 2] = i5;
  i3 = i5;
 }
 i1 = HEAP32[i4 >> 2] | 0;
 if (i1 | 0) __ZdlPv(i1);
 return;
}

function __ZZN4wasm12RegisterPassINS_11MergeBlocksEEC1EPKcS4_ENKUlvE_clEv(i1) {
 i1 = i1 | 0;
 var i2 = 0, i3 = 0;
 i1 = __Znwj(40) | 0;
 i2 = i1;
 i3 = i2 + 40 | 0;
 do {
  HEAP32[i2 >> 2] = 0;
  i2 = i2 + 4 | 0;
 } while ((i2 | 0) < (i3 | 0));
 __ZN4wasm10WalkerPassINS_10PostWalkerINS_11MergeBlocksENS_7VisitorIS2_vEEEEEC2Ev(i1);
 HEAP32[i1 >> 2] = 3580;
 return i1 | 0;
}

function __ZNSt3__114__split_bufferIPN4wasm2IfERNS_9allocatorIS3_EEED2Ev(i4) {
 i4 = i4 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i5 = 0;
 i1 = HEAP32[i4 + 4 >> 2] | 0;
 i2 = i4 + 8 | 0;
 i3 = HEAP32[i2 >> 2] | 0;
 while (1) {
  if ((i3 | 0) == (i1 | 0)) break;
  i5 = i3 + -4 | 0;
  HEAP32[i2 >> 2] = i5;
  i3 = i5;
 }
 i1 = HEAP32[i4 >> 2] | 0;
 if (i1 | 0) __ZdlPv(i1);
 return;
}

function __ZNSt3__113__vector_baseIPNS_6vectorIN6cashew3RefENS_9allocatorIS3_EEEENS4_IS7_EEED2Ev(i1) {
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i4 = 0;
 i3 = HEAP32[i1 >> 2] | 0;
 if (i3 | 0) {
  i1 = i1 + 4 | 0;
  i2 = HEAP32[i1 >> 2] | 0;
  while (1) {
   if ((i2 | 0) == (i3 | 0)) break;
   i4 = i2 + -4 | 0;
   HEAP32[i1 >> 2] = i4;
   i2 = i4;
  }
  __ZdlPv(i3);
 }
 return;
}

function __ZN4wasmlsERNSt3__113basic_ostreamIcNS0_11char_traitsIcEEEENS_4NameE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 i1 = HEAP32[i1 >> 2] | 0;
 if (!i1) ___assert_fail(16090, 14223, 82, 33985); else return __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(__ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_c(i2, 36) | 0, i1) | 0;
 return 0;
}

function __ZNSt3__113__vector_baseIPNS_17__assoc_sub_stateENS_18__hidden_allocatorIS2_EEED2Ev(i1) {
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i4 = 0;
 i3 = HEAP32[i1 >> 2] | 0;
 if (i3 | 0) {
  i1 = i1 + 4 | 0;
  i2 = HEAP32[i1 >> 2] | 0;
  while (1) {
   if ((i2 | 0) == (i3 | 0)) break;
   i4 = i2 + -4 | 0;
   HEAP32[i1 >> 2] = i4;
   i2 = i4;
  }
  __ZdlPv(i3);
 }
 return;
}

function __ZN4wasm6WalkerIZNS_13ReorderLocals13visitFunctionEPNS_8FunctionEE9ReIndexerNS_7VisitorIS4_vEEE15doVisitSetLocalEPS4_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZZN4wasm13ReorderLocals13visitFunctionEPNS_8FunctionEEN9ReIndexer13visitSetLocalEPNS_8SetLocalE(i2, __ZN4wasm10Expression4castINS_8SetLocalEEEPT_v(HEAP32[i1 >> 2] | 0) | 0);
 return;
}

function __ZN4wasm6WalkerIZNS_13ReorderLocals13visitFunctionEPNS_8FunctionEE9ReIndexerNS_7VisitorIS4_vEEE15doVisitGetLocalEPS4_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZZN4wasm13ReorderLocals13visitFunctionEPNS_8FunctionEEN9ReIndexer13visitGetLocalEPNS_8GetLocalE(i2, __ZN4wasm10Expression4castINS_8GetLocalEEEPT_v(HEAP32[i1 >> 2] | 0) | 0);
 return;
}

function _llvm_cttz_i32(i2) {
 i2 = i2 | 0;
 var i1 = 0;
 i1 = HEAP8[cttz_i8 + (i2 & 255) >> 0] | 0;
 if ((i1 | 0) < 8) return i1 | 0;
 i1 = HEAP8[cttz_i8 + (i2 >> 8 & 255) >> 0] | 0;
 if ((i1 | 0) < 8) return i1 + 8 | 0;
 i1 = HEAP8[cttz_i8 + (i2 >> 16 & 255) >> 0] | 0;
 if ((i1 | 0) < 8) return i1 + 16 | 0;
 return (HEAP8[cttz_i8 + (i2 >>> 24) >> 0] | 0) + 24 | 0;
}

function __ZN4wasm22ShellExternalInterface6Memory6resizeEj(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 var i3 = 0;
 i3 = (HEAP32[i2 + 4 >> 2] | 0) - (HEAP32[i2 >> 2] | 0) | 0;
 __ZNSt3__16vectorIcNS_9allocatorIcEEE6resizeEj(i2, i1 >>> 0 > 4096 ? i1 : 4096);
 if (i1 >>> 0 < 4096 & i3 >>> 0 > i1 >>> 0) _memset((HEAP32[i2 >> 2] | 0) + i1 | 0, 0, 4096 - i1 | 0) | 0;
 return;
}

function __ZNSt3__16locale2id5__getEv(i2) {
 i2 = i2 | 0;
 var i1 = 0, i3 = 0;
 i3 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i1 = i3;
 if ((HEAP32[i2 >> 2] | 0) != -1) {
  HEAP32[i1 >> 2] = i2;
  HEAP32[i1 + 4 >> 2] = 222;
  HEAP32[i1 + 8 >> 2] = 0;
  __ZNSt3__111__call_onceERVmPvPFvS2_E(i2, i1, 223);
 }
 STACKTOP = i3;
 return (HEAP32[i2 + 4 >> 2] | 0) + -1 | 0;
}

function __ZN4wasm15RemoveUnusedBrsD2Ev(i1) {
 i1 = i1 | 0;
 HEAP32[i1 >> 2] = 3984;
 __ZNSt3__113__vector_baseINS_6vectorIPN4wasm5BreakENS_9allocatorIS4_EEEENS5_IS7_EEED2Ev(i1 + 56 | 0);
 __ZNSt3__113__vector_baseIPN4wasm5BreakENS_9allocatorIS3_EEED2Ev(i1 + 44 | 0);
 __ZN4wasm10WalkerPassINS_10PostWalkerINS_15RemoveUnusedBrsENS_7VisitorIS2_vEEEEED2Ev(i1);
 return;
}

function __ZN4wasm10WalkerPassINS_21LinearExecutionWalkerINS_14SimplifyLocalsENS_7VisitorIS2_vEEEEED2Ev(i1) {
 i1 = i1 | 0;
 __ZNSt3__113__vector_baseIN4wasm6WalkerINS1_14SimplifyLocalsENS1_7VisitorIS3_vEEE4TaskENS_9allocatorIS7_EEED2Ev(i1 + 20 | 0);
 HEAP32[i1 >> 2] = 3200;
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i1 + 4 | 0);
 return;
}

function __ZNSt3__16vectorIPN4wasm10ExpressionENS_9allocatorIS3_EEE8allocateEj(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 var i3 = 0;
 if (i1 >>> 0 > 1073741823) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i2); else {
  i3 = __Znwj(i1 << 2) | 0;
  HEAP32[i2 + 4 >> 2] = i3;
  HEAP32[i2 >> 2] = i3;
  HEAP32[i2 + 8 >> 2] = i3 + (i1 << 2);
  return;
 }
}

function __ZNSt3__13mapIjjNS_4lessIjEENS_9allocatorINS_4pairIKjjEEEEE25__construct_node_with_keyERS5_(i2, i3, i1) {
 i2 = i2 | 0;
 i3 = i3 | 0;
 i1 = i1 | 0;
 var i4 = 0;
 i4 = __Znwj(24) | 0;
 HEAP32[i4 + 16 >> 2] = HEAP32[i1 >> 2];
 HEAP32[i4 + 20 >> 2] = 0;
 HEAP32[i2 >> 2] = i4;
 i2 = i2 + 4 | 0;
 HEAP32[i2 >> 2] = i3 + 4;
 HEAP32[i2 + 4 >> 2] = 257;
 return;
}

function ___cxa_can_catch(i1, i2, i4) {
 i1 = i1 | 0;
 i2 = i2 | 0;
 i4 = i4 | 0;
 var i3 = 0, i5 = 0;
 i5 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i3 = i5;
 HEAP32[i3 >> 2] = HEAP32[i4 >> 2];
 i1 = FUNCTION_TABLE_iiii[HEAP32[(HEAP32[i1 >> 2] | 0) + 16 >> 2] & 31](i1, i2, i3) | 0;
 if (i1) HEAP32[i4 >> 2] = HEAP32[i3 >> 2];
 STACKTOP = i5;
 return i1 & 1 | 0;
}

function __ZNSt3__114__split_bufferIPcRNS_9allocatorIS1_EEED2Ev(i4) {
 i4 = i4 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i5 = 0;
 i1 = HEAP32[i4 + 4 >> 2] | 0;
 i2 = i4 + 8 | 0;
 i3 = HEAP32[i2 >> 2] | 0;
 while (1) {
  if ((i3 | 0) == (i1 | 0)) break;
  i5 = i3 + -4 | 0;
  HEAP32[i2 >> 2] = i5;
  i3 = i5;
 }
 i1 = HEAP32[i4 >> 2] | 0;
 if (i1 | 0) __ZdlPv(i1);
 return;
}

function _calloc(i3, i1) {
 i3 = i3 | 0;
 i1 = i1 | 0;
 var i2 = 0;
 if (i3) {
  i2 = Math_imul(i1, i3) | 0;
  if ((i1 | i3) >>> 0 > 65535) i2 = ((i2 >>> 0) / (i3 >>> 0) | 0 | 0) == (i1 | 0) ? i2 : -1;
 } else i2 = 0;
 i1 = _malloc(i2) | 0;
 if (!i1) return i1 | 0;
 if (!(HEAP32[i1 + -4 >> 2] & 3)) return i1 | 0;
 _memset(i1 | 0, 0, i2 | 0) | 0;
 return i1 | 0;
}

function __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_h(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 var i3 = 0, i4 = 0;
 i3 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i4 = i3;
 HEAP8[i4 >> 0] = i1;
 i2 = __ZNSt3__124__put_character_sequenceIcNS_11char_traitsIcEEEERNS_13basic_ostreamIT_T0_EES7_PKS4_j(i2, i4, 1) | 0;
 STACKTOP = i3;
 return i2 | 0;
}

function __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_c(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 var i3 = 0, i4 = 0;
 i3 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i4 = i3;
 HEAP8[i4 >> 0] = i1;
 i2 = __ZNSt3__124__put_character_sequenceIcNS_11char_traitsIcEEEERNS_13basic_ostreamIT_T0_EES7_PKS4_j(i2, i4, 1) | 0;
 STACKTOP = i3;
 return i2 | 0;
}

function __ZNSt3__16vectorIN4wasm8WasmTypeENS_9allocatorIS2_EEE8allocateEj(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 var i3 = 0;
 if (i1 >>> 0 > 1073741823) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i2); else {
  i3 = __Znwj(i1 << 2) | 0;
  HEAP32[i2 + 4 >> 2] = i3;
  HEAP32[i2 >> 2] = i3;
  HEAP32[i2 + 8 >> 2] = i3 + (i1 << 2);
  return;
 }
}

function __ZN4wasm6WalkerINS_11BreakSeekerENS_7VisitorIS1_vEEE12doVisitBreakEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 i1 = (__ZN4wasm10Expression4castINS_5BreakEEEPT_v(HEAP32[i1 >> 2] | 0) | 0) + 8 | 0;
 if ((HEAP32[i1 >> 2] | 0) == (HEAP32[i2 + 24 >> 2] | 0)) {
  i2 = i2 + 28 | 0;
  HEAP32[i2 >> 2] = (HEAP32[i2 >> 2] | 0) + 1;
 }
 return;
}

function __ZN4wasm10WalkerPassINS_10PostWalkerINS_17RemoveUnusedNamesENS_7VisitorIS2_vEEEEED2Ev(i1) {
 i1 = i1 | 0;
 __ZNSt3__113__vector_baseIN4wasm6WalkerINS1_17RemoveUnusedNamesENS1_7VisitorIS3_vEEE4TaskENS_9allocatorIS7_EEED2Ev(i1 + 20 | 0);
 HEAP32[i1 >> 2] = 3200;
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i1 + 4 | 0);
 return;
}

function __ZZN4wasm12RegisterPassINS_6VacuumEEC1EPKcS4_ENKUlvE_clEv(i1) {
 i1 = i1 | 0;
 var i2 = 0, i3 = 0;
 i1 = __Znwj(40) | 0;
 i2 = i1;
 i3 = i2 + 40 | 0;
 do {
  HEAP32[i2 >> 2] = 0;
  i2 = i2 + 4 | 0;
 } while ((i2 | 0) < (i3 | 0));
 __ZN4wasm10WalkerPassINS_10PostWalkerINS_6VacuumENS_7VisitorIS2_vEEEEEC2Ev(i1);
 HEAP32[i1 >> 2] = 4772;
 return i1 | 0;
}

function __ZNSt3__16vectorIN4wasm8NameTypeENS_9allocatorIS2_EEE8allocateEj(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 var i3 = 0;
 if (i1 >>> 0 > 536870911) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i2); else {
  i3 = __Znwj(i1 << 3) | 0;
  HEAP32[i2 + 4 >> 2] = i3;
  HEAP32[i2 >> 2] = i3;
  HEAP32[i2 + 8 >> 2] = i3 + (i1 << 3);
  return;
 }
}

function __ZNSt3__114__split_bufferIjRNS_9allocatorIjEEED2Ev(i4) {
 i4 = i4 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i5 = 0;
 i1 = HEAP32[i4 + 4 >> 2] | 0;
 i2 = i4 + 8 | 0;
 i3 = HEAP32[i2 >> 2] | 0;
 while (1) {
  if ((i3 | 0) == (i1 | 0)) break;
  i5 = i3 + -4 | 0;
  HEAP32[i2 >> 2] = i5;
  i3 = i5;
 }
 i1 = HEAP32[i4 >> 2] | 0;
 if (i1 | 0) __ZdlPv(i1);
 return;
}

function __ZNSt3__114__split_bufferIiRNS_9allocatorIiEEED2Ev(i4) {
 i4 = i4 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i5 = 0;
 i1 = HEAP32[i4 + 4 >> 2] | 0;
 i2 = i4 + 8 | 0;
 i3 = HEAP32[i2 >> 2] | 0;
 while (1) {
  if ((i3 | 0) == (i1 | 0)) break;
  i5 = i3 + -4 | 0;
  HEAP32[i2 >> 2] = i5;
  i3 = i5;
 }
 i1 = HEAP32[i4 >> 2] | 0;
 if (i1 | 0) __ZdlPv(i1);
 return;
}

function __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj18EEERAT__Kc(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj(i2, i1, 17);
 i1 = i2 + 12 | 0;
 i2 = 0;
 while (1) {
  if ((i2 | 0) == 3) break;
  HEAP32[i1 + (i2 << 2) >> 2] = 0;
  i2 = i2 + 1 | 0;
 }
 return;
}

function __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj15EEERAT__Kc(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj(i2, i1, 14);
 i1 = i2 + 12 | 0;
 i2 = 0;
 while (1) {
  if ((i2 | 0) == 3) break;
  HEAP32[i1 + (i2 << 2) >> 2] = 0;
  i2 = i2 + 1 | 0;
 }
 return;
}

function __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj14EEERAT__Kc(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj(i2, i1, 13);
 i1 = i2 + 12 | 0;
 i2 = 0;
 while (1) {
  if ((i2 | 0) == 3) break;
  HEAP32[i1 + (i2 << 2) >> 2] = 0;
  i2 = i2 + 1 | 0;
 }
 return;
}

function __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj13EEERAT__Kc(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj(i2, i1, 12);
 i1 = i2 + 12 | 0;
 i2 = 0;
 while (1) {
  if ((i2 | 0) == 3) break;
  HEAP32[i1 + (i2 << 2) >> 2] = 0;
  i2 = i2 + 1 | 0;
 }
 return;
}

function __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj12EEERAT__Kc(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj(i2, i1, 11);
 i1 = i2 + 12 | 0;
 i2 = 0;
 while (1) {
  if ((i2 | 0) == 3) break;
  HEAP32[i1 + (i2 << 2) >> 2] = 0;
  i2 = i2 + 1 | 0;
 }
 return;
}

function __ZNK4wasm7Literal5floorEv(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 var d3 = 0.0;
 if ((HEAP32[i1 >> 2] | 0) == 3) {
  d3 = +Math_floor(+(+__ZNK4wasm7Literal6getf32Ev(i1)));
  HEAPF32[i2 + 8 >> 2] = d3;
  i1 = 3;
 } else {
  d3 = +Math_floor(+(+__ZNK4wasm7Literal6getf64Ev(i1)));
  HEAPF64[i2 + 8 >> 3] = d3;
  i1 = 4;
 }
 HEAP32[i2 >> 2] = i1;
 return;
}

function __ZNSt3__113__vector_baseIN4wasm6Memory7SegmentENS_9allocatorIS3_EEED2Ev(i1) {
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i4 = 0;
 i3 = HEAP32[i1 >> 2] | 0;
 if (i3 | 0) {
  i1 = i1 + 4 | 0;
  i2 = HEAP32[i1 >> 2] | 0;
  while (1) {
   if ((i2 | 0) == (i3 | 0)) break;
   i4 = i2 + -12 | 0;
   HEAP32[i1 >> 2] = i4;
   i2 = i4;
  }
  __ZdlPv(i3);
 }
 return;
}

function __ZNSt3__112__asprintf_lEPPcP15__locale_structPKcz(i4, i1, i3, i2) {
 i4 = i4 | 0;
 i1 = i1 | 0;
 i3 = i3 | 0;
 i2 = i2 | 0;
 var i5 = 0, i6 = 0;
 i5 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i6 = i5;
 HEAP32[i6 >> 2] = i2;
 i2 = _uselocale(i1) | 0;
 i1 = _vasprintf(i4, i3, i6) | 0;
 if (i2 | 0) _uselocale(i2) | 0;
 STACKTOP = i5;
 return i1 | 0;
}

function __ZNK4wasm7Literal9nearbyintEv(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 var d3 = 0.0;
 if ((HEAP32[i1 >> 2] | 0) == 3) {
  d3 = +_nearbyintf(+__ZNK4wasm7Literal6getf32Ev(i1));
  HEAPF32[i2 + 8 >> 2] = d3;
  i1 = 3;
 } else {
  d3 = +_nearbyint(+__ZNK4wasm7Literal6getf64Ev(i1));
  HEAPF64[i2 + 8 >> 3] = d3;
  i1 = 4;
 }
 HEAP32[i2 >> 2] = i1;
 return;
}

function __ZNSt3__16vectorIN4wasm4NameENS_9allocatorIS2_EEE8allocateEj(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 var i3 = 0;
 if (i1 >>> 0 > 1073741823) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i2); else {
  i3 = __Znwj(i1 << 2) | 0;
  HEAP32[i2 + 4 >> 2] = i3;
  HEAP32[i2 >> 2] = i3;
  HEAP32[i2 + 8 >> 2] = i3 + (i1 << 2);
  return;
 }
}

function __ZNSt3__113__vector_baseIPN4wasm12FunctionTypeENS_9allocatorIS3_EEED2Ev(i1) {
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i4 = 0;
 i3 = HEAP32[i1 >> 2] | 0;
 if (i3 | 0) {
  i1 = i1 + 4 | 0;
  i2 = HEAP32[i1 >> 2] | 0;
  while (1) {
   if ((i2 | 0) == (i3 | 0)) break;
   i4 = i2 + -4 | 0;
   HEAP32[i1 >> 2] = i4;
   i2 = i4;
  }
  __ZdlPv(i3);
 }
 return;
}

function __ZN4wasm6WalkerINS_15GetLocalCounterENS_7VisitorIS1_vEEE15doVisitGetLocalEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 i1 = __ZN4wasm10Expression4castINS_8GetLocalEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 i2 = (HEAP32[HEAP32[i2 + 40 >> 2] >> 2] | 0) + (HEAP32[i1 + 8 >> 2] << 2) | 0;
 HEAP32[i2 >> 2] = (HEAP32[i2 >> 2] | 0) + 1;
 return;
}

function __ZN4wasm15RemoveUnusedBrsC2Ev(i1) {
 i1 = i1 | 0;
 __ZN4wasm10WalkerPassINS_10PostWalkerINS_15RemoveUnusedBrsENS_7VisitorIS2_vEEEEEC2Ev(i1);
 HEAP32[i1 >> 2] = 3984;
 i1 = i1 + 44 | 0;
 HEAP32[i1 >> 2] = 0;
 HEAP32[i1 + 4 >> 2] = 0;
 HEAP32[i1 + 8 >> 2] = 0;
 HEAP32[i1 + 12 >> 2] = 0;
 HEAP32[i1 + 16 >> 2] = 0;
 HEAP32[i1 + 20 >> 2] = 0;
 return;
}

function __ZN4wasm10WalkerPassINS_10PostWalkerINS_15SetLocalRemoverENS_7VisitorIS2_vEEEEED2Ev(i1) {
 i1 = i1 | 0;
 __ZNSt3__113__vector_baseIN4wasm6WalkerINS1_15SetLocalRemoverENS1_7VisitorIS3_vEEE4TaskENS_9allocatorIS7_EEED2Ev(i1 + 20 | 0);
 HEAP32[i1 >> 2] = 3200;
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i1 + 4 | 0);
 return;
}

function __ZN4wasm10WalkerPassINS_10PostWalkerINS_15RemoveUnusedBrsENS_7VisitorIS2_vEEEEED2Ev(i1) {
 i1 = i1 | 0;
 __ZNSt3__113__vector_baseIN4wasm6WalkerINS1_15RemoveUnusedBrsENS1_7VisitorIS3_vEEE4TaskENS_9allocatorIS7_EEED2Ev(i1 + 20 | 0);
 HEAP32[i1 >> 2] = 3200;
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i1 + 4 | 0);
 return;
}

function __ZN4wasm10WalkerPassINS_10PostWalkerINS_15GetLocalCounterENS_7VisitorIS2_vEEEEED2Ev(i1) {
 i1 = i1 | 0;
 __ZNSt3__113__vector_baseIN4wasm6WalkerINS1_15GetLocalCounterENS1_7VisitorIS3_vEEE4TaskENS_9allocatorIS7_EEED2Ev(i1 + 20 | 0);
 HEAP32[i1 >> 2] = 3200;
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i1 + 4 | 0);
 return;
}

function __ZNK4wasm7Literal4sqrtEv(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 var d3 = 0.0;
 if ((HEAP32[i1 >> 2] | 0) == 3) {
  d3 = +Math_sqrt(+(+__ZNK4wasm7Literal6getf32Ev(i1)));
  HEAPF32[i2 + 8 >> 2] = d3;
  i1 = 3;
 } else {
  d3 = +Math_sqrt(+(+__ZNK4wasm7Literal6getf64Ev(i1)));
  HEAPF64[i2 + 8 >> 3] = d3;
  i1 = 4;
 }
 HEAP32[i2 >> 2] = i1;
 return;
}

function __ZNK4wasm7Literal4ceilEv(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 var d3 = 0.0;
 if ((HEAP32[i1 >> 2] | 0) == 3) {
  d3 = +Math_ceil(+(+__ZNK4wasm7Literal6getf32Ev(i1)));
  HEAPF32[i2 + 8 >> 2] = d3;
  i1 = 3;
 } else {
  d3 = +Math_ceil(+(+__ZNK4wasm7Literal6getf64Ev(i1)));
  HEAPF64[i2 + 8 >> 3] = d3;
  i1 = 4;
 }
 HEAP32[i2 >> 2] = i1;
 return;
}

function __ZNSt3__113__vector_baseIPN4wasm10ExpressionENS_9allocatorIS3_EEED2Ev(i1) {
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i4 = 0;
 i3 = HEAP32[i1 >> 2] | 0;
 if (i3 | 0) {
  i1 = i1 + 4 | 0;
  i2 = HEAP32[i1 >> 2] | 0;
  while (1) {
   if ((i2 | 0) == (i3 | 0)) break;
   i4 = i2 + -4 | 0;
   HEAP32[i1 >> 2] = i4;
   i2 = i4;
  }
  __ZdlPv(i3);
 }
 return;
}

function __ZN4wasm10WalkerPassINS_10PostWalkerINS_14PostEmscriptenENS_7VisitorIS2_vEEEEED2Ev(i1) {
 i1 = i1 | 0;
 __ZNSt3__113__vector_baseIN4wasm6WalkerINS1_14PostEmscriptenENS1_7VisitorIS3_vEEE4TaskENS_9allocatorIS7_EEED2Ev(i1 + 20 | 0);
 HEAP32[i1 >> 2] = 3200;
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i1 + 4 | 0);
 return;
}

function __Z9printTextRNSt3__113basic_ostreamIcNS_11char_traitsIcEEEEPKc(i1, i2) {
 i1 = i1 | 0;
 i2 = i2 | 0;
 __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_c(i1, 34) | 0;
 __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(i1, i2) | 0;
 return __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_c(i1, 34) | 0;
}

function __ZNSt3__110__sscanf_lEPKcP15__locale_structS1_z(i4, i1, i3, i2) {
 i4 = i4 | 0;
 i1 = i1 | 0;
 i3 = i3 | 0;
 i2 = i2 | 0;
 var i5 = 0, i6 = 0;
 i5 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i6 = i5;
 HEAP32[i6 >> 2] = i2;
 i2 = _uselocale(i1) | 0;
 i1 = _vsscanf(i4, i3, i6) | 0;
 if (i2 | 0) _uselocale(i2) | 0;
 STACKTOP = i5;
 return i1 | 0;
}

function __ZN4wasm6Thread4workENSt3__18functionIFNS_15ThreadWorkStateEvEEE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 var i3 = 0;
 i3 = i2 + 4 | 0;
 __ZNSt3__15mutex4lockEv(i3);
 __ZNSt3__18functionIFN4wasm15ThreadWorkStateEvEEaSERKS4_(i2 + 88 | 0, i1) | 0;
 __ZNSt3__118condition_variable10notify_oneEv(i2 + 32 | 0);
 __ZNSt3__15mutex6unlockEv(i3);
 return;
}

function __ZN4wasm14EffectAnalyzer11hasAnythingEv(i1) {
 i1 = i1 | 0;
 var i2 = 0;
 i2 = HEAP16[i1 + 24 >> 1] | 0;
 if ((i2 & 255) << 24 >> 24 == 0 & (i2 & 65535) < 256 ? (HEAP32[i1 + 36 >> 2] | 0) == (0 - (HEAP32[i1 + 48 >> 2] | 0) | 0) : 0) {
  i2 = HEAP16[i1 + 52 >> 1] | 0;
  return (i2 & 65535) > 255 | (i2 & 255) << 24 >> 24 != 0 | 0;
 }
 return 1;
}

function __ZN4wasm10WalkerPassINS_10PostWalkerINS_13ReorderLocalsENS_7VisitorIS2_vEEEEED2Ev(i1) {
 i1 = i1 | 0;
 __ZNSt3__113__vector_baseIN4wasm6WalkerINS1_13ReorderLocalsENS1_7VisitorIS3_vEEE4TaskENS_9allocatorIS7_EEED2Ev(i1 + 20 | 0);
 HEAP32[i1 >> 2] = 3200;
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i1 + 4 | 0);
 return;
}

function _truncf(d1) {
 d1 = +d1;
 var i2 = 0, i3 = 0, i4 = 0;
 i2 = (HEAPF32[tempDoublePtr >> 2] = d1, HEAP32[tempDoublePtr >> 2] | 0);
 i3 = (i2 >>> 23 & 255) + -118 | 0;
 if ((i3 | 0) <= 31 ? (i4 = (i3 | 0) < 9 ? 2147483647 : -1 >>> i3, (i4 & i2 | 0) != 0) : 0) d1 = (HEAP32[tempDoublePtr >> 2] = i2 & ~i4, +HEAPF32[tempDoublePtr >> 2]);
 return +d1;
}

function __ZNSt3__113__vector_baseIPN4wasm8FunctionENS_9allocatorIS3_EEED2Ev(i1) {
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i4 = 0;
 i3 = HEAP32[i1 >> 2] | 0;
 if (i3 | 0) {
  i1 = i1 + 4 | 0;
  i2 = HEAP32[i1 >> 2] | 0;
  while (1) {
   if ((i2 | 0) == (i3 | 0)) break;
   i4 = i2 + -4 | 0;
   HEAP32[i1 >> 2] = i4;
   i2 = i4;
  }
  __ZdlPv(i3);
 }
 return;
}

function __ZNSt3__16__treeINS_12__value_typeIN4wasm4NameEjEENS_19__map_value_compareIS3_S4_NS_4lessIS3_EELb1EEENS_9allocatorIS4_EEED2Ev(i1) {
 i1 = i1 | 0;
 __ZNSt3__16__treeINS_12__value_typeIN4wasm4NameEjEENS_19__map_value_compareIS3_S4_NS_4lessIS3_EELb1EEENS_9allocatorIS4_EEE7destroyEPNS_11__tree_nodeIS4_PvEE(i1, HEAP32[i1 + 4 >> 2] | 0);
 return;
}

function __ZNSt3__113__vector_baseIPN6cashew5ValueENS_9allocatorIS3_EEED2Ev(i1) {
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i4 = 0;
 i3 = HEAP32[i1 >> 2] | 0;
 if (i3 | 0) {
  i1 = i1 + 4 | 0;
  i2 = HEAP32[i1 >> 2] | 0;
  while (1) {
   if ((i2 | 0) == (i3 | 0)) break;
   i4 = i2 + -4 | 0;
   HEAP32[i1 >> 2] = i4;
   i2 = i4;
  }
  __ZdlPv(i3);
 }
 return;
}

function __ZNSt3__113__vector_baseIPN4wasm7ElementENS_9allocatorIS3_EEED2Ev(i1) {
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i4 = 0;
 i3 = HEAP32[i1 >> 2] | 0;
 if (i3 | 0) {
  i1 = i1 + 4 | 0;
  i2 = HEAP32[i1 >> 2] | 0;
  while (1) {
   if ((i2 | 0) == (i3 | 0)) break;
   i4 = i2 + -4 | 0;
   HEAP32[i1 >> 2] = i4;
   i2 = i4;
  }
  __ZdlPv(i3);
 }
 return;
}

function __ZNSt3__113__vector_baseIN4wasm8WasmTypeENS_9allocatorIS2_EEED2Ev(i1) {
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i4 = 0;
 i3 = HEAP32[i1 >> 2] | 0;
 if (i3 | 0) {
  i1 = i1 + 4 | 0;
  i2 = HEAP32[i1 >> 2] | 0;
  while (1) {
   if ((i2 | 0) == (i3 | 0)) break;
   i4 = i2 + -4 | 0;
   HEAP32[i1 >> 2] = i4;
   i2 = i4;
  }
  __ZdlPv(i3);
 }
 return;
}

function __ZNSt3__113__vector_baseIN4wasm8NameTypeENS_9allocatorIS2_EEED2Ev(i1) {
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i4 = 0;
 i3 = HEAP32[i1 >> 2] | 0;
 if (i3 | 0) {
  i1 = i1 + 4 | 0;
  i2 = HEAP32[i1 >> 2] | 0;
  while (1) {
   if ((i2 | 0) == (i3 | 0)) break;
   i4 = i2 + -8 | 0;
   HEAP32[i1 >> 2] = i4;
   i2 = i4;
  }
  __ZdlPv(i3);
 }
 return;
}

function __ZNSt3__113__vector_baseIN4wasm7LiteralENS_9allocatorIS2_EEED2Ev(i1) {
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i4 = 0;
 i3 = HEAP32[i1 >> 2] | 0;
 if (i3 | 0) {
  i1 = i1 + 4 | 0;
  i2 = HEAP32[i1 >> 2] | 0;
  while (1) {
   if ((i2 | 0) == (i3 | 0)) break;
   i4 = i2 + -16 | 0;
   HEAP32[i1 >> 2] = i4;
   i2 = i4;
  }
  __ZdlPv(i3);
 }
 return;
}

function __GLOBAL__sub_I_simple_ast_cpp() {
 HEAP32[9152] = 0;
 HEAP32[9153] = 0;
 HEAP32[9154] = 0;
 HEAP32[9155] = 0;
 HEAP32[9156] = 0;
 HEAP32[9157] = 0;
 HEAP32[9158] = 0;
 HEAP32[9159] = 0;
 ___cxa_atexit(214, 36608, ___dso_handle | 0) | 0;
 __ZN6cashew10IStringSetC2EPKc(36640, 26049);
 ___cxa_atexit(211, 36640, ___dso_handle | 0) | 0;
 return;
}

function __ZNSt3__119basic_istringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i1, i2) {
 i1 = i1 | 0;
 i2 = i2 | 0;
 var i3 = 0;
 i3 = HEAP32[i2 >> 2] | 0;
 HEAP32[i1 >> 2] = i3;
 HEAP32[i1 + (HEAP32[i3 + -12 >> 2] | 0) >> 2] = HEAP32[i2 + 12 >> 2];
 __ZNSt3__115basic_stringbufIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i1 + 8 | 0);
 return;
}

function __ZNSt3__113__vector_baseIPN4wasm6ImportENS_9allocatorIS3_EEED2Ev(i1) {
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i4 = 0;
 i3 = HEAP32[i1 >> 2] | 0;
 if (i3 | 0) {
  i1 = i1 + 4 | 0;
  i2 = HEAP32[i1 >> 2] | 0;
  while (1) {
   if ((i2 | 0) == (i3 | 0)) break;
   i4 = i2 + -4 | 0;
   HEAP32[i1 >> 2] = i4;
   i2 = i4;
  }
  __ZdlPv(i3);
 }
 return;
}

function __ZNSt3__113__vector_baseIPN4wasm6ExportENS_9allocatorIS3_EEED2Ev(i1) {
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i4 = 0;
 i3 = HEAP32[i1 >> 2] | 0;
 if (i3 | 0) {
  i1 = i1 + 4 | 0;
  i2 = HEAP32[i1 >> 2] | 0;
  while (1) {
   if ((i2 | 0) == (i3 | 0)) break;
   i4 = i2 + -4 | 0;
   HEAP32[i1 >> 2] = i4;
   i2 = i4;
  }
  __ZdlPv(i3);
 }
 return;
}

function __ZNSt3__113__vector_baseIPN4wasm5BreakENS_9allocatorIS3_EEED2Ev(i1) {
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i4 = 0;
 i3 = HEAP32[i1 >> 2] | 0;
 if (i3 | 0) {
  i1 = i1 + 4 | 0;
  i2 = HEAP32[i1 >> 2] | 0;
  while (1) {
   if ((i2 | 0) == (i3 | 0)) break;
   i4 = i2 + -4 | 0;
   HEAP32[i1 >> 2] = i4;
   i2 = i4;
  }
  __ZdlPv(i3);
 }
 return;
}

function __ZNSt3__113__vector_baseIPN4wasm5BlockENS_9allocatorIS3_EEED2Ev(i1) {
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i4 = 0;
 i3 = HEAP32[i1 >> 2] | 0;
 if (i3 | 0) {
  i1 = i1 + 4 | 0;
  i2 = HEAP32[i1 >> 2] | 0;
  while (1) {
   if ((i2 | 0) == (i3 | 0)) break;
   i4 = i2 + -4 | 0;
   HEAP32[i1 >> 2] = i4;
   i2 = i4;
  }
  __ZdlPv(i3);
 }
 return;
}

function __ZN4wasm7Literal9castToI64Ev(i1, i2) {
 i1 = i1 | 0;
 i2 = i2 | 0;
 var i3 = 0, i4 = 0;
 if ((HEAP32[i2 >> 2] | 0) == 4) {
  i4 = i2 + 8 | 0;
  i3 = HEAP32[i4 + 4 >> 2] | 0;
  i2 = i1 + 8 | 0;
  HEAP32[i2 >> 2] = HEAP32[i4 >> 2];
  HEAP32[i2 + 4 >> 2] = i3;
  HEAP32[i1 >> 2] = 2;
  return;
 } else ___assert_fail(14362, 14223, 197, 16593);
}

function __ZN4wasm7Literal9castToF64Ev(i1, i2) {
 i1 = i1 | 0;
 i2 = i2 | 0;
 var i3 = 0, i4 = 0;
 if ((HEAP32[i2 >> 2] | 0) == 2) {
  i4 = i2 + 8 | 0;
  i3 = HEAP32[i4 + 4 >> 2] | 0;
  i2 = i1 + 8 | 0;
  HEAP32[i2 >> 2] = HEAP32[i4 >> 2];
  HEAP32[i2 + 4 >> 2] = i3;
  HEAP32[i1 >> 2] = 4;
  return;
 } else ___assert_fail(14244, 14223, 185, 14266);
}

function __ZN4wasm12PassRegistry8PassInfoC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEENS2_8functionIFPNS_4PassEvEEE(i3, i2, i1) {
 i3 = i3 | 0;
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC2ERKS5_(i3, i2);
 __ZNSt3__18functionIFPN4wasm4PassEvEEC2ERKS5_(i3 + 16 | 0, i1);
 return;
}

function __ZN4wasm10WalkerPassINS_10PostWalkerINS_11MergeBlocksENS_7VisitorIS2_vEEEEED2Ev(i1) {
 i1 = i1 | 0;
 __ZNSt3__113__vector_baseIN4wasm6WalkerINS1_11MergeBlocksENS1_7VisitorIS3_vEEE4TaskENS_9allocatorIS7_EEED2Ev(i1 + 20 | 0);
 HEAP32[i1 >> 2] = 3200;
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i1 + 4 | 0);
 return;
}

function __ZNSt3__113__vector_baseIPN4wasm4PassENS_9allocatorIS3_EEED2Ev(i1) {
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i4 = 0;
 i3 = HEAP32[i1 >> 2] | 0;
 if (i3 | 0) {
  i1 = i1 + 4 | 0;
  i2 = HEAP32[i1 >> 2] | 0;
  while (1) {
   if ((i2 | 0) == (i3 | 0)) break;
   i4 = i2 + -4 | 0;
   HEAP32[i1 >> 2] = i4;
   i2 = i4;
  }
  __ZdlPv(i3);
 }
 return;
}

function __ZN4wasm22SExpressionWasmBuilder15preParseImportsERNS_7ElementE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 var i3 = 0;
 i3 = __ZN4wasm7Element4listEv(i1) | 0;
 i3 = __ZN4wasm7Element3strEv(HEAP32[HEAP32[i3 >> 2] >> 2] | 0) | 0;
 if ((i3 | 0) == (HEAP32[9013] | 0)) __ZN4wasm22SExpressionWasmBuilder11parseImportERNS_7ElementE(i2, i1);
 return;
}

function __ZNSt3__113__vector_baseIN4wasm4NameENS_9allocatorIS2_EEED2Ev(i1) {
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i4 = 0;
 i3 = HEAP32[i1 >> 2] | 0;
 if (i3 | 0) {
  i1 = i1 + 4 | 0;
  i2 = HEAP32[i1 >> 2] | 0;
  while (1) {
   if ((i2 | 0) == (i3 | 0)) break;
   i4 = i2 + -4 | 0;
   HEAP32[i1 >> 2] = i4;
   i2 = i4;
  }
  __ZdlPv(i3);
 }
 return;
}

function __ZN4wasm7PrinterC2ERNSt3__113basic_ostreamIcNS1_11char_traitsIcEEEE(i4, i3) {
 i4 = i4 | 0;
 i3 = i3 | 0;
 var i1 = 0, i2 = 0;
 HEAP32[i4 >> 2] = 3200;
 i1 = i4 + 4 | 0;
 i2 = 0;
 while (1) {
  if ((i2 | 0) == 3) break;
  HEAP32[i1 + (i2 << 2) >> 2] = 0;
  i2 = i2 + 1 | 0;
 }
 HEAP32[i4 >> 2] = 3652;
 HEAP32[i4 + 16 >> 2] = i3;
 return;
}

function __ZNSt3__113__vector_baseIPN4wasm2IfENS_9allocatorIS3_EEED2Ev(i1) {
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i4 = 0;
 i3 = HEAP32[i1 >> 2] | 0;
 if (i3 | 0) {
  i1 = i1 + 4 | 0;
  i2 = HEAP32[i1 >> 2] | 0;
  while (1) {
   if ((i2 | 0) == (i3 | 0)) break;
   i4 = i2 + -4 | 0;
   HEAP32[i1 >> 2] = i4;
   i2 = i4;
  }
  __ZdlPv(i3);
 }
 return;
}

function __ZNK4wasm7Literal5truncEv(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 var d3 = 0.0;
 if ((HEAP32[i1 >> 2] | 0) == 3) {
  d3 = +_truncf(+__ZNK4wasm7Literal6getf32Ev(i1));
  HEAPF32[i2 + 8 >> 2] = d3;
  i1 = 3;
 } else {
  d3 = +_trunc(+__ZNK4wasm7Literal6getf64Ev(i1));
  HEAPF64[i2 + 8 >> 3] = d3;
  i1 = 4;
 }
 HEAP32[i2 >> 2] = i1;
 return;
}

function __ZN4wasm22SExpressionWasmBuilder10parseStartERNS_7ElementE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 var i3 = 0;
 i3 = HEAP32[i2 >> 2] | 0;
 i1 = __ZN4wasm7Element4listEv(i1) | 0;
 i2 = __ZN4wasm22SExpressionWasmBuilder15getFunctionNameERNS_7ElementE(i2, HEAP32[(HEAP32[i1 >> 2] | 0) + 4 >> 2] | 0) | 0;
 HEAP32[i3 + 84 >> 2] = i2;
 return;
}

function __ZNSt3__18ios_base4InitD2Ev(i1) {
 i1 = i1 | 0;
 __ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEE5flushEv(37336) | 0;
 __ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEE5flushEv(37504) | 0;
 __ZNSt3__113basic_ostreamIwNS_11char_traitsIwEEE5flushEv(37676) | 0;
 __ZNSt3__113basic_ostreamIwNS_11char_traitsIwEEE5flushEv(37844) | 0;
 return;
}

function __ZNSt3__111__tree_prevIPNS_16__tree_node_baseIPvEEEET_S5_(i2) {
 i2 = i2 | 0;
 var i1 = 0;
 i1 = HEAP32[i2 >> 2] | 0;
 if (!i1) while (1) {
  i1 = HEAP32[i2 + 8 >> 2] | 0;
  if ((HEAP32[i1 >> 2] | 0) == (i2 | 0)) i2 = i1; else break;
 } else while (1) {
  i2 = HEAP32[i1 + 4 >> 2] | 0;
  if (!i2) break; else i1 = i2;
 }
 return i1 | 0;
}

function __ZNSt3__111__tree_nextIPNS_16__tree_node_baseIPvEEEET_S5_(i2) {
 i2 = i2 | 0;
 var i1 = 0;
 i1 = HEAP32[i2 + 4 >> 2] | 0;
 if (!i1) while (1) {
  i1 = HEAP32[i2 + 8 >> 2] | 0;
  if ((HEAP32[i1 >> 2] | 0) == (i2 | 0)) break; else i2 = i1;
 } else while (1) {
  i2 = HEAP32[i1 >> 2] | 0;
  if (!i2) break; else i1 = i2;
 }
 return i1 | 0;
}

function __ZN6cashew13OperatorClassC2EOS0_(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 var i3 = 0;
 __ZNSt3__112__hash_tableIN6cashew7IStringENS_4hashIS2_EENS_8equal_toIS2_EENS_9allocatorIS2_EEEC2EOS9_(i2, i1);
 i3 = i1 + 20 | 0;
 i1 = HEAP32[i3 + 4 >> 2] | 0;
 i2 = i2 + 20 | 0;
 HEAP32[i2 >> 2] = HEAP32[i3 >> 2];
 HEAP32[i2 + 4 >> 2] = i1;
 return;
}

function ___uflow(i2) {
 i2 = i2 | 0;
 var i1 = 0, i3 = 0;
 i3 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i1 = i3;
 if ((HEAP32[i2 + 8 >> 2] | 0) == 0 ? (___toread(i2) | 0) != 0 : 0) i1 = -1; else if ((FUNCTION_TABLE_iiii[HEAP32[i2 + 32 >> 2] & 31](i2, i1, 1) | 0) == 1) i1 = HEAPU8[i1 >> 0] | 0; else i1 = -1;
 STACKTOP = i3;
 return i1 | 0;
}

function __ZNSt3__117__call_once_proxyINS_5tupleIJNS_12_GLOBAL__N_111__fake_bindEEEEEEvPv(i2) {
 i2 = i2 | 0;
 var i1 = 0, i3 = 0;
 i1 = HEAP32[i2 + 4 >> 2] | 0;
 i3 = HEAP32[i2 + 8 >> 2] | 0;
 i2 = (HEAP32[i2 >> 2] | 0) + (i3 >> 1) | 0;
 if (i3 & 1) i1 = HEAP32[(HEAP32[i2 >> 2] | 0) + i1 >> 2] | 0;
 FUNCTION_TABLE_vi[i1 & 255](i2);
 return;
}

function __ZNSt3__115basic_stringbufIcNS_11char_traitsIcEENS_9allocatorIcEEE7seekposENS_4fposI11__mbstate_tEEj(i3, i4, i1, i2) {
 i3 = i3 | 0;
 i4 = i4 | 0;
 i1 = i1 | 0;
 i2 = i2 | 0;
 i1 = i1 + 8 | 0;
 FUNCTION_TABLE_viiiiii[HEAP32[(HEAP32[i4 >> 2] | 0) + 16 >> 2] & 15](i3, i4, HEAP32[i1 >> 2] | 0, HEAP32[i1 + 4 >> 2] | 0, 0, i2);
 return;
}

function ___shlim(i3, i4) {
 i3 = i3 | 0;
 i4 = i4 | 0;
 var i1 = 0, i2 = 0, i5 = 0;
 HEAP32[i3 + 104 >> 2] = i4;
 i1 = HEAP32[i3 + 8 >> 2] | 0;
 i2 = HEAP32[i3 + 4 >> 2] | 0;
 i5 = i1 - i2 | 0;
 HEAP32[i3 + 108 >> 2] = i5;
 if ((i4 | 0) != 0 & (i5 | 0) > (i4 | 0)) HEAP32[i3 + 100 >> 2] = i2 + i4; else HEAP32[i3 + 100 >> 2] = i1;
 return;
}

function __ZNK10__cxxabiv117__class_type_info27has_unambiguous_public_baseEPNS_19__dynamic_cast_infoEPvi(i4, i2, i1, i3) {
 i4 = i4 | 0;
 i2 = i2 | 0;
 i1 = i1 | 0;
 i3 = i3 | 0;
 if ((i4 | 0) == (HEAP32[i2 + 8 >> 2] | 0)) __ZNK10__cxxabiv117__class_type_info24process_found_base_classEPNS_19__dynamic_cast_infoEPvi(0, i2, i1, i3);
 return;
}

function __ZN4wasm13sigToWasmTypeEc(i2) {
 i2 = i2 | 0;
 var i1 = 0;
 switch (i2 << 24 >> 24 | 0) {
 case 105:
  {
   i1 = 1;
   break;
  }
 case 106:
  {
   i1 = 2;
   break;
  }
 case 102:
  {
   i1 = 3;
   break;
  }
 case 100:
  {
   i1 = 4;
   break;
  }
 case 118:
  {
   i1 = 0;
   break;
  }
 default:
  _abort();
 }
 return i1 | 0;
}

function __ZNSt3__114__split_bufferIcRNS_9allocatorIcEEED2Ev(i4) {
 i4 = i4 | 0;
 var i1 = 0, i2 = 0, i3 = 0, i5 = 0;
 i1 = HEAP32[i4 + 4 >> 2] | 0;
 i2 = i4 + 8 | 0;
 i3 = HEAP32[i2 >> 2] | 0;
 while (1) {
  if ((i3 | 0) == (i1 | 0)) break;
  i5 = i3 + -1 | 0;
  HEAP32[i2 >> 2] = i5;
  i3 = i5;
 }
 __ZdlPv(HEAP32[i4 >> 2] | 0);
 return;
}

function __ZNK4wasm7Literal12extendToSI64Ev(i1, i2) {
 i1 = i1 | 0;
 i2 = i2 | 0;
 var i3 = 0;
 if ((HEAP32[i2 >> 2] | 0) == 1) {
  i3 = HEAP32[i2 + 8 >> 2] | 0;
  HEAP32[i1 >> 2] = 2;
  i2 = i1 + 8 | 0;
  HEAP32[i2 >> 2] = i3;
  HEAP32[i2 + 4 >> 2] = ((i3 | 0) < 0) << 31 >> 31;
  return;
 } else ___assert_fail(14201, 14223, 315, 16393);
}

function __ZNSt3__16__treeIN4wasm4NameENS_4lessIS2_EENS_9allocatorIS2_EEE5clearEv(i1) {
 i1 = i1 | 0;
 var i2 = 0;
 i2 = i1 + 4 | 0;
 __ZNSt3__16__treeIN4wasm4NameENS_4lessIS2_EENS_9allocatorIS2_EEE7destroyEPNS_11__tree_nodeIS2_PvEE(i1, HEAP32[i2 >> 2] | 0);
 HEAP32[i1 + 8 >> 2] = 0;
 HEAP32[i1 >> 2] = i2;
 HEAP32[i2 >> 2] = 0;
 return;
}

function __ZNSt3__113__vector_baseIPcNS_9allocatorIS1_EEED2Ev(i1) {
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i4 = 0;
 i3 = HEAP32[i1 >> 2] | 0;
 if (i3 | 0) {
  i1 = i1 + 4 | 0;
  i2 = HEAP32[i1 >> 2] | 0;
  while (1) {
   if ((i2 | 0) == (i3 | 0)) break;
   i4 = i2 + -4 | 0;
   HEAP32[i1 >> 2] = i4;
   i2 = i4;
  }
  __ZdlPv(i3);
 }
 return;
}

function __ZN4wasm10WalkerPassINS_10PostWalkerINS_6VacuumENS_7VisitorIS2_vEEEEED2Ev(i1) {
 i1 = i1 | 0;
 __ZNSt3__113__vector_baseIN4wasm6WalkerINS1_6VacuumENS1_7VisitorIS3_vEEE4TaskENS_9allocatorIS7_EEED2Ev(i1 + 20 | 0);
 HEAP32[i1 >> 2] = 3200;
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i1 + 4 | 0);
 return;
}

function __ZNSt3__115basic_streambufIwNS_11char_traitsIwEEE7seekoffExNS_8ios_base7seekdirEj(i5, i6, i1, i2, i3, i4) {
 i5 = i5 | 0;
 i6 = i6 | 0;
 i1 = i1 | 0;
 i2 = i2 | 0;
 i3 = i3 | 0;
 i4 = i4 | 0;
 i6 = i5;
 HEAP32[i6 >> 2] = 0;
 HEAP32[i6 + 4 >> 2] = 0;
 i6 = i5 + 8 | 0;
 HEAP32[i6 >> 2] = -1;
 HEAP32[i6 + 4 >> 2] = -1;
 return;
}

function __ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE7seekoffExNS_8ios_base7seekdirEj(i5, i6, i1, i2, i3, i4) {
 i5 = i5 | 0;
 i6 = i6 | 0;
 i1 = i1 | 0;
 i2 = i2 | 0;
 i3 = i3 | 0;
 i4 = i4 | 0;
 i6 = i5;
 HEAP32[i6 >> 2] = 0;
 HEAP32[i6 + 4 >> 2] = 0;
 i6 = i5 + 8 | 0;
 HEAP32[i6 >> 2] = -1;
 HEAP32[i6 + 4 >> 2] = -1;
 return;
}

function __ZNSt3__113__vector_baseIjNS_9allocatorIjEEED2Ev(i1) {
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i4 = 0;
 i3 = HEAP32[i1 >> 2] | 0;
 if (i3 | 0) {
  i1 = i1 + 4 | 0;
  i2 = HEAP32[i1 >> 2] | 0;
  while (1) {
   if ((i2 | 0) == (i3 | 0)) break;
   i4 = i2 + -4 | 0;
   HEAP32[i1 >> 2] = i4;
   i2 = i4;
  }
  __ZdlPv(i3);
 }
 return;
}

function __ZNSt3__113__vector_baseIiNS_9allocatorIiEEED2Ev(i1) {
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i4 = 0;
 i3 = HEAP32[i1 >> 2] | 0;
 if (i3 | 0) {
  i1 = i1 + 4 | 0;
  i2 = HEAP32[i1 >> 2] | 0;
  while (1) {
   if ((i2 | 0) == (i3 | 0)) break;
   i4 = i2 + -4 | 0;
   HEAP32[i1 >> 2] = i4;
   i2 = i4;
  }
  __ZdlPv(i3);
 }
 return;
}

function __ZNSt3__113__vector_baseIcNS_9allocatorIcEEED2Ev(i1) {
 i1 = i1 | 0;
 var i2 = 0, i3 = 0, i4 = 0;
 i3 = HEAP32[i1 >> 2] | 0;
 if (i3 | 0) {
  i1 = i1 + 4 | 0;
  i2 = HEAP32[i1 >> 2] | 0;
  while (1) {
   if ((i2 | 0) == (i3 | 0)) break;
   i4 = i2 + -1 | 0;
   HEAP32[i1 >> 2] = i4;
   i2 = i4;
  }
  __ZdlPv(i3);
 }
 return;
}

function __ZN4wasm6getSigENS_8WasmTypeE(i2) {
 i2 = i2 | 0;
 var i1 = 0;
 switch (i2 | 0) {
 case 1:
  {
   i1 = 105;
   break;
  }
 case 2:
  {
   i1 = 106;
   break;
  }
 case 3:
  {
   i1 = 102;
   break;
  }
 case 4:
  {
   i1 = 100;
   break;
  }
 case 0:
  {
   i1 = 118;
   break;
  }
 default:
  _abort();
 }
 return i1 | 0;
}

function __ZN4wasm14EffectAnalyzerD2Ev(i1) {
 i1 = i1 | 0;
 __ZNSt3__16__treeIjNS_4lessIjEENS_9allocatorIjEEED2Ev(i1 + 40 | 0);
 __ZNSt3__16__treeIjNS_4lessIjEENS_9allocatorIjEEED2Ev(i1 + 28 | 0);
 __ZNSt3__113__vector_baseIN4wasm6WalkerINS1_14EffectAnalyzerENS1_7VisitorIS3_vEEE4TaskENS_9allocatorIS7_EEED2Ev(i1 + 4 | 0);
 return;
}

function __ZNSt3__15ctypeIcEC2EPKtbj(i4, i3, i2, i1) {
 i4 = i4 | 0;
 i3 = i3 | 0;
 i2 = i2 | 0;
 i1 = i1 | 0;
 HEAP32[i4 + 4 >> 2] = i1 + -1;
 HEAP32[i4 >> 2] = 11928;
 i1 = i4 + 8 | 0;
 HEAP32[i1 >> 2] = i3;
 HEAP8[i4 + 12 >> 0] = i2 & 1;
 if (!i3) {
  i4 = ___ctype_b_loc() | 0;
  HEAP32[i1 >> 2] = HEAP32[i4 >> 2];
 }
 return;
}

function __ZNSt3__118__libcpp_refstringC2EPKc(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 var i3 = 0, i4 = 0;
 i4 = _strlen(i1) | 0;
 i3 = __Znwj(i4 + 13 | 0) | 0;
 HEAP32[i3 >> 2] = i4;
 HEAP32[i3 + 4 >> 2] = i4;
 HEAP32[i3 + 8 >> 2] = 0;
 i3 = i3 + 12 | 0;
 _memcpy(i3 | 0, i1 | 0, i4 + 1 | 0) | 0;
 HEAP32[i2 >> 2] = i3;
 return;
}

function __ZNSt3__18functionIFN4wasm15ThreadWorkStateEvEED2Ev(i2) {
 i2 = i2 | 0;
 var i1 = 0;
 i1 = HEAP32[i2 + 16 >> 2] | 0;
 if ((i1 | 0) != (i2 | 0)) {
  if (i1 | 0) FUNCTION_TABLE_vi[HEAP32[(HEAP32[i1 >> 2] | 0) + 20 >> 2] & 255](i1);
 } else FUNCTION_TABLE_vi[HEAP32[(HEAP32[i1 >> 2] | 0) + 16 >> 2] & 255](i1);
 return;
}

function __ZNSt3__115basic_streambufIwNS_11char_traitsIwEEEC2Ev(i1) {
 i1 = i1 | 0;
 HEAP32[i1 >> 2] = 9348;
 __ZNSt3__16localeC2Ev(i1 + 4 | 0);
 i1 = i1 + 8 | 0;
 HEAP32[i1 >> 2] = 0;
 HEAP32[i1 + 4 >> 2] = 0;
 HEAP32[i1 + 8 >> 2] = 0;
 HEAP32[i1 + 12 >> 2] = 0;
 HEAP32[i1 + 16 >> 2] = 0;
 HEAP32[i1 + 20 >> 2] = 0;
 return;
}

function __ZNSt3__115basic_streambufIwNS_11char_traitsIwEEE5uflowEv(i1) {
 i1 = i1 | 0;
 var i2 = 0;
 if ((FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 36 >> 2] & 127](i1) | 0) == -1) i1 = -1; else {
  i2 = i1 + 12 | 0;
  i1 = HEAP32[i2 >> 2] | 0;
  HEAP32[i2 >> 2] = i1 + 4;
  i1 = HEAP32[i1 >> 2] | 0;
 }
 return i1 | 0;
}

function __ZNSt3__115basic_streambufIcNS_11char_traitsIcEEEC2Ev(i1) {
 i1 = i1 | 0;
 HEAP32[i1 >> 2] = 9284;
 __ZNSt3__16localeC2Ev(i1 + 4 | 0);
 i1 = i1 + 8 | 0;
 HEAP32[i1 >> 2] = 0;
 HEAP32[i1 + 4 >> 2] = 0;
 HEAP32[i1 + 8 >> 2] = 0;
 HEAP32[i1 + 12 >> 2] = 0;
 HEAP32[i1 + 16 >> 2] = 0;
 HEAP32[i1 + 20 >> 2] = 0;
 return;
}

function __ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE5uflowEv(i1) {
 i1 = i1 | 0;
 var i2 = 0;
 if ((FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 36 >> 2] & 127](i1) | 0) == -1) i1 = -1; else {
  i2 = i1 + 12 | 0;
  i1 = HEAP32[i2 >> 2] | 0;
  HEAP32[i2 >> 2] = i1 + 1;
  i1 = HEAPU8[i1 >> 0] | 0;
 }
 return i1 | 0;
}

function __ZNKSt3__18functionIFN4wasm15ThreadWorkStateEvEEclEv(i1) {
 i1 = i1 | 0;
 i1 = HEAP32[i1 + 16 >> 2] | 0;
 if (!i1) {
  i1 = ___cxa_allocate_exception(4) | 0;
  HEAP32[i1 >> 2] = 3180;
  ___cxa_throw(i1 | 0, 72, 16);
 } else return FUNCTION_TABLE_ii[HEAP32[(HEAP32[i1 >> 2] | 0) + 24 >> 2] & 127](i1) | 0;
 return 0;
}

function __ZNKSt3__120__time_get_c_storageIwE3__xEv(i1) {
 i1 = i1 | 0;
 if ((HEAP8[35392] | 0) == 0 ? ___cxa_guard_acquire(35392) | 0 : 0) {
  __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6__initEPKwj(40040, 11236, _wcslen(11236) | 0);
  ___cxa_atexit(231, 40040, ___dso_handle | 0) | 0;
 }
 return 40040;
}

function __ZNKSt3__120__time_get_c_storageIwE3__rEv(i1) {
 i1 = i1 | 0;
 if ((HEAP8[35384] | 0) == 0 ? ___cxa_guard_acquire(35384) | 0 : 0) {
  __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6__initEPKwj(40028, 11188, _wcslen(11188) | 0);
  ___cxa_atexit(231, 40028, ___dso_handle | 0) | 0;
 }
 return 40028;
}

function __ZNKSt3__120__time_get_c_storageIwE3__cEv(i1) {
 i1 = i1 | 0;
 if ((HEAP8[35376] | 0) == 0 ? ___cxa_guard_acquire(35376) | 0 : 0) {
  __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6__initEPKwj(40016, 11104, _wcslen(11104) | 0);
  ___cxa_atexit(231, 40016, ___dso_handle | 0) | 0;
 }
 return 40016;
}

function __ZNKSt3__120__time_get_c_storageIwE3__XEv(i1) {
 i1 = i1 | 0;
 if ((HEAP8[35400] | 0) == 0 ? ___cxa_guard_acquire(35400) | 0 : 0) {
  __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6__initEPKwj(40052, 11272, _wcslen(11272) | 0);
  ___cxa_atexit(231, 40052, ___dso_handle | 0) | 0;
 }
 return 40052;
}

function __ZN4wasm5unhexEc(i3) {
 i3 = i3 | 0;
 var i1 = 0, i2 = 0;
 i2 = i3 << 24 >> 24;
 do if ((i3 + -48 & 255) >= 10) {
  if ((i3 + -97 & 255) < 6) {
   i1 = i2 + -87 | 0;
   break;
  }
  if ((i3 + -65 & 255) < 6) {
   i1 = i2 + -55 | 0;
   break;
  } else _abort();
 } else i1 = i2 + -48 | 0; while (0);
 return i1 | 0;
}

function __ZNKSt3__15ctypeIcE9do_narrowEPKcS3_cPc(i3, i1, i5, i4, i2) {
 i3 = i3 | 0;
 i1 = i1 | 0;
 i5 = i5 | 0;
 i4 = i4 | 0;
 i2 = i2 | 0;
 while (1) {
  if ((i1 | 0) == (i5 | 0)) break;
  i3 = HEAP8[i1 >> 0] | 0;
  HEAP8[i2 >> 0] = i3 << 24 >> 24 > -1 ? i3 : i4;
  i2 = i2 + 1 | 0;
  i1 = i1 + 1 | 0;
 }
 return i5 | 0;
}

function _sn_write(i1, i3, i2) {
 i1 = i1 | 0;
 i3 = i3 | 0;
 i2 = i2 | 0;
 var i4 = 0, i5 = 0;
 i4 = i1 + 20 | 0;
 i5 = HEAP32[i4 >> 2] | 0;
 i1 = (HEAP32[i1 + 16 >> 2] | 0) - i5 | 0;
 i1 = i1 >>> 0 > i2 >>> 0 ? i2 : i1;
 _memcpy(i5 | 0, i3 | 0, i1 | 0) | 0;
 HEAP32[i4 >> 2] = (HEAP32[i4 >> 2] | 0) + i1;
 return i2 | 0;
}

function __ZNSt3__16__treeINS_12__value_typeIjjEENS_19__map_value_compareIjS2_NS_4lessIjEELb1EEENS_9allocatorIS2_EEED2Ev(i1) {
 i1 = i1 | 0;
 __ZNSt3__16__treeINS_12__value_typeIjjEENS_19__map_value_compareIjS2_NS_4lessIjEELb1EEENS_9allocatorIS2_EEE7destroyEPNS_11__tree_nodeIS2_PvEE(i1, HEAP32[i1 + 4 >> 2] | 0);
 return;
}

function __ZN10__cxxabiv112_GLOBAL__N_15arenaILj4096EE10deallocateEPcj(i1, i3, i2) {
 i1 = i1 | 0;
 i3 = i3 | 0;
 i2 = i2 | 0;
 if (i1 >>> 0 <= i3 >>> 0 & (i1 + 4096 | 0) >>> 0 >= i3 >>> 0) {
  i1 = i1 + 4096 | 0;
  if ((i3 + (i2 + 15 & -16) | 0) == (HEAP32[i1 >> 2] | 0)) HEAP32[i1 >> 2] = i3;
 } else _free(i3);
 return;
}

function __ZNSt3__18numpunctIwEC2Ej(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 HEAP32[i2 + 4 >> 2] = i1 + -1;
 HEAP32[i2 >> 2] = 12020;
 HEAP32[i2 + 8 >> 2] = 46;
 HEAP32[i2 + 12 >> 2] = 44;
 i1 = i2 + 16 | 0;
 i2 = 0;
 while (1) {
  if ((i2 | 0) == 3) break;
  HEAP32[i1 + (i2 << 2) >> 2] = 0;
  i2 = i2 + 1 | 0;
 }
 return;
}

function __ZNSt3__18numpunctIcEC2Ej(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 HEAP32[i2 + 4 >> 2] = i1 + -1;
 HEAP32[i2 >> 2] = 11980;
 HEAP8[i2 + 8 >> 0] = 46;
 HEAP8[i2 + 9 >> 0] = 44;
 i1 = i2 + 12 | 0;
 i2 = 0;
 while (1) {
  if ((i2 | 0) == 3) break;
  HEAP32[i1 + (i2 << 2) >> 2] = 0;
  i2 = i2 + 1 | 0;
 }
 return;
}

function __ZNSt3__18ios_baseD2Ev(i1) {
 i1 = i1 | 0;
 HEAP32[i1 >> 2] = 9268;
 __ZNSt3__18ios_base16__call_callbacksENS0_5eventE(i1, 0);
 __ZNSt3__16localeD2Ev(i1 + 28 | 0);
 _free(HEAP32[i1 + 32 >> 2] | 0);
 _free(HEAP32[i1 + 36 >> 2] | 0);
 _free(HEAP32[i1 + 48 >> 2] | 0);
 _free(HEAP32[i1 + 60 >> 2] | 0);
 return;
}

function __ZNSt3__110__function6__funcIZN4wasm6WalkerINS2_17RemoveUnusedNamesENS2_7VisitorIS4_vEEE9startWalkEPNS2_6ModuleEEUlvE_NS_9allocatorISA_EEFNS2_15ThreadWorkStateEvEEclEv(i1) {
 i1 = i1 | 0;
 return __ZZN4wasm6WalkerINS_17RemoveUnusedNamesENS_7VisitorIS1_vEEE9startWalkEPNS_6ModuleEENKUlvE_clEv(i1 + 4 | 0) | 0;
}

function __ZNKSt3__17collateIwE7do_hashEPKwS3_(i1, i2, i3) {
 i1 = i1 | 0;
 i2 = i2 | 0;
 i3 = i3 | 0;
 var i4 = 0, i5 = 0;
 i1 = 0;
 while (1) {
  if ((i2 | 0) == (i3 | 0)) break;
  i4 = (HEAP32[i2 >> 2] | 0) + (i1 << 4) | 0;
  i5 = i4 & -268435456;
  i1 = (i5 >>> 24 | i5) ^ i4;
  i2 = i2 + 4 | 0;
 }
 return i1 | 0;
}

function __ZNSt3__121__thread_specific_ptrINS_15__thread_structEE5resetEPS1_(i3, i2) {
 i3 = i3 | 0;
 i2 = i2 | 0;
 var i1 = 0;
 i1 = _pthread_getspecific(HEAP32[i3 >> 2] | 0) | 0;
 _pthread_setspecific(HEAP32[i3 >> 2] | 0, i2 | 0) | 0;
 if (i1 | 0) {
  __ZNSt3__115__thread_structD2Ev(i1);
  __ZdlPv(i1);
 }
 return;
}

function __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc(i3, i1, i2) {
 i3 = i3 | 0;
 i1 = i1 | 0;
 i2 = i2 | 0;
 return __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKcj(i3, i1, i2, _strlen(i2) | 0) | 0;
}

function __ZNKSt3__17collateIcE7do_hashEPKcS3_(i1, i2, i3) {
 i1 = i1 | 0;
 i2 = i2 | 0;
 i3 = i3 | 0;
 var i4 = 0, i5 = 0;
 i1 = 0;
 while (1) {
  if ((i2 | 0) == (i3 | 0)) break;
  i4 = (HEAP8[i2 >> 0] | 0) + (i1 << 4) | 0;
  i5 = i4 & -268435456;
  i1 = (i5 >>> 24 | i5) ^ i4;
  i2 = i2 + 1 | 0;
 }
 return i1 | 0;
}

function __ZN4wasm8Function12getLocalNameEj(i4, i3) {
 i4 = i4 | 0;
 i3 = i3 | 0;
 var i1 = 0, i2 = 0;
 i1 = HEAP32[i4 + 40 >> 2] | 0;
 if ((HEAP32[i4 + 44 >> 2] | 0) - i1 >> 2 >>> 0 > i3 >>> 0 ? (i2 = HEAP32[i1 + (i3 << 2) >> 2] | 0, i2 | 0) : 0) return i2 | 0;
 ___assert_fail(16099, 14223, 1099, 16151);
 return 0;
}

function __GLOBAL__sub_I_optimizer_shared_cpp() {
 HEAP32[9165] = 0;
 __ZN6cashew7IString3setEPKcb(36664, 26138, 1);
 __ZN6cashew7IString3setEPKcb(36668, 26157, 1);
 __ZN6cashew7IString3setEPKcb(36672, 26176, 1);
 __ZN6cashew7IString3setEPKcb(36676, 26195, 1);
 __ZN6cashew7IString3setEPKcb(36680, 26216, 1);
 return;
}

function __ZN4wasm8Function12getLocalTypeEj(i4, i3) {
 i4 = i4 | 0;
 i3 = i3 | 0;
 var i1 = 0, i2 = 0;
 i1 = HEAP32[i4 + 8 >> 2] | 0;
 i2 = (HEAP32[i4 + 12 >> 2] | 0) - i1 >> 2;
 if (i2 >>> 0 > i3 >>> 0) i1 = i1 + (i3 << 2) | 0; else i1 = (HEAP32[i4 + 20 >> 2] | 0) + (i3 - i2 << 2) | 0;
 return HEAP32[i1 >> 2] | 0;
}

function __ZN4wasm15RemoveUnusedBrs5clearEPS0_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 var i3 = 0, i4 = 0;
 i3 = HEAP32[i2 + 44 >> 2] | 0;
 i1 = i2 + 48 | 0;
 i2 = HEAP32[i1 >> 2] | 0;
 while (1) {
  if ((i2 | 0) == (i3 | 0)) break;
  i4 = i2 + -4 | 0;
  HEAP32[i1 >> 2] = i4;
  i2 = i4;
 }
 return;
}

function __ZNSt3__18functionIFPN4wasm4PassEvEED2Ev(i2) {
 i2 = i2 | 0;
 var i1 = 0;
 i1 = HEAP32[i2 + 16 >> 2] | 0;
 if ((i1 | 0) != (i2 | 0)) {
  if (i1 | 0) FUNCTION_TABLE_vi[HEAP32[(HEAP32[i1 >> 2] | 0) + 20 >> 2] & 255](i1);
 } else FUNCTION_TABLE_vi[HEAP32[(HEAP32[i1 >> 2] | 0) + 16 >> 2] & 255](i1);
 return;
}

function __ZNSt3__110__function6__funcIZN4wasm6WalkerINS2_15RemoveUnusedBrsENS2_7VisitorIS4_vEEE9startWalkEPNS2_6ModuleEEUlvE_NS_9allocatorISA_EEFNS2_15ThreadWorkStateEvEEclEv(i1) {
 i1 = i1 | 0;
 return __ZZN4wasm6WalkerINS_15RemoveUnusedBrsENS_7VisitorIS1_vEEE9startWalkEPNS_6ModuleEENKUlvE_clEv(i1 + 4 | 0) | 0;
}

function __ZNK4wasm7Literal12extendToUI64Ev(i1, i2) {
 i1 = i1 | 0;
 i2 = i2 | 0;
 var i3 = 0;
 if ((HEAP32[i2 >> 2] | 0) == 1) {
  i3 = HEAP32[i2 + 8 >> 2] | 0;
  HEAP32[i1 >> 2] = 2;
  i2 = i1 + 8 | 0;
  HEAP32[i2 >> 2] = i3;
  HEAP32[i2 + 4 >> 2] = 0;
  return;
 } else ___assert_fail(14201, 14223, 319, 16406);
}

function __ZN4wasm14SimplifyLocals10BlockBreakC2EOS1_(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 HEAP32[i2 >> 2] = HEAP32[i1 >> 2];
 __ZNSt3__16__treeINS_12__value_typeIjN4wasm14SimplifyLocals12SinkableInfoEEENS_19__map_value_compareIjS5_NS_4lessIjEELb1EEENS_9allocatorIS5_EEEC2EOSC_(i2 + 4 | 0, i1 + 4 | 0);
 return;
}

function _rintf(d1) {
 d1 = +d1;
 var i2 = 0;
 i2 = (HEAPF32[tempDoublePtr >> 2] = d1, HEAP32[tempDoublePtr >> 2] | 0);
 if ((i2 & 2130706432) >>> 0 <= 1249902592) {
  i2 = (i2 | 0) < 0;
  d1 = i2 ? d1 + -8388608.0 + 8388608.0 : d1 + 8388608.0 + -8388608.0;
  if (d1 == 0.0) d1 = i2 ? -0.0 : 0.0;
 }
 return +d1;
}

function __ZNSt3__110__function6__funcIZN4wasm6WalkerINS2_14SimplifyLocalsENS2_7VisitorIS4_vEEE9startWalkEPNS2_6ModuleEEUlvE_NS_9allocatorISA_EEFNS2_15ThreadWorkStateEvEEclEv(i1) {
 i1 = i1 | 0;
 return __ZZN4wasm6WalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE9startWalkEPNS_6ModuleEENKUlvE_clEv(i1 + 4 | 0) | 0;
}

function __ZNSt3__110__function6__funcIZN4wasm6WalkerINS2_14PostEmscriptenENS2_7VisitorIS4_vEEE9startWalkEPNS2_6ModuleEEUlvE_NS_9allocatorISA_EEFNS2_15ThreadWorkStateEvEEclEv(i1) {
 i1 = i1 | 0;
 return __ZZN4wasm6WalkerINS_14PostEmscriptenENS_7VisitorIS1_vEEE9startWalkEPNS_6ModuleEENKUlvE_clEv(i1 + 4 | 0) | 0;
}

function __ZNSt3__110__function6__funcIZN4wasm6WalkerINS2_13ReorderLocalsENS2_7VisitorIS4_vEEE9startWalkEPNS2_6ModuleEEUlvE_NS_9allocatorISA_EEFNS2_15ThreadWorkStateEvEEclEv(i1) {
 i1 = i1 | 0;
 return __ZZN4wasm6WalkerINS_13ReorderLocalsENS_7VisitorIS1_vEEE9startWalkEPNS_6ModuleEENKUlvE_clEv(i1 + 4 | 0) | 0;
}

function __ZNKSt3__120__time_get_c_storageIcE3__rEv(i1) {
 i1 = i1 | 0;
 if ((HEAP8[35304] | 0) == 0 ? ___cxa_guard_acquire(35304) | 0 : 0) {
  __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6__initEPKcj(39216, 31207, 11);
  ___cxa_atexit(227, 39216, ___dso_handle | 0) | 0;
 }
 return 39216;
}

function __ZNKSt3__120__time_get_c_storageIcE3__cEv(i1) {
 i1 = i1 | 0;
 if ((HEAP8[35296] | 0) == 0 ? ___cxa_guard_acquire(35296) | 0 : 0) {
  __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6__initEPKcj(39204, 31186, 20);
  ___cxa_atexit(227, 39204, ___dso_handle | 0) | 0;
 }
 return 39204;
}

function __ZN4wasm10ThreadPool19notifyThreadIsReadyEv(i1) {
 i1 = i1 | 0;
 var i2 = 0, i3 = 0;
 i2 = i1 + 16 | 0;
 __ZNSt3__15mutex4lockEv(i2);
 i3 = i1 + 92 | 0;
 HEAP32[i3 >> 2] = (HEAP32[i3 >> 2] | 0) + 1;
 __ZNSt3__118condition_variable10notify_oneEv(i1 + 44 | 0);
 __ZNSt3__15mutex6unlockEv(i2);
 return;
}

function __ZNKSt3__120__time_get_c_storageIcE3__xEv(i1) {
 i1 = i1 | 0;
 if ((HEAP8[35312] | 0) == 0 ? ___cxa_guard_acquire(35312) | 0 : 0) {
  __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6__initEPKcj(39228, 31219, 8);
  ___cxa_atexit(227, 39228, ___dso_handle | 0) | 0;
 }
 return 39228;
}

function __ZNKSt3__120__time_get_c_storageIcE3__XEv(i1) {
 i1 = i1 | 0;
 if ((HEAP8[35320] | 0) == 0 ? ___cxa_guard_acquire(35320) | 0 : 0) {
  __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6__initEPKcj(39240, 31228, 8);
  ___cxa_atexit(227, 39240, ___dso_handle | 0) | 0;
 }
 return 39240;
}

function __ZN4wasm7Builder12makeSetLocalEjPNS_10ExpressionE(i2, i1, i3) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 i3 = i3 | 0;
 i2 = __ZN10MixedArena5allocIN4wasm8SetLocalEEEPT_v(HEAP32[i2 >> 2] | 0) | 0;
 HEAP32[i2 + 8 >> 2] = i1;
 HEAP32[i2 + 12 >> 2] = i3;
 HEAP32[i2 + 4 >> 2] = HEAP32[i3 + 4 >> 2];
 return i2 | 0;
}

function __ZN4wasm13ReorderLocalsD2Ev(i1) {
 i1 = i1 | 0;
 HEAP32[i1 >> 2] = 4672;
 __ZNSt3__16__treeINS_12__value_typeIjjEENS_19__map_value_compareIjS2_NS_4lessIjEELb1EEENS_9allocatorIS2_EEED2Ev(i1 + 40 | 0);
 __ZN4wasm10WalkerPassINS_10PostWalkerINS_13ReorderLocalsENS_7VisitorIS2_vEEEEED2Ev(i1);
 return;
}

function __ZN10__cxxabiv112_GLOBAL__N_15arenaILj4096EE8allocateEj(i4, i1) {
 i4 = i4 | 0;
 i1 = i1 | 0;
 var i2 = 0, i3 = 0;
 i2 = i1 + 15 & -16;
 i3 = i4 + 4096 | 0;
 i1 = HEAP32[i3 >> 2] | 0;
 if ((i4 + 4096 - i1 | 0) >>> 0 < i2 >>> 0) i1 = _malloc(i2) | 0; else HEAP32[i3 >> 2] = i1 + i2;
 return i1 | 0;
}

function __ZZN4wasm12RegisterPassINS_17RemoveUnusedNamesEEC1EPKcS4_ENKUlvE_clEv(i1) {
 i1 = i1 | 0;
 var i2 = 0, i3 = 0;
 i1 = __Znwj(52) | 0;
 i2 = i1;
 i3 = i2 + 52 | 0;
 do {
  HEAP32[i2 >> 2] = 0;
  i2 = i2 + 4 | 0;
 } while ((i2 | 0) < (i3 | 0));
 __ZN4wasm17RemoveUnusedNamesC2Ev(i1);
 return i1 | 0;
}

function __ZNSt3__110__function6__funcIZN4wasm6WalkerINS2_11MergeBlocksENS2_7VisitorIS4_vEEE9startWalkEPNS2_6ModuleEEUlvE_NS_9allocatorISA_EEFNS2_15ThreadWorkStateEvEEclEv(i1) {
 i1 = i1 | 0;
 return __ZZN4wasm6WalkerINS_11MergeBlocksENS_7VisitorIS1_vEEE9startWalkEPNS_6ModuleEENKUlvE_clEv(i1 + 4 | 0) | 0;
}

function __ZNKSt3__18messagesIwE7do_openERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEERKNS_6localeE(i3, i2, i1) {
 i3 = i3 | 0;
 i2 = i2 | 0;
 i1 = i1 | 0;
 i3 = _catopen((HEAP8[i2 >> 0] & 1) == 0 ? i2 + 1 | 0 : HEAP32[i2 + 8 >> 2] | 0, 1) | 0;
 return i3 >>> ((i3 | 0) != (-1 | 0) & 1) | 0;
}

function __ZNKSt3__18messagesIcE7do_openERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEERKNS_6localeE(i3, i2, i1) {
 i3 = i3 | 0;
 i2 = i2 | 0;
 i1 = i1 | 0;
 i3 = _catopen((HEAP8[i2 >> 0] & 1) == 0 ? i2 + 1 | 0 : HEAP32[i2 + 8 >> 2] | 0, 1) | 0;
 return i3 >>> ((i3 | 0) != (-1 | 0) & 1) | 0;
}

function __ZN4wasm18CountLeadingZeroesIjEEiT_(i1) {
 i1 = i1 | 0;
 i1 = i1 >>> 1 | i1;
 i1 = i1 >>> 2 | i1;
 i1 = i1 >>> 4 | i1;
 i1 = i1 >>> 8 | i1;
 i1 = i1 >>> 16 | i1;
 if (!i1) i1 = 32; else {
  i1 = 26269 + ((Math_imul(i1, 130329821) | 0) >>> 27) | 0;
  i1 = HEAPU8[i1 >> 0] | 0;
 }
 return i1 | 0;
}

function __ZNSt3__18functionIFvvEED2Ev(i2) {
 i2 = i2 | 0;
 var i1 = 0;
 i1 = HEAP32[i2 + 16 >> 2] | 0;
 if ((i1 | 0) != (i2 | 0)) {
  if (i1 | 0) FUNCTION_TABLE_vi[HEAP32[(HEAP32[i1 >> 2] | 0) + 20 >> 2] & 255](i1);
 } else FUNCTION_TABLE_vi[HEAP32[(HEAP32[i1 >> 2] | 0) + 16 >> 2] & 255](i1);
 return;
}

function __ZNSt3__16threadC2IRFvPvEJPN4wasm6ThreadEEvEEOT_DpOT0_(i4, i3, i2) {
 i4 = i4 | 0;
 i3 = i3 | 0;
 i2 = i2 | 0;
 var i1 = 0;
 i1 = __Znwj(8) | 0;
 i2 = HEAP32[i2 >> 2] | 0;
 HEAP32[i1 >> 2] = i3;
 HEAP32[i1 + 4 >> 2] = i2;
 if (_pthread_create(i4 | 0, 0, 117, i1 | 0) | 0) __ZdlPv(i1);
 return;
}

function __ZN4wasm17RemoveUnusedNames10visitBreakEPNS_5BreakE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 var i3 = 0;
 i3 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 __ZNSt3__16__treeIN4wasm4NameENS_4lessIS2_EENS_9allocatorIS2_EEE15__insert_uniqueERKS2_(i3, i2 + 40 | 0, i1 + 8 | 0);
 STACKTOP = i3;
 return;
}

function ___uremdi3(i1, i2, i3, i4) {
 i1 = i1 | 0;
 i2 = i2 | 0;
 i3 = i3 | 0;
 i4 = i4 | 0;
 var i5 = 0, i6 = 0;
 i6 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i5 = i6 | 0;
 ___udivmoddi4(i1, i2, i3, i4, i5) | 0;
 STACKTOP = i6;
 return (tempRet0 = HEAP32[i5 + 4 >> 2] | 0, HEAP32[i5 >> 2] | 0) | 0;
}

function __ZZN4wasm12RegisterPassINS_15RemoveUnusedBrsEEC1EPKcS4_ENKUlvE_clEv(i1) {
 i1 = i1 | 0;
 var i2 = 0, i3 = 0;
 i1 = __Znwj(68) | 0;
 i2 = i1;
 i3 = i2 + 68 | 0;
 do {
  HEAP32[i2 >> 2] = 0;
  i2 = i2 + 4 | 0;
 } while ((i2 | 0) < (i3 | 0));
 __ZN4wasm15RemoveUnusedBrsC2Ev(i1);
 return i1 | 0;
}

function __ZZN4wasm12RegisterPassINS_14SimplifyLocalsEEC1EPKcS4_ENKUlvE_clEv(i1) {
 i1 = i1 | 0;
 var i2 = 0, i3 = 0;
 i1 = __Znwj(128) | 0;
 i2 = i1;
 i3 = i2 + 128 | 0;
 do {
  HEAP32[i2 >> 2] = 0;
  i2 = i2 + 4 | 0;
 } while ((i2 | 0) < (i3 | 0));
 __ZN4wasm14SimplifyLocalsC2Ev(i1);
 return i1 | 0;
}

function __ZNSt3__115basic_streambufIwNS_11char_traitsIwEEE7seekposENS_4fposI11__mbstate_tEEj(i3, i4, i1, i2) {
 i3 = i3 | 0;
 i4 = i4 | 0;
 i1 = i1 | 0;
 i2 = i2 | 0;
 i4 = i3;
 HEAP32[i4 >> 2] = 0;
 HEAP32[i4 + 4 >> 2] = 0;
 i4 = i3 + 8 | 0;
 HEAP32[i4 >> 2] = -1;
 HEAP32[i4 + 4 >> 2] = -1;
 return;
}

function __ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE7seekposENS_4fposI11__mbstate_tEEj(i3, i4, i1, i2) {
 i3 = i3 | 0;
 i4 = i4 | 0;
 i1 = i1 | 0;
 i2 = i2 | 0;
 i4 = i3;
 HEAP32[i4 >> 2] = 0;
 HEAP32[i4 + 4 >> 2] = 0;
 i4 = i3 + 8 | 0;
 HEAP32[i4 >> 2] = -1;
 HEAP32[i4 + 4 >> 2] = -1;
 return;
}

function __ZN4wasm17SExpressionParserC2EPc(i3, i1) {
 i3 = i3 | 0;
 i1 = i1 | 0;
 var i2 = 0;
 HEAP32[i3 >> 2] = i1;
 __ZN10MixedArenaC2Ev(i3 + 4 | 0);
 i1 = i3 + 56 | 0;
 i2 = 0;
 while (1) {
  HEAP32[i1 >> 2] = i2;
  if (i2 | 0) break;
  i2 = __ZN4wasm17SExpressionParser5parseEv(i3) | 0;
 }
 return;
}

function dynCall_iiiiiiiii(i9, i1, i2, i3, i4, i5, i6, i7, i8) {
 i9 = i9 | 0;
 i1 = i1 | 0;
 i2 = i2 | 0;
 i3 = i3 | 0;
 i4 = i4 | 0;
 i5 = i5 | 0;
 i6 = i6 | 0;
 i7 = i7 | 0;
 i8 = i8 | 0;
 return FUNCTION_TABLE_iiiiiiiii[i9 & 15](i1 | 0, i2 | 0, i3 | 0, i4 | 0, i5 | 0, i6 | 0, i7 | 0, i8 | 0) | 0;
}

function __ZNKSt3__110__function6__funcIZN4wasm6WalkerINS2_17RemoveUnusedNamesENS2_7VisitorIS4_vEEE9startWalkEPNS2_6ModuleEEUlvE_NS_9allocatorISA_EEFNS2_15ThreadWorkStateEvEE6targetERKSt9type_info(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 return ((HEAP32[i1 + 4 >> 2] | 0) == 21043 ? i2 + 4 | 0 : 0) | 0;
}

function __ZN4wasm16PrintSExpression16visitUnreachableEPNS_11UnreachableE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_c(__Z17printMinorOpeningRNSt3__113basic_ostreamIcNS_11char_traitsIcEEEEPKc(HEAP32[i2 >> 2] | 0, 18868) | 0, 41) | 0;
 return;
}

function __ZN4wasm17RemoveUnusedNames10visitBlockEPNS_5BlockE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 i1 = i1 + 8 | 0;
 if (HEAP32[i1 >> 2] | 0 ? (__ZNKSt3__16__treeIN4wasm4NameENS_4lessIS2_EENS_9allocatorIS2_EEE14__count_uniqueIS2_EEjRKT_(i2 + 40 | 0, i1) | 0) == 0 : 0) HEAP32[i1 >> 2] = 0;
 return;
}

function __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev(i1) {
 i1 = i1 | 0;
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i1 + 12 | 0);
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i1);
 return;
}

function __Z8doIndentRNSt3__113basic_ostreamIcNS_11char_traitsIcEEEEj(i3, i2) {
 i3 = i3 | 0;
 i2 = i2 | 0;
 var i1 = 0;
 i1 = 0;
 while (1) {
  if ((i1 | 0) == (i2 | 0)) break;
  __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(i3, 18078) | 0;
  i1 = i1 + 1 | 0;
 }
 return i3 | 0;
}

function __ZNKSt3__110__function6__funcIZN4wasm6WalkerINS2_15RemoveUnusedBrsENS2_7VisitorIS4_vEEE9startWalkEPNS2_6ModuleEEUlvE_NS_9allocatorISA_EEFNS2_15ThreadWorkStateEvEE6targetERKSt9type_info(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 return ((HEAP32[i1 + 4 >> 2] | 0) == 20265 ? i2 + 4 | 0 : 0) | 0;
}

function __ZZN4wasm12RegisterPassINS_13ReorderLocalsEEC1EPKcS4_ENKUlvE_clEv(i1) {
 i1 = i1 | 0;
 var i2 = 0, i3 = 0;
 i1 = __Znwj(52) | 0;
 i2 = i1;
 i3 = i2 + 52 | 0;
 do {
  HEAP32[i2 >> 2] = 0;
  i2 = i2 + 4 | 0;
 } while ((i2 | 0) < (i3 | 0));
 __ZN4wasm13ReorderLocalsC2Ev(i1);
 return i1 | 0;
}

function __ZNKSt3__110__function6__funcIZN4wasm6WalkerINS2_14SimplifyLocalsENS2_7VisitorIS4_vEEE9startWalkEPNS2_6ModuleEEUlvE_NS_9allocatorISA_EEFNS2_15ThreadWorkStateEvEE6targetERKSt9type_info(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 return ((HEAP32[i1 + 4 >> 2] | 0) == 23778 ? i2 + 4 | 0 : 0) | 0;
}

function __ZNKSt3__110__function6__funcIZN4wasm6WalkerINS2_14PostEmscriptenENS2_7VisitorIS4_vEEE9startWalkEPNS2_6ModuleEEUlvE_NS_9allocatorISA_EEFNS2_15ThreadWorkStateEvEE6targetERKSt9type_info(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 return ((HEAP32[i1 + 4 >> 2] | 0) == 21892 ? i2 + 4 | 0 : 0) | 0;
}

function __ZN4wasm15getWasmTypeSizeENS_8WasmTypeE(i2) {
 i2 = i2 | 0;
 var i1 = 0;
 switch (i2 | 0) {
 case 0:
  {
   _abort();
   break;
  }
 case 3:
 case 1:
  {
   i1 = 4;
   break;
  }
 case 2:
  {
   i1 = 8;
   break;
  }
 case 4:
  {
   i1 = 8;
   break;
  }
 default:
  {}
 }
 return i1 | 0;
}

function __ZNKSt3__18functionIFvvEEclEv(i1) {
 i1 = i1 | 0;
 i1 = HEAP32[i1 + 16 >> 2] | 0;
 if (!i1) {
  i1 = ___cxa_allocate_exception(4) | 0;
  HEAP32[i1 >> 2] = 3180;
  ___cxa_throw(i1 | 0, 72, 16);
 } else {
  FUNCTION_TABLE_vi[HEAP32[(HEAP32[i1 >> 2] | 0) + 24 >> 2] & 255](i1);
  return;
 }
}

function __ZNKSt3__110__function6__funcIZN4wasm6WalkerINS2_13ReorderLocalsENS2_7VisitorIS4_vEEE9startWalkEPNS2_6ModuleEEUlvE_NS_9allocatorISA_EEFNS2_15ThreadWorkStateEvEE6targetERKSt9type_info(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 return ((HEAP32[i1 + 4 >> 2] | 0) == 24578 ? i2 + 4 | 0 : 0) | 0;
}

function __ZN4wasm10ThreadPool20resetThreadsAreReadyEv(i1) {
 i1 = i1 | 0;
 var i2 = 0, i3 = 0;
 i3 = i1 + 92 | 0;
 i2 = HEAP32[i3 >> 2] | 0;
 HEAP32[i3 >> 2] = 0;
 if ((i2 | 0) == ((HEAP32[i1 + 4 >> 2] | 0) - (HEAP32[i1 >> 2] | 0) >> 2 | 0)) return; else ___assert_fail(26316, 26338, 177, 26362);
}

function __ZNKSt3__110__function6__funcIZN4wasm6WalkerINS2_11MergeBlocksENS2_7VisitorIS4_vEEE9startWalkEPNS2_6ModuleEEUlvE_NS_9allocatorISA_EEFNS2_15ThreadWorkStateEvEE6targetERKSt9type_info(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 return ((HEAP32[i1 + 4 >> 2] | 0) == 17894 ? i2 + 4 | 0 : 0) | 0;
}

function __Z17printMinorOpeningRNSt3__113basic_ostreamIcNS_11char_traitsIcEEEEPKc(i1, i2) {
 i1 = i1 | 0;
 i2 = i2 | 0;
 __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_c(i1, 40) | 0;
 __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(i1, i2) | 0;
 return i1 | 0;
}

function __ZNSt3__114__shared_count16__release_sharedEv(i1) {
 i1 = i1 | 0;
 var i2 = 0, i3 = 0;
 i3 = i1 + 4 | 0;
 i2 = HEAP32[i3 >> 2] | 0;
 HEAP32[i3 >> 2] = i2 + -1;
 if (!i2) {
  FUNCTION_TABLE_vi[HEAP32[(HEAP32[i1 >> 2] | 0) + 8 >> 2] & 255](i1);
  i1 = 1;
 } else i1 = 0;
 return i1 | 0;
}

function __ZNSt3__110__function6__funcIZN4wasm6WalkerINS2_6VacuumENS2_7VisitorIS4_vEEE9startWalkEPNS2_6ModuleEEUlvE_NS_9allocatorISA_EEFNS2_15ThreadWorkStateEvEEclEv(i1) {
 i1 = i1 | 0;
 return __ZZN4wasm6WalkerINS_6VacuumENS_7VisitorIS1_vEEE9startWalkEPNS_6ModuleEENKUlvE_clEv(i1 + 4 | 0) | 0;
}

function __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 return __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj(i2, i1, _strlen(i1) | 0) | 0;
}

function __ZNKSt3__17collateIwE12do_transformEPKwS3_(i3, i4, i2, i1) {
 i3 = i3 | 0;
 i4 = i4 | 0;
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6__initIPKwEENS_9enable_ifIXsr21__is_forward_iteratorIT_EE5valueEvE4typeESA_SA_(i3, i2, i1);
 return;
}

function __ZNKSt3__17collateIcE12do_transformEPKcS3_(i3, i4, i2, i1) {
 i3 = i3 | 0;
 i4 = i4 | 0;
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6__initIPKcEENS_9enable_ifIXsr21__is_forward_iteratorIT_EE5valueEvE4typeESA_SA_(i3, i2, i1);
 return;
}

function __ZN4wasm16PrintSExpression14printableLocalEj(i2, i3) {
 i2 = i2 | 0;
 i3 = i3 | 0;
 var i1 = 0;
 i2 = HEAP32[i2 + 24 >> 2] | 0;
 if (!((i2 | 0) != 0 ? (i1 = __ZN4wasm8Function12tryLocalNameEj(i2, i3) | 0, (i1 | 0) != 0) : 0)) i1 = __ZN4wasm4Name7fromIntEj(i3) | 0;
 return i1 | 0;
}

function __ZN10MixedArenaD2Ev(i2) {
 i2 = i2 | 0;
 var i1 = 0;
 __ZN10MixedArena5clearEv(i2);
 i1 = HEAP32[i2 + 48 >> 2] | 0;
 if (i1 | 0) {
  __ZN10MixedArenaD2Ev(i1);
  __ZdlPv(i1);
 }
 __ZNSt3__15mutexD2Ev(i2 + 20 | 0);
 __ZNSt3__113__vector_baseIPcNS_9allocatorIS1_EEED2Ev(i2);
 return;
}

function __ZNKSt3__110__function6__funcIZN4wasm6WalkerINS2_6VacuumENS2_7VisitorIS4_vEEE9startWalkEPNS2_6ModuleEEUlvE_NS_9allocatorISA_EEFNS2_15ThreadWorkStateEvEE6targetERKSt9type_info(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 return ((HEAP32[i1 + 4 >> 2] | 0) == 25312 ? i2 + 4 | 0 : 0) | 0;
}

function __ZN4wasm6WalkerINS_15SetLocalRemoverENS_7VisitorIS1_vEEE15doVisitSetLocalEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm15SetLocalRemover13visitSetLocalEPNS_8SetLocalE(i2, __ZN4wasm10Expression4castINS_8SetLocalEEEPT_v(HEAP32[i1 >> 2] | 0) | 0);
 return;
}

function __ZN4wasm14EffectAnalyzer13visitSetLocalEPNS_8SetLocalE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 var i3 = 0;
 i3 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 __ZNSt3__16__treeIjNS_4lessIjEENS_9allocatorIjEEE15__insert_uniqueERKj(i3, i2 + 40 | 0, i1 + 8 | 0);
 STACKTOP = i3;
 return;
}

function __ZN4wasm14EffectAnalyzer13visitGetLocalEPNS_8GetLocalE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 var i3 = 0;
 i3 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 __ZNSt3__16__treeIjNS_4lessIjEENS_9allocatorIjEEE15__insert_uniqueERKj(i3, i2 + 28 | 0, i1 + 8 | 0);
 STACKTOP = i3;
 return;
}

function __ZN4wasm7Builder8blockifyEPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 if (__ZN4wasm10Expression2isINS_5BlockEEEbv(i1) | 0) i1 = __ZN4wasm10Expression4castINS_5BlockEEEPT_v(i1) | 0; else i1 = __ZN4wasm7Builder9makeBlockEPNS_10ExpressionE(i2, i1) | 0;
 return i1 | 0;
}

function __ZN4wasm16PrintSExpression15visitCallImportEPNS_10CallImportE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __Z12printOpeningRNSt3__113basic_ostreamIcNS_11char_traitsIcEEEEPKcb(HEAP32[i2 >> 2] | 0, 18321, 0) | 0;
 __ZN4wasm16PrintSExpression13printCallBodyEPNS_4CallE(i2, i1);
 return;
}

function __ZN4wasm6WalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE15doVisitGetLocalEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm14SimplifyLocals13visitGetLocalEPNS_8GetLocalE(i2, __ZN4wasm10Expression4castINS_8GetLocalEEEPT_v(HEAP32[i1 >> 2] | 0) | 0);
 return;
}

function __ZN4wasm6WalkerINS_14EffectAnalyzerENS_7VisitorIS1_vEEE15doVisitSetLocalEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm14EffectAnalyzer13visitSetLocalEPNS_8SetLocalE(i2, __ZN4wasm10Expression4castINS_8SetLocalEEEPT_v(HEAP32[i1 >> 2] | 0) | 0);
 return;
}

function __ZN4wasm6WalkerINS_14EffectAnalyzerENS_7VisitorIS1_vEEE15doVisitGetLocalEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm14EffectAnalyzer13visitGetLocalEPNS_8GetLocalE(i2, __ZN4wasm10Expression4castINS_8GetLocalEEEPT_v(HEAP32[i1 >> 2] | 0) | 0);
 return;
}

function __ZN4wasm7PrinterC2Ev(i3) {
 i3 = i3 | 0;
 var i1 = 0, i2 = 0;
 HEAP32[i3 >> 2] = 3200;
 i1 = i3 + 4 | 0;
 i2 = 0;
 while (1) {
  if ((i2 | 0) == 3) break;
  HEAP32[i1 + (i2 << 2) >> 2] = 0;
  i2 = i2 + 1 | 0;
 }
 HEAP32[i3 >> 2] = 3652;
 HEAP32[i3 + 16 >> 2] = 37336;
 return;
}

function __ZNK4wasm7Literal13truncateToF32Ev(i1, i2) {
 i1 = i1 | 0;
 i2 = i2 | 0;
 var d3 = 0.0;
 if ((HEAP32[i2 >> 2] | 0) == 4) {
  d3 = +__ZNK4wasm7Literal6getf64Ev(i2);
  HEAP32[i1 >> 2] = 3;
  HEAPF32[i1 + 8 >> 2] = d3;
  return;
 } else ___assert_fail(14362, 14223, 331, 16603);
}

function __ZN4wasm6WalkerINS_17RemoveUnusedNamesENS_7VisitorIS1_vEEE13doVisitSwitchEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm17RemoveUnusedNames11visitSwitchEPNS_6SwitchE(i2, __ZN4wasm10Expression4castINS_6SwitchEEEPT_v(HEAP32[i1 >> 2] | 0) | 0);
 return;
}

function __ZN4wasm6WalkerINS_13ReorderLocalsENS_7VisitorIS1_vEEE15doVisitSetLocalEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm13ReorderLocals13visitSetLocalEPNS_8SetLocalE(i2, __ZN4wasm10Expression4castINS_8SetLocalEEEPT_v(HEAP32[i1 >> 2] | 0) | 0);
 return;
}

function __ZN4wasm6WalkerINS_13ReorderLocalsENS_7VisitorIS1_vEEE15doVisitGetLocalEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm13ReorderLocals13visitGetLocalEPNS_8GetLocalE(i2, __ZN4wasm10Expression4castINS_8GetLocalEEEPT_v(HEAP32[i1 >> 2] | 0) | 0);
 return;
}

function __ZN4wasm14SimplifyLocals12SinkableInfoC2EPPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 HEAP32[i2 >> 2] = i1;
 i2 = i2 + 4 | 0;
 __ZN4wasm14EffectAnalyzerC2Ev(i2);
 __ZN4wasm6WalkerINS_14EffectAnalyzerENS_7VisitorIS1_vEEE4walkERPNS_10ExpressionE(i2, i1);
 return;
}

function __ZNK4wasm7Literal11extendToF64Ev(i1, i2) {
 i1 = i1 | 0;
 i2 = i2 | 0;
 var d3 = 0.0;
 if ((HEAP32[i2 >> 2] | 0) == 3) {
  d3 = +__ZNK4wasm7Literal6getf32Ev(i2);
  HEAP32[i1 >> 2] = 4;
  HEAPF64[i1 + 8 >> 3] = d3;
  return;
 } else ___assert_fail(15554, 14223, 323, 16581);
}

function __ZN4wasm6WalkerINS_14PostEmscriptenENS_7VisitorIS1_vEEE12doVisitStoreEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm14PostEmscripten13visitMemoryOpINS_5StoreEEEvPT_(i2, __ZN4wasm10Expression4castINS_5StoreEEEPT_v(HEAP32[i1 >> 2] | 0) | 0);
 return;
}

function __ZN4wasm16PrintSExpression8visitNopEPNS_3NopE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_c(__Z17printMinorOpeningRNSt3__113basic_ostreamIcNS_11char_traitsIcEEEEPKc(HEAP32[i2 >> 2] | 0, 18864) | 0, 41) | 0;
 return;
}

function __ZNSt3__115__thread_structC2Ev(i1) {
 i1 = i1 | 0;
 var i2 = 0;
 i2 = __Znwj(24) | 0;
 HEAP32[i2 >> 2] = 0;
 HEAP32[i2 + 4 >> 2] = 0;
 HEAP32[i2 + 8 >> 2] = 0;
 HEAP32[i2 + 12 >> 2] = 0;
 HEAP32[i2 + 16 >> 2] = 0;
 HEAP32[i2 + 20 >> 2] = 0;
 HEAP32[i1 >> 2] = i2;
 return;
}

function _wmemcpy(i4, i2, i1) {
 i4 = i4 | 0;
 i2 = i2 | 0;
 i1 = i1 | 0;
 var i3 = 0;
 if (i1 | 0) {
  i3 = i4;
  while (1) {
   i1 = i1 + -1 | 0;
   HEAP32[i3 >> 2] = HEAP32[i2 >> 2];
   if (!i1) break; else {
    i2 = i2 + 4 | 0;
    i3 = i3 + 4 | 0;
   }
  }
 }
 return i4 | 0;
}

function ___muldi3(i1, i2, i3, i4) {
 i1 = i1 | 0;
 i2 = i2 | 0;
 i3 = i3 | 0;
 i4 = i4 | 0;
 var i5 = 0, i6 = 0;
 i5 = i1;
 i6 = i3;
 i3 = ___muldsi3(i5, i6) | 0;
 i1 = tempRet0;
 return (tempRet0 = (Math_imul(i2, i6) | 0) + (Math_imul(i4, i5) | 0) + i1 | i1 & 0, i3 | 0 | 0) | 0;
}

function __ZN4wasm6WalkerINS_17RemoveUnusedNamesENS_7VisitorIS1_vEEE12doVisitBreakEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm17RemoveUnusedNames10visitBreakEPNS_5BreakE(i2, __ZN4wasm10Expression4castINS_5BreakEEEPT_v(HEAP32[i1 >> 2] | 0) | 0);
 return;
}

function __ZN4wasm6WalkerINS_17RemoveUnusedNamesENS_7VisitorIS1_vEEE12doVisitBlockEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm17RemoveUnusedNames10visitBlockEPNS_5BlockE(i2, __ZN4wasm10Expression4castINS_5BlockEEEPT_v(HEAP32[i1 >> 2] | 0) | 0);
 return;
}

function __ZN4wasm7Literal8getFloatEv(i2) {
 i2 = i2 | 0;
 var d1 = 0.0;
 switch (HEAP32[i2 >> 2] | 0) {
 case 3:
  {
   d1 = +__ZNK4wasm7Literal6getf32Ev(i2);
   break;
  }
 case 4:
  {
   d1 = +__ZNK4wasm7Literal6getf64Ev(i2);
   break;
  }
 default:
  _abort();
 }
 return +d1;
}

function __ZN4wasm6WalkerINS_14PostEmscriptenENS_7VisitorIS1_vEEE11doVisitLoadEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm14PostEmscripten13visitMemoryOpINS_4LoadEEEvPT_(i2, __ZN4wasm10Expression4castINS_4LoadEEEPT_v(HEAP32[i1 >> 2] | 0) | 0);
 return;
}

function __ZNSt3__115basic_stringbufIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i1) {
 i1 = i1 | 0;
 HEAP32[i1 >> 2] = 3072;
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i1 + 32 | 0);
 __ZNSt3__115basic_streambufIcNS_11char_traitsIcEEED2Ev(i1);
 return;
}

function __ZNSt3__112__hash_tableIN6cashew7IStringENS_4hashIS2_EENS_8equal_toIS2_EENS_9allocatorIS2_EEE12__deallocateEPNS_11__hash_nodeIS2_PvEE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 while (1) {
  if (!i1) break;
  i2 = HEAP32[i1 >> 2] | 0;
  __ZdlPv(i1);
  i1 = i2;
 }
 return;
}
function __ZNKSt3__17codecvtIcc11__mbstate_tE6do_outERS1_PKcS5_RS5_PcS7_RS7_(i6, i1, i4, i2, i5, i7, i3, i8) {
 i6 = i6 | 0;
 i1 = i1 | 0;
 i4 = i4 | 0;
 i2 = i2 | 0;
 i5 = i5 | 0;
 i7 = i7 | 0;
 i3 = i3 | 0;
 i8 = i8 | 0;
 HEAP32[i5 >> 2] = i4;
 HEAP32[i8 >> 2] = i7;
 return 3;
}

function __ZNKSt3__17codecvtIcc11__mbstate_tE5do_inERS1_PKcS5_RS5_PcS7_RS7_(i6, i1, i4, i2, i5, i7, i3, i8) {
 i6 = i6 | 0;
 i1 = i1 | 0;
 i4 = i4 | 0;
 i2 = i2 | 0;
 i5 = i5 | 0;
 i7 = i7 | 0;
 i3 = i3 | 0;
 i8 = i8 | 0;
 HEAP32[i5 >> 2] = i4;
 HEAP32[i8 >> 2] = i7;
 return 3;
}

function __ZN4wasm16PrintSExpression9incIndentEv(i1) {
 i1 = i1 | 0;
 if (!(HEAP8[i1 + 8 >> 0] | 0)) {
  __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_c(HEAP32[i1 >> 2] | 0, 10) | 0;
  i1 = i1 + 4 | 0;
  HEAP32[i1 >> 2] = (HEAP32[i1 >> 2] | 0) + 1;
 }
 return;
}

function ___cxa_get_globals_fast() {
 var i1 = 0, i2 = 0;
 i1 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if (!(_pthread_once(40216, 3) | 0)) {
  i2 = _pthread_getspecific(HEAP32[10055] | 0) | 0;
  STACKTOP = i1;
  return i2 | 0;
 } else _abort_message(32721, i1);
 return 0;
}

function __ZN4wasm6WalkerIZNS_13ReorderLocals13visitFunctionEPNS_8FunctionEE9ReIndexerNS_7VisitorIS4_vEEE19doVisitCallIndirectEPS4_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_12CallIndirectEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE12doVisitBlockEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm14SimplifyLocals10visitBlockEPNS_5BlockE(i2, __ZN4wasm10Expression4castINS_5BlockEEEPT_v(HEAP32[i1 >> 2] | 0) | 0);
 return;
}

function __ZN4wasm17RemoveUnusedNamesC2Ev(i1) {
 i1 = i1 | 0;
 __ZN4wasm10WalkerPassINS_10PostWalkerINS_17RemoveUnusedNamesENS_7VisitorIS2_vEEEEEC2Ev(i1);
 HEAP32[i1 >> 2] = 4128;
 HEAP32[i1 + 44 >> 2] = 0;
 HEAP32[i1 + 48 >> 2] = 0;
 HEAP32[i1 + 40 >> 2] = i1 + 44;
 return;
}

function __ZN4wasm16PrintSExpression9visitCallEPNS_4CallE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __Z12printOpeningRNSt3__113basic_ostreamIcNS_11char_traitsIcEEEEPKcb(HEAP32[i2 >> 2] | 0, 18315, 0) | 0;
 __ZN4wasm16PrintSExpression13printCallBodyEPNS_4CallE(i2, i1);
 return;
}

function __ZN4wasm6WalkerIZNS_13ReorderLocals13visitFunctionEPNS_8FunctionEE9ReIndexerNS_7VisitorIS4_vEEE18doVisitUnreachableEPS4_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_11UnreachableEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function dynCall_iiiiiiii(i8, i1, i2, i3, i4, i5, i6, i7) {
 i8 = i8 | 0;
 i1 = i1 | 0;
 i2 = i2 | 0;
 i3 = i3 | 0;
 i4 = i4 | 0;
 i5 = i5 | 0;
 i6 = i6 | 0;
 i7 = i7 | 0;
 return FUNCTION_TABLE_iiiiiiii[i8 & 7](i1 | 0, i2 | 0, i3 | 0, i4 | 0, i5 | 0, i6 | 0, i7 | 0) | 0;
}

function __ZN4wasm17RemoveUnusedNamesD2Ev(i1) {
 i1 = i1 | 0;
 HEAP32[i1 >> 2] = 4128;
 __ZNSt3__16__treeIN4wasm4NameENS_4lessIS2_EENS_9allocatorIS2_EEED2Ev(i1 + 40 | 0);
 __ZN4wasm10WalkerPassINS_10PostWalkerINS_17RemoveUnusedNamesENS_7VisitorIS2_vEEEEED2Ev(i1);
 return;
}

function __ZN4wasm6WalkerIZNS_13ReorderLocals13visitFunctionEPNS_8FunctionEE9ReIndexerNS_7VisitorIS4_vEEE17doVisitCallImportEPS4_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_10CallImportEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __GLOBAL__sub_I_Print_cpp() {
 __ZN4wasm12RegisterPassINS_7PrinterEEC2EPKcS4_(42235, 18880, 18886);
 __ZN4wasm12RegisterPassINS_15MinifiedPrinterEEC2EPKcS4_(42236, 19080, 19095);
 __ZN4wasm12RegisterPassINS_11FullPrinterEEC2EPKcS4_(42237, 19341, 19352);
 return;
}

function __ZN4wasm6WalkerINS_11MergeBlocksENS_7VisitorIS1_vEEE12doVisitBlockEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm11MergeBlocks10visitBlockEPNS_5BlockE(i2, __ZN4wasm10Expression4castINS_5BlockEEEPT_v(HEAP32[i1 >> 2] | 0) | 0);
 return;
}

function __ZN4wasm13ReorderLocalsC2Ev(i1) {
 i1 = i1 | 0;
 __ZN4wasm10WalkerPassINS_10PostWalkerINS_13ReorderLocalsENS_7VisitorIS2_vEEEEEC2Ev(i1);
 HEAP32[i1 >> 2] = 4672;
 HEAP32[i1 + 44 >> 2] = 0;
 HEAP32[i1 + 48 >> 2] = 0;
 HEAP32[i1 + 40 >> 2] = i1 + 44;
 return;
}

function __ZNKSt3__15ctypeIcE8do_widenEPKcS3_Pc(i3, i1, i4, i2) {
 i3 = i3 | 0;
 i1 = i1 | 0;
 i4 = i4 | 0;
 i2 = i2 | 0;
 while (1) {
  if ((i1 | 0) == (i4 | 0)) break;
  HEAP8[i2 >> 0] = HEAP8[i1 >> 0] | 0;
  i2 = i2 + 1 | 0;
  i1 = i1 + 1 | 0;
 }
 return i4 | 0;
}

function __ZNSt3__119basic_istringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev(i1) {
 i1 = i1 | 0;
 __ZNSt3__119basic_istringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i1, 3008);
 __ZNSt3__19basic_iosIcNS_11char_traitsIcEEED2Ev(i1 + 60 | 0);
 return;
}

function __ZN10__cxxabiv112_GLOBAL__N_19destruct_EPv(i1) {
 i1 = i1 | 0;
 var i2 = 0;
 i2 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 _free(i1);
 if (!(_pthread_setspecific(HEAP32[10055] | 0, 0) | 0)) {
  STACKTOP = i2;
  return;
 } else _abort_message(32618, i2);
}

function _snprintf(i3, i2, i1, i4) {
 i3 = i3 | 0;
 i2 = i2 | 0;
 i1 = i1 | 0;
 i4 = i4 | 0;
 var i5 = 0, i6 = 0;
 i5 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i6 = i5;
 HEAP32[i6 >> 2] = i4;
 i4 = _vsnprintf(i3, i2, i1, i6) | 0;
 STACKTOP = i5;
 return i4 | 0;
}

function __ZNKSt3__110__function6__funcIZN4wasm12RegisterPassINS2_17RemoveUnusedNamesEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEE6targetERKSt9type_info(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 return ((HEAP32[i1 + 4 >> 2] | 0) == 21157 ? i2 + 4 | 0 : 0) | 0;
}

function __ZN4wasm6WalkerINS_15RemoveUnusedBrsENS_7VisitorIS1_vEEE9doVisitIfEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm15RemoveUnusedBrs7visitIfEPNS_2IfE(i2, __ZN4wasm10Expression4castINS_2IfEEEPT_v(HEAP32[i1 >> 2] | 0) | 0);
 return;
}

function __ZN4wasm10ThreadPoolD2Ev(i1) {
 i1 = i1 | 0;
 __ZNSt3__118condition_variableD2Ev(i1 + 44 | 0);
 __ZNSt3__15mutexD2Ev(i1 + 16 | 0);
 __ZNSt3__113__vector_baseINS_10unique_ptrIN4wasm6ThreadENS_14default_deleteIS3_EEEENS_9allocatorIS6_EEED2Ev(i1);
 return;
}

function __ZNSt3__118basic_stringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev(i1) {
 i1 = i1 | 0;
 __ZNSt3__118basic_stringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i1, 3320);
 __ZNSt3__19basic_iosIcNS_11char_traitsIcEEED2Ev(i1 + 64 | 0);
 return;
}

function __ZNKSt3__15ctypeIwE8do_widenEPKcS3_Pw(i3, i1, i4, i2) {
 i3 = i3 | 0;
 i1 = i1 | 0;
 i4 = i4 | 0;
 i2 = i2 | 0;
 while (1) {
  if ((i1 | 0) == (i4 | 0)) break;
  HEAP32[i2 >> 2] = HEAP8[i1 >> 0];
  i2 = i2 + 4 | 0;
  i1 = i1 + 1 | 0;
 }
 return i4 | 0;
}

function __ZN4wasm6WalkerIZNS_13ReorderLocals13visitFunctionEPNS_8FunctionEE9ReIndexerNS_7VisitorIS4_vEEE13doVisitSwitchEPS4_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_6SwitchEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerIZNS_13ReorderLocals13visitFunctionEPNS_8FunctionEE9ReIndexerNS_7VisitorIS4_vEEE13doVisitSelectEPS4_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_6SelectEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerIZNS_13ReorderLocals13visitFunctionEPNS_8FunctionEE9ReIndexerNS_7VisitorIS4_vEEE13doVisitReturnEPS4_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_6ReturnEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerIZNS_13ReorderLocals13visitFunctionEPNS_8FunctionEE9ReIndexerNS_7VisitorIS4_vEEE13doVisitBinaryEPS4_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_6BinaryEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZNKSt3__110__function6__funcIZN4wasm12RegisterPassINS2_15RemoveUnusedBrsEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEE6targetERKSt9type_info(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 return ((HEAP32[i1 + 4 >> 2] | 0) == 20375 ? i2 + 4 | 0 : 0) | 0;
}

function __ZNKSt3__110__function6__funcIZN4wasm12RegisterPassINS2_15MinifiedPrinterEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEE6targetERKSt9type_info(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 return ((HEAP32[i1 + 4 >> 2] | 0) == 19281 ? i2 + 4 | 0 : 0) | 0;
}

function __ZN4wasm6WalkerINS_14EffectAnalyzerENS_7VisitorIS1_vEEE19doVisitCallIndirectEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_12CallIndirectEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 HEAP8[i2 + 25 >> 0] = 1;
 return;
}

function __ZNKSt3__110__function6__funcIZN4wasm12RegisterPassINS2_14SimplifyLocalsEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEE6targetERKSt9type_info(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 return ((HEAP32[i1 + 4 >> 2] | 0) == 23886 ? i2 + 4 | 0 : 0) | 0;
}

function __ZNKSt3__110__function6__funcIZN4wasm12RegisterPassINS2_14PostEmscriptenEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEE6targetERKSt9type_info(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 return ((HEAP32[i1 + 4 >> 2] | 0) == 21976 ? i2 + 4 | 0 : 0) | 0;
}

function __ZNK4wasm7Literal13truncateToI32Ev(i1, i2) {
 i1 = i1 | 0;
 i2 = i2 | 0;
 if ((HEAP32[i2 >> 2] | 0) == 2) {
  i2 = HEAP32[i2 + 8 >> 2] | 0;
  HEAP32[i1 >> 2] = 1;
  HEAP32[i1 + 8 >> 2] = i2;
  return;
 } else ___assert_fail(14244, 14223, 327, 16419);
}

function __ZN4wasm6WalkerIZNS_13ReorderLocals13visitFunctionEPNS_8FunctionEE9ReIndexerNS_7VisitorIS4_vEEE12doVisitUnaryEPS4_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_5UnaryEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerIZNS_13ReorderLocals13visitFunctionEPNS_8FunctionEE9ReIndexerNS_7VisitorIS4_vEEE12doVisitStoreEPS4_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_5StoreEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerIZNS_13ReorderLocals13visitFunctionEPNS_8FunctionEE9ReIndexerNS_7VisitorIS4_vEEE12doVisitConstEPS4_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_5ConstEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerIZNS_13ReorderLocals13visitFunctionEPNS_8FunctionEE9ReIndexerNS_7VisitorIS4_vEEE12doVisitBreakEPS4_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_5BreakEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerIZNS_13ReorderLocals13visitFunctionEPNS_8FunctionEE9ReIndexerNS_7VisitorIS4_vEEE12doVisitBlockEPS4_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_5BlockEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm13ReorderLocals13visitSetLocalEPNS_8SetLocalE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 i2 = __ZNSt3__13mapIjjNS_4lessIjEENS_9allocatorINS_4pairIKjjEEEEEixERS5_(i2 + 40 | 0, i1 + 8 | 0) | 0;
 HEAP32[i2 >> 2] = (HEAP32[i2 >> 2] | 0) + 1;
 return;
}

function __ZN4wasm13ReorderLocals13visitGetLocalEPNS_8GetLocalE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 i2 = __ZNSt3__13mapIjjNS_4lessIjEENS_9allocatorINS_4pairIKjjEEEEEixERS5_(i2 + 40 | 0, i1 + 8 | 0) | 0;
 HEAP32[i2 >> 2] = (HEAP32[i2 >> 2] | 0) + 1;
 return;
}

function __ZNKSt3__110__function6__funcIZN4wasm12RegisterPassINS2_13ReorderLocalsEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEE6targetERKSt9type_info(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 return ((HEAP32[i1 + 4 >> 2] | 0) == 24684 ? i2 + 4 | 0 : 0) | 0;
}

function __ZN4wasm6WalkerINS_14EffectAnalyzerENS_7VisitorIS1_vEEE18doVisitUnreachableEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_11UnreachableEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 HEAP8[i2 + 24 >> 0] = 1;
 return;
}

function __ZN4wasm12PassRegistry3getEv() {
 var i1 = 0;
 i1 = HEAP32[9054] | 0;
 if (!i1) {
  i1 = __Znwj(12) | 0;
  HEAP32[i1 >> 2] = 0;
  HEAP32[i1 + 4 >> 2] = 0;
  HEAP32[i1 + 8 >> 2] = 0;
  HEAP32[i1 >> 2] = i1 + 4;
  HEAP32[9054] = i1;
 }
 return i1 | 0;
}

function __ZNKSt3__17codecvtIDsc11__mbstate_tE9do_lengthERS1_PKcS5_j(i5, i1, i2, i3, i4) {
 i5 = i5 | 0;
 i1 = i1 | 0;
 i2 = i2 | 0;
 i3 = i3 | 0;
 i4 = i4 | 0;
 return __ZNSt3__1L20utf8_to_utf16_lengthEPKhS1_jmNS_12codecvt_modeE(i2, i3, i4, 1114111, 0) | 0;
}

function __ZNKSt3__110__function6__funcIZN4wasm22SExpressionWasmBuilderC1ERNS2_6ModuleERNS2_7ElementEEUlvE_NS_9allocatorIS8_EEFvvEE6targetERKSt9type_info(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 return ((HEAP32[i1 + 4 >> 2] | 0) == 14545 ? i2 + 4 | 0 : 0) | 0;
}

function __ZN4wasm6WalkerIZNS_13ReorderLocals13visitFunctionEPNS_8FunctionEE9ReIndexerNS_7VisitorIS4_vEEE11doVisitLoopEPS4_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_4LoopEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerIZNS_13ReorderLocals13visitFunctionEPNS_8FunctionEE9ReIndexerNS_7VisitorIS4_vEEE11doVisitLoadEPS4_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_4LoadEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerIZNS_13ReorderLocals13visitFunctionEPNS_8FunctionEE9ReIndexerNS_7VisitorIS4_vEEE11doVisitHostEPS4_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_4HostEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerIZNS_13ReorderLocals13visitFunctionEPNS_8FunctionEE9ReIndexerNS_7VisitorIS4_vEEE11doVisitCallEPS4_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_4CallEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm2If8finalizeEv(i2) {
 i2 = i2 | 0;
 var i1 = 0, i3 = 0;
 i1 = HEAP32[i2 + 16 >> 2] | 0;
 if (i1 | 0) {
  i3 = HEAP32[(HEAP32[i2 + 12 >> 2] | 0) + 4 >> 2] | 0;
  HEAP32[i2 + 4 >> 2] = (i3 | 0) != 5 ? i3 : HEAP32[i1 + 4 >> 2] | 0;
 }
 return;
}

function __ZNKSt3__17codecvtIDic11__mbstate_tE9do_lengthERS1_PKcS5_j(i5, i1, i2, i3, i4) {
 i5 = i5 | 0;
 i1 = i1 | 0;
 i2 = i2 | 0;
 i3 = i3 | 0;
 i4 = i4 | 0;
 return __ZNSt3__1L19utf8_to_ucs4_lengthEPKhS1_jmNS_12codecvt_modeE(i2, i3, i4, 1114111, 0) | 0;
}

function __ZNKSt3__15ctypeIwE5do_isEtw(i3, i2, i1) {
 i3 = i3 | 0;
 i2 = i2 | 0;
 i1 = i1 | 0;
 if (i1 >>> 0 < 128) {
  i3 = ___ctype_b_loc() | 0;
  i1 = (HEAP16[(HEAP32[i3 >> 2] | 0) + (i1 << 1) >> 1] & i2) << 16 >> 16 != 0;
 } else i1 = 0;
 return i1 | 0;
}

function __ZNKSt3__110__function6__funcIZN4wasm12RegisterPassINS2_11MergeBlocksEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEE6targetERKSt9type_info(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 return ((HEAP32[i1 + 4 >> 2] | 0) == 17975 ? i2 + 4 | 0 : 0) | 0;
}

function __ZNKSt3__110__function6__funcIZN4wasm12RegisterPassINS2_11FullPrinterEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEE6targetERKSt9type_info(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 return ((HEAP32[i1 + 4 >> 2] | 0) == 19526 ? i2 + 4 | 0 : 0) | 0;
}

function __ZN4wasm6WalkerINS_14EffectAnalyzerENS_7VisitorIS1_vEEE17doVisitCallImportEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_10CallImportEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 HEAP8[i2 + 25 >> 0] = 1;
 return;
}

function __ZTv0_n12_NSt3__119basic_istringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev(i1) {
 i1 = i1 | 0;
 __ZNSt3__119basic_istringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev(i1 + (HEAP32[(HEAP32[i1 >> 2] | 0) + -12 >> 2] | 0) | 0);
 return;
}

function __ZTv0_n12_NSt3__119basic_istringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEED0Ev(i1) {
 i1 = i1 | 0;
 __ZNSt3__119basic_istringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEED0Ev(i1 + (HEAP32[(HEAP32[i1 >> 2] | 0) + -12 >> 2] | 0) | 0);
 return;
}

function __ZNSt3__16locale5__imp7installINS_9money_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEEEEEvPT_(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZNSt3__16locale5__imp7installEPNS0_5facetEl(i2, i1, __ZNSt3__16locale2id5__getEv(40144) | 0);
 return;
}

function __ZNSt3__16locale5__imp7installINS_9money_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEEEEEvPT_(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZNSt3__16locale5__imp7installEPNS0_5facetEl(i2, i1, __ZNSt3__16locale2id5__getEv(40136) | 0);
 return;
}

function __ZNSt3__16locale5__imp7installINS_9money_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEEEEEvPT_(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZNSt3__16locale5__imp7installEPNS0_5facetEl(i2, i1, __ZNSt3__16locale2id5__getEv(40128) | 0);
 return;
}

function __ZNSt3__16locale5__imp7installINS_9money_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEEEEEvPT_(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZNSt3__16locale5__imp7installEPNS0_5facetEl(i2, i1, __ZNSt3__16locale2id5__getEv(40120) | 0);
 return;
}

function __ZN4wasm6WalkerIZNS_13ReorderLocals13visitFunctionEPNS_8FunctionEE9ReIndexerNS_7VisitorIS4_vEEE10doVisitNopEPS4_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_3NopEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}
function __ZN4wasm6WalkerINS_6VacuumENS_7VisitorIS1_vEEE12doVisitBlockEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm6Vacuum10visitBlockEPNS_5BlockE(i2, __ZN4wasm10Expression4castINS_5BlockEEEPT_v(HEAP32[i1 >> 2] | 0) | 0);
 return;
}

function __ZN12_GLOBAL__N_114__libcpp_nmstrD2Ev(i1) {
 i1 = i1 | 0;
 var i2 = 0, i3 = 0;
 i3 = (HEAP32[i1 >> 2] | 0) + -4 | 0;
 i2 = HEAP32[i3 >> 2] | 0;
 HEAP32[i3 >> 2] = i2 + -1;
 if ((i2 + -1 | 0) < 0) __ZdlPv((HEAP32[i1 >> 2] | 0) + -12 | 0);
 return;
}

function __ZNSt3__16locale5__imp7installINS_8time_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEEEEEvPT_(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZNSt3__16locale5__imp7installEPNS0_5facetEl(i2, i1, __ZNSt3__16locale2id5__getEv(40080) | 0);
 return;
}

function __ZNSt3__16locale5__imp7installINS_8time_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEEEEEvPT_(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZNSt3__16locale5__imp7installEPNS0_5facetEl(i2, i1, __ZNSt3__16locale2id5__getEv(40072) | 0);
 return;
}

function __ZNSt3__16locale5__imp7installINS_8time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEEEEEvPT_(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZNSt3__16locale5__imp7installEPNS0_5facetEl(i2, i1, __ZNSt3__16locale2id5__getEv(40064) | 0);
 return;
}

function __ZNSt3__16locale5__imp7installINS_8time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEEEEEvPT_(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZNSt3__16locale5__imp7installEPNS0_5facetEl(i2, i1, __ZNSt3__16locale2id5__getEv(39252) | 0);
 return;
}

function __ZNSt3__110__function6__funcIZN4wasm12RegisterPassINS2_17RemoveUnusedNamesEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEEclEv(i1) {
 i1 = i1 | 0;
 return __ZZN4wasm12RegisterPassINS_17RemoveUnusedNamesEEC1EPKcS4_ENKUlvE_clEv(i1 + 4 | 0) | 0;
}

function __ZTv0_n12_NSt3__118basic_stringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev(i1) {
 i1 = i1 | 0;
 __ZNSt3__118basic_stringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev(i1 + (HEAP32[(HEAP32[i1 >> 2] | 0) + -12 >> 2] | 0) | 0);
 return;
}

function __ZTv0_n12_NSt3__118basic_stringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEED0Ev(i1) {
 i1 = i1 | 0;
 __ZNSt3__118basic_stringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEED0Ev(i1 + (HEAP32[(HEAP32[i1 >> 2] | 0) + -12 >> 2] | 0) | 0);
 return;
}

function __ZNSt3__16locale5__imp7installINS_7num_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEEEEEvPT_(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZNSt3__16locale5__imp7installEPNS0_5facetEl(i2, i1, __ZNSt3__16locale2id5__getEv(38440) | 0);
 return;
}

function __ZNSt3__16locale5__imp7installINS_7num_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEEEEEvPT_(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZNSt3__16locale5__imp7installEPNS0_5facetEl(i2, i1, __ZNSt3__16locale2id5__getEv(38432) | 0);
 return;
}

function __ZNSt3__16locale5__imp7installINS_7num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEEEEEvPT_(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZNSt3__16locale5__imp7installEPNS0_5facetEl(i2, i1, __ZNSt3__16locale2id5__getEv(38424) | 0);
 return;
}

function __ZNSt3__16locale5__imp7installINS_7num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEEEEEvPT_(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZNSt3__16locale5__imp7installEPNS0_5facetEl(i2, i1, __ZNSt3__16locale2id5__getEv(38400) | 0);
 return;
}

function __ZN4wasm6WalkerIZNS_13ReorderLocals13visitFunctionEPNS_8FunctionEE9ReIndexerNS_7VisitorIS4_vEEE9doVisitIfEPS4_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_2IfEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZNKSt3__110__function6__funcIZN4wasm12RegisterPassINS2_7PrinterEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEE6targetERKSt9type_info(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 return ((HEAP32[i1 + 4 >> 2] | 0) == 19029 ? i2 + 4 | 0 : 0) | 0;
}

function __ZN4wasm8Function12tryLocalNameEj(i3, i2) {
 i3 = i3 | 0;
 i2 = i2 | 0;
 var i1 = 0;
 i1 = HEAP32[i3 + 40 >> 2] | 0;
 if ((HEAP32[i3 + 44 >> 2] | 0) - i1 >> 2 >>> 0 > i2 >>> 0) return HEAP32[i1 + (i2 << 2) >> 2] | 0; else return 0;
 return 0;
}

function __ZN4wasm4Host8finalizeEv(i1) {
 i1 = i1 | 0;
 switch (HEAP32[i1 + 8 >> 2] | 0) {
 case 3:
 case 1:
 case 0:
  {
   HEAP32[i1 + 4 >> 2] = 1;
   break;
  }
 case 2:
  {
   HEAP32[i1 + 4 >> 2] = 1;
   break;
  }
 default:
  _abort();
 }
 return;
}

function __ZN4wasm15SetLocalRemover13visitSetLocalEPNS_8SetLocalE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 if (!(HEAP32[(HEAP32[HEAP32[i2 + 40 >> 2] >> 2] | 0) + (HEAP32[i1 + 8 >> 2] << 2) >> 2] | 0)) HEAP32[i2 + 16 >> 2] = HEAP32[i1 + 12 >> 2];
 return;
}

function __ZNSt3__110__function6__funcIZN4wasm12RegisterPassINS2_15RemoveUnusedBrsEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEEclEv(i1) {
 i1 = i1 | 0;
 return __ZZN4wasm12RegisterPassINS_15RemoveUnusedBrsEEC1EPKcS4_ENKUlvE_clEv(i1 + 4 | 0) | 0;
}

function __ZNSt3__110__function6__funcIZN4wasm12RegisterPassINS2_15MinifiedPrinterEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEEclEv(i1) {
 i1 = i1 | 0;
 return __ZZN4wasm12RegisterPassINS_15MinifiedPrinterEEC1EPKcS4_ENKUlvE_clEv(i1 + 4 | 0) | 0;
}

function __ZNKSt3__110__function6__funcIZN4wasm12RegisterPassINS2_6VacuumEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEE6targetERKSt9type_info(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 return ((HEAP32[i1 + 4 >> 2] | 0) == 25387 ? i2 + 4 | 0 : 0) | 0;
}

function __ZNSt3__110__function6__funcIZN4wasm12RegisterPassINS2_14SimplifyLocalsEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEEclEv(i1) {
 i1 = i1 | 0;
 return __ZZN4wasm12RegisterPassINS_14SimplifyLocalsEEC1EPKcS4_ENKUlvE_clEv(i1 + 4 | 0) | 0;
}

function __ZNSt3__110__function6__funcIZN4wasm12RegisterPassINS2_14PostEmscriptenEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEEclEv(i1) {
 i1 = i1 | 0;
 return __ZZN4wasm12RegisterPassINS_14PostEmscriptenEEC1EPKcS4_ENKUlvE_clEv(i1 + 4 | 0) | 0;
}

function ___stdio_close(i1) {
 i1 = i1 | 0;
 var i2 = 0, i3 = 0;
 i2 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i3 = i2;
 HEAP32[i3 >> 2] = HEAP32[i1 + 60 >> 2];
 i1 = ___syscall_ret(___syscall6(6, i3 | 0) | 0) | 0;
 STACKTOP = i2;
 return i1 | 0;
}

function __ZNSt3__1lsINS_11char_traitsIcEEEERNS_13basic_ostreamIcT_EES6_PKc(i1, i2) {
 i1 = i1 | 0;
 i2 = i2 | 0;
 return __ZNSt3__124__put_character_sequenceIcNS_11char_traitsIcEEEERNS_13basic_ostreamIT_T0_EES7_PKS4_j(i1, i2, _strlen(i2) | 0) | 0;
}

function __ZNK4wasm7Literal14reinterpreti64Ev(i1) {
 i1 = i1 | 0;
 if ((HEAP32[i1 >> 2] | 0) == 4) {
  i1 = i1 + 8 | 0;
  tempRet0 = HEAP32[i1 + 4 >> 2] | 0;
  return HEAP32[i1 >> 2] | 0;
 } else ___assert_fail(14362, 14223, 211, 15712);
 return 0;
}

function __ZN4wasm6WalkerINS_14EffectAnalyzerENS_7VisitorIS1_vEEE13doVisitSwitchEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_6SwitchEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 HEAP8[i2 + 24 >> 0] = 1;
 return;
}

function __ZN4wasm6WalkerINS_14EffectAnalyzerENS_7VisitorIS1_vEEE13doVisitReturnEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_6ReturnEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 HEAP8[i2 + 24 >> 0] = 1;
 return;
}

function __ZNSt3__110__function6__funcIZN4wasm12RegisterPassINS2_13ReorderLocalsEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEEclEv(i1) {
 i1 = i1 | 0;
 return __ZZN4wasm12RegisterPassINS_13ReorderLocalsEEC1EPKcS4_ENKUlvE_clEv(i1 + 4 | 0) | 0;
}

function __ZNKSt3__17codecvtIwc11__mbstate_tE13do_max_lengthEv(i1) {
 i1 = i1 | 0;
 i1 = HEAP32[i1 + 8 >> 2] | 0;
 if (i1) {
  i1 = _uselocale(i1) | 0;
  if (!i1) i1 = 4; else {
   _uselocale(i1) | 0;
   i1 = 4;
  }
 } else i1 = 1;
 return i1 | 0;
}

function __ZN4wasm10WalkerPassINS_21LinearExecutionWalkerINS_14SimplifyLocalsENS_7VisitorIS2_vEEEEED0Ev(i1) {
 i1 = i1 | 0;
 __ZN4wasm10WalkerPassINS_21LinearExecutionWalkerINS_14SimplifyLocalsENS_7VisitorIS2_vEEEEED2Ev(i1);
 __ZdlPv(i1);
 return;
}

function __ZN4wasm6WalkerINS_14EffectAnalyzerENS_7VisitorIS1_vEEE12doVisitStoreEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_5StoreEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 HEAP8[i2 + 53 >> 0] = 1;
 return;
}

function __ZN4wasm6WalkerINS_14EffectAnalyzerENS_7VisitorIS1_vEEE12doVisitBreakEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_5BreakEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 HEAP8[i2 + 24 >> 0] = 1;
 return;
}

function __ZN4wasm18CountLeadingZeroesIyEEiT_(i1, i2) {
 i1 = i1 | 0;
 i2 = i2 | 0;
 if ((i2 | 0) == 0 & 0 == 0) i1 = (__ZN4wasm18CountLeadingZeroesIjEEiT_(i1) | 0) + 32 | 0; else i1 = __ZN4wasm18CountLeadingZeroesIjEEiT_(i2) | 0;
 return i1 | 0;
}

function dynCall_iiiiiii(i7, i1, i2, i3, i4, i5, i6) {
 i7 = i7 | 0;
 i1 = i1 | 0;
 i2 = i2 | 0;
 i3 = i3 | 0;
 i4 = i4 | 0;
 i5 = i5 | 0;
 i6 = i6 | 0;
 return FUNCTION_TABLE_iiiiiii[i7 & 63](i1 | 0, i2 | 0, i3 | 0, i4 | 0, i5 | 0, i6 | 0) | 0;
}

function _bitshift64Ashr(i3, i2, i1) {
 i3 = i3 | 0;
 i2 = i2 | 0;
 i1 = i1 | 0;
 if ((i1 | 0) < 32) {
  tempRet0 = i2 >> i1;
  return i3 >>> i1 | (i2 & (1 << i1) - 1) << 32 - i1;
 }
 tempRet0 = (i2 | 0) < 0 ? -1 : 0;
 return i2 >> i1 - 32 | 0;
}

function __ZN4wasm6WalkerINS_14EffectAnalyzerENS_7VisitorIS1_vEEE11doVisitLoadEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_4LoadEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 HEAP8[i2 + 52 >> 0] = 1;
 return;
}

function __ZN4wasm6WalkerINS_14EffectAnalyzerENS_7VisitorIS1_vEEE11doVisitHostEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_4HostEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 HEAP8[i2 + 25 >> 0] = 1;
 return;
}

function __ZN4wasm6WalkerINS_14EffectAnalyzerENS_7VisitorIS1_vEEE11doVisitCallEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_4CallEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 HEAP8[i2 + 25 >> 0] = 1;
 return;
}

function __ZNSt3__110__function6__funcIZN4wasm22SExpressionWasmBuilderC1ERNS2_6ModuleERNS2_7ElementEEUlvE_NS_9allocatorIS8_EEFvvEEclEv(i1) {
 i1 = i1 | 0;
 __ZZN4wasm22SExpressionWasmBuilderC1ERNS_6ModuleERNS_7ElementEENKUlvE_clEv(i1 + 4 | 0);
}

function __ZNSt3__110__function6__funcIZN4wasm12RegisterPassINS2_11MergeBlocksEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEEclEv(i1) {
 i1 = i1 | 0;
 return __ZZN4wasm12RegisterPassINS_11MergeBlocksEEC1EPKcS4_ENKUlvE_clEv(i1 + 4 | 0) | 0;
}

function __ZNSt3__110__function6__funcIZN4wasm12RegisterPassINS2_11FullPrinterEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEEclEv(i1) {
 i1 = i1 | 0;
 return __ZZN4wasm12RegisterPassINS_11FullPrinterEEC1EPKcS4_ENKUlvE_clEv(i1 + 4 | 0) | 0;
}

function __ZN4wasm6WalkerINS_6VacuumENS_7VisitorIS1_vEEE9doVisitIfEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm6Vacuum7visitIfEPNS_2IfE(i2, __ZN4wasm10Expression4castINS_2IfEEEPT_v(HEAP32[i1 >> 2] | 0) | 0);
 return;
}

function __ZNSt3__113unordered_setIN6cashew7IStringENS_4hashIS2_EENS_8equal_toIS2_EENS_9allocatorIS2_EEED2Ev(i1) {
 i1 = i1 | 0;
 __ZNSt3__112__hash_tableIN6cashew7IStringENS_4hashIS2_EENS_8equal_toIS2_EENS_9allocatorIS2_EEED2Ev(i1);
 return;
}

function __ZNSt3__17codecvtIwc11__mbstate_tED2Ev(i1) {
 i1 = i1 | 0;
 var i2 = 0;
 HEAP32[i1 >> 2] = 11860;
 i1 = i1 + 8 | 0;
 i2 = HEAP32[i1 >> 2] | 0;
 if ((i2 | 0) != (__ZNSt3__16__clocEv() | 0)) _freelocale(HEAP32[i1 >> 2] | 0);
 return;
}

function _emscripten_bind_SExpressionWasmBuilder_SExpressionWasmBuilder_2(i1, i2) {
 i1 = i1 | 0;
 i2 = i2 | 0;
 var i3 = 0;
 i3 = __Znwj(104) | 0;
 __ZN4wasm22SExpressionWasmBuilderC2ERNS_6ModuleERNS_7ElementE(i3, i1, i2);
 return i3 | 0;
}

function __ZNK4wasm7Literal6geti64Ev(i1) {
 i1 = i1 | 0;
 if ((HEAP32[i1 >> 2] | 0) == 2) {
  i1 = i1 + 8 | 0;
  tempRet0 = HEAP32[i1 + 4 >> 2] | 0;
  return HEAP32[i1 >> 2] | 0;
 } else ___assert_fail(14244, 14223, 204, 15690);
 return 0;
}

function __ZN4wasm7Literal9castToI32Ev(i1, i2) {
 i1 = i1 | 0;
 i2 = i2 | 0;
 if ((HEAP32[i2 >> 2] | 0) == 3) {
  HEAP32[i1 + 8 >> 2] = HEAP32[i2 + 8 >> 2];
  HEAP32[i1 >> 2] = 1;
  return;
 } else ___assert_fail(15554, 14223, 191, 16571);
}

function __ZN4wasm7Literal9castToF32Ev(i1, i2) {
 i1 = i1 | 0;
 i2 = i2 | 0;
 if ((HEAP32[i2 >> 2] | 0) == 1) {
  HEAP32[i1 + 8 >> 2] = HEAP32[i2 + 8 >> 2];
  HEAP32[i1 >> 2] = 3;
  return;
 } else ___assert_fail(14201, 14223, 179, 14234);
}

function __ZN4wasm6WalkerINS_14EffectAnalyzerENS_7VisitorIS1_vEEE9doVisitIfEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_2IfEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 HEAP8[i2 + 24 >> 0] = 1;
 return;
}

function dynCall_iiiiiid(i7, i1, i2, i3, i4, i5, d6) {
 i7 = i7 | 0;
 i1 = i1 | 0;
 i2 = i2 | 0;
 i3 = i3 | 0;
 i4 = i4 | 0;
 i5 = i5 | 0;
 d6 = +d6;
 return FUNCTION_TABLE_iiiiiid[i7 & 3](i1 | 0, i2 | 0, i3 | 0, i4 | 0, i5 | 0, +d6) | 0;
}

function __ZNSt3__110unique_ptrIN4wasm10ThreadPoolENS_14default_deleteIS2_EEED2Ev(i2) {
 i2 = i2 | 0;
 var i1 = 0;
 i1 = HEAP32[i2 >> 2] | 0;
 HEAP32[i2 >> 2] = 0;
 if (i1 | 0) {
  __ZN4wasm10ThreadPoolD2Ev(i1);
  __ZdlPv(i1);
 }
 return;
}

function __ZNSt3__110__function6__funcIZN4wasm6WalkerINS2_17RemoveUnusedNamesENS2_7VisitorIS4_vEEE9startWalkEPNS2_6ModuleEEUlvE_NS_9allocatorISA_EEFNS2_15ThreadWorkStateEvEE18destroy_deallocateEv(i1) {
 i1 = i1 | 0;
 __ZdlPv(i1);
 return;
}

function __ZN4wasm6WalkerINS_17RemoveUnusedNamesENS_7VisitorIS1_vEEE19doVisitCallIndirectEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_12CallIndirectEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function _sscanf(i2, i1, i3) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 i3 = i3 | 0;
 var i4 = 0, i5 = 0;
 i4 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i5 = i4;
 HEAP32[i5 >> 2] = i3;
 i3 = _vsscanf(i2, i1, i5) | 0;
 STACKTOP = i4;
 return i3 | 0;
}

function __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6assignEPKw(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 return __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6assignEPKwj(i2, i1, _wcslen(i1) | 0) | 0;
}

function __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6assignEPKc(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 return __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6assignEPKcj(i2, i1, _strlen(i1) | 0) | 0;
}

function _wmemset(i4, i3, i1) {
 i4 = i4 | 0;
 i3 = i3 | 0;
 i1 = i1 | 0;
 var i2 = 0;
 if (i1 | 0) {
  i2 = i4;
  while (1) {
   i1 = i1 + -1 | 0;
   HEAP32[i2 >> 2] = i3;
   if (!i1) break; else i2 = i2 + 4 | 0;
  }
 }
 return i4 | 0;
}

function __ZNSt3__16__treeIN4wasm4NameENS_4lessIS2_EENS_9allocatorIS2_EEED2Ev(i1) {
 i1 = i1 | 0;
 __ZNSt3__16__treeIN4wasm4NameENS_4lessIS2_EENS_9allocatorIS2_EEE7destroyEPNS_11__tree_nodeIS2_PvEE(i1, HEAP32[i1 + 4 >> 2] | 0);
 return;
}

function __ZNSt3__110__function6__funcIZN4wasm6WalkerINS2_15RemoveUnusedBrsENS2_7VisitorIS4_vEEE9startWalkEPNS2_6ModuleEEUlvE_NS_9allocatorISA_EEFNS2_15ThreadWorkStateEvEE18destroy_deallocateEv(i1) {
 i1 = i1 | 0;
 __ZdlPv(i1);
 return;
}

function __ZNKSt3__15ctypeIcE10do_tolowerEc(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 if (i1 << 24 >> 24 > -1) {
  i2 = ___ctype_tolower_loc() | 0;
  i1 = HEAP32[(HEAP32[i2 >> 2] | 0) + (i1 << 24 >> 24 << 2) >> 2] & 255;
 }
 return i1 | 0;
}

function __ZN4wasm6WalkerINS_17RemoveUnusedNamesENS_7VisitorIS1_vEEE18doVisitUnreachableEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_11UnreachableEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_15SetLocalRemoverENS_7VisitorIS1_vEEE19doVisitCallIndirectEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_12CallIndirectEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_15RemoveUnusedBrsENS_7VisitorIS1_vEEE19doVisitCallIndirectEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_12CallIndirectEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_15GetLocalCounterENS_7VisitorIS1_vEEE19doVisitCallIndirectEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_12CallIndirectEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZNSt3__110__function6__funcIZN4wasm6WalkerINS2_14SimplifyLocalsENS2_7VisitorIS4_vEEE9startWalkEPNS2_6ModuleEEUlvE_NS_9allocatorISA_EEFNS2_15ThreadWorkStateEvEE18destroy_deallocateEv(i1) {
 i1 = i1 | 0;
 __ZdlPv(i1);
 return;
}

function __ZNSt3__110__function6__funcIZN4wasm6WalkerINS2_14PostEmscriptenENS2_7VisitorIS4_vEEE9startWalkEPNS2_6ModuleEEUlvE_NS_9allocatorISA_EEFNS2_15ThreadWorkStateEvEE18destroy_deallocateEv(i1) {
 i1 = i1 | 0;
 __ZdlPv(i1);
 return;
}

function __ZNKSt3__110__function6__funcIZN4wasm12RegisterPassINS2_17RemoveUnusedNamesEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEE7__cloneEPNS0_6__baseISD_EE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 HEAP32[i1 >> 2] = 4012;
 return;
}

function __ZN6cashew5ArenaD2Ev(i1) {
 i1 = i1 | 0;
 __ZNSt3__113__vector_baseIPNS_6vectorIN6cashew3RefENS_9allocatorIS3_EEEENS4_IS7_EEED2Ev(i1 + 16 | 0);
 __ZNSt3__113__vector_baseIPN6cashew5ValueENS_9allocatorIS3_EEED2Ev(i1);
 return;
}

function __ZN4wasm6WalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE19doVisitCallIndirectEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_12CallIndirectEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_14PostEmscriptenENS_7VisitorIS1_vEEE19doVisitCallIndirectEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_12CallIndirectEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function dynCall_viiiiii(i7, i1, i2, i3, i4, i5, i6) {
 i7 = i7 | 0;
 i1 = i1 | 0;
 i2 = i2 | 0;
 i3 = i3 | 0;
 i4 = i4 | 0;
 i5 = i5 | 0;
 i6 = i6 | 0;
 FUNCTION_TABLE_viiiiii[i7 & 15](i1 | 0, i2 | 0, i3 | 0, i4 | 0, i5 | 0, i6 | 0);
}

function __ZNSt3__110__function6__funcIZN4wasm6WalkerINS2_13ReorderLocalsENS2_7VisitorIS4_vEEE9startWalkEPNS2_6ModuleEEUlvE_NS_9allocatorISA_EEFNS2_15ThreadWorkStateEvEE18destroy_deallocateEv(i1) {
 i1 = i1 | 0;
 __ZdlPv(i1);
 return;
}

function __ZN4wasm6WalkerINS_17RemoveUnusedNamesENS_7VisitorIS1_vEEE17doVisitCallImportEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_10CallImportEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_15SetLocalRemoverENS_7VisitorIS1_vEEE18doVisitUnreachableEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_11UnreachableEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_15RemoveUnusedBrsENS_7VisitorIS1_vEEE18doVisitUnreachableEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_11UnreachableEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_15GetLocalCounterENS_7VisitorIS1_vEEE18doVisitUnreachableEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_11UnreachableEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_13ReorderLocalsENS_7VisitorIS1_vEEE19doVisitCallIndirectEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_12CallIndirectEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm12isUInteger64Ed(d1) {
 d1 = +d1;
 HEAPF64[tempDoublePtr >> 3] = d1;
 if ((HEAP32[tempDoublePtr + 4 >> 2] | 0) < 0) return 0; else return d1 <= 18446744073709551616.0 & (__ZN4wasm9isIntegerEd(d1) | 0) | 0;
 return 0;
}

function __ZNSt3__110__function6__funcIZN4wasm12RegisterPassINS2_7PrinterEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEEclEv(i1) {
 i1 = i1 | 0;
 return __ZZN4wasm12RegisterPassINS_7PrinterEEC1EPKcS4_ENKUlvE_clEv(i1 + 4 | 0) | 0;
}

function __ZNKSt3__110__function6__funcIZN4wasm12RegisterPassINS2_15RemoveUnusedBrsEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEE7__cloneEPNS0_6__baseISD_EE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 HEAP32[i1 >> 2] = 3868;
 return;
}

function __ZNKSt3__110__function6__funcIZN4wasm12RegisterPassINS2_15MinifiedPrinterEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEE7__cloneEPNS0_6__baseISD_EE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 HEAP32[i1 >> 2] = 3724;
 return;
}

function __ZN4wasm6WalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE18doVisitUnreachableEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_11UnreachableEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_14PostEmscriptenENS_7VisitorIS1_vEEE18doVisitUnreachableEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_11UnreachableEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm14EffectAnalyzer9checkPostEPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm7VisitorINS_14EffectAnalyzerEvE5visitEPNS_10ExpressionE(i2, i1);
 return __ZN4wasm14EffectAnalyzer11hasAnythingEv(i2) | 0;
}

function _emscripten_bind_ShellExternalInterface_ShellExternalInterface_0() {
 var i1 = 0;
 i1 = __Znwj(16) | 0;
 HEAP32[i1 >> 2] = 3228;
 HEAP32[i1 + 4 >> 2] = 0;
 HEAP32[i1 + 8 >> 2] = 0;
 HEAP32[i1 + 12 >> 2] = 0;
 return i1 | 0;
}

function __ZNSt3__110__function6__funcIZN4wasm6WalkerINS2_11MergeBlocksENS2_7VisitorIS4_vEEE9startWalkEPNS2_6ModuleEEUlvE_NS_9allocatorISA_EEFNS2_15ThreadWorkStateEvEE18destroy_deallocateEv(i1) {
 i1 = i1 | 0;
 __ZdlPv(i1);
 return;
}

function __ZNKSt3__15ctypeIcE10do_toupperEc(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 if (i1 << 24 >> 24 > -1) {
  i2 = ___ctype_toupper_loc() | 0;
  i1 = HEAP32[(HEAP32[i2 >> 2] | 0) + ((i1 & 255) << 2) >> 2] & 255;
 }
 return i1 | 0;
}

function __ZNKSt3__110__function6__funcIZN4wasm12RegisterPassINS2_14SimplifyLocalsEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEE7__cloneEPNS0_6__baseISD_EE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 HEAP32[i1 >> 2] = 4300;
 return;
}

function __ZNKSt3__110__function6__funcIZN4wasm12RegisterPassINS2_14PostEmscriptenEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEE7__cloneEPNS0_6__baseISD_EE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 HEAP32[i1 >> 2] = 4156;
 return;
}

function __ZN4wasm6WalkerINS_15SetLocalRemoverENS_7VisitorIS1_vEEE17doVisitCallImportEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_10CallImportEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_15RemoveUnusedBrsENS_7VisitorIS1_vEEE17doVisitCallImportEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_10CallImportEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_15GetLocalCounterENS_7VisitorIS1_vEEE17doVisitCallImportEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_10CallImportEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_13ReorderLocalsENS_7VisitorIS1_vEEE18doVisitUnreachableEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_11UnreachableEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_11MergeBlocksENS_7VisitorIS1_vEEE19doVisitCallIndirectEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_12CallIndirectEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_11BreakSeekerENS_7VisitorIS1_vEEE19doVisitCallIndirectEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_12CallIndirectEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm14EffectAnalyzer14accessesMemoryEv(i1) {
 i1 = i1 | 0;
 if (!(HEAP8[i1 + 25 >> 0] | 0)) {
  i1 = HEAP16[i1 + 52 >> 1] | 0;
  return (i1 & 65535) > 255 | (i1 & 255) << 24 >> 24 != 0 | 0;
 } else return 1;
 return 0;
}

function __ZNSt3__110__function6__funcIZN4wasm12RegisterPassINS2_6VacuumEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEEclEv(i1) {
 i1 = i1 | 0;
 return __ZZN4wasm12RegisterPassINS_6VacuumEEC1EPKcS4_ENKUlvE_clEv(i1 + 4 | 0) | 0;
}

function __ZNKSt3__110__function6__funcIZN4wasm12RegisterPassINS2_13ReorderLocalsEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEE7__cloneEPNS0_6__baseISD_EE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 HEAP32[i1 >> 2] = 4556;
 return;
}

function __ZN4wasm6WalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE17doVisitCallImportEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_10CallImportEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_14PostEmscriptenENS_7VisitorIS1_vEEE17doVisitCallImportEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_10CallImportEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm10WalkerPassINS_10PostWalkerINS_17RemoveUnusedNamesENS_7VisitorIS2_vEEEEED0Ev(i1) {
 i1 = i1 | 0;
 __ZN4wasm10WalkerPassINS_10PostWalkerINS_17RemoveUnusedNamesENS_7VisitorIS2_vEEEEED2Ev(i1);
 __ZdlPv(i1);
 return;
}

function _bitshift64Shl(i3, i2, i1) {
 i3 = i3 | 0;
 i2 = i2 | 0;
 i1 = i1 | 0;
 if ((i1 | 0) < 32) {
  tempRet0 = i2 << i1 | (i3 & (1 << i1) - 1 << 32 - i1) >>> 32 - i1;
  return i3 << i1;
 }
 tempRet0 = i3 << i1 - 32;
 return 0;
}

function __ZNKSt3__110__function6__funcIZN4wasm22SExpressionWasmBuilderC1ERNS2_6ModuleERNS2_7ElementEEUlvE_NS_9allocatorIS8_EEFvvEE7__cloneEPNS0_6__baseISB_EE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 HEAP32[i1 >> 2] = 3136;
 return;
}

function __ZN4wasm6WalkerINS_13ReorderLocalsENS_7VisitorIS1_vEEE17doVisitCallImportEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_10CallImportEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_11MergeBlocksENS_7VisitorIS1_vEEE18doVisitUnreachableEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_11UnreachableEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_11BreakSeekerENS_7VisitorIS1_vEEE18doVisitUnreachableEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_11UnreachableEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm19CountTrailingZeroesIyEEiT_(i1, i2) {
 i1 = i1 | 0;
 i2 = i2 | 0;
 if (!i1) i1 = (__ZN4wasm19CountTrailingZeroesIjEEiT_(i2) | 0) + 32 | 0; else i1 = __ZN4wasm19CountTrailingZeroesIjEEiT_(i1) | 0;
 return i1 | 0;
}

function __ZNKSt3__110__function6__funcIZN4wasm12RegisterPassINS2_11MergeBlocksEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEE7__cloneEPNS0_6__baseISD_EE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 HEAP32[i1 >> 2] = 3508;
 return;
}

function __ZNKSt3__110__function6__funcIZN4wasm12RegisterPassINS2_11FullPrinterEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEE7__cloneEPNS0_6__baseISD_EE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 HEAP32[i1 >> 2] = 3796;
 return;
}

function __ZNK6cashew7IStringltERKS0_(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 var i3 = 0;
 i3 = HEAP32[i2 >> 2] | 0;
 i2 = HEAP32[i1 >> 2] | 0;
 return (_strcmp((i3 | 0) == 0 ? 44318 : i3, (i2 | 0) == 0 ? 44318 : i2) | 0) < 0 | 0;
}

function __ZN4wasm6WalkerINS_17RemoveUnusedNamesENS_7VisitorIS1_vEEE15doVisitSetLocalEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_8SetLocalEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_17RemoveUnusedNamesENS_7VisitorIS1_vEEE15doVisitGetLocalEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_8GetLocalEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function _abort_message(i1, i2) {
 i1 = i1 | 0;
 i2 = i2 | 0;
 var i3 = 0;
 i3 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 HEAP32[i3 >> 2] = i2;
 i2 = HEAP32[1260] | 0;
 _vfprintf(i2, i1, i3) | 0;
 _fputc(10, i2) | 0;
 _abort();
}

function __ZNKSt3__110__function6__funcIZN4wasm12RegisterPassINS2_17RemoveUnusedNamesEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEE7__cloneEv(i1) {
 i1 = i1 | 0;
 i1 = __Znwj(8) | 0;
 HEAP32[i1 >> 2] = 4012;
 return i1 | 0;
}

function __ZN4wasm6WalkerINS_11MergeBlocksENS_7VisitorIS1_vEEE17doVisitCallImportEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_10CallImportEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_11BreakSeekerENS_7VisitorIS1_vEEE17doVisitCallImportEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_10CallImportEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_15SetLocalRemoverENS_7VisitorIS1_vEEE15doVisitGetLocalEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_8GetLocalEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_15RemoveUnusedBrsENS_7VisitorIS1_vEEE15doVisitSetLocalEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_8SetLocalEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_15RemoveUnusedBrsENS_7VisitorIS1_vEEE15doVisitGetLocalEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_8GetLocalEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_15GetLocalCounterENS_7VisitorIS1_vEEE15doVisitSetLocalEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_8SetLocalEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm10WalkerPassINS_10PostWalkerINS_15SetLocalRemoverENS_7VisitorIS2_vEEEEED0Ev(i1) {
 i1 = i1 | 0;
 __ZN4wasm10WalkerPassINS_10PostWalkerINS_15SetLocalRemoverENS_7VisitorIS2_vEEEEED2Ev(i1);
 __ZdlPv(i1);
 return;
}

function __ZN4wasm10WalkerPassINS_10PostWalkerINS_15RemoveUnusedBrsENS_7VisitorIS2_vEEEEED0Ev(i1) {
 i1 = i1 | 0;
 __ZN4wasm10WalkerPassINS_10PostWalkerINS_15RemoveUnusedBrsENS_7VisitorIS2_vEEEEED2Ev(i1);
 __ZdlPv(i1);
 return;
}

function __ZN4wasm10WalkerPassINS_10PostWalkerINS_15GetLocalCounterENS_7VisitorIS2_vEEEEED0Ev(i1) {
 i1 = i1 | 0;
 __ZN4wasm10WalkerPassINS_10PostWalkerINS_15GetLocalCounterENS_7VisitorIS2_vEEEEED2Ev(i1);
 __ZdlPv(i1);
 return;
}

function _emscripten_bind_ModuleInstance_ModuleInstance_2(i1, i2) {
 i1 = i1 | 0;
 i2 = i2 | 0;
 var i3 = 0;
 i3 = __Znwj(28) | 0;
 __ZN4wasm14ModuleInstanceC2ERNS_6ModuleEPNS0_17ExternalInterfaceE(i3, i1, i2);
 return i3 | 0;
}

function _bitshift64Lshr(i3, i2, i1) {
 i3 = i3 | 0;
 i2 = i2 | 0;
 i1 = i1 | 0;
 if ((i1 | 0) < 32) {
  tempRet0 = i2 >>> i1;
  return i3 >>> i1 | (i2 & (1 << i1) - 1) << 32 - i1;
 }
 tempRet0 = 0;
 return i2 >>> i1 - 32 | 0;
}

function __ZNSt3__110__function6__funcIZN4wasm6WalkerINS2_6VacuumENS2_7VisitorIS4_vEEE9startWalkEPNS2_6ModuleEEUlvE_NS_9allocatorISA_EEFNS2_15ThreadWorkStateEvEE18destroy_deallocateEv(i1) {
 i1 = i1 | 0;
 __ZdlPv(i1);
 return;
}

function __ZNKSt3__18ios_base6getlocEv(i1) {
 i1 = i1 | 0;
 var i2 = 0, i3 = 0;
 i3 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 i2 = i3;
 __ZNSt3__16localeC2ERKS0_(i2, i1 + 28 | 0);
 STACKTOP = i3;
 return HEAP32[i2 >> 2] | 0;
}

function __ZNKSt3__110__function6__funcIZN4wasm12RegisterPassINS2_15RemoveUnusedBrsEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEE7__cloneEv(i1) {
 i1 = i1 | 0;
 i1 = __Znwj(8) | 0;
 HEAP32[i1 >> 2] = 3868;
 return i1 | 0;
}

function __ZNKSt3__110__function6__funcIZN4wasm12RegisterPassINS2_15MinifiedPrinterEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEE7__cloneEv(i1) {
 i1 = i1 | 0;
 i1 = __Znwj(8) | 0;
 HEAP32[i1 >> 2] = 3724;
 return i1 | 0;
}

function __ZN4wasm6WalkerINS_6VacuumENS_7VisitorIS1_vEEE19doVisitCallIndirectEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_12CallIndirectEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE15doVisitSetLocalEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_8SetLocalEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_14PostEmscriptenENS_7VisitorIS1_vEEE15doVisitSetLocalEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_8SetLocalEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_14PostEmscriptenENS_7VisitorIS1_vEEE15doVisitGetLocalEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_8GetLocalEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN10__cxxabiv112_GLOBAL__N_110construct_Ev() {
 var i1 = 0;
 i1 = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if (!(_pthread_key_create(40220, 234) | 0)) {
  STACKTOP = i1;
  return;
 } else _abort_message(32671, i1);
}

function __ZNSt3__119__thread_local_dataEv() {
 if ((HEAP8[35232] | 0) == 0 ? ___cxa_guard_acquire(35232) | 0 : 0) {
  _pthread_key_create(38356, 220) | 0;
  ___cxa_atexit(221, 38356, ___dso_handle | 0) | 0;
 }
 return 38356;
}

function __ZNKSt3__110__function6__funcIZN4wasm12RegisterPassINS2_14SimplifyLocalsEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEE7__cloneEv(i1) {
 i1 = i1 | 0;
 i1 = __Znwj(8) | 0;
 HEAP32[i1 >> 2] = 4300;
 return i1 | 0;
}

function __ZNKSt3__110__function6__funcIZN4wasm12RegisterPassINS2_14PostEmscriptenEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEE7__cloneEv(i1) {
 i1 = i1 | 0;
 i1 = __Znwj(8) | 0;
 HEAP32[i1 >> 2] = 4156;
 return i1 | 0;
}

function __ZN4wasm6WalkerINS_17RemoveUnusedNamesENS_7VisitorIS1_vEEE13doVisitSelectEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_6SelectEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_17RemoveUnusedNamesENS_7VisitorIS1_vEEE13doVisitReturnEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_6ReturnEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_17RemoveUnusedNamesENS_7VisitorIS1_vEEE13doVisitBinaryEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_6BinaryEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm10WalkerPassINS_10PostWalkerINS_14PostEmscriptenENS_7VisitorIS2_vEEEEED0Ev(i1) {
 i1 = i1 | 0;
 __ZN4wasm10WalkerPassINS_10PostWalkerINS_14PostEmscriptenENS_7VisitorIS2_vEEEEED2Ev(i1);
 __ZdlPv(i1);
 return;
}

function __ZNKSt3__110__function6__funcIZN4wasm12RegisterPassINS2_7PrinterEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEE7__cloneEPNS0_6__baseISD_EE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 HEAP32[i1 >> 2] = 3680;
 return;
}

function __ZNKSt3__110__function6__funcIZN4wasm12RegisterPassINS2_13ReorderLocalsEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEE7__cloneEv(i1) {
 i1 = i1 | 0;
 i1 = __Znwj(8) | 0;
 HEAP32[i1 >> 2] = 4556;
 return i1 | 0;
}

function __ZN4wasm6WalkerINS_6VacuumENS_7VisitorIS1_vEEE18doVisitUnreachableEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_11UnreachableEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZNKSt3__17codecvtIcc11__mbstate_tE9do_lengthERS1_PKcS5_j(i5, i1, i3, i2, i4) {
 i5 = i5 | 0;
 i1 = i1 | 0;
 i3 = i3 | 0;
 i2 = i2 | 0;
 i4 = i4 | 0;
 i5 = i2 - i3 | 0;
 return (i5 >>> 0 < i4 >>> 0 ? i5 : i4) | 0;
}

function __ZNKSt3__110__function6__funcIZN4wasm22SExpressionWasmBuilderC1ERNS2_6ModuleERNS2_7ElementEEUlvE_NS_9allocatorIS8_EEFvvEE7__cloneEv(i1) {
 i1 = i1 | 0;
 i1 = __Znwj(8) | 0;
 HEAP32[i1 >> 2] = 3136;
 return i1 | 0;
}

function __ZNKSt3__110__function6__funcIZN4wasm12RegisterPassINS2_6VacuumEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEE7__cloneEPNS0_6__baseISD_EE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 HEAP32[i1 >> 2] = 4700;
 return;
}

function __ZN4wasm6WalkerINS_17RemoveUnusedNamesENS_7VisitorIS1_vEEE12doVisitUnaryEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_5UnaryEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_17RemoveUnusedNamesENS_7VisitorIS1_vEEE12doVisitStoreEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_5StoreEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_17RemoveUnusedNamesENS_7VisitorIS1_vEEE12doVisitConstEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_5ConstEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_15SetLocalRemoverENS_7VisitorIS1_vEEE13doVisitSwitchEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_6SwitchEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_15SetLocalRemoverENS_7VisitorIS1_vEEE13doVisitSelectEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_6SelectEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_15SetLocalRemoverENS_7VisitorIS1_vEEE13doVisitReturnEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_6ReturnEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_15SetLocalRemoverENS_7VisitorIS1_vEEE13doVisitBinaryEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_6BinaryEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_15RemoveUnusedBrsENS_7VisitorIS1_vEEE13doVisitSwitchEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_6SwitchEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_15RemoveUnusedBrsENS_7VisitorIS1_vEEE13doVisitSelectEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_6SelectEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_15RemoveUnusedBrsENS_7VisitorIS1_vEEE13doVisitReturnEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_6ReturnEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_15RemoveUnusedBrsENS_7VisitorIS1_vEEE13doVisitBinaryEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_6BinaryEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_15GetLocalCounterENS_7VisitorIS1_vEEE13doVisitSwitchEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_6SwitchEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_15GetLocalCounterENS_7VisitorIS1_vEEE13doVisitSelectEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_6SelectEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_15GetLocalCounterENS_7VisitorIS1_vEEE13doVisitReturnEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_6ReturnEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_15GetLocalCounterENS_7VisitorIS1_vEEE13doVisitBinaryEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_6BinaryEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_11MergeBlocksENS_7VisitorIS1_vEEE15doVisitSetLocalEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_8SetLocalEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_11MergeBlocksENS_7VisitorIS1_vEEE15doVisitGetLocalEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_8GetLocalEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_11BreakSeekerENS_7VisitorIS1_vEEE15doVisitSetLocalEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_8SetLocalEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_11BreakSeekerENS_7VisitorIS1_vEEE15doVisitGetLocalEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_8GetLocalEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm10WalkerPassINS_10PostWalkerINS_13ReorderLocalsENS_7VisitorIS2_vEEEEED0Ev(i1) {
 i1 = i1 | 0;
 __ZN4wasm10WalkerPassINS_10PostWalkerINS_13ReorderLocalsENS_7VisitorIS2_vEEEEED2Ev(i1);
 __ZdlPv(i1);
 return;
}

function __ZNKSt3__110__function6__funcIZN4wasm6WalkerINS2_17RemoveUnusedNamesENS2_7VisitorIS4_vEEE9startWalkEPNS2_6ModuleEEUlvE_NS_9allocatorISA_EEFNS2_15ThreadWorkStateEvEE11target_typeEv(i1) {
 i1 = i1 | 0;
 return 664;
}

function __ZNKSt3__110__function6__funcIZN4wasm12RegisterPassINS2_11MergeBlocksEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEE7__cloneEv(i1) {
 i1 = i1 | 0;
 i1 = __Znwj(8) | 0;
 HEAP32[i1 >> 2] = 3508;
 return i1 | 0;
}

function __ZNKSt3__110__function6__funcIZN4wasm12RegisterPassINS2_11FullPrinterEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEE7__cloneEv(i1) {
 i1 = i1 | 0;
 i1 = __Znwj(8) | 0;
 HEAP32[i1 >> 2] = 3796;
 return i1 | 0;
}

function __ZN4wasm8PopCountIjEEiT_(i1) {
 i1 = i1 | 0;
 i1 = i1 - (i1 >>> 1 & 1431655765) | 0;
 i1 = (i1 >>> 2 & 858993459) + (i1 & 858993459) | 0;
 return (Math_imul((i1 >>> 4) + i1 & 252645135, 16843009) | 0) >>> 24 | 0;
}

function __ZN4wasm6WalkerINS_6VacuumENS_7VisitorIS1_vEEE17doVisitCallImportEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_10CallImportEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE13doVisitSwitchEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_6SwitchEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE13doVisitSelectEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_6SelectEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE13doVisitReturnEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_6ReturnEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE13doVisitBinaryEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_6BinaryEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_14PostEmscriptenENS_7VisitorIS1_vEEE13doVisitSwitchEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_6SwitchEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_14PostEmscriptenENS_7VisitorIS1_vEEE13doVisitSelectEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_6SelectEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_14PostEmscriptenENS_7VisitorIS1_vEEE13doVisitReturnEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_6ReturnEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_14PostEmscriptenENS_7VisitorIS1_vEEE13doVisitBinaryEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_6BinaryEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_14EffectAnalyzerENS_7VisitorIS1_vEEE13doVisitSelectEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_6SelectEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_14EffectAnalyzerENS_7VisitorIS1_vEEE13doVisitBinaryEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_6BinaryEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZNSt3__16locale5__imp7installINS_7codecvtIDsc11__mbstate_tEEEEvPT_(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZNSt3__16locale5__imp7installEPNS0_5facetEl(i2, i1, __ZNSt3__16locale2id5__getEv(40184) | 0);
 return;
}

function __ZNSt3__16locale5__imp7installINS_7codecvtIDic11__mbstate_tEEEEvPT_(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZNSt3__16locale5__imp7installEPNS0_5facetEl(i2, i1, __ZNSt3__16locale2id5__getEv(40192) | 0);
 return;
}

function __ZN4wasm6WalkerINS_17RemoveUnusedNamesENS_7VisitorIS1_vEEE11doVisitLoopEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_4LoopEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_17RemoveUnusedNamesENS_7VisitorIS1_vEEE11doVisitLoadEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_4LoadEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_17RemoveUnusedNamesENS_7VisitorIS1_vEEE11doVisitHostEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_4HostEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_17RemoveUnusedNamesENS_7VisitorIS1_vEEE11doVisitCallEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_4CallEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_15SetLocalRemoverENS_7VisitorIS1_vEEE12doVisitUnaryEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_5UnaryEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_15SetLocalRemoverENS_7VisitorIS1_vEEE12doVisitStoreEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_5StoreEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_15SetLocalRemoverENS_7VisitorIS1_vEEE12doVisitConstEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_5ConstEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_15SetLocalRemoverENS_7VisitorIS1_vEEE12doVisitBreakEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_5BreakEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_15SetLocalRemoverENS_7VisitorIS1_vEEE12doVisitBlockEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_5BlockEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_15RemoveUnusedBrsENS_7VisitorIS1_vEEE12doVisitUnaryEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_5UnaryEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_15RemoveUnusedBrsENS_7VisitorIS1_vEEE12doVisitStoreEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_5StoreEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_15RemoveUnusedBrsENS_7VisitorIS1_vEEE12doVisitConstEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_5ConstEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_15RemoveUnusedBrsENS_7VisitorIS1_vEEE12doVisitBreakEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_5BreakEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_15RemoveUnusedBrsENS_7VisitorIS1_vEEE12doVisitBlockEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_5BlockEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_15GetLocalCounterENS_7VisitorIS1_vEEE12doVisitUnaryEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_5UnaryEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_15GetLocalCounterENS_7VisitorIS1_vEEE12doVisitStoreEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_5StoreEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_15GetLocalCounterENS_7VisitorIS1_vEEE12doVisitConstEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_5ConstEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_15GetLocalCounterENS_7VisitorIS1_vEEE12doVisitBreakEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_5BreakEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_15GetLocalCounterENS_7VisitorIS1_vEEE12doVisitBlockEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_5BlockEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_13ReorderLocalsENS_7VisitorIS1_vEEE13doVisitSwitchEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_6SwitchEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_13ReorderLocalsENS_7VisitorIS1_vEEE13doVisitSelectEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_6SelectEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_13ReorderLocalsENS_7VisitorIS1_vEEE13doVisitReturnEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_6ReturnEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_13ReorderLocalsENS_7VisitorIS1_vEEE13doVisitBinaryEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_6BinaryEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm5Block8finalizeEv(i2) {
 i2 = i2 | 0;
 var i1 = 0;
 i1 = HEAP32[i2 + 16 >> 2] | 0;
 if ((i1 | 0) != (HEAP32[i2 + 12 >> 2] | 0)) HEAP32[i2 + 4 >> 2] = HEAP32[(HEAP32[i1 + -4 >> 2] | 0) + 4 >> 2];
 return;
}

function __ZNSt3__16locale5__imp7installINS_7codecvtIwc11__mbstate_tEEEEvPT_(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZNSt3__16locale5__imp7installEPNS0_5facetEl(i2, i1, __ZNSt3__16locale2id5__getEv(40176) | 0);
 return;
}

function __ZNSt3__16locale5__imp7installINS_7codecvtIcc11__mbstate_tEEEEvPT_(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZNSt3__16locale5__imp7installEPNS0_5facetEl(i2, i1, __ZNSt3__16locale2id5__getEv(40168) | 0);
 return;
}

function __ZNSt3__110__function6__funcIZN4wasm6WalkerINS2_17RemoveUnusedNamesENS2_7VisitorIS4_vEEE9startWalkEPNS2_6ModuleEEUlvE_NS_9allocatorISA_EEFNS2_15ThreadWorkStateEvEED0Ev(i1) {
 i1 = i1 | 0;
 __ZdlPv(i1);
 return;
}

function __ZNKSt3__16locale9use_facetERNS0_2idE(i1, i2) {
 i1 = i1 | 0;
 i2 = i2 | 0;
 i1 = HEAP32[i1 >> 2] | 0;
 i2 = __ZNSt3__16locale2id5__getEv(i2) | 0;
 return HEAP32[(HEAP32[i1 + 8 >> 2] | 0) + (i2 << 2) >> 2] | 0;
}

function __ZNKSt3__110__function6__funcIZN4wasm6WalkerINS2_15RemoveUnusedBrsENS2_7VisitorIS4_vEEE9startWalkEPNS2_6ModuleEEUlvE_NS_9allocatorISA_EEFNS2_15ThreadWorkStateEvEE11target_typeEv(i1) {
 i1 = i1 | 0;
 return 528;
}

function __ZNKSt3__110__function6__funcIZN4wasm6WalkerINS2_14SimplifyLocalsENS2_7VisitorIS4_vEEE9startWalkEPNS2_6ModuleEEUlvE_NS_9allocatorISA_EEFNS2_15ThreadWorkStateEvEE11target_typeEv(i1) {
 i1 = i1 | 0;
 return 1128;
}

function __ZN4wasm6WalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE12doVisitUnaryEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_5UnaryEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE12doVisitStoreEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_5StoreEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE12doVisitConstEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_5ConstEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE12doVisitBreakEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_5BreakEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_14PostEmscriptenENS_7VisitorIS1_vEEE12doVisitUnaryEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_5UnaryEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_14PostEmscriptenENS_7VisitorIS1_vEEE12doVisitConstEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_5ConstEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_14PostEmscriptenENS_7VisitorIS1_vEEE12doVisitBreakEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_5BreakEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_14PostEmscriptenENS_7VisitorIS1_vEEE12doVisitBlockEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_5BlockEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_14EffectAnalyzerENS_7VisitorIS1_vEEE12doVisitUnaryEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_5UnaryEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_14EffectAnalyzerENS_7VisitorIS1_vEEE12doVisitConstEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_5ConstEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_14EffectAnalyzerENS_7VisitorIS1_vEEE12doVisitBlockEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_5BlockEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZNKSt3__110__function6__funcIZN4wasm6WalkerINS2_14PostEmscriptenENS2_7VisitorIS4_vEEE9startWalkEPNS2_6ModuleEEUlvE_NS_9allocatorISA_EEFNS2_15ThreadWorkStateEvEE11target_typeEv(i1) {
 i1 = i1 | 0;
 return 816;
}

function __ZNKSt3__110__function6__funcIZN4wasm6WalkerINS2_13ReorderLocalsENS2_7VisitorIS4_vEEE9startWalkEPNS2_6ModuleEEUlvE_NS_9allocatorISA_EEFNS2_15ThreadWorkStateEvEE11target_typeEv(i1) {
 i1 = i1 | 0;
 return 1264;
}

function __ZN4wasm6WalkerINS_17RemoveUnusedNamesENS_7VisitorIS1_vEEE10doVisitNopEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_3NopEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_15SetLocalRemoverENS_7VisitorIS1_vEEE11doVisitLoopEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_4LoopEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_15SetLocalRemoverENS_7VisitorIS1_vEEE11doVisitLoadEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_4LoadEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_15SetLocalRemoverENS_7VisitorIS1_vEEE11doVisitHostEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_4HostEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_15SetLocalRemoverENS_7VisitorIS1_vEEE11doVisitCallEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_4CallEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_15RemoveUnusedBrsENS_7VisitorIS1_vEEE11doVisitLoopEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_4LoopEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_15RemoveUnusedBrsENS_7VisitorIS1_vEEE11doVisitLoadEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_4LoadEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_15RemoveUnusedBrsENS_7VisitorIS1_vEEE11doVisitHostEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_4HostEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_15RemoveUnusedBrsENS_7VisitorIS1_vEEE11doVisitCallEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_4CallEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_15GetLocalCounterENS_7VisitorIS1_vEEE11doVisitLoopEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_4LoopEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_15GetLocalCounterENS_7VisitorIS1_vEEE11doVisitLoadEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_4LoadEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_15GetLocalCounterENS_7VisitorIS1_vEEE11doVisitHostEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_4HostEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_15GetLocalCounterENS_7VisitorIS1_vEEE11doVisitCallEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_4CallEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_13ReorderLocalsENS_7VisitorIS1_vEEE12doVisitUnaryEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_5UnaryEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_13ReorderLocalsENS_7VisitorIS1_vEEE12doVisitStoreEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_5StoreEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_13ReorderLocalsENS_7VisitorIS1_vEEE12doVisitConstEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_5ConstEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_13ReorderLocalsENS_7VisitorIS1_vEEE12doVisitBreakEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_5BreakEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_13ReorderLocalsENS_7VisitorIS1_vEEE12doVisitBlockEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_5BlockEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_11MergeBlocksENS_7VisitorIS1_vEEE13doVisitSwitchEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_6SwitchEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_11MergeBlocksENS_7VisitorIS1_vEEE13doVisitSelectEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_6SelectEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_11MergeBlocksENS_7VisitorIS1_vEEE13doVisitReturnEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_6ReturnEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_11MergeBlocksENS_7VisitorIS1_vEEE13doVisitBinaryEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_6BinaryEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_11BreakSeekerENS_7VisitorIS1_vEEE13doVisitSwitchEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_6SwitchEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_11BreakSeekerENS_7VisitorIS1_vEEE13doVisitSelectEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_6SelectEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_11BreakSeekerENS_7VisitorIS1_vEEE13doVisitReturnEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_6ReturnEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_11BreakSeekerENS_7VisitorIS1_vEEE13doVisitBinaryEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_6BinaryEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm10WalkerPassINS_10PostWalkerINS_11MergeBlocksENS_7VisitorIS2_vEEEEED0Ev(i1) {
 i1 = i1 | 0;
 __ZN4wasm10WalkerPassINS_10PostWalkerINS_11MergeBlocksENS_7VisitorIS2_vEEEEED2Ev(i1);
 __ZdlPv(i1);
 return;
}

function runPostSets() {}
function _i64Subtract(i1, i2, i3, i4) {
 i1 = i1 | 0;
 i2 = i2 | 0;
 i3 = i3 | 0;
 i4 = i4 | 0;
 i4 = i2 - i4 - (i3 >>> 0 > i1 >>> 0 | 0) >>> 0;
 return (tempRet0 = i4, i1 - i3 >>> 0 | 0) | 0;
}

function __ZNSt3__110__function6__funcIZN4wasm6WalkerINS2_15RemoveUnusedBrsENS2_7VisitorIS4_vEEE9startWalkEPNS2_6ModuleEEUlvE_NS_9allocatorISA_EEFNS2_15ThreadWorkStateEvEED0Ev(i1) {
 i1 = i1 | 0;
 __ZdlPv(i1);
 return;
}

function __ZN4wasm6WalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE11doVisitLoopEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_4LoopEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE11doVisitLoadEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_4LoadEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE11doVisitHostEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_4HostEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE11doVisitCallEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_4CallEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_14PostEmscriptenENS_7VisitorIS1_vEEE11doVisitLoopEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_4LoopEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_14PostEmscriptenENS_7VisitorIS1_vEEE11doVisitHostEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_4HostEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_14PostEmscriptenENS_7VisitorIS1_vEEE11doVisitCallEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_4CallEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_14EffectAnalyzerENS_7VisitorIS1_vEEE11doVisitLoopEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_4LoopEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function dynCall_iiiiii(i6, i1, i2, i3, i4, i5) {
 i6 = i6 | 0;
 i1 = i1 | 0;
 i2 = i2 | 0;
 i3 = i3 | 0;
 i4 = i4 | 0;
 i5 = i5 | 0;
 return FUNCTION_TABLE_iiiiii[i6 & 31](i1 | 0, i2 | 0, i3 | 0, i4 | 0, i5 | 0) | 0;
}

function __ZNSt3__16locale5__imp11make_globalEv() {
 var i1 = 0;
 i1 = __ZNSt3__16locale7classicEv() | 0;
 i1 = HEAP32[i1 >> 2] | 0;
 HEAP32[10052] = i1;
 __ZNSt3__114__shared_count12__add_sharedEv(i1);
 return 40208;
}

function __ZNSt3__110__function6__funcIZN4wasm6WalkerINS2_14SimplifyLocalsENS2_7VisitorIS4_vEEE9startWalkEPNS2_6ModuleEEUlvE_NS_9allocatorISA_EEFNS2_15ThreadWorkStateEvEED0Ev(i1) {
 i1 = i1 | 0;
 __ZdlPv(i1);
 return;
}

function __ZNSt3__110__function6__funcIZN4wasm6WalkerINS2_14PostEmscriptenENS2_7VisitorIS4_vEEE9startWalkEPNS2_6ModuleEEUlvE_NS_9allocatorISA_EEFNS2_15ThreadWorkStateEvEED0Ev(i1) {
 i1 = i1 | 0;
 __ZdlPv(i1);
 return;
}

function __ZNKSt3__15ctypeIwE10do_toupperEw(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 if (i1 >>> 0 < 128) {
  i2 = ___ctype_toupper_loc() | 0;
  i1 = HEAP32[(HEAP32[i2 >> 2] | 0) + (i1 << 2) >> 2] | 0;
 }
 return i1 | 0;
}

function __ZNKSt3__15ctypeIwE10do_tolowerEw(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 if (i1 >>> 0 < 128) {
  i2 = ___ctype_tolower_loc() | 0;
  i1 = HEAP32[(HEAP32[i2 >> 2] | 0) + (i1 << 2) >> 2] | 0;
 }
 return i1 | 0;
}

function __ZNKSt3__110__function6__funcIZN4wasm12RegisterPassINS2_7PrinterEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEE7__cloneEv(i1) {
 i1 = i1 | 0;
 i1 = __Znwj(8) | 0;
 HEAP32[i1 >> 2] = 3680;
 return i1 | 0;
}

function __ZN4wasm6WalkerINS_6VacuumENS_7VisitorIS1_vEEE15doVisitSetLocalEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_8SetLocalEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_6VacuumENS_7VisitorIS1_vEEE15doVisitGetLocalEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_8GetLocalEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_15SetLocalRemoverENS_7VisitorIS1_vEEE10doVisitNopEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_3NopEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_15RemoveUnusedBrsENS_7VisitorIS1_vEEE10doVisitNopEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_3NopEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_15GetLocalCounterENS_7VisitorIS1_vEEE10doVisitNopEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_3NopEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_13ReorderLocalsENS_7VisitorIS1_vEEE11doVisitLoopEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_4LoopEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_13ReorderLocalsENS_7VisitorIS1_vEEE11doVisitLoadEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_4LoadEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_13ReorderLocalsENS_7VisitorIS1_vEEE11doVisitHostEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_4HostEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_13ReorderLocalsENS_7VisitorIS1_vEEE11doVisitCallEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_4CallEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_11MergeBlocksENS_7VisitorIS1_vEEE12doVisitUnaryEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_5UnaryEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_11MergeBlocksENS_7VisitorIS1_vEEE12doVisitStoreEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_5StoreEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_11MergeBlocksENS_7VisitorIS1_vEEE12doVisitConstEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_5ConstEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_11MergeBlocksENS_7VisitorIS1_vEEE12doVisitBreakEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_5BreakEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_11BreakSeekerENS_7VisitorIS1_vEEE12doVisitUnaryEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_5UnaryEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_11BreakSeekerENS_7VisitorIS1_vEEE12doVisitStoreEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_5StoreEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_11BreakSeekerENS_7VisitorIS1_vEEE12doVisitConstEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_5ConstEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_11BreakSeekerENS_7VisitorIS1_vEEE12doVisitBlockEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_5BlockEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZNSt3__110__function6__funcIZN4wasm6WalkerINS2_13ReorderLocalsENS2_7VisitorIS4_vEEE9startWalkEPNS2_6ModuleEEUlvE_NS_9allocatorISA_EEFNS2_15ThreadWorkStateEvEED0Ev(i1) {
 i1 = i1 | 0;
 __ZdlPv(i1);
 return;
}

function __ZNKSt3__110__function6__funcIZN4wasm6WalkerINS2_11MergeBlocksENS2_7VisitorIS4_vEEE9startWalkEPNS2_6ModuleEEUlvE_NS_9allocatorISA_EEFNS2_15ThreadWorkStateEvEE11target_typeEv(i1) {
 i1 = i1 | 0;
 return 288;
}

function __ZNKSt3__110__function6__funcIZN4wasm12RegisterPassINS2_6VacuumEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEE7__cloneEv(i1) {
 i1 = i1 | 0;
 i1 = __Znwj(8) | 0;
 HEAP32[i1 >> 2] = 4700;
 return i1 | 0;
}

function __ZN4wasm6WalkerINS_17RemoveUnusedNamesENS_7VisitorIS1_vEEE9doVisitIfEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_2IfEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE10doVisitNopEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_3NopEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_14PostEmscriptenENS_7VisitorIS1_vEEE10doVisitNopEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_3NopEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_14EffectAnalyzerENS_7VisitorIS1_vEEE10doVisitNopEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_3NopEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function _emscripten_bind_ShellExternalInterface___destroy___0(i1) {
 i1 = i1 | 0;
 if (i1 | 0) {
  HEAP32[i1 >> 2] = 3228;
  __ZNSt3__113__vector_baseIcNS_9allocatorIcEEED2Ev(i1 + 4 | 0);
  __ZdlPv(i1);
 }
 return;
}

function __ZN4wasm6WalkerINS_13ReorderLocalsENS_7VisitorIS1_vEEE10doVisitNopEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_3NopEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_11MergeBlocksENS_7VisitorIS1_vEEE11doVisitLoopEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_4LoopEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_11MergeBlocksENS_7VisitorIS1_vEEE11doVisitLoadEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_4LoadEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_11MergeBlocksENS_7VisitorIS1_vEEE11doVisitHostEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_4HostEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_11MergeBlocksENS_7VisitorIS1_vEEE11doVisitCallEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_4CallEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_11BreakSeekerENS_7VisitorIS1_vEEE11doVisitLoopEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_4LoopEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_11BreakSeekerENS_7VisitorIS1_vEEE11doVisitLoadEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_4LoadEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_11BreakSeekerENS_7VisitorIS1_vEEE11doVisitHostEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_4HostEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_11BreakSeekerENS_7VisitorIS1_vEEE11doVisitCallEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_4CallEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZNSt3__16locale8__globalEv() {
 if ((HEAP8[35888] | 0) == 0 ? ___cxa_guard_acquire(35888) | 0 : 0) {
  __ZNSt3__16locale5__imp11make_globalEv() | 0;
  HEAP32[10053] = 40208;
 }
 return HEAP32[10053] | 0;
}

function __ZNSt3__16locale7classicEv() {
 if ((HEAP8[35720] | 0) == 0 ? ___cxa_guard_acquire(35720) | 0 : 0) {
  __ZNSt3__16locale5__imp12make_classicEv() | 0;
  HEAP32[10051] = 40200;
 }
 return HEAP32[10051] | 0;
}

function __ZNSt3__16locale5__imp7installINS_10moneypunctIwLb1EEEEEvPT_(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZNSt3__16locale5__imp7installEPNS0_5facetEl(i2, i1, __ZNSt3__16locale2id5__getEv(40112) | 0);
 return;
}

function __ZNSt3__16locale5__imp7installINS_10moneypunctIwLb0EEEEEvPT_(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZNSt3__16locale5__imp7installEPNS0_5facetEl(i2, i1, __ZNSt3__16locale2id5__getEv(40104) | 0);
 return;
}

function __ZNSt3__16locale5__imp7installINS_10moneypunctIcLb1EEEEEvPT_(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZNSt3__16locale5__imp7installEPNS0_5facetEl(i2, i1, __ZNSt3__16locale2id5__getEv(40096) | 0);
 return;
}

function __ZNSt3__16locale5__imp7installINS_10moneypunctIcLb0EEEEEvPT_(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZNSt3__16locale5__imp7installEPNS0_5facetEl(i2, i1, __ZNSt3__16locale2id5__getEv(40088) | 0);
 return;
}

function __ZNSt3__110__function6__funcIZN4wasm6WalkerINS2_11MergeBlocksENS2_7VisitorIS4_vEEE9startWalkEPNS2_6ModuleEEUlvE_NS_9allocatorISA_EEFNS2_15ThreadWorkStateEvEED0Ev(i1) {
 i1 = i1 | 0;
 __ZdlPv(i1);
 return;
}

function __ZN4wasm6WalkerINS_15SetLocalRemoverENS_7VisitorIS1_vEEE9doVisitIfEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_2IfEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_15GetLocalCounterENS_7VisitorIS1_vEEE9doVisitIfEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_2IfEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZNSt3__16localeC2Ev(i1) {
 i1 = i1 | 0;
 var i2 = 0;
 i2 = __ZNSt3__16locale8__globalEv() | 0;
 i2 = HEAP32[i2 >> 2] | 0;
 HEAP32[i1 >> 2] = i2;
 __ZNSt3__114__shared_count12__add_sharedEv(i2);
 return;
}

function __ZNKSt3__110moneypunctIwLb1EE16do_positive_signEv(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 i1 = 0;
 while (1) {
  if ((i1 | 0) == 3) break;
  HEAP32[i2 + (i1 << 2) >> 2] = 0;
  i1 = i1 + 1 | 0;
 }
 return;
}

function __ZNKSt3__110moneypunctIwLb0EE16do_positive_signEv(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 i1 = 0;
 while (1) {
  if ((i1 | 0) == 3) break;
  HEAP32[i2 + (i1 << 2) >> 2] = 0;
  i1 = i1 + 1 | 0;
 }
 return;
}

function __ZNKSt3__110moneypunctIcLb1EE16do_positive_signEv(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 i1 = 0;
 while (1) {
  if ((i1 | 0) == 3) break;
  HEAP32[i2 + (i1 << 2) >> 2] = 0;
  i1 = i1 + 1 | 0;
 }
 return;
}

function __ZNKSt3__110moneypunctIcLb0EE16do_positive_signEv(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 i1 = 0;
 while (1) {
  if ((i1 | 0) == 3) break;
  HEAP32[i2 + (i1 << 2) >> 2] = 0;
  i1 = i1 + 1 | 0;
 }
 return;
}

function __ZN4wasm6WalkerINS_6VacuumENS_7VisitorIS1_vEEE13doVisitSwitchEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_6SwitchEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_6VacuumENS_7VisitorIS1_vEEE13doVisitSelectEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_6SelectEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_6VacuumENS_7VisitorIS1_vEEE13doVisitReturnEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_6ReturnEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_6VacuumENS_7VisitorIS1_vEEE13doVisitBinaryEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_6BinaryEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE9doVisitIfEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_2IfEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_14PostEmscriptenENS_7VisitorIS1_vEEE9doVisitIfEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_2IfEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_11MergeBlocksENS_7VisitorIS1_vEEE10doVisitNopEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_3NopEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_11BreakSeekerENS_7VisitorIS1_vEEE10doVisitNopEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_3NopEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function _emscripten_bind_WasmPrinter_printModule_1(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm11WasmPrinter11printModuleEPNS_6ModuleERNSt3__113basic_ostreamIcNS3_11char_traitsIcEEEE(i1, 37336) | 0;
 return;
}

function __ZTv0_n12_NSt3__114basic_iostreamIcNS_11char_traitsIcEEED0Ev(i1) {
 i1 = i1 | 0;
 __ZNSt3__114basic_iostreamIcNS_11char_traitsIcEEED0Ev(i1 + (HEAP32[(HEAP32[i1 >> 2] | 0) + -12 >> 2] | 0) | 0);
 return;
}

function __ZNSt3__110__function6__funcIZN4wasm6WalkerINS2_17RemoveUnusedNamesENS2_7VisitorIS4_vEEE9startWalkEPNS2_6ModuleEEUlvE_NS_9allocatorISA_EEFNS2_15ThreadWorkStateEvEE7destroyEv(i1) {
 i1 = i1 | 0;
 return;
}

function __ZN4wasm6WalkerINS_13ReorderLocalsENS_7VisitorIS1_vEEE9doVisitIfEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_2IfEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZNKSt3__110moneypunctIwLb1EE14do_curr_symbolEv(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 i1 = 0;
 while (1) {
  if ((i1 | 0) == 3) break;
  HEAP32[i2 + (i1 << 2) >> 2] = 0;
  i1 = i1 + 1 | 0;
 }
 return;
}

function __ZNKSt3__110moneypunctIwLb0EE14do_curr_symbolEv(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 i1 = 0;
 while (1) {
  if ((i1 | 0) == 3) break;
  HEAP32[i2 + (i1 << 2) >> 2] = 0;
  i1 = i1 + 1 | 0;
 }
 return;
}

function __ZNKSt3__110moneypunctIcLb1EE14do_curr_symbolEv(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 i1 = 0;
 while (1) {
  if ((i1 | 0) == 3) break;
  HEAP32[i2 + (i1 << 2) >> 2] = 0;
  i1 = i1 + 1 | 0;
 }
 return;
}

function __ZNKSt3__110moneypunctIcLb0EE14do_curr_symbolEv(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 i1 = 0;
 while (1) {
  if ((i1 | 0) == 3) break;
  HEAP32[i2 + (i1 << 2) >> 2] = 0;
  i1 = i1 + 1 | 0;
 }
 return;
}

function __ZNKSt3__110__function6__funcIZN4wasm6WalkerINS2_6VacuumENS2_7VisitorIS4_vEEE9startWalkEPNS2_6ModuleEEUlvE_NS_9allocatorISA_EEFNS2_15ThreadWorkStateEvEE11target_typeEv(i1) {
 i1 = i1 | 0;
 return 1416;
}

function __ZN4wasm6WalkerINS_6VacuumENS_7VisitorIS1_vEEE12doVisitUnaryEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_5UnaryEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_6VacuumENS_7VisitorIS1_vEEE12doVisitStoreEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_5StoreEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_6VacuumENS_7VisitorIS1_vEEE12doVisitConstEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_5ConstEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_6VacuumENS_7VisitorIS1_vEEE12doVisitBreakEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_5BreakEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function dynCall_iiiiid(i6, i1, i2, i3, i4, d5) {
 i6 = i6 | 0;
 i1 = i1 | 0;
 i2 = i2 | 0;
 i3 = i3 | 0;
 i4 = i4 | 0;
 d5 = +d5;
 return FUNCTION_TABLE_iiiiid[i6 & 7](i1 | 0, i2 | 0, i3 | 0, i4 | 0, +d5) | 0;
}

function __ZTv0_n12_NSt3__113basic_ostreamIwNS_11char_traitsIwEEED0Ev(i1) {
 i1 = i1 | 0;
 __ZNSt3__113basic_ostreamIwNS_11char_traitsIwEEED0Ev(i1 + (HEAP32[(HEAP32[i1 >> 2] | 0) + -12 >> 2] | 0) | 0);
 return;
}

function __ZTv0_n12_NSt3__113basic_ostreamIcNS_11char_traitsIcEEED0Ev(i1) {
 i1 = i1 | 0;
 __ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEED0Ev(i1 + (HEAP32[(HEAP32[i1 >> 2] | 0) + -12 >> 2] | 0) | 0);
 return;
}

function __ZTv0_n12_NSt3__113basic_istreamIwNS_11char_traitsIwEEED0Ev(i1) {
 i1 = i1 | 0;
 __ZNSt3__113basic_istreamIwNS_11char_traitsIwEEED0Ev(i1 + (HEAP32[(HEAP32[i1 >> 2] | 0) + -12 >> 2] | 0) | 0);
 return;
}

function __ZTv0_n12_NSt3__113basic_istreamIcNS_11char_traitsIcEEED0Ev(i1) {
 i1 = i1 | 0;
 __ZNSt3__113basic_istreamIcNS_11char_traitsIcEEED0Ev(i1 + (HEAP32[(HEAP32[i1 >> 2] | 0) + -12 >> 2] | 0) | 0);
 return;
}

function __ZNSt3__16__clocEv() {
 var i1 = 0;
 if ((HEAP8[35240] | 0) == 0 ? ___cxa_guard_acquire(35240) | 0 : 0) {
  i1 = _newlocale(2147483647, 30481, 0) | 0;
  HEAP32[9599] = i1;
 }
 return HEAP32[9599] | 0;
}

function __ZNSt3__110__function6__funcIZN4wasm6WalkerINS2_15RemoveUnusedBrsENS2_7VisitorIS4_vEEE9startWalkEPNS2_6ModuleEEUlvE_NS_9allocatorISA_EEFNS2_15ThreadWorkStateEvEE7destroyEv(i1) {
 i1 = i1 | 0;
 return;
}

function __ZN4wasm6WalkerINS_11MergeBlocksENS_7VisitorIS1_vEEE9doVisitIfEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_2IfEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_11BreakSeekerENS_7VisitorIS1_vEEE9doVisitIfEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_2IfEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZNSt3__119basic_istringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEED0Ev(i1) {
 i1 = i1 | 0;
 __ZNSt3__119basic_istringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev(i1);
 __ZdlPv(i1);
 return;
}

function __ZNSt3__110__function6__funcIZN4wasm6WalkerINS2_14SimplifyLocalsENS2_7VisitorIS4_vEEE9startWalkEPNS2_6ModuleEEUlvE_NS_9allocatorISA_EEFNS2_15ThreadWorkStateEvEE7destroyEv(i1) {
 i1 = i1 | 0;
 return;
}

function __ZNSt3__110__function6__funcIZN4wasm6WalkerINS2_14PostEmscriptenENS2_7VisitorIS4_vEEE9startWalkEPNS2_6ModuleEEUlvE_NS_9allocatorISA_EEFNS2_15ThreadWorkStateEvEE7destroyEv(i1) {
 i1 = i1 | 0;
 return;
}

function __ZN4wasm6WalkerINS_6VacuumENS_7VisitorIS1_vEEE11doVisitLoopEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_4LoopEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_6VacuumENS_7VisitorIS1_vEEE11doVisitLoadEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_4LoadEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_6VacuumENS_7VisitorIS1_vEEE11doVisitHostEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_4HostEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm6WalkerINS_6VacuumENS_7VisitorIS1_vEEE11doVisitCallEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_4CallEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZNSt3__110__function6__funcIZN4wasm6WalkerINS2_6VacuumENS2_7VisitorIS4_vEEE9startWalkEPNS2_6ModuleEEUlvE_NS_9allocatorISA_EEFNS2_15ThreadWorkStateEvEED0Ev(i1) {
 i1 = i1 | 0;
 __ZdlPv(i1);
 return;
}

function __ZNSt3__110__function6__funcIZN4wasm6WalkerINS2_13ReorderLocalsENS2_7VisitorIS4_vEEE9startWalkEPNS2_6ModuleEEUlvE_NS_9allocatorISA_EEFNS2_15ThreadWorkStateEvEE7destroyEv(i1) {
 i1 = i1 | 0;
 return;
}

function __ZNKSt3__110moneypunctIwLb1EE11do_groupingEv(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 i1 = 0;
 while (1) {
  if ((i1 | 0) == 3) break;
  HEAP32[i2 + (i1 << 2) >> 2] = 0;
  i1 = i1 + 1 | 0;
 }
 return;
}

function __ZNKSt3__110moneypunctIwLb0EE11do_groupingEv(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 i1 = 0;
 while (1) {
  if ((i1 | 0) == 3) break;
  HEAP32[i2 + (i1 << 2) >> 2] = 0;
  i1 = i1 + 1 | 0;
 }
 return;
}

function __ZNKSt3__110moneypunctIcLb1EE11do_groupingEv(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 i1 = 0;
 while (1) {
  if ((i1 | 0) == 3) break;
  HEAP32[i2 + (i1 << 2) >> 2] = 0;
  i1 = i1 + 1 | 0;
 }
 return;
}

function __ZNKSt3__110moneypunctIcLb0EE11do_groupingEv(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 i1 = 0;
 while (1) {
  if ((i1 | 0) == 3) break;
  HEAP32[i2 + (i1 << 2) >> 2] = 0;
  i1 = i1 + 1 | 0;
 }
 return;
}

function __ZN4wasm19CountTrailingZeroesIjEEiT_(i1) {
 i1 = i1 | 0;
 if (!i1) i1 = 32; else {
  i1 = 26237 + ((Math_imul(i1 & 0 - i1, 125613361) | 0) >>> 27) | 0;
  i1 = HEAPU8[i1 >> 0] | 0;
 }
 return i1 | 0;
}

function __ZThn8_NSt3__118basic_stringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev(i1) {
 i1 = i1 | 0;
 __ZNSt3__118basic_stringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev(i1 + -8 | 0);
 return;
}

function __ZThn8_NSt3__118basic_stringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEED0Ev(i1) {
 i1 = i1 | 0;
 __ZNSt3__118basic_stringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEED0Ev(i1 + -8 | 0);
 return;
}

function __ZNSt3__16locale5__imp7installINS_8numpunctIwEEEEvPT_(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZNSt3__16locale5__imp7installEPNS0_5facetEl(i2, i1, __ZNSt3__16locale2id5__getEv(38416) | 0);
 return;
}

function __ZNSt3__16locale5__imp7installINS_8numpunctIcEEEEvPT_(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZNSt3__16locale5__imp7installEPNS0_5facetEl(i2, i1, __ZNSt3__16locale2id5__getEv(38388) | 0);
 return;
}

function __ZNSt3__16locale5__imp7installINS_8messagesIwEEEEvPT_(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZNSt3__16locale5__imp7installEPNS0_5facetEl(i2, i1, __ZNSt3__16locale2id5__getEv(40160) | 0);
 return;
}

function __ZNSt3__16locale5__imp7installINS_8messagesIcEEEEvPT_(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZNSt3__16locale5__imp7installEPNS0_5facetEl(i2, i1, __ZNSt3__16locale2id5__getEv(40152) | 0);
 return;
}

function __ZNSt3__118basic_stringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEED0Ev(i1) {
 i1 = i1 | 0;
 __ZNSt3__118basic_stringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev(i1);
 __ZdlPv(i1);
 return;
}

function __ZN4wasm6WalkerINS_6VacuumENS_7VisitorIS1_vEEE10doVisitNopEPS1_PPNS_10ExpressionE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZN4wasm10Expression4castINS_3NopEEEPT_v(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZN4wasm10WalkerPassINS_10PostWalkerINS_6VacuumENS_7VisitorIS2_vEEEEED0Ev(i1) {
 i1 = i1 | 0;
 __ZN4wasm10WalkerPassINS_10PostWalkerINS_6VacuumENS_7VisitorIS2_vEEEEED2Ev(i1);
 __ZdlPv(i1);
 return;
}

function __ZNSt3__16locale5__imp7installINS_7collateIwEEEEvPT_(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZNSt3__16locale5__imp7installEPNS0_5facetEl(i2, i1, __ZNSt3__16locale2id5__getEv(38368) | 0);
 return;
}

function __ZNSt3__16locale5__imp7installINS_7collateIcEEEEvPT_(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZNSt3__16locale5__imp7installEPNS0_5facetEl(i2, i1, __ZNSt3__16locale2id5__getEv(38360) | 0);
 return;
}

function __ZNSt3__110__function6__funcIZN4wasm6WalkerINS2_11MergeBlocksENS2_7VisitorIS4_vEEE9startWalkEPNS2_6ModuleEEUlvE_NS_9allocatorISA_EEFNS2_15ThreadWorkStateEvEE7destroyEv(i1) {
 i1 = i1 | 0;
 return;
}

function __ZN6cashew7IStringC2EPKcb(i3, i2, i1) {
 i3 = i3 | 0;
 i2 = i2 | 0;
 i1 = i1 | 0;
 if (!i2) ___assert_fail(13985, 13987, 63, 14022); else {
  __ZN6cashew7IString3setEPKcb(i3, i2, i1);
  return;
 }
}

function __ZN4wasm12PassRegistry8PassInfoD2Ev(i1) {
 i1 = i1 | 0;
 __ZNSt3__18functionIFPN4wasm4PassEvEED2Ev(i1 + 16 | 0);
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i1);
 return;
}

function dynCall_viiiii(i6, i1, i2, i3, i4, i5) {
 i6 = i6 | 0;
 i1 = i1 | 0;
 i2 = i2 | 0;
 i3 = i3 | 0;
 i4 = i4 | 0;
 i5 = i5 | 0;
 FUNCTION_TABLE_viiiii[i6 & 3](i1 | 0, i2 | 0, i3 | 0, i4 | 0, i5 | 0);
}

function __ZNKSt3__18numpunctIwE12do_falsenameEv(i1, i2) {
 i1 = i1 | 0;
 i2 = i2 | 0;
 __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6__initEPKwj(i1, 12072, _wcslen(12072) | 0);
 return;
}

function __ZNSt3__16locale5__imp7installINS_5ctypeIwEEEEvPT_(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZNSt3__16locale5__imp7installEPNS0_5facetEl(i2, i1, __ZNSt3__16locale2id5__getEv(38408) | 0);
 return;
}

function __ZNSt3__16locale5__imp7installINS_5ctypeIcEEEEvPT_(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 __ZNSt3__16locale5__imp7installEPNS0_5facetEl(i2, i1, __ZNSt3__16locale2id5__getEv(38376) | 0);
 return;
}

function __ZNSt3__16__treeIjNS_4lessIjEENS_9allocatorIjEEED2Ev(i1) {
 i1 = i1 | 0;
 __ZNSt3__16__treeIjNS_4lessIjEENS_9allocatorIjEEE7destroyEPNS_11__tree_nodeIjPvEE(i1, HEAP32[i1 + 4 >> 2] | 0);
 return;
}

function __ZNKSt3__18numpunctIwE11do_truenameEv(i1, i2) {
 i1 = i1 | 0;
 i2 = i2 | 0;
 __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6__initEPKwj(i1, 12052, _wcslen(12052) | 0);
 return;
}

function __ZN4wasm8Function12getNumLocalsEv(i1) {
 i1 = i1 | 0;
 return ((HEAP32[i1 + 24 >> 2] | 0) - (HEAP32[i1 + 20 >> 2] | 0) >> 2) + ((HEAP32[i1 + 12 >> 2] | 0) - (HEAP32[i1 + 8 >> 2] | 0) >> 2) | 0;
}

function __ZNSt3__115basic_stringbufIcNS_11char_traitsIcEENS_9allocatorIcEEED0Ev(i1) {
 i1 = i1 | 0;
 __ZNSt3__115basic_stringbufIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i1);
 __ZdlPv(i1);
 return;
}

function __ZNSt3__110__function6__funcIZN4wasm6WalkerINS2_6VacuumENS2_7VisitorIS4_vEEE9startWalkEPNS2_6ModuleEEUlvE_NS_9allocatorISA_EEFNS2_15ThreadWorkStateEvEE7destroyEv(i1) {
 i1 = i1 | 0;
 return;
}

function __ZNSt3__110__function6__funcIZN4wasm12RegisterPassINS2_17RemoveUnusedNamesEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEE18destroy_deallocateEv(i1) {
 i1 = i1 | 0;
 __ZdlPv(i1);
 return;
}

function __ZNKSt3__110moneypunctIwLb1EE13do_pos_formatEv(i1, i2) {
 i1 = i1 | 0;
 i2 = i2 | 0;
 HEAP8[i1 >> 0] = 2;
 HEAP8[i1 + 1 >> 0] = 3;
 HEAP8[i1 + 2 >> 0] = 0;
 HEAP8[i1 + 3 >> 0] = 4;
 return;
}

function __ZNKSt3__110moneypunctIwLb1EE13do_neg_formatEv(i1, i2) {
 i1 = i1 | 0;
 i2 = i2 | 0;
 HEAP8[i1 >> 0] = 2;
 HEAP8[i1 + 1 >> 0] = 3;
 HEAP8[i1 + 2 >> 0] = 0;
 HEAP8[i1 + 3 >> 0] = 4;
 return;
}

function __ZNKSt3__110moneypunctIwLb0EE13do_pos_formatEv(i1, i2) {
 i1 = i1 | 0;
 i2 = i2 | 0;
 HEAP8[i1 >> 0] = 2;
 HEAP8[i1 + 1 >> 0] = 3;
 HEAP8[i1 + 2 >> 0] = 0;
 HEAP8[i1 + 3 >> 0] = 4;
 return;
}

function __ZNKSt3__110moneypunctIwLb0EE13do_neg_formatEv(i1, i2) {
 i1 = i1 | 0;
 i2 = i2 | 0;
 HEAP8[i1 >> 0] = 2;
 HEAP8[i1 + 1 >> 0] = 3;
 HEAP8[i1 + 2 >> 0] = 0;
 HEAP8[i1 + 3 >> 0] = 4;
 return;
}

function __ZNKSt3__110moneypunctIcLb1EE13do_pos_formatEv(i1, i2) {
 i1 = i1 | 0;
 i2 = i2 | 0;
 HEAP8[i1 >> 0] = 2;
 HEAP8[i1 + 1 >> 0] = 3;
 HEAP8[i1 + 2 >> 0] = 0;
 HEAP8[i1 + 3 >> 0] = 4;
 return;
}

function __ZNKSt3__110moneypunctIcLb1EE13do_neg_formatEv(i1, i2) {
 i1 = i1 | 0;
 i2 = i2 | 0;
 HEAP8[i1 >> 0] = 2;
 HEAP8[i1 + 1 >> 0] = 3;
 HEAP8[i1 + 2 >> 0] = 0;
 HEAP8[i1 + 3 >> 0] = 4;
 return;
}

function __ZNKSt3__110moneypunctIcLb0EE13do_pos_formatEv(i1, i2) {
 i1 = i1 | 0;
 i2 = i2 | 0;
 HEAP8[i1 >> 0] = 2;
 HEAP8[i1 + 1 >> 0] = 3;
 HEAP8[i1 + 2 >> 0] = 0;
 HEAP8[i1 + 3 >> 0] = 4;
 return;
}

function __ZNKSt3__110moneypunctIcLb0EE13do_neg_formatEv(i1, i2) {
 i1 = i1 | 0;
 i2 = i2 | 0;
 HEAP8[i1 >> 0] = 2;
 HEAP8[i1 + 1 >> 0] = 3;
 HEAP8[i1 + 2 >> 0] = 0;
 HEAP8[i1 + 3 >> 0] = 4;
 return;
}

function __ZNSt3__110__function6__funcIZN4wasm12RegisterPassINS2_15RemoveUnusedBrsEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEE18destroy_deallocateEv(i1) {
 i1 = i1 | 0;
 __ZdlPv(i1);
 return;
}

function __ZNSt3__110__function6__funcIZN4wasm12RegisterPassINS2_15MinifiedPrinterEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEE18destroy_deallocateEv(i1) {
 i1 = i1 | 0;
 __ZdlPv(i1);
 return;
}

function __ZNKSt3__17codecvtIDsc11__mbstate_tE10do_unshiftERS1_PcS4_RS4_(i3, i1, i4, i2, i5) {
 i3 = i3 | 0;
 i1 = i1 | 0;
 i4 = i4 | 0;
 i2 = i2 | 0;
 i5 = i5 | 0;
 HEAP32[i5 >> 2] = i4;
 return 3;
}

function __ZNKSt3__17codecvtIDic11__mbstate_tE10do_unshiftERS1_PcS4_RS4_(i3, i1, i4, i2, i5) {
 i3 = i3 | 0;
 i1 = i1 | 0;
 i4 = i4 | 0;
 i2 = i2 | 0;
 i5 = i5 | 0;
 HEAP32[i5 >> 2] = i4;
 return 3;
}

function __ZNSt3__110__function6__funcIZN4wasm12RegisterPassINS2_14SimplifyLocalsEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEE18destroy_deallocateEv(i1) {
 i1 = i1 | 0;
 __ZdlPv(i1);
 return;
}

function __ZNSt3__110__function6__funcIZN4wasm12RegisterPassINS2_14PostEmscriptenEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEE18destroy_deallocateEv(i1) {
 i1 = i1 | 0;
 __ZdlPv(i1);
 return;
}

function __ZNKSt3__17codecvtIcc11__mbstate_tE10do_unshiftERS1_PcS4_RS4_(i3, i1, i4, i2, i5) {
 i3 = i3 | 0;
 i1 = i1 | 0;
 i4 = i4 | 0;
 i2 = i2 | 0;
 i5 = i5 | 0;
 HEAP32[i5 >> 2] = i4;
 return 3;
}

function __ZN4wasm14SimplifyLocals12SinkableInfoC2EOS1_(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 HEAP32[i2 >> 2] = HEAP32[i1 >> 2];
 __ZN4wasm14EffectAnalyzerC2EOS0_(i2 + 4 | 0, i1 + 4 | 0);
 return;
}

function __ZNSt3__110__function6__funcIZN4wasm12RegisterPassINS2_13ReorderLocalsEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEE18destroy_deallocateEv(i1) {
 i1 = i1 | 0;
 __ZdlPv(i1);
 return;
}

function __ZNSt3__110__function6__funcIZN4wasm22SExpressionWasmBuilderC1ERNS2_6ModuleERNS2_7ElementEEUlvE_NS_9allocatorIS8_EEFvvEE18destroy_deallocateEv(i1) {
 i1 = i1 | 0;
 __ZdlPv(i1);
 return;
}

function _emscripten_bind_ModuleInstance___destroy___0(i1) {
 i1 = i1 | 0;
 if (i1 | 0) {
  __ZNSt3__113__vector_baseIN4wasm4NameENS_9allocatorIS2_EEED2Ev(i1 + 8 | 0);
  __ZdlPv(i1);
 }
 return;
}

function __ZNSt3__110__function6__funcIZN4wasm12RegisterPassINS2_11MergeBlocksEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEE18destroy_deallocateEv(i1) {
 i1 = i1 | 0;
 __ZdlPv(i1);
 return;
}

function __ZNSt3__110__function6__funcIZN4wasm12RegisterPassINS2_11FullPrinterEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEE18destroy_deallocateEv(i1) {
 i1 = i1 | 0;
 __ZdlPv(i1);
 return;
}

function __ZNKSt3__110moneypunctIwLb1EE16do_negative_signEv(i1, i2) {
 i1 = i1 | 0;
 i2 = i2 | 0;
 __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6__initEjw(i1, 1, 45);
 return;
}

function __ZNKSt3__110moneypunctIwLb0EE16do_negative_signEv(i1, i2) {
 i1 = i1 | 0;
 i2 = i2 | 0;
 __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE6__initEjw(i1, 1, 45);
 return;
}

function __ZNKSt3__110moneypunctIcLb1EE16do_negative_signEv(i1, i2) {
 i1 = i1 | 0;
 i2 = i2 | 0;
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6__initEjc(i1, 1, 45);
 return;
}

function __ZNKSt3__110moneypunctIcLb0EE16do_negative_signEv(i1, i2) {
 i1 = i1 | 0;
 i2 = i2 | 0;
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6__initEjc(i1, 1, 45);
 return;
}

function _emscripten_bind_Element___destroy___0(i1) {
 i1 = i1 | 0;
 if (i1 | 0) {
  __ZNSt3__113__vector_baseIPN4wasm7ElementENS_9allocatorIS3_EEED2Ev(i1 + 4 | 0);
  __ZdlPv(i1);
 }
 return;
}

function __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev(i1) {
 i1 = i1 | 0;
 if (HEAP8[i1 >> 0] & 1) _free(HEAP32[i1 + 8 >> 2] | 0);
 return;
}

function __ZN4wasm22ShellExternalInterface10growMemoryEjj(i3, i1, i2) {
 i3 = i3 | 0;
 i1 = i1 | 0;
 i2 = i2 | 0;
 __ZN4wasm22ShellExternalInterface6Memory6resizeEj(i3 + 4 | 0, i2);
 return;
}

function __ZN4wasm15MinifiedPrinterD0Ev(i1) {
 i1 = i1 | 0;
 HEAP32[i1 >> 2] = 3200;
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i1 + 4 | 0);
 __ZdlPv(i1);
 return;
}

function __ZNSt3__110__function6__funcIZN4wasm12RegisterPassINS2_7PrinterEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEE18destroy_deallocateEv(i1) {
 i1 = i1 | 0;
 __ZdlPv(i1);
 return;
}

function dynCall_iiiii(i5, i1, i2, i3, i4) {
 i5 = i5 | 0;
 i1 = i1 | 0;
 i2 = i2 | 0;
 i3 = i3 | 0;
 i4 = i4 | 0;
 return FUNCTION_TABLE_iiiii[i5 & 7](i1 | 0, i2 | 0, i3 | 0, i4 | 0) | 0;
}

function __ZZN4wasm12RegisterPassINS_15MinifiedPrinterEEC1EPKcS4_ENKUlvE_clEv(i1) {
 i1 = i1 | 0;
 i1 = __Znwj(20) | 0;
 __ZN4wasm7PrinterC2Ev(i1);
 HEAP32[i1 >> 2] = 3768;
 return i1 | 0;
}

function __ZNSt3__110__function6__funcIZN4wasm12RegisterPassINS2_6VacuumEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEE18destroy_deallocateEv(i1) {
 i1 = i1 | 0;
 __ZdlPv(i1);
 return;
}

function __ZNKSt3__18numpunctIcE12do_falsenameEv(i1, i2) {
 i1 = i1 | 0;
 i2 = i2 | 0;
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6__initEPKcj(i1, 33623, 5);
 return;
}

function __ZNK4wasm7Literal14reinterpreti32Ev(i1) {
 i1 = i1 | 0;
 if ((HEAP32[i1 >> 2] | 0) == 3) return HEAP32[i1 + 8 >> 2] | 0; else ___assert_fail(15554, 14223, 210, 15697);
 return 0;
}

function _i64Add(i1, i2, i3, i4) {
 i1 = i1 | 0;
 i2 = i2 | 0;
 i3 = i3 | 0;
 i4 = i4 | 0;
 i3 = i1 + i3 >>> 0;
 return (tempRet0 = i2 + i4 + (i3 >>> 0 < i1 >>> 0 | 0) >>> 0, i3 | 0) | 0;
}

function __ZTv0_n12_NSt3__114basic_iostreamIcNS_11char_traitsIcEEED1Ev(i1) {
 i1 = i1 | 0;
 __ZNSt3__18ios_baseD2Ev(i1 + (HEAP32[(HEAP32[i1 >> 2] | 0) + -12 >> 2] | 0) + 12 | 0);
 return;
}

function __ZNSt3__15ctypeIcED2Ev(i2) {
 i2 = i2 | 0;
 var i1 = 0;
 HEAP32[i2 >> 2] = 11928;
 i1 = HEAP32[i2 + 8 >> 2] | 0;
 if (i1 | 0 ? HEAP8[i2 + 12 >> 0] | 0 : 0) __ZdaPv(i1);
 return;
}

function __ZNSt3__121__thread_specific_ptrINS_15__thread_structEE16__at_thread_exitEPv(i1) {
 i1 = i1 | 0;
 if (i1 | 0) {
  __ZNSt3__115__thread_structD2Ev(i1);
  __ZdlPv(i1);
 }
 return;
}

function __ZNKSt3__18numpunctIcE11do_truenameEv(i1, i2) {
 i1 = i1 | 0;
 i2 = i2 | 0;
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6__initEPKcj(i1, 33629, 4);
 return;
}

function _emscripten_bind_LiteralList___destroy___0(i1) {
 i1 = i1 | 0;
 if (i1 | 0) {
  __ZNSt3__113__vector_baseIN4wasm7LiteralENS_9allocatorIS2_EEED2Ev(i1);
  __ZdlPv(i1);
 }
 return;
}

function __ZNKSt3__18numpunctIwE11do_groupingEv(i1, i2) {
 i1 = i1 | 0;
 i2 = i2 | 0;
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC2ERKS5_(i1, i2 + 16 | 0);
 return;
}

function __ZNKSt3__18numpunctIcE11do_groupingEv(i1, i2) {
 i1 = i1 | 0;
 i2 = i2 | 0;
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEC2ERKS5_(i1, i2 + 12 | 0);
 return;
}

function __ZN4wasm11FullPrinterD0Ev(i1) {
 i1 = i1 | 0;
 HEAP32[i1 >> 2] = 3200;
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i1 + 4 | 0);
 __ZdlPv(i1);
 return;
}

function __ZN4wasm10Expression4castINS_11UnreachableEEEPT_v(i1) {
 i1 = i1 | 0;
 if ((HEAP32[i1 >> 2] | 0) == 20) return i1 | 0; else ___assert_fail(15191, 14223, 775, 15206);
 return 0;
}

function __ZTv0_n12_NSt3__113basic_ostreamIwNS_11char_traitsIwEEED1Ev(i1) {
 i1 = i1 | 0;
 __ZNSt3__18ios_baseD2Ev(i1 + (HEAP32[(HEAP32[i1 >> 2] | 0) + -12 >> 2] | 0) + 4 | 0);
 return;
}

function __ZTv0_n12_NSt3__113basic_ostreamIcNS_11char_traitsIcEEED1Ev(i1) {
 i1 = i1 | 0;
 __ZNSt3__18ios_baseD2Ev(i1 + (HEAP32[(HEAP32[i1 >> 2] | 0) + -12 >> 2] | 0) + 4 | 0);
 return;
}

function __ZTv0_n12_NSt3__113basic_istreamIwNS_11char_traitsIwEEED1Ev(i1) {
 i1 = i1 | 0;
 __ZNSt3__18ios_baseD2Ev(i1 + (HEAP32[(HEAP32[i1 >> 2] | 0) + -12 >> 2] | 0) + 8 | 0);
 return;
}

function __ZTv0_n12_NSt3__113basic_istreamIcNS_11char_traitsIcEEED1Ev(i1) {
 i1 = i1 | 0;
 __ZNSt3__18ios_baseD2Ev(i1 + (HEAP32[(HEAP32[i1 >> 2] | 0) + -12 >> 2] | 0) + 8 | 0);
 return;
}

function __ZNK4wasm7Literal6getf64Ev(i1) {
 i1 = i1 | 0;
 if ((HEAP32[i1 >> 2] | 0) == 4) return +(+HEAPF64[i1 + 8 >> 3]); else ___assert_fail(14362, 14223, 206, 14384);
 return +(0.0);
}

function __ZNK4wasm7Literal6getf32Ev(i1) {
 i1 = i1 | 0;
 if ((HEAP32[i1 >> 2] | 0) == 3) return +(+HEAPF32[i1 + 8 >> 2]); else ___assert_fail(15554, 14223, 205, 15576);
 return +(0.0);
}

function __ZZN4wasm12RegisterPassINS_11FullPrinterEEC1EPKcS4_ENKUlvE_clEv(i1) {
 i1 = i1 | 0;
 i1 = __Znwj(20) | 0;
 __ZN4wasm7PrinterC2Ev(i1);
 HEAP32[i1 >> 2] = 3840;
 return i1 | 0;
}

function __ZNSt3__110__time_putD2Ev(i1) {
 i1 = i1 | 0;
 var i2 = 0;
 i2 = HEAP32[i1 >> 2] | 0;
 if ((i2 | 0) != (__ZNSt3__16__clocEv() | 0)) _freelocale(HEAP32[i1 >> 2] | 0);
 return;
}

function __ZNKSt3__110__function6__funcIZN4wasm12RegisterPassINS2_17RemoveUnusedNamesEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEE11target_typeEv(i1) {
 i1 = i1 | 0;
 return 688;
}

function __ZNSt3__111unique_lockINS_5mutexEE6unlockEv(i2) {
 i2 = i2 | 0;
 var i1 = 0;
 i1 = i2 + 4 | 0;
 __ZNSt3__15mutex6unlockEv(HEAP32[i2 >> 2] | 0);
 HEAP8[i1 >> 0] = 0;
 return;
}

function __ZNSt3__110__function6__funcIZN4wasm12RegisterPassINS2_17RemoveUnusedNamesEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEED0Ev(i1) {
 i1 = i1 | 0;
 __ZdlPv(i1);
 return;
}

function __ZNKSt3__110__function6__funcIZN4wasm12RegisterPassINS2_15RemoveUnusedBrsEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEE11target_typeEv(i1) {
 i1 = i1 | 0;
 return 552;
}

function __ZNKSt3__110__function6__funcIZN4wasm12RegisterPassINS2_15MinifiedPrinterEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEE11target_typeEv(i1) {
 i1 = i1 | 0;
 return 376;
}

function __ZNKSt3__110__function6__funcIZN4wasm12RegisterPassINS2_14SimplifyLocalsEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEE11target_typeEv(i1) {
 i1 = i1 | 0;
 return 1152;
}

function __ZN4wasm10Expression4castINS_8SetLocalEEEPT_v(i1) {
 i1 = i1 | 0;
 if ((HEAP32[i1 >> 2] | 0) == 10) return i1 | 0; else ___assert_fail(15191, 14223, 775, 15206);
 return 0;
}

function b11(i1, i2, i3, i4, i5, i6, i7, i8) {
 i1 = i1 | 0;
 i2 = i2 | 0;
 i3 = i3 | 0;
 i4 = i4 | 0;
 i5 = i5 | 0;
 i6 = i6 | 0;
 i7 = i7 | 0;
 i8 = i8 | 0;
 abort(11);
 return 0;
}

function __ZNKSt3__110__function6__funcIZN4wasm12RegisterPassINS2_14PostEmscriptenEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEE11target_typeEv(i1) {
 i1 = i1 | 0;
 return 824;
}

function __ZNKSt3__110__function6__funcIZN4wasm12RegisterPassINS2_13ReorderLocalsEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEE11target_typeEv(i1) {
 i1 = i1 | 0;
 return 1288;
}

function __ZN4wasm7PrinterD0Ev(i1) {
 i1 = i1 | 0;
 HEAP32[i1 >> 2] = 3200;
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i1 + 4 | 0);
 __ZdlPv(i1);
 return;
}

function __ZN4wasm10Expression4castINS_8GetLocalEEEPT_v(i1) {
 i1 = i1 | 0;
 if ((HEAP32[i1 >> 2] | 0) == 9) return i1 | 0; else ___assert_fail(15191, 14223, 775, 15206);
 return 0;
}

function _emscripten_bind_LiteralList_LiteralList_0() {
 var i1 = 0;
 i1 = __Znwj(12) | 0;
 HEAP32[i1 >> 2] = 0;
 HEAP32[i1 + 4 >> 2] = 0;
 HEAP32[i1 + 8 >> 2] = 0;
 return i1 | 0;
}

function __ZNSt3__16localeC2ERKS0_(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 i1 = HEAP32[i1 >> 2] | 0;
 HEAP32[i2 >> 2] = i1;
 __ZNSt3__114__shared_count12__add_sharedEv(i1);
 return;
}

function __ZNSt3__110__function6__funcIZN4wasm12RegisterPassINS2_15RemoveUnusedBrsEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEED0Ev(i1) {
 i1 = i1 | 0;
 __ZdlPv(i1);
 return;
}

function __ZNSt3__110__function6__funcIZN4wasm12RegisterPassINS2_15MinifiedPrinterEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEED0Ev(i1) {
 i1 = i1 | 0;
 __ZdlPv(i1);
 return;
}

function __ZN4wasm10Expression4castINS_6SelectEEEPT_v(i1) {
 i1 = i1 | 0;
 if ((HEAP32[i1 >> 2] | 0) == 16) return i1 | 0; else ___assert_fail(15191, 14223, 775, 15206);
 return 0;
}

function __ZN4wasm10Expression4castINS_6ReturnEEEPT_v(i1) {
 i1 = i1 | 0;
 if ((HEAP32[i1 >> 2] | 0) == 17) return i1 | 0; else ___assert_fail(15191, 14223, 775, 15206);
 return 0;
}

function __ZN4wasm10Expression4castINS_6BinaryEEEPT_v(i1) {
 i1 = i1 | 0;
 if ((HEAP32[i1 >> 2] | 0) == 15) return i1 | 0; else ___assert_fail(15191, 14223, 775, 15206);
 return 0;
}

function __ZNSt3__110__function6__funcIZN4wasm12RegisterPassINS2_14SimplifyLocalsEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEED0Ev(i1) {
 i1 = i1 | 0;
 __ZdlPv(i1);
 return;
}

function __ZNSt3__110__function6__funcIZN4wasm12RegisterPassINS2_14PostEmscriptenEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEED0Ev(i1) {
 i1 = i1 | 0;
 __ZdlPv(i1);
 return;
}

function __ZNK4wasm7Literal6geti32Ev(i1) {
 i1 = i1 | 0;
 if ((HEAP32[i1 >> 2] | 0) == 1) return HEAP32[i1 + 8 >> 2] | 0; else ___assert_fail(14201, 14223, 203, 15683);
 return 0;
}

function __ZN4wasm10Expression4castINS_5UnaryEEEPT_v(i1) {
 i1 = i1 | 0;
 if ((HEAP32[i1 >> 2] | 0) == 14) return i1 | 0; else ___assert_fail(15191, 14223, 775, 15206);
 return 0;
}

function __ZN4wasm10Expression4castINS_5StoreEEEPT_v(i1) {
 i1 = i1 | 0;
 if ((HEAP32[i1 >> 2] | 0) == 12) return i1 | 0; else ___assert_fail(15191, 14223, 775, 15206);
 return 0;
}

function __ZN4wasm10Expression4castINS_5ConstEEEPT_v(i1) {
 i1 = i1 | 0;
 if ((HEAP32[i1 >> 2] | 0) == 13) return i1 | 0; else ___assert_fail(15191, 14223, 775, 15206);
 return 0;
}

function dynCall_viiii(i5, i1, i2, i3, i4) {
 i5 = i5 | 0;
 i1 = i1 | 0;
 i2 = i2 | 0;
 i3 = i3 | 0;
 i4 = i4 | 0;
 FUNCTION_TABLE_viiii[i5 & 15](i1 | 0, i2 | 0, i3 | 0, i4 | 0);
}

function _emscripten_bind_SExpressionParser_SExpressionParser_1(i1) {
 i1 = i1 | 0;
 var i2 = 0;
 i2 = __Znwj(60) | 0;
 __ZN4wasm17SExpressionParserC2EPc(i2, i1);
 return i2 | 0;
}

function __ZNSt3__110__function6__funcIZN4wasm12RegisterPassINS2_13ReorderLocalsEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEED0Ev(i1) {
 i1 = i1 | 0;
 __ZdlPv(i1);
 return;
}

function __ZNKSt3__110__function6__funcIZN4wasm22SExpressionWasmBuilderC1ERNS2_6ModuleERNS2_7ElementEEUlvE_NS_9allocatorIS8_EEFvvEE11target_typeEv(i1) {
 i1 = i1 | 0;
 return 64;
}

function __ZNKSt3__110__function6__funcIZN4wasm12RegisterPassINS2_11MergeBlocksEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEE11target_typeEv(i1) {
 i1 = i1 | 0;
 return 296;
}

function __ZNKSt3__110__function6__funcIZN4wasm12RegisterPassINS2_11FullPrinterEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEE11target_typeEv(i1) {
 i1 = i1 | 0;
 return 416;
}

function __ZN4wasm4PassD0Ev(i1) {
 i1 = i1 | 0;
 HEAP32[i1 >> 2] = 3200;
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i1 + 4 | 0);
 __ZdlPv(i1);
 return;
}

function __ZN4wasm10Expression4castINS_5BreakEEEPT_v(i1) {
 i1 = i1 | 0;
 if ((HEAP32[i1 >> 2] | 0) == 4) return i1 | 0; else ___assert_fail(15191, 14223, 775, 15206);
 return 0;
}

function __ZN4wasm10Expression4castINS_4LoadEEEPT_v(i1) {
 i1 = i1 | 0;
 if ((HEAP32[i1 >> 2] | 0) == 11) return i1 | 0; else ___assert_fail(15191, 14223, 775, 15206);
 return 0;
}

function _uselocale(i3) {
 i3 = i3 | 0;
 var i1 = 0, i2 = 0;
 i1 = (_pthread_self() | 0) + 180 | 0;
 i2 = HEAP32[i1 >> 2] | 0;
 if (i3 | 0) HEAP32[i1 >> 2] = i3;
 return i2 | 0;
}

function __ZNSt3__110__function6__funcIZN4wasm22SExpressionWasmBuilderC1ERNS2_6ModuleERNS2_7ElementEEUlvE_NS_9allocatorIS8_EEFvvEED0Ev(i1) {
 i1 = i1 | 0;
 __ZdlPv(i1);
 return;
}

function __ZN4wasm10Expression4castINS_4LoopEEEPT_v(i1) {
 i1 = i1 | 0;
 if ((HEAP32[i1 >> 2] | 0) == 3) return i1 | 0; else ___assert_fail(15191, 14223, 775, 15206);
 return 0;
}

function __ZN4wasm10Expression4castINS_3NopEEEPT_v(i1) {
 i1 = i1 | 0;
 if ((HEAP32[i1 >> 2] | 0) == 19) return i1 | 0; else ___assert_fail(15191, 14223, 775, 15206);
 return 0;
}

function ___syscall_ret(i1) {
 i1 = i1 | 0;
 var i2 = 0;
 if (i1 >>> 0 > 4294963200) {
  i2 = ___errno_location() | 0;
  HEAP32[i2 >> 2] = 0 - i1;
  i1 = -1;
 }
 return i1 | 0;
}

function __ZNSt3__118condition_variable4waitERNS_11unique_lockINS_5mutexEEE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 _pthread_cond_wait(i2 | 0, HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZNSt3__110__function6__funcIZN4wasm12RegisterPassINS2_11MergeBlocksEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEED0Ev(i1) {
 i1 = i1 | 0;
 __ZdlPv(i1);
 return;
}

function __ZNSt3__110__function6__funcIZN4wasm12RegisterPassINS2_11FullPrinterEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEED0Ev(i1) {
 i1 = i1 | 0;
 __ZdlPv(i1);
 return;
}

function __ZN4wasm10Expression4castINS_2IfEEEPT_v(i1) {
 i1 = i1 | 0;
 if ((HEAP32[i1 >> 2] | 0) == 2) return i1 | 0; else ___assert_fail(15191, 14223, 775, 15206);
 return 0;
}

function ___errno_location() {
 var i1 = 0;
 if (!(HEAP32[9172] | 0)) i1 = 36732; else {
  i1 = (_pthread_self() | 0) + 64 | 0;
  i1 = HEAP32[i1 >> 2] | 0;
 }
 return i1 | 0;
}

function __ZNSt3__18numpunctIwED2Ev(i1) {
 i1 = i1 | 0;
 HEAP32[i1 >> 2] = 12020;
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i1 + 16 | 0);
 return;
}

function __ZNSt3__18numpunctIcED2Ev(i1) {
 i1 = i1 | 0;
 HEAP32[i1 >> 2] = 11980;
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i1 + 12 | 0);
 return;
}

function __ZNSt3__110__function6__funcIZN4wasm12RegisterPassINS2_17RemoveUnusedNamesEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEE7destroyEv(i1) {
 i1 = i1 | 0;
 return;
}

function __ZNKSt3__110__function6__funcIZN4wasm12RegisterPassINS2_7PrinterEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEE11target_typeEv(i1) {
 i1 = i1 | 0;
 return 336;
}

function __ZNKSt3__110__function6__funcIZN4wasm12RegisterPassINS2_6VacuumEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEE11target_typeEv(i1) {
 i1 = i1 | 0;
 return 1424;
}

function __ZN4wasm15SetLocalRemoverD0Ev(i1) {
 i1 = i1 | 0;
 __ZN4wasm10WalkerPassINS_10PostWalkerINS_15SetLocalRemoverENS_7VisitorIS2_vEEEEED2Ev(i1);
 __ZdlPv(i1);
 return;
}

function __ZN4wasm15GetLocalCounterD0Ev(i1) {
 i1 = i1 | 0;
 __ZN4wasm10WalkerPassINS_10PostWalkerINS_15GetLocalCounterENS_7VisitorIS2_vEEEEED2Ev(i1);
 __ZdlPv(i1);
 return;
}

function __ZNSt3__115__thread_structD2Ev(i1) {
 i1 = i1 | 0;
 i1 = HEAP32[i1 >> 2] | 0;
 if (i1 | 0) {
  __ZNSt3__119__thread_struct_impD2Ev(i1);
  __ZdlPv(i1);
 }
 return;
}

function __ZNSt3__110__function6__funcIZN4wasm12RegisterPassINS2_15RemoveUnusedBrsEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEE7destroyEv(i1) {
 i1 = i1 | 0;
 return;
}

function __ZNSt3__110__function6__funcIZN4wasm12RegisterPassINS2_15MinifiedPrinterEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEE7destroyEv(i1) {
 i1 = i1 | 0;
 return;
}

function __ZN4wasm7Element5c_strEv(i1) {
 i1 = i1 | 0;
 if (!(HEAP8[i1 >> 0] | 0)) return HEAP32[i1 + 16 >> 2] | 0; else ___assert_fail(14328, 14303, 92, 14337);
 return 0;
}

function __ZNSt3__110__function6__funcIZN4wasm12RegisterPassINS2_7PrinterEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEED0Ev(i1) {
 i1 = i1 | 0;
 __ZdlPv(i1);
 return;
}

function __ZNSt3__110__function6__funcIZN4wasm12RegisterPassINS2_14SimplifyLocalsEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEE7destroyEv(i1) {
 i1 = i1 | 0;
 return;
}

function __ZNSt3__110__function6__funcIZN4wasm12RegisterPassINS2_14PostEmscriptenEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEE7destroyEv(i1) {
 i1 = i1 | 0;
 return;
}

function __ZN4wasm14PostEmscriptenD0Ev(i1) {
 i1 = i1 | 0;
 __ZN4wasm10WalkerPassINS_10PostWalkerINS_14PostEmscriptenENS_7VisitorIS2_vEEEEED2Ev(i1);
 __ZdlPv(i1);
 return;
}

function __ZNSt3__110__function6__funcIZN4wasm12RegisterPassINS2_6VacuumEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEED0Ev(i1) {
 i1 = i1 | 0;
 __ZdlPv(i1);
 return;
}

function __ZNSt3__110__function6__funcIZN4wasm12RegisterPassINS2_13ReorderLocalsEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEE7destroyEv(i1) {
 i1 = i1 | 0;
 return;
}

function __ZN4wasm7Element3strEv(i1) {
 i1 = i1 | 0;
 if (!(HEAP8[i1 >> 0] | 0)) return HEAP32[i1 + 16 >> 2] | 0; else ___assert_fail(14328, 14303, 87, 14661);
 return 0;
}

function _emscripten_bind_SExpressionWasmBuilder___destroy___0(i1) {
 i1 = i1 | 0;
 if (i1 | 0) {
  __ZN4wasm22SExpressionWasmBuilderD2Ev(i1);
  __ZdlPv(i1);
 }
 return;
}

function __ZNSt3__110__function6__funcIZN4wasm22SExpressionWasmBuilderC1ERNS2_6ModuleERNS2_7ElementEEUlvE_NS_9allocatorIS8_EEFvvEE7destroyEv(i1) {
 i1 = i1 | 0;
 return;
}

function __ZNSt3__110__function6__funcIZN4wasm12RegisterPassINS2_11MergeBlocksEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEE7destroyEv(i1) {
 i1 = i1 | 0;
 return;
}

function __ZNSt3__110__function6__funcIZN4wasm12RegisterPassINS2_11FullPrinterEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEE7destroyEv(i1) {
 i1 = i1 | 0;
 return;
}

function __ZN4wasm7ElementixEj(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 i2 = __ZN4wasm7Element4listEv(i2) | 0;
 return HEAP32[(HEAP32[i2 >> 2] | 0) + (i1 << 2) >> 2] | 0;
}

function __ZNSt3__18time_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEED0Ev(i1) {
 i1 = i1 | 0;
 __ZNSt3__110__time_putD2Ev(i1 + 8 | 0);
 __ZdlPv(i1);
 return;
}

function __ZNSt3__18time_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEED0Ev(i1) {
 i1 = i1 | 0;
 __ZNSt3__110__time_putD2Ev(i1 + 8 | 0);
 __ZdlPv(i1);
 return;
}

function __ZNSt3__115basic_streambufIwNS_11char_traitsIwEEED0Ev(i1) {
 i1 = i1 | 0;
 HEAP32[i1 >> 2] = 9348;
 __ZNSt3__16localeD2Ev(i1 + 4 | 0);
 __ZdlPv(i1);
 return;
}

function __ZNSt3__115basic_streambufIcNS_11char_traitsIcEEED0Ev(i1) {
 i1 = i1 | 0;
 HEAP32[i1 >> 2] = 9284;
 __ZNSt3__16localeD2Ev(i1 + 4 | 0);
 __ZdlPv(i1);
 return;
}

function __ZN4wasm8PopCountIyEEiT_(i1, i2) {
 i1 = i1 | 0;
 i2 = i2 | 0;
 i1 = __ZN4wasm8PopCountIjEEiT_(i1) | 0;
 return (__ZN4wasm8PopCountIjEEiT_(i2) | 0) + i1 | 0;
}

function __ZThn8_NSt3__114basic_iostreamIcNS_11char_traitsIcEEED0Ev(i1) {
 i1 = i1 | 0;
 __ZNSt3__114basic_iostreamIcNS_11char_traitsIcEEED0Ev(i1 + -8 | 0);
 return;
}

function __ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev(i1) {
 i1 = i1 | 0;
 if (HEAP8[i1 >> 0] & 1) __ZdlPv(HEAP32[i1 + 8 >> 2] | 0);
 return;
}

function __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i1) {
 i1 = i1 | 0;
 if (HEAP8[i1 >> 0] & 1) __ZdlPv(HEAP32[i1 + 8 >> 2] | 0);
 return;
}

function __ZN4wasm11MergeBlocksD0Ev(i1) {
 i1 = i1 | 0;
 __ZN4wasm10WalkerPassINS_10PostWalkerINS_11MergeBlocksENS_7VisitorIS2_vEEEEED2Ev(i1);
 __ZdlPv(i1);
 return;
}

function __ZN4wasm4PassD2Ev(i1) {
 i1 = i1 | 0;
 HEAP32[i1 >> 2] = 3200;
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev(i1 + 4 | 0);
 return;
}

function __ZNSt3__16locale5facet16__on_zero_sharedEv(i1) {
 i1 = i1 | 0;
 if (i1 | 0) FUNCTION_TABLE_vi[HEAP32[(HEAP32[i1 >> 2] | 0) + 4 >> 2] & 255](i1);
 return;
}

function __ZNSt3__110__function6__funcIZN4wasm12RegisterPassINS2_7PrinterEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEE7destroyEv(i1) {
 i1 = i1 | 0;
 return;
}

function __ZNSt3__110__function6__funcIZN4wasm12RegisterPassINS2_6VacuumEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEE7destroyEv(i1) {
 i1 = i1 | 0;
 return;
}

function __ZNSt11logic_errorC2EPKc(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 HEAP32[i2 >> 2] = 12444;
 __ZNSt3__118__libcpp_refstringC2EPKc(i2 + 4 | 0, i1);
 return;
}

function dynCall_iiii(i4, i1, i2, i3) {
 i4 = i4 | 0;
 i1 = i1 | 0;
 i2 = i2 | 0;
 i3 = i3 | 0;
 return FUNCTION_TABLE_iiii[i4 & 31](i1 | 0, i2 | 0, i3 | 0) | 0;
}

function b0(i1, i2, i3, i4, i5, i6, i7) {
 i1 = i1 | 0;
 i2 = i2 | 0;
 i3 = i3 | 0;
 i4 = i4 | 0;
 i5 = i5 | 0;
 i6 = i6 | 0;
 i7 = i7 | 0;
 abort(0);
 return 0;
}

function _emscripten_bind_Literal_Literal_1(d1) {
 d1 = +d1;
 var i2 = 0;
 i2 = __Znwj(16) | 0;
 HEAP32[i2 >> 2] = 4;
 HEAPF64[i2 + 8 >> 3] = d1;
 return i2 | 0;
}

function __ZN4wasm7Element4sizeEv(i1) {
 i1 = i1 | 0;
 i1 = __ZN4wasm7Element4listEv(i1) | 0;
 return (HEAP32[i1 + 4 >> 2] | 0) - (HEAP32[i1 >> 2] | 0) >> 2 | 0;
}

function __ZNSt3__16locale2id6__initEv(i1) {
 i1 = i1 | 0;
 var i2 = 0;
 i2 = HEAP32[9596] | 0;
 HEAP32[9596] = i2 + 1;
 HEAP32[i1 + 4 >> 2] = i2 + 1;
 return;
}

function __ZN4wasm10ThreadPool9isRunningEv() {
 var i1 = 0;
 i1 = HEAP32[9171] | 0;
 if (!i1) i1 = 0; else i1 = (HEAP8[i1 + 12 >> 0] | 0) != 0;
 return i1 | 0;
}

function _strchr(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 i2 = ___strchrnul(i2, i1) | 0;
 return ((HEAP8[i2 >> 0] | 0) == (i1 & 255) << 24 >> 24 ? i2 : 0) | 0;
}

function __ZN4wasm7Element4listEv(i1) {
 i1 = i1 | 0;
 if (!(HEAP8[i1 >> 0] | 0)) ___assert_fail(14295, 14303, 72, 14323); else return i1 + 4 | 0;
 return 0;
}

function __ZN4wasm10ThreadPool4sizeEv(i1) {
 i1 = i1 | 0;
 i1 = (HEAP32[i1 + 4 >> 2] | 0) - (HEAP32[i1 >> 2] | 0) >> 2;
 return (i1 >>> 0 > 1 ? i1 : 1) | 0;
}

function _emscripten_bind_SExpressionParser___destroy___0(i1) {
 i1 = i1 | 0;
 if (i1 | 0) {
  __ZN10MixedArenaD2Ev(i1 + 4 | 0);
  __ZdlPv(i1);
 }
 return;
}

function __ZZN4wasm12RegisterPassINS_7PrinterEEC1EPKcS4_ENKUlvE_clEv(i1) {
 i1 = i1 | 0;
 i1 = __Znwj(20) | 0;
 __ZN4wasm7PrinterC2Ev(i1);
 return i1 | 0;
}

function _wcslen(i2) {
 i2 = i2 | 0;
 var i1 = 0;
 i1 = i2;
 while (1) if (!(HEAP32[i1 >> 2] | 0)) break; else i1 = i1 + 4 | 0;
 return i1 - i2 >> 2 | 0;
}

function __ZNSt3__18time_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEED2Ev(i1) {
 i1 = i1 | 0;
 __ZNSt3__110__time_putD2Ev(i1 + 8 | 0);
 return;
}

function __ZNSt3__18time_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEED2Ev(i1) {
 i1 = i1 | 0;
 __ZNSt3__110__time_putD2Ev(i1 + 8 | 0);
 return;
}

function __ZNSt3__18ios_base33__set_badbit_and_consider_rethrowEv(i1) {
 i1 = i1 | 0;
 i1 = i1 + 16 | 0;
 HEAP32[i1 >> 2] = HEAP32[i1 >> 2] | 1;
 return;
}

function __ZNSt3__115basic_streambufIwNS_11char_traitsIwEEED2Ev(i1) {
 i1 = i1 | 0;
 HEAP32[i1 >> 2] = 9348;
 __ZNSt3__16localeD2Ev(i1 + 4 | 0);
 return;
}

function __ZNSt3__115basic_streambufIcNS_11char_traitsIcEEED2Ev(i1) {
 i1 = i1 | 0;
 HEAP32[i1 >> 2] = 9284;
 __ZNSt3__16localeD2Ev(i1 + 4 | 0);
 return;
}

function __ZN4wasm6VacuumD0Ev(i1) {
 i1 = i1 | 0;
 __ZN4wasm10WalkerPassINS_10PostWalkerINS_6VacuumENS_7VisitorIS2_vEEEEED2Ev(i1);
 __ZdlPv(i1);
 return;
}

function __ZSt17__throw_bad_allocv() {
 var i1 = 0;
 i1 = ___cxa_allocate_exception(4) | 0;
 __ZNSt9bad_allocC2Ev(i1);
 ___cxa_throw(i1 | 0, 2872, 205);
}

function __ZNSt3__15mutex6unlockEv(i1) {
 i1 = i1 | 0;
 if (!(_pthread_mutex_unlock(i1 | 0) | 0)) return; else ___assert_fail(29457, 29465, 47, 29552);
}

function dynCall_viii(i4, i1, i2, i3) {
 i4 = i4 | 0;
 i1 = i1 | 0;
 i2 = i2 | 0;
 i3 = i3 | 0;
 FUNCTION_TABLE_viii[i4 & 15](i1 | 0, i2 | 0, i3 | 0);
}
function stackAlloc(i1) {
 i1 = i1 | 0;
 var i2 = 0;
 i2 = STACKTOP;
 STACKTOP = STACKTOP + i1 | 0;
 STACKTOP = STACKTOP + 15 & -16;
 return i2 | 0;
}

function _emscripten_bind_Name_Name_1(i1) {
 i1 = i1 | 0;
 var i2 = 0;
 i2 = __Znwj(4) | 0;
 __ZN6cashew7IStringC2EPKcb(i2, i1, 0);
 return i2 | 0;
}

function ___cxa_guard_acquire(i1) {
 i1 = i1 | 0;
 if ((HEAP8[i1 >> 0] | 0) == 1) i1 = 0; else {
  HEAP8[i1 >> 0] = 1;
  i1 = 1;
 }
 return i1 | 0;
}

function ___cxa_is_pointer_type(i1) {
 i1 = i1 | 0;
 if (!i1) i1 = 0; else i1 = (___dynamic_cast(i1, 2848, 2936, 0) | 0) != 0;
 return i1 & 1 | 0;
}

function __ZNSt3__18ios_base5clearEj(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 HEAP32[i2 + 16 >> 2] = (HEAP32[i2 + 24 >> 2] | 0) == 0 | i1;
 return;
}

function __ZNSt3__121__thread_specific_ptrINS_15__thread_structEED2Ev(i1) {
 i1 = i1 | 0;
 _pthread_key_delete(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __ZNSt3__114basic_iostreamIcNS_11char_traitsIcEEED0Ev(i1) {
 i1 = i1 | 0;
 __ZNSt3__18ios_baseD2Ev(i1 + 12 | 0);
 __ZdlPv(i1);
 return;
}

function __ZNSt3__114__shared_count12__add_sharedEv(i1) {
 i1 = i1 | 0;
 i1 = i1 + 4 | 0;
 HEAP32[i1 >> 2] = (HEAP32[i1 >> 2] | 0) + 1;
 return;
}

function __ZNKSt3__15ctypeIwE9do_narrowEwc(i3, i1, i2) {
 i3 = i3 | 0;
 i1 = i1 | 0;
 i2 = i2 | 0;
 return (i1 >>> 0 < 128 ? i1 & 255 : i2) | 0;
}

function b6(i1, i2, i3, i4, i5, i6) {
 i1 = i1 | 0;
 i2 = i2 | 0;
 i3 = i3 | 0;
 i4 = i4 | 0;
 i5 = i5 | 0;
 i6 = i6 | 0;
 abort(6);
 return 0;
}

function _strtoull_l(i4, i3, i1, i2) {
 i4 = i4 | 0;
 i3 = i3 | 0;
 i1 = i1 | 0;
 i2 = i2 | 0;
 i4 = _strtoull(i4, i3, i1) | 0;
 return i4 | 0;
}

function __ZNSt3__111__stdoutbufIwED0Ev(i1) {
 i1 = i1 | 0;
 __ZNSt3__115basic_streambufIwNS_11char_traitsIwEEED2Ev(i1);
 __ZdlPv(i1);
 return;
}

function __ZNSt3__111__stdoutbufIcED0Ev(i1) {
 i1 = i1 | 0;
 __ZNSt3__115basic_streambufIcNS_11char_traitsIcEEED2Ev(i1);
 __ZdlPv(i1);
 return;
}

function __ZNKSt3__15ctypeIcE9do_narrowEcc(i3, i1, i2) {
 i3 = i3 | 0;
 i1 = i1 | 0;
 i2 = i2 | 0;
 return (i1 << 24 >> 24 > -1 ? i1 : i2) | 0;
}

function __ZNSt3__115basic_streambufIwNS_11char_traitsIwEEE6setbufEPwi(i3, i1, i2) {
 i3 = i3 | 0;
 i1 = i1 | 0;
 i2 = i2 | 0;
 return i3 | 0;
}

function __ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE6setbufEPci(i3, i1, i2) {
 i3 = i3 | 0;
 i1 = i1 | 0;
 i2 = i2 | 0;
 return i3 | 0;
}

function __ZNSt3__113basic_ostreamIwNS_11char_traitsIwEEED0Ev(i1) {
 i1 = i1 | 0;
 __ZNSt3__18ios_baseD2Ev(i1 + 4 | 0);
 __ZdlPv(i1);
 return;
}

function __ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEED0Ev(i1) {
 i1 = i1 | 0;
 __ZNSt3__18ios_baseD2Ev(i1 + 4 | 0);
 __ZdlPv(i1);
 return;
}

function __ZNSt3__113basic_istreamIwNS_11char_traitsIwEEED0Ev(i1) {
 i1 = i1 | 0;
 __ZNSt3__18ios_baseD2Ev(i1 + 8 | 0);
 __ZdlPv(i1);
 return;
}

function __ZNSt3__113basic_istreamIcNS_11char_traitsIcEEED0Ev(i1) {
 i1 = i1 | 0;
 __ZNSt3__18ios_baseD2Ev(i1 + 8 | 0);
 __ZdlPv(i1);
 return;
}

function __ZNSt3__110__stdinbufIwED0Ev(i1) {
 i1 = i1 | 0;
 __ZNSt3__115basic_streambufIwNS_11char_traitsIwEEED2Ev(i1);
 __ZdlPv(i1);
 return;
}

function __ZNSt3__110__stdinbufIcED0Ev(i1) {
 i1 = i1 | 0;
 __ZNSt3__115basic_streambufIcNS_11char_traitsIcEEED2Ev(i1);
 __ZdlPv(i1);
 return;
}

function _strtoll_l(i4, i3, i1, i2) {
 i4 = i4 | 0;
 i3 = i3 | 0;
 i1 = i1 | 0;
 i2 = i2 | 0;
 i4 = _strtoll(i4, i3, i1) | 0;
 return i4 | 0;
}

function _isxdigit(i1) {
 i1 = i1 | 0;
 if ((i1 + -48 | 0) >>> 0 < 10) i1 = 1; else i1 = ((i1 | 32) + -97 | 0) >>> 0 < 6;
 return i1 & 1 | 0;
}

function b3(i1, i2, i3, i4, i5, d6) {
 i1 = i1 | 0;
 i2 = i2 | 0;
 i3 = i3 | 0;
 i4 = i4 | 0;
 i5 = i5 | 0;
 d6 = +d6;
 abort(3);
 return 0;
}

function _strtoll(i3, i2, i1) {
 i3 = i3 | 0;
 i2 = i2 | 0;
 i1 = i1 | 0;
 i3 = _strtox_519(i3, i2, i1, 0, -2147483648) | 0;
 return i3 | 0;
}

function __ZThn8_NSt3__114basic_iostreamIcNS_11char_traitsIcEEED1Ev(i1) {
 i1 = i1 | 0;
 __ZNSt3__18ios_baseD2Ev(i1 + -8 + 12 | 0);
 return;
}

function __ZNSt11logic_errorD2Ev(i1) {
 i1 = i1 | 0;
 HEAP32[i1 >> 2] = 12444;
 __ZN12_GLOBAL__N_114__libcpp_nmstrD2Ev(i1 + 4 | 0);
 return;
}

function __GLOBAL__sub_I_RemoveUnusedNames_cpp() {
 __ZN4wasm12RegisterPassINS_17RemoveUnusedNamesEEC2EPKcS4_(42239, 20435, 20455);
 return;
}

function _strtol(i3, i2, i1) {
 i3 = i3 | 0;
 i2 = i2 | 0;
 i1 = i1 | 0;
 i3 = _strtox_519(i3, i2, i1, -2147483648, 0) | 0;
 return i3 | 0;
}

function ___udivdi3(i1, i2, i3, i4) {
 i1 = i1 | 0;
 i2 = i2 | 0;
 i3 = i3 | 0;
 i4 = i4 | 0;
 return ___udivmoddi4(i1, i2, i3, i4, 0) | 0;
}

function __ZNSt3__17codecvtIwc11__mbstate_tED0Ev(i1) {
 i1 = i1 | 0;
 __ZNSt3__17codecvtIwc11__mbstate_tED2Ev(i1);
 __ZdlPv(i1);
 return;
}

function __ZNKSt3__121__basic_string_commonILb1EE20__throw_out_of_rangeEv(i1) {
 i1 = i1 | 0;
 ___assert_fail(29708, 29620, 1175, 29737);
}

function __ZNKSt3__121__basic_string_commonILb1EE20__throw_length_errorEv(i1) {
 i1 = i1 | 0;
 ___assert_fail(29591, 29620, 1164, 32572);
}

function _emscripten_bind_Module___destroy___0(i1) {
 i1 = i1 | 0;
 if (i1 | 0) {
  __ZN4wasm6ModuleD2Ev(i1);
  __ZdlPv(i1);
 }
 return;
}

function __ZN6Colors15outputColorCodeERNSt3__113basic_ostreamIcNS0_11char_traitsIcEEEEPKc(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 return;
}

function __GLOBAL__sub_I_RemoveUnusedBrs_cpp() {
 __ZN4wasm12RegisterPassINS_15RemoveUnusedBrsEEC2EPKcS4_(42238, 19582, 19600);
 return;
}

function __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv(i1) {
 i1 = i1 | 0;
 ___assert_fail(32461, 32484, 303, 32572);
}

function b13(i1, i2, i3, i4, i5, i6) {
 i1 = i1 | 0;
 i2 = i2 | 0;
 i3 = i3 | 0;
 i4 = i4 | 0;
 i5 = i5 | 0;
 i6 = i6 | 0;
 abort(13);
}

function __GLOBAL__sub_I_SimplifyLocals_cpp() {
 __ZN4wasm12RegisterPassINS_14SimplifyLocalsEEC2EPKcS4_(42241, 22035, 22051);
 return;
}

function __GLOBAL__sub_I_PostEmscripten_cpp() {
 __ZN4wasm12RegisterPassINS_14PostEmscriptenEEC2EPKcS4_(42240, 21219, 21235);
 return;
}

function dynCall_iii(i3, i1, i2) {
 i3 = i3 | 0;
 i1 = i1 | 0;
 i2 = i2 | 0;
 return FUNCTION_TABLE_iii[i3 & 63](i1 | 0, i2 | 0) | 0;
}

function _strtoull(i3, i2, i1) {
 i3 = i3 | 0;
 i2 = i2 | 0;
 i1 = i1 | 0;
 i3 = _strtox_519(i3, i2, i1, -1, -1) | 0;
 return i3 | 0;
}

function __ZNSt3__16localeD2Ev(i1) {
 i1 = i1 | 0;
 __ZNSt3__114__shared_count16__release_sharedEv(HEAP32[i1 >> 2] | 0) | 0;
 return;
}

function __GLOBAL__sub_I_ReorderLocals_cpp() {
 __ZN4wasm12RegisterPassINS_13ReorderLocalsEEC2EPKcS4_(42242, 23945, 23960);
 return;
}

function __ZNSt3__16locale5__imp12make_classicEv() {
 __ZNSt3__16locale5__impC2Ej(35728, 1);
 HEAP32[10050] = 35728;
 return 40200;
}

function __ZNSt3__114basic_iostreamIcNS_11char_traitsIcEEED1Ev(i1) {
 i1 = i1 | 0;
 __ZNSt3__18ios_baseD2Ev(i1 + 12 | 0);
 return;
}

function _emscripten_bind_SExpressionParser_set_root_1(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 HEAP32[i2 + 56 >> 2] = i1;
 return;
}

function __ZNSt3__16thread4joinEv(i1) {
 i1 = i1 | 0;
 _pthread_join(HEAP32[i1 >> 2] | 0, 0) | 0;
 HEAP32[i1 >> 2] = 0;
 return;
}

function __ZNSt3__16thread20hardware_concurrencyEv() {
 var i1 = 0;
 i1 = _sysconf(84) | 0;
 return ((i1 | 0) < 0 ? 0 : i1) | 0;
}

function __ZNSt3__113basic_ostreamIwNS_11char_traitsIwEEED1Ev(i1) {
 i1 = i1 | 0;
 __ZNSt3__18ios_baseD2Ev(i1 + 4 | 0);
 return;
}

function __ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEED1Ev(i1) {
 i1 = i1 | 0;
 __ZNSt3__18ios_baseD2Ev(i1 + 4 | 0);
 return;
}

function __ZNSt3__113basic_istreamIwNS_11char_traitsIwEEED1Ev(i1) {
 i1 = i1 | 0;
 __ZNSt3__18ios_baseD2Ev(i1 + 8 | 0);
 return;
}

function __ZNSt3__113basic_istreamIcNS_11char_traitsIcEEED1Ev(i1) {
 i1 = i1 | 0;
 __ZNSt3__18ios_baseD2Ev(i1 + 8 | 0);
 return;
}

function __ZNKSt3__18time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE13do_date_orderEv(i1) {
 i1 = i1 | 0;
 return 2;
}

function __ZNKSt3__18time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE13do_date_orderEv(i1) {
 i1 = i1 | 0;
 return 2;
}

function __GLOBAL__sub_I_MergeBlocks_cpp() {
 __ZN4wasm12RegisterPassINS_11MergeBlocksEEC2EPKcS4_(42234, 17230, 17243);
 return;
}

function b15(i1, i2, i3, i4, i5) {
 i1 = i1 | 0;
 i2 = i2 | 0;
 i3 = i3 | 0;
 i4 = i4 | 0;
 i5 = i5 | 0;
 abort(15);
 return 0;
}

function __ZNSt3__19money_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEED0Ev(i1) {
 i1 = i1 | 0;
 __ZdlPv(i1);
 return;
}

function __ZNSt3__19money_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEED0Ev(i1) {
 i1 = i1 | 0;
 __ZdlPv(i1);
 return;
}

function __ZNSt3__19money_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEED0Ev(i1) {
 i1 = i1 | 0;
 __ZdlPv(i1);
 return;
}

function __ZNSt3__19money_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEED0Ev(i1) {
 i1 = i1 | 0;
 __ZdlPv(i1);
 return;
}

function __ZN4wasm4Pass8finalizeEPNS_10PassRunnerEPNS_6ModuleE(i3, i2, i1) {
 i3 = i3 | 0;
 i2 = i2 | 0;
 i1 = i1 | 0;
 return;
}

function _mbrlen(i2, i1, i3) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 i3 = i3 | 0;
 return _mbrtowc(0, i2, i1, i3 | 0 ? i3 : 36748) | 0;
}

function __ZNSt3__18time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEED0Ev(i1) {
 i1 = i1 | 0;
 __ZdlPv(i1);
 return;
}

function __ZNSt3__18time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEED0Ev(i1) {
 i1 = i1 | 0;
 __ZdlPv(i1);
 return;
}

function __ZNSt3__115basic_streambufIwNS_11char_traitsIwEEE5imbueERKNS_6localeE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 return;
}

function __ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE5imbueERKNS_6localeE(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 return;
}

function __ZN4wasm4Pass7prepareEPNS_10PassRunnerEPNS_6ModuleE(i3, i2, i1) {
 i3 = i3 | 0;
 i2 = i2 | 0;
 i1 = i1 | 0;
 return;
}

function _emscripten_bind_Element_getChild_1(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 return __ZN4wasm7ElementixEj(i2, i1) | 0;
}

function __ZNSt3__17num_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEED0Ev(i1) {
 i1 = i1 | 0;
 __ZdlPv(i1);
 return;
}

function __ZNSt3__17num_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEED0Ev(i1) {
 i1 = i1 | 0;
 __ZdlPv(i1);
 return;
}

function __ZNSt3__17num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEED0Ev(i1) {
 i1 = i1 | 0;
 __ZdlPv(i1);
 return;
}

function __ZNSt3__17num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEED0Ev(i1) {
 i1 = i1 | 0;
 __ZdlPv(i1);
 return;
}

function __GLOBAL__I_000101() {
 __ZNSt3__18ios_base4InitC2Ev(0);
 ___cxa_atexit(219, 44317, ___dso_handle | 0) | 0;
 return;
}

function _emscripten_bind_Module_Module_0() {
 var i1 = 0;
 i1 = __Znwj(204) | 0;
 __ZN4wasm6ModuleC2Ev(i1);
 return i1 | 0;
}

function __ZNSt3__110__stdinbufIwE9underflowEv(i1) {
 i1 = i1 | 0;
 return __ZNSt3__110__stdinbufIwE9__getcharEb(i1, 0) | 0;
}

function __ZNSt3__110__stdinbufIcE9underflowEv(i1) {
 i1 = i1 | 0;
 return __ZNSt3__110__stdinbufIcE9__getcharEb(i1, 0) | 0;
}

function dynCall_vii(i3, i1, i2) {
 i3 = i3 | 0;
 i1 = i1 | 0;
 i2 = i2 | 0;
 FUNCTION_TABLE_vii[i3 & 511](i1 | 0, i2 | 0);
}

function _wctomb(i1, i2) {
 i1 = i1 | 0;
 i2 = i2 | 0;
 if (!i1) i1 = 0; else i1 = _wcrtomb(i1, i2, 0) | 0;
 return i1 | 0;
}

function __ZN4wasm17RemoveUnusedNamesD0Ev(i1) {
 i1 = i1 | 0;
 __ZN4wasm17RemoveUnusedNamesD2Ev(i1);
 __ZdlPv(i1);
 return;
}

function b7(i1, i2, i3, i4, d5) {
 i1 = i1 | 0;
 i2 = i2 | 0;
 i3 = i3 | 0;
 i4 = i4 | 0;
 d5 = +d5;
 abort(7);
 return 0;
}

function __ZNSt3__115basic_streambufIwNS_11char_traitsIwEEE9pbackfailEj(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 return -1;
}

function __ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE9pbackfailEi(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 return -1;
}

function __ZNSt3__118condition_variable10notify_allEv(i1) {
 i1 = i1 | 0;
 _pthread_cond_broadcast(i1 | 0) | 0;
 return;
}

function __ZNSt3__115basic_streambufIwNS_11char_traitsIwEEE8overflowEj(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 return -1;
}

function __ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE8overflowEi(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 return -1;
}

function __ZNSt3__110__stdinbufIwE5uflowEv(i1) {
 i1 = i1 | 0;
 return __ZNSt3__110__stdinbufIwE9__getcharEb(i1, 1) | 0;
}

function __ZNSt3__110__stdinbufIcE5uflowEv(i1) {
 i1 = i1 | 0;
 return __ZNSt3__110__stdinbufIcE9__getcharEb(i1, 1) | 0;
}

function __ZN4wasm15RemoveUnusedBrsD0Ev(i1) {
 i1 = i1 | 0;
 __ZN4wasm15RemoveUnusedBrsD2Ev(i1);
 __ZdlPv(i1);
 return;
}

function __GLOBAL__sub_I_threads_cpp() {
 HEAP32[9171] = 0;
 ___cxa_atexit(215, 36684, ___dso_handle | 0) | 0;
 return;
}

function _strncpy(i1, i3, i2) {
 i1 = i1 | 0;
 i3 = i3 | 0;
 i2 = i2 | 0;
 ___stpncpy(i1, i3, i2) | 0;
 return i1 | 0;
}

function __ZNSt3__118condition_variable10notify_oneEv(i1) {
 i1 = i1 | 0;
 _pthread_cond_signal(i1 | 0) | 0;
 return;
}

function __ZN4wasm14SimplifyLocalsD0Ev(i1) {
 i1 = i1 | 0;
 __ZN4wasm14SimplifyLocalsD2Ev(i1);
 __ZdlPv(i1);
 return;
}

function __GLOBAL__sub_I_Vacuum_cpp() {
 __ZN4wasm12RegisterPassINS_6VacuumEEC2EPKcS4_(42243, 24742, 24749);
 return;
}

function __ZSt15get_new_handlerv() {
 var i1 = 0;
 i1 = HEAP32[10056] | 0;
 HEAP32[10056] = i1 + 0;
 return i1 | 0;
}

function __ZNSt3__19basic_iosIcNS_11char_traitsIcEEED2Ev(i1) {
 i1 = i1 | 0;
 __ZNSt3__18ios_baseD2Ev(i1);
 return;
}

function __ZN4wasm13ReorderLocalsD0Ev(i1) {
 i1 = i1 | 0;
 __ZN4wasm13ReorderLocalsD2Ev(i1);
 __ZdlPv(i1);
 return;
}

function setThrew(i1, i2) {
 i1 = i1 | 0;
 i2 = i2 | 0;
 if (!__THREW__) {
  __THREW__ = i1;
  threwValue = i2;
 }
}

function b2(i1, i2, i3, i4, i5) {
 i1 = i1 | 0;
 i2 = i2 | 0;
 i3 = i3 | 0;
 i4 = i4 | 0;
 i5 = i5 | 0;
 abort(2);
}

function __ZZN4wasm22SExpressionWasmBuilderC1ERNS_6ModuleERNS_7ElementEENKUlvE_clEv(i1) {
 i1 = i1 | 0;
 _abort();
}

function __Z17prepareMajorColorRNSt3__113basic_ostreamIcNS_11char_traitsIcEEEE(i1) {
 i1 = i1 | 0;
 return i1 | 0;
}

function _mbsinit(i1) {
 i1 = i1 | 0;
 if (!i1) i1 = 1; else i1 = (HEAP32[i1 >> 2] | 0) == 0;
 return i1 & 1 | 0;
}

function _fputs(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 return (_fwrite(i2, _strlen(i2) | 0, 1, i1) | 0) + -1 | 0;
}

function _do_read(i2, i1, i3) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 i3 = i3 | 0;
 return ___string_read(i2, i1, i3) | 0;
}

function __ZNSt3__19money_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEED2Ev(i1) {
 i1 = i1 | 0;
 return;
}

function __ZNSt3__19money_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEED2Ev(i1) {
 i1 = i1 | 0;
 return;
}

function __ZNSt3__19money_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEED2Ev(i1) {
 i1 = i1 | 0;
 return;
}

function __ZNSt3__19money_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEED2Ev(i1) {
 i1 = i1 | 0;
 return;
}

function __ZNSt3__16locale5__impD0Ev(i1) {
 i1 = i1 | 0;
 __ZNSt3__16locale5__impD2Ev(i1);
 __ZdlPv(i1);
 return;
}

function __ZNSt3__18time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEED2Ev(i1) {
 i1 = i1 | 0;
 return;
}

function __ZNSt3__18time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEED2Ev(i1) {
 i1 = i1 | 0;
 return;
}

function __ZNSt3__16threadD2Ev(i1) {
 i1 = i1 | 0;
 if (!(HEAP32[i1 >> 2] | 0)) return; else __ZSt9terminatev();
}

function _nearbyintf(d1) {
 d1 = +d1;
 var i2 = 0;
 i2 = _fetestexcept(32) | 0;
 d1 = +_rintf(d1);
 return +d1;
}

function __ZNSt3__18numpunctIwED0Ev(i1) {
 i1 = i1 | 0;
 __ZNSt3__18numpunctIwED2Ev(i1);
 __ZdlPv(i1);
 return;
}

function __ZNSt3__18numpunctIcED0Ev(i1) {
 i1 = i1 | 0;
 __ZNSt3__18numpunctIcED2Ev(i1);
 __ZdlPv(i1);
 return;
}

function __ZNSt3__17num_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEED2Ev(i1) {
 i1 = i1 | 0;
 return;
}

function __ZNSt3__17num_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEED2Ev(i1) {
 i1 = i1 | 0;
 return;
}

function __ZNSt3__17num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEED2Ev(i1) {
 i1 = i1 | 0;
 return;
}

function __ZNSt3__17num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEED2Ev(i1) {
 i1 = i1 | 0;
 return;
}

function b12(i1, i2, i3, i4) {
 i1 = i1 | 0;
 i2 = i2 | 0;
 i3 = i3 | 0;
 i4 = i4 | 0;
 abort(12);
 return 0;
}

function _nearbyint(d1) {
 d1 = +d1;
 var i2 = 0;
 i2 = _fetestexcept(32) | 0;
 d1 = +_rint(d1);
 return +d1;
}

function __ZNSt3__114basic_iostreamIcNS_11char_traitsIcEEED2Ev(i1, i2) {
 i1 = i1 | 0;
 i2 = i2 | 0;
 return;
}

function __Z12prepareColorRNSt3__113basic_ostreamIcNS_11char_traitsIcEEEE(i1) {
 i1 = i1 | 0;
 return i1 | 0;
}

function _emscripten_bind_SExpressionParser_get_root_0(i1) {
 i1 = i1 | 0;
 return HEAP32[i1 + 56 >> 2] | 0;
}

function __ZNSt3__118condition_variableD2Ev(i1) {
 i1 = i1 | 0;
 _pthread_cond_destroy(i1 | 0) | 0;
 return;
}

function __ZNSt3__113basic_istreamIcNS_11char_traitsIcEEED2Ev(i1, i2) {
 i1 = i1 | 0;
 i2 = i2 | 0;
 return;
}

function _strtold_l(i3, i2, i1) {
 i3 = i3 | 0;
 i2 = i2 | 0;
 i1 = i1 | 0;
 return +(+_strtox(i3, i2, 2));
}

function _emscripten_bind_Literal_getf64_0(i1) {
 i1 = i1 | 0;
 return +(+__ZNK4wasm7Literal6getf64Ev(i1));
}

function _catgets(i1, i4, i2, i3) {
 i1 = i1 | 0;
 i4 = i4 | 0;
 i2 = i2 | 0;
 i3 = i3 | 0;
 return i3 | 0;
}

function dynCall_ii(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 return FUNCTION_TABLE_ii[i2 & 127](i1 | 0) | 0;
}

function _emscripten_bind_WasmPrinter___destroy___0(i1) {
 i1 = i1 | 0;
 if (i1 | 0) __ZdlPv(i1);
 return;
}

function ___clang_call_terminate(i1) {
 i1 = i1 | 0;
 ___cxa_begin_catch(i1 | 0) | 0;
 __ZSt9terminatev();
}

function __ZNSt12out_of_rangeD0Ev(i1) {
 i1 = i1 | 0;
 __ZNSt11logic_errorD2Ev(i1);
 __ZdlPv(i1);
 return;
}

function __ZNKSt3__18numpunctIwE16do_thousands_sepEv(i1) {
 i1 = i1 | 0;
 return HEAP32[i1 + 12 >> 2] | 0;
}

function __ZNKSt3__15ctypeIwE8do_widenEc(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 return i1 << 24 >> 24 | 0;
}

function __ZNSt3__18ios_baseD0Ev(i1) {
 i1 = i1 | 0;
 __ZNSt3__18ios_baseD2Ev(i1);
 __ZdlPv(i1);
 return;
}

function __ZNSt3__15ctypeIcED0Ev(i1) {
 i1 = i1 | 0;
 __ZNSt3__15ctypeIcED2Ev(i1);
 __ZdlPv(i1);
 return;
}

function __ZNSt11logic_errorD0Ev(i1) {
 i1 = i1 | 0;
 __ZNSt11logic_errorD2Ev(i1);
 __ZdlPv(i1);
 return;
}

function __ZNKSt3__18numpunctIwE16do_decimal_pointEv(i1) {
 i1 = i1 | 0;
 return HEAP32[i1 + 8 >> 2] | 0;
}

function _emscripten_bind_Element_c_str_0(i1) {
 i1 = i1 | 0;
 return __ZN4wasm7Element5c_strEv(i1) | 0;
}

function __ZNKSt3__18numpunctIcE16do_thousands_sepEv(i1) {
 i1 = i1 | 0;
 return HEAP8[i1 + 9 >> 0] | 0;
}

function __ZNKSt3__18numpunctIcE16do_decimal_pointEv(i1) {
 i1 = i1 | 0;
 return HEAP8[i1 + 8 >> 0] | 0;
}

function _cleanup_387(i1) {
 i1 = i1 | 0;
 if (!(HEAP32[i1 + 68 >> 2] | 0)) ___unlockfile(i1);
 return;
}

function _cleanup_382(i1) {
 i1 = i1 | 0;
 if (!(HEAP32[i1 + 68 >> 2] | 0)) ___unlockfile(i1);
 return;
}

function __ZNSt3__115basic_streambufIwNS_11char_traitsIwEEE9underflowEv(i1) {
 i1 = i1 | 0;
 return -1;
}

function __ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE9underflowEv(i1) {
 i1 = i1 | 0;
 return -1;
}

function _emscripten_bind_VoidPtr___destroy___0(i1) {
 i1 = i1 | 0;
 if (i1 | 0) __ZdlPv(i1);
 return;
}

function _emscripten_bind_Literal___destroy___0(i1) {
 i1 = i1 | 0;
 if (i1 | 0) __ZdlPv(i1);
 return;
}

function _emscripten_bind_Element_size_0(i1) {
 i1 = i1 | 0;
 return __ZN4wasm7Element4sizeEv(i1) | 0;
}

function __ZNSt3__115basic_streambufIwNS_11char_traitsIwEEE9showmanycEv(i1) {
 i1 = i1 | 0;
 return 0;
}

function __ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE9showmanycEv(i1) {
 i1 = i1 | 0;
 return 0;
}

function _emscripten_bind_Element_isList_0(i1) {
 i1 = i1 | 0;
 return (HEAP8[i1 >> 0] | 0) != 0 | 0;
}

function _emscripten_bind_Element_isStr_0(i1) {
 i1 = i1 | 0;
 return (HEAP8[i1 >> 0] | 0) == 0 | 0;
}

function _emscripten_bind_Element_dump_0(i1) {
 i1 = i1 | 0;
 __ZN4wasm7Element4dumpEv(i1);
 return;
}

function __ZNSt3__110__function6__baseIFN4wasm15ThreadWorkStateEvEED2Ev(i1) {
 i1 = i1 | 0;
 return;
}

function establishStackSpace(i1, i2) {
 i1 = i1 | 0;
 i2 = i2 | 0;
 STACKTOP = i1;
 STACK_MAX = i2;
}

function _emscripten_bind_Name___destroy___0(i1) {
 i1 = i1 | 0;
 if (i1 | 0) __ZdlPv(i1);
 return;
}

function __ZNKSt3__110moneypunctIwLb1EE16do_thousands_sepEv(i1) {
 i1 = i1 | 0;
 return 2147483647;
}

function __ZNKSt3__110moneypunctIwLb1EE16do_decimal_pointEv(i1) {
 i1 = i1 | 0;
 return 2147483647;
}

function __ZNKSt3__110moneypunctIwLb0EE16do_thousands_sepEv(i1) {
 i1 = i1 | 0;
 return 2147483647;
}

function __ZNKSt3__110moneypunctIwLb0EE16do_decimal_pointEv(i1) {
 i1 = i1 | 0;
 return 2147483647;
}

function b16(i1, i2, i3, i4) {
 i1 = i1 | 0;
 i2 = i2 | 0;
 i3 = i3 | 0;
 i4 = i4 | 0;
 abort(16);
}

function _isspace(i1) {
 i1 = i1 | 0;
 return ((i1 | 0) == 32 | (i1 + -9 | 0) >>> 0 < 5) & 1 | 0;
}

function __ZNSt3__115basic_streambufIwNS_11char_traitsIwEEE4syncEv(i1) {
 i1 = i1 | 0;
 return 0;
}

function __ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE4syncEv(i1) {
 i1 = i1 | 0;
 return 0;
}

function __ZNKSt3__17codecvtIDsc11__mbstate_tE16do_always_noconvEv(i1) {
 i1 = i1 | 0;
 return 0;
}

function __ZNKSt3__17codecvtIDic11__mbstate_tE16do_always_noconvEv(i1) {
 i1 = i1 | 0;
 return 0;
}

function _isdigit_l(i1, i2) {
 i1 = i1 | 0;
 i2 = i2 | 0;
 return (i1 + -48 | 0) >>> 0 < 10 | 0;
}

function __ZNKSt3__17codecvtIwc11__mbstate_tE16do_always_noconvEv(i1) {
 i1 = i1 | 0;
 return 0;
}

function __ZNKSt3__17codecvtIcc11__mbstate_tE16do_always_noconvEv(i1) {
 i1 = i1 | 0;
 return 1;
}

function dynCall_vi(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 FUNCTION_TABLE_vi[i2 & 255](i1 | 0);
}

function __ZNSt3__15mutexD2Ev(i1) {
 i1 = i1 | 0;
 _pthread_mutex_destroy(i1 | 0) | 0;
 return;
}

function __ZNSt3__15mutex4lockEv(i1) {
 i1 = i1 | 0;
 _pthread_mutex_lock(i1 | 0) | 0;
 return;
}

function __ZN10__cxxabiv121__vmi_class_type_infoD0Ev(i1) {
 i1 = i1 | 0;
 __ZdlPv(i1);
 return;
}

function __ZNKSt3__17codecvtIDsc11__mbstate_tE13do_max_lengthEv(i1) {
 i1 = i1 | 0;
 return 4;
}

function __ZNKSt3__17codecvtIDic11__mbstate_tE13do_max_lengthEv(i1) {
 i1 = i1 | 0;
 return 4;
}

function __ZNKSt3__15ctypeIcE8do_widenEc(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 return i1 | 0;
}

function __ZN10__cxxabiv120__si_class_type_infoD0Ev(i1) {
 i1 = i1 | 0;
 __ZdlPv(i1);
 return;
}

function __ZNSt3__120__throw_system_errorEiPKc(i1, i2) {
 i1 = i1 | 0;
 i2 = i2 | 0;
 return;
}

function __ZNKSt3__17codecvtIcc11__mbstate_tE13do_max_lengthEv(i1) {
 i1 = i1 | 0;
 return 1;
}

function __ZNSt3__17codecvtIDsc11__mbstate_tED0Ev(i1) {
 i1 = i1 | 0;
 __ZdlPv(i1);
 return;
}

function __ZNSt3__17codecvtIDic11__mbstate_tED0Ev(i1) {
 i1 = i1 | 0;
 __ZdlPv(i1);
 return;
}

function __ZNSt3__117__widen_from_utf8ILj32EED0Ev(i1) {
 i1 = i1 | 0;
 __ZdlPv(i1);
 return;
}

function __ZNKSt3__17codecvtIDsc11__mbstate_tE11do_encodingEv(i1) {
 i1 = i1 | 0;
 return 0;
}

function __ZNKSt3__17codecvtIDic11__mbstate_tE11do_encodingEv(i1) {
 i1 = i1 | 0;
 return 0;
}

function __ZNKSt3__110moneypunctIcLb1EE16do_thousands_sepEv(i1) {
 i1 = i1 | 0;
 return 127;
}

function __ZNKSt3__110moneypunctIcLb1EE16do_decimal_pointEv(i1) {
 i1 = i1 | 0;
 return 127;
}

function __ZNKSt3__110moneypunctIcLb0EE16do_thousands_sepEv(i1) {
 i1 = i1 | 0;
 return 127;
}

function __ZNKSt3__110moneypunctIcLb0EE16do_decimal_pointEv(i1) {
 i1 = i1 | 0;
 return 127;
}

function __ZNSt3__17codecvtIcc11__mbstate_tED0Ev(i1) {
 i1 = i1 | 0;
 __ZdlPv(i1);
 return;
}

function __ZNSt3__116__narrow_to_utf8ILj32EED0Ev(i1) {
 i1 = i1 | 0;
 __ZdlPv(i1);
 return;
}

function __ZNKSt3__17codecvtIcc11__mbstate_tE11do_encodingEv(i1) {
 i1 = i1 | 0;
 return 1;
}

function __ZN10__cxxabiv117__class_type_infoD0Ev(i1) {
 i1 = i1 | 0;
 __ZdlPv(i1);
 return;
}

function __ZNKSt3__18messagesIwE8do_closeEi(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 return;
}

function __ZNKSt3__18messagesIcE8do_closeEi(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 return;
}

function b1(i1, i2, i3) {
 i1 = i1 | 0;
 i2 = i2 | 0;
 i3 = i3 | 0;
 abort(1);
 return 0;
}

function __ZNSt3__110__function6__baseIFPN4wasm4PassEvEED2Ev(i1) {
 i1 = i1 | 0;
 return;
}

function __ZNKSt11logic_error4whatEv(i1) {
 i1 = i1 | 0;
 return HEAP32[i1 + 4 >> 2] | 0;
}

function __ZNKSt3__110moneypunctIwLb1EE14do_frac_digitsEv(i1) {
 i1 = i1 | 0;
 return 0;
}

function __ZNKSt3__110moneypunctIwLb0EE14do_frac_digitsEv(i1) {
 i1 = i1 | 0;
 return 0;
}

function __ZNKSt3__110moneypunctIcLb1EE14do_frac_digitsEv(i1) {
 i1 = i1 | 0;
 return 0;
}

function __ZNKSt3__110moneypunctIcLb0EE14do_frac_digitsEv(i1) {
 i1 = i1 | 0;
 return 0;
}

function _emscripten_bind_Name_c_str_0(i1) {
 i1 = i1 | 0;
 return HEAP32[i1 >> 2] | 0;
}

function _strtof(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 return +(+_strtox(i2, i1, 0));
}

function _strtod(i2, i1) {
 i2 = i2 | 0;
 i1 = i1 | 0;
 return +(+_strtox(i2, i1, 1));
}

function _isxdigit_l(i1, i2) {
 i1 = i1 | 0;
 i2 = i2 | 0;
 return _isxdigit(i1) | 0;
}

function __ZNSt3__117bad_function_callD0Ev(i1) {
 i1 = i1 | 0;
 __ZdlPv(i1);
 return;
}

function __ZNSt3__110moneypunctIwLb1EED0Ev(i1) {
 i1 = i1 | 0;
 __ZdlPv(i1);
 return;
}

function __ZNSt3__110moneypunctIwLb0EED0Ev(i1) {
 i1 = i1 | 0;
 __ZdlPv(i1);
 return;
}

function __ZNSt3__110moneypunctIcLb1EED0Ev(i1) {
 i1 = i1 | 0;
 __ZdlPv(i1);
 return;
}

function __ZNSt3__110moneypunctIcLb0EED0Ev(i1) {
 i1 = i1 | 0;
 __ZdlPv(i1);
 return;
}

function __ZNSt9bad_allocC2Ev(i1) {
 i1 = i1 | 0;
 HEAP32[i1 >> 2] = 12424;
 return;
}

function __ZN4wasm9isIntegerEd(d1) {
 d1 = +d1;
 return +_fmod(d1, 1.0) == 0.0 | 0;
}

function _copysignl(d1, d2) {
 d1 = +d1;
 d2 = +d2;
 return +(+_copysign(d1, d2));
}

function _scalbnl(d2, i1) {
 d2 = +d2;
 i1 = i1 | 0;
 return +(+_scalbn(d2, i1));
}

function __ZNK10__cxxabiv116__shim_type_info5noop2Ev(i1) {
 i1 = i1 | 0;
 return;
}

function __ZNK10__cxxabiv116__shim_type_info5noop1Ev(i1) {
 i1 = i1 | 0;
 return;
}

function _frexpl(d2, i1) {
 d2 = +d2;
 i1 = i1 | 0;
 return +(+_frexp(d2, i1));
}

function __ZNSt3__16locale5facetD0Ev(i1) {
 i1 = i1 | 0;
 __ZdlPv(i1);
 return;
}

function b9(i1, i2, i3) {
 i1 = i1 | 0;
 i2 = i2 | 0;
 i3 = i3 | 0;
 abort(9);
}

function __ZNSt3__18messagesIwED0Ev(i1) {
 i1 = i1 | 0;
 __ZdlPv(i1);
 return;
}

function __ZNSt3__18messagesIcED0Ev(i1) {
 i1 = i1 | 0;
 __ZdlPv(i1);
 return;
}

function __ZNSt3__17collateIwED0Ev(i1) {
 i1 = i1 | 0;
 __ZdlPv(i1);
 return;
}

function __ZNSt3__17collateIcED0Ev(i1) {
 i1 = i1 | 0;
 __ZdlPv(i1);
 return;
}

function __ZNSt3__110__function6__baseIFvvEED2Ev(i1) {
 i1 = i1 | 0;
 return;
}

function _isupper(i1) {
 i1 = i1 | 0;
 return (i1 + -65 | 0) >>> 0 < 26 | 0;
}

function __ZN10__cxxabiv116__shim_type_infoD2Ev(i1) {
 i1 = i1 | 0;
 return;
}

function __ZNSt3__15ctypeIwED0Ev(i1) {
 i1 = i1 | 0;
 __ZdlPv(i1);
 return;
}

function __ZNSt3__121__throw_runtime_errorEPKc(i1) {
 i1 = i1 | 0;
 return;
}

function _fmodl(d1, d2) {
 d1 = +d1;
 d2 = +d2;
 return +(+_fmod(d1, d2));
}

function b14(i1, i2) {
 i1 = i1 | 0;
 i2 = i2 | 0;
 abort(14);
 return 0;
}

function __ZNSt9bad_allocD0Ev(i1) {
 i1 = i1 | 0;
 __ZdlPv(i1);
 return;
}

function _catopen(i1, i2) {
 i1 = i1 | 0;
 i2 = i2 | 0;
 return -1 | 0;
}

function __ZNSt3__110moneypunctIwLb1EED2Ev(i1) {
 i1 = i1 | 0;
 return;
}

function __ZNSt3__110moneypunctIwLb0EED2Ev(i1) {
 i1 = i1 | 0;
 return;
}

function __ZNSt3__110moneypunctIcLb1EED2Ev(i1) {
 i1 = i1 | 0;
 return;
}

function __ZNSt3__110moneypunctIcLb0EED2Ev(i1) {
 i1 = i1 | 0;
 return;
}

function __ZNSt3__114__shared_countD2Ev(i1) {
 i1 = i1 | 0;
 return;
}

function __ZNKSt9exception4whatEv(i1) {
 i1 = i1 | 0;
 return 33113;
}

function __ZNKSt9bad_alloc4whatEv(i1) {
 i1 = i1 | 0;
 return 33098;
}

function dynCall_v(i1) {
 i1 = i1 | 0;
 FUNCTION_TABLE_v[i1 & 3]();
}

function ___cxa_pure_virtual__wrapper() {
 ___cxa_pure_virtual();
}

function __ZNSt3__16locale5facetD2Ev(i1) {
 i1 = i1 | 0;
 return;
}

function __ZNSt3__112__do_nothingEPv(i1) {
 i1 = i1 | 0;
 return;
}

function __ZNSt3__18messagesIwED2Ev(i1) {
 i1 = i1 | 0;
 return;
}

function __ZNSt3__18messagesIcED2Ev(i1) {
 i1 = i1 | 0;
 return;
}

function _pthread_cond_broadcast(i1) {
 i1 = i1 | 0;
 return 0;
}

function __ZNSt3__17collateIwED2Ev(i1) {
 i1 = i1 | 0;
 return;
}

function __ZNSt3__17collateIcED2Ev(i1) {
 i1 = i1 | 0;
 return;
}

function _pthread_mutex_unlock(i1) {
 i1 = i1 | 0;
 return 0;
}

function _freelocale(i1) {
 i1 = i1 | 0;
 _free(i1);
 return;
}

function b5(i1, i2) {
 i1 = i1 | 0;
 i2 = i2 | 0;
 abort(5);
}

function _pthread_mutex_lock(i1) {
 i1 = i1 | 0;
 return 0;
}

function __Znaj(i1) {
 i1 = i1 | 0;
 return __Znwj(i1) | 0;
}

function __ZdaPv(i1) {
 i1 = i1 | 0;
 __ZdlPv(i1);
 return;
}

function ___cxa_guard_release(i1) {
 i1 = i1 | 0;
 return;
}

function __ZNSt9type_infoD2Ev(i1) {
 i1 = i1 | 0;
 return;
}

function __ZNSt9exceptionD2Ev(i1) {
 i1 = i1 | 0;
 return;
}

function __ZNSt9bad_allocD2Ev(i1) {
 i1 = i1 | 0;
 return;
}

function stackRestore(i1) {
 i1 = i1 | 0;
 STACKTOP = i1;
}

function __ZdlPv(i1) {
 i1 = i1 | 0;
 _free(i1);
 return;
}

function setTempRet0(i1) {
 i1 = i1 | 0;
 tempRet0 = i1;
}

function ___cxa_guard_abort(i1) {
 i1 = i1 | 0;
 return;
}

function _feclearexcept(i1) {
 i1 = i1 | 0;
 return 0;
}

function b8(i1) {
 i1 = i1 | 0;
 abort(8);
 return 0;
}

function _fetestexcept(i1) {
 i1 = i1 | 0;
 return 0;
}

function ___unlockfile(i1) {
 i1 = i1 | 0;
 return;
}

function ___lockfile(i1) {
 i1 = i1 | 0;
 return 0;
}

function __GLOBAL__sub_I_iostream_cpp() {
 return;
}

function _catclose(i1) {
 i1 = i1 | 0;
 return 0;
}

function _nan(i1) {
 i1 = i1 | 0;
 return +nan;
}

function ___ctype_toupper_loc() {
 return 7048;
}

function ___ctype_tolower_loc() {
 return 5508;
}

function getTempRet0() {
 return tempRet0 | 0;
}

function stackSave() {
 return STACKTOP | 0;
}

function b4(i1) {
 i1 = i1 | 0;
 abort(4);
}

function ___ctype_b_loc() {
 return 5504;
}

function _pthread_self() {
 return 0;
}

function b10() {
 abort(10);
}

// EMSCRIPTEN_END_FUNCS
var FUNCTION_TABLE_iiiiiiii = [b0,__ZNKSt3__18time_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_putES4_RNS_8ios_baseEcPK2tmcc,__ZNKSt3__18time_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_putES4_RNS_8ios_baseEwPK2tmcc,__ZNKSt3__19money_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_getES4_S4_bRNS_8ios_baseERjRe,__ZNKSt3__19money_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_getES4_S4_bRNS_8ios_baseERjRNS_12basic_stringIcS3_NS_9allocatorIcEEEE,__ZNKSt3__19money_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_getES4_S4_bRNS_8ios_baseERjRe,__ZNKSt3__19money_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_getES4_S4_bRNS_8ios_baseERjRNS_12basic_stringIwS3_NS_9allocatorIwEEEE,b0];
var FUNCTION_TABLE_iiii = [b1,__ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE6setbufEPci,__ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE6xsgetnEPci,__ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE6xsputnEPKci,___stdio_write,___stdio_seek,___stdio_read,___stdout_write,_sn_write,__ZNSt3__111__stdoutbufIcE6xsputnEPKci,__ZNSt3__115basic_streambufIwNS_11char_traitsIwEEE6setbufEPwi,__ZNSt3__115basic_streambufIwNS_11char_traitsIwEEE6xsgetnEPwi,__ZNSt3__115basic_streambufIwNS_11char_traitsIwEEE6xsputnEPKwi,__ZNSt3__111__stdoutbufIwE6xsputnEPKwi,__ZNKSt3__17collateIcE7do_hashEPKcS3_,__ZNKSt3__17collateIwE7do_hashEPKwS3_,__ZNKSt3__18messagesIcE7do_openERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEERKNS_6localeE,__ZNKSt3__18messagesIwE7do_openERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEERKNS_6localeE,__ZNKSt3__15ctypeIcE10do_toupperEPcPKc,__ZNKSt3__15ctypeIcE10do_tolowerEPcPKc,__ZNKSt3__15ctypeIcE9do_narrowEcc,__ZNKSt3__15ctypeIwE5do_isEtw,__ZNKSt3__15ctypeIwE10do_toupperEPwPKw,__ZNKSt3__15ctypeIwE10do_tolowerEPwPKw,__ZNKSt3__15ctypeIwE9do_narrowEwc,__ZNK10__cxxabiv117__class_type_info9can_catchEPKNS_16__shim_type_infoERPv,_do_read,b1,b1
,b1,b1,b1];
var FUNCTION_TABLE_viiiii = [b2,__ZNK10__cxxabiv117__class_type_info16search_below_dstEPNS_19__dynamic_cast_infoEPKvib,__ZNK10__cxxabiv120__si_class_type_info16search_below_dstEPNS_19__dynamic_cast_infoEPKvib,__ZNK10__cxxabiv121__vmi_class_type_info16search_below_dstEPNS_19__dynamic_cast_infoEPKvib];
var FUNCTION_TABLE_iiiiiid = [b3,__ZNKSt3__19money_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_putES4_bRNS_8ios_baseEce,__ZNKSt3__19money_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_putES4_bRNS_8ios_baseEwe,b3];
var FUNCTION_TABLE_vi = [b4,__ZNSt3__119basic_istringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev,__ZNSt3__119basic_istringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEED0Ev,__ZTv0_n12_NSt3__119basic_istringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev,__ZTv0_n12_NSt3__119basic_istringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEED0Ev,__ZNSt3__113basic_istreamIcNS_11char_traitsIcEEED1Ev,__ZNSt3__113basic_istreamIcNS_11char_traitsIcEEED0Ev,__ZTv0_n12_NSt3__113basic_istreamIcNS_11char_traitsIcEEED1Ev,__ZTv0_n12_NSt3__113basic_istreamIcNS_11char_traitsIcEEED0Ev,__ZNSt3__115basic_stringbufIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev,__ZNSt3__115basic_stringbufIcNS_11char_traitsIcEENS_9allocatorIcEEED0Ev,__ZNSt3__110__function6__baseIFvvEED2Ev,__ZNSt3__110__function6__funcIZN4wasm22SExpressionWasmBuilderC1ERNS2_6ModuleERNS2_7ElementEEUlvE_NS_9allocatorIS8_EEFvvEED0Ev,__ZNSt3__110__function6__funcIZN4wasm22SExpressionWasmBuilderC1ERNS2_6ModuleERNS2_7ElementEEUlvE_NS_9allocatorIS8_EEFvvEE7destroyEv,__ZNSt3__110__function6__funcIZN4wasm22SExpressionWasmBuilderC1ERNS2_6ModuleERNS2_7ElementEEUlvE_NS_9allocatorIS8_EEFvvEE18destroy_deallocateEv,__ZNSt3__110__function6__funcIZN4wasm22SExpressionWasmBuilderC1ERNS2_6ModuleERNS2_7ElementEEUlvE_NS_9allocatorIS8_EEFvvEEclEv,__ZNSt9exceptionD2Ev,__ZNSt3__117bad_function_callD0Ev,__ZN4wasm4PassD2Ev,__ZN4wasm4PassD0Ev,__ZNSt3__118basic_stringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev,__ZNSt3__118basic_stringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEED0Ev,__ZThn8_NSt3__118basic_stringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev,__ZThn8_NSt3__118basic_stringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEED0Ev,__ZTv0_n12_NSt3__118basic_stringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev,__ZTv0_n12_NSt3__118basic_stringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEED0Ev,__ZNSt3__114basic_iostreamIcNS_11char_traitsIcEEED1Ev,__ZNSt3__114basic_iostreamIcNS_11char_traitsIcEEED0Ev,__ZThn8_NSt3__114basic_iostreamIcNS_11char_traitsIcEEED1Ev
,__ZThn8_NSt3__114basic_iostreamIcNS_11char_traitsIcEEED0Ev,__ZTv0_n12_NSt3__114basic_iostreamIcNS_11char_traitsIcEEED1Ev,__ZTv0_n12_NSt3__114basic_iostreamIcNS_11char_traitsIcEEED0Ev,__ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEED1Ev,__ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEED0Ev,__ZTv0_n12_NSt3__113basic_ostreamIcNS_11char_traitsIcEEED1Ev,__ZTv0_n12_NSt3__113basic_ostreamIcNS_11char_traitsIcEEED0Ev,__ZNSt3__110__function6__baseIFPN4wasm4PassEvEED2Ev,__ZNSt3__110__function6__funcIZN4wasm12RegisterPassINS2_11MergeBlocksEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEED0Ev,__ZNSt3__110__function6__funcIZN4wasm12RegisterPassINS2_11MergeBlocksEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEE7destroyEv,__ZNSt3__110__function6__funcIZN4wasm12RegisterPassINS2_11MergeBlocksEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEE18destroy_deallocateEv,__ZN4wasm10WalkerPassINS_10PostWalkerINS_11MergeBlocksENS_7VisitorIS2_vEEEEED2Ev,__ZN4wasm10WalkerPassINS_10PostWalkerINS_11MergeBlocksENS_7VisitorIS2_vEEEEED0Ev,__ZN4wasm11MergeBlocksD0Ev,__ZNSt3__110__function6__baseIFN4wasm15ThreadWorkStateEvEED2Ev,__ZNSt3__110__function6__funcIZN4wasm6WalkerINS2_11MergeBlocksENS2_7VisitorIS4_vEEE9startWalkEPNS2_6ModuleEEUlvE_NS_9allocatorISA_EEFNS2_15ThreadWorkStateEvEED0Ev,__ZNSt3__110__function6__funcIZN4wasm6WalkerINS2_11MergeBlocksENS2_7VisitorIS4_vEEE9startWalkEPNS2_6ModuleEEUlvE_NS_9allocatorISA_EEFNS2_15ThreadWorkStateEvEE7destroyEv,__ZNSt3__110__function6__funcIZN4wasm6WalkerINS2_11MergeBlocksENS2_7VisitorIS4_vEEE9startWalkEPNS2_6ModuleEEUlvE_NS_9allocatorISA_EEFNS2_15ThreadWorkStateEvEE18destroy_deallocateEv,__ZN4wasm7PrinterD0Ev,__ZNSt3__110__function6__funcIZN4wasm12RegisterPassINS2_7PrinterEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEED0Ev,__ZNSt3__110__function6__funcIZN4wasm12RegisterPassINS2_7PrinterEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEE7destroyEv,__ZNSt3__110__function6__funcIZN4wasm12RegisterPassINS2_7PrinterEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEE18destroy_deallocateEv,__ZNSt3__110__function6__funcIZN4wasm12RegisterPassINS2_15MinifiedPrinterEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEED0Ev,__ZNSt3__110__function6__funcIZN4wasm12RegisterPassINS2_15MinifiedPrinterEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEE7destroyEv,__ZNSt3__110__function6__funcIZN4wasm12RegisterPassINS2_15MinifiedPrinterEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEE18destroy_deallocateEv,__ZN4wasm15MinifiedPrinterD0Ev,__ZNSt3__110__function6__funcIZN4wasm12RegisterPassINS2_11FullPrinterEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEED0Ev,__ZNSt3__110__function6__funcIZN4wasm12RegisterPassINS2_11FullPrinterEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEE7destroyEv,__ZNSt3__110__function6__funcIZN4wasm12RegisterPassINS2_11FullPrinterEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEE18destroy_deallocateEv,__ZN4wasm11FullPrinterD0Ev
,__ZNSt3__110__function6__funcIZN4wasm12RegisterPassINS2_15RemoveUnusedBrsEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEED0Ev,__ZNSt3__110__function6__funcIZN4wasm12RegisterPassINS2_15RemoveUnusedBrsEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEE7destroyEv,__ZNSt3__110__function6__funcIZN4wasm12RegisterPassINS2_15RemoveUnusedBrsEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEE18destroy_deallocateEv,__ZN4wasm10WalkerPassINS_10PostWalkerINS_15RemoveUnusedBrsENS_7VisitorIS2_vEEEEED2Ev,__ZN4wasm10WalkerPassINS_10PostWalkerINS_15RemoveUnusedBrsENS_7VisitorIS2_vEEEEED0Ev,__ZNSt3__110__function6__funcIZN4wasm6WalkerINS2_15RemoveUnusedBrsENS2_7VisitorIS4_vEEE9startWalkEPNS2_6ModuleEEUlvE_NS_9allocatorISA_EEFNS2_15ThreadWorkStateEvEED0Ev,__ZNSt3__110__function6__funcIZN4wasm6WalkerINS2_15RemoveUnusedBrsENS2_7VisitorIS4_vEEE9startWalkEPNS2_6ModuleEEUlvE_NS_9allocatorISA_EEFNS2_15ThreadWorkStateEvEE7destroyEv,__ZNSt3__110__function6__funcIZN4wasm6WalkerINS2_15RemoveUnusedBrsENS2_7VisitorIS4_vEEE9startWalkEPNS2_6ModuleEEUlvE_NS_9allocatorISA_EEFNS2_15ThreadWorkStateEvEE18destroy_deallocateEv,__ZN4wasm15RemoveUnusedBrsD2Ev,__ZN4wasm15RemoveUnusedBrsD0Ev,__ZNSt3__110__function6__funcIZN4wasm12RegisterPassINS2_17RemoveUnusedNamesEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEED0Ev,__ZNSt3__110__function6__funcIZN4wasm12RegisterPassINS2_17RemoveUnusedNamesEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEE7destroyEv,__ZNSt3__110__function6__funcIZN4wasm12RegisterPassINS2_17RemoveUnusedNamesEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEE18destroy_deallocateEv,__ZN4wasm10WalkerPassINS_10PostWalkerINS_17RemoveUnusedNamesENS_7VisitorIS2_vEEEEED2Ev,__ZN4wasm10WalkerPassINS_10PostWalkerINS_17RemoveUnusedNamesENS_7VisitorIS2_vEEEEED0Ev,__ZNSt3__110__function6__funcIZN4wasm6WalkerINS2_17RemoveUnusedNamesENS2_7VisitorIS4_vEEE9startWalkEPNS2_6ModuleEEUlvE_NS_9allocatorISA_EEFNS2_15ThreadWorkStateEvEED0Ev,__ZNSt3__110__function6__funcIZN4wasm6WalkerINS2_17RemoveUnusedNamesENS2_7VisitorIS4_vEEE9startWalkEPNS2_6ModuleEEUlvE_NS_9allocatorISA_EEFNS2_15ThreadWorkStateEvEE7destroyEv,__ZNSt3__110__function6__funcIZN4wasm6WalkerINS2_17RemoveUnusedNamesENS2_7VisitorIS4_vEEE9startWalkEPNS2_6ModuleEEUlvE_NS_9allocatorISA_EEFNS2_15ThreadWorkStateEvEE18destroy_deallocateEv,__ZN4wasm17RemoveUnusedNamesD2Ev,__ZN4wasm17RemoveUnusedNamesD0Ev,__ZNSt3__110__function6__funcIZN4wasm12RegisterPassINS2_14PostEmscriptenEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEED0Ev,__ZNSt3__110__function6__funcIZN4wasm12RegisterPassINS2_14PostEmscriptenEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEE7destroyEv,__ZNSt3__110__function6__funcIZN4wasm12RegisterPassINS2_14PostEmscriptenEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEE18destroy_deallocateEv,__ZN4wasm10WalkerPassINS_10PostWalkerINS_14PostEmscriptenENS_7VisitorIS2_vEEEEED2Ev,__ZN4wasm10WalkerPassINS_10PostWalkerINS_14PostEmscriptenENS_7VisitorIS2_vEEEEED0Ev,__ZN4wasm14PostEmscriptenD0Ev,__ZNSt3__110__function6__funcIZN4wasm6WalkerINS2_14PostEmscriptenENS2_7VisitorIS4_vEEE9startWalkEPNS2_6ModuleEEUlvE_NS_9allocatorISA_EEFNS2_15ThreadWorkStateEvEED0Ev,__ZNSt3__110__function6__funcIZN4wasm6WalkerINS2_14PostEmscriptenENS2_7VisitorIS4_vEEE9startWalkEPNS2_6ModuleEEUlvE_NS_9allocatorISA_EEFNS2_15ThreadWorkStateEvEE7destroyEv,__ZNSt3__110__function6__funcIZN4wasm6WalkerINS2_14PostEmscriptenENS2_7VisitorIS4_vEEE9startWalkEPNS2_6ModuleEEUlvE_NS_9allocatorISA_EEFNS2_15ThreadWorkStateEvEE18destroy_deallocateEv,__ZNSt3__110__function6__funcIZN4wasm12RegisterPassINS2_14SimplifyLocalsEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEED0Ev
,__ZNSt3__110__function6__funcIZN4wasm12RegisterPassINS2_14SimplifyLocalsEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEE7destroyEv,__ZNSt3__110__function6__funcIZN4wasm12RegisterPassINS2_14SimplifyLocalsEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEE18destroy_deallocateEv,__ZN4wasm10WalkerPassINS_21LinearExecutionWalkerINS_14SimplifyLocalsENS_7VisitorIS2_vEEEEED2Ev,__ZN4wasm10WalkerPassINS_21LinearExecutionWalkerINS_14SimplifyLocalsENS_7VisitorIS2_vEEEEED0Ev,__ZNSt3__110__function6__funcIZN4wasm6WalkerINS2_14SimplifyLocalsENS2_7VisitorIS4_vEEE9startWalkEPNS2_6ModuleEEUlvE_NS_9allocatorISA_EEFNS2_15ThreadWorkStateEvEED0Ev,__ZNSt3__110__function6__funcIZN4wasm6WalkerINS2_14SimplifyLocalsENS2_7VisitorIS4_vEEE9startWalkEPNS2_6ModuleEEUlvE_NS_9allocatorISA_EEFNS2_15ThreadWorkStateEvEE7destroyEv,__ZNSt3__110__function6__funcIZN4wasm6WalkerINS2_14SimplifyLocalsENS2_7VisitorIS4_vEEE9startWalkEPNS2_6ModuleEEUlvE_NS_9allocatorISA_EEFNS2_15ThreadWorkStateEvEE18destroy_deallocateEv,__ZN4wasm10WalkerPassINS_10PostWalkerINS_15GetLocalCounterENS_7VisitorIS2_vEEEEED2Ev,__ZN4wasm10WalkerPassINS_10PostWalkerINS_15GetLocalCounterENS_7VisitorIS2_vEEEEED0Ev,__ZN4wasm15GetLocalCounterD0Ev,__ZN4wasm10WalkerPassINS_10PostWalkerINS_15SetLocalRemoverENS_7VisitorIS2_vEEEEED2Ev,__ZN4wasm10WalkerPassINS_10PostWalkerINS_15SetLocalRemoverENS_7VisitorIS2_vEEEEED0Ev,__ZN4wasm15SetLocalRemoverD0Ev,__ZN4wasm14SimplifyLocalsD2Ev,__ZN4wasm14SimplifyLocalsD0Ev,__ZNSt3__110__function6__funcIZN4wasm12RegisterPassINS2_13ReorderLocalsEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEED0Ev,__ZNSt3__110__function6__funcIZN4wasm12RegisterPassINS2_13ReorderLocalsEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEE7destroyEv,__ZNSt3__110__function6__funcIZN4wasm12RegisterPassINS2_13ReorderLocalsEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEE18destroy_deallocateEv,__ZN4wasm10WalkerPassINS_10PostWalkerINS_13ReorderLocalsENS_7VisitorIS2_vEEEEED2Ev,__ZN4wasm10WalkerPassINS_10PostWalkerINS_13ReorderLocalsENS_7VisitorIS2_vEEEEED0Ev,__ZNSt3__110__function6__funcIZN4wasm6WalkerINS2_13ReorderLocalsENS2_7VisitorIS4_vEEE9startWalkEPNS2_6ModuleEEUlvE_NS_9allocatorISA_EEFNS2_15ThreadWorkStateEvEED0Ev,__ZNSt3__110__function6__funcIZN4wasm6WalkerINS2_13ReorderLocalsENS2_7VisitorIS4_vEEE9startWalkEPNS2_6ModuleEEUlvE_NS_9allocatorISA_EEFNS2_15ThreadWorkStateEvEE7destroyEv,__ZNSt3__110__function6__funcIZN4wasm6WalkerINS2_13ReorderLocalsENS2_7VisitorIS4_vEEE9startWalkEPNS2_6ModuleEEUlvE_NS_9allocatorISA_EEFNS2_15ThreadWorkStateEvEE18destroy_deallocateEv,__ZN4wasm13ReorderLocalsD2Ev,__ZN4wasm13ReorderLocalsD0Ev,__ZNSt3__110__function6__funcIZN4wasm12RegisterPassINS2_6VacuumEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEED0Ev,__ZNSt3__110__function6__funcIZN4wasm12RegisterPassINS2_6VacuumEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEE7destroyEv,__ZNSt3__110__function6__funcIZN4wasm12RegisterPassINS2_6VacuumEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEE18destroy_deallocateEv,__ZN4wasm10WalkerPassINS_10PostWalkerINS_6VacuumENS_7VisitorIS2_vEEEEED2Ev,__ZN4wasm10WalkerPassINS_10PostWalkerINS_6VacuumENS_7VisitorIS2_vEEEEED0Ev
,__ZN4wasm6VacuumD0Ev,__ZNSt3__110__function6__funcIZN4wasm6WalkerINS2_6VacuumENS2_7VisitorIS4_vEEE9startWalkEPNS2_6ModuleEEUlvE_NS_9allocatorISA_EEFNS2_15ThreadWorkStateEvEED0Ev,__ZNSt3__110__function6__funcIZN4wasm6WalkerINS2_6VacuumENS2_7VisitorIS4_vEEE9startWalkEPNS2_6ModuleEEUlvE_NS_9allocatorISA_EEFNS2_15ThreadWorkStateEvEE7destroyEv,__ZNSt3__110__function6__funcIZN4wasm6WalkerINS2_6VacuumENS2_7VisitorIS4_vEEE9startWalkEPNS2_6ModuleEEUlvE_NS_9allocatorISA_EEFNS2_15ThreadWorkStateEvEE18destroy_deallocateEv,__ZNSt3__115basic_streambufIcNS_11char_traitsIcEEED2Ev,__ZNSt3__110__stdinbufIcED0Ev,__ZNSt3__111__stdoutbufIcED0Ev,__ZNSt3__115basic_streambufIwNS_11char_traitsIwEEED2Ev,__ZNSt3__110__stdinbufIwED0Ev,__ZNSt3__111__stdoutbufIwED0Ev,__ZNSt3__18ios_baseD2Ev,__ZNSt3__18ios_baseD0Ev,__ZNSt3__115basic_streambufIcNS_11char_traitsIcEEED0Ev,__ZNSt3__115basic_streambufIwNS_11char_traitsIwEEED0Ev,__ZNSt3__113basic_istreamIwNS_11char_traitsIwEEED1Ev,__ZNSt3__113basic_istreamIwNS_11char_traitsIwEEED0Ev,__ZTv0_n12_NSt3__113basic_istreamIwNS_11char_traitsIwEEED1Ev,__ZTv0_n12_NSt3__113basic_istreamIwNS_11char_traitsIwEEED0Ev,__ZNSt3__113basic_ostreamIwNS_11char_traitsIwEEED1Ev,__ZNSt3__113basic_ostreamIwNS_11char_traitsIwEEED0Ev,__ZTv0_n12_NSt3__113basic_ostreamIwNS_11char_traitsIwEEED1Ev,__ZTv0_n12_NSt3__113basic_ostreamIwNS_11char_traitsIwEEED0Ev,__ZNSt3__17collateIcED2Ev,__ZNSt3__17collateIcED0Ev,__ZNSt3__16locale5facet16__on_zero_sharedEv,__ZNSt3__17collateIwED2Ev,__ZNSt3__17collateIwED0Ev,__ZNSt3__17num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEED2Ev,__ZNSt3__17num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEED0Ev,__ZNSt3__17num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEED2Ev
,__ZNSt3__17num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEED0Ev,__ZNSt3__17num_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEED2Ev,__ZNSt3__17num_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEED0Ev,__ZNSt3__17num_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEED2Ev,__ZNSt3__17num_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEED0Ev,__ZNSt3__18time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEED2Ev,__ZNSt3__18time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEED0Ev,__ZNSt3__18time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEED2Ev,__ZNSt3__18time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEED0Ev,__ZNSt3__18time_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEED2Ev,__ZNSt3__18time_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEED0Ev,__ZNSt3__18time_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEED2Ev,__ZNSt3__18time_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEED0Ev,__ZNSt3__110moneypunctIcLb0EED2Ev,__ZNSt3__110moneypunctIcLb0EED0Ev,__ZNSt3__110moneypunctIcLb1EED2Ev,__ZNSt3__110moneypunctIcLb1EED0Ev,__ZNSt3__110moneypunctIwLb0EED2Ev,__ZNSt3__110moneypunctIwLb0EED0Ev,__ZNSt3__110moneypunctIwLb1EED2Ev,__ZNSt3__110moneypunctIwLb1EED0Ev,__ZNSt3__19money_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEED2Ev,__ZNSt3__19money_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEED0Ev,__ZNSt3__19money_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEED2Ev,__ZNSt3__19money_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEED0Ev,__ZNSt3__19money_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEED2Ev,__ZNSt3__19money_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEED0Ev,__ZNSt3__19money_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEED2Ev,__ZNSt3__19money_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEED0Ev,__ZNSt3__18messagesIcED2Ev
,__ZNSt3__18messagesIcED0Ev,__ZNSt3__18messagesIwED2Ev,__ZNSt3__18messagesIwED0Ev,__ZNSt3__16locale5facetD2Ev,__ZNSt3__116__narrow_to_utf8ILj32EED0Ev,__ZNSt3__117__widen_from_utf8ILj32EED0Ev,__ZNSt3__17codecvtIwc11__mbstate_tED2Ev,__ZNSt3__17codecvtIwc11__mbstate_tED0Ev,__ZNSt3__16locale5__impD2Ev,__ZNSt3__16locale5__impD0Ev,__ZNSt3__15ctypeIcED2Ev,__ZNSt3__15ctypeIcED0Ev,__ZNSt3__18numpunctIcED2Ev,__ZNSt3__18numpunctIcED0Ev,__ZNSt3__18numpunctIwED2Ev,__ZNSt3__18numpunctIwED0Ev,__ZNSt3__16locale5facetD0Ev,__ZNSt3__15ctypeIwED0Ev,__ZNSt3__17codecvtIcc11__mbstate_tED0Ev,__ZNSt3__17codecvtIDsc11__mbstate_tED0Ev,__ZNSt3__17codecvtIDic11__mbstate_tED0Ev,__ZN10__cxxabiv116__shim_type_infoD2Ev,__ZN10__cxxabiv117__class_type_infoD0Ev,__ZNK10__cxxabiv116__shim_type_info5noop1Ev,__ZNK10__cxxabiv116__shim_type_info5noop2Ev,__ZN10__cxxabiv120__si_class_type_infoD0Ev,__ZNSt9bad_allocD2Ev,__ZNSt9bad_allocD0Ev,__ZNSt11logic_errorD2Ev,__ZNSt11logic_errorD0Ev
,__ZNSt12out_of_rangeD0Ev,__ZN10__cxxabiv121__vmi_class_type_infoD0Ev,__ZNSt3__113unordered_setIN6cashew7IStringENS_4hashIS2_EENS_8equal_toIS2_EENS_9allocatorIS2_EEED2Ev,__ZNSt3__113__vector_baseIN6cashew13OperatorClassENS_9allocatorIS2_EEED2Ev,__ZNSt3__113__vector_baseINS_13unordered_mapIN6cashew7IStringEiNS_4hashIS3_EENS_8equal_toIS3_EENS_9allocatorINS_4pairIKS3_iEEEEEENS8_ISD_EEED2Ev,__ZN6cashew5ArenaD2Ev,__ZNSt3__110unique_ptrIN4wasm10ThreadPoolENS_14default_deleteIS2_EEED2Ev,__ZN4wasm6Thread8mainLoopEPv,_cleanup_387,_cleanup_382,__ZNSt3__18ios_base4InitD2Ev,__ZNSt3__121__thread_specific_ptrINS_15__thread_structEE16__at_thread_exitEPv,__ZNSt3__121__thread_specific_ptrINS_15__thread_structEED2Ev,__ZNSt3__16locale2id6__initEv,__ZNSt3__117__call_once_proxyINS_5tupleIJNS_12_GLOBAL__N_111__fake_bindEEEEEEvPv,___cxx_global_array_dtor,___cxx_global_array_dtor_61,___cxx_global_array_dtor_109,__ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev,___cxx_global_array_dtor_46,___cxx_global_array_dtor_85,___cxx_global_array_dtor_112,__ZNSt3__112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev,__ZNSt3__112__do_nothingEPv,_free,__ZN10__cxxabiv112_GLOBAL__N_19destruct_EPv,b4,b4,b4,b4
,b4,b4,b4,b4,b4,b4,b4,b4,b4,b4,b4,b4,b4,b4,b4,b4,b4];
var FUNCTION_TABLE_vii = [b5,__ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE5imbueERKNS_6localeE,__ZNKSt3__110__function6__funcIZN4wasm22SExpressionWasmBuilderC1ERNS2_6ModuleERNS2_7ElementEEUlvE_NS_9allocatorIS8_EEFvvEE7__cloneEPNS0_6__baseISB_EE,__ZN4wasm22ShellExternalInterface4initERNS_6ModuleE,__ZN4wasm22ShellExternalInterface4trapEPKc,__ZNKSt3__110__function6__funcIZN4wasm12RegisterPassINS2_11MergeBlocksEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEE7__cloneEPNS0_6__baseISD_EE,__ZNKSt3__110__function6__funcIZN4wasm6WalkerINS2_11MergeBlocksENS2_7VisitorIS4_vEEE9startWalkEPNS2_6ModuleEEUlvE_NS_9allocatorISA_EEFNS2_15ThreadWorkStateEvEE7__cloneEPNS0_6__baseISE_EE,__ZNKSt3__110__function6__funcIZN4wasm12RegisterPassINS2_7PrinterEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEE7__cloneEPNS0_6__baseISD_EE,__ZNKSt3__110__function6__funcIZN4wasm12RegisterPassINS2_15MinifiedPrinterEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEE7__cloneEPNS0_6__baseISD_EE,__ZNKSt3__110__function6__funcIZN4wasm12RegisterPassINS2_11FullPrinterEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEE7__cloneEPNS0_6__baseISD_EE,__ZNKSt3__110__function6__funcIZN4wasm12RegisterPassINS2_15RemoveUnusedBrsEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEE7__cloneEPNS0_6__baseISD_EE,__ZNKSt3__110__function6__funcIZN4wasm6WalkerINS2_15RemoveUnusedBrsENS2_7VisitorIS4_vEEE9startWalkEPNS2_6ModuleEEUlvE_NS_9allocatorISA_EEFNS2_15ThreadWorkStateEvEE7__cloneEPNS0_6__baseISE_EE,__ZNKSt3__110__function6__funcIZN4wasm12RegisterPassINS2_17RemoveUnusedNamesEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEE7__cloneEPNS0_6__baseISD_EE,__ZNKSt3__110__function6__funcIZN4wasm6WalkerINS2_17RemoveUnusedNamesENS2_7VisitorIS4_vEEE9startWalkEPNS2_6ModuleEEUlvE_NS_9allocatorISA_EEFNS2_15ThreadWorkStateEvEE7__cloneEPNS0_6__baseISE_EE,__ZNKSt3__110__function6__funcIZN4wasm12RegisterPassINS2_14PostEmscriptenEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEE7__cloneEPNS0_6__baseISD_EE,__ZNKSt3__110__function6__funcIZN4wasm6WalkerINS2_14PostEmscriptenENS2_7VisitorIS4_vEEE9startWalkEPNS2_6ModuleEEUlvE_NS_9allocatorISA_EEFNS2_15ThreadWorkStateEvEE7__cloneEPNS0_6__baseISE_EE,__ZNKSt3__110__function6__funcIZN4wasm12RegisterPassINS2_14SimplifyLocalsEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEE7__cloneEPNS0_6__baseISD_EE,__ZNKSt3__110__function6__funcIZN4wasm6WalkerINS2_14SimplifyLocalsENS2_7VisitorIS4_vEEE9startWalkEPNS2_6ModuleEEUlvE_NS_9allocatorISA_EEFNS2_15ThreadWorkStateEvEE7__cloneEPNS0_6__baseISE_EE,__ZNKSt3__110__function6__funcIZN4wasm12RegisterPassINS2_13ReorderLocalsEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEE7__cloneEPNS0_6__baseISD_EE,__ZNKSt3__110__function6__funcIZN4wasm6WalkerINS2_13ReorderLocalsENS2_7VisitorIS4_vEEE9startWalkEPNS2_6ModuleEEUlvE_NS_9allocatorISA_EEFNS2_15ThreadWorkStateEvEE7__cloneEPNS0_6__baseISE_EE,__ZNKSt3__110__function6__funcIZN4wasm12RegisterPassINS2_6VacuumEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEE7__cloneEPNS0_6__baseISD_EE,__ZNKSt3__110__function6__funcIZN4wasm6WalkerINS2_6VacuumENS2_7VisitorIS4_vEEE9startWalkEPNS2_6ModuleEEUlvE_NS_9allocatorISA_EEFNS2_15ThreadWorkStateEvEE7__cloneEPNS0_6__baseISE_EE,__ZNSt3__110__stdinbufIcE5imbueERKNS_6localeE,__ZNSt3__111__stdoutbufIcE5imbueERKNS_6localeE,__ZNSt3__110__stdinbufIwE5imbueERKNS_6localeE,__ZNSt3__111__stdoutbufIwE5imbueERKNS_6localeE,__ZNSt3__115basic_streambufIwNS_11char_traitsIwEEE5imbueERKNS_6localeE,__ZNKSt3__110moneypunctIcLb0EE11do_groupingEv,__ZNKSt3__110moneypunctIcLb0EE14do_curr_symbolEv
,__ZNKSt3__110moneypunctIcLb0EE16do_positive_signEv,__ZNKSt3__110moneypunctIcLb0EE16do_negative_signEv,__ZNKSt3__110moneypunctIcLb0EE13do_pos_formatEv,__ZNKSt3__110moneypunctIcLb0EE13do_neg_formatEv,__ZNKSt3__110moneypunctIcLb1EE11do_groupingEv,__ZNKSt3__110moneypunctIcLb1EE14do_curr_symbolEv,__ZNKSt3__110moneypunctIcLb1EE16do_positive_signEv,__ZNKSt3__110moneypunctIcLb1EE16do_negative_signEv,__ZNKSt3__110moneypunctIcLb1EE13do_pos_formatEv,__ZNKSt3__110moneypunctIcLb1EE13do_neg_formatEv,__ZNKSt3__110moneypunctIwLb0EE11do_groupingEv,__ZNKSt3__110moneypunctIwLb0EE14do_curr_symbolEv,__ZNKSt3__110moneypunctIwLb0EE16do_positive_signEv,__ZNKSt3__110moneypunctIwLb0EE16do_negative_signEv,__ZNKSt3__110moneypunctIwLb0EE13do_pos_formatEv,__ZNKSt3__110moneypunctIwLb0EE13do_neg_formatEv,__ZNKSt3__110moneypunctIwLb1EE11do_groupingEv,__ZNKSt3__110moneypunctIwLb1EE14do_curr_symbolEv,__ZNKSt3__110moneypunctIwLb1EE16do_positive_signEv,__ZNKSt3__110moneypunctIwLb1EE16do_negative_signEv,__ZNKSt3__110moneypunctIwLb1EE13do_pos_formatEv,__ZNKSt3__110moneypunctIwLb1EE13do_neg_formatEv,__ZNKSt3__18messagesIcE8do_closeEi,__ZNKSt3__18messagesIwE8do_closeEi,__ZNKSt3__18numpunctIcE11do_groupingEv,__ZNKSt3__18numpunctIcE11do_truenameEv,__ZNKSt3__18numpunctIcE12do_falsenameEv,__ZNKSt3__18numpunctIwE11do_groupingEv,__ZNKSt3__18numpunctIwE11do_truenameEv,__ZNKSt3__18numpunctIwE12do_falsenameEv
,__ZN4wasm10PostWalkerINS_11BreakSeekerENS_7VisitorIS1_vEEE4scanEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_11BreakSeekerENS_7VisitorIS1_vEEE12doVisitBlockEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_11BreakSeekerENS_7VisitorIS1_vEEE9doVisitIfEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_11BreakSeekerENS_7VisitorIS1_vEEE11doVisitLoopEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_11BreakSeekerENS_7VisitorIS1_vEEE12doVisitBreakEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_11BreakSeekerENS_7VisitorIS1_vEEE13doVisitSwitchEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_11BreakSeekerENS_7VisitorIS1_vEEE11doVisitCallEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_11BreakSeekerENS_7VisitorIS1_vEEE17doVisitCallImportEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_11BreakSeekerENS_7VisitorIS1_vEEE19doVisitCallIndirectEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_11BreakSeekerENS_7VisitorIS1_vEEE15doVisitGetLocalEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_11BreakSeekerENS_7VisitorIS1_vEEE15doVisitSetLocalEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_11BreakSeekerENS_7VisitorIS1_vEEE11doVisitLoadEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_11BreakSeekerENS_7VisitorIS1_vEEE12doVisitStoreEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_11BreakSeekerENS_7VisitorIS1_vEEE12doVisitConstEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_11BreakSeekerENS_7VisitorIS1_vEEE12doVisitUnaryEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_11BreakSeekerENS_7VisitorIS1_vEEE13doVisitBinaryEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_11BreakSeekerENS_7VisitorIS1_vEEE13doVisitSelectEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_11BreakSeekerENS_7VisitorIS1_vEEE13doVisitReturnEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_11BreakSeekerENS_7VisitorIS1_vEEE11doVisitHostEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_11BreakSeekerENS_7VisitorIS1_vEEE10doVisitNopEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_11BreakSeekerENS_7VisitorIS1_vEEE18doVisitUnreachableEPS1_PPNS_10ExpressionE,__ZN4wasm10PostWalkerINS_11MergeBlocksENS_7VisitorIS1_vEEE4scanEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_11MergeBlocksENS_7VisitorIS1_vEEE12doVisitBlockEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_11MergeBlocksENS_7VisitorIS1_vEEE9doVisitIfEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_11MergeBlocksENS_7VisitorIS1_vEEE11doVisitLoopEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_11MergeBlocksENS_7VisitorIS1_vEEE12doVisitBreakEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_11MergeBlocksENS_7VisitorIS1_vEEE13doVisitSwitchEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_11MergeBlocksENS_7VisitorIS1_vEEE11doVisitCallEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_11MergeBlocksENS_7VisitorIS1_vEEE17doVisitCallImportEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_11MergeBlocksENS_7VisitorIS1_vEEE19doVisitCallIndirectEPS1_PPNS_10ExpressionE
,__ZN4wasm6WalkerINS_11MergeBlocksENS_7VisitorIS1_vEEE15doVisitGetLocalEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_11MergeBlocksENS_7VisitorIS1_vEEE15doVisitSetLocalEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_11MergeBlocksENS_7VisitorIS1_vEEE11doVisitLoadEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_11MergeBlocksENS_7VisitorIS1_vEEE12doVisitStoreEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_11MergeBlocksENS_7VisitorIS1_vEEE12doVisitConstEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_11MergeBlocksENS_7VisitorIS1_vEEE12doVisitUnaryEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_11MergeBlocksENS_7VisitorIS1_vEEE13doVisitBinaryEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_11MergeBlocksENS_7VisitorIS1_vEEE13doVisitSelectEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_11MergeBlocksENS_7VisitorIS1_vEEE13doVisitReturnEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_11MergeBlocksENS_7VisitorIS1_vEEE11doVisitHostEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_11MergeBlocksENS_7VisitorIS1_vEEE10doVisitNopEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_11MergeBlocksENS_7VisitorIS1_vEEE18doVisitUnreachableEPS1_PPNS_10ExpressionE,__ZN4wasm15RemoveUnusedBrs4scanEPS0_PPNS_10ExpressionE,__ZN4wasm15RemoveUnusedBrs8visitAnyEPS0_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_15RemoveUnusedBrsENS_7VisitorIS1_vEEE9doVisitIfEPS1_PPNS_10ExpressionE,__ZN4wasm15RemoveUnusedBrs10saveIfTrueEPS0_PPNS_10ExpressionE,__ZN4wasm15RemoveUnusedBrs5clearEPS0_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_15RemoveUnusedBrsENS_7VisitorIS1_vEEE12doVisitBlockEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_15RemoveUnusedBrsENS_7VisitorIS1_vEEE11doVisitLoopEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_15RemoveUnusedBrsENS_7VisitorIS1_vEEE12doVisitBreakEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_15RemoveUnusedBrsENS_7VisitorIS1_vEEE13doVisitSwitchEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_15RemoveUnusedBrsENS_7VisitorIS1_vEEE11doVisitCallEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_15RemoveUnusedBrsENS_7VisitorIS1_vEEE17doVisitCallImportEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_15RemoveUnusedBrsENS_7VisitorIS1_vEEE19doVisitCallIndirectEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_15RemoveUnusedBrsENS_7VisitorIS1_vEEE15doVisitGetLocalEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_15RemoveUnusedBrsENS_7VisitorIS1_vEEE15doVisitSetLocalEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_15RemoveUnusedBrsENS_7VisitorIS1_vEEE11doVisitLoadEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_15RemoveUnusedBrsENS_7VisitorIS1_vEEE12doVisitStoreEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_15RemoveUnusedBrsENS_7VisitorIS1_vEEE12doVisitConstEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_15RemoveUnusedBrsENS_7VisitorIS1_vEEE12doVisitUnaryEPS1_PPNS_10ExpressionE
,__ZN4wasm6WalkerINS_15RemoveUnusedBrsENS_7VisitorIS1_vEEE13doVisitBinaryEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_15RemoveUnusedBrsENS_7VisitorIS1_vEEE13doVisitSelectEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_15RemoveUnusedBrsENS_7VisitorIS1_vEEE13doVisitReturnEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_15RemoveUnusedBrsENS_7VisitorIS1_vEEE11doVisitHostEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_15RemoveUnusedBrsENS_7VisitorIS1_vEEE10doVisitNopEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_15RemoveUnusedBrsENS_7VisitorIS1_vEEE18doVisitUnreachableEPS1_PPNS_10ExpressionE,__ZN4wasm10PostWalkerINS_17RemoveUnusedNamesENS_7VisitorIS1_vEEE4scanEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_17RemoveUnusedNamesENS_7VisitorIS1_vEEE12doVisitBlockEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_17RemoveUnusedNamesENS_7VisitorIS1_vEEE9doVisitIfEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_17RemoveUnusedNamesENS_7VisitorIS1_vEEE11doVisitLoopEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_17RemoveUnusedNamesENS_7VisitorIS1_vEEE12doVisitBreakEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_17RemoveUnusedNamesENS_7VisitorIS1_vEEE13doVisitSwitchEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_17RemoveUnusedNamesENS_7VisitorIS1_vEEE11doVisitCallEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_17RemoveUnusedNamesENS_7VisitorIS1_vEEE17doVisitCallImportEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_17RemoveUnusedNamesENS_7VisitorIS1_vEEE19doVisitCallIndirectEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_17RemoveUnusedNamesENS_7VisitorIS1_vEEE15doVisitGetLocalEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_17RemoveUnusedNamesENS_7VisitorIS1_vEEE15doVisitSetLocalEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_17RemoveUnusedNamesENS_7VisitorIS1_vEEE11doVisitLoadEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_17RemoveUnusedNamesENS_7VisitorIS1_vEEE12doVisitStoreEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_17RemoveUnusedNamesENS_7VisitorIS1_vEEE12doVisitConstEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_17RemoveUnusedNamesENS_7VisitorIS1_vEEE12doVisitUnaryEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_17RemoveUnusedNamesENS_7VisitorIS1_vEEE13doVisitBinaryEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_17RemoveUnusedNamesENS_7VisitorIS1_vEEE13doVisitSelectEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_17RemoveUnusedNamesENS_7VisitorIS1_vEEE13doVisitReturnEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_17RemoveUnusedNamesENS_7VisitorIS1_vEEE11doVisitHostEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_17RemoveUnusedNamesENS_7VisitorIS1_vEEE10doVisitNopEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_17RemoveUnusedNamesENS_7VisitorIS1_vEEE18doVisitUnreachableEPS1_PPNS_10ExpressionE,__ZN4wasm10PostWalkerINS_14PostEmscriptenENS_7VisitorIS1_vEEE4scanEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_14PostEmscriptenENS_7VisitorIS1_vEEE12doVisitBlockEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_14PostEmscriptenENS_7VisitorIS1_vEEE9doVisitIfEPS1_PPNS_10ExpressionE
,__ZN4wasm6WalkerINS_14PostEmscriptenENS_7VisitorIS1_vEEE11doVisitLoopEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_14PostEmscriptenENS_7VisitorIS1_vEEE12doVisitBreakEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_14PostEmscriptenENS_7VisitorIS1_vEEE13doVisitSwitchEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_14PostEmscriptenENS_7VisitorIS1_vEEE11doVisitCallEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_14PostEmscriptenENS_7VisitorIS1_vEEE17doVisitCallImportEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_14PostEmscriptenENS_7VisitorIS1_vEEE19doVisitCallIndirectEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_14PostEmscriptenENS_7VisitorIS1_vEEE15doVisitGetLocalEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_14PostEmscriptenENS_7VisitorIS1_vEEE15doVisitSetLocalEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_14PostEmscriptenENS_7VisitorIS1_vEEE11doVisitLoadEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_14PostEmscriptenENS_7VisitorIS1_vEEE12doVisitStoreEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_14PostEmscriptenENS_7VisitorIS1_vEEE12doVisitConstEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_14PostEmscriptenENS_7VisitorIS1_vEEE12doVisitUnaryEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_14PostEmscriptenENS_7VisitorIS1_vEEE13doVisitBinaryEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_14PostEmscriptenENS_7VisitorIS1_vEEE13doVisitSelectEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_14PostEmscriptenENS_7VisitorIS1_vEEE13doVisitReturnEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_14PostEmscriptenENS_7VisitorIS1_vEEE11doVisitHostEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_14PostEmscriptenENS_7VisitorIS1_vEEE10doVisitNopEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_14PostEmscriptenENS_7VisitorIS1_vEEE18doVisitUnreachableEPS1_PPNS_10ExpressionE,__ZN4wasm14SimplifyLocals4scanEPS0_PPNS_10ExpressionE,__ZN4wasm14SimplifyLocals9visitPostEPS0_PPNS_10ExpressionE,__ZN4wasm14SimplifyLocals17doNoteIfElseFalseEPS0_PPNS_10ExpressionE,__ZN4wasm14SimplifyLocals16doNoteIfElseTrueEPS0_PPNS_10ExpressionE,__ZN4wasm14SimplifyLocals21doNoteIfElseConditionEPS0_PPNS_10ExpressionE,__ZN4wasm14SimplifyLocals8visitPreEPS0_PPNS_10ExpressionE,__ZN4wasm10PostWalkerINS_14EffectAnalyzerENS_7VisitorIS1_vEEE4scanEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_14EffectAnalyzerENS_7VisitorIS1_vEEE12doVisitBlockEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_14EffectAnalyzerENS_7VisitorIS1_vEEE9doVisitIfEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_14EffectAnalyzerENS_7VisitorIS1_vEEE11doVisitLoopEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_14EffectAnalyzerENS_7VisitorIS1_vEEE12doVisitBreakEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_14EffectAnalyzerENS_7VisitorIS1_vEEE13doVisitSwitchEPS1_PPNS_10ExpressionE
,__ZN4wasm6WalkerINS_14EffectAnalyzerENS_7VisitorIS1_vEEE11doVisitCallEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_14EffectAnalyzerENS_7VisitorIS1_vEEE17doVisitCallImportEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_14EffectAnalyzerENS_7VisitorIS1_vEEE19doVisitCallIndirectEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_14EffectAnalyzerENS_7VisitorIS1_vEEE15doVisitGetLocalEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_14EffectAnalyzerENS_7VisitorIS1_vEEE15doVisitSetLocalEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_14EffectAnalyzerENS_7VisitorIS1_vEEE11doVisitLoadEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_14EffectAnalyzerENS_7VisitorIS1_vEEE12doVisitStoreEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_14EffectAnalyzerENS_7VisitorIS1_vEEE12doVisitConstEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_14EffectAnalyzerENS_7VisitorIS1_vEEE12doVisitUnaryEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_14EffectAnalyzerENS_7VisitorIS1_vEEE13doVisitBinaryEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_14EffectAnalyzerENS_7VisitorIS1_vEEE13doVisitSelectEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_14EffectAnalyzerENS_7VisitorIS1_vEEE13doVisitReturnEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_14EffectAnalyzerENS_7VisitorIS1_vEEE11doVisitHostEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_14EffectAnalyzerENS_7VisitorIS1_vEEE10doVisitNopEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_14EffectAnalyzerENS_7VisitorIS1_vEEE18doVisitUnreachableEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE12doVisitBlockEPS1_PPNS_10ExpressionE,__ZN4wasm14SimplifyLocals15doNoteNonLinearEPS0_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE9doVisitIfEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE11doVisitLoopEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE12doVisitBreakEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE13doVisitSwitchEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE13doVisitReturnEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE11doVisitCallEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE17doVisitCallImportEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE19doVisitCallIndirectEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE15doVisitGetLocalEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE15doVisitSetLocalEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE11doVisitLoadEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE12doVisitStoreEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE12doVisitConstEPS1_PPNS_10ExpressionE
,__ZN4wasm6WalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE12doVisitUnaryEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE13doVisitBinaryEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE13doVisitSelectEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE11doVisitHostEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE10doVisitNopEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_14SimplifyLocalsENS_7VisitorIS1_vEEE18doVisitUnreachableEPS1_PPNS_10ExpressionE,__ZN4wasm10PostWalkerINS_15GetLocalCounterENS_7VisitorIS1_vEEE4scanEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_15GetLocalCounterENS_7VisitorIS1_vEEE12doVisitBlockEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_15GetLocalCounterENS_7VisitorIS1_vEEE9doVisitIfEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_15GetLocalCounterENS_7VisitorIS1_vEEE11doVisitLoopEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_15GetLocalCounterENS_7VisitorIS1_vEEE12doVisitBreakEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_15GetLocalCounterENS_7VisitorIS1_vEEE13doVisitSwitchEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_15GetLocalCounterENS_7VisitorIS1_vEEE11doVisitCallEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_15GetLocalCounterENS_7VisitorIS1_vEEE17doVisitCallImportEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_15GetLocalCounterENS_7VisitorIS1_vEEE19doVisitCallIndirectEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_15GetLocalCounterENS_7VisitorIS1_vEEE15doVisitGetLocalEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_15GetLocalCounterENS_7VisitorIS1_vEEE15doVisitSetLocalEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_15GetLocalCounterENS_7VisitorIS1_vEEE11doVisitLoadEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_15GetLocalCounterENS_7VisitorIS1_vEEE12doVisitStoreEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_15GetLocalCounterENS_7VisitorIS1_vEEE12doVisitConstEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_15GetLocalCounterENS_7VisitorIS1_vEEE12doVisitUnaryEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_15GetLocalCounterENS_7VisitorIS1_vEEE13doVisitBinaryEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_15GetLocalCounterENS_7VisitorIS1_vEEE13doVisitSelectEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_15GetLocalCounterENS_7VisitorIS1_vEEE13doVisitReturnEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_15GetLocalCounterENS_7VisitorIS1_vEEE11doVisitHostEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_15GetLocalCounterENS_7VisitorIS1_vEEE10doVisitNopEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_15GetLocalCounterENS_7VisitorIS1_vEEE18doVisitUnreachableEPS1_PPNS_10ExpressionE,__ZN4wasm10PostWalkerINS_15SetLocalRemoverENS_7VisitorIS1_vEEE4scanEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_15SetLocalRemoverENS_7VisitorIS1_vEEE12doVisitBlockEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_15SetLocalRemoverENS_7VisitorIS1_vEEE9doVisitIfEPS1_PPNS_10ExpressionE
,__ZN4wasm6WalkerINS_15SetLocalRemoverENS_7VisitorIS1_vEEE11doVisitLoopEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_15SetLocalRemoverENS_7VisitorIS1_vEEE12doVisitBreakEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_15SetLocalRemoverENS_7VisitorIS1_vEEE13doVisitSwitchEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_15SetLocalRemoverENS_7VisitorIS1_vEEE11doVisitCallEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_15SetLocalRemoverENS_7VisitorIS1_vEEE17doVisitCallImportEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_15SetLocalRemoverENS_7VisitorIS1_vEEE19doVisitCallIndirectEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_15SetLocalRemoverENS_7VisitorIS1_vEEE15doVisitGetLocalEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_15SetLocalRemoverENS_7VisitorIS1_vEEE15doVisitSetLocalEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_15SetLocalRemoverENS_7VisitorIS1_vEEE11doVisitLoadEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_15SetLocalRemoverENS_7VisitorIS1_vEEE12doVisitStoreEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_15SetLocalRemoverENS_7VisitorIS1_vEEE12doVisitConstEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_15SetLocalRemoverENS_7VisitorIS1_vEEE12doVisitUnaryEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_15SetLocalRemoverENS_7VisitorIS1_vEEE13doVisitBinaryEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_15SetLocalRemoverENS_7VisitorIS1_vEEE13doVisitSelectEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_15SetLocalRemoverENS_7VisitorIS1_vEEE13doVisitReturnEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_15SetLocalRemoverENS_7VisitorIS1_vEEE11doVisitHostEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_15SetLocalRemoverENS_7VisitorIS1_vEEE10doVisitNopEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_15SetLocalRemoverENS_7VisitorIS1_vEEE18doVisitUnreachableEPS1_PPNS_10ExpressionE,__ZN4wasm10PostWalkerINS_13ReorderLocalsENS_7VisitorIS1_vEEE4scanEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_13ReorderLocalsENS_7VisitorIS1_vEEE12doVisitBlockEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_13ReorderLocalsENS_7VisitorIS1_vEEE9doVisitIfEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_13ReorderLocalsENS_7VisitorIS1_vEEE11doVisitLoopEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_13ReorderLocalsENS_7VisitorIS1_vEEE12doVisitBreakEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_13ReorderLocalsENS_7VisitorIS1_vEEE13doVisitSwitchEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_13ReorderLocalsENS_7VisitorIS1_vEEE11doVisitCallEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_13ReorderLocalsENS_7VisitorIS1_vEEE17doVisitCallImportEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_13ReorderLocalsENS_7VisitorIS1_vEEE19doVisitCallIndirectEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_13ReorderLocalsENS_7VisitorIS1_vEEE15doVisitGetLocalEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_13ReorderLocalsENS_7VisitorIS1_vEEE15doVisitSetLocalEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_13ReorderLocalsENS_7VisitorIS1_vEEE11doVisitLoadEPS1_PPNS_10ExpressionE
,__ZN4wasm6WalkerINS_13ReorderLocalsENS_7VisitorIS1_vEEE12doVisitStoreEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_13ReorderLocalsENS_7VisitorIS1_vEEE12doVisitConstEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_13ReorderLocalsENS_7VisitorIS1_vEEE12doVisitUnaryEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_13ReorderLocalsENS_7VisitorIS1_vEEE13doVisitBinaryEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_13ReorderLocalsENS_7VisitorIS1_vEEE13doVisitSelectEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_13ReorderLocalsENS_7VisitorIS1_vEEE13doVisitReturnEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_13ReorderLocalsENS_7VisitorIS1_vEEE11doVisitHostEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_13ReorderLocalsENS_7VisitorIS1_vEEE10doVisitNopEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_13ReorderLocalsENS_7VisitorIS1_vEEE18doVisitUnreachableEPS1_PPNS_10ExpressionE,__ZN4wasm10PostWalkerIZNS_13ReorderLocals13visitFunctionEPNS_8FunctionEE9ReIndexerNS_7VisitorIS4_vEEE4scanEPS4_PPNS_10ExpressionE,__ZN4wasm6WalkerIZNS_13ReorderLocals13visitFunctionEPNS_8FunctionEE9ReIndexerNS_7VisitorIS4_vEEE12doVisitBlockEPS4_PPNS_10ExpressionE,__ZN4wasm6WalkerIZNS_13ReorderLocals13visitFunctionEPNS_8FunctionEE9ReIndexerNS_7VisitorIS4_vEEE9doVisitIfEPS4_PPNS_10ExpressionE,__ZN4wasm6WalkerIZNS_13ReorderLocals13visitFunctionEPNS_8FunctionEE9ReIndexerNS_7VisitorIS4_vEEE11doVisitLoopEPS4_PPNS_10ExpressionE,__ZN4wasm6WalkerIZNS_13ReorderLocals13visitFunctionEPNS_8FunctionEE9ReIndexerNS_7VisitorIS4_vEEE12doVisitBreakEPS4_PPNS_10ExpressionE,__ZN4wasm6WalkerIZNS_13ReorderLocals13visitFunctionEPNS_8FunctionEE9ReIndexerNS_7VisitorIS4_vEEE13doVisitSwitchEPS4_PPNS_10ExpressionE,__ZN4wasm6WalkerIZNS_13ReorderLocals13visitFunctionEPNS_8FunctionEE9ReIndexerNS_7VisitorIS4_vEEE11doVisitCallEPS4_PPNS_10ExpressionE,__ZN4wasm6WalkerIZNS_13ReorderLocals13visitFunctionEPNS_8FunctionEE9ReIndexerNS_7VisitorIS4_vEEE17doVisitCallImportEPS4_PPNS_10ExpressionE,__ZN4wasm6WalkerIZNS_13ReorderLocals13visitFunctionEPNS_8FunctionEE9ReIndexerNS_7VisitorIS4_vEEE19doVisitCallIndirectEPS4_PPNS_10ExpressionE,__ZN4wasm6WalkerIZNS_13ReorderLocals13visitFunctionEPNS_8FunctionEE9ReIndexerNS_7VisitorIS4_vEEE15doVisitGetLocalEPS4_PPNS_10ExpressionE,__ZN4wasm6WalkerIZNS_13ReorderLocals13visitFunctionEPNS_8FunctionEE9ReIndexerNS_7VisitorIS4_vEEE15doVisitSetLocalEPS4_PPNS_10ExpressionE,__ZN4wasm6WalkerIZNS_13ReorderLocals13visitFunctionEPNS_8FunctionEE9ReIndexerNS_7VisitorIS4_vEEE11doVisitLoadEPS4_PPNS_10ExpressionE,__ZN4wasm6WalkerIZNS_13ReorderLocals13visitFunctionEPNS_8FunctionEE9ReIndexerNS_7VisitorIS4_vEEE12doVisitStoreEPS4_PPNS_10ExpressionE,__ZN4wasm6WalkerIZNS_13ReorderLocals13visitFunctionEPNS_8FunctionEE9ReIndexerNS_7VisitorIS4_vEEE12doVisitConstEPS4_PPNS_10ExpressionE,__ZN4wasm6WalkerIZNS_13ReorderLocals13visitFunctionEPNS_8FunctionEE9ReIndexerNS_7VisitorIS4_vEEE12doVisitUnaryEPS4_PPNS_10ExpressionE,__ZN4wasm6WalkerIZNS_13ReorderLocals13visitFunctionEPNS_8FunctionEE9ReIndexerNS_7VisitorIS4_vEEE13doVisitBinaryEPS4_PPNS_10ExpressionE,__ZN4wasm6WalkerIZNS_13ReorderLocals13visitFunctionEPNS_8FunctionEE9ReIndexerNS_7VisitorIS4_vEEE13doVisitSelectEPS4_PPNS_10ExpressionE,__ZN4wasm6WalkerIZNS_13ReorderLocals13visitFunctionEPNS_8FunctionEE9ReIndexerNS_7VisitorIS4_vEEE13doVisitReturnEPS4_PPNS_10ExpressionE,__ZN4wasm6WalkerIZNS_13ReorderLocals13visitFunctionEPNS_8FunctionEE9ReIndexerNS_7VisitorIS4_vEEE11doVisitHostEPS4_PPNS_10ExpressionE,__ZN4wasm6WalkerIZNS_13ReorderLocals13visitFunctionEPNS_8FunctionEE9ReIndexerNS_7VisitorIS4_vEEE10doVisitNopEPS4_PPNS_10ExpressionE,__ZN4wasm6WalkerIZNS_13ReorderLocals13visitFunctionEPNS_8FunctionEE9ReIndexerNS_7VisitorIS4_vEEE18doVisitUnreachableEPS4_PPNS_10ExpressionE
,__ZN4wasm10PostWalkerINS_6VacuumENS_7VisitorIS1_vEEE4scanEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_6VacuumENS_7VisitorIS1_vEEE12doVisitBlockEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_6VacuumENS_7VisitorIS1_vEEE9doVisitIfEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_6VacuumENS_7VisitorIS1_vEEE11doVisitLoopEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_6VacuumENS_7VisitorIS1_vEEE12doVisitBreakEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_6VacuumENS_7VisitorIS1_vEEE13doVisitSwitchEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_6VacuumENS_7VisitorIS1_vEEE11doVisitCallEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_6VacuumENS_7VisitorIS1_vEEE17doVisitCallImportEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_6VacuumENS_7VisitorIS1_vEEE19doVisitCallIndirectEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_6VacuumENS_7VisitorIS1_vEEE15doVisitGetLocalEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_6VacuumENS_7VisitorIS1_vEEE15doVisitSetLocalEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_6VacuumENS_7VisitorIS1_vEEE11doVisitLoadEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_6VacuumENS_7VisitorIS1_vEEE12doVisitStoreEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_6VacuumENS_7VisitorIS1_vEEE12doVisitConstEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_6VacuumENS_7VisitorIS1_vEEE12doVisitUnaryEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_6VacuumENS_7VisitorIS1_vEEE13doVisitBinaryEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_6VacuumENS_7VisitorIS1_vEEE13doVisitSelectEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_6VacuumENS_7VisitorIS1_vEEE13doVisitReturnEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_6VacuumENS_7VisitorIS1_vEEE11doVisitHostEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_6VacuumENS_7VisitorIS1_vEEE10doVisitNopEPS1_PPNS_10ExpressionE,__ZN4wasm6WalkerINS_6VacuumENS_7VisitorIS1_vEEE18doVisitUnreachableEPS1_PPNS_10ExpressionE,b5,b5,b5,b5,b5,b5,b5,b5,b5
,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5
,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5
,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5
,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5
,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5
,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5,b5
,b5,b5,b5];
var FUNCTION_TABLE_iiiiiii = [b6,__ZNKSt3__17num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_getES4_S4_RNS_8ios_baseERjRb,__ZNKSt3__17num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_getES4_S4_RNS_8ios_baseERjRl,__ZNKSt3__17num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_getES4_S4_RNS_8ios_baseERjRx,__ZNKSt3__17num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_getES4_S4_RNS_8ios_baseERjRt,__ZNKSt3__17num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_getES4_S4_RNS_8ios_baseERjS8_,__ZNKSt3__17num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_getES4_S4_RNS_8ios_baseERjRm,__ZNKSt3__17num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_getES4_S4_RNS_8ios_baseERjRy,__ZNKSt3__17num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_getES4_S4_RNS_8ios_baseERjRf,__ZNKSt3__17num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_getES4_S4_RNS_8ios_baseERjRd,__ZNKSt3__17num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_getES4_S4_RNS_8ios_baseERjRe,__ZNKSt3__17num_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_getES4_S4_RNS_8ios_baseERjRPv,__ZNKSt3__17num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_getES4_S4_RNS_8ios_baseERjRb,__ZNKSt3__17num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_getES4_S4_RNS_8ios_baseERjRl,__ZNKSt3__17num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_getES4_S4_RNS_8ios_baseERjRx,__ZNKSt3__17num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_getES4_S4_RNS_8ios_baseERjRt,__ZNKSt3__17num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_getES4_S4_RNS_8ios_baseERjS8_,__ZNKSt3__17num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_getES4_S4_RNS_8ios_baseERjRm,__ZNKSt3__17num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_getES4_S4_RNS_8ios_baseERjRy,__ZNKSt3__17num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_getES4_S4_RNS_8ios_baseERjRf,__ZNKSt3__17num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_getES4_S4_RNS_8ios_baseERjRd,__ZNKSt3__17num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_getES4_S4_RNS_8ios_baseERjRe,__ZNKSt3__17num_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_getES4_S4_RNS_8ios_baseERjRPv,__ZNKSt3__17num_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_putES4_RNS_8ios_baseEcx,__ZNKSt3__17num_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_putES4_RNS_8ios_baseEcy,__ZNKSt3__17num_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_putES4_RNS_8ios_baseEwx,__ZNKSt3__17num_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_putES4_RNS_8ios_baseEwy,__ZNKSt3__18time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE11do_get_timeES4_S4_RNS_8ios_baseERjP2tm,__ZNKSt3__18time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE11do_get_dateES4_S4_RNS_8ios_baseERjP2tm
,__ZNKSt3__18time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE14do_get_weekdayES4_S4_RNS_8ios_baseERjP2tm,__ZNKSt3__18time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE16do_get_monthnameES4_S4_RNS_8ios_baseERjP2tm,__ZNKSt3__18time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE11do_get_yearES4_S4_RNS_8ios_baseERjP2tm,__ZNKSt3__18time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE11do_get_timeES4_S4_RNS_8ios_baseERjP2tm,__ZNKSt3__18time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE11do_get_dateES4_S4_RNS_8ios_baseERjP2tm,__ZNKSt3__18time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE14do_get_weekdayES4_S4_RNS_8ios_baseERjP2tm,__ZNKSt3__18time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE16do_get_monthnameES4_S4_RNS_8ios_baseERjP2tm,__ZNKSt3__18time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE11do_get_yearES4_S4_RNS_8ios_baseERjP2tm,__ZNKSt3__19money_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_putES4_bRNS_8ios_baseEcRKNS_12basic_stringIcS3_NS_9allocatorIcEEEE,__ZNKSt3__19money_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_putES4_bRNS_8ios_baseEwRKNS_12basic_stringIwS3_NS_9allocatorIwEEEE,b6,b6,b6,b6,b6,b6,b6,b6,b6,b6,b6,b6,b6,b6,b6,b6,b6,b6,b6,b6
,b6,b6,b6,b6,b6];
var FUNCTION_TABLE_iiiiid = [b7,__ZNKSt3__17num_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_putES4_RNS_8ios_baseEcd,__ZNKSt3__17num_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_putES4_RNS_8ios_baseEce,__ZNKSt3__17num_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_putES4_RNS_8ios_baseEwd,__ZNKSt3__17num_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_putES4_RNS_8ios_baseEwe,b7,b7,b7];
var FUNCTION_TABLE_ii = [b8,__ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE4syncEv,__ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE9showmanycEv,__ZNSt3__115basic_stringbufIcNS_11char_traitsIcEENS_9allocatorIcEEE9underflowEv,__ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE5uflowEv,__ZNKSt3__110__function6__funcIZN4wasm22SExpressionWasmBuilderC1ERNS2_6ModuleERNS2_7ElementEEUlvE_NS_9allocatorIS8_EEFvvEE7__cloneEv,__ZNKSt3__110__function6__funcIZN4wasm22SExpressionWasmBuilderC1ERNS2_6ModuleERNS2_7ElementEEUlvE_NS_9allocatorIS8_EEFvvEE11target_typeEv,__ZNKSt9exception4whatEv,__ZNKSt3__110__function6__funcIZN4wasm12RegisterPassINS2_11MergeBlocksEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEE7__cloneEv,__ZNSt3__110__function6__funcIZN4wasm12RegisterPassINS2_11MergeBlocksEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEEclEv,__ZNKSt3__110__function6__funcIZN4wasm12RegisterPassINS2_11MergeBlocksEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEE11target_typeEv,__ZNKSt3__110__function6__funcIZN4wasm6WalkerINS2_11MergeBlocksENS2_7VisitorIS4_vEEE9startWalkEPNS2_6ModuleEEUlvE_NS_9allocatorISA_EEFNS2_15ThreadWorkStateEvEE7__cloneEv,__ZNSt3__110__function6__funcIZN4wasm6WalkerINS2_11MergeBlocksENS2_7VisitorIS4_vEEE9startWalkEPNS2_6ModuleEEUlvE_NS_9allocatorISA_EEFNS2_15ThreadWorkStateEvEEclEv,__ZNKSt3__110__function6__funcIZN4wasm6WalkerINS2_11MergeBlocksENS2_7VisitorIS4_vEEE9startWalkEPNS2_6ModuleEEUlvE_NS_9allocatorISA_EEFNS2_15ThreadWorkStateEvEE11target_typeEv,__ZNKSt3__110__function6__funcIZN4wasm12RegisterPassINS2_7PrinterEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEE7__cloneEv,__ZNSt3__110__function6__funcIZN4wasm12RegisterPassINS2_7PrinterEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEEclEv,__ZNKSt3__110__function6__funcIZN4wasm12RegisterPassINS2_7PrinterEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEE11target_typeEv,__ZNKSt3__110__function6__funcIZN4wasm12RegisterPassINS2_15MinifiedPrinterEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEE7__cloneEv,__ZNSt3__110__function6__funcIZN4wasm12RegisterPassINS2_15MinifiedPrinterEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEEclEv,__ZNKSt3__110__function6__funcIZN4wasm12RegisterPassINS2_15MinifiedPrinterEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEE11target_typeEv,__ZNKSt3__110__function6__funcIZN4wasm12RegisterPassINS2_11FullPrinterEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEE7__cloneEv,__ZNSt3__110__function6__funcIZN4wasm12RegisterPassINS2_11FullPrinterEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEEclEv,__ZNKSt3__110__function6__funcIZN4wasm12RegisterPassINS2_11FullPrinterEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEE11target_typeEv,__ZNKSt3__110__function6__funcIZN4wasm12RegisterPassINS2_15RemoveUnusedBrsEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEE7__cloneEv,__ZNSt3__110__function6__funcIZN4wasm12RegisterPassINS2_15RemoveUnusedBrsEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEEclEv,__ZNKSt3__110__function6__funcIZN4wasm12RegisterPassINS2_15RemoveUnusedBrsEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEE11target_typeEv,__ZNKSt3__110__function6__funcIZN4wasm6WalkerINS2_15RemoveUnusedBrsENS2_7VisitorIS4_vEEE9startWalkEPNS2_6ModuleEEUlvE_NS_9allocatorISA_EEFNS2_15ThreadWorkStateEvEE7__cloneEv,__ZNSt3__110__function6__funcIZN4wasm6WalkerINS2_15RemoveUnusedBrsENS2_7VisitorIS4_vEEE9startWalkEPNS2_6ModuleEEUlvE_NS_9allocatorISA_EEFNS2_15ThreadWorkStateEvEEclEv,__ZNKSt3__110__function6__funcIZN4wasm6WalkerINS2_15RemoveUnusedBrsENS2_7VisitorIS4_vEEE9startWalkEPNS2_6ModuleEEUlvE_NS_9allocatorISA_EEFNS2_15ThreadWorkStateEvEE11target_typeEv
,__ZNKSt3__110__function6__funcIZN4wasm12RegisterPassINS2_17RemoveUnusedNamesEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEE7__cloneEv,__ZNSt3__110__function6__funcIZN4wasm12RegisterPassINS2_17RemoveUnusedNamesEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEEclEv,__ZNKSt3__110__function6__funcIZN4wasm12RegisterPassINS2_17RemoveUnusedNamesEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEE11target_typeEv,__ZNKSt3__110__function6__funcIZN4wasm6WalkerINS2_17RemoveUnusedNamesENS2_7VisitorIS4_vEEE9startWalkEPNS2_6ModuleEEUlvE_NS_9allocatorISA_EEFNS2_15ThreadWorkStateEvEE7__cloneEv,__ZNSt3__110__function6__funcIZN4wasm6WalkerINS2_17RemoveUnusedNamesENS2_7VisitorIS4_vEEE9startWalkEPNS2_6ModuleEEUlvE_NS_9allocatorISA_EEFNS2_15ThreadWorkStateEvEEclEv,__ZNKSt3__110__function6__funcIZN4wasm6WalkerINS2_17RemoveUnusedNamesENS2_7VisitorIS4_vEEE9startWalkEPNS2_6ModuleEEUlvE_NS_9allocatorISA_EEFNS2_15ThreadWorkStateEvEE11target_typeEv,__ZNKSt3__110__function6__funcIZN4wasm12RegisterPassINS2_14PostEmscriptenEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEE7__cloneEv,__ZNSt3__110__function6__funcIZN4wasm12RegisterPassINS2_14PostEmscriptenEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEEclEv,__ZNKSt3__110__function6__funcIZN4wasm12RegisterPassINS2_14PostEmscriptenEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEE11target_typeEv,__ZNKSt3__110__function6__funcIZN4wasm6WalkerINS2_14PostEmscriptenENS2_7VisitorIS4_vEEE9startWalkEPNS2_6ModuleEEUlvE_NS_9allocatorISA_EEFNS2_15ThreadWorkStateEvEE7__cloneEv,__ZNSt3__110__function6__funcIZN4wasm6WalkerINS2_14PostEmscriptenENS2_7VisitorIS4_vEEE9startWalkEPNS2_6ModuleEEUlvE_NS_9allocatorISA_EEFNS2_15ThreadWorkStateEvEEclEv,__ZNKSt3__110__function6__funcIZN4wasm6WalkerINS2_14PostEmscriptenENS2_7VisitorIS4_vEEE9startWalkEPNS2_6ModuleEEUlvE_NS_9allocatorISA_EEFNS2_15ThreadWorkStateEvEE11target_typeEv,__ZNKSt3__110__function6__funcIZN4wasm12RegisterPassINS2_14SimplifyLocalsEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEE7__cloneEv,__ZNSt3__110__function6__funcIZN4wasm12RegisterPassINS2_14SimplifyLocalsEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEEclEv,__ZNKSt3__110__function6__funcIZN4wasm12RegisterPassINS2_14SimplifyLocalsEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEE11target_typeEv,__ZNKSt3__110__function6__funcIZN4wasm6WalkerINS2_14SimplifyLocalsENS2_7VisitorIS4_vEEE9startWalkEPNS2_6ModuleEEUlvE_NS_9allocatorISA_EEFNS2_15ThreadWorkStateEvEE7__cloneEv,__ZNSt3__110__function6__funcIZN4wasm6WalkerINS2_14SimplifyLocalsENS2_7VisitorIS4_vEEE9startWalkEPNS2_6ModuleEEUlvE_NS_9allocatorISA_EEFNS2_15ThreadWorkStateEvEEclEv,__ZNKSt3__110__function6__funcIZN4wasm6WalkerINS2_14SimplifyLocalsENS2_7VisitorIS4_vEEE9startWalkEPNS2_6ModuleEEUlvE_NS_9allocatorISA_EEFNS2_15ThreadWorkStateEvEE11target_typeEv,__ZNKSt3__110__function6__funcIZN4wasm12RegisterPassINS2_13ReorderLocalsEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEE7__cloneEv,__ZNSt3__110__function6__funcIZN4wasm12RegisterPassINS2_13ReorderLocalsEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEEclEv,__ZNKSt3__110__function6__funcIZN4wasm12RegisterPassINS2_13ReorderLocalsEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEE11target_typeEv,__ZNKSt3__110__function6__funcIZN4wasm6WalkerINS2_13ReorderLocalsENS2_7VisitorIS4_vEEE9startWalkEPNS2_6ModuleEEUlvE_NS_9allocatorISA_EEFNS2_15ThreadWorkStateEvEE7__cloneEv,__ZNSt3__110__function6__funcIZN4wasm6WalkerINS2_13ReorderLocalsENS2_7VisitorIS4_vEEE9startWalkEPNS2_6ModuleEEUlvE_NS_9allocatorISA_EEFNS2_15ThreadWorkStateEvEEclEv,__ZNKSt3__110__function6__funcIZN4wasm6WalkerINS2_13ReorderLocalsENS2_7VisitorIS4_vEEE9startWalkEPNS2_6ModuleEEUlvE_NS_9allocatorISA_EEFNS2_15ThreadWorkStateEvEE11target_typeEv,__ZNKSt3__110__function6__funcIZN4wasm12RegisterPassINS2_6VacuumEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEE7__cloneEv,__ZNSt3__110__function6__funcIZN4wasm12RegisterPassINS2_6VacuumEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEEclEv,__ZNKSt3__110__function6__funcIZN4wasm12RegisterPassINS2_6VacuumEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEE11target_typeEv,__ZNKSt3__110__function6__funcIZN4wasm6WalkerINS2_6VacuumENS2_7VisitorIS4_vEEE9startWalkEPNS2_6ModuleEEUlvE_NS_9allocatorISA_EEFNS2_15ThreadWorkStateEvEE7__cloneEv,__ZNSt3__110__function6__funcIZN4wasm6WalkerINS2_6VacuumENS2_7VisitorIS4_vEEE9startWalkEPNS2_6ModuleEEUlvE_NS_9allocatorISA_EEFNS2_15ThreadWorkStateEvEEclEv,__ZNKSt3__110__function6__funcIZN4wasm6WalkerINS2_6VacuumENS2_7VisitorIS4_vEEE9startWalkEPNS2_6ModuleEEUlvE_NS_9allocatorISA_EEFNS2_15ThreadWorkStateEvEE11target_typeEv
,___stdio_close,__ZNSt3__110__stdinbufIcE9underflowEv,__ZNSt3__110__stdinbufIcE5uflowEv,__ZNSt3__111__stdoutbufIcE4syncEv,__ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE9underflowEv,__ZNSt3__115basic_streambufIwNS_11char_traitsIwEEE4syncEv,__ZNSt3__115basic_streambufIwNS_11char_traitsIwEEE9showmanycEv,__ZNSt3__110__stdinbufIwE9underflowEv,__ZNSt3__110__stdinbufIwE5uflowEv,__ZNSt3__111__stdoutbufIwE4syncEv,__ZNSt3__115basic_streambufIwNS_11char_traitsIwEEE9underflowEv,__ZNSt3__115basic_streambufIwNS_11char_traitsIwEEE5uflowEv,__ZNKSt3__18time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE13do_date_orderEv,__ZNKSt3__120__time_get_c_storageIcE7__weeksEv,__ZNKSt3__120__time_get_c_storageIcE8__monthsEv,__ZNKSt3__120__time_get_c_storageIcE7__am_pmEv,__ZNKSt3__120__time_get_c_storageIcE3__cEv,__ZNKSt3__120__time_get_c_storageIcE3__rEv,__ZNKSt3__120__time_get_c_storageIcE3__xEv,__ZNKSt3__120__time_get_c_storageIcE3__XEv,__ZNKSt3__18time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE13do_date_orderEv,__ZNKSt3__120__time_get_c_storageIwE7__weeksEv,__ZNKSt3__120__time_get_c_storageIwE8__monthsEv,__ZNKSt3__120__time_get_c_storageIwE7__am_pmEv,__ZNKSt3__120__time_get_c_storageIwE3__cEv,__ZNKSt3__120__time_get_c_storageIwE3__rEv,__ZNKSt3__120__time_get_c_storageIwE3__xEv,__ZNKSt3__120__time_get_c_storageIwE3__XEv,__ZNKSt3__110moneypunctIcLb0EE16do_decimal_pointEv,__ZNKSt3__110moneypunctIcLb0EE16do_thousands_sepEv
,__ZNKSt3__110moneypunctIcLb0EE14do_frac_digitsEv,__ZNKSt3__110moneypunctIcLb1EE16do_decimal_pointEv,__ZNKSt3__110moneypunctIcLb1EE16do_thousands_sepEv,__ZNKSt3__110moneypunctIcLb1EE14do_frac_digitsEv,__ZNKSt3__110moneypunctIwLb0EE16do_decimal_pointEv,__ZNKSt3__110moneypunctIwLb0EE16do_thousands_sepEv,__ZNKSt3__110moneypunctIwLb0EE14do_frac_digitsEv,__ZNKSt3__110moneypunctIwLb1EE16do_decimal_pointEv,__ZNKSt3__110moneypunctIwLb1EE16do_thousands_sepEv,__ZNKSt3__110moneypunctIwLb1EE14do_frac_digitsEv,__ZNKSt3__17codecvtIDic11__mbstate_tE11do_encodingEv,__ZNKSt3__17codecvtIDic11__mbstate_tE16do_always_noconvEv,__ZNKSt3__17codecvtIDic11__mbstate_tE13do_max_lengthEv,__ZNKSt3__17codecvtIwc11__mbstate_tE11do_encodingEv,__ZNKSt3__17codecvtIwc11__mbstate_tE16do_always_noconvEv,__ZNKSt3__17codecvtIwc11__mbstate_tE13do_max_lengthEv,__ZNKSt3__18numpunctIcE16do_decimal_pointEv,__ZNKSt3__18numpunctIcE16do_thousands_sepEv,__ZNKSt3__18numpunctIwE16do_decimal_pointEv,__ZNKSt3__18numpunctIwE16do_thousands_sepEv,__ZNKSt3__17codecvtIcc11__mbstate_tE11do_encodingEv,__ZNKSt3__17codecvtIcc11__mbstate_tE16do_always_noconvEv,__ZNKSt3__17codecvtIcc11__mbstate_tE13do_max_lengthEv,__ZNKSt3__17codecvtIDsc11__mbstate_tE11do_encodingEv,__ZNKSt3__17codecvtIDsc11__mbstate_tE16do_always_noconvEv,__ZNKSt3__17codecvtIDsc11__mbstate_tE13do_max_lengthEv,__ZNKSt9bad_alloc4whatEv,__ZNKSt11logic_error4whatEv,__ZNSt3__114__thread_proxyINS_5tupleIJPFvPvEPN4wasm6ThreadEEEEEES2_S2_,b8
,b8,b8,b8,b8,b8,b8,b8,b8,b8];
var FUNCTION_TABLE_viii = [b9,__ZN4wasm4Pass7prepareEPNS_10PassRunnerEPNS_6ModuleE,__ZN4wasm4Pass8finalizeEPNS_10PassRunnerEPNS_6ModuleE,__ZN4wasm22ShellExternalInterface10growMemoryEjj,__ZN4wasm10WalkerPassINS_10PostWalkerINS_11MergeBlocksENS_7VisitorIS2_vEEEEE3runEPNS_10PassRunnerEPNS_6ModuleE,__ZN4wasm7Printer3runEPNS_10PassRunnerEPNS_6ModuleE,__ZN4wasm15MinifiedPrinter3runEPNS_10PassRunnerEPNS_6ModuleE,__ZN4wasm11FullPrinter3runEPNS_10PassRunnerEPNS_6ModuleE,__ZN4wasm10WalkerPassINS_10PostWalkerINS_15RemoveUnusedBrsENS_7VisitorIS2_vEEEEE3runEPNS_10PassRunnerEPNS_6ModuleE,__ZN4wasm10WalkerPassINS_10PostWalkerINS_17RemoveUnusedNamesENS_7VisitorIS2_vEEEEE3runEPNS_10PassRunnerEPNS_6ModuleE,__ZN4wasm10WalkerPassINS_10PostWalkerINS_14PostEmscriptenENS_7VisitorIS2_vEEEEE3runEPNS_10PassRunnerEPNS_6ModuleE,__ZN4wasm10WalkerPassINS_21LinearExecutionWalkerINS_14SimplifyLocalsENS_7VisitorIS2_vEEEEE3runEPNS_10PassRunnerEPNS_6ModuleE,__ZN4wasm10WalkerPassINS_10PostWalkerINS_15GetLocalCounterENS_7VisitorIS2_vEEEEE3runEPNS_10PassRunnerEPNS_6ModuleE,__ZN4wasm10WalkerPassINS_10PostWalkerINS_15SetLocalRemoverENS_7VisitorIS2_vEEEEE3runEPNS_10PassRunnerEPNS_6ModuleE,__ZN4wasm10WalkerPassINS_10PostWalkerINS_13ReorderLocalsENS_7VisitorIS2_vEEEEE3runEPNS_10PassRunnerEPNS_6ModuleE,__ZN4wasm10WalkerPassINS_10PostWalkerINS_6VacuumENS_7VisitorIS2_vEEEEE3runEPNS_10PassRunnerEPNS_6ModuleE];
var FUNCTION_TABLE_v = [b10,___cxa_pure_virtual__wrapper,__ZL25default_terminate_handlerv,__ZN10__cxxabiv112_GLOBAL__N_110construct_Ev];
var FUNCTION_TABLE_iiiiiiiii = [b11,__ZNKSt3__18time_getIcNS_19istreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_getES4_S4_RNS_8ios_baseERjP2tmcc,__ZNKSt3__18time_getIwNS_19istreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_getES4_S4_RNS_8ios_baseERjP2tmcc,__ZNKSt3__17codecvtIDic11__mbstate_tE6do_outERS1_PKDiS5_RS5_PcS7_RS7_,__ZNKSt3__17codecvtIDic11__mbstate_tE5do_inERS1_PKcS5_RS5_PDiS7_RS7_,__ZNKSt3__17codecvtIwc11__mbstate_tE6do_outERS1_PKwS5_RS5_PcS7_RS7_,__ZNKSt3__17codecvtIwc11__mbstate_tE5do_inERS1_PKcS5_RS5_PwS7_RS7_,__ZNKSt3__17codecvtIcc11__mbstate_tE6do_outERS1_PKcS5_RS5_PcS7_RS7_,__ZNKSt3__17codecvtIcc11__mbstate_tE5do_inERS1_PKcS5_RS5_PcS7_RS7_,__ZNKSt3__17codecvtIDsc11__mbstate_tE6do_outERS1_PKDsS5_RS5_PcS7_RS7_,__ZNKSt3__17codecvtIDsc11__mbstate_tE5do_inERS1_PKcS5_RS5_PDsS7_RS7_,b11,b11,b11,b11,b11];
var FUNCTION_TABLE_iiiii = [b12,__ZNKSt3__15ctypeIcE8do_widenEPKcS3_Pc,__ZNKSt3__15ctypeIwE5do_isEPKwS3_Pt,__ZNKSt3__15ctypeIwE10do_scan_isEtPKwS3_,__ZNKSt3__15ctypeIwE11do_scan_notEtPKwS3_,__ZNKSt3__15ctypeIwE8do_widenEPKcS3_Pw,b12,b12];
var FUNCTION_TABLE_viiiiii = [b13,__ZNSt3__115basic_stringbufIcNS_11char_traitsIcEENS_9allocatorIcEEE7seekoffExNS_8ios_base7seekdirEj,__ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE7seekoffExNS_8ios_base7seekdirEj,__ZNSt3__115basic_streambufIwNS_11char_traitsIwEEE7seekoffExNS_8ios_base7seekdirEj,__ZNKSt3__18messagesIcE6do_getEiiiRKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEE,__ZNKSt3__18messagesIwE6do_getEiiiRKNS_12basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEEE,__ZNK10__cxxabiv117__class_type_info16search_above_dstEPNS_19__dynamic_cast_infoEPKvS4_ib,__ZNK10__cxxabiv120__si_class_type_info16search_above_dstEPNS_19__dynamic_cast_infoEPKvS4_ib,__ZNK10__cxxabiv121__vmi_class_type_info16search_above_dstEPNS_19__dynamic_cast_infoEPKvS4_ib,b13,b13,b13,b13,b13,b13,b13];
var FUNCTION_TABLE_iii = [b14,__ZNSt3__115basic_stringbufIcNS_11char_traitsIcEENS_9allocatorIcEEE9pbackfailEi,__ZNSt3__115basic_stringbufIcNS_11char_traitsIcEENS_9allocatorIcEEE8overflowEi,__ZNKSt3__110__function6__funcIZN4wasm22SExpressionWasmBuilderC1ERNS2_6ModuleERNS2_7ElementEEUlvE_NS_9allocatorIS8_EEFvvEE6targetERKSt9type_info,__ZNKSt3__110__function6__funcIZN4wasm12RegisterPassINS2_11MergeBlocksEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEE6targetERKSt9type_info,__ZNKSt3__110__function6__funcIZN4wasm6WalkerINS2_11MergeBlocksENS2_7VisitorIS4_vEEE9startWalkEPNS2_6ModuleEEUlvE_NS_9allocatorISA_EEFNS2_15ThreadWorkStateEvEE6targetERKSt9type_info,__ZNKSt3__110__function6__funcIZN4wasm12RegisterPassINS2_7PrinterEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEE6targetERKSt9type_info,__ZNKSt3__110__function6__funcIZN4wasm12RegisterPassINS2_15MinifiedPrinterEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEE6targetERKSt9type_info,__ZNKSt3__110__function6__funcIZN4wasm12RegisterPassINS2_11FullPrinterEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEE6targetERKSt9type_info,__ZNKSt3__110__function6__funcIZN4wasm12RegisterPassINS2_15RemoveUnusedBrsEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEE6targetERKSt9type_info,__ZNKSt3__110__function6__funcIZN4wasm6WalkerINS2_15RemoveUnusedBrsENS2_7VisitorIS4_vEEE9startWalkEPNS2_6ModuleEEUlvE_NS_9allocatorISA_EEFNS2_15ThreadWorkStateEvEE6targetERKSt9type_info,__ZNKSt3__110__function6__funcIZN4wasm12RegisterPassINS2_17RemoveUnusedNamesEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEE6targetERKSt9type_info,__ZNKSt3__110__function6__funcIZN4wasm6WalkerINS2_17RemoveUnusedNamesENS2_7VisitorIS4_vEEE9startWalkEPNS2_6ModuleEEUlvE_NS_9allocatorISA_EEFNS2_15ThreadWorkStateEvEE6targetERKSt9type_info,__ZNKSt3__110__function6__funcIZN4wasm12RegisterPassINS2_14PostEmscriptenEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEE6targetERKSt9type_info,__ZNKSt3__110__function6__funcIZN4wasm6WalkerINS2_14PostEmscriptenENS2_7VisitorIS4_vEEE9startWalkEPNS2_6ModuleEEUlvE_NS_9allocatorISA_EEFNS2_15ThreadWorkStateEvEE6targetERKSt9type_info,__ZNKSt3__110__function6__funcIZN4wasm12RegisterPassINS2_14SimplifyLocalsEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEE6targetERKSt9type_info,__ZNKSt3__110__function6__funcIZN4wasm6WalkerINS2_14SimplifyLocalsENS2_7VisitorIS4_vEEE9startWalkEPNS2_6ModuleEEUlvE_NS_9allocatorISA_EEFNS2_15ThreadWorkStateEvEE6targetERKSt9type_info,__ZNKSt3__110__function6__funcIZN4wasm12RegisterPassINS2_13ReorderLocalsEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEE6targetERKSt9type_info,__ZNKSt3__110__function6__funcIZN4wasm6WalkerINS2_13ReorderLocalsENS2_7VisitorIS4_vEEE9startWalkEPNS2_6ModuleEEUlvE_NS_9allocatorISA_EEFNS2_15ThreadWorkStateEvEE6targetERKSt9type_info,__ZNKSt3__110__function6__funcIZN4wasm12RegisterPassINS2_6VacuumEEC1EPKcS7_EUlvE_NS_9allocatorIS8_EEFPNS2_4PassEvEE6targetERKSt9type_info,__ZNKSt3__110__function6__funcIZN4wasm6WalkerINS2_6VacuumENS2_7VisitorIS4_vEEE9startWalkEPNS2_6ModuleEEUlvE_NS_9allocatorISA_EEFNS2_15ThreadWorkStateEvEE6targetERKSt9type_info,__ZNSt3__110__stdinbufIcE9pbackfailEi,__ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE8overflowEi,__ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE9pbackfailEi,__ZNSt3__111__stdoutbufIcE8overflowEi,__ZNSt3__110__stdinbufIwE9pbackfailEj,__ZNSt3__115basic_streambufIwNS_11char_traitsIwEEE8overflowEj,__ZNSt3__115basic_streambufIwNS_11char_traitsIwEEE9pbackfailEj,__ZNSt3__111__stdoutbufIwE8overflowEj
,__ZNKSt3__15ctypeIcE10do_toupperEc,__ZNKSt3__15ctypeIcE10do_tolowerEc,__ZNKSt3__15ctypeIcE8do_widenEc,__ZNKSt3__15ctypeIwE10do_toupperEw,__ZNKSt3__15ctypeIwE10do_tolowerEw,__ZNKSt3__15ctypeIwE8do_widenEc,b14,b14,b14,b14,b14,b14,b14,b14,b14,b14,b14,b14,b14,b14,b14,b14,b14,b14,b14,b14,b14,b14,b14,b14
,b14,b14,b14,b14,b14];
var FUNCTION_TABLE_iiiiii = [b15,__ZNKSt3__17collateIcE10do_compareEPKcS3_S3_S3_,__ZNKSt3__17collateIwE10do_compareEPKwS3_S3_S3_,__ZNKSt3__17num_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_putES4_RNS_8ios_baseEcb,__ZNKSt3__17num_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_putES4_RNS_8ios_baseEcl,__ZNKSt3__17num_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_putES4_RNS_8ios_baseEcm,__ZNKSt3__17num_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEEEE6do_putES4_RNS_8ios_baseEcPKv,__ZNKSt3__17num_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_putES4_RNS_8ios_baseEwb,__ZNKSt3__17num_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_putES4_RNS_8ios_baseEwl,__ZNKSt3__17num_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_putES4_RNS_8ios_baseEwm,__ZNKSt3__17num_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEEE6do_putES4_RNS_8ios_baseEwPKv,__ZNKSt3__17codecvtIDic11__mbstate_tE10do_unshiftERS1_PcS4_RS4_,__ZNKSt3__17codecvtIDic11__mbstate_tE9do_lengthERS1_PKcS5_j,__ZNKSt3__17codecvtIwc11__mbstate_tE10do_unshiftERS1_PcS4_RS4_,__ZNKSt3__17codecvtIwc11__mbstate_tE9do_lengthERS1_PKcS5_j,__ZNKSt3__15ctypeIcE9do_narrowEPKcS3_cPc,__ZNKSt3__15ctypeIwE9do_narrowEPKwS3_cPc,__ZNKSt3__17codecvtIcc11__mbstate_tE10do_unshiftERS1_PcS4_RS4_,__ZNKSt3__17codecvtIcc11__mbstate_tE9do_lengthERS1_PKcS5_j,__ZNKSt3__17codecvtIDsc11__mbstate_tE10do_unshiftERS1_PcS4_RS4_,__ZNKSt3__17codecvtIDsc11__mbstate_tE9do_lengthERS1_PKcS5_j,b15,b15,b15,b15,b15,b15,b15,b15
,b15,b15,b15];
var FUNCTION_TABLE_viiii = [b16,__ZNSt3__115basic_stringbufIcNS_11char_traitsIcEENS_9allocatorIcEEE7seekposENS_4fposI11__mbstate_tEEj,__ZN4wasm22ShellExternalInterface10callImportEPNS_6ImportERNSt3__16vectorINS_7LiteralENS3_9allocatorIS5_EEEE,__ZN4wasm22ShellExternalInterface4loadEPNS_4LoadEj,__ZN4wasm22ShellExternalInterface5storeEPNS_5StoreEjNS_7LiteralE,__ZNSt3__115basic_streambufIcNS_11char_traitsIcEEE7seekposENS_4fposI11__mbstate_tEEj,__ZNSt3__115basic_streambufIwNS_11char_traitsIwEEE7seekposENS_4fposI11__mbstate_tEEj,__ZNKSt3__17collateIcE12do_transformEPKcS3_,__ZNKSt3__17collateIwE12do_transformEPKwS3_,__ZNK10__cxxabiv117__class_type_info27has_unambiguous_public_baseEPNS_19__dynamic_cast_infoEPvi,__ZNK10__cxxabiv120__si_class_type_info27has_unambiguous_public_baseEPNS_19__dynamic_cast_infoEPvi,__ZNK10__cxxabiv121__vmi_class_type_info27has_unambiguous_public_baseEPNS_19__dynamic_cast_infoEPvi,b16,b16,b16,b16];

  return { _emscripten_bind_SExpressionParser_set_root_1: _emscripten_bind_SExpressionParser_set_root_1, _emscripten_bind_Module___destroy___0: _emscripten_bind_Module___destroy___0, _emscripten_bind_ShellExternalInterface_ShellExternalInterface_0: _emscripten_bind_ShellExternalInterface_ShellExternalInterface_0, _emscripten_bind_Element_size_0: _emscripten_bind_Element_size_0, _emscripten_bind_ModuleInstance_callExport_2: _emscripten_bind_ModuleInstance_callExport_2, _emscripten_bind_LiteralList_LiteralList_0: _emscripten_bind_LiteralList_LiteralList_0, ___udivdi3: ___udivdi3, _i64Add: _i64Add, _emscripten_bind_Literal_Literal_1: _emscripten_bind_Literal_Literal_1, _bitshift64Lshr: _bitshift64Lshr, _bitshift64Shl: _bitshift64Shl, _emscripten_bind_SExpressionWasmBuilder_SExpressionWasmBuilder_2: _emscripten_bind_SExpressionWasmBuilder_SExpressionWasmBuilder_2, _emscripten_bind_Literal___destroy___0: _emscripten_bind_Literal___destroy___0, _fflush: _fflush, _emscripten_bind_LiteralList___destroy___0: _emscripten_bind_LiteralList___destroy___0, ___cxa_is_pointer_type: ___cxa_is_pointer_type, _emscripten_bind_Element_getChild_1: _emscripten_bind_Element_getChild_1, _emscripten_bind_Name_Name_1: _emscripten_bind_Name_Name_1, _bitshift64Ashr: _bitshift64Ashr, _emscripten_bind_VoidPtr___destroy___0: _emscripten_bind_VoidPtr___destroy___0, _memset: _memset, _emscripten_bind_Element_c_str_0: _emscripten_bind_Element_c_str_0, ___cxa_demangle: ___cxa_demangle, ___muldsi3: ___muldsi3, _memcpy: _memcpy, _malloc: _malloc, ___muldi3: ___muldi3, ___uremdi3: ___uremdi3, _emscripten_bind_WasmPrinter_printModule_1: _emscripten_bind_WasmPrinter_printModule_1, ___divdi3: ___divdi3, _emscripten_bind_WasmPrinter___destroy___0: _emscripten_bind_WasmPrinter___destroy___0, _i64Subtract: _i64Subtract, ___udivmoddi4: ___udivmoddi4, _emscripten_bind_ModuleInstance___destroy___0: _emscripten_bind_ModuleInstance___destroy___0, _emscripten_bind_Element___destroy___0: _emscripten_bind_Element___destroy___0, _pthread_self: _pthread_self, _pthread_mutex_unlock: _pthread_mutex_unlock, ___remdi3: ___remdi3, _llvm_cttz_i32: _llvm_cttz_i32, _emscripten_bind_LiteralList_push_back_1: _emscripten_bind_LiteralList_push_back_1, _emscripten_bind_Module_Module_0: _emscripten_bind_Module_Module_0, _pthread_cond_broadcast: _pthread_cond_broadcast, _emscripten_bind_SExpressionParser_get_root_0: _emscripten_bind_SExpressionParser_get_root_0, ___errno_location: ___errno_location, _emscripten_bind_ShellExternalInterface___destroy___0: _emscripten_bind_ShellExternalInterface___destroy___0, _emscripten_bind_Name___destroy___0: _emscripten_bind_Name___destroy___0, ___cxa_can_catch: ___cxa_can_catch, _emscripten_bind_Name_c_str_0: _emscripten_bind_Name_c_str_0, _free: _free, _memmove: _memmove, _emscripten_bind_Element_dump_0: _emscripten_bind_Element_dump_0, _emscripten_bind_Literal_getf64_0: _emscripten_bind_Literal_getf64_0, _emscripten_bind_ModuleInstance_ModuleInstance_2: _emscripten_bind_ModuleInstance_ModuleInstance_2, _emscripten_bind_SExpressionParser___destroy___0: _emscripten_bind_SExpressionParser___destroy___0, _emscripten_bind_Element_isStr_0: _emscripten_bind_Element_isStr_0, _pthread_mutex_lock: _pthread_mutex_lock, _emscripten_bind_SExpressionParser_SExpressionParser_1: _emscripten_bind_SExpressionParser_SExpressionParser_1, _emscripten_bind_SExpressionWasmBuilder___destroy___0: _emscripten_bind_SExpressionWasmBuilder___destroy___0, _emscripten_bind_Element_isList_0: _emscripten_bind_Element_isList_0, __GLOBAL__I_000101: __GLOBAL__I_000101, __GLOBAL__sub_I_binaryen_js_cpp: __GLOBAL__sub_I_binaryen_js_cpp, __GLOBAL__sub_I_MergeBlocks_cpp: __GLOBAL__sub_I_MergeBlocks_cpp, __GLOBAL__sub_I_Print_cpp: __GLOBAL__sub_I_Print_cpp, __GLOBAL__sub_I_RemoveUnusedBrs_cpp: __GLOBAL__sub_I_RemoveUnusedBrs_cpp, __GLOBAL__sub_I_RemoveUnusedNames_cpp: __GLOBAL__sub_I_RemoveUnusedNames_cpp, __GLOBAL__sub_I_PostEmscripten_cpp: __GLOBAL__sub_I_PostEmscripten_cpp, __GLOBAL__sub_I_SimplifyLocals_cpp: __GLOBAL__sub_I_SimplifyLocals_cpp, __GLOBAL__sub_I_ReorderLocals_cpp: __GLOBAL__sub_I_ReorderLocals_cpp, __GLOBAL__sub_I_Vacuum_cpp: __GLOBAL__sub_I_Vacuum_cpp, __GLOBAL__sub_I_parser_cpp: __GLOBAL__sub_I_parser_cpp, __GLOBAL__sub_I_simple_ast_cpp: __GLOBAL__sub_I_simple_ast_cpp, __GLOBAL__sub_I_optimizer_shared_cpp: __GLOBAL__sub_I_optimizer_shared_cpp, __GLOBAL__sub_I_threads_cpp: __GLOBAL__sub_I_threads_cpp, __GLOBAL__sub_I_iostream_cpp: __GLOBAL__sub_I_iostream_cpp, runPostSets: runPostSets, _emscripten_replace_memory: _emscripten_replace_memory, stackAlloc: stackAlloc, stackSave: stackSave, stackRestore: stackRestore, establishStackSpace: establishStackSpace, setThrew: setThrew, setTempRet0: setTempRet0, getTempRet0: getTempRet0, dynCall_iiiiiiii: dynCall_iiiiiiii, dynCall_iiii: dynCall_iiii, dynCall_viiiii: dynCall_viiiii, dynCall_iiiiiid: dynCall_iiiiiid, dynCall_vi: dynCall_vi, dynCall_vii: dynCall_vii, dynCall_iiiiiii: dynCall_iiiiiii, dynCall_iiiiid: dynCall_iiiiid, dynCall_ii: dynCall_ii, dynCall_viii: dynCall_viii, dynCall_v: dynCall_v, dynCall_iiiiiiiii: dynCall_iiiiiiiii, dynCall_iiiii: dynCall_iiiii, dynCall_viiiiii: dynCall_viiiiii, dynCall_iii: dynCall_iii, dynCall_iiiiii: dynCall_iiiiii, dynCall_viiii: dynCall_viiii };
})
// EMSCRIPTEN_END_ASM
(Module.asmGlobalArg, Module.asmLibraryArg, buffer);
var _emscripten_bind_SExpressionParser_set_root_1 = Module["_emscripten_bind_SExpressionParser_set_root_1"] = asm["_emscripten_bind_SExpressionParser_set_root_1"];
var _emscripten_bind_Element_dump_0 = Module["_emscripten_bind_Element_dump_0"] = asm["_emscripten_bind_Element_dump_0"];
var __GLOBAL__sub_I_iostream_cpp = Module["__GLOBAL__sub_I_iostream_cpp"] = asm["__GLOBAL__sub_I_iostream_cpp"];
var _emscripten_bind_ShellExternalInterface_ShellExternalInterface_0 = Module["_emscripten_bind_ShellExternalInterface_ShellExternalInterface_0"] = asm["_emscripten_bind_ShellExternalInterface_ShellExternalInterface_0"];
var _emscripten_bind_Element_size_0 = Module["_emscripten_bind_Element_size_0"] = asm["_emscripten_bind_Element_size_0"];
var _emscripten_bind_ModuleInstance___destroy___0 = Module["_emscripten_bind_ModuleInstance___destroy___0"] = asm["_emscripten_bind_ModuleInstance___destroy___0"];
var _emscripten_bind_ModuleInstance_callExport_2 = Module["_emscripten_bind_ModuleInstance_callExport_2"] = asm["_emscripten_bind_ModuleInstance_callExport_2"];
var _emscripten_bind_LiteralList_LiteralList_0 = Module["_emscripten_bind_LiteralList_LiteralList_0"] = asm["_emscripten_bind_LiteralList_LiteralList_0"];
var ___udivdi3 = Module["___udivdi3"] = asm["___udivdi3"];
var __GLOBAL__sub_I_RemoveUnusedBrs_cpp = Module["__GLOBAL__sub_I_RemoveUnusedBrs_cpp"] = asm["__GLOBAL__sub_I_RemoveUnusedBrs_cpp"];
var __GLOBAL__sub_I_ReorderLocals_cpp = Module["__GLOBAL__sub_I_ReorderLocals_cpp"] = asm["__GLOBAL__sub_I_ReorderLocals_cpp"];
var _emscripten_bind_Literal_Literal_1 = Module["_emscripten_bind_Literal_Literal_1"] = asm["_emscripten_bind_Literal_Literal_1"];
var _bitshift64Lshr = Module["_bitshift64Lshr"] = asm["_bitshift64Lshr"];
var __GLOBAL__sub_I_SimplifyLocals_cpp = Module["__GLOBAL__sub_I_SimplifyLocals_cpp"] = asm["__GLOBAL__sub_I_SimplifyLocals_cpp"];
var __GLOBAL__sub_I_simple_ast_cpp = Module["__GLOBAL__sub_I_simple_ast_cpp"] = asm["__GLOBAL__sub_I_simple_ast_cpp"];
var _bitshift64Shl = Module["_bitshift64Shl"] = asm["_bitshift64Shl"];
var _emscripten_bind_SExpressionWasmBuilder_SExpressionWasmBuilder_2 = Module["_emscripten_bind_SExpressionWasmBuilder_SExpressionWasmBuilder_2"] = asm["_emscripten_bind_SExpressionWasmBuilder_SExpressionWasmBuilder_2"];
var _emscripten_bind_Literal___destroy___0 = Module["_emscripten_bind_Literal___destroy___0"] = asm["_emscripten_bind_Literal___destroy___0"];
var __GLOBAL__sub_I_binaryen_js_cpp = Module["__GLOBAL__sub_I_binaryen_js_cpp"] = asm["__GLOBAL__sub_I_binaryen_js_cpp"];
var _fflush = Module["_fflush"] = asm["_fflush"];
var _emscripten_bind_LiteralList___destroy___0 = Module["_emscripten_bind_LiteralList___destroy___0"] = asm["_emscripten_bind_LiteralList___destroy___0"];
var _emscripten_bind_SExpressionParser___destroy___0 = Module["_emscripten_bind_SExpressionParser___destroy___0"] = asm["_emscripten_bind_SExpressionParser___destroy___0"];
var ___cxa_is_pointer_type = Module["___cxa_is_pointer_type"] = asm["___cxa_is_pointer_type"];
var _emscripten_bind_Name_Name_1 = Module["_emscripten_bind_Name_Name_1"] = asm["_emscripten_bind_Name_Name_1"];
var _bitshift64Ashr = Module["_bitshift64Ashr"] = asm["_bitshift64Ashr"];
var _emscripten_bind_VoidPtr___destroy___0 = Module["_emscripten_bind_VoidPtr___destroy___0"] = asm["_emscripten_bind_VoidPtr___destroy___0"];
var _memset = Module["_memset"] = asm["_memset"];
var _emscripten_bind_Element_c_str_0 = Module["_emscripten_bind_Element_c_str_0"] = asm["_emscripten_bind_Element_c_str_0"];
var ___cxa_demangle = Module["___cxa_demangle"] = asm["___cxa_demangle"];
var _emscripten_bind_Element___destroy___0 = Module["_emscripten_bind_Element___destroy___0"] = asm["_emscripten_bind_Element___destroy___0"];
var _memcpy = Module["_memcpy"] = asm["_memcpy"];
var ___muldi3 = Module["___muldi3"] = asm["___muldi3"];
var __GLOBAL__sub_I_PostEmscripten_cpp = Module["__GLOBAL__sub_I_PostEmscripten_cpp"] = asm["__GLOBAL__sub_I_PostEmscripten_cpp"];
var _emscripten_replace_memory = Module["_emscripten_replace_memory"] = asm["_emscripten_replace_memory"];
var ___uremdi3 = Module["___uremdi3"] = asm["___uremdi3"];
var __GLOBAL__sub_I_Print_cpp = Module["__GLOBAL__sub_I_Print_cpp"] = asm["__GLOBAL__sub_I_Print_cpp"];
var _emscripten_bind_WasmPrinter_printModule_1 = Module["_emscripten_bind_WasmPrinter_printModule_1"] = asm["_emscripten_bind_WasmPrinter_printModule_1"];
var ___divdi3 = Module["___divdi3"] = asm["___divdi3"];
var _emscripten_bind_WasmPrinter___destroy___0 = Module["_emscripten_bind_WasmPrinter___destroy___0"] = asm["_emscripten_bind_WasmPrinter___destroy___0"];
var _i64Subtract = Module["_i64Subtract"] = asm["_i64Subtract"];
var _emscripten_bind_Name___destroy___0 = Module["_emscripten_bind_Name___destroy___0"] = asm["_emscripten_bind_Name___destroy___0"];
var ___udivmoddi4 = Module["___udivmoddi4"] = asm["___udivmoddi4"];
var _emscripten_bind_Element_getChild_1 = Module["_emscripten_bind_Element_getChild_1"] = asm["_emscripten_bind_Element_getChild_1"];
var __GLOBAL__sub_I_parser_cpp = Module["__GLOBAL__sub_I_parser_cpp"] = asm["__GLOBAL__sub_I_parser_cpp"];
var _i64Add = Module["_i64Add"] = asm["_i64Add"];
var _pthread_self = Module["_pthread_self"] = asm["_pthread_self"];
var _pthread_mutex_unlock = Module["_pthread_mutex_unlock"] = asm["_pthread_mutex_unlock"];
var __GLOBAL__sub_I_MergeBlocks_cpp = Module["__GLOBAL__sub_I_MergeBlocks_cpp"] = asm["__GLOBAL__sub_I_MergeBlocks_cpp"];
var __GLOBAL__I_000101 = Module["__GLOBAL__I_000101"] = asm["__GLOBAL__I_000101"];
var ___remdi3 = Module["___remdi3"] = asm["___remdi3"];
var _llvm_cttz_i32 = Module["_llvm_cttz_i32"] = asm["_llvm_cttz_i32"];
var _emscripten_bind_LiteralList_push_back_1 = Module["_emscripten_bind_LiteralList_push_back_1"] = asm["_emscripten_bind_LiteralList_push_back_1"];
var _emscripten_bind_Module_Module_0 = Module["_emscripten_bind_Module_Module_0"] = asm["_emscripten_bind_Module_Module_0"];
var _pthread_cond_broadcast = Module["_pthread_cond_broadcast"] = asm["_pthread_cond_broadcast"];
var _emscripten_bind_SExpressionParser_get_root_0 = Module["_emscripten_bind_SExpressionParser_get_root_0"] = asm["_emscripten_bind_SExpressionParser_get_root_0"];
var ___errno_location = Module["___errno_location"] = asm["___errno_location"];
var _emscripten_bind_ShellExternalInterface___destroy___0 = Module["_emscripten_bind_ShellExternalInterface___destroy___0"] = asm["_emscripten_bind_ShellExternalInterface___destroy___0"];
var ___muldsi3 = Module["___muldsi3"] = asm["___muldsi3"];
var ___cxa_can_catch = Module["___cxa_can_catch"] = asm["___cxa_can_catch"];
var _emscripten_bind_Name_c_str_0 = Module["_emscripten_bind_Name_c_str_0"] = asm["_emscripten_bind_Name_c_str_0"];
var _free = Module["_free"] = asm["_free"];
var runPostSets = Module["runPostSets"] = asm["runPostSets"];
var _memmove = Module["_memmove"] = asm["_memmove"];
var __GLOBAL__sub_I_threads_cpp = Module["__GLOBAL__sub_I_threads_cpp"] = asm["__GLOBAL__sub_I_threads_cpp"];
var _emscripten_bind_Module___destroy___0 = Module["_emscripten_bind_Module___destroy___0"] = asm["_emscripten_bind_Module___destroy___0"];
var _emscripten_bind_Literal_getf64_0 = Module["_emscripten_bind_Literal_getf64_0"] = asm["_emscripten_bind_Literal_getf64_0"];
var _emscripten_bind_ModuleInstance_ModuleInstance_2 = Module["_emscripten_bind_ModuleInstance_ModuleInstance_2"] = asm["_emscripten_bind_ModuleInstance_ModuleInstance_2"];
var _malloc = Module["_malloc"] = asm["_malloc"];
var _emscripten_bind_Element_isStr_0 = Module["_emscripten_bind_Element_isStr_0"] = asm["_emscripten_bind_Element_isStr_0"];
var _pthread_mutex_lock = Module["_pthread_mutex_lock"] = asm["_pthread_mutex_lock"];
var _emscripten_bind_SExpressionParser_SExpressionParser_1 = Module["_emscripten_bind_SExpressionParser_SExpressionParser_1"] = asm["_emscripten_bind_SExpressionParser_SExpressionParser_1"];
var __GLOBAL__sub_I_optimizer_shared_cpp = Module["__GLOBAL__sub_I_optimizer_shared_cpp"] = asm["__GLOBAL__sub_I_optimizer_shared_cpp"];
var __GLOBAL__sub_I_RemoveUnusedNames_cpp = Module["__GLOBAL__sub_I_RemoveUnusedNames_cpp"] = asm["__GLOBAL__sub_I_RemoveUnusedNames_cpp"];
var _emscripten_bind_SExpressionWasmBuilder___destroy___0 = Module["_emscripten_bind_SExpressionWasmBuilder___destroy___0"] = asm["_emscripten_bind_SExpressionWasmBuilder___destroy___0"];
var __GLOBAL__sub_I_Vacuum_cpp = Module["__GLOBAL__sub_I_Vacuum_cpp"] = asm["__GLOBAL__sub_I_Vacuum_cpp"];
var _emscripten_bind_Element_isList_0 = Module["_emscripten_bind_Element_isList_0"] = asm["_emscripten_bind_Element_isList_0"];
var dynCall_iiiiiiii = Module["dynCall_iiiiiiii"] = asm["dynCall_iiiiiiii"];
var dynCall_iiii = Module["dynCall_iiii"] = asm["dynCall_iiii"];
var dynCall_viiiii = Module["dynCall_viiiii"] = asm["dynCall_viiiii"];
var dynCall_iiiiiid = Module["dynCall_iiiiiid"] = asm["dynCall_iiiiiid"];
var dynCall_vi = Module["dynCall_vi"] = asm["dynCall_vi"];
var dynCall_vii = Module["dynCall_vii"] = asm["dynCall_vii"];
var dynCall_iiiiiii = Module["dynCall_iiiiiii"] = asm["dynCall_iiiiiii"];
var dynCall_iiiiid = Module["dynCall_iiiiid"] = asm["dynCall_iiiiid"];
var dynCall_ii = Module["dynCall_ii"] = asm["dynCall_ii"];
var dynCall_viii = Module["dynCall_viii"] = asm["dynCall_viii"];
var dynCall_v = Module["dynCall_v"] = asm["dynCall_v"];
var dynCall_iiiiiiiii = Module["dynCall_iiiiiiiii"] = asm["dynCall_iiiiiiiii"];
var dynCall_iiiii = Module["dynCall_iiiii"] = asm["dynCall_iiiii"];
var dynCall_viiiiii = Module["dynCall_viiiiii"] = asm["dynCall_viiiiii"];
var dynCall_iii = Module["dynCall_iii"] = asm["dynCall_iii"];
var dynCall_iiiiii = Module["dynCall_iiiiii"] = asm["dynCall_iiiiii"];
var dynCall_viiii = Module["dynCall_viiii"] = asm["dynCall_viiii"];
Runtime.stackAlloc = asm["stackAlloc"];
Runtime.stackSave = asm["stackSave"];
Runtime.stackRestore = asm["stackRestore"];
Runtime.establishStackSpace = asm["establishStackSpace"];
Runtime.setTempRet0 = asm["setTempRet0"];
Runtime.getTempRet0 = asm["getTempRet0"];
function ExitStatus(status) {
 this.name = "ExitStatus";
 this.message = "Program terminated with exit(" + status + ")";
 this.status = status;
}
ExitStatus.prototype = new Error;
ExitStatus.prototype.constructor = ExitStatus;
var initialStackTop;
var preloadStartTime = null;
var calledMain = false;
dependenciesFulfilled = function runCaller() {
 if (!Module["calledRun"]) run();
 if (!Module["calledRun"]) dependenciesFulfilled = runCaller;
};
Module["callMain"] = Module.callMain = function callMain(args) {
 args = args || [];
 ensureInitRuntime();
 var argc = args.length + 1;
 function pad() {
  for (var i = 0; i < 4 - 1; i++) {
   argv.push(0);
  }
 }
 var argv = [ allocate(intArrayFromString(Module["thisProgram"]), "i8", ALLOC_NORMAL) ];
 pad();
 for (var i = 0; i < argc - 1; i = i + 1) {
  argv.push(allocate(intArrayFromString(args[i]), "i8", ALLOC_NORMAL));
  pad();
 }
 argv.push(0);
 argv = allocate(argv, "i32", ALLOC_NORMAL);
 try {
  var ret = Module["_main"](argc, argv, 0);
  exit(ret, true);
 } catch (e) {
  if (e instanceof ExitStatus) {
   return;
  } else if (e == "SimulateInfiniteLoop") {
   Module["noExitRuntime"] = true;
   return;
  } else {
   if (e && typeof e === "object" && e.stack) Module.printErr("exception thrown: " + [ e, e.stack ]);
   throw e;
  }
 } finally {
  calledMain = true;
 }
};
function run(args) {
 args = args || Module["arguments"];
 if (preloadStartTime === null) preloadStartTime = Date.now();
 if (runDependencies > 0) {
  return;
 }
 preRun();
 if (runDependencies > 0) return;
 if (Module["calledRun"]) return;
 function doRun() {
  if (Module["calledRun"]) return;
  Module["calledRun"] = true;
  if (ABORT) return;
  ensureInitRuntime();
  preMain();
  if (Module["onRuntimeInitialized"]) Module["onRuntimeInitialized"]();
  if (Module["_main"] && shouldRunNow) Module["callMain"](args);
  postRun();
 }
 if (Module["setStatus"]) {
  Module["setStatus"]("Running...");
  setTimeout((function() {
   setTimeout((function() {
    Module["setStatus"]("");
   }), 1);
   doRun();
  }), 1);
 } else {
  doRun();
 }
}
Module["run"] = Module.run = run;
function exit(status, implicit) {
 if (implicit && Module["noExitRuntime"]) {
  return;
 }
 if (Module["noExitRuntime"]) {} else {
  ABORT = true;
  EXITSTATUS = status;
  STACKTOP = initialStackTop;
  exitRuntime();
  if (Module["onExit"]) Module["onExit"](status);
 }
 if (ENVIRONMENT_IS_NODE) {
  process["exit"](status);
 } else if (ENVIRONMENT_IS_SHELL && typeof quit === "function") {
  quit(status);
 }
 throw new ExitStatus(status);
}
Module["exit"] = Module.exit = exit;
var abortDecorators = [];
function abort(what) {
 if (what !== undefined) {
  Module.print(what);
  Module.printErr(what);
  what = JSON.stringify(what);
 } else {
  what = "";
 }
 ABORT = true;
 EXITSTATUS = 1;
 var extra = "\nIf this abort() is unexpected, build with -s ASSERTIONS=1 which can give more information.";
 var output = "abort(" + what + ") at " + stackTrace() + extra;
 if (abortDecorators) {
  abortDecorators.forEach((function(decorator) {
   output = decorator(output, what);
  }));
 }
 throw output;
}
Module["abort"] = Module.abort = abort;
if (Module["preInit"]) {
 if (typeof Module["preInit"] == "function") Module["preInit"] = [ Module["preInit"] ];
 while (Module["preInit"].length > 0) {
  Module["preInit"].pop()();
 }
}
var shouldRunNow = false;
if (Module["noInitialRun"]) {
 shouldRunNow = false;
}
run();
function WrapperObject() {}
WrapperObject.prototype = Object.create(WrapperObject.prototype);
WrapperObject.prototype.constructor = WrapperObject;
WrapperObject.prototype.__class__ = WrapperObject;
WrapperObject.__cache__ = {};
Module["WrapperObject"] = WrapperObject;
function getCache(__class__) {
 return (__class__ || WrapperObject).__cache__;
}
Module["getCache"] = getCache;
function wrapPointer(ptr, __class__) {
 var cache = getCache(__class__);
 var ret = cache[ptr];
 if (ret) return ret;
 ret = Object.create((__class__ || WrapperObject).prototype);
 ret.ptr = ptr;
 return cache[ptr] = ret;
}
Module["wrapPointer"] = wrapPointer;
function castObject(obj, __class__) {
 return wrapPointer(obj.ptr, __class__);
}
Module["castObject"] = castObject;
Module["NULL"] = wrapPointer(0);
function destroy(obj) {
 if (!obj["__destroy__"]) throw "Error: Cannot destroy object. (Did you create it yourself?)";
 obj["__destroy__"]();
 delete getCache(obj.__class__)[obj.ptr];
}
Module["destroy"] = destroy;
function compare(obj1, obj2) {
 return obj1.ptr === obj2.ptr;
}
Module["compare"] = compare;
function getPointer(obj) {
 return obj.ptr;
}
Module["getPointer"] = getPointer;
function getClass(obj) {
 return obj.__class__;
}
Module["getClass"] = getClass;
var ensureCache = {
 buffer: 0,
 size: 0,
 pos: 0,
 temps: [],
 needed: 0,
 prepare: (function() {
  if (this.needed) {
   for (var i = 0; i < this.temps.length; i++) {
    Module["_free"](this.temps[i]);
   }
   this.temps.length = 0;
   Module["_free"](this.buffer);
   this.buffer = 0;
   this.size += this.needed;
   this.needed = 0;
  }
  if (!this.buffer) {
   this.size += 128;
   this.buffer = Module["_malloc"](this.size);
   assert(this.buffer);
  }
  this.pos = 0;
 }),
 alloc: (function(array, view) {
  assert(this.buffer);
  var bytes = view.BYTES_PER_ELEMENT;
  var len = array.length * bytes;
  len = len + 7 & -8;
  var ret;
  if (this.pos + len >= this.size) {
   assert(len > 0);
   this.needed += len;
   ret = Module["_malloc"](len);
   this.temps.push(ret);
  } else {
   ret = this.buffer + this.pos;
   this.pos += len;
  }
  var retShifted = ret;
  switch (bytes) {
  case 2:
   retShifted >>= 1;
   break;
  case 4:
   retShifted >>= 2;
   break;
  case 8:
   retShifted >>= 3;
   break;
  }
  for (var i = 0; i < array.length; i++) {
   view[retShifted + i] = array[i];
  }
  return ret;
 })
};
function ensureString(value) {
 if (typeof value === "string") return ensureCache.alloc(intArrayFromString(value), HEAP8);
 return value;
}
function ExternalInterface() {
 throw "cannot construct a ExternalInterface, no constructor in IDL";
}
ExternalInterface.prototype = Object.create(WrapperObject.prototype);
ExternalInterface.prototype.constructor = ExternalInterface;
ExternalInterface.prototype.__class__ = ExternalInterface;
ExternalInterface.__cache__ = {};
Module["ExternalInterface"] = ExternalInterface;
function Name(arg0) {
 ensureCache.prepare();
 if (arg0 && typeof arg0 === "object") arg0 = arg0.ptr; else arg0 = ensureString(arg0);
 this.ptr = _emscripten_bind_Name_Name_1(arg0);
 getCache(Name)[this.ptr] = this;
}
Name.prototype = Object.create(WrapperObject.prototype);
Name.prototype.constructor = Name;
Name.prototype.__class__ = Name;
Name.__cache__ = {};
Module["Name"] = Name;
Name.prototype["c_str"] = Name.prototype.c_str = (function() {
 var self = this.ptr;
 return Pointer_stringify(_emscripten_bind_Name_c_str_0(self));
});
Name.prototype["__destroy__"] = Name.prototype.__destroy__ = (function() {
 var self = this.ptr;
 _emscripten_bind_Name___destroy___0(self);
});
function Module() {
 this.ptr = _emscripten_bind_Module_Module_0();
 getCache(Module)[this.ptr] = this;
}
Module.prototype = Object.create(WrapperObject.prototype);
Module.prototype.constructor = Module;
Module.prototype.__class__ = Module;
Module.__cache__ = {};
Module["Module"] = Module;
Module.prototype["__destroy__"] = Module.prototype.__destroy__ = (function() {
 var self = this.ptr;
 _emscripten_bind_Module___destroy___0(self);
});
function Element() {
 throw "cannot construct a Element, no constructor in IDL";
}
Element.prototype = Object.create(WrapperObject.prototype);
Element.prototype.constructor = Element;
Element.prototype.__class__ = Element;
Element.__cache__ = {};
Module["Element"] = Element;
Element.prototype["isList"] = Element.prototype.isList = (function() {
 var self = this.ptr;
 return !!_emscripten_bind_Element_isList_0(self);
});
Element.prototype["isStr"] = Element.prototype.isStr = (function() {
 var self = this.ptr;
 return !!_emscripten_bind_Element_isStr_0(self);
});
Element.prototype["dump"] = Element.prototype.dump = (function() {
 var self = this.ptr;
 _emscripten_bind_Element_dump_0(self);
});
Element.prototype["getChild"] = Element.prototype.getChild = (function(arg0) {
 var self = this.ptr;
 if (arg0 && typeof arg0 === "object") arg0 = arg0.ptr;
 return wrapPointer(_emscripten_bind_Element_getChild_1(self, arg0), Element);
});
Element.prototype["size"] = Element.prototype.size = (function() {
 var self = this.ptr;
 return _emscripten_bind_Element_size_0(self);
});
Element.prototype["c_str"] = Element.prototype.c_str = (function() {
 var self = this.ptr;
 return Pointer_stringify(_emscripten_bind_Element_c_str_0(self));
});
Element.prototype["__destroy__"] = Element.prototype.__destroy__ = (function() {
 var self = this.ptr;
 _emscripten_bind_Element___destroy___0(self);
});
function SExpressionParser(arg0) {
 ensureCache.prepare();
 if (arg0 && typeof arg0 === "object") arg0 = arg0.ptr; else arg0 = ensureString(arg0);
 this.ptr = _emscripten_bind_SExpressionParser_SExpressionParser_1(arg0);
 getCache(SExpressionParser)[this.ptr] = this;
}
SExpressionParser.prototype = Object.create(WrapperObject.prototype);
SExpressionParser.prototype.constructor = SExpressionParser;
SExpressionParser.prototype.__class__ = SExpressionParser;
SExpressionParser.__cache__ = {};
Module["SExpressionParser"] = SExpressionParser;
SExpressionParser.prototype["get_root"] = SExpressionParser.prototype.get_root = (function() {
 var self = this.ptr;
 return wrapPointer(_emscripten_bind_SExpressionParser_get_root_0(self), Element);
});
SExpressionParser.prototype["set_root"] = SExpressionParser.prototype.set_root = (function(arg0) {
 var self = this.ptr;
 if (arg0 && typeof arg0 === "object") arg0 = arg0.ptr;
 _emscripten_bind_SExpressionParser_set_root_1(self, arg0);
});
SExpressionParser.prototype["__destroy__"] = SExpressionParser.prototype.__destroy__ = (function() {
 var self = this.ptr;
 _emscripten_bind_SExpressionParser___destroy___0(self);
});
function Literal(arg0) {
 if (arg0 && typeof arg0 === "object") arg0 = arg0.ptr;
 this.ptr = _emscripten_bind_Literal_Literal_1(arg0);
 getCache(Literal)[this.ptr] = this;
}
Literal.prototype = Object.create(WrapperObject.prototype);
Literal.prototype.constructor = Literal;
Literal.prototype.__class__ = Literal;
Literal.__cache__ = {};
Module["Literal"] = Literal;
Literal.prototype["getf64"] = Literal.prototype.getf64 = (function() {
 var self = this.ptr;
 return _emscripten_bind_Literal_getf64_0(self);
});
Literal.prototype["__destroy__"] = Literal.prototype.__destroy__ = (function() {
 var self = this.ptr;
 _emscripten_bind_Literal___destroy___0(self);
});
function SExpressionWasmBuilder(arg0, arg1) {
 if (arg0 && typeof arg0 === "object") arg0 = arg0.ptr;
 if (arg1 && typeof arg1 === "object") arg1 = arg1.ptr;
 this.ptr = _emscripten_bind_SExpressionWasmBuilder_SExpressionWasmBuilder_2(arg0, arg1);
 getCache(SExpressionWasmBuilder)[this.ptr] = this;
}
SExpressionWasmBuilder.prototype = Object.create(WrapperObject.prototype);
SExpressionWasmBuilder.prototype.constructor = SExpressionWasmBuilder;
SExpressionWasmBuilder.prototype.__class__ = SExpressionWasmBuilder;
SExpressionWasmBuilder.__cache__ = {};
Module["SExpressionWasmBuilder"] = SExpressionWasmBuilder;
SExpressionWasmBuilder.prototype["__destroy__"] = SExpressionWasmBuilder.prototype.__destroy__ = (function() {
 var self = this.ptr;
 _emscripten_bind_SExpressionWasmBuilder___destroy___0(self);
});
function LiteralList() {
 this.ptr = _emscripten_bind_LiteralList_LiteralList_0();
 getCache(LiteralList)[this.ptr] = this;
}
LiteralList.prototype = Object.create(WrapperObject.prototype);
LiteralList.prototype.constructor = LiteralList;
LiteralList.prototype.__class__ = LiteralList;
LiteralList.__cache__ = {};
Module["LiteralList"] = LiteralList;
LiteralList.prototype["push_back"] = LiteralList.prototype.push_back = (function(arg0) {
 var self = this.ptr;
 if (arg0 && typeof arg0 === "object") arg0 = arg0.ptr;
 _emscripten_bind_LiteralList_push_back_1(self, arg0);
});
LiteralList.prototype["__destroy__"] = LiteralList.prototype.__destroy__ = (function() {
 var self = this.ptr;
 _emscripten_bind_LiteralList___destroy___0(self);
});
function WasmPrinter() {
 throw "cannot construct a WasmPrinter, no constructor in IDL";
}
WasmPrinter.prototype = Object.create(WrapperObject.prototype);
WasmPrinter.prototype.constructor = WasmPrinter;
WasmPrinter.prototype.__class__ = WasmPrinter;
WasmPrinter.__cache__ = {};
Module["WasmPrinter"] = WasmPrinter;
WasmPrinter.prototype["printModule"] = WasmPrinter.prototype.printModule = (function(arg0) {
 var self = this.ptr;
 if (arg0 && typeof arg0 === "object") arg0 = arg0.ptr;
 _emscripten_bind_WasmPrinter_printModule_1(self, arg0);
});
WasmPrinter.prototype["__destroy__"] = WasmPrinter.prototype.__destroy__ = (function() {
 var self = this.ptr;
 _emscripten_bind_WasmPrinter___destroy___0(self);
});
function ShellExternalInterface() {
 this.ptr = _emscripten_bind_ShellExternalInterface_ShellExternalInterface_0();
 getCache(ShellExternalInterface)[this.ptr] = this;
}
ShellExternalInterface.prototype = Object.create(ExternalInterface.prototype);
ShellExternalInterface.prototype.constructor = ShellExternalInterface;
ShellExternalInterface.prototype.__class__ = ShellExternalInterface;
ShellExternalInterface.__cache__ = {};
Module["ShellExternalInterface"] = ShellExternalInterface;
ShellExternalInterface.prototype["__destroy__"] = ShellExternalInterface.prototype.__destroy__ = (function() {
 var self = this.ptr;
 _emscripten_bind_ShellExternalInterface___destroy___0(self);
});
function VoidPtr() {
 throw "cannot construct a VoidPtr, no constructor in IDL";
}
VoidPtr.prototype = Object.create(WrapperObject.prototype);
VoidPtr.prototype.constructor = VoidPtr;
VoidPtr.prototype.__class__ = VoidPtr;
VoidPtr.__cache__ = {};
Module["VoidPtr"] = VoidPtr;
VoidPtr.prototype["__destroy__"] = VoidPtr.prototype.__destroy__ = (function() {
 var self = this.ptr;
 _emscripten_bind_VoidPtr___destroy___0(self);
});
function ModuleInstance(arg0, arg1) {
 if (arg0 && typeof arg0 === "object") arg0 = arg0.ptr;
 if (arg1 && typeof arg1 === "object") arg1 = arg1.ptr;
 this.ptr = _emscripten_bind_ModuleInstance_ModuleInstance_2(arg0, arg1);
 getCache(ModuleInstance)[this.ptr] = this;
}
ModuleInstance.prototype = Object.create(WrapperObject.prototype);
ModuleInstance.prototype.constructor = ModuleInstance;
ModuleInstance.prototype.__class__ = ModuleInstance;
ModuleInstance.__cache__ = {};
Module["ModuleInstance"] = ModuleInstance;
ModuleInstance.prototype["callExport"] = ModuleInstance.prototype.callExport = (function(arg0, arg1) {
 var self = this.ptr;
 if (arg0 && typeof arg0 === "object") arg0 = arg0.ptr;
 if (arg1 && typeof arg1 === "object") arg1 = arg1.ptr;
 return wrapPointer(_emscripten_bind_ModuleInstance_callExport_2(self, arg0, arg1), Literal);
});
ModuleInstance.prototype["__destroy__"] = ModuleInstance.prototype.__destroy__ = (function() {
 var self = this.ptr;
 _emscripten_bind_ModuleInstance___destroy___0(self);
});
((function() {
 function setupEnums() {}
 if (Module["calledRun"]) setupEnums(); else addOnPreMain(setupEnums);
}))();





  return Module;
};
