Created
October 1, 2020 12:08
-
-
Save sc39IsADev/f0b2f3049f0349cb6a9129dc975dabf9 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
donut.js - donut.c for Node.js | |
Port/Compile Made by sc39 | |
Original by a1k0n | |
*/ | |
// The Module object: Our interface to the outside world. We import | |
// and export values on it. There are various ways Module can be used: | |
// 1. Not defined. We create it here | |
// 2. A function parameter, function(Module) { ..generated code.. } | |
// 3. pre-run appended it, var Module = {}; ..generated code.. | |
// 4. External script tag defines var Module. | |
// We need to check if Module already exists (e.g. case 3 above). | |
// Substitution will be replaced with actual code on later stage of the build, | |
// this way Closure Compiler will not mangle it (e.g. case 4. above). | |
// Note that if you want to run closure, and also to use Module | |
// after the generated code, you will need to define var Module = {}; | |
// before the code. Then that object will be used in the code, and you | |
// can continue to use Module afterwards as well. | |
var Module = typeof Module !== 'undefined' ? Module : {}; | |
// --pre-jses are emitted after the Module integration code, so that they can | |
// refer to Module (if they choose; they can also define Module) | |
// {{PRE_JSES}} | |
// Sometimes an existing Module object exists with properties | |
// meant to overwrite the default module functionality. Here | |
// we collect those properties and reapply _after_ we configure | |
// the current environment's defaults to avoid having to be so | |
// defensive during initialization. | |
var moduleOverrides = {}; | |
var key; | |
for (key in Module) { | |
if (Module.hasOwnProperty(key)) { | |
moduleOverrides[key] = Module[key]; | |
} | |
} | |
var arguments_ = []; | |
var thisProgram = './this.program'; | |
var quit_ = function(status, toThrow) { | |
throw toThrow; | |
}; | |
// Determine the runtime environment we are in. You can customize this by | |
// setting the ENVIRONMENT setting at compile time (see settings.js). | |
var ENVIRONMENT_IS_WEB = false; | |
var ENVIRONMENT_IS_WORKER = false; | |
var ENVIRONMENT_IS_NODE = false; | |
var ENVIRONMENT_IS_SHELL = false; | |
ENVIRONMENT_IS_WEB = typeof window === 'object'; | |
ENVIRONMENT_IS_WORKER = typeof importScripts === 'function'; | |
// N.b. Electron.js environment is simultaneously a NODE-environment, but | |
// also a web environment. | |
ENVIRONMENT_IS_NODE = typeof process === 'object' && typeof process.versions === 'object' && typeof process.versions.node === 'string'; | |
ENVIRONMENT_IS_SHELL = !ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_NODE && !ENVIRONMENT_IS_WORKER; | |
if (Module['ENVIRONMENT']) { | |
throw new Error('Module.ENVIRONMENT has been deprecated. To force the environment, use the ENVIRONMENT compile-time option (for example, -s ENVIRONMENT=web or -s ENVIRONMENT=node)'); | |
} | |
// `/` should be present at the end if `scriptDirectory` is not empty | |
var scriptDirectory = ''; | |
function locateFile(path) { | |
if (Module['locateFile']) { | |
return Module['locateFile'](path, scriptDirectory); | |
} | |
return scriptDirectory + path; | |
} | |
// Hooks that are implemented differently in different runtime environments. | |
var read_, | |
readAsync, | |
readBinary, | |
setWindowTitle; | |
var nodeFS; | |
var nodePath; | |
if (ENVIRONMENT_IS_NODE) { | |
if (ENVIRONMENT_IS_WORKER) { | |
scriptDirectory = require('path').dirname(scriptDirectory) + '/'; | |
} else { | |
scriptDirectory = __dirname + '/'; | |
} | |
read_ = function shell_read(filename, binary) { | |
var ret = tryParseAsDataURI(filename); | |
if (ret) { | |
return binary ? ret : ret.toString(); | |
} | |
if (!nodeFS) nodeFS = require('fs'); | |
if (!nodePath) nodePath = require('path'); | |
filename = nodePath['normalize'](filename); | |
return nodeFS['readFileSync'](filename, binary ? null : 'utf8'); | |
}; | |
readBinary = function readBinary(filename) { | |
var ret = read_(filename, true); | |
if (!ret.buffer) { | |
ret = new Uint8Array(ret); | |
} | |
assert(ret.buffer); | |
return ret; | |
}; | |
if (process['argv'].length > 1) { | |
thisProgram = process['argv'][1].replace(/\\/g, '/'); | |
} | |
arguments_ = process['argv'].slice(2); | |
if (typeof module !== 'undefined') { | |
module['exports'] = Module; | |
} | |
process['on']('uncaughtException', function(ex) { | |
// suppress ExitStatus exceptions from showing an error | |
if (!(ex instanceof ExitStatus)) { | |
throw ex; | |
} | |
}); | |
process['on']('unhandledRejection', abort); | |
quit_ = function(status) { | |
process['exit'](status); | |
}; | |
Module['inspect'] = function () { return '[Emscripten Module object]'; }; | |
} else | |
if (ENVIRONMENT_IS_SHELL) { | |
if (typeof read != 'undefined') { | |
read_ = function shell_read(f) { | |
var data = tryParseAsDataURI(f); | |
if (data) { | |
return intArrayToString(data); | |
} | |
return read(f); | |
}; | |
} | |
readBinary = function readBinary(f) { | |
var data; | |
data = tryParseAsDataURI(f); | |
if (data) { | |
return data; | |
} | |
if (typeof readbuffer === 'function') { | |
return new Uint8Array(readbuffer(f)); | |
} | |
data = read(f, 'binary'); | |
assert(typeof data === 'object'); | |
return data; | |
}; | |
if (typeof scriptArgs != 'undefined') { | |
arguments_ = scriptArgs; | |
} else if (typeof arguments != 'undefined') { | |
arguments_ = arguments; | |
} | |
if (typeof quit === 'function') { | |
quit_ = function(status) { | |
quit(status); | |
}; | |
} | |
if (typeof print !== 'undefined') { | |
// Prefer to use print/printErr where they exist, as they usually work better. | |
if (typeof console === 'undefined') console = /** @type{!Console} */({}); | |
console.log = /** @type{!function(this:Console, ...*): undefined} */ (print); | |
console.warn = console.error = /** @type{!function(this:Console, ...*): undefined} */ (typeof printErr !== 'undefined' ? printErr : print); | |
} | |
} else | |
// Note that this includes Node.js workers when relevant (pthreads is enabled). | |
// Node.js workers are detected as a combination of ENVIRONMENT_IS_WORKER and | |
// ENVIRONMENT_IS_NODE. | |
if (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) { | |
if (ENVIRONMENT_IS_WORKER) { // Check worker, not web, since window could be polyfilled | |
scriptDirectory = self.location.href; | |
} else if (document.currentScript) { // web | |
scriptDirectory = document.currentScript.src; | |
} | |
// blob urls look like blob:http://site.com/etc/etc and we cannot infer anything from them. | |
// otherwise, slice off the final part of the url to find the script directory. | |
// if scriptDirectory does not contain a slash, lastIndexOf will return -1, | |
// and scriptDirectory will correctly be replaced with an empty string. | |
if (scriptDirectory.indexOf('blob:') !== 0) { | |
scriptDirectory = scriptDirectory.substr(0, scriptDirectory.lastIndexOf('/')+1); | |
} else { | |
scriptDirectory = ''; | |
} | |
// Differentiate the Web Worker from the Node Worker case, as reading must | |
// be done differently. | |
{ | |
read_ = function shell_read(url) { | |
try { | |
var xhr = new XMLHttpRequest(); | |
xhr.open('GET', url, false); | |
xhr.send(null); | |
return xhr.responseText; | |
} catch (err) { | |
var data = tryParseAsDataURI(url); | |
if (data) { | |
return intArrayToString(data); | |
} | |
throw err; | |
} | |
}; | |
if (ENVIRONMENT_IS_WORKER) { | |
readBinary = function readBinary(url) { | |
try { | |
var xhr = new XMLHttpRequest(); | |
xhr.open('GET', url, false); | |
xhr.responseType = 'arraybuffer'; | |
xhr.send(null); | |
return new Uint8Array(/** @type{!ArrayBuffer} */(xhr.response)); | |
} catch (err) { | |
var data = tryParseAsDataURI(url); | |
if (data) { | |
return data; | |
} | |
throw err; | |
} | |
}; | |
} | |
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)) { // file URLs can return 0 | |
onload(xhr.response); | |
return; | |
} | |
var data = tryParseAsDataURI(url); | |
if (data) { | |
onload(data.buffer); | |
return; | |
} | |
onerror(); | |
}; | |
xhr.onerror = onerror; | |
xhr.send(null); | |
}; | |
} | |
setWindowTitle = function(title) { document.title = title }; | |
} else | |
{ | |
throw new Error('environment detection error'); | |
} | |
// Set up the out() and err() hooks, which are how we can print to stdout or | |
// stderr, respectively. | |
var out = Module['print'] || console.log.bind(console); | |
var err = Module['printErr'] || console.warn.bind(console); | |
// Merge back in the overrides | |
for (key in moduleOverrides) { | |
if (moduleOverrides.hasOwnProperty(key)) { | |
Module[key] = moduleOverrides[key]; | |
} | |
} | |
// Free the object hierarchy contained in the overrides, this lets the GC | |
// reclaim data used e.g. in memoryInitializerRequest, which is a large typed array. | |
moduleOverrides = null; | |
// Emit code to handle expected values on the Module object. This applies Module.x | |
// to the proper local x. This has two benefits: first, we only emit it if it is | |
// expected to arrive, and second, by using a local everywhere else that can be | |
// minified. | |
if (Module['arguments']) arguments_ = Module['arguments'];if (!Object.getOwnPropertyDescriptor(Module, 'arguments')) Object.defineProperty(Module, 'arguments', { configurable: true, get: function() { abort('Module.arguments has been replaced with plain arguments_ (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)') } }); | |
if (Module['thisProgram']) thisProgram = Module['thisProgram'];if (!Object.getOwnPropertyDescriptor(Module, 'thisProgram')) Object.defineProperty(Module, 'thisProgram', { configurable: true, get: function() { abort('Module.thisProgram has been replaced with plain thisProgram (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)') } }); | |
if (Module['quit']) quit_ = Module['quit'];if (!Object.getOwnPropertyDescriptor(Module, 'quit')) Object.defineProperty(Module, 'quit', { configurable: true, get: function() { abort('Module.quit has been replaced with plain quit_ (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)') } }); | |
// perform assertions in shell.js after we set up out() and err(), as otherwise if an assertion fails it cannot print the message | |
// Assertions on removed incoming Module JS APIs. | |
assert(typeof Module['memoryInitializerPrefixURL'] === 'undefined', 'Module.memoryInitializerPrefixURL option was removed, use Module.locateFile instead'); | |
assert(typeof Module['pthreadMainPrefixURL'] === 'undefined', 'Module.pthreadMainPrefixURL option was removed, use Module.locateFile instead'); | |
assert(typeof Module['cdInitializerPrefixURL'] === 'undefined', 'Module.cdInitializerPrefixURL option was removed, use Module.locateFile instead'); | |
assert(typeof Module['filePackagePrefixURL'] === 'undefined', 'Module.filePackagePrefixURL option was removed, use Module.locateFile instead'); | |
assert(typeof Module['read'] === 'undefined', 'Module.read option was removed (modify read_ in JS)'); | |
assert(typeof Module['readAsync'] === 'undefined', 'Module.readAsync option was removed (modify readAsync in JS)'); | |
assert(typeof Module['readBinary'] === 'undefined', 'Module.readBinary option was removed (modify readBinary in JS)'); | |
assert(typeof Module['setWindowTitle'] === 'undefined', 'Module.setWindowTitle option was removed (modify setWindowTitle in JS)'); | |
assert(typeof Module['TOTAL_MEMORY'] === 'undefined', 'Module.TOTAL_MEMORY has been renamed Module.INITIAL_MEMORY'); | |
if (!Object.getOwnPropertyDescriptor(Module, 'read')) Object.defineProperty(Module, 'read', { configurable: true, get: function() { abort('Module.read has been replaced with plain read_ (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)') } }); | |
if (!Object.getOwnPropertyDescriptor(Module, 'readAsync')) Object.defineProperty(Module, 'readAsync', { configurable: true, get: function() { abort('Module.readAsync has been replaced with plain readAsync (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)') } }); | |
if (!Object.getOwnPropertyDescriptor(Module, 'readBinary')) Object.defineProperty(Module, 'readBinary', { configurable: true, get: function() { abort('Module.readBinary has been replaced with plain readBinary (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)') } }); | |
if (!Object.getOwnPropertyDescriptor(Module, 'setWindowTitle')) Object.defineProperty(Module, 'setWindowTitle', { configurable: true, get: function() { abort('Module.setWindowTitle has been replaced with plain setWindowTitle (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)') } }); | |
var IDBFS = 'IDBFS is no longer included by default; build with -lidbfs.js'; | |
var PROXYFS = 'PROXYFS is no longer included by default; build with -lproxyfs.js'; | |
var WORKERFS = 'WORKERFS is no longer included by default; build with -lworkerfs.js'; | |
var NODEFS = 'NODEFS is no longer included by default; build with -lnodefs.js'; | |
// {{PREAMBLE_ADDITIONS}} | |
var STACK_ALIGN = 16; | |
function dynamicAlloc(size) { | |
assert(DYNAMICTOP_PTR); | |
var ret = HEAP32[DYNAMICTOP_PTR>>2]; | |
var end = (ret + size + 15) & -16; | |
assert(end <= HEAP8.length, 'failure to dynamicAlloc - memory growth etc. is not supported there, call malloc/sbrk directly'); | |
HEAP32[DYNAMICTOP_PTR>>2] = end; | |
return ret; | |
} | |
function alignMemory(size, factor) { | |
if (!factor) factor = STACK_ALIGN; // stack alignment (16-byte) by default | |
return Math.ceil(size / factor) * factor; | |
} | |
function getNativeTypeSize(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 4; // A pointer | |
} else if (type[0] === 'i') { | |
var bits = Number(type.substr(1)); | |
assert(bits % 8 === 0, 'getNativeTypeSize invalid bits ' + bits + ', type ' + type); | |
return bits / 8; | |
} else { | |
return 0; | |
} | |
} | |
} | |
} | |
function warnOnce(text) { | |
if (!warnOnce.shown) warnOnce.shown = {}; | |
if (!warnOnce.shown[text]) { | |
warnOnce.shown[text] = 1; | |
err(text); | |
} | |
} | |
// Wraps a JS function as a wasm function with a given signature. | |
function convertJsFunctionToWasm(func, sig) { | |
return func; | |
} | |
var freeTableIndexes = []; | |
// Weak map of functions in the table to their indexes, created on first use. | |
var functionsInTableMap; | |
// Add a wasm function to the table. | |
function addFunctionWasm(func, sig) { | |
var table = wasmTable; | |
// Check if the function is already in the table, to ensure each function | |
// gets a unique index. First, create the map if this is the first use. | |
if (!functionsInTableMap) { | |
functionsInTableMap = new WeakMap(); | |
for (var i = 0; i < table.length; i++) { | |
var item = table.get(i); | |
// Ignore null values. | |
if (item) { | |
functionsInTableMap.set(item, i); | |
} | |
} | |
} | |
if (functionsInTableMap.has(func)) { | |
return functionsInTableMap.get(func); | |
} | |
// It's not in the table, add it now. | |
var ret; | |
// Reuse a free index if there is one, otherwise grow. | |
if (freeTableIndexes.length) { | |
ret = freeTableIndexes.pop(); | |
} else { | |
ret = table.length; | |
// Grow the table | |
try { | |
table.grow(1); | |
} catch (err) { | |
if (!(err instanceof RangeError)) { | |
throw err; | |
} | |
throw 'Unable to grow wasm table. Set ALLOW_TABLE_GROWTH.'; | |
} | |
} | |
// Set the new value. | |
try { | |
// Attempting to call this with JS function will cause of table.set() to fail | |
table.set(ret, func); | |
} catch (err) { | |
if (!(err instanceof TypeError)) { | |
throw err; | |
} | |
assert(typeof sig !== 'undefined', 'Missing signature argument to addFunction'); | |
var wrapped = convertJsFunctionToWasm(func, sig); | |
table.set(ret, wrapped); | |
} | |
functionsInTableMap.set(func, ret); | |
return ret; | |
} | |
function removeFunctionWasm(index) { | |
functionsInTableMap.delete(wasmTable.get(index)); | |
freeTableIndexes.push(index); | |
} | |
// 'sig' parameter is required for the llvm backend but only when func is not | |
// already a WebAssembly function. | |
function addFunction(func, sig) { | |
assert(typeof func !== 'undefined'); | |
return addFunctionWasm(func, sig); | |
} | |
function removeFunction(index) { | |
removeFunctionWasm(index); | |
} | |
var funcWrappers = {}; | |
function getFuncWrapper(func, sig) { | |
if (!func) return; // on null pointer, return undefined | |
assert(sig); | |
if (!funcWrappers[sig]) { | |
funcWrappers[sig] = {}; | |
} | |
var sigCache = funcWrappers[sig]; | |
if (!sigCache[func]) { | |
// optimize away arguments usage in common cases | |
if (sig.length === 1) { | |
sigCache[func] = function dynCall_wrapper() { | |
return dynCall(sig, func); | |
}; | |
} else if (sig.length === 2) { | |
sigCache[func] = function dynCall_wrapper(arg) { | |
return dynCall(sig, func, [arg]); | |
}; | |
} else { | |
// general case | |
sigCache[func] = function dynCall_wrapper() { | |
return dynCall(sig, func, Array.prototype.slice.call(arguments)); | |
}; | |
} | |
} | |
return sigCache[func]; | |
} | |
function makeBigInt(low, high, unsigned) { | |
return unsigned ? ((+((low>>>0)))+((+((high>>>0)))*4294967296.0)) : ((+((low>>>0)))+((+((high|0)))*4294967296.0)); | |
} | |
/** @param {Array=} args */ | |
function dynCall(sig, ptr, args) { | |
if (args && args.length) { | |
// j (64-bit integer) must be passed in as two numbers [low 32, high 32]. | |
assert(args.length === sig.substring(1).replace(/j/g, '--').length); | |
assert(('dynCall_' + sig) in Module, 'bad function pointer type - no table for sig \'' + sig + '\''); | |
return Module['dynCall_' + sig].apply(null, [ptr].concat(args)); | |
} else { | |
assert(sig.length == 1); | |
assert(('dynCall_' + sig) in Module, 'bad function pointer type - no table for sig \'' + sig + '\''); | |
return Module['dynCall_' + sig].call(null, ptr); | |
} | |
} | |
var tempRet0 = 0; | |
var setTempRet0 = function(value) { | |
tempRet0 = value; | |
}; | |
var getTempRet0 = function() { | |
return tempRet0; | |
}; | |
function getCompilerSetting(name) { | |
throw 'You must build with -s RETAIN_COMPILER_SETTINGS=1 for getCompilerSetting or emscripten_get_compiler_setting to work'; | |
} | |
// The address globals begin at. Very low in memory, for code size and optimization opportunities. | |
// Above 0 is static memory, starting with globals. | |
// Then the stack. | |
// Then 'dynamic' memory for sbrk. | |
var GLOBAL_BASE = 1024; | |
// === Preamble library stuff === | |
// Documentation for the public APIs defined in this file must be updated in: | |
// site/source/docs/api_reference/preamble.js.rst | |
// A prebuilt local version of the documentation is available at: | |
// site/build/text/docs/api_reference/preamble.js.txt | |
// You can also build docs locally as HTML or other formats in site/ | |
// An online HTML version (which may be of a different version of Emscripten) | |
// is up at http://kripken.github.io/emscripten-site/docs/api_reference/preamble.js.html | |
var wasmBinary;if (Module['wasmBinary']) wasmBinary = Module['wasmBinary'];if (!Object.getOwnPropertyDescriptor(Module, 'wasmBinary')) Object.defineProperty(Module, 'wasmBinary', { configurable: true, get: function() { abort('Module.wasmBinary has been replaced with plain wasmBinary (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)') } }); | |
var noExitRuntime;if (Module['noExitRuntime']) noExitRuntime = Module['noExitRuntime'];if (!Object.getOwnPropertyDescriptor(Module, 'noExitRuntime')) Object.defineProperty(Module, 'noExitRuntime', { configurable: true, get: function() { abort('Module.noExitRuntime has been replaced with plain noExitRuntime (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)') } }); | |
// wasm2js.js - enough of a polyfill for the WebAssembly object so that we can load | |
// wasm2js code that way. | |
// Emit "var WebAssembly" if definitely using wasm2js. Otherwise, in MAYBE_WASM2JS | |
// mode, we can't use a "var" since it would prevent normal wasm from working. | |
/** @suppress{const} */ | |
var | |
WebAssembly = { | |
Memory: /** @constructor */ function(opts) { | |
return { | |
buffer: new ArrayBuffer(opts['initial'] * 65536), | |
grow: function(amount) { | |
var oldBuffer = this.buffer; | |
var ret = __growWasmMemory(amount); | |
assert(this.buffer !== oldBuffer); // the call should have updated us | |
return ret; | |
} | |
}; | |
}, | |
Table: function(opts) { | |
var ret = new Array(opts['initial']); | |
ret.grow = function(by) { | |
if (ret.length >= 6 + 0) { | |
abort('Unable to grow wasm table. Use a higher value for RESERVED_FUNCTION_POINTERS or set ALLOW_TABLE_GROWTH.') | |
} | |
ret.push(null); | |
}; | |
ret.set = function(i, func) { | |
ret[i] = func; | |
}; | |
ret.get = function(i) { | |
return ret[i]; | |
}; | |
return ret; | |
}, | |
Module: function(binary) { | |
// TODO: use the binary and info somehow - right now the wasm2js output is embedded in | |
// the main JS | |
return {}; | |
}, | |
Instance: function(module, info) { | |
// TODO: use the module and info somehow - right now the wasm2js output is embedded in | |
// the main JS | |
// This will be replaced by the actual wasm2js code. | |
var exports = ( | |
function instantiate(asmLibraryArg, wasmMemory, wasmTable) { | |
var scratchBuffer = new ArrayBuffer(8); | |
var i32ScratchView = new Int32Array(scratchBuffer); | |
var f32ScratchView = new Float32Array(scratchBuffer); | |
var f64ScratchView = new Float64Array(scratchBuffer); | |
function wasm2js_scratch_load_i32(index) { | |
return i32ScratchView[index]; | |
} | |
function wasm2js_scratch_store_i32(index, value) { | |
i32ScratchView[index] = value; | |
} | |
function wasm2js_scratch_load_f64() { | |
return f64ScratchView[0]; | |
} | |
function wasm2js_scratch_store_f64(value) { | |
f64ScratchView[0] = value; | |
} | |
function legalimport$wasm2js_scratch_store_i64(low, high) { | |
i32ScratchView[0] = low; | |
i32ScratchView[1] = high; | |
} | |
function asmFunc(global, env, buffer) { | |
var memory = env.memory; | |
var FUNCTION_TABLE = wasmTable; | |
var HEAP8 = new global.Int8Array(buffer); | |
var HEAP16 = new global.Int16Array(buffer); | |
var HEAP32 = new global.Int32Array(buffer); | |
var HEAPU8 = new global.Uint8Array(buffer); | |
var HEAPU16 = new global.Uint16Array(buffer); | |
var HEAPU32 = new global.Uint32Array(buffer); | |
var HEAPF32 = new global.Float32Array(buffer); | |
var HEAPF64 = new global.Float64Array(buffer); | |
var Math_imul = global.Math.imul; | |
var Math_fround = global.Math.fround; | |
var Math_abs = global.Math.abs; | |
var Math_clz32 = global.Math.clz32; | |
var Math_min = global.Math.min; | |
var Math_max = global.Math.max; | |
var Math_floor = global.Math.floor; | |
var Math_ceil = global.Math.ceil; | |
var Math_sqrt = global.Math.sqrt; | |
var abort = env.abort; | |
var nan = global.NaN; | |
var infinity = global.Infinity; | |
var fimport$0 = env.fd_write; | |
var fimport$1 = env.emscripten_memcpy_big; | |
var fimport$2 = env.emscripten_resize_heap; | |
var fimport$3 = env.__handle_stack_overflow; | |
var fimport$4 = env.setTempRet0; | |
var global$0 = 5249504; | |
var global$1 = 6456; | |
var global$2 = 0; | |
var i64toi32_i32$HIGH_BITS = 0; | |
// EMSCRIPTEN_START_FUNCS | |
; | |
function $0() { | |
return 6464 | 0; | |
} | |
function $1() { | |
} | |
function $2() { | |
var $2_1 = 0, $3_1 = 0, $138 = Math_fround(0), $201 = Math_fround(0), $28_1 = 0, $216 = Math_fround(0), $34_1 = 0, $246 = Math_fround(0), $45_1 = 0, $100 = 0, $128 = 0, $131 = 0, $137 = 0, $24_1 = 0, $143 = Math_fround(0), $144 = Math_fround(0), $145 = Math_fround(0); | |
$2_1 = global$0 - 8896 | 0; | |
label$1 : { | |
$137 = $2_1; | |
if ($2_1 >>> 0 < global$2 >>> 0) { | |
fimport$3() | |
} | |
global$0 = $137; | |
} | |
$3_1 = 0; | |
$138 = Math_fround($3_1 | 0); | |
HEAP32[($2_1 + 8892 | 0) >> 2] = $3_1; | |
HEAPF32[($2_1 + 8888 | 0) >> 2] = $138; | |
HEAPF32[($2_1 + 8884 | 0) >> 2] = $138; | |
$51(1024 | 0, 0 | 0) | 0; | |
label$3 : while (1) { | |
$19($2_1 + 64 | 0 | 0, 32 | 0, 1760 | 0) | 0; | |
$19($2_1 + 1824 | 0 | 0, 0 | 0, 7040 | 0) | 0; | |
HEAPF32[($2_1 + 8876 | 0) >> 2] = Math_fround(0 | 0); | |
label$4 : { | |
label$5 : while (1) { | |
if (!(+Math_fround(HEAPF32[($2_1 + 8876 | 0) >> 2]) < 6.28 & 1 | 0)) { | |
break label$4 | |
} | |
HEAPF32[($2_1 + 8880 | 0) >> 2] = Math_fround(0 | 0); | |
label$6 : { | |
label$7 : while (1) { | |
if (!(+Math_fround(HEAPF32[($2_1 + 8880 | 0) >> 2]) < 6.28 & 1 | 0)) { | |
break label$6 | |
} | |
$24_1 = 22; | |
$143 = Math_fround(8.0); | |
$144 = Math_fround(12.0); | |
$145 = Math_fround(15.0); | |
HEAPF32[($2_1 + 60 | 0) >> 2] = Math_fround(+$17(+(+Math_fround(HEAPF32[($2_1 + 8880 | 0) >> 2])))); | |
HEAPF32[($2_1 + 56 | 0) >> 2] = Math_fround(+$16(+(+Math_fround(HEAPF32[($2_1 + 8876 | 0) >> 2])))); | |
HEAPF32[($2_1 + 52 | 0) >> 2] = Math_fround(+$17(+(+Math_fround(HEAPF32[($2_1 + 8888 | 0) >> 2])))); | |
HEAPF32[($2_1 + 48 | 0) >> 2] = Math_fround(+$17(+(+Math_fround(HEAPF32[($2_1 + 8876 | 0) >> 2])))); | |
HEAPF32[($2_1 + 44 | 0) >> 2] = Math_fround(+$16(+(+Math_fround(HEAPF32[($2_1 + 8888 | 0) >> 2])))); | |
HEAPF32[($2_1 + 40 | 0) >> 2] = Math_fround(Math_fround(HEAPF32[($2_1 + 56 | 0) >> 2]) + Math_fround(2.0)); | |
HEAPF32[($2_1 + 36 | 0) >> 2] = Math_fround(Math_fround(1.0) / Math_fround(Math_fround(Math_fround(Math_fround(Math_fround(HEAPF32[($2_1 + 60 | 0) >> 2]) * Math_fround(HEAPF32[($2_1 + 40 | 0) >> 2])) * Math_fround(HEAPF32[($2_1 + 52 | 0) >> 2])) + Math_fround(Math_fround(HEAPF32[($2_1 + 48 | 0) >> 2]) * Math_fround(HEAPF32[($2_1 + 44 | 0) >> 2]))) + Math_fround(5.0))); | |
HEAPF32[($2_1 + 32 | 0) >> 2] = Math_fround(+$16(+(+Math_fround(HEAPF32[($2_1 + 8880 | 0) >> 2])))); | |
HEAPF32[($2_1 + 28 | 0) >> 2] = Math_fround(+$16(+(+Math_fround(HEAPF32[($2_1 + 8884 | 0) >> 2])))); | |
HEAPF32[($2_1 + 24 | 0) >> 2] = Math_fround(+$17(+(+Math_fround(HEAPF32[($2_1 + 8884 | 0) >> 2])))); | |
HEAPF32[($2_1 + 20 | 0) >> 2] = Math_fround(Math_fround(Math_fround(Math_fround(HEAPF32[($2_1 + 60 | 0) >> 2]) * Math_fround(HEAPF32[($2_1 + 40 | 0) >> 2])) * Math_fround(HEAPF32[($2_1 + 44 | 0) >> 2])) - Math_fround(Math_fround(HEAPF32[($2_1 + 48 | 0) >> 2]) * Math_fround(HEAPF32[($2_1 + 52 | 0) >> 2]))); | |
$201 = Math_fround(Math_fround(40.0) + Math_fround(Math_fround(Math_fround(30.0) * Math_fround(HEAPF32[($2_1 + 36 | 0) >> 2])) * Math_fround(Math_fround(Math_fround(Math_fround(HEAPF32[($2_1 + 32 | 0) >> 2]) * Math_fround(HEAPF32[($2_1 + 40 | 0) >> 2])) * Math_fround(HEAPF32[($2_1 + 28 | 0) >> 2])) - Math_fround(Math_fround(HEAPF32[($2_1 + 20 | 0) >> 2]) * Math_fround(HEAPF32[($2_1 + 24 | 0) >> 2]))))); | |
label$8 : { | |
label$9 : { | |
if (!(Math_fround(Math_abs($201)) < Math_fround(2147483648.0))) { | |
break label$9 | |
} | |
$28_1 = ~~$201; | |
break label$8; | |
} | |
$28_1 = -2147483648; | |
} | |
HEAP32[($2_1 + 16 | 0) >> 2] = $28_1; | |
$216 = Math_fround($144 + Math_fround(Math_fround($145 * Math_fround(HEAPF32[($2_1 + 36 | 0) >> 2])) * Math_fround(Math_fround(Math_fround(Math_fround(HEAPF32[($2_1 + 32 | 0) >> 2]) * Math_fround(HEAPF32[($2_1 + 40 | 0) >> 2])) * Math_fround(HEAPF32[($2_1 + 24 | 0) >> 2])) + Math_fround(Math_fround(HEAPF32[($2_1 + 20 | 0) >> 2]) * Math_fround(HEAPF32[($2_1 + 28 | 0) >> 2]))))); | |
label$10 : { | |
label$11 : { | |
if (!(Math_fround(Math_abs($216)) < Math_fround(2147483648.0))) { | |
break label$11 | |
} | |
$34_1 = ~~$216; | |
break label$10; | |
} | |
$34_1 = -2147483648; | |
} | |
HEAP32[($2_1 + 12 | 0) >> 2] = $34_1; | |
HEAP32[($2_1 + 8 | 0) >> 2] = (HEAP32[($2_1 + 16 | 0) >> 2] | 0) + Math_imul(HEAP32[($2_1 + 12 | 0) >> 2] | 0, 80) | 0; | |
$246 = Math_fround($143 * Math_fround(Math_fround(Math_fround(Math_fround(Math_fround(Math_fround(Math_fround(HEAPF32[($2_1 + 48 | 0) >> 2]) * Math_fround(HEAPF32[($2_1 + 52 | 0) >> 2])) - Math_fround(Math_fround(Math_fround(HEAPF32[($2_1 + 60 | 0) >> 2]) * Math_fround(HEAPF32[($2_1 + 56 | 0) >> 2])) * Math_fround(HEAPF32[($2_1 + 44 | 0) >> 2]))) * Math_fround(HEAPF32[($2_1 + 28 | 0) >> 2])) - Math_fround(Math_fround(Math_fround(HEAPF32[($2_1 + 60 | 0) >> 2]) * Math_fround(HEAPF32[($2_1 + 56 | 0) >> 2])) * Math_fround(HEAPF32[($2_1 + 52 | 0) >> 2]))) - Math_fround(Math_fround(HEAPF32[($2_1 + 48 | 0) >> 2]) * Math_fround(HEAPF32[($2_1 + 44 | 0) >> 2]))) - Math_fround(Math_fround(Math_fround(HEAPF32[($2_1 + 32 | 0) >> 2]) * Math_fround(HEAPF32[($2_1 + 56 | 0) >> 2])) * Math_fround(HEAPF32[($2_1 + 24 | 0) >> 2])))); | |
label$12 : { | |
label$13 : { | |
if (!(Math_fround(Math_abs($246)) < Math_fround(2147483648.0))) { | |
break label$13 | |
} | |
$45_1 = ~~$246; | |
break label$12; | |
} | |
$45_1 = -2147483648; | |
} | |
HEAP32[($2_1 + 4 | 0) >> 2] = $45_1; | |
label$14 : { | |
if (!(($24_1 | 0) > (HEAP32[($2_1 + 12 | 0) >> 2] | 0 | 0) & 1 | 0)) { | |
break label$14 | |
} | |
if (!((HEAP32[($2_1 + 12 | 0) >> 2] | 0 | 0) > (0 | 0) & 1 | 0)) { | |
break label$14 | |
} | |
if (!((HEAP32[($2_1 + 16 | 0) >> 2] | 0 | 0) > (0 | 0) & 1 | 0)) { | |
break label$14 | |
} | |
if (!((80 | 0) > (HEAP32[($2_1 + 16 | 0) >> 2] | 0 | 0) & 1 | 0)) { | |
break label$14 | |
} | |
if (!(Math_fround(HEAPF32[($2_1 + 36 | 0) >> 2]) > Math_fround(HEAPF32[(($2_1 + 1824 | 0) + ((HEAP32[($2_1 + 8 | 0) >> 2] | 0) << 2 | 0) | 0) >> 2]) & 1 | 0)) { | |
break label$14 | |
} | |
HEAPF32[(($2_1 + 1824 | 0) + ((HEAP32[($2_1 + 8 | 0) >> 2] | 0) << 2 | 0) | 0) >> 2] = Math_fround(HEAPF32[($2_1 + 36 | 0) >> 2]); | |
label$15 : { | |
label$16 : { | |
if (!((HEAP32[($2_1 + 4 | 0) >> 2] | 0 | 0) > (0 | 0) & 1 | 0)) { | |
break label$16 | |
} | |
$100 = HEAP32[($2_1 + 4 | 0) >> 2] | 0; | |
break label$15; | |
} | |
$100 = 0; | |
} | |
HEAP8[(($2_1 + 64 | 0) + (HEAP32[($2_1 + 8 | 0) >> 2] | 0) | 0) >> 0] = HEAPU8[($100 + 1029 | 0) >> 0] | 0; | |
} | |
HEAPF32[($2_1 + 8880 | 0) >> 2] = Math_fround(+Math_fround(HEAPF32[($2_1 + 8880 | 0) >> 2]) + .02); | |
continue label$7; | |
}; | |
} | |
HEAPF32[($2_1 + 8876 | 0) >> 2] = Math_fround(+Math_fround(HEAPF32[($2_1 + 8876 | 0) >> 2]) + .07); | |
continue label$5; | |
}; | |
} | |
$51(1042 | 0, 0 | 0) | 0; | |
HEAP32[($2_1 + 8872 | 0) >> 2] = 0; | |
label$17 : { | |
label$18 : while (1) { | |
if (!((HEAP32[($2_1 + 8872 | 0) >> 2] | 0 | 0) < (1761 | 0) & 1 | 0)) { | |
break label$17 | |
} | |
label$19 : { | |
label$20 : { | |
if (!((HEAP32[($2_1 + 8872 | 0) >> 2] | 0 | 0) % (80 | 0) | 0)) { | |
break label$20 | |
} | |
$128 = 24; | |
$131 = ((HEAPU8[(($2_1 + 64 | 0) + (HEAP32[($2_1 + 8872 | 0) >> 2] | 0) | 0) >> 0] | 0) << $128 | 0) >> $128 | 0; | |
break label$19; | |
} | |
$131 = 10; | |
} | |
$5($131 | 0) | 0; | |
HEAPF32[($2_1 + 8888 | 0) >> 2] = Math_fround(+Math_fround(HEAPF32[($2_1 + 8888 | 0) >> 2]) + 4.0e-05); | |
HEAPF32[($2_1 + 8884 | 0) >> 2] = Math_fround(+Math_fround(HEAPF32[($2_1 + 8884 | 0) >> 2]) + 2.0e-05); | |
HEAP32[($2_1 + 8872 | 0) >> 2] = (HEAP32[($2_1 + 8872 | 0) >> 2] | 0) + 1 | 0; | |
continue label$18; | |
}; | |
} | |
continue label$3; | |
}; | |
} | |
function $3($0_1, $1_1) { | |
$0_1 = $0_1 | 0; | |
$1_1 = $1_1 | 0; | |
return $2() | 0 | 0; | |
} | |
function $4($0_1, $1_1) { | |
$0_1 = $0_1 | 0; | |
$1_1 = $1_1 | 0; | |
var $3_1 = 0, $2_1 = 0; | |
label$1 : { | |
label$2 : { | |
if ((HEAP32[($1_1 + 76 | 0) >> 2] | 0 | 0) < (0 | 0)) { | |
break label$2 | |
} | |
if ($52($1_1 | 0) | 0) { | |
break label$1 | |
} | |
} | |
label$3 : { | |
$2_1 = $0_1 & 255 | 0; | |
if (($2_1 | 0) == (HEAP8[($1_1 + 75 | 0) >> 0] | 0 | 0)) { | |
break label$3 | |
} | |
$3_1 = HEAP32[($1_1 + 20 | 0) >> 2] | 0; | |
if ($3_1 >>> 0 >= (HEAP32[($1_1 + 16 | 0) >> 2] | 0) >>> 0) { | |
break label$3 | |
} | |
HEAP32[($1_1 + 20 | 0) >> 2] = $3_1 + 1 | 0; | |
HEAP8[$3_1 >> 0] = $0_1; | |
return $2_1 | 0; | |
} | |
return $25($1_1 | 0, $0_1 | 0) | 0 | 0; | |
} | |
label$4 : { | |
label$5 : { | |
$2_1 = $0_1 & 255 | 0; | |
if (($2_1 | 0) == (HEAP8[($1_1 + 75 | 0) >> 0] | 0 | 0)) { | |
break label$5 | |
} | |
$3_1 = HEAP32[($1_1 + 20 | 0) >> 2] | 0; | |
if ($3_1 >>> 0 >= (HEAP32[($1_1 + 16 | 0) >> 2] | 0) >>> 0) { | |
break label$5 | |
} | |
HEAP32[($1_1 + 20 | 0) >> 2] = $3_1 + 1 | 0; | |
HEAP8[$3_1 >> 0] = $0_1; | |
break label$4; | |
} | |
$2_1 = $25($1_1 | 0, $0_1 | 0) | 0; | |
} | |
$53($1_1 | 0); | |
return $2_1 | 0; | |
} | |
function $5($0_1) { | |
$0_1 = $0_1 | 0; | |
return $4($0_1 | 0, HEAP32[(0 + 1048 | 0) >> 2] | 0 | 0) | 0 | 0; | |
} | |
function $6($0_1) { | |
$0_1 = $0_1 | 0; | |
return 0 | 0; | |
} | |
function $7($0_1, $1_1, $1$hi, $2_1) { | |
$0_1 = $0_1 | 0; | |
$1_1 = $1_1 | 0; | |
$1$hi = $1$hi | 0; | |
$2_1 = $2_1 | 0; | |
i64toi32_i32$HIGH_BITS = 0; | |
return 0 | 0; | |
} | |
function $8($0_1, $1_1, $2_1) { | |
$0_1 = $0_1 | 0; | |
$1_1 = $1_1 | 0; | |
$2_1 = $2_1 | 0; | |
var $3_1 = 0, $4_1 = 0, $5_1 = 0, $8_1 = 0, $9_1 = 0, $6_1 = 0, $7_1 = 0, $11_1 = 0, $10_1 = 0; | |
label$1 : { | |
$3_1 = global$0 - 32 | 0; | |
$10_1 = $3_1; | |
if ($3_1 >>> 0 < global$2 >>> 0) { | |
fimport$3() | |
} | |
global$0 = $10_1; | |
} | |
$4_1 = HEAP32[($0_1 + 28 | 0) >> 2] | 0; | |
HEAP32[($3_1 + 16 | 0) >> 2] = $4_1; | |
$5_1 = HEAP32[($0_1 + 20 | 0) >> 2] | 0; | |
HEAP32[($3_1 + 28 | 0) >> 2] = $2_1; | |
HEAP32[($3_1 + 24 | 0) >> 2] = $1_1; | |
$1_1 = $5_1 - $4_1 | 0; | |
HEAP32[($3_1 + 20 | 0) >> 2] = $1_1; | |
$6_1 = $1_1 + $2_1 | 0; | |
$7_1 = 2; | |
$1_1 = $3_1 + 16 | 0; | |
label$3 : { | |
label$4 : { | |
label$5 : { | |
label$6 : { | |
if ($10(fimport$0(HEAP32[($0_1 + 60 | 0) >> 2] | 0 | 0, $3_1 + 16 | 0 | 0, 2 | 0, $3_1 + 12 | 0 | 0) | 0 | 0) | 0) { | |
break label$6 | |
} | |
label$7 : while (1) { | |
$4_1 = HEAP32[($3_1 + 12 | 0) >> 2] | 0; | |
if (($6_1 | 0) == ($4_1 | 0)) { | |
break label$5 | |
} | |
if (($4_1 | 0) <= (-1 | 0)) { | |
break label$4 | |
} | |
$8_1 = HEAP32[($1_1 + 4 | 0) >> 2] | 0; | |
$5_1 = $4_1 >>> 0 > $8_1 >>> 0; | |
$9_1 = $1_1 + ($5_1 << 3 | 0) | 0; | |
$8_1 = $4_1 - ($5_1 ? $8_1 : 0) | 0; | |
HEAP32[$9_1 >> 2] = (HEAP32[$9_1 >> 2] | 0) + $8_1 | 0; | |
$9_1 = $1_1 + ($5_1 ? 12 : 4) | 0; | |
HEAP32[$9_1 >> 2] = (HEAP32[$9_1 >> 2] | 0) - $8_1 | 0; | |
$6_1 = $6_1 - $4_1 | 0; | |
$1_1 = $5_1 ? $1_1 + 8 | 0 : $1_1; | |
$7_1 = $7_1 - $5_1 | 0; | |
if (!($10(fimport$0(HEAP32[($0_1 + 60 | 0) >> 2] | 0 | 0, $1_1 | 0, $7_1 | 0, $3_1 + 12 | 0 | 0) | 0 | 0) | 0)) { | |
continue label$7 | |
} | |
break label$7; | |
}; | |
} | |
HEAP32[($3_1 + 12 | 0) >> 2] = -1; | |
if (($6_1 | 0) != (-1 | 0)) { | |
break label$4 | |
} | |
} | |
$1_1 = HEAP32[($0_1 + 44 | 0) >> 2] | 0; | |
HEAP32[($0_1 + 28 | 0) >> 2] = $1_1; | |
HEAP32[($0_1 + 20 | 0) >> 2] = $1_1; | |
HEAP32[($0_1 + 16 | 0) >> 2] = $1_1 + (HEAP32[($0_1 + 48 | 0) >> 2] | 0) | 0; | |
$4_1 = $2_1; | |
break label$3; | |
} | |
$4_1 = 0; | |
HEAP32[($0_1 + 28 | 0) >> 2] = 0; | |
HEAP32[($0_1 + 16 | 0) >> 2] = 0; | |
HEAP32[($0_1 + 20 | 0) >> 2] = 0; | |
HEAP32[$0_1 >> 2] = HEAP32[$0_1 >> 2] | 0 | 32 | 0; | |
if (($7_1 | 0) == (2 | 0)) { | |
break label$3 | |
} | |
$4_1 = $2_1 - (HEAP32[($1_1 + 4 | 0) >> 2] | 0) | 0; | |
} | |
label$8 : { | |
$11_1 = $3_1 + 32 | 0; | |
if ($11_1 >>> 0 < global$2 >>> 0) { | |
fimport$3() | |
} | |
global$0 = $11_1; | |
} | |
return $4_1 | 0; | |
} | |
function $9() { | |
return 5880 | 0; | |
} | |
function $10($0_1) { | |
$0_1 = $0_1 | 0; | |
label$1 : { | |
if ($0_1) { | |
break label$1 | |
} | |
return 0 | 0; | |
} | |
HEAP32[($9() | 0) >> 2] = $0_1; | |
return -1 | 0; | |
} | |
function $11($0_1, $1_1) { | |
$0_1 = +$0_1; | |
$1_1 = +$1_1; | |
var $2_1 = 0.0, $3_1 = 0.0, $4_1 = 0.0, $16_1 = 0.0; | |
$2_1 = $0_1 * $0_1; | |
$3_1 = $2_1 * .5; | |
$4_1 = 1.0 - $3_1; | |
$16_1 = 1.0 - $4_1 - $3_1; | |
$3_1 = $2_1 * $2_1; | |
return +($4_1 + ($16_1 + ($2_1 * ($2_1 * ($2_1 * ($2_1 * 2.480158728947673e-05 + -.001388888888887411) + .0416666666666666) + $3_1 * $3_1 * ($2_1 * ($2_1 * -1.1359647557788195e-11 + 2.087572321298175e-09) + -2.7557314351390663e-07)) - $0_1 * $1_1))); | |
} | |
function $12($0_1) { | |
$0_1 = +$0_1; | |
return +Math_floor($0_1); | |
} | |
function $13($0_1, $1_1, $2_1, $3_1, $4_1) { | |
$0_1 = $0_1 | 0; | |
$1_1 = $1_1 | 0; | |
$2_1 = $2_1 | 0; | |
$3_1 = $3_1 | 0; | |
$4_1 = $4_1 | 0; | |
var $24_1 = 0.0, $11_1 = 0, $6_1 = 0, $5_1 = 0, $25_1 = 0.0, $13_1 = 0, $14_1 = 0, $9_1 = 0, $20_1 = 0, $8_1 = 0, $10_1 = 0, $12_1 = 0, $18_1 = 0, $26_1 = 0.0, $7_1 = 0, $16_1 = 0, $19_1 = 0, i64toi32_i32$0 = 0, $22_1 = 0, $21_1 = 0, $15_1 = 0, $17_1 = 0, $213 = 0, $216 = 0, $545 = 0.0, $583 = 0.0, i64toi32_i32$1 = 0, $622 = 0; | |
label$1 : { | |
$5_1 = global$0 - 560 | 0; | |
$21_1 = $5_1; | |
if ($5_1 >>> 0 < global$2 >>> 0) { | |
fimport$3() | |
} | |
global$0 = $21_1; | |
} | |
$6_1 = ($2_1 + -3 | 0 | 0) / (24 | 0) | 0; | |
$7_1 = ($6_1 | 0) > (0 | 0) ? $6_1 : 0; | |
$8_1 = Math_imul($7_1, -24) + $2_1 | 0; | |
label$3 : { | |
$9_1 = HEAP32[(($4_1 << 2 | 0) + 1056 | 0) >> 2] | 0; | |
$10_1 = $3_1 + -1 | 0; | |
if (($9_1 + $10_1 | 0 | 0) < (0 | 0)) { | |
break label$3 | |
} | |
$11_1 = $9_1 + $3_1 | 0; | |
$2_1 = $7_1 - $10_1 | 0; | |
$6_1 = 0; | |
label$4 : while (1) { | |
label$5 : { | |
label$6 : { | |
if (($2_1 | 0) >= (0 | 0)) { | |
break label$6 | |
} | |
$24_1 = 0.0; | |
break label$5; | |
} | |
$24_1 = +(HEAP32[(($2_1 << 2 | 0) + 1072 | 0) >> 2] | 0 | 0); | |
} | |
HEAPF64[(($5_1 + 320 | 0) + ($6_1 << 3 | 0) | 0) >> 3] = $24_1; | |
$2_1 = $2_1 + 1 | 0; | |
$6_1 = $6_1 + 1 | 0; | |
if (($6_1 | 0) != ($11_1 | 0)) { | |
continue label$4 | |
} | |
break label$4; | |
}; | |
} | |
$12_1 = $8_1 + -24 | 0; | |
$11_1 = 0; | |
$13_1 = ($9_1 | 0) > (0 | 0) ? $9_1 : 0; | |
$14_1 = ($3_1 | 0) < (1 | 0); | |
label$7 : while (1) { | |
label$8 : { | |
label$9 : { | |
if (!$14_1) { | |
break label$9 | |
} | |
$24_1 = 0.0; | |
break label$8; | |
} | |
$6_1 = $11_1 + $10_1 | 0; | |
$2_1 = 0; | |
$24_1 = 0.0; | |
label$10 : while (1) { | |
$24_1 = $24_1 + +HEAPF64[($0_1 + ($2_1 << 3 | 0) | 0) >> 3] * +HEAPF64[(($5_1 + 320 | 0) + (($6_1 - $2_1 | 0) << 3 | 0) | 0) >> 3]; | |
$2_1 = $2_1 + 1 | 0; | |
if (($2_1 | 0) != ($3_1 | 0)) { | |
continue label$10 | |
} | |
break label$10; | |
}; | |
} | |
HEAPF64[($5_1 + ($11_1 << 3 | 0) | 0) >> 3] = $24_1; | |
$2_1 = ($11_1 | 0) == ($13_1 | 0); | |
$11_1 = $11_1 + 1 | 0; | |
if (!$2_1) { | |
continue label$7 | |
} | |
break label$7; | |
}; | |
$15_1 = 47 - $8_1 | 0; | |
$16_1 = 48 - $8_1 | 0; | |
$17_1 = $8_1 + -25 | 0; | |
$11_1 = $9_1; | |
label$11 : { | |
label$12 : while (1) { | |
$24_1 = +HEAPF64[($5_1 + ($11_1 << 3 | 0) | 0) >> 3]; | |
$2_1 = 0; | |
$6_1 = $11_1; | |
label$13 : { | |
$10_1 = ($11_1 | 0) < (1 | 0); | |
if ($10_1) { | |
break label$13 | |
} | |
label$14 : while (1) { | |
$13_1 = $2_1 << 2 | 0; | |
label$15 : { | |
label$16 : { | |
$25_1 = $24_1 * 5.9604644775390625e-08; | |
if (!(Math_abs($25_1) < 2147483648.0)) { | |
break label$16 | |
} | |
$14_1 = ~~$25_1; | |
break label$15; | |
} | |
$14_1 = -2147483648; | |
} | |
$13_1 = ($5_1 + 480 | 0) + $13_1 | 0; | |
label$17 : { | |
label$18 : { | |
$25_1 = +($14_1 | 0); | |
$24_1 = $24_1 + $25_1 * -16777216.0; | |
if (!(Math_abs($24_1) < 2147483648.0)) { | |
break label$18 | |
} | |
$14_1 = ~~$24_1; | |
break label$17; | |
} | |
$14_1 = -2147483648; | |
} | |
HEAP32[$13_1 >> 2] = $14_1; | |
$6_1 = $6_1 + -1 | 0; | |
$24_1 = +HEAPF64[($5_1 + ($6_1 << 3 | 0) | 0) >> 3] + $25_1; | |
$2_1 = $2_1 + 1 | 0; | |
if (($2_1 | 0) != ($11_1 | 0)) { | |
continue label$14 | |
} | |
break label$14; | |
}; | |
} | |
$24_1 = +$18(+$24_1, $12_1 | 0); | |
label$19 : { | |
label$20 : { | |
$24_1 = $24_1 + +$12(+($24_1 * .125)) * -8.0; | |
if (!(Math_abs($24_1) < 2147483648.0)) { | |
break label$20 | |
} | |
$18_1 = ~~$24_1; | |
break label$19; | |
} | |
$18_1 = -2147483648; | |
} | |
$24_1 = $24_1 - +($18_1 | 0); | |
label$21 : { | |
label$22 : { | |
label$23 : { | |
label$24 : { | |
label$25 : { | |
$19_1 = ($12_1 | 0) < (1 | 0); | |
if ($19_1) { | |
break label$25 | |
} | |
$2_1 = (($11_1 << 2 | 0) + ($5_1 + 480 | 0) | 0) + -4 | 0; | |
$213 = $2_1; | |
$2_1 = HEAP32[$2_1 >> 2] | 0; | |
$216 = $2_1; | |
$2_1 = $2_1 >> $16_1 | 0; | |
$6_1 = $216 - ($2_1 << $16_1 | 0) | 0; | |
HEAP32[$213 >> 2] = $6_1; | |
$20_1 = $6_1 >> $15_1 | 0; | |
$18_1 = $2_1 + $18_1 | 0; | |
break label$24; | |
} | |
if ($12_1) { | |
break label$23 | |
} | |
$20_1 = (HEAP32[((($11_1 << 2 | 0) + ($5_1 + 480 | 0) | 0) + -4 | 0) >> 2] | 0) >> 23 | 0; | |
} | |
if (($20_1 | 0) < (1 | 0)) { | |
break label$21 | |
} | |
break label$22; | |
} | |
$20_1 = 2; | |
if (!($24_1 >= .5 ^ 1 | 0)) { | |
break label$22 | |
} | |
$20_1 = 0; | |
break label$21; | |
} | |
$2_1 = 0; | |
$14_1 = 0; | |
label$26 : { | |
if ($10_1) { | |
break label$26 | |
} | |
label$27 : while (1) { | |
$10_1 = ($5_1 + 480 | 0) + ($2_1 << 2 | 0) | 0; | |
$6_1 = HEAP32[$10_1 >> 2] | 0; | |
$13_1 = 16777215; | |
label$28 : { | |
label$29 : { | |
if ($14_1) { | |
break label$29 | |
} | |
$13_1 = 16777216; | |
if ($6_1) { | |
break label$29 | |
} | |
$14_1 = 0; | |
break label$28; | |
} | |
HEAP32[$10_1 >> 2] = $13_1 - $6_1 | 0; | |
$14_1 = 1; | |
} | |
$2_1 = $2_1 + 1 | 0; | |
if (($2_1 | 0) != ($11_1 | 0)) { | |
continue label$27 | |
} | |
break label$27; | |
}; | |
} | |
label$30 : { | |
if ($19_1) { | |
break label$30 | |
} | |
label$31 : { | |
switch ($17_1 | 0) { | |
case 0: | |
$2_1 = (($11_1 << 2 | 0) + ($5_1 + 480 | 0) | 0) + -4 | 0; | |
HEAP32[$2_1 >> 2] = (HEAP32[$2_1 >> 2] | 0) & 8388607 | 0; | |
break label$30; | |
case 1: | |
break label$31; | |
default: | |
break label$30; | |
}; | |
} | |
$2_1 = (($11_1 << 2 | 0) + ($5_1 + 480 | 0) | 0) + -4 | 0; | |
HEAP32[$2_1 >> 2] = (HEAP32[$2_1 >> 2] | 0) & 4194303 | 0; | |
} | |
$18_1 = $18_1 + 1 | 0; | |
if (($20_1 | 0) != (2 | 0)) { | |
break label$21 | |
} | |
$24_1 = 1.0 - $24_1; | |
$20_1 = 2; | |
if (!$14_1) { | |
break label$21 | |
} | |
$24_1 = $24_1 - +$18(+(1.0), $12_1 | 0); | |
} | |
label$33 : { | |
if ($24_1 != 0.0) { | |
break label$33 | |
} | |
$6_1 = 0; | |
$2_1 = $11_1; | |
label$34 : { | |
if (($2_1 | 0) <= ($9_1 | 0)) { | |
break label$34 | |
} | |
label$35 : while (1) { | |
$2_1 = $2_1 + -1 | 0; | |
$6_1 = HEAP32[(($5_1 + 480 | 0) + ($2_1 << 2 | 0) | 0) >> 2] | 0 | $6_1 | 0; | |
if (($2_1 | 0) > ($9_1 | 0)) { | |
continue label$35 | |
} | |
break label$35; | |
}; | |
if (!$6_1) { | |
break label$34 | |
} | |
$8_1 = $12_1; | |
label$36 : while (1) { | |
$8_1 = $8_1 + -24 | 0; | |
$11_1 = $11_1 + -1 | 0; | |
if (!(HEAP32[(($5_1 + 480 | 0) + ($11_1 << 2 | 0) | 0) >> 2] | 0)) { | |
continue label$36 | |
} | |
break label$11; | |
}; | |
} | |
$2_1 = 1; | |
label$37 : while (1) { | |
$6_1 = $2_1; | |
$2_1 = $2_1 + 1 | 0; | |
if (!(HEAP32[(($5_1 + 480 | 0) + (($9_1 - $6_1 | 0) << 2 | 0) | 0) >> 2] | 0)) { | |
continue label$37 | |
} | |
break label$37; | |
}; | |
$13_1 = $6_1 + $11_1 | 0; | |
label$38 : while (1) { | |
$6_1 = $11_1 + $3_1 | 0; | |
$11_1 = $11_1 + 1 | 0; | |
HEAPF64[(($5_1 + 320 | 0) + ($6_1 << 3 | 0) | 0) >> 3] = +(HEAP32[((($11_1 + $7_1 | 0) << 2 | 0) + 1072 | 0) >> 2] | 0 | 0); | |
$2_1 = 0; | |
$24_1 = 0.0; | |
label$39 : { | |
if (($3_1 | 0) < (1 | 0)) { | |
break label$39 | |
} | |
label$40 : while (1) { | |
$24_1 = $24_1 + +HEAPF64[($0_1 + ($2_1 << 3 | 0) | 0) >> 3] * +HEAPF64[(($5_1 + 320 | 0) + (($6_1 - $2_1 | 0) << 3 | 0) | 0) >> 3]; | |
$2_1 = $2_1 + 1 | 0; | |
if (($2_1 | 0) != ($3_1 | 0)) { | |
continue label$40 | |
} | |
break label$40; | |
}; | |
} | |
HEAPF64[($5_1 + ($11_1 << 3 | 0) | 0) >> 3] = $24_1; | |
if (($11_1 | 0) < ($13_1 | 0)) { | |
continue label$38 | |
} | |
break label$38; | |
}; | |
$11_1 = $13_1; | |
continue label$12; | |
} | |
break label$12; | |
}; | |
label$41 : { | |
label$42 : { | |
$24_1 = +$18(+$24_1, 0 - $12_1 | 0 | 0); | |
if ($24_1 >= 16777216.0 ^ 1 | 0) { | |
break label$42 | |
} | |
$3_1 = $11_1 << 2 | 0; | |
label$43 : { | |
label$44 : { | |
$25_1 = $24_1 * 5.9604644775390625e-08; | |
if (!(Math_abs($25_1) < 2147483648.0)) { | |
break label$44 | |
} | |
$2_1 = ~~$25_1; | |
break label$43; | |
} | |
$2_1 = -2147483648; | |
} | |
$3_1 = ($5_1 + 480 | 0) + $3_1 | 0; | |
label$45 : { | |
label$46 : { | |
$24_1 = $24_1 + +($2_1 | 0) * -16777216.0; | |
if (!(Math_abs($24_1) < 2147483648.0)) { | |
break label$46 | |
} | |
$6_1 = ~~$24_1; | |
break label$45; | |
} | |
$6_1 = -2147483648; | |
} | |
HEAP32[$3_1 >> 2] = $6_1; | |
$11_1 = $11_1 + 1 | 0; | |
break label$41; | |
} | |
label$47 : { | |
label$48 : { | |
if (!(Math_abs($24_1) < 2147483648.0)) { | |
break label$48 | |
} | |
$2_1 = ~~$24_1; | |
break label$47; | |
} | |
$2_1 = -2147483648; | |
} | |
$8_1 = $12_1; | |
} | |
HEAP32[(($5_1 + 480 | 0) + ($11_1 << 2 | 0) | 0) >> 2] = $2_1; | |
} | |
$24_1 = +$18(+(1.0), $8_1 | 0); | |
label$49 : { | |
if (($11_1 | 0) <= (-1 | 0)) { | |
break label$49 | |
} | |
$2_1 = $11_1; | |
label$50 : while (1) { | |
HEAPF64[($5_1 + ($2_1 << 3 | 0) | 0) >> 3] = $24_1 * +(HEAP32[(($5_1 + 480 | 0) + ($2_1 << 2 | 0) | 0) >> 2] | 0 | 0); | |
$24_1 = $24_1 * 5.9604644775390625e-08; | |
$3_1 = ($2_1 | 0) > (0 | 0); | |
$2_1 = $2_1 + -1 | 0; | |
if ($3_1) { | |
continue label$50 | |
} | |
break label$50; | |
}; | |
$13_1 = 0; | |
if (($11_1 | 0) < (0 | 0)) { | |
break label$49 | |
} | |
$9_1 = ($9_1 | 0) > (0 | 0) ? $9_1 : 0; | |
$6_1 = $11_1; | |
label$51 : while (1) { | |
$0_1 = $9_1 >>> 0 < $13_1 >>> 0 ? $9_1 : $13_1; | |
$14_1 = $11_1 - $6_1 | 0; | |
$2_1 = 0; | |
$24_1 = 0.0; | |
label$52 : while (1) { | |
$24_1 = $24_1 + +HEAPF64[(($2_1 << 3 | 0) + 3840 | 0) >> 3] * +HEAPF64[($5_1 + (($2_1 + $6_1 | 0) << 3 | 0) | 0) >> 3]; | |
$3_1 = ($2_1 | 0) != ($0_1 | 0); | |
$2_1 = $2_1 + 1 | 0; | |
if ($3_1) { | |
continue label$52 | |
} | |
break label$52; | |
}; | |
HEAPF64[(($5_1 + 160 | 0) + ($14_1 << 3 | 0) | 0) >> 3] = $24_1; | |
$6_1 = $6_1 + -1 | 0; | |
$2_1 = ($13_1 | 0) != ($11_1 | 0); | |
$13_1 = $13_1 + 1 | 0; | |
if ($2_1) { | |
continue label$51 | |
} | |
break label$51; | |
}; | |
} | |
label$53 : { | |
label$54 : { | |
label$55 : { | |
switch ($4_1 | 0) { | |
case 3: | |
$26_1 = 0.0; | |
label$58 : { | |
if (($11_1 | 0) < (1 | 0)) { | |
break label$58 | |
} | |
$24_1 = +HEAPF64[(($5_1 + 160 | 0) + ($11_1 << 3 | 0) | 0) >> 3]; | |
$2_1 = $11_1; | |
label$59 : while (1) { | |
$3_1 = $2_1 + -1 | 0; | |
$6_1 = ($5_1 + 160 | 0) + ($3_1 << 3 | 0) | 0; | |
$25_1 = +HEAPF64[$6_1 >> 3]; | |
$545 = $25_1; | |
$25_1 = $25_1 + $24_1; | |
HEAPF64[(($5_1 + 160 | 0) + ($2_1 << 3 | 0) | 0) >> 3] = $24_1 + ($545 - $25_1); | |
HEAPF64[$6_1 >> 3] = $25_1; | |
$6_1 = ($2_1 | 0) > (1 | 0); | |
$24_1 = $25_1; | |
$2_1 = $3_1; | |
if ($6_1) { | |
continue label$59 | |
} | |
break label$59; | |
}; | |
if (($11_1 | 0) < (2 | 0)) { | |
break label$58 | |
} | |
$24_1 = +HEAPF64[(($5_1 + 160 | 0) + ($11_1 << 3 | 0) | 0) >> 3]; | |
$2_1 = $11_1; | |
label$60 : while (1) { | |
$3_1 = $2_1 + -1 | 0; | |
$6_1 = ($5_1 + 160 | 0) + ($3_1 << 3 | 0) | 0; | |
$25_1 = +HEAPF64[$6_1 >> 3]; | |
$583 = $25_1; | |
$25_1 = $25_1 + $24_1; | |
HEAPF64[(($5_1 + 160 | 0) + ($2_1 << 3 | 0) | 0) >> 3] = $24_1 + ($583 - $25_1); | |
HEAPF64[$6_1 >> 3] = $25_1; | |
$6_1 = ($2_1 | 0) > (2 | 0); | |
$24_1 = $25_1; | |
$2_1 = $3_1; | |
if ($6_1) { | |
continue label$60 | |
} | |
break label$60; | |
}; | |
$26_1 = 0.0; | |
if (($11_1 | 0) <= (1 | 0)) { | |
break label$58 | |
} | |
label$61 : while (1) { | |
$26_1 = $26_1 + +HEAPF64[(($5_1 + 160 | 0) + ($11_1 << 3 | 0) | 0) >> 3]; | |
$2_1 = ($11_1 | 0) > (2 | 0); | |
$11_1 = $11_1 + -1 | 0; | |
if ($2_1) { | |
continue label$61 | |
} | |
break label$61; | |
}; | |
} | |
$24_1 = +HEAPF64[($5_1 + 160 | 0) >> 3]; | |
if ($20_1) { | |
break label$54 | |
} | |
HEAPF64[$1_1 >> 3] = $24_1; | |
i64toi32_i32$0 = HEAP32[($5_1 + 168 | 0) >> 2] | 0; | |
i64toi32_i32$1 = HEAP32[($5_1 + 172 | 0) >> 2] | 0; | |
HEAPF64[($1_1 + 16 | 0) >> 3] = $26_1; | |
$622 = i64toi32_i32$0; | |
i64toi32_i32$0 = $1_1; | |
HEAP32[($1_1 + 8 | 0) >> 2] = $622; | |
HEAP32[($1_1 + 12 | 0) >> 2] = i64toi32_i32$1; | |
break label$53; | |
case 0: | |
$24_1 = 0.0; | |
label$62 : { | |
if (($11_1 | 0) < (0 | 0)) { | |
break label$62 | |
} | |
label$63 : while (1) { | |
$24_1 = $24_1 + +HEAPF64[(($5_1 + 160 | 0) + ($11_1 << 3 | 0) | 0) >> 3]; | |
$2_1 = ($11_1 | 0) > (0 | 0); | |
$11_1 = $11_1 + -1 | 0; | |
if ($2_1) { | |
continue label$63 | |
} | |
break label$63; | |
}; | |
} | |
HEAPF64[$1_1 >> 3] = $20_1 ? -$24_1 : $24_1; | |
break label$53; | |
case 1: | |
case 2: | |
break label$55; | |
default: | |
break label$53; | |
}; | |
} | |
$24_1 = 0.0; | |
label$64 : { | |
if (($11_1 | 0) < (0 | 0)) { | |
break label$64 | |
} | |
$2_1 = $11_1; | |
label$65 : while (1) { | |
$24_1 = $24_1 + +HEAPF64[(($5_1 + 160 | 0) + ($2_1 << 3 | 0) | 0) >> 3]; | |
$3_1 = ($2_1 | 0) > (0 | 0); | |
$2_1 = $2_1 + -1 | 0; | |
if ($3_1) { | |
continue label$65 | |
} | |
break label$65; | |
}; | |
} | |
HEAPF64[$1_1 >> 3] = $20_1 ? -$24_1 : $24_1; | |
$24_1 = +HEAPF64[($5_1 + 160 | 0) >> 3] - $24_1; | |
$2_1 = 1; | |
label$66 : { | |
if (($11_1 | 0) < (1 | 0)) { | |
break label$66 | |
} | |
label$67 : while (1) { | |
$24_1 = $24_1 + +HEAPF64[(($5_1 + 160 | 0) + ($2_1 << 3 | 0) | 0) >> 3]; | |
$3_1 = ($2_1 | 0) != ($11_1 | 0); | |
$2_1 = $2_1 + 1 | 0; | |
if ($3_1) { | |
continue label$67 | |
} | |
break label$67; | |
}; | |
} | |
HEAPF64[($1_1 + 8 | 0) >> 3] = $20_1 ? -$24_1 : $24_1; | |
break label$53; | |
} | |
HEAPF64[$1_1 >> 3] = -$24_1; | |
$24_1 = +HEAPF64[($5_1 + 168 | 0) >> 3]; | |
HEAPF64[($1_1 + 16 | 0) >> 3] = -$26_1; | |
HEAPF64[($1_1 + 8 | 0) >> 3] = -$24_1; | |
} | |
label$68 : { | |
$22_1 = $5_1 + 560 | 0; | |
if ($22_1 >>> 0 < global$2 >>> 0) { | |
fimport$3() | |
} | |
global$0 = $22_1; | |
} | |
return $18_1 & 7 | 0 | 0; | |
} | |
function $14($0_1, $1_1) { | |
$0_1 = +$0_1; | |
$1_1 = $1_1 | 0; | |
var $10_1 = 0.0, i64toi32_i32$2 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $3_1 = 0, i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, $2_1 = 0, $4_1 = 0, $11_1 = 0.0, $9_1 = 0, $5_1 = 0, $6_1 = 0, $9$hi = 0, $12_1 = 0.0, $13_1 = 0.0, $23_1 = 0, $24_1 = 0, $25_1 = 0, $26_1 = 0, $27_1 = 0, $28_1 = 0, $29_1 = 0, $30_1 = 0, $31_1 = 0, $32_1 = 0, $33_1 = 0, $34_1 = 0, $35_1 = 0, $36_1 = 0, $37_1 = 0, $38_1 = 0, $39_1 = 0, $40_1 = 0, $8_1 = 0, $7_1 = 0, $158 = 0, $191 = 0, $299 = 0; | |
label$1 : { | |
$2_1 = global$0 - 48 | 0; | |
$7_1 = $2_1; | |
if ($2_1 >>> 0 < global$2 >>> 0) { | |
fimport$3() | |
} | |
global$0 = $7_1; | |
} | |
label$3 : { | |
label$4 : { | |
label$5 : { | |
label$6 : { | |
wasm2js_scratch_store_f64(+$0_1); | |
i64toi32_i32$0 = wasm2js_scratch_load_i32(1 | 0) | 0; | |
$9_1 = wasm2js_scratch_load_i32(0 | 0) | 0; | |
$9$hi = i64toi32_i32$0; | |
i64toi32_i32$2 = $9_1; | |
i64toi32_i32$1 = 0; | |
i64toi32_i32$3 = 32; | |
i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; | |
if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { | |
i64toi32_i32$1 = 0; | |
$23_1 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0; | |
} else { | |
i64toi32_i32$1 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0; | |
$23_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$0 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0; | |
} | |
$3_1 = $23_1; | |
$4_1 = $3_1 & 2147483647 | 0; | |
if ($4_1 >>> 0 > 1074752122 >>> 0) { | |
break label$6 | |
} | |
if (($3_1 & 1048575 | 0 | 0) == (598523 | 0)) { | |
break label$5 | |
} | |
label$7 : { | |
if ($4_1 >>> 0 > 1073928572 >>> 0) { | |
break label$7 | |
} | |
label$8 : { | |
i64toi32_i32$1 = $9$hi; | |
i64toi32_i32$0 = $9_1; | |
i64toi32_i32$2 = 0; | |
i64toi32_i32$3 = 0; | |
if ((i64toi32_i32$1 | 0) < (i64toi32_i32$2 | 0)) { | |
$24_1 = 1 | |
} else { | |
if ((i64toi32_i32$1 | 0) <= (i64toi32_i32$2 | 0)) { | |
if (i64toi32_i32$0 >>> 0 >= i64toi32_i32$3 >>> 0) { | |
$25_1 = 0 | |
} else { | |
$25_1 = 1 | |
} | |
$26_1 = $25_1; | |
} else { | |
$26_1 = 0 | |
} | |
$24_1 = $26_1; | |
} | |
if ($24_1) { | |
break label$8 | |
} | |
$0_1 = $0_1 + -1.5707963267341256; | |
$10_1 = $0_1 + -6.077100506506192e-11; | |
HEAPF64[$1_1 >> 3] = $10_1; | |
HEAPF64[($1_1 + 8 | 0) >> 3] = $0_1 - $10_1 + -6.077100506506192e-11; | |
$3_1 = 1; | |
break label$3; | |
} | |
$0_1 = $0_1 + 1.5707963267341256; | |
$10_1 = $0_1 + 6.077100506506192e-11; | |
HEAPF64[$1_1 >> 3] = $10_1; | |
HEAPF64[($1_1 + 8 | 0) >> 3] = $0_1 - $10_1 + 6.077100506506192e-11; | |
$3_1 = -1; | |
break label$3; | |
} | |
label$9 : { | |
i64toi32_i32$0 = $9$hi; | |
i64toi32_i32$3 = $9_1; | |
i64toi32_i32$1 = 0; | |
i64toi32_i32$2 = 0; | |
if ((i64toi32_i32$0 | 0) < (i64toi32_i32$1 | 0)) { | |
$27_1 = 1 | |
} else { | |
if ((i64toi32_i32$0 | 0) <= (i64toi32_i32$1 | 0)) { | |
if (i64toi32_i32$3 >>> 0 >= i64toi32_i32$2 >>> 0) { | |
$28_1 = 0 | |
} else { | |
$28_1 = 1 | |
} | |
$29_1 = $28_1; | |
} else { | |
$29_1 = 0 | |
} | |
$27_1 = $29_1; | |
} | |
if ($27_1) { | |
break label$9 | |
} | |
$0_1 = $0_1 + -3.1415926534682512; | |
$10_1 = $0_1 + -1.2154201013012384e-10; | |
HEAPF64[$1_1 >> 3] = $10_1; | |
HEAPF64[($1_1 + 8 | 0) >> 3] = $0_1 - $10_1 + -1.2154201013012384e-10; | |
$3_1 = 2; | |
break label$3; | |
} | |
$0_1 = $0_1 + 3.1415926534682512; | |
$10_1 = $0_1 + 1.2154201013012384e-10; | |
HEAPF64[$1_1 >> 3] = $10_1; | |
HEAPF64[($1_1 + 8 | 0) >> 3] = $0_1 - $10_1 + 1.2154201013012384e-10; | |
$3_1 = -2; | |
break label$3; | |
} | |
label$10 : { | |
if ($4_1 >>> 0 > 1075594811 >>> 0) { | |
break label$10 | |
} | |
label$11 : { | |
if ($4_1 >>> 0 > 1075183036 >>> 0) { | |
break label$11 | |
} | |
if (($4_1 | 0) == (1074977148 | 0)) { | |
break label$5 | |
} | |
label$12 : { | |
i64toi32_i32$3 = $9$hi; | |
i64toi32_i32$2 = $9_1; | |
i64toi32_i32$0 = 0; | |
i64toi32_i32$1 = 0; | |
if ((i64toi32_i32$3 | 0) < (i64toi32_i32$0 | 0)) { | |
$30_1 = 1 | |
} else { | |
if ((i64toi32_i32$3 | 0) <= (i64toi32_i32$0 | 0)) { | |
if (i64toi32_i32$2 >>> 0 >= i64toi32_i32$1 >>> 0) { | |
$31_1 = 0 | |
} else { | |
$31_1 = 1 | |
} | |
$32_1 = $31_1; | |
} else { | |
$32_1 = 0 | |
} | |
$30_1 = $32_1; | |
} | |
if ($30_1) { | |
break label$12 | |
} | |
$0_1 = $0_1 + -4.712388980202377; | |
$10_1 = $0_1 + -1.8231301519518578e-10; | |
HEAPF64[$1_1 >> 3] = $10_1; | |
HEAPF64[($1_1 + 8 | 0) >> 3] = $0_1 - $10_1 + -1.8231301519518578e-10; | |
$3_1 = 3; | |
break label$3; | |
} | |
$0_1 = $0_1 + 4.712388980202377; | |
$10_1 = $0_1 + 1.8231301519518578e-10; | |
HEAPF64[$1_1 >> 3] = $10_1; | |
HEAPF64[($1_1 + 8 | 0) >> 3] = $0_1 - $10_1 + 1.8231301519518578e-10; | |
$3_1 = -3; | |
break label$3; | |
} | |
if (($4_1 | 0) == (1075388923 | 0)) { | |
break label$5 | |
} | |
label$13 : { | |
i64toi32_i32$2 = $9$hi; | |
i64toi32_i32$1 = $9_1; | |
i64toi32_i32$3 = 0; | |
i64toi32_i32$0 = 0; | |
if ((i64toi32_i32$2 | 0) < (i64toi32_i32$3 | 0)) { | |
$33_1 = 1 | |
} else { | |
if ((i64toi32_i32$2 | 0) <= (i64toi32_i32$3 | 0)) { | |
if (i64toi32_i32$1 >>> 0 >= i64toi32_i32$0 >>> 0) { | |
$34_1 = 0 | |
} else { | |
$34_1 = 1 | |
} | |
$35_1 = $34_1; | |
} else { | |
$35_1 = 0 | |
} | |
$33_1 = $35_1; | |
} | |
if ($33_1) { | |
break label$13 | |
} | |
$0_1 = $0_1 + -6.2831853069365025; | |
$10_1 = $0_1 + -2.430840202602477e-10; | |
HEAPF64[$1_1 >> 3] = $10_1; | |
HEAPF64[($1_1 + 8 | 0) >> 3] = $0_1 - $10_1 + -2.430840202602477e-10; | |
$3_1 = 4; | |
break label$3; | |
} | |
$0_1 = $0_1 + 6.2831853069365025; | |
$10_1 = $0_1 + 2.430840202602477e-10; | |
HEAPF64[$1_1 >> 3] = $10_1; | |
HEAPF64[($1_1 + 8 | 0) >> 3] = $0_1 - $10_1 + 2.430840202602477e-10; | |
$3_1 = -4; | |
break label$3; | |
} | |
if ($4_1 >>> 0 > 1094263290 >>> 0) { | |
break label$4 | |
} | |
} | |
$10_1 = $0_1 * .6366197723675814 + 6755399441055744.0 + -6755399441055744.0; | |
$11_1 = $0_1 + $10_1 * -1.5707963267341256; | |
$12_1 = $10_1 * 6.077100506506192e-11; | |
$0_1 = $11_1 - $12_1; | |
HEAPF64[$1_1 >> 3] = $0_1; | |
$5_1 = $4_1 >>> 20 | 0; | |
$158 = $5_1; | |
wasm2js_scratch_store_f64(+$0_1); | |
i64toi32_i32$1 = wasm2js_scratch_load_i32(1 | 0) | 0; | |
i64toi32_i32$0 = wasm2js_scratch_load_i32(0 | 0) | 0; | |
i64toi32_i32$2 = 0; | |
i64toi32_i32$3 = 52; | |
i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; | |
if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { | |
i64toi32_i32$2 = 0; | |
$36_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; | |
} else { | |
i64toi32_i32$2 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; | |
$36_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$0 >>> i64toi32_i32$4 | 0) | 0; | |
} | |
$6_1 = ($158 - ($36_1 & 2047 | 0) | 0 | 0) < (17 | 0); | |
label$14 : { | |
label$15 : { | |
if (!(Math_abs($10_1) < 2147483648.0)) { | |
break label$15 | |
} | |
$3_1 = ~~$10_1; | |
break label$14; | |
} | |
$3_1 = -2147483648; | |
} | |
label$16 : { | |
if ($6_1) { | |
break label$16 | |
} | |
$0_1 = $10_1 * 6.077100506303966e-11; | |
$13_1 = $11_1 - $0_1; | |
$12_1 = $10_1 * 2.0222662487959506e-21 - ($11_1 - $13_1 - $0_1); | |
$0_1 = $13_1 - $12_1; | |
HEAPF64[$1_1 >> 3] = $0_1; | |
label$17 : { | |
$191 = $5_1; | |
wasm2js_scratch_store_f64(+$0_1); | |
i64toi32_i32$2 = wasm2js_scratch_load_i32(1 | 0) | 0; | |
i64toi32_i32$1 = wasm2js_scratch_load_i32(0 | 0) | 0; | |
i64toi32_i32$0 = 0; | |
i64toi32_i32$3 = 52; | |
i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; | |
if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { | |
i64toi32_i32$0 = 0; | |
$37_1 = i64toi32_i32$2 >>> i64toi32_i32$4 | 0; | |
} else { | |
i64toi32_i32$0 = i64toi32_i32$2 >>> i64toi32_i32$4 | 0; | |
$37_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$2 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$1 >>> i64toi32_i32$4 | 0) | 0; | |
} | |
if (($191 - ($37_1 & 2047 | 0) | 0 | 0) >= (50 | 0)) { | |
break label$17 | |
} | |
$11_1 = $13_1; | |
break label$16; | |
} | |
$0_1 = $10_1 * 2.0222662487111665e-21; | |
$11_1 = $13_1 - $0_1; | |
$12_1 = $10_1 * 8.4784276603689e-32 - ($13_1 - $11_1 - $0_1); | |
$0_1 = $11_1 - $12_1; | |
HEAPF64[$1_1 >> 3] = $0_1; | |
} | |
HEAPF64[($1_1 + 8 | 0) >> 3] = $11_1 - $0_1 - $12_1; | |
break label$3; | |
} | |
label$18 : { | |
if ($4_1 >>> 0 < 2146435072 >>> 0) { | |
break label$18 | |
} | |
$0_1 = $0_1 - $0_1; | |
HEAPF64[$1_1 >> 3] = $0_1; | |
HEAPF64[($1_1 + 8 | 0) >> 3] = $0_1; | |
$3_1 = 0; | |
break label$3; | |
} | |
i64toi32_i32$0 = $9$hi; | |
i64toi32_i32$2 = $9_1; | |
i64toi32_i32$1 = 1048575; | |
i64toi32_i32$3 = -1; | |
i64toi32_i32$1 = i64toi32_i32$0 & i64toi32_i32$1 | 0; | |
i64toi32_i32$0 = i64toi32_i32$2 & i64toi32_i32$3 | 0; | |
i64toi32_i32$2 = 1096810496; | |
i64toi32_i32$3 = 0; | |
i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0; | |
wasm2js_scratch_store_i32(0 | 0, i64toi32_i32$0 | i64toi32_i32$3 | 0 | 0); | |
wasm2js_scratch_store_i32(1 | 0, i64toi32_i32$2 | 0); | |
$0_1 = +wasm2js_scratch_load_f64(); | |
$3_1 = 0; | |
$6_1 = 1; | |
label$19 : while (1) { | |
$3_1 = ($2_1 + 16 | 0) + ($3_1 << 3 | 0) | 0; | |
label$20 : { | |
label$21 : { | |
if (!(Math_abs($0_1) < 2147483648.0)) { | |
break label$21 | |
} | |
$5_1 = ~~$0_1; | |
break label$20; | |
} | |
$5_1 = -2147483648; | |
} | |
$10_1 = +($5_1 | 0); | |
HEAPF64[$3_1 >> 3] = $10_1; | |
$0_1 = ($0_1 - $10_1) * 16777216.0; | |
$3_1 = 1; | |
$5_1 = $6_1 & 1 | 0; | |
$6_1 = 0; | |
if ($5_1) { | |
continue label$19 | |
} | |
break label$19; | |
}; | |
HEAPF64[($2_1 + 32 | 0) >> 3] = $0_1; | |
label$22 : { | |
label$23 : { | |
if ($0_1 == 0.0) { | |
break label$23 | |
} | |
$3_1 = 2; | |
break label$22; | |
} | |
$6_1 = 1; | |
label$24 : while (1) { | |
$3_1 = $6_1; | |
$6_1 = $3_1 + -1 | 0; | |
if (+HEAPF64[(($2_1 + 16 | 0) + ($3_1 << 3 | 0) | 0) >> 3] == 0.0) { | |
continue label$24 | |
} | |
break label$24; | |
}; | |
} | |
$3_1 = $13($2_1 + 16 | 0 | 0, $2_1 | 0, ($4_1 >>> 20 | 0) + -1046 | 0 | 0, $3_1 + 1 | 0 | 0, 1 | 0) | 0; | |
$0_1 = +HEAPF64[$2_1 >> 3]; | |
label$25 : { | |
i64toi32_i32$2 = $9$hi; | |
i64toi32_i32$1 = $9_1; | |
i64toi32_i32$0 = -1; | |
i64toi32_i32$3 = -1; | |
if ((i64toi32_i32$2 | 0) > (i64toi32_i32$0 | 0)) { | |
$38_1 = 1 | |
} else { | |
if ((i64toi32_i32$2 | 0) >= (i64toi32_i32$0 | 0)) { | |
if (i64toi32_i32$1 >>> 0 <= i64toi32_i32$3 >>> 0) { | |
$39_1 = 0 | |
} else { | |
$39_1 = 1 | |
} | |
$40_1 = $39_1; | |
} else { | |
$40_1 = 0 | |
} | |
$38_1 = $40_1; | |
} | |
if ($38_1) { | |
break label$25 | |
} | |
HEAPF64[$1_1 >> 3] = -$0_1; | |
HEAPF64[($1_1 + 8 | 0) >> 3] = -+HEAPF64[($2_1 + 8 | 0) >> 3]; | |
$3_1 = 0 - $3_1 | 0; | |
break label$3; | |
} | |
HEAPF64[$1_1 >> 3] = $0_1; | |
i64toi32_i32$3 = $2_1; | |
i64toi32_i32$1 = HEAP32[(i64toi32_i32$3 + 8 | 0) >> 2] | 0; | |
i64toi32_i32$2 = HEAP32[(i64toi32_i32$3 + 12 | 0) >> 2] | 0; | |
$299 = i64toi32_i32$1; | |
i64toi32_i32$1 = $1_1; | |
HEAP32[($1_1 + 8 | 0) >> 2] = $299; | |
HEAP32[($1_1 + 12 | 0) >> 2] = i64toi32_i32$2; | |
} | |
label$26 : { | |
$8_1 = $2_1 + 48 | 0; | |
if ($8_1 >>> 0 < global$2 >>> 0) { | |
fimport$3() | |
} | |
global$0 = $8_1; | |
} | |
return $3_1 | 0; | |
} | |
function $15($0_1, $1_1, $2_1) { | |
$0_1 = +$0_1; | |
$1_1 = +$1_1; | |
$2_1 = $2_1 | 0; | |
var $3_1 = 0.0, $5_1 = 0.0, $4_1 = 0.0; | |
$3_1 = $0_1 * $0_1; | |
$4_1 = $3_1 * ($3_1 * $3_1) * ($3_1 * 1.58969099521155e-10 + -2.5050760253406863e-08) + ($3_1 * ($3_1 * 2.7557313707070068e-06 + -1.984126982985795e-04) + .00833333333332249); | |
$5_1 = $3_1 * $0_1; | |
label$1 : { | |
if ($2_1) { | |
break label$1 | |
} | |
return +($5_1 * ($3_1 * $4_1 + -.16666666666666632) + $0_1); | |
} | |
return +($0_1 - ($3_1 * ($1_1 * .5 - $5_1 * $4_1) - $1_1 + $5_1 * .16666666666666632)); | |
} | |
function $16($0_1) { | |
$0_1 = +$0_1; | |
var $1_1 = 0, $5_1 = 0.0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, $2_1 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $11_1 = 0, $4_1 = 0, $3_1 = 0, i64toi32_i32$2 = 0; | |
label$1 : { | |
$1_1 = global$0 - 16 | 0; | |
$3_1 = $1_1; | |
if ($1_1 >>> 0 < global$2 >>> 0) { | |
fimport$3() | |
} | |
global$0 = $3_1; | |
} | |
label$3 : { | |
label$4 : { | |
wasm2js_scratch_store_f64(+$0_1); | |
i64toi32_i32$0 = wasm2js_scratch_load_i32(1 | 0) | 0; | |
i64toi32_i32$2 = wasm2js_scratch_load_i32(0 | 0) | 0; | |
i64toi32_i32$1 = 0; | |
i64toi32_i32$3 = 32; | |
i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; | |
if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { | |
i64toi32_i32$1 = 0; | |
$11_1 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0; | |
} else { | |
i64toi32_i32$1 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0; | |
$11_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$0 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0; | |
} | |
$2_1 = $11_1 & 2147483647 | 0; | |
if ($2_1 >>> 0 > 1072243195 >>> 0) { | |
break label$4 | |
} | |
$5_1 = 1.0; | |
if ($2_1 >>> 0 < 1044816030 >>> 0) { | |
break label$3 | |
} | |
$5_1 = +$11(+$0_1, +(0.0)); | |
break label$3; | |
} | |
label$5 : { | |
if ($2_1 >>> 0 < 2146435072 >>> 0) { | |
break label$5 | |
} | |
$5_1 = $0_1 - $0_1; | |
break label$3; | |
} | |
label$6 : { | |
switch (($14(+$0_1, $1_1 | 0) | 0) & 3 | 0 | 0) { | |
case 0: | |
$5_1 = +$11(+(+HEAPF64[$1_1 >> 3]), +(+HEAPF64[($1_1 + 8 | 0) >> 3])); | |
break label$3; | |
case 1: | |
$5_1 = -+$15(+(+HEAPF64[$1_1 >> 3]), +(+HEAPF64[($1_1 + 8 | 0) >> 3]), 1 | 0); | |
break label$3; | |
case 2: | |
$5_1 = -+$11(+(+HEAPF64[$1_1 >> 3]), +(+HEAPF64[($1_1 + 8 | 0) >> 3])); | |
break label$3; | |
default: | |
break label$6; | |
}; | |
} | |
$5_1 = +$15(+(+HEAPF64[$1_1 >> 3]), +(+HEAPF64[($1_1 + 8 | 0) >> 3]), 1 | 0); | |
} | |
label$10 : { | |
$4_1 = $1_1 + 16 | 0; | |
if ($4_1 >>> 0 < global$2 >>> 0) { | |
fimport$3() | |
} | |
global$0 = $4_1; | |
} | |
return +$5_1; | |
} | |
function $17($0_1) { | |
$0_1 = +$0_1; | |
var $1_1 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, $2_1 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $10_1 = 0, $4_1 = 0, $3_1 = 0, i64toi32_i32$2 = 0; | |
label$1 : { | |
$1_1 = global$0 - 16 | 0; | |
$3_1 = $1_1; | |
if ($1_1 >>> 0 < global$2 >>> 0) { | |
fimport$3() | |
} | |
global$0 = $3_1; | |
} | |
label$3 : { | |
label$4 : { | |
wasm2js_scratch_store_f64(+$0_1); | |
i64toi32_i32$0 = wasm2js_scratch_load_i32(1 | 0) | 0; | |
i64toi32_i32$2 = wasm2js_scratch_load_i32(0 | 0) | 0; | |
i64toi32_i32$1 = 0; | |
i64toi32_i32$3 = 32; | |
i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; | |
if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { | |
i64toi32_i32$1 = 0; | |
$10_1 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0; | |
} else { | |
i64toi32_i32$1 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0; | |
$10_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$0 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0; | |
} | |
$2_1 = $10_1 & 2147483647 | 0; | |
if ($2_1 >>> 0 > 1072243195 >>> 0) { | |
break label$4 | |
} | |
if ($2_1 >>> 0 < 1045430272 >>> 0) { | |
break label$3 | |
} | |
$0_1 = +$15(+$0_1, +(0.0), 0 | 0); | |
break label$3; | |
} | |
label$5 : { | |
if ($2_1 >>> 0 < 2146435072 >>> 0) { | |
break label$5 | |
} | |
$0_1 = $0_1 - $0_1; | |
break label$3; | |
} | |
label$6 : { | |
switch (($14(+$0_1, $1_1 | 0) | 0) & 3 | 0 | 0) { | |
case 0: | |
$0_1 = +$15(+(+HEAPF64[$1_1 >> 3]), +(+HEAPF64[($1_1 + 8 | 0) >> 3]), 1 | 0); | |
break label$3; | |
case 1: | |
$0_1 = +$11(+(+HEAPF64[$1_1 >> 3]), +(+HEAPF64[($1_1 + 8 | 0) >> 3])); | |
break label$3; | |
case 2: | |
$0_1 = -+$15(+(+HEAPF64[$1_1 >> 3]), +(+HEAPF64[($1_1 + 8 | 0) >> 3]), 1 | 0); | |
break label$3; | |
default: | |
break label$6; | |
}; | |
} | |
$0_1 = -+$11(+(+HEAPF64[$1_1 >> 3]), +(+HEAPF64[($1_1 + 8 | 0) >> 3])); | |
} | |
label$10 : { | |
$4_1 = $1_1 + 16 | 0; | |
if ($4_1 >>> 0 < global$2 >>> 0) { | |
fimport$3() | |
} | |
global$0 = $4_1; | |
} | |
return +$0_1; | |
} | |
function $18($0_1, $1_1) { | |
$0_1 = +$0_1; | |
$1_1 = $1_1 | 0; | |
var i64toi32_i32$4 = 0, i64toi32_i32$2 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $8_1 = 0, $32_1 = 0.0, i64toi32_i32$0 = 0; | |
label$1 : { | |
label$2 : { | |
if (($1_1 | 0) < (1024 | 0)) { | |
break label$2 | |
} | |
$0_1 = $0_1 * 8988465674311579538646525.0e283; | |
label$3 : { | |
if (($1_1 | 0) >= (2047 | 0)) { | |
break label$3 | |
} | |
$1_1 = $1_1 + -1023 | 0; | |
break label$1; | |
} | |
$0_1 = $0_1 * 8988465674311579538646525.0e283; | |
$1_1 = (($1_1 | 0) < (3069 | 0) ? $1_1 : 3069) + -2046 | 0; | |
break label$1; | |
} | |
if (($1_1 | 0) > (-1023 | 0)) { | |
break label$1 | |
} | |
$0_1 = $0_1 * 2.2250738585072014e-308; | |
label$4 : { | |
if (($1_1 | 0) <= (-2045 | 0)) { | |
break label$4 | |
} | |
$1_1 = $1_1 + 1022 | 0; | |
break label$1; | |
} | |
$0_1 = $0_1 * 2.2250738585072014e-308; | |
$1_1 = (($1_1 | 0) > (-3066 | 0) ? $1_1 : -3066) + 2044 | 0; | |
} | |
$32_1 = $0_1; | |
i64toi32_i32$0 = 0; | |
i64toi32_i32$2 = $1_1 + 1023 | 0; | |
i64toi32_i32$1 = 0; | |
i64toi32_i32$3 = 52; | |
i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; | |
if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { | |
i64toi32_i32$1 = i64toi32_i32$2 << i64toi32_i32$4 | 0; | |
$8_1 = 0; | |
} else { | |
i64toi32_i32$1 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$2 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$0 << i64toi32_i32$4 | 0) | 0; | |
$8_1 = i64toi32_i32$2 << i64toi32_i32$4 | 0; | |
} | |
wasm2js_scratch_store_i32(0 | 0, $8_1 | 0); | |
wasm2js_scratch_store_i32(1 | 0, i64toi32_i32$1 | 0); | |
return +($32_1 * +wasm2js_scratch_load_f64()); | |
} | |
function $19($0_1, $1_1, $2_1) { | |
$0_1 = $0_1 | 0; | |
$1_1 = $1_1 | 0; | |
$2_1 = $2_1 | 0; | |
var $3_1 = 0, i64toi32_i32$2 = 0, i64toi32_i32$0 = 0, $4_1 = 0, $6_1 = 0, i64toi32_i32$1 = 0, i64toi32_i32$4 = 0, $6$hi = 0, i64toi32_i32$3 = 0, $5_1 = 0, $14_1 = 0, $104$hi = 0; | |
label$1 : { | |
if (!$2_1) { | |
break label$1 | |
} | |
$3_1 = $2_1 + $0_1 | 0; | |
HEAP8[($3_1 + -1 | 0) >> 0] = $1_1; | |
HEAP8[$0_1 >> 0] = $1_1; | |
if ($2_1 >>> 0 < 3 >>> 0) { | |
break label$1 | |
} | |
HEAP8[($3_1 + -2 | 0) >> 0] = $1_1; | |
HEAP8[($0_1 + 1 | 0) >> 0] = $1_1; | |
HEAP8[($3_1 + -3 | 0) >> 0] = $1_1; | |
HEAP8[($0_1 + 2 | 0) >> 0] = $1_1; | |
if ($2_1 >>> 0 < 7 >>> 0) { | |
break label$1 | |
} | |
HEAP8[($3_1 + -4 | 0) >> 0] = $1_1; | |
HEAP8[($0_1 + 3 | 0) >> 0] = $1_1; | |
if ($2_1 >>> 0 < 9 >>> 0) { | |
break label$1 | |
} | |
$4_1 = (0 - $0_1 | 0) & 3 | 0; | |
$3_1 = $0_1 + $4_1 | 0; | |
$1_1 = Math_imul($1_1 & 255 | 0, 16843009); | |
HEAP32[$3_1 >> 2] = $1_1; | |
$4_1 = ($2_1 - $4_1 | 0) & -4 | 0; | |
$2_1 = $3_1 + $4_1 | 0; | |
HEAP32[($2_1 + -4 | 0) >> 2] = $1_1; | |
if ($4_1 >>> 0 < 9 >>> 0) { | |
break label$1 | |
} | |
HEAP32[($3_1 + 8 | 0) >> 2] = $1_1; | |
HEAP32[($3_1 + 4 | 0) >> 2] = $1_1; | |
HEAP32[($2_1 + -8 | 0) >> 2] = $1_1; | |
HEAP32[($2_1 + -12 | 0) >> 2] = $1_1; | |
if ($4_1 >>> 0 < 25 >>> 0) { | |
break label$1 | |
} | |
HEAP32[($3_1 + 24 | 0) >> 2] = $1_1; | |
HEAP32[($3_1 + 20 | 0) >> 2] = $1_1; | |
HEAP32[($3_1 + 16 | 0) >> 2] = $1_1; | |
HEAP32[($3_1 + 12 | 0) >> 2] = $1_1; | |
HEAP32[($2_1 + -16 | 0) >> 2] = $1_1; | |
HEAP32[($2_1 + -20 | 0) >> 2] = $1_1; | |
HEAP32[($2_1 + -24 | 0) >> 2] = $1_1; | |
HEAP32[($2_1 + -28 | 0) >> 2] = $1_1; | |
$5_1 = $3_1 & 4 | 0 | 24 | 0; | |
$2_1 = $4_1 - $5_1 | 0; | |
if ($2_1 >>> 0 < 32 >>> 0) { | |
break label$1 | |
} | |
i64toi32_i32$0 = 0; | |
$6_1 = $1_1; | |
$6$hi = i64toi32_i32$0; | |
i64toi32_i32$2 = $1_1; | |
i64toi32_i32$1 = 0; | |
i64toi32_i32$3 = 32; | |
i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; | |
if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { | |
i64toi32_i32$1 = i64toi32_i32$2 << i64toi32_i32$4 | 0; | |
$14_1 = 0; | |
} else { | |
i64toi32_i32$1 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$2 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$0 << i64toi32_i32$4 | 0) | 0; | |
$14_1 = i64toi32_i32$2 << i64toi32_i32$4 | 0; | |
} | |
$104$hi = i64toi32_i32$1; | |
i64toi32_i32$1 = $6$hi; | |
i64toi32_i32$1 = $104$hi; | |
i64toi32_i32$0 = $14_1; | |
i64toi32_i32$2 = $6$hi; | |
i64toi32_i32$3 = $6_1; | |
i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0; | |
$6_1 = i64toi32_i32$0 | $6_1 | 0; | |
$6$hi = i64toi32_i32$2; | |
$1_1 = $3_1 + $5_1 | 0; | |
label$2 : while (1) { | |
i64toi32_i32$2 = $6$hi; | |
i64toi32_i32$0 = $1_1; | |
HEAP32[($1_1 + 24 | 0) >> 2] = $6_1; | |
HEAP32[($1_1 + 28 | 0) >> 2] = i64toi32_i32$2; | |
i64toi32_i32$0 = $1_1; | |
HEAP32[($1_1 + 16 | 0) >> 2] = $6_1; | |
HEAP32[($1_1 + 20 | 0) >> 2] = i64toi32_i32$2; | |
i64toi32_i32$0 = $1_1; | |
HEAP32[($1_1 + 8 | 0) >> 2] = $6_1; | |
HEAP32[($1_1 + 12 | 0) >> 2] = i64toi32_i32$2; | |
i64toi32_i32$0 = $1_1; | |
HEAP32[$1_1 >> 2] = $6_1; | |
HEAP32[($1_1 + 4 | 0) >> 2] = i64toi32_i32$2; | |
$1_1 = $1_1 + 32 | 0; | |
$2_1 = $2_1 + -32 | 0; | |
if ($2_1 >>> 0 > 31 >>> 0) { | |
continue label$2 | |
} | |
break label$2; | |
}; | |
} | |
return $0_1 | 0; | |
} | |
function $20($0_1) { | |
$0_1 = $0_1 | 0; | |
} | |
function $21($0_1) { | |
$0_1 = $0_1 | 0; | |
} | |
function $22() { | |
$20(5884 | 0); | |
return 5892 | 0; | |
} | |
function $23() { | |
$21(5884 | 0); | |
} | |
function $24($0_1) { | |
$0_1 = $0_1 | 0; | |
var $1_1 = 0; | |
$1_1 = HEAPU8[($0_1 + 74 | 0) >> 0] | 0; | |
HEAP8[($0_1 + 74 | 0) >> 0] = $1_1 + -1 | 0 | $1_1 | 0; | |
label$1 : { | |
$1_1 = HEAP32[$0_1 >> 2] | 0; | |
if (!($1_1 & 8 | 0)) { | |
break label$1 | |
} | |
HEAP32[$0_1 >> 2] = $1_1 | 32 | 0; | |
return -1 | 0; | |
} | |
HEAP32[($0_1 + 4 | 0) >> 2] = 0; | |
HEAP32[($0_1 + 8 | 0) >> 2] = 0; | |
$1_1 = HEAP32[($0_1 + 44 | 0) >> 2] | 0; | |
HEAP32[($0_1 + 28 | 0) >> 2] = $1_1; | |
HEAP32[($0_1 + 20 | 0) >> 2] = $1_1; | |
HEAP32[($0_1 + 16 | 0) >> 2] = $1_1 + (HEAP32[($0_1 + 48 | 0) >> 2] | 0) | 0; | |
return 0 | 0; | |
} | |
function $25($0_1, $1_1) { | |
$0_1 = $0_1 | 0; | |
$1_1 = $1_1 | 0; | |
var $3_1 = 0, $2_1 = 0, $4_1 = 0, $6_1 = 0, $5_1 = 0; | |
label$1 : { | |
$2_1 = global$0 - 16 | 0; | |
$5_1 = $2_1; | |
if ($2_1 >>> 0 < global$2 >>> 0) { | |
fimport$3() | |
} | |
global$0 = $5_1; | |
} | |
HEAP8[($2_1 + 15 | 0) >> 0] = $1_1; | |
label$3 : { | |
label$4 : { | |
$3_1 = HEAP32[($0_1 + 16 | 0) >> 2] | 0; | |
if ($3_1) { | |
break label$4 | |
} | |
$3_1 = -1; | |
if ($24($0_1 | 0) | 0) { | |
break label$3 | |
} | |
$3_1 = HEAP32[($0_1 + 16 | 0) >> 2] | 0; | |
} | |
label$5 : { | |
$4_1 = HEAP32[($0_1 + 20 | 0) >> 2] | 0; | |
if ($4_1 >>> 0 >= $3_1 >>> 0) { | |
break label$5 | |
} | |
$3_1 = $1_1 & 255 | 0; | |
if (($3_1 | 0) == (HEAP8[($0_1 + 75 | 0) >> 0] | 0 | 0)) { | |
break label$5 | |
} | |
HEAP32[($0_1 + 20 | 0) >> 2] = $4_1 + 1 | 0; | |
HEAP8[$4_1 >> 0] = $1_1; | |
break label$3; | |
} | |
$3_1 = -1; | |
if ((FUNCTION_TABLE[HEAP32[($0_1 + 36 | 0) >> 2] | 0]($0_1, $2_1 + 15 | 0, 1) | 0 | 0) != (1 | 0)) { | |
break label$3 | |
} | |
$3_1 = HEAPU8[($2_1 + 15 | 0) >> 0] | 0; | |
} | |
label$6 : { | |
$6_1 = $2_1 + 16 | 0; | |
if ($6_1 >>> 0 < global$2 >>> 0) { | |
fimport$3() | |
} | |
global$0 = $6_1; | |
} | |
return $3_1 | 0; | |
} | |
function $26($0_1) { | |
$0_1 = $0_1 | 0; | |
return ($0_1 + -48 | 0) >>> 0 < 10 >>> 0 | 0; | |
} | |
function $27($0_1, $1_1, $2_1) { | |
$0_1 = $0_1 | 0; | |
$1_1 = $1_1 | 0; | |
$2_1 = $2_1 | 0; | |
var $3_1 = 0, $4_1 = 0; | |
$3_1 = ($2_1 | 0) != (0 | 0); | |
label$1 : { | |
label$2 : { | |
label$3 : { | |
if (!$2_1) { | |
break label$3 | |
} | |
if (!($0_1 & 3 | 0)) { | |
break label$3 | |
} | |
$4_1 = $1_1 & 255 | 0; | |
label$4 : while (1) { | |
if ((HEAPU8[$0_1 >> 0] | 0 | 0) == ($4_1 | 0)) { | |
break label$2 | |
} | |
$0_1 = $0_1 + 1 | 0; | |
$2_1 = $2_1 + -1 | 0; | |
$3_1 = ($2_1 | 0) != (0 | 0); | |
if (!$2_1) { | |
break label$3 | |
} | |
if ($0_1 & 3 | 0) { | |
continue label$4 | |
} | |
break label$4; | |
}; | |
} | |
if (!$3_1) { | |
break label$1 | |
} | |
} | |
label$5 : { | |
if ((HEAPU8[$0_1 >> 0] | 0 | 0) == ($1_1 & 255 | 0 | 0)) { | |
break label$5 | |
} | |
if ($2_1 >>> 0 < 4 >>> 0) { | |
break label$5 | |
} | |
$4_1 = Math_imul($1_1 & 255 | 0, 16843009); | |
label$6 : while (1) { | |
$3_1 = (HEAP32[$0_1 >> 2] | 0) ^ $4_1 | 0; | |
if ((($3_1 ^ -1 | 0) & ($3_1 + -16843009 | 0) | 0) & -2139062144 | 0) { | |
break label$5 | |
} | |
$0_1 = $0_1 + 4 | 0; | |
$2_1 = $2_1 + -4 | 0; | |
if ($2_1 >>> 0 > 3 >>> 0) { | |
continue label$6 | |
} | |
break label$6; | |
}; | |
} | |
if (!$2_1) { | |
break label$1 | |
} | |
$3_1 = $1_1 & 255 | 0; | |
label$7 : while (1) { | |
label$8 : { | |
if ((HEAPU8[$0_1 >> 0] | 0 | 0) != ($3_1 | 0)) { | |
break label$8 | |
} | |
return $0_1 | 0; | |
} | |
$0_1 = $0_1 + 1 | 0; | |
$2_1 = $2_1 + -1 | 0; | |
if ($2_1) { | |
continue label$7 | |
} | |
break label$7; | |
}; | |
} | |
return 0 | 0; | |
} | |
function $28() { | |
return 4604 | 0; | |
} | |
function $29($0_1, $1_1, $2_1) { | |
$0_1 = $0_1 | 0; | |
$1_1 = $1_1 | 0; | |
$2_1 = $2_1 | 0; | |
var $3_1 = 0; | |
$3_1 = 1; | |
label$1 : { | |
label$2 : { | |
if (!$0_1) { | |
break label$2 | |
} | |
if ($1_1 >>> 0 <= 127 >>> 0) { | |
break label$1 | |
} | |
label$3 : { | |
label$4 : { | |
if (HEAP32[(HEAP32[(($30() | 0) + 176 | 0) >> 2] | 0) >> 2] | 0) { | |
break label$4 | |
} | |
if (($1_1 & -128 | 0 | 0) == (57216 | 0)) { | |
break label$1 | |
} | |
HEAP32[($9() | 0) >> 2] = 25; | |
break label$3; | |
} | |
label$5 : { | |
if ($1_1 >>> 0 > 2047 >>> 0) { | |
break label$5 | |
} | |
HEAP8[($0_1 + 1 | 0) >> 0] = $1_1 & 63 | 0 | 128 | 0; | |
HEAP8[$0_1 >> 0] = $1_1 >>> 6 | 0 | 192 | 0; | |
return 2 | 0; | |
} | |
label$6 : { | |
label$7 : { | |
if ($1_1 >>> 0 < 55296 >>> 0) { | |
break label$7 | |
} | |
if (($1_1 & -8192 | 0 | 0) != (57344 | 0)) { | |
break label$6 | |
} | |
} | |
HEAP8[($0_1 + 2 | 0) >> 0] = $1_1 & 63 | 0 | 128 | 0; | |
HEAP8[$0_1 >> 0] = $1_1 >>> 12 | 0 | 224 | 0; | |
HEAP8[($0_1 + 1 | 0) >> 0] = ($1_1 >>> 6 | 0) & 63 | 0 | 128 | 0; | |
return 3 | 0; | |
} | |
label$8 : { | |
if (($1_1 + -65536 | 0) >>> 0 > 1048575 >>> 0) { | |
break label$8 | |
} | |
HEAP8[($0_1 + 3 | 0) >> 0] = $1_1 & 63 | 0 | 128 | 0; | |
HEAP8[$0_1 >> 0] = $1_1 >>> 18 | 0 | 240 | 0; | |
HEAP8[($0_1 + 2 | 0) >> 0] = ($1_1 >>> 6 | 0) & 63 | 0 | 128 | 0; | |
HEAP8[($0_1 + 1 | 0) >> 0] = ($1_1 >>> 12 | 0) & 63 | 0 | 128 | 0; | |
return 4 | 0; | |
} | |
HEAP32[($9() | 0) >> 2] = 25; | |
} | |
$3_1 = -1; | |
} | |
return $3_1 | 0; | |
} | |
HEAP8[$0_1 >> 0] = $1_1; | |
return 1 | 0; | |
} | |
function $30() { | |
return $28() | 0 | 0; | |
} | |
function $31($0_1, $1_1) { | |
$0_1 = $0_1 | 0; | |
$1_1 = $1_1 | 0; | |
label$1 : { | |
if ($0_1) { | |
break label$1 | |
} | |
return 0 | 0; | |
} | |
return $29($0_1 | 0, $1_1 | 0, 0 | 0) | 0 | 0; | |
} | |
function $32($0_1, $1_1) { | |
$0_1 = +$0_1; | |
$1_1 = $1_1 | 0; | |
var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $2_1 = 0, i64toi32_i32$2 = 0, i64toi32_i32$4 = 0, $3_1 = 0, $10_1 = 0, $3$hi = 0; | |
label$1 : { | |
wasm2js_scratch_store_f64(+$0_1); | |
i64toi32_i32$0 = wasm2js_scratch_load_i32(1 | 0) | 0; | |
$3_1 = wasm2js_scratch_load_i32(0 | 0) | 0; | |
$3$hi = i64toi32_i32$0; | |
i64toi32_i32$2 = $3_1; | |
i64toi32_i32$1 = 0; | |
i64toi32_i32$3 = 52; | |
i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; | |
if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { | |
i64toi32_i32$1 = 0; | |
$10_1 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0; | |
} else { | |
i64toi32_i32$1 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0; | |
$10_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$0 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0; | |
} | |
$2_1 = $10_1 & 2047 | 0; | |
if (($2_1 | 0) == (2047 | 0)) { | |
break label$1 | |
} | |
label$2 : { | |
if ($2_1) { | |
break label$2 | |
} | |
label$3 : { | |
label$4 : { | |
if ($0_1 != 0.0) { | |
break label$4 | |
} | |
$2_1 = 0; | |
break label$3; | |
} | |
$0_1 = +$32(+($0_1 * 18446744073709551615.0), $1_1 | 0); | |
$2_1 = (HEAP32[$1_1 >> 2] | 0) + -64 | 0; | |
} | |
HEAP32[$1_1 >> 2] = $2_1; | |
return +$0_1; | |
} | |
HEAP32[$1_1 >> 2] = $2_1 + -1022 | 0; | |
i64toi32_i32$1 = $3$hi; | |
i64toi32_i32$0 = $3_1; | |
i64toi32_i32$2 = -2146435073; | |
i64toi32_i32$3 = -1; | |
i64toi32_i32$2 = i64toi32_i32$1 & i64toi32_i32$2 | 0; | |
i64toi32_i32$1 = i64toi32_i32$0 & i64toi32_i32$3 | 0; | |
i64toi32_i32$0 = 1071644672; | |
i64toi32_i32$3 = 0; | |
i64toi32_i32$0 = i64toi32_i32$2 | i64toi32_i32$0 | 0; | |
wasm2js_scratch_store_i32(0 | 0, i64toi32_i32$1 | i64toi32_i32$3 | 0 | 0); | |
wasm2js_scratch_store_i32(1 | 0, i64toi32_i32$0 | 0); | |
$0_1 = +wasm2js_scratch_load_f64(); | |
} | |
return +$0_1; | |
} | |
function $33($0_1, $1_1, $1$hi, $2_1, $2$hi, $3_1) { | |
$0_1 = $0_1 | 0; | |
$1_1 = $1_1 | 0; | |
$1$hi = $1$hi | 0; | |
$2_1 = $2_1 | 0; | |
$2$hi = $2$hi | 0; | |
$3_1 = $3_1 | 0; | |
var i64toi32_i32$1 = 0, i64toi32_i32$4 = 0, i64toi32_i32$2 = 0, i64toi32_i32$0 = 0, i64toi32_i32$3 = 0, $4$hi = 0, $18_1 = 0, $20_1 = 0, $21_1 = 0, $22_1 = 0, $11$hi = 0, $18$hi = 0, $19_1 = 0, $19$hi = 0, $4_1 = 0, $24$hi = 0; | |
label$1 : { | |
label$2 : { | |
if (!($3_1 & 64 | 0)) { | |
break label$2 | |
} | |
i64toi32_i32$0 = $1$hi; | |
i64toi32_i32$0 = 0; | |
$11$hi = i64toi32_i32$0; | |
i64toi32_i32$0 = $1$hi; | |
i64toi32_i32$2 = $1_1; | |
i64toi32_i32$1 = $11$hi; | |
i64toi32_i32$3 = $3_1 + -64 | 0; | |
i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; | |
if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { | |
i64toi32_i32$1 = i64toi32_i32$2 << i64toi32_i32$4 | 0; | |
$18_1 = 0; | |
} else { | |
i64toi32_i32$1 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$2 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$0 << i64toi32_i32$4 | 0) | 0; | |
$18_1 = i64toi32_i32$2 << i64toi32_i32$4 | 0; | |
} | |
$2_1 = $18_1; | |
$2$hi = i64toi32_i32$1; | |
i64toi32_i32$1 = 0; | |
$1_1 = 0; | |
$1$hi = i64toi32_i32$1; | |
break label$1; | |
} | |
if (!$3_1) { | |
break label$1 | |
} | |
i64toi32_i32$1 = $1$hi; | |
i64toi32_i32$1 = 0; | |
$18$hi = i64toi32_i32$1; | |
i64toi32_i32$1 = $1$hi; | |
i64toi32_i32$0 = $1_1; | |
i64toi32_i32$2 = $18$hi; | |
i64toi32_i32$3 = 64 - $3_1 | 0; | |
i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; | |
if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { | |
i64toi32_i32$2 = 0; | |
$20_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; | |
} else { | |
i64toi32_i32$2 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; | |
$20_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$0 >>> i64toi32_i32$4 | 0) | 0; | |
} | |
$19_1 = $20_1; | |
$19$hi = i64toi32_i32$2; | |
i64toi32_i32$2 = $2$hi; | |
i64toi32_i32$2 = 0; | |
$4_1 = $3_1; | |
$4$hi = i64toi32_i32$2; | |
i64toi32_i32$2 = $2$hi; | |
i64toi32_i32$1 = $2_1; | |
i64toi32_i32$0 = $4$hi; | |
i64toi32_i32$3 = $3_1; | |
i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; | |
if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { | |
i64toi32_i32$0 = i64toi32_i32$1 << i64toi32_i32$4 | 0; | |
$21_1 = 0; | |
} else { | |
i64toi32_i32$0 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$1 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$2 << i64toi32_i32$4 | 0) | 0; | |
$21_1 = i64toi32_i32$1 << i64toi32_i32$4 | 0; | |
} | |
$24$hi = i64toi32_i32$0; | |
i64toi32_i32$0 = $19$hi; | |
i64toi32_i32$2 = $19_1; | |
i64toi32_i32$1 = $24$hi; | |
i64toi32_i32$3 = $21_1; | |
i64toi32_i32$1 = i64toi32_i32$0 | i64toi32_i32$1 | 0; | |
$2_1 = i64toi32_i32$2 | i64toi32_i32$3 | 0; | |
$2$hi = i64toi32_i32$1; | |
i64toi32_i32$1 = $1$hi; | |
i64toi32_i32$1 = $4$hi; | |
i64toi32_i32$1 = $1$hi; | |
i64toi32_i32$0 = $1_1; | |
i64toi32_i32$2 = $4$hi; | |
i64toi32_i32$3 = $4_1; | |
i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; | |
if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { | |
i64toi32_i32$2 = i64toi32_i32$0 << i64toi32_i32$4 | 0; | |
$22_1 = 0; | |
} else { | |
i64toi32_i32$2 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$0 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$1 << i64toi32_i32$4 | 0) | 0; | |
$22_1 = i64toi32_i32$0 << i64toi32_i32$4 | 0; | |
} | |
$1_1 = $22_1; | |
$1$hi = i64toi32_i32$2; | |
} | |
i64toi32_i32$2 = $1$hi; | |
i64toi32_i32$0 = $0_1; | |
HEAP32[i64toi32_i32$0 >> 2] = $1_1; | |
HEAP32[(i64toi32_i32$0 + 4 | 0) >> 2] = i64toi32_i32$2; | |
i64toi32_i32$2 = $2$hi; | |
HEAP32[(i64toi32_i32$0 + 8 | 0) >> 2] = $2_1; | |
HEAP32[(i64toi32_i32$0 + 12 | 0) >> 2] = i64toi32_i32$2; | |
} | |
function $34($0_1, $1_1, $1$hi, $2_1, $2$hi, $3_1) { | |
$0_1 = $0_1 | 0; | |
$1_1 = $1_1 | 0; | |
$1$hi = $1$hi | 0; | |
$2_1 = $2_1 | 0; | |
$2$hi = $2$hi | 0; | |
$3_1 = $3_1 | 0; | |
var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$2 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $4$hi = 0, $18_1 = 0, $20_1 = 0, $21_1 = 0, $22_1 = 0, $11$hi = 0, $18$hi = 0, $19_1 = 0, $19$hi = 0, $4_1 = 0, $24$hi = 0; | |
label$1 : { | |
label$2 : { | |
if (!($3_1 & 64 | 0)) { | |
break label$2 | |
} | |
i64toi32_i32$0 = $2$hi; | |
i64toi32_i32$0 = 0; | |
$11$hi = i64toi32_i32$0; | |
i64toi32_i32$0 = $2$hi; | |
i64toi32_i32$2 = $2_1; | |
i64toi32_i32$1 = $11$hi; | |
i64toi32_i32$3 = $3_1 + -64 | 0; | |
i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; | |
if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { | |
i64toi32_i32$1 = 0; | |
$18_1 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0; | |
} else { | |
i64toi32_i32$1 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0; | |
$18_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$0 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0; | |
} | |
$1_1 = $18_1; | |
$1$hi = i64toi32_i32$1; | |
i64toi32_i32$1 = 0; | |
$2_1 = 0; | |
$2$hi = i64toi32_i32$1; | |
break label$1; | |
} | |
if (!$3_1) { | |
break label$1 | |
} | |
i64toi32_i32$1 = $2$hi; | |
i64toi32_i32$1 = 0; | |
$18$hi = i64toi32_i32$1; | |
i64toi32_i32$1 = $2$hi; | |
i64toi32_i32$0 = $2_1; | |
i64toi32_i32$2 = $18$hi; | |
i64toi32_i32$3 = 64 - $3_1 | 0; | |
i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; | |
if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { | |
i64toi32_i32$2 = i64toi32_i32$0 << i64toi32_i32$4 | 0; | |
$20_1 = 0; | |
} else { | |
i64toi32_i32$2 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$0 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$1 << i64toi32_i32$4 | 0) | 0; | |
$20_1 = i64toi32_i32$0 << i64toi32_i32$4 | 0; | |
} | |
$19_1 = $20_1; | |
$19$hi = i64toi32_i32$2; | |
i64toi32_i32$2 = $1$hi; | |
i64toi32_i32$2 = 0; | |
$4_1 = $3_1; | |
$4$hi = i64toi32_i32$2; | |
i64toi32_i32$2 = $1$hi; | |
i64toi32_i32$1 = $1_1; | |
i64toi32_i32$0 = $4$hi; | |
i64toi32_i32$3 = $3_1; | |
i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; | |
if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { | |
i64toi32_i32$0 = 0; | |
$21_1 = i64toi32_i32$2 >>> i64toi32_i32$4 | 0; | |
} else { | |
i64toi32_i32$0 = i64toi32_i32$2 >>> i64toi32_i32$4 | 0; | |
$21_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$2 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$1 >>> i64toi32_i32$4 | 0) | 0; | |
} | |
$24$hi = i64toi32_i32$0; | |
i64toi32_i32$0 = $19$hi; | |
i64toi32_i32$2 = $19_1; | |
i64toi32_i32$1 = $24$hi; | |
i64toi32_i32$3 = $21_1; | |
i64toi32_i32$1 = i64toi32_i32$0 | i64toi32_i32$1 | 0; | |
$1_1 = i64toi32_i32$2 | i64toi32_i32$3 | 0; | |
$1$hi = i64toi32_i32$1; | |
i64toi32_i32$1 = $2$hi; | |
i64toi32_i32$1 = $4$hi; | |
i64toi32_i32$1 = $2$hi; | |
i64toi32_i32$0 = $2_1; | |
i64toi32_i32$2 = $4$hi; | |
i64toi32_i32$3 = $4_1; | |
i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; | |
if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { | |
i64toi32_i32$2 = 0; | |
$22_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; | |
} else { | |
i64toi32_i32$2 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; | |
$22_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$0 >>> i64toi32_i32$4 | 0) | 0; | |
} | |
$2_1 = $22_1; | |
$2$hi = i64toi32_i32$2; | |
} | |
i64toi32_i32$2 = $1$hi; | |
i64toi32_i32$0 = $0_1; | |
HEAP32[i64toi32_i32$0 >> 2] = $1_1; | |
HEAP32[(i64toi32_i32$0 + 4 | 0) >> 2] = i64toi32_i32$2; | |
i64toi32_i32$2 = $2$hi; | |
HEAP32[(i64toi32_i32$0 + 8 | 0) >> 2] = $2_1; | |
HEAP32[(i64toi32_i32$0 + 12 | 0) >> 2] = i64toi32_i32$2; | |
} | |
function $35($0_1, $0$hi, $1_1, $1$hi) { | |
$0_1 = $0_1 | 0; | |
$0$hi = $0$hi | 0; | |
$1_1 = $1_1 | 0; | |
$1$hi = $1$hi | 0; | |
var i64toi32_i32$0 = 0, i64toi32_i32$5 = 0, i64toi32_i32$4 = 0, i64toi32_i32$2 = 0, i64toi32_i32$3 = 0, i64toi32_i32$1 = 0, $6_1 = 0, $6$hi = 0, $7$hi = 0, $7_1 = 0, $2_1 = 0, $3_1 = 0, $44_1 = 0, $46_1 = 0, $47_1 = 0, $48_1 = 0, $49_1 = 0, $51_1 = 0, $52_1 = 0, $5_1 = 0, $4_1 = 0, $18_1 = 0, $18$hi = 0, $20$hi = 0, $23_1 = 0, $23$hi = 0, $25$hi = 0, $39$hi = 0, $43_1 = 0, $45_1 = 0, $50_1 = 0, $50$hi = 0, $52$hi = 0, $80 = 0, $80$hi = 0, $84$hi = 0, $87 = 0, $87$hi = 0, $89 = 0, $89$hi = 0, $93 = 0, $93$hi = 0, $95 = 0, $96$hi = 0, $106$hi = 0, $117 = 0, $117$hi = 0; | |
label$1 : { | |
$2_1 = global$0 - 32 | 0; | |
$4_1 = $2_1; | |
if ($2_1 >>> 0 < global$2 >>> 0) { | |
fimport$3() | |
} | |
global$0 = $4_1; | |
} | |
label$3 : { | |
label$4 : { | |
i64toi32_i32$0 = $1$hi; | |
i64toi32_i32$2 = $1_1; | |
i64toi32_i32$1 = 2147483647; | |
i64toi32_i32$3 = -1; | |
i64toi32_i32$1 = i64toi32_i32$0 & i64toi32_i32$1 | 0; | |
$6_1 = i64toi32_i32$2 & i64toi32_i32$3 | 0; | |
$6$hi = i64toi32_i32$1; | |
i64toi32_i32$0 = $6_1; | |
i64toi32_i32$2 = -1006698496; | |
i64toi32_i32$3 = 0; | |
i64toi32_i32$4 = i64toi32_i32$0 + i64toi32_i32$3 | 0; | |
i64toi32_i32$5 = i64toi32_i32$1 + i64toi32_i32$2 | 0; | |
if (i64toi32_i32$4 >>> 0 < i64toi32_i32$3 >>> 0) { | |
i64toi32_i32$5 = i64toi32_i32$5 + 1 | 0 | |
} | |
$18_1 = i64toi32_i32$4; | |
$18$hi = i64toi32_i32$5; | |
i64toi32_i32$5 = $6$hi; | |
i64toi32_i32$1 = $6_1; | |
i64toi32_i32$0 = -1140785152; | |
i64toi32_i32$3 = 0; | |
i64toi32_i32$2 = i64toi32_i32$1 + i64toi32_i32$3 | 0; | |
i64toi32_i32$4 = i64toi32_i32$5 + i64toi32_i32$0 | 0; | |
if (i64toi32_i32$2 >>> 0 < i64toi32_i32$3 >>> 0) { | |
i64toi32_i32$4 = i64toi32_i32$4 + 1 | 0 | |
} | |
$20$hi = i64toi32_i32$4; | |
i64toi32_i32$4 = $18$hi; | |
i64toi32_i32$5 = $18_1; | |
i64toi32_i32$1 = $20$hi; | |
i64toi32_i32$3 = i64toi32_i32$2; | |
if (i64toi32_i32$4 >>> 0 > i64toi32_i32$1 >>> 0 | ((i64toi32_i32$4 | 0) == (i64toi32_i32$1 | 0) & i64toi32_i32$5 >>> 0 >= i64toi32_i32$3 >>> 0 | 0) | 0) { | |
break label$4 | |
} | |
i64toi32_i32$5 = $0$hi; | |
i64toi32_i32$3 = $0_1; | |
i64toi32_i32$4 = 0; | |
i64toi32_i32$1 = 60; | |
i64toi32_i32$0 = i64toi32_i32$1 & 31 | 0; | |
if (32 >>> 0 <= (i64toi32_i32$1 & 63 | 0) >>> 0) { | |
i64toi32_i32$4 = 0; | |
$44_1 = i64toi32_i32$5 >>> i64toi32_i32$0 | 0; | |
} else { | |
i64toi32_i32$4 = i64toi32_i32$5 >>> i64toi32_i32$0 | 0; | |
$44_1 = (((1 << i64toi32_i32$0 | 0) - 1 | 0) & i64toi32_i32$5 | 0) << (32 - i64toi32_i32$0 | 0) | 0 | (i64toi32_i32$3 >>> i64toi32_i32$0 | 0) | 0; | |
} | |
$23_1 = $44_1; | |
$23$hi = i64toi32_i32$4; | |
i64toi32_i32$4 = $1$hi; | |
i64toi32_i32$5 = $1_1; | |
i64toi32_i32$3 = 0; | |
i64toi32_i32$1 = 4; | |
i64toi32_i32$0 = i64toi32_i32$1 & 31 | 0; | |
if (32 >>> 0 <= (i64toi32_i32$1 & 63 | 0) >>> 0) { | |
i64toi32_i32$3 = i64toi32_i32$5 << i64toi32_i32$0 | 0; | |
$46_1 = 0; | |
} else { | |
i64toi32_i32$3 = ((1 << i64toi32_i32$0 | 0) - 1 | 0) & (i64toi32_i32$5 >>> (32 - i64toi32_i32$0 | 0) | 0) | 0 | (i64toi32_i32$4 << i64toi32_i32$0 | 0) | 0; | |
$46_1 = i64toi32_i32$5 << i64toi32_i32$0 | 0; | |
} | |
$25$hi = i64toi32_i32$3; | |
i64toi32_i32$3 = $23$hi; | |
i64toi32_i32$4 = $23_1; | |
i64toi32_i32$5 = $25$hi; | |
i64toi32_i32$1 = $46_1; | |
i64toi32_i32$5 = i64toi32_i32$3 | i64toi32_i32$5 | 0; | |
$6_1 = i64toi32_i32$4 | i64toi32_i32$1 | 0; | |
$6$hi = i64toi32_i32$5; | |
label$5 : { | |
i64toi32_i32$5 = $0$hi; | |
i64toi32_i32$3 = $0_1; | |
i64toi32_i32$4 = 268435455; | |
i64toi32_i32$1 = -1; | |
i64toi32_i32$4 = i64toi32_i32$5 & i64toi32_i32$4 | 0; | |
$0_1 = i64toi32_i32$3 & i64toi32_i32$1 | 0; | |
$0$hi = i64toi32_i32$4; | |
i64toi32_i32$5 = $0_1; | |
i64toi32_i32$3 = 134217728; | |
i64toi32_i32$1 = 1; | |
if (i64toi32_i32$4 >>> 0 < i64toi32_i32$3 >>> 0 | ((i64toi32_i32$4 | 0) == (i64toi32_i32$3 | 0) & i64toi32_i32$5 >>> 0 < i64toi32_i32$1 >>> 0 | 0) | 0) { | |
break label$5 | |
} | |
i64toi32_i32$5 = $6$hi; | |
i64toi32_i32$1 = $6_1; | |
i64toi32_i32$4 = 1073741824; | |
i64toi32_i32$3 = 1; | |
i64toi32_i32$0 = i64toi32_i32$1 + i64toi32_i32$3 | 0; | |
i64toi32_i32$2 = i64toi32_i32$5 + i64toi32_i32$4 | 0; | |
if (i64toi32_i32$0 >>> 0 < i64toi32_i32$3 >>> 0) { | |
i64toi32_i32$2 = i64toi32_i32$2 + 1 | 0 | |
} | |
$7_1 = i64toi32_i32$0; | |
$7$hi = i64toi32_i32$2; | |
break label$3; | |
} | |
i64toi32_i32$2 = $6$hi; | |
i64toi32_i32$5 = $6_1; | |
i64toi32_i32$1 = 1073741824; | |
i64toi32_i32$3 = 0; | |
i64toi32_i32$4 = i64toi32_i32$5 + i64toi32_i32$3 | 0; | |
i64toi32_i32$0 = i64toi32_i32$2 + i64toi32_i32$1 | 0; | |
if (i64toi32_i32$4 >>> 0 < i64toi32_i32$3 >>> 0) { | |
i64toi32_i32$0 = i64toi32_i32$0 + 1 | 0 | |
} | |
$7_1 = i64toi32_i32$4; | |
$7$hi = i64toi32_i32$0; | |
i64toi32_i32$0 = $0$hi; | |
i64toi32_i32$2 = $0_1; | |
i64toi32_i32$5 = 134217728; | |
i64toi32_i32$3 = 0; | |
i64toi32_i32$5 = i64toi32_i32$0 ^ i64toi32_i32$5 | 0; | |
i64toi32_i32$0 = i64toi32_i32$2 ^ i64toi32_i32$3 | 0; | |
i64toi32_i32$2 = 0; | |
i64toi32_i32$3 = 0; | |
if ((i64toi32_i32$0 | 0) != (i64toi32_i32$3 | 0) | (i64toi32_i32$5 | 0) != (i64toi32_i32$2 | 0) | 0) { | |
break label$3 | |
} | |
i64toi32_i32$0 = $7$hi; | |
i64toi32_i32$3 = $7_1; | |
i64toi32_i32$5 = 0; | |
i64toi32_i32$2 = 1; | |
i64toi32_i32$5 = i64toi32_i32$0 & i64toi32_i32$5 | 0; | |
$39$hi = i64toi32_i32$5; | |
i64toi32_i32$5 = i64toi32_i32$0; | |
i64toi32_i32$5 = $39$hi; | |
i64toi32_i32$0 = i64toi32_i32$3 & i64toi32_i32$2 | 0; | |
i64toi32_i32$3 = $7$hi; | |
i64toi32_i32$2 = $7_1; | |
i64toi32_i32$1 = i64toi32_i32$0 + i64toi32_i32$2 | 0; | |
i64toi32_i32$4 = i64toi32_i32$5 + i64toi32_i32$3 | 0; | |
if (i64toi32_i32$1 >>> 0 < i64toi32_i32$2 >>> 0) { | |
i64toi32_i32$4 = i64toi32_i32$4 + 1 | 0 | |
} | |
$7_1 = i64toi32_i32$1; | |
$7$hi = i64toi32_i32$4; | |
break label$3; | |
} | |
label$6 : { | |
i64toi32_i32$4 = $0$hi; | |
$43_1 = !($0_1 | i64toi32_i32$4 | 0); | |
i64toi32_i32$4 = $6$hi; | |
i64toi32_i32$5 = $6_1; | |
i64toi32_i32$0 = 2147418112; | |
i64toi32_i32$2 = 0; | |
$45_1 = i64toi32_i32$4 >>> 0 < i64toi32_i32$0 >>> 0 | ((i64toi32_i32$4 | 0) == (i64toi32_i32$0 | 0) & i64toi32_i32$5 >>> 0 < i64toi32_i32$2 >>> 0 | 0) | 0; | |
i64toi32_i32$5 = i64toi32_i32$4; | |
i64toi32_i32$2 = $6_1; | |
i64toi32_i32$4 = 2147418112; | |
i64toi32_i32$0 = 0; | |
if ((i64toi32_i32$2 | 0) == (i64toi32_i32$0 | 0) & (i64toi32_i32$5 | 0) == (i64toi32_i32$4 | 0) | 0 ? $43_1 : $45_1) { | |
break label$6 | |
} | |
i64toi32_i32$2 = $0$hi; | |
i64toi32_i32$0 = $0_1; | |
i64toi32_i32$5 = 0; | |
i64toi32_i32$4 = 60; | |
i64toi32_i32$3 = i64toi32_i32$4 & 31 | 0; | |
if (32 >>> 0 <= (i64toi32_i32$4 & 63 | 0) >>> 0) { | |
i64toi32_i32$5 = 0; | |
$47_1 = i64toi32_i32$2 >>> i64toi32_i32$3 | 0; | |
} else { | |
i64toi32_i32$5 = i64toi32_i32$2 >>> i64toi32_i32$3 | 0; | |
$47_1 = (((1 << i64toi32_i32$3 | 0) - 1 | 0) & i64toi32_i32$2 | 0) << (32 - i64toi32_i32$3 | 0) | 0 | (i64toi32_i32$0 >>> i64toi32_i32$3 | 0) | 0; | |
} | |
$50_1 = $47_1; | |
$50$hi = i64toi32_i32$5; | |
i64toi32_i32$5 = $1$hi; | |
i64toi32_i32$2 = $1_1; | |
i64toi32_i32$0 = 0; | |
i64toi32_i32$4 = 4; | |
i64toi32_i32$3 = i64toi32_i32$4 & 31 | 0; | |
if (32 >>> 0 <= (i64toi32_i32$4 & 63 | 0) >>> 0) { | |
i64toi32_i32$0 = i64toi32_i32$2 << i64toi32_i32$3 | 0; | |
$48_1 = 0; | |
} else { | |
i64toi32_i32$0 = ((1 << i64toi32_i32$3 | 0) - 1 | 0) & (i64toi32_i32$2 >>> (32 - i64toi32_i32$3 | 0) | 0) | 0 | (i64toi32_i32$5 << i64toi32_i32$3 | 0) | 0; | |
$48_1 = i64toi32_i32$2 << i64toi32_i32$3 | 0; | |
} | |
$52$hi = i64toi32_i32$0; | |
i64toi32_i32$0 = $50$hi; | |
i64toi32_i32$5 = $50_1; | |
i64toi32_i32$2 = $52$hi; | |
i64toi32_i32$4 = $48_1; | |
i64toi32_i32$2 = i64toi32_i32$0 | i64toi32_i32$2 | 0; | |
i64toi32_i32$0 = i64toi32_i32$5 | i64toi32_i32$4 | 0; | |
i64toi32_i32$5 = 524287; | |
i64toi32_i32$4 = -1; | |
i64toi32_i32$5 = i64toi32_i32$2 & i64toi32_i32$5 | 0; | |
i64toi32_i32$2 = i64toi32_i32$0 & i64toi32_i32$4 | 0; | |
i64toi32_i32$0 = 2146959360; | |
i64toi32_i32$4 = 0; | |
i64toi32_i32$0 = i64toi32_i32$5 | i64toi32_i32$0 | 0; | |
$7_1 = i64toi32_i32$2 | i64toi32_i32$4 | 0; | |
$7$hi = i64toi32_i32$0; | |
break label$3; | |
} | |
i64toi32_i32$0 = 2146435072; | |
$7_1 = 0; | |
$7$hi = i64toi32_i32$0; | |
i64toi32_i32$0 = $6$hi; | |
i64toi32_i32$5 = $6_1; | |
i64toi32_i32$2 = 1140785151; | |
i64toi32_i32$4 = -1; | |
if (i64toi32_i32$0 >>> 0 > i64toi32_i32$2 >>> 0 | ((i64toi32_i32$0 | 0) == (i64toi32_i32$2 | 0) & i64toi32_i32$5 >>> 0 > i64toi32_i32$4 >>> 0 | 0) | 0) { | |
break label$3 | |
} | |
i64toi32_i32$5 = 0; | |
$7_1 = 0; | |
$7$hi = i64toi32_i32$5; | |
i64toi32_i32$5 = $6$hi; | |
i64toi32_i32$4 = $6_1; | |
i64toi32_i32$0 = 0; | |
i64toi32_i32$2 = 48; | |
i64toi32_i32$3 = i64toi32_i32$2 & 31 | 0; | |
if (32 >>> 0 <= (i64toi32_i32$2 & 63 | 0) >>> 0) { | |
i64toi32_i32$0 = 0; | |
$49_1 = i64toi32_i32$5 >>> i64toi32_i32$3 | 0; | |
} else { | |
i64toi32_i32$0 = i64toi32_i32$5 >>> i64toi32_i32$3 | 0; | |
$49_1 = (((1 << i64toi32_i32$3 | 0) - 1 | 0) & i64toi32_i32$5 | 0) << (32 - i64toi32_i32$3 | 0) | 0 | (i64toi32_i32$4 >>> i64toi32_i32$3 | 0) | 0; | |
} | |
$3_1 = $49_1; | |
if ($3_1 >>> 0 < 15249 >>> 0) { | |
break label$3 | |
} | |
i64toi32_i32$0 = $0$hi; | |
i64toi32_i32$0 = $1$hi; | |
i64toi32_i32$5 = $1_1; | |
i64toi32_i32$4 = 65535; | |
i64toi32_i32$2 = -1; | |
i64toi32_i32$4 = i64toi32_i32$0 & i64toi32_i32$4 | 0; | |
i64toi32_i32$0 = i64toi32_i32$5 & i64toi32_i32$2 | 0; | |
i64toi32_i32$5 = 65536; | |
i64toi32_i32$2 = 0; | |
i64toi32_i32$5 = i64toi32_i32$4 | i64toi32_i32$5 | 0; | |
$6_1 = i64toi32_i32$0 | i64toi32_i32$2 | 0; | |
$6$hi = i64toi32_i32$5; | |
i64toi32_i32$5 = $0$hi; | |
i64toi32_i32$0 = $6$hi; | |
$33($2_1 + 16 | 0 | 0, $0_1 | 0, i64toi32_i32$5 | 0, $6_1 | 0, i64toi32_i32$0 | 0, $3_1 + -15233 | 0 | 0); | |
i64toi32_i32$0 = i64toi32_i32$5; | |
i64toi32_i32$0 = $6$hi; | |
i64toi32_i32$0 = i64toi32_i32$5; | |
i64toi32_i32$5 = $6$hi; | |
$34($2_1 | 0, $0_1 | 0, i64toi32_i32$0 | 0, $6_1 | 0, i64toi32_i32$5 | 0, 15361 - $3_1 | 0 | 0); | |
i64toi32_i32$4 = $2_1; | |
i64toi32_i32$5 = HEAP32[i64toi32_i32$4 >> 2] | 0; | |
i64toi32_i32$0 = HEAP32[(i64toi32_i32$4 + 4 | 0) >> 2] | 0; | |
$6_1 = i64toi32_i32$5; | |
$6$hi = i64toi32_i32$0; | |
i64toi32_i32$4 = i64toi32_i32$5; | |
i64toi32_i32$5 = 0; | |
i64toi32_i32$2 = 60; | |
i64toi32_i32$3 = i64toi32_i32$2 & 31 | 0; | |
if (32 >>> 0 <= (i64toi32_i32$2 & 63 | 0) >>> 0) { | |
i64toi32_i32$5 = 0; | |
$51_1 = i64toi32_i32$0 >>> i64toi32_i32$3 | 0; | |
} else { | |
i64toi32_i32$5 = i64toi32_i32$0 >>> i64toi32_i32$3 | 0; | |
$51_1 = (((1 << i64toi32_i32$3 | 0) - 1 | 0) & i64toi32_i32$0 | 0) << (32 - i64toi32_i32$3 | 0) | 0 | (i64toi32_i32$4 >>> i64toi32_i32$3 | 0) | 0; | |
} | |
$80 = $51_1; | |
$80$hi = i64toi32_i32$5; | |
i64toi32_i32$0 = $2_1 + 8 | 0; | |
i64toi32_i32$5 = HEAP32[i64toi32_i32$0 >> 2] | 0; | |
i64toi32_i32$4 = HEAP32[(i64toi32_i32$0 + 4 | 0) >> 2] | 0; | |
i64toi32_i32$0 = i64toi32_i32$5; | |
i64toi32_i32$5 = 0; | |
i64toi32_i32$2 = 4; | |
i64toi32_i32$3 = i64toi32_i32$2 & 31 | 0; | |
if (32 >>> 0 <= (i64toi32_i32$2 & 63 | 0) >>> 0) { | |
i64toi32_i32$5 = i64toi32_i32$0 << i64toi32_i32$3 | 0; | |
$52_1 = 0; | |
} else { | |
i64toi32_i32$5 = ((1 << i64toi32_i32$3 | 0) - 1 | 0) & (i64toi32_i32$0 >>> (32 - i64toi32_i32$3 | 0) | 0) | 0 | (i64toi32_i32$4 << i64toi32_i32$3 | 0) | 0; | |
$52_1 = i64toi32_i32$0 << i64toi32_i32$3 | 0; | |
} | |
$84$hi = i64toi32_i32$5; | |
i64toi32_i32$5 = $80$hi; | |
i64toi32_i32$4 = $80; | |
i64toi32_i32$0 = $84$hi; | |
i64toi32_i32$2 = $52_1; | |
i64toi32_i32$0 = i64toi32_i32$5 | i64toi32_i32$0 | 0; | |
$7_1 = i64toi32_i32$4 | i64toi32_i32$2 | 0; | |
$7$hi = i64toi32_i32$0; | |
label$7 : { | |
i64toi32_i32$0 = $6$hi; | |
i64toi32_i32$5 = $6_1; | |
i64toi32_i32$4 = 268435455; | |
i64toi32_i32$2 = -1; | |
i64toi32_i32$4 = i64toi32_i32$0 & i64toi32_i32$4 | 0; | |
$87 = i64toi32_i32$5 & i64toi32_i32$2 | 0; | |
$87$hi = i64toi32_i32$4; | |
i64toi32_i32$0 = $2_1; | |
i64toi32_i32$4 = HEAP32[(i64toi32_i32$0 + 16 | 0) >> 2] | 0; | |
i64toi32_i32$5 = HEAP32[(i64toi32_i32$0 + 20 | 0) >> 2] | 0; | |
$89 = i64toi32_i32$4; | |
$89$hi = i64toi32_i32$5; | |
i64toi32_i32$0 = (i64toi32_i32$0 + 16 | 0) + 8 | 0; | |
i64toi32_i32$5 = HEAP32[i64toi32_i32$0 >> 2] | 0; | |
i64toi32_i32$4 = HEAP32[(i64toi32_i32$0 + 4 | 0) >> 2] | 0; | |
$93 = i64toi32_i32$5; | |
$93$hi = i64toi32_i32$4; | |
i64toi32_i32$4 = $89$hi; | |
i64toi32_i32$0 = $89; | |
i64toi32_i32$5 = $93$hi; | |
i64toi32_i32$2 = $93; | |
i64toi32_i32$5 = i64toi32_i32$4 | i64toi32_i32$5 | 0; | |
i64toi32_i32$4 = i64toi32_i32$0 | i64toi32_i32$2 | 0; | |
i64toi32_i32$0 = 0; | |
i64toi32_i32$2 = 0; | |
$95 = (i64toi32_i32$4 | 0) != (i64toi32_i32$2 | 0) | (i64toi32_i32$5 | 0) != (i64toi32_i32$0 | 0) | 0; | |
i64toi32_i32$4 = 0; | |
$96$hi = i64toi32_i32$4; | |
i64toi32_i32$4 = $87$hi; | |
i64toi32_i32$2 = $87; | |
i64toi32_i32$5 = $96$hi; | |
i64toi32_i32$0 = $95; | |
i64toi32_i32$5 = i64toi32_i32$4 | i64toi32_i32$5 | 0; | |
$6_1 = i64toi32_i32$2 | i64toi32_i32$0 | 0; | |
$6$hi = i64toi32_i32$5; | |
i64toi32_i32$4 = $6_1; | |
i64toi32_i32$2 = 134217728; | |
i64toi32_i32$0 = 1; | |
if (i64toi32_i32$5 >>> 0 < i64toi32_i32$2 >>> 0 | ((i64toi32_i32$5 | 0) == (i64toi32_i32$2 | 0) & i64toi32_i32$4 >>> 0 < i64toi32_i32$0 >>> 0 | 0) | 0) { | |
break label$7 | |
} | |
i64toi32_i32$4 = $7$hi; | |
i64toi32_i32$0 = $7_1; | |
i64toi32_i32$5 = 0; | |
i64toi32_i32$2 = 1; | |
i64toi32_i32$3 = i64toi32_i32$0 + i64toi32_i32$2 | 0; | |
i64toi32_i32$1 = i64toi32_i32$4 + i64toi32_i32$5 | 0; | |
if (i64toi32_i32$3 >>> 0 < i64toi32_i32$2 >>> 0) { | |
i64toi32_i32$1 = i64toi32_i32$1 + 1 | 0 | |
} | |
$7_1 = i64toi32_i32$3; | |
$7$hi = i64toi32_i32$1; | |
break label$3; | |
} | |
i64toi32_i32$1 = $6$hi; | |
i64toi32_i32$4 = $6_1; | |
i64toi32_i32$0 = 134217728; | |
i64toi32_i32$2 = 0; | |
i64toi32_i32$0 = i64toi32_i32$1 ^ i64toi32_i32$0 | 0; | |
i64toi32_i32$1 = i64toi32_i32$4 ^ i64toi32_i32$2 | 0; | |
i64toi32_i32$4 = 0; | |
i64toi32_i32$2 = 0; | |
if ((i64toi32_i32$1 | 0) != (i64toi32_i32$2 | 0) | (i64toi32_i32$0 | 0) != (i64toi32_i32$4 | 0) | 0) { | |
break label$3 | |
} | |
i64toi32_i32$1 = $7$hi; | |
i64toi32_i32$2 = $7_1; | |
i64toi32_i32$0 = 0; | |
i64toi32_i32$4 = 1; | |
i64toi32_i32$0 = i64toi32_i32$1 & i64toi32_i32$0 | 0; | |
$106$hi = i64toi32_i32$0; | |
i64toi32_i32$0 = i64toi32_i32$1; | |
i64toi32_i32$0 = $106$hi; | |
i64toi32_i32$1 = i64toi32_i32$2 & i64toi32_i32$4 | 0; | |
i64toi32_i32$2 = $7$hi; | |
i64toi32_i32$4 = $7_1; | |
i64toi32_i32$5 = i64toi32_i32$1 + i64toi32_i32$4 | 0; | |
i64toi32_i32$3 = i64toi32_i32$0 + i64toi32_i32$2 | 0; | |
if (i64toi32_i32$5 >>> 0 < i64toi32_i32$4 >>> 0) { | |
i64toi32_i32$3 = i64toi32_i32$3 + 1 | 0 | |
} | |
$7_1 = i64toi32_i32$5; | |
$7$hi = i64toi32_i32$3; | |
} | |
label$8 : { | |
$5_1 = $2_1 + 32 | 0; | |
if ($5_1 >>> 0 < global$2 >>> 0) { | |
fimport$3() | |
} | |
global$0 = $5_1; | |
} | |
i64toi32_i32$3 = $7$hi; | |
i64toi32_i32$3 = $1$hi; | |
i64toi32_i32$0 = $1_1; | |
i64toi32_i32$1 = -2147483648; | |
i64toi32_i32$4 = 0; | |
i64toi32_i32$1 = i64toi32_i32$3 & i64toi32_i32$1 | 0; | |
$117 = i64toi32_i32$0 & i64toi32_i32$4 | 0; | |
$117$hi = i64toi32_i32$1; | |
i64toi32_i32$1 = $7$hi; | |
i64toi32_i32$3 = $7_1; | |
i64toi32_i32$0 = $117$hi; | |
i64toi32_i32$4 = $117; | |
i64toi32_i32$0 = i64toi32_i32$1 | i64toi32_i32$0 | 0; | |
wasm2js_scratch_store_i32(0 | 0, i64toi32_i32$3 | i64toi32_i32$4 | 0 | 0); | |
wasm2js_scratch_store_i32(1 | 0, i64toi32_i32$0 | 0); | |
return +(+wasm2js_scratch_load_f64()); | |
} | |
function $36($0_1, $1_1, $2_1) { | |
$0_1 = $0_1 | 0; | |
$1_1 = $1_1 | 0; | |
$2_1 = $2_1 | 0; | |
var $4_1 = 0, $3_1 = 0, $5_1 = 0; | |
label$1 : { | |
if ($2_1 >>> 0 < 512 >>> 0) { | |
break label$1 | |
} | |
fimport$1($0_1 | 0, $1_1 | 0, $2_1 | 0) | 0; | |
return $0_1 | 0; | |
} | |
$3_1 = $0_1 + $2_1 | 0; | |
label$2 : { | |
label$3 : { | |
if (($1_1 ^ $0_1 | 0) & 3 | 0) { | |
break label$3 | |
} | |
label$4 : { | |
label$5 : { | |
if (($2_1 | 0) >= (1 | 0)) { | |
break label$5 | |
} | |
$2_1 = $0_1; | |
break label$4; | |
} | |
label$6 : { | |
if ($0_1 & 3 | 0) { | |
break label$6 | |
} | |
$2_1 = $0_1; | |
break label$4; | |
} | |
$2_1 = $0_1; | |
label$7 : while (1) { | |
HEAP8[$2_1 >> 0] = HEAPU8[$1_1 >> 0] | 0; | |
$1_1 = $1_1 + 1 | 0; | |
$2_1 = $2_1 + 1 | 0; | |
if ($2_1 >>> 0 >= $3_1 >>> 0) { | |
break label$4 | |
} | |
if ($2_1 & 3 | 0) { | |
continue label$7 | |
} | |
break label$7; | |
}; | |
} | |
label$8 : { | |
$4_1 = $3_1 & -4 | 0; | |
if ($4_1 >>> 0 < 64 >>> 0) { | |
break label$8 | |
} | |
$5_1 = $4_1 + -64 | 0; | |
if ($2_1 >>> 0 > $5_1 >>> 0) { | |
break label$8 | |
} | |
label$9 : while (1) { | |
HEAP32[$2_1 >> 2] = HEAP32[$1_1 >> 2] | 0; | |
HEAP32[($2_1 + 4 | 0) >> 2] = HEAP32[($1_1 + 4 | 0) >> 2] | 0; | |
HEAP32[($2_1 + 8 | 0) >> 2] = HEAP32[($1_1 + 8 | 0) >> 2] | 0; | |
HEAP32[($2_1 + 12 | 0) >> 2] = HEAP32[($1_1 + 12 | 0) >> 2] | 0; | |
HEAP32[($2_1 + 16 | 0) >> 2] = HEAP32[($1_1 + 16 | 0) >> 2] | 0; | |
HEAP32[($2_1 + 20 | 0) >> 2] = HEAP32[($1_1 + 20 | 0) >> 2] | 0; | |
HEAP32[($2_1 + 24 | 0) >> 2] = HEAP32[($1_1 + 24 | 0) >> 2] | 0; | |
HEAP32[($2_1 + 28 | 0) >> 2] = HEAP32[($1_1 + 28 | 0) >> 2] | 0; | |
HEAP32[($2_1 + 32 | 0) >> 2] = HEAP32[($1_1 + 32 | 0) >> 2] | 0; | |
HEAP32[($2_1 + 36 | 0) >> 2] = HEAP32[($1_1 + 36 | 0) >> 2] | 0; | |
HEAP32[($2_1 + 40 | 0) >> 2] = HEAP32[($1_1 + 40 | 0) >> 2] | 0; | |
HEAP32[($2_1 + 44 | 0) >> 2] = HEAP32[($1_1 + 44 | 0) >> 2] | 0; | |
HEAP32[($2_1 + 48 | 0) >> 2] = HEAP32[($1_1 + 48 | 0) >> 2] | 0; | |
HEAP32[($2_1 + 52 | 0) >> 2] = HEAP32[($1_1 + 52 | 0) >> 2] | 0; | |
HEAP32[($2_1 + 56 | 0) >> 2] = HEAP32[($1_1 + 56 | 0) >> 2] | 0; | |
HEAP32[($2_1 + 60 | 0) >> 2] = HEAP32[($1_1 + 60 | 0) >> 2] | 0; | |
$1_1 = $1_1 + 64 | 0; | |
$2_1 = $2_1 + 64 | 0; | |
if ($2_1 >>> 0 <= $5_1 >>> 0) { | |
continue label$9 | |
} | |
break label$9; | |
}; | |
} | |
if ($2_1 >>> 0 >= $4_1 >>> 0) { | |
break label$2 | |
} | |
label$10 : while (1) { | |
HEAP32[$2_1 >> 2] = HEAP32[$1_1 >> 2] | 0; | |
$1_1 = $1_1 + 4 | 0; | |
$2_1 = $2_1 + 4 | 0; | |
if ($2_1 >>> 0 < $4_1 >>> 0) { | |
continue label$10 | |
} | |
break label$2; | |
}; | |
} | |
label$11 : { | |
if ($3_1 >>> 0 >= 4 >>> 0) { | |
break label$11 | |
} | |
$2_1 = $0_1; | |
break label$2; | |
} | |
label$12 : { | |
$4_1 = $3_1 + -4 | 0; | |
if ($4_1 >>> 0 >= $0_1 >>> 0) { | |
break label$12 | |
} | |
$2_1 = $0_1; | |
break label$2; | |
} | |
$2_1 = $0_1; | |
label$13 : while (1) { | |
HEAP8[$2_1 >> 0] = HEAPU8[$1_1 >> 0] | 0; | |
HEAP8[($2_1 + 1 | 0) >> 0] = HEAPU8[($1_1 + 1 | 0) >> 0] | 0; | |
HEAP8[($2_1 + 2 | 0) >> 0] = HEAPU8[($1_1 + 2 | 0) >> 0] | 0; | |
HEAP8[($2_1 + 3 | 0) >> 0] = HEAPU8[($1_1 + 3 | 0) >> 0] | 0; | |
$1_1 = $1_1 + 4 | 0; | |
$2_1 = $2_1 + 4 | 0; | |
if ($2_1 >>> 0 <= $4_1 >>> 0) { | |
continue label$13 | |
} | |
break label$13; | |
}; | |
} | |
label$14 : { | |
if ($2_1 >>> 0 >= $3_1 >>> 0) { | |
break label$14 | |
} | |
label$15 : while (1) { | |
HEAP8[$2_1 >> 0] = HEAPU8[$1_1 >> 0] | 0; | |
$1_1 = $1_1 + 1 | 0; | |
$2_1 = $2_1 + 1 | 0; | |
if (($2_1 | 0) != ($3_1 | 0)) { | |
continue label$15 | |
} | |
break label$15; | |
}; | |
} | |
return $0_1 | 0; | |
} | |
function $37($0_1, $1_1, $2_1) { | |
$0_1 = $0_1 | 0; | |
$1_1 = $1_1 | 0; | |
$2_1 = $2_1 | 0; | |
var $3_1 = 0, $4_1 = 0, $5_1 = 0, $6_1 = 0; | |
label$1 : { | |
label$2 : { | |
$3_1 = HEAP32[($2_1 + 16 | 0) >> 2] | 0; | |
if ($3_1) { | |
break label$2 | |
} | |
$4_1 = 0; | |
if ($24($2_1 | 0) | 0) { | |
break label$1 | |
} | |
$3_1 = HEAP32[($2_1 + 16 | 0) >> 2] | 0; | |
} | |
label$3 : { | |
$5_1 = HEAP32[($2_1 + 20 | 0) >> 2] | 0; | |
if (($3_1 - $5_1 | 0) >>> 0 >= $1_1 >>> 0) { | |
break label$3 | |
} | |
return FUNCTION_TABLE[HEAP32[($2_1 + 36 | 0) >> 2] | 0]($2_1, $0_1, $1_1) | 0 | 0; | |
} | |
$6_1 = 0; | |
label$4 : { | |
if ((HEAP8[($2_1 + 75 | 0) >> 0] | 0 | 0) < (0 | 0)) { | |
break label$4 | |
} | |
$4_1 = $1_1; | |
label$5 : while (1) { | |
$3_1 = $4_1; | |
if (!$3_1) { | |
break label$4 | |
} | |
$4_1 = $3_1 + -1 | 0; | |
if ((HEAPU8[($0_1 + $4_1 | 0) >> 0] | 0 | 0) != (10 | 0)) { | |
continue label$5 | |
} | |
break label$5; | |
}; | |
$4_1 = FUNCTION_TABLE[HEAP32[($2_1 + 36 | 0) >> 2] | 0]($2_1, $0_1, $3_1) | 0; | |
if ($4_1 >>> 0 < $3_1 >>> 0) { | |
break label$1 | |
} | |
$1_1 = $1_1 - $3_1 | 0; | |
$0_1 = $0_1 + $3_1 | 0; | |
$5_1 = HEAP32[($2_1 + 20 | 0) >> 2] | 0; | |
$6_1 = $3_1; | |
} | |
$36($5_1 | 0, $0_1 | 0, $1_1 | 0) | 0; | |
HEAP32[($2_1 + 20 | 0) >> 2] = (HEAP32[($2_1 + 20 | 0) >> 2] | 0) + $1_1 | 0; | |
$4_1 = $6_1 + $1_1 | 0; | |
} | |
return $4_1 | 0; | |
} | |
function $38($0_1, $1_1, $2_1, $3_1, $4_1) { | |
$0_1 = $0_1 | 0; | |
$1_1 = $1_1 | 0; | |
$2_1 = $2_1 | 0; | |
$3_1 = $3_1 | 0; | |
$4_1 = $4_1 | 0; | |
var $5_1 = 0, $6_1 = 0, $7_1 = 0, $9_1 = 0, $8_1 = 0; | |
label$1 : { | |
$5_1 = global$0 - 208 | 0; | |
$8_1 = $5_1; | |
if ($5_1 >>> 0 < global$2 >>> 0) { | |
fimport$3() | |
} | |
global$0 = $8_1; | |
} | |
HEAP32[($5_1 + 204 | 0) >> 2] = $2_1; | |
$2_1 = 0; | |
$19($5_1 + 160 | 0 | 0, 0 | 0, 40 | 0) | 0; | |
HEAP32[($5_1 + 200 | 0) >> 2] = HEAP32[($5_1 + 204 | 0) >> 2] | 0; | |
label$3 : { | |
label$4 : { | |
if (($39(0 | 0, $1_1 | 0, $5_1 + 200 | 0 | 0, $5_1 + 80 | 0 | 0, $5_1 + 160 | 0 | 0, $3_1 | 0, $4_1 | 0) | 0 | 0) >= (0 | 0)) { | |
break label$4 | |
} | |
$1_1 = -1; | |
break label$3; | |
} | |
label$5 : { | |
if ((HEAP32[($0_1 + 76 | 0) >> 2] | 0 | 0) < (0 | 0)) { | |
break label$5 | |
} | |
$2_1 = $52($0_1 | 0) | 0; | |
} | |
$6_1 = HEAP32[$0_1 >> 2] | 0; | |
label$6 : { | |
if ((HEAP8[($0_1 + 74 | 0) >> 0] | 0 | 0) > (0 | 0)) { | |
break label$6 | |
} | |
HEAP32[$0_1 >> 2] = $6_1 & -33 | 0; | |
} | |
$6_1 = $6_1 & 32 | 0; | |
label$7 : { | |
label$8 : { | |
if (!(HEAP32[($0_1 + 48 | 0) >> 2] | 0)) { | |
break label$8 | |
} | |
$1_1 = $39($0_1 | 0, $1_1 | 0, $5_1 + 200 | 0 | 0, $5_1 + 80 | 0 | 0, $5_1 + 160 | 0 | 0, $3_1 | 0, $4_1 | 0) | 0; | |
break label$7; | |
} | |
HEAP32[($0_1 + 48 | 0) >> 2] = 80; | |
HEAP32[($0_1 + 16 | 0) >> 2] = $5_1 + 80 | 0; | |
HEAP32[($0_1 + 28 | 0) >> 2] = $5_1; | |
HEAP32[($0_1 + 20 | 0) >> 2] = $5_1; | |
$7_1 = HEAP32[($0_1 + 44 | 0) >> 2] | 0; | |
HEAP32[($0_1 + 44 | 0) >> 2] = $5_1; | |
$1_1 = $39($0_1 | 0, $1_1 | 0, $5_1 + 200 | 0 | 0, $5_1 + 80 | 0 | 0, $5_1 + 160 | 0 | 0, $3_1 | 0, $4_1 | 0) | 0; | |
if (!$7_1) { | |
break label$7 | |
} | |
FUNCTION_TABLE[HEAP32[($0_1 + 36 | 0) >> 2] | 0]($0_1, 0, 0) | 0; | |
HEAP32[($0_1 + 48 | 0) >> 2] = 0; | |
HEAP32[($0_1 + 44 | 0) >> 2] = $7_1; | |
HEAP32[($0_1 + 28 | 0) >> 2] = 0; | |
HEAP32[($0_1 + 16 | 0) >> 2] = 0; | |
$3_1 = HEAP32[($0_1 + 20 | 0) >> 2] | 0; | |
HEAP32[($0_1 + 20 | 0) >> 2] = 0; | |
$1_1 = $3_1 ? $1_1 : -1; | |
} | |
$3_1 = HEAP32[$0_1 >> 2] | 0; | |
HEAP32[$0_1 >> 2] = $3_1 | $6_1 | 0; | |
$1_1 = $3_1 & 32 | 0 ? -1 : $1_1; | |
if (!$2_1) { | |
break label$3 | |
} | |
$53($0_1 | 0); | |
} | |
label$9 : { | |
$9_1 = $5_1 + 208 | 0; | |
if ($9_1 >>> 0 < global$2 >>> 0) { | |
fimport$3() | |
} | |
global$0 = $9_1; | |
} | |
return $1_1 | 0; | |
} | |
function $39($0_1, $1_1, $2_1, $3_1, $4_1, $5_1, $6_1) { | |
$0_1 = $0_1 | 0; | |
$1_1 = $1_1 | 0; | |
$2_1 = $2_1 | 0; | |
$3_1 = $3_1 | 0; | |
$4_1 = $4_1 | 0; | |
$5_1 = $5_1 | 0; | |
$6_1 = $6_1 | 0; | |
var $7_1 = 0, $14_1 = 0, $13_1 = 0, $15_1 = 0, $19_1 = 0, i64toi32_i32$1 = 0, $12_1 = 0, $20_1 = 0, i64toi32_i32$0 = 0, $11_1 = 0, $18_1 = 0, i64toi32_i32$2 = 0, $16_1 = 0, i64toi32_i32$3 = 0, $17_1 = 0, i64toi32_i32$5 = 0, $9_1 = 0, $24_1 = 0, $24$hi = 0, $10_1 = 0, $21_1 = 0, $32_1 = 0, $33_1 = 0, $34_1 = 0, $23_1 = 0, $22_1 = 0, $8_1 = 0, $282 = 0; | |
label$1 : { | |
$7_1 = global$0 - 80 | 0; | |
$22_1 = $7_1; | |
if ($7_1 >>> 0 < global$2 >>> 0) { | |
fimport$3() | |
} | |
global$0 = $22_1; | |
} | |
HEAP32[($7_1 + 76 | 0) >> 2] = $1_1; | |
$8_1 = $7_1 + 55 | 0; | |
$9_1 = $7_1 + 56 | 0; | |
$10_1 = 0; | |
$11_1 = 0; | |
$1_1 = 0; | |
label$3 : { | |
label$4 : { | |
label$5 : while (1) { | |
label$6 : { | |
if (($11_1 | 0) < (0 | 0)) { | |
break label$6 | |
} | |
label$7 : { | |
if (($1_1 | 0) <= (2147483647 - $11_1 | 0 | 0)) { | |
break label$7 | |
} | |
HEAP32[($9() | 0) >> 2] = 61; | |
$11_1 = -1; | |
break label$6; | |
} | |
$11_1 = $1_1 + $11_1 | 0; | |
} | |
$12_1 = HEAP32[($7_1 + 76 | 0) >> 2] | 0; | |
$1_1 = $12_1; | |
label$8 : { | |
label$9 : { | |
label$10 : { | |
label$11 : { | |
$13_1 = HEAPU8[$1_1 >> 0] | 0; | |
if (!$13_1) { | |
break label$11 | |
} | |
label$12 : while (1) { | |
label$13 : { | |
label$14 : { | |
label$15 : { | |
$13_1 = $13_1 & 255 | 0; | |
if ($13_1) { | |
break label$15 | |
} | |
$13_1 = $1_1; | |
break label$14; | |
} | |
if (($13_1 | 0) != (37 | 0)) { | |
break label$13 | |
} | |
$13_1 = $1_1; | |
label$16 : while (1) { | |
if ((HEAPU8[($1_1 + 1 | 0) >> 0] | 0 | 0) != (37 | 0)) { | |
break label$14 | |
} | |
$14_1 = $1_1 + 2 | 0; | |
HEAP32[($7_1 + 76 | 0) >> 2] = $14_1; | |
$13_1 = $13_1 + 1 | 0; | |
$15_1 = HEAPU8[($1_1 + 2 | 0) >> 0] | 0; | |
$1_1 = $14_1; | |
if (($15_1 | 0) == (37 | 0)) { | |
continue label$16 | |
} | |
break label$16; | |
}; | |
} | |
$1_1 = $13_1 - $12_1 | 0; | |
label$17 : { | |
if (!$0_1) { | |
break label$17 | |
} | |
$40($0_1 | 0, $12_1 | 0, $1_1 | 0); | |
} | |
if ($1_1) { | |
continue label$5 | |
} | |
$16_1 = -1; | |
$13_1 = 1; | |
$14_1 = $26(HEAP8[((HEAP32[($7_1 + 76 | 0) >> 2] | 0) + 1 | 0) >> 0] | 0 | 0) | 0; | |
$1_1 = HEAP32[($7_1 + 76 | 0) >> 2] | 0; | |
label$18 : { | |
if (!$14_1) { | |
break label$18 | |
} | |
if ((HEAPU8[($1_1 + 2 | 0) >> 0] | 0 | 0) != (36 | 0)) { | |
break label$18 | |
} | |
$16_1 = (HEAP8[($1_1 + 1 | 0) >> 0] | 0) + -48 | 0; | |
$10_1 = 1; | |
$13_1 = 3; | |
} | |
$1_1 = $1_1 + $13_1 | 0; | |
HEAP32[($7_1 + 76 | 0) >> 2] = $1_1; | |
$13_1 = 0; | |
label$19 : { | |
label$20 : { | |
$17_1 = HEAP8[$1_1 >> 0] | 0; | |
$15_1 = $17_1 + -32 | 0; | |
if ($15_1 >>> 0 <= 31 >>> 0) { | |
break label$20 | |
} | |
$14_1 = $1_1; | |
break label$19; | |
} | |
$14_1 = $1_1; | |
$15_1 = 1 << $15_1 | 0; | |
if (!($15_1 & 75913 | 0)) { | |
break label$19 | |
} | |
label$21 : while (1) { | |
$14_1 = $1_1 + 1 | 0; | |
HEAP32[($7_1 + 76 | 0) >> 2] = $14_1; | |
$13_1 = $15_1 | $13_1 | 0; | |
$17_1 = HEAP8[($1_1 + 1 | 0) >> 0] | 0; | |
$15_1 = $17_1 + -32 | 0; | |
if ($15_1 >>> 0 > 31 >>> 0) { | |
break label$19 | |
} | |
$1_1 = $14_1; | |
$15_1 = 1 << $15_1 | 0; | |
if ($15_1 & 75913 | 0) { | |
continue label$21 | |
} | |
break label$21; | |
}; | |
} | |
label$22 : { | |
label$23 : { | |
if (($17_1 | 0) != (42 | 0)) { | |
break label$23 | |
} | |
label$24 : { | |
label$25 : { | |
if (!($26(HEAP8[($14_1 + 1 | 0) >> 0] | 0 | 0) | 0)) { | |
break label$25 | |
} | |
$14_1 = HEAP32[($7_1 + 76 | 0) >> 2] | 0; | |
if ((HEAPU8[($14_1 + 2 | 0) >> 0] | 0 | 0) != (36 | 0)) { | |
break label$25 | |
} | |
HEAP32[((((HEAP8[($14_1 + 1 | 0) >> 0] | 0) << 2 | 0) + $4_1 | 0) + -192 | 0) >> 2] = 10; | |
$1_1 = $14_1 + 3 | 0; | |
$18_1 = HEAP32[((((HEAP8[($14_1 + 1 | 0) >> 0] | 0) << 3 | 0) + $3_1 | 0) + -384 | 0) >> 2] | 0; | |
$10_1 = 1; | |
break label$24; | |
} | |
if ($10_1) { | |
break label$4 | |
} | |
$10_1 = 0; | |
$18_1 = 0; | |
label$26 : { | |
if (!$0_1) { | |
break label$26 | |
} | |
$1_1 = HEAP32[$2_1 >> 2] | 0; | |
HEAP32[$2_1 >> 2] = $1_1 + 4 | 0; | |
$18_1 = HEAP32[$1_1 >> 2] | 0; | |
} | |
$1_1 = (HEAP32[($7_1 + 76 | 0) >> 2] | 0) + 1 | 0; | |
} | |
HEAP32[($7_1 + 76 | 0) >> 2] = $1_1; | |
if (($18_1 | 0) > (-1 | 0)) { | |
break label$22 | |
} | |
$18_1 = 0 - $18_1 | 0; | |
$13_1 = $13_1 | 8192 | 0; | |
break label$22; | |
} | |
$18_1 = $41($7_1 + 76 | 0 | 0) | 0; | |
if (($18_1 | 0) < (0 | 0)) { | |
break label$4 | |
} | |
$1_1 = HEAP32[($7_1 + 76 | 0) >> 2] | 0; | |
} | |
$19_1 = -1; | |
label$27 : { | |
if ((HEAPU8[$1_1 >> 0] | 0 | 0) != (46 | 0)) { | |
break label$27 | |
} | |
label$28 : { | |
if ((HEAPU8[($1_1 + 1 | 0) >> 0] | 0 | 0) != (42 | 0)) { | |
break label$28 | |
} | |
label$29 : { | |
if (!($26(HEAP8[($1_1 + 2 | 0) >> 0] | 0 | 0) | 0)) { | |
break label$29 | |
} | |
$1_1 = HEAP32[($7_1 + 76 | 0) >> 2] | 0; | |
if ((HEAPU8[($1_1 + 3 | 0) >> 0] | 0 | 0) != (36 | 0)) { | |
break label$29 | |
} | |
HEAP32[((((HEAP8[($1_1 + 2 | 0) >> 0] | 0) << 2 | 0) + $4_1 | 0) + -192 | 0) >> 2] = 10; | |
$19_1 = HEAP32[((((HEAP8[($1_1 + 2 | 0) >> 0] | 0) << 3 | 0) + $3_1 | 0) + -384 | 0) >> 2] | 0; | |
$1_1 = $1_1 + 4 | 0; | |
HEAP32[($7_1 + 76 | 0) >> 2] = $1_1; | |
break label$27; | |
} | |
if ($10_1) { | |
break label$4 | |
} | |
label$30 : { | |
label$31 : { | |
if ($0_1) { | |
break label$31 | |
} | |
$19_1 = 0; | |
break label$30; | |
} | |
$1_1 = HEAP32[$2_1 >> 2] | 0; | |
HEAP32[$2_1 >> 2] = $1_1 + 4 | 0; | |
$19_1 = HEAP32[$1_1 >> 2] | 0; | |
} | |
$1_1 = (HEAP32[($7_1 + 76 | 0) >> 2] | 0) + 2 | 0; | |
HEAP32[($7_1 + 76 | 0) >> 2] = $1_1; | |
break label$27; | |
} | |
HEAP32[($7_1 + 76 | 0) >> 2] = $1_1 + 1 | 0; | |
$19_1 = $41($7_1 + 76 | 0 | 0) | 0; | |
$1_1 = HEAP32[($7_1 + 76 | 0) >> 2] | 0; | |
} | |
$14_1 = 0; | |
label$32 : while (1) { | |
$15_1 = $14_1; | |
$20_1 = -1; | |
if (((HEAP8[$1_1 >> 0] | 0) + -65 | 0) >>> 0 > 57 >>> 0) { | |
break label$3 | |
} | |
$17_1 = $1_1 + 1 | 0; | |
HEAP32[($7_1 + 76 | 0) >> 2] = $17_1; | |
$14_1 = HEAP8[$1_1 >> 0] | 0; | |
$1_1 = $17_1; | |
$14_1 = HEAPU8[(($14_1 + Math_imul($15_1, 58) | 0) + 3871 | 0) >> 0] | 0; | |
if (($14_1 + -1 | 0) >>> 0 < 8 >>> 0) { | |
continue label$32 | |
} | |
break label$32; | |
}; | |
if (!$14_1) { | |
break label$3 | |
} | |
label$33 : { | |
label$34 : { | |
label$35 : { | |
label$36 : { | |
if (($14_1 | 0) != (19 | 0)) { | |
break label$36 | |
} | |
$20_1 = -1; | |
if (($16_1 | 0) <= (-1 | 0)) { | |
break label$35 | |
} | |
break label$3; | |
} | |
if (($16_1 | 0) < (0 | 0)) { | |
break label$34 | |
} | |
HEAP32[($4_1 + ($16_1 << 2 | 0) | 0) >> 2] = $14_1; | |
i64toi32_i32$2 = $3_1 + ($16_1 << 3 | 0) | 0; | |
i64toi32_i32$0 = HEAP32[i64toi32_i32$2 >> 2] | 0; | |
i64toi32_i32$1 = HEAP32[(i64toi32_i32$2 + 4 | 0) >> 2] | 0; | |
$282 = i64toi32_i32$0; | |
i64toi32_i32$0 = $7_1; | |
HEAP32[($7_1 + 64 | 0) >> 2] = $282; | |
HEAP32[($7_1 + 68 | 0) >> 2] = i64toi32_i32$1; | |
} | |
$1_1 = 0; | |
if (!$0_1) { | |
continue label$5 | |
} | |
break label$33; | |
} | |
if (!$0_1) { | |
break label$8 | |
} | |
$42($7_1 + 64 | 0 | 0, $14_1 | 0, $2_1 | 0, $6_1 | 0); | |
$17_1 = HEAP32[($7_1 + 76 | 0) >> 2] | 0; | |
} | |
$21_1 = $13_1 & -65537 | 0; | |
$13_1 = $13_1 & 8192 | 0 ? $21_1 : $13_1; | |
$20_1 = 0; | |
$16_1 = 3904; | |
$14_1 = $9_1; | |
label$37 : { | |
label$38 : { | |
label$39 : { | |
label$40 : { | |
label$41 : { | |
label$42 : { | |
label$43 : { | |
label$44 : { | |
label$45 : { | |
label$46 : { | |
label$47 : { | |
label$48 : { | |
label$49 : { | |
label$50 : { | |
label$51 : { | |
label$52 : { | |
$1_1 = HEAP8[($17_1 + -1 | 0) >> 0] | 0; | |
$1_1 = $15_1 ? (($1_1 & 15 | 0 | 0) == (3 | 0) ? $1_1 & -33 | 0 : $1_1) : $1_1; | |
switch ($1_1 + -88 | 0 | 0) { | |
case 11: | |
break label$37; | |
case 9: | |
case 13: | |
case 14: | |
case 15: | |
break label$38; | |
case 27: | |
break label$43; | |
case 12: | |
case 17: | |
break label$46; | |
case 23: | |
break label$47; | |
case 0: | |
case 32: | |
break label$48; | |
case 24: | |
break label$49; | |
case 22: | |
break label$50; | |
case 29: | |
break label$51; | |
case 1: | |
case 2: | |
case 3: | |
case 4: | |
case 5: | |
case 6: | |
case 7: | |
case 8: | |
case 10: | |
case 16: | |
case 18: | |
case 19: | |
case 20: | |
case 21: | |
case 25: | |
case 26: | |
case 28: | |
case 30: | |
case 31: | |
break label$9; | |
default: | |
break label$52; | |
}; | |
} | |
$14_1 = $9_1; | |
label$53 : { | |
switch ($1_1 + -65 | 0 | 0) { | |
case 0: | |
case 4: | |
case 5: | |
case 6: | |
break label$38; | |
case 2: | |
break label$41; | |
case 1: | |
case 3: | |
break label$9; | |
default: | |
break label$53; | |
}; | |
} | |
if (($1_1 | 0) == (83 | 0)) { | |
break label$42 | |
} | |
break label$10; | |
} | |
$20_1 = 0; | |
$16_1 = 3904; | |
i64toi32_i32$2 = $7_1; | |
i64toi32_i32$1 = HEAP32[($7_1 + 64 | 0) >> 2] | 0; | |
i64toi32_i32$0 = HEAP32[($7_1 + 68 | 0) >> 2] | 0; | |
$24_1 = i64toi32_i32$1; | |
$24$hi = i64toi32_i32$0; | |
break label$45; | |
} | |
$1_1 = 0; | |
label$54 : { | |
switch ($15_1 & 255 | 0 | 0) { | |
case 0: | |
HEAP32[(HEAP32[($7_1 + 64 | 0) >> 2] | 0) >> 2] = $11_1; | |
continue label$5; | |
case 1: | |
HEAP32[(HEAP32[($7_1 + 64 | 0) >> 2] | 0) >> 2] = $11_1; | |
continue label$5; | |
case 2: | |
i64toi32_i32$1 = $11_1; | |
i64toi32_i32$0 = i64toi32_i32$1 >> 31 | 0; | |
i64toi32_i32$1 = HEAP32[($7_1 + 64 | 0) >> 2] | 0; | |
HEAP32[i64toi32_i32$1 >> 2] = $11_1; | |
HEAP32[(i64toi32_i32$1 + 4 | 0) >> 2] = i64toi32_i32$0; | |
continue label$5; | |
case 3: | |
HEAP16[(HEAP32[($7_1 + 64 | 0) >> 2] | 0) >> 1] = $11_1; | |
continue label$5; | |
case 4: | |
HEAP8[(HEAP32[($7_1 + 64 | 0) >> 2] | 0) >> 0] = $11_1; | |
continue label$5; | |
case 6: | |
HEAP32[(HEAP32[($7_1 + 64 | 0) >> 2] | 0) >> 2] = $11_1; | |
continue label$5; | |
case 7: | |
break label$54; | |
default: | |
continue label$5; | |
}; | |
} | |
i64toi32_i32$1 = $11_1; | |
i64toi32_i32$0 = i64toi32_i32$1 >> 31 | 0; | |
i64toi32_i32$1 = HEAP32[($7_1 + 64 | 0) >> 2] | 0; | |
HEAP32[i64toi32_i32$1 >> 2] = $11_1; | |
HEAP32[(i64toi32_i32$1 + 4 | 0) >> 2] = i64toi32_i32$0; | |
continue label$5; | |
} | |
$19_1 = $19_1 >>> 0 > 8 >>> 0 ? $19_1 : 8; | |
$13_1 = $13_1 | 8 | 0; | |
$1_1 = 120; | |
} | |
$20_1 = 0; | |
$16_1 = 3904; | |
i64toi32_i32$2 = $7_1; | |
i64toi32_i32$0 = HEAP32[($7_1 + 64 | 0) >> 2] | 0; | |
i64toi32_i32$1 = HEAP32[($7_1 + 68 | 0) >> 2] | 0; | |
$12_1 = $43(i64toi32_i32$0 | 0, i64toi32_i32$1 | 0, $9_1 | 0, $1_1 & 32 | 0 | 0) | 0; | |
if (!($13_1 & 8 | 0)) { | |
break label$44 | |
} | |
i64toi32_i32$2 = $7_1; | |
i64toi32_i32$1 = HEAP32[($7_1 + 64 | 0) >> 2] | 0; | |
i64toi32_i32$0 = HEAP32[($7_1 + 68 | 0) >> 2] | 0; | |
if (!(i64toi32_i32$1 | i64toi32_i32$0 | 0)) { | |
break label$44 | |
} | |
$16_1 = ($1_1 >>> 4 | 0) + 3904 | 0; | |
$20_1 = 2; | |
break label$44; | |
} | |
$20_1 = 0; | |
$16_1 = 3904; | |
i64toi32_i32$2 = $7_1; | |
i64toi32_i32$0 = HEAP32[($7_1 + 64 | 0) >> 2] | 0; | |
i64toi32_i32$1 = HEAP32[($7_1 + 68 | 0) >> 2] | 0; | |
$12_1 = $44(i64toi32_i32$0 | 0, i64toi32_i32$1 | 0, $9_1 | 0) | 0; | |
if (!($13_1 & 8 | 0)) { | |
break label$44 | |
} | |
$1_1 = $9_1 - $12_1 | 0; | |
$19_1 = ($19_1 | 0) > ($1_1 | 0) ? $19_1 : $1_1 + 1 | 0; | |
break label$44; | |
} | |
label$61 : { | |
i64toi32_i32$2 = $7_1; | |
i64toi32_i32$1 = HEAP32[($7_1 + 64 | 0) >> 2] | 0; | |
i64toi32_i32$0 = HEAP32[($7_1 + 68 | 0) >> 2] | 0; | |
$24_1 = i64toi32_i32$1; | |
$24$hi = i64toi32_i32$0; | |
i64toi32_i32$2 = i64toi32_i32$1; | |
i64toi32_i32$1 = -1; | |
i64toi32_i32$3 = -1; | |
if ((i64toi32_i32$0 | 0) > (i64toi32_i32$1 | 0)) { | |
$32_1 = 1 | |
} else { | |
if ((i64toi32_i32$0 | 0) >= (i64toi32_i32$1 | 0)) { | |
if (i64toi32_i32$2 >>> 0 <= i64toi32_i32$3 >>> 0) { | |
$33_1 = 0 | |
} else { | |
$33_1 = 1 | |
} | |
$34_1 = $33_1; | |
} else { | |
$34_1 = 0 | |
} | |
$32_1 = $34_1; | |
} | |
if ($32_1) { | |
break label$61 | |
} | |
i64toi32_i32$2 = $24$hi; | |
i64toi32_i32$2 = 0; | |
i64toi32_i32$3 = 0; | |
i64toi32_i32$0 = $24$hi; | |
i64toi32_i32$1 = $24_1; | |
i64toi32_i32$5 = (i64toi32_i32$3 >>> 0 < i64toi32_i32$1 >>> 0) + i64toi32_i32$0 | 0; | |
i64toi32_i32$5 = i64toi32_i32$2 - i64toi32_i32$5 | 0; | |
$24_1 = i64toi32_i32$3 - i64toi32_i32$1 | 0; | |
$24$hi = i64toi32_i32$5; | |
i64toi32_i32$3 = $7_1; | |
HEAP32[($7_1 + 64 | 0) >> 2] = $24_1; | |
HEAP32[($7_1 + 68 | 0) >> 2] = i64toi32_i32$5; | |
$20_1 = 1; | |
$16_1 = 3904; | |
break label$45; | |
} | |
label$62 : { | |
if (!($13_1 & 2048 | 0)) { | |
break label$62 | |
} | |
$20_1 = 1; | |
$16_1 = 3905; | |
break label$45; | |
} | |
$20_1 = $13_1 & 1 | 0; | |
$16_1 = $20_1 ? 3906 : 3904; | |
} | |
i64toi32_i32$5 = $24$hi; | |
$12_1 = $45($24_1 | 0, i64toi32_i32$5 | 0, $9_1 | 0) | 0; | |
} | |
$13_1 = ($19_1 | 0) > (-1 | 0) ? $13_1 & -65537 | 0 : $13_1; | |
i64toi32_i32$2 = $7_1; | |
i64toi32_i32$5 = HEAP32[($7_1 + 64 | 0) >> 2] | 0; | |
i64toi32_i32$3 = HEAP32[($7_1 + 68 | 0) >> 2] | 0; | |
$24_1 = i64toi32_i32$5; | |
$24$hi = i64toi32_i32$3; | |
label$63 : { | |
if ($19_1) { | |
break label$63 | |
} | |
i64toi32_i32$3 = $24$hi; | |
if (!!($24_1 | i64toi32_i32$3 | 0)) { | |
break label$63 | |
} | |
$19_1 = 0; | |
$12_1 = $9_1; | |
break label$10; | |
} | |
i64toi32_i32$3 = $24$hi; | |
$1_1 = ($9_1 - $12_1 | 0) + !($24_1 | i64toi32_i32$3 | 0) | 0; | |
$19_1 = ($19_1 | 0) > ($1_1 | 0) ? $19_1 : $1_1; | |
break label$10; | |
} | |
$20_1 = 0; | |
$1_1 = HEAP32[($7_1 + 64 | 0) >> 2] | 0; | |
$12_1 = $1_1 ? $1_1 : 3914; | |
$1_1 = $27($12_1 | 0, 0 | 0, $19_1 | 0) | 0; | |
$14_1 = $1_1 ? $1_1 : $12_1 + $19_1 | 0; | |
$13_1 = $21_1; | |
$19_1 = $1_1 ? $1_1 - $12_1 | 0 : $19_1; | |
break label$9; | |
} | |
label$64 : { | |
if (!$19_1) { | |
break label$64 | |
} | |
$14_1 = HEAP32[($7_1 + 64 | 0) >> 2] | 0; | |
break label$40; | |
} | |
$1_1 = 0; | |
$46($0_1 | 0, 32 | 0, $18_1 | 0, 0 | 0, $13_1 | 0); | |
break label$39; | |
} | |
HEAP32[($7_1 + 12 | 0) >> 2] = 0; | |
i64toi32_i32$2 = $7_1; | |
i64toi32_i32$3 = HEAP32[($7_1 + 64 | 0) >> 2] | 0; | |
i64toi32_i32$5 = HEAP32[($7_1 + 68 | 0) >> 2] | 0; | |
HEAP32[($7_1 + 8 | 0) >> 2] = i64toi32_i32$3; | |
HEAP32[($7_1 + 64 | 0) >> 2] = $7_1 + 8 | 0; | |
$19_1 = -1; | |
$14_1 = $7_1 + 8 | 0; | |
} | |
$1_1 = 0; | |
label$65 : { | |
label$66 : while (1) { | |
$15_1 = HEAP32[$14_1 >> 2] | 0; | |
if (!$15_1) { | |
break label$65 | |
} | |
label$67 : { | |
$15_1 = $31($7_1 + 4 | 0 | 0, $15_1 | 0) | 0; | |
$12_1 = ($15_1 | 0) < (0 | 0); | |
if ($12_1) { | |
break label$67 | |
} | |
if ($15_1 >>> 0 > ($19_1 - $1_1 | 0) >>> 0) { | |
break label$67 | |
} | |
$14_1 = $14_1 + 4 | 0; | |
$1_1 = $15_1 + $1_1 | 0; | |
if ($19_1 >>> 0 > $1_1 >>> 0) { | |
continue label$66 | |
} | |
break label$65; | |
} | |
break label$66; | |
}; | |
$20_1 = -1; | |
if ($12_1) { | |
break label$3 | |
} | |
} | |
$46($0_1 | 0, 32 | 0, $18_1 | 0, $1_1 | 0, $13_1 | 0); | |
label$68 : { | |
if ($1_1) { | |
break label$68 | |
} | |
$1_1 = 0; | |
break label$39; | |
} | |
$15_1 = 0; | |
$14_1 = HEAP32[($7_1 + 64 | 0) >> 2] | 0; | |
label$69 : while (1) { | |
$12_1 = HEAP32[$14_1 >> 2] | 0; | |
if (!$12_1) { | |
break label$39 | |
} | |
$12_1 = $31($7_1 + 4 | 0 | 0, $12_1 | 0) | 0; | |
$15_1 = $12_1 + $15_1 | 0; | |
if (($15_1 | 0) > ($1_1 | 0)) { | |
break label$39 | |
} | |
$40($0_1 | 0, $7_1 + 4 | 0 | 0, $12_1 | 0); | |
$14_1 = $14_1 + 4 | 0; | |
if ($15_1 >>> 0 < $1_1 >>> 0) { | |
continue label$69 | |
} | |
break label$69; | |
}; | |
} | |
$46($0_1 | 0, 32 | 0, $18_1 | 0, $1_1 | 0, $13_1 ^ 8192 | 0 | 0); | |
$1_1 = ($18_1 | 0) > ($1_1 | 0) ? $18_1 : $1_1; | |
continue label$5; | |
} | |
$1_1 = FUNCTION_TABLE[$5_1]($0_1, +HEAPF64[($7_1 + 64 | 0) >> 3], $18_1, $19_1, $13_1, $1_1) | 0; | |
continue label$5; | |
} | |
i64toi32_i32$2 = $7_1; | |
i64toi32_i32$5 = HEAP32[($7_1 + 64 | 0) >> 2] | 0; | |
i64toi32_i32$3 = HEAP32[($7_1 + 68 | 0) >> 2] | 0; | |
HEAP8[($7_1 + 55 | 0) >> 0] = i64toi32_i32$5; | |
$19_1 = 1; | |
$12_1 = $8_1; | |
$14_1 = $9_1; | |
$13_1 = $21_1; | |
break label$9; | |
} | |
$14_1 = $1_1 + 1 | 0; | |
HEAP32[($7_1 + 76 | 0) >> 2] = $14_1; | |
$13_1 = HEAPU8[($1_1 + 1 | 0) >> 0] | 0; | |
$1_1 = $14_1; | |
continue label$12; | |
}; | |
} | |
$20_1 = $11_1; | |
if ($0_1) { | |
break label$3 | |
} | |
if (!$10_1) { | |
break label$8 | |
} | |
$1_1 = 1; | |
label$70 : { | |
label$71 : while (1) { | |
$13_1 = HEAP32[($4_1 + ($1_1 << 2 | 0) | 0) >> 2] | 0; | |
if (!$13_1) { | |
break label$70 | |
} | |
$42($3_1 + ($1_1 << 3 | 0) | 0 | 0, $13_1 | 0, $2_1 | 0, $6_1 | 0); | |
$20_1 = 1; | |
$1_1 = $1_1 + 1 | 0; | |
if (($1_1 | 0) != (10 | 0)) { | |
continue label$71 | |
} | |
break label$3; | |
}; | |
} | |
$20_1 = 1; | |
if ($1_1 >>> 0 > 9 >>> 0) { | |
break label$3 | |
} | |
$20_1 = -1; | |
if (HEAP32[($4_1 + ($1_1 << 2 | 0) | 0) >> 2] | 0) { | |
break label$3 | |
} | |
label$72 : { | |
label$73 : while (1) { | |
$13_1 = $1_1; | |
$1_1 = $1_1 + 1 | 0; | |
if (($1_1 | 0) == (10 | 0)) { | |
break label$72 | |
} | |
if (!(HEAP32[($4_1 + ($1_1 << 2 | 0) | 0) >> 2] | 0)) { | |
continue label$73 | |
} | |
break label$73; | |
}; | |
} | |
$20_1 = $13_1 >>> 0 < 9 >>> 0 ? -1 : 1; | |
break label$3; | |
} | |
$14_1 = $9_1; | |
} | |
$15_1 = $14_1 - $12_1 | 0; | |
$17_1 = ($19_1 | 0) < ($15_1 | 0) ? $15_1 : $19_1; | |
$14_1 = $20_1 + $17_1 | 0; | |
$1_1 = ($18_1 | 0) < ($14_1 | 0) ? $14_1 : $18_1; | |
$46($0_1 | 0, 32 | 0, $1_1 | 0, $14_1 | 0, $13_1 | 0); | |
$40($0_1 | 0, $16_1 | 0, $20_1 | 0); | |
$46($0_1 | 0, 48 | 0, $1_1 | 0, $14_1 | 0, $13_1 ^ 65536 | 0 | 0); | |
$46($0_1 | 0, 48 | 0, $17_1 | 0, $15_1 | 0, 0 | 0); | |
$40($0_1 | 0, $12_1 | 0, $15_1 | 0); | |
$46($0_1 | 0, 32 | 0, $1_1 | 0, $14_1 | 0, $13_1 ^ 8192 | 0 | 0); | |
continue label$5; | |
} | |
break label$5; | |
}; | |
$20_1 = 0; | |
break label$3; | |
} | |
$20_1 = -1; | |
} | |
label$74 : { | |
$23_1 = $7_1 + 80 | 0; | |
if ($23_1 >>> 0 < global$2 >>> 0) { | |
fimport$3() | |
} | |
global$0 = $23_1; | |
} | |
return $20_1 | 0; | |
} | |
function $40($0_1, $1_1, $2_1) { | |
$0_1 = $0_1 | 0; | |
$1_1 = $1_1 | 0; | |
$2_1 = $2_1 | 0; | |
label$1 : { | |
if ((HEAPU8[$0_1 >> 0] | 0) & 32 | 0) { | |
break label$1 | |
} | |
$37($1_1 | 0, $2_1 | 0, $0_1 | 0) | 0; | |
} | |
} | |
function $41($0_1) { | |
$0_1 = $0_1 | 0; | |
var $1_1 = 0, $2_1 = 0, $3_1 = 0; | |
$1_1 = 0; | |
label$1 : { | |
if (!($26(HEAP8[(HEAP32[$0_1 >> 2] | 0) >> 0] | 0 | 0) | 0)) { | |
break label$1 | |
} | |
label$2 : while (1) { | |
$2_1 = HEAP32[$0_1 >> 2] | 0; | |
$3_1 = HEAP8[$2_1 >> 0] | 0; | |
HEAP32[$0_1 >> 2] = $2_1 + 1 | 0; | |
$1_1 = ($3_1 + Math_imul($1_1, 10) | 0) + -48 | 0; | |
if ($26(HEAP8[($2_1 + 1 | 0) >> 0] | 0 | 0) | 0) { | |
continue label$2 | |
} | |
break label$2; | |
}; | |
} | |
return $1_1 | 0; | |
} | |
function $42($0_1, $1_1, $2_1, $3_1) { | |
$0_1 = $0_1 | 0; | |
$1_1 = $1_1 | 0; | |
$2_1 = $2_1 | 0; | |
$3_1 = $3_1 | 0; | |
var i64toi32_i32$1 = 0, i64toi32_i32$0 = 0, $23_1 = 0, $31_1 = 0, $41_1 = 0, $49_1 = 0, $57_1 = 0, $65_1 = 0, $73 = 0, $83 = 0; | |
label$1 : { | |
if ($1_1 >>> 0 > 20 >>> 0) { | |
break label$1 | |
} | |
label$2 : { | |
switch ($1_1 + -9 | 0 | 0) { | |
case 0: | |
$1_1 = HEAP32[$2_1 >> 2] | 0; | |
HEAP32[$2_1 >> 2] = $1_1 + 4 | 0; | |
HEAP32[$0_1 >> 2] = HEAP32[$1_1 >> 2] | 0; | |
return; | |
case 1: | |
$1_1 = HEAP32[$2_1 >> 2] | 0; | |
HEAP32[$2_1 >> 2] = $1_1 + 4 | 0; | |
i64toi32_i32$0 = HEAP32[$1_1 >> 2] | 0; | |
i64toi32_i32$1 = i64toi32_i32$0 >> 31 | 0; | |
$23_1 = i64toi32_i32$0; | |
i64toi32_i32$0 = $0_1; | |
HEAP32[i64toi32_i32$0 >> 2] = $23_1; | |
HEAP32[(i64toi32_i32$0 + 4 | 0) >> 2] = i64toi32_i32$1; | |
return; | |
case 2: | |
$1_1 = HEAP32[$2_1 >> 2] | 0; | |
HEAP32[$2_1 >> 2] = $1_1 + 4 | 0; | |
i64toi32_i32$1 = HEAP32[$1_1 >> 2] | 0; | |
i64toi32_i32$0 = 0; | |
$31_1 = i64toi32_i32$1; | |
i64toi32_i32$1 = $0_1; | |
HEAP32[i64toi32_i32$1 >> 2] = $31_1; | |
HEAP32[(i64toi32_i32$1 + 4 | 0) >> 2] = i64toi32_i32$0; | |
return; | |
case 3: | |
$1_1 = ((HEAP32[$2_1 >> 2] | 0) + 7 | 0) & -8 | 0; | |
HEAP32[$2_1 >> 2] = $1_1 + 8 | 0; | |
i64toi32_i32$0 = HEAP32[$1_1 >> 2] | 0; | |
i64toi32_i32$1 = HEAP32[($1_1 + 4 | 0) >> 2] | 0; | |
$41_1 = i64toi32_i32$0; | |
i64toi32_i32$0 = $0_1; | |
HEAP32[i64toi32_i32$0 >> 2] = $41_1; | |
HEAP32[(i64toi32_i32$0 + 4 | 0) >> 2] = i64toi32_i32$1; | |
return; | |
case 4: | |
$1_1 = HEAP32[$2_1 >> 2] | 0; | |
HEAP32[$2_1 >> 2] = $1_1 + 4 | 0; | |
i64toi32_i32$1 = HEAP16[$1_1 >> 1] | 0; | |
i64toi32_i32$0 = i64toi32_i32$1 >> 31 | 0; | |
$49_1 = i64toi32_i32$1; | |
i64toi32_i32$1 = $0_1; | |
HEAP32[i64toi32_i32$1 >> 2] = $49_1; | |
HEAP32[(i64toi32_i32$1 + 4 | 0) >> 2] = i64toi32_i32$0; | |
return; | |
case 5: | |
$1_1 = HEAP32[$2_1 >> 2] | 0; | |
HEAP32[$2_1 >> 2] = $1_1 + 4 | 0; | |
i64toi32_i32$0 = HEAPU16[$1_1 >> 1] | 0; | |
i64toi32_i32$1 = 0; | |
$57_1 = i64toi32_i32$0; | |
i64toi32_i32$0 = $0_1; | |
HEAP32[i64toi32_i32$0 >> 2] = $57_1; | |
HEAP32[(i64toi32_i32$0 + 4 | 0) >> 2] = i64toi32_i32$1; | |
return; | |
case 6: | |
$1_1 = HEAP32[$2_1 >> 2] | 0; | |
HEAP32[$2_1 >> 2] = $1_1 + 4 | 0; | |
i64toi32_i32$1 = HEAP8[$1_1 >> 0] | 0; | |
i64toi32_i32$0 = i64toi32_i32$1 >> 31 | 0; | |
$65_1 = i64toi32_i32$1; | |
i64toi32_i32$1 = $0_1; | |
HEAP32[i64toi32_i32$1 >> 2] = $65_1; | |
HEAP32[(i64toi32_i32$1 + 4 | 0) >> 2] = i64toi32_i32$0; | |
return; | |
case 7: | |
$1_1 = HEAP32[$2_1 >> 2] | 0; | |
HEAP32[$2_1 >> 2] = $1_1 + 4 | 0; | |
i64toi32_i32$0 = HEAPU8[$1_1 >> 0] | 0; | |
i64toi32_i32$1 = 0; | |
$73 = i64toi32_i32$0; | |
i64toi32_i32$0 = $0_1; | |
HEAP32[i64toi32_i32$0 >> 2] = $73; | |
HEAP32[(i64toi32_i32$0 + 4 | 0) >> 2] = i64toi32_i32$1; | |
return; | |
case 8: | |
$1_1 = ((HEAP32[$2_1 >> 2] | 0) + 7 | 0) & -8 | 0; | |
HEAP32[$2_1 >> 2] = $1_1 + 8 | 0; | |
i64toi32_i32$1 = HEAP32[$1_1 >> 2] | 0; | |
i64toi32_i32$0 = HEAP32[($1_1 + 4 | 0) >> 2] | 0; | |
$83 = i64toi32_i32$1; | |
i64toi32_i32$1 = $0_1; | |
HEAP32[i64toi32_i32$1 >> 2] = $83; | |
HEAP32[(i64toi32_i32$1 + 4 | 0) >> 2] = i64toi32_i32$0; | |
return; | |
case 9: | |
break label$2; | |
default: | |
break label$1; | |
}; | |
} | |
FUNCTION_TABLE[$3_1]($0_1, $2_1); | |
} | |
} | |
function $43($0_1, $0$hi, $1_1, $2_1) { | |
$0_1 = $0_1 | 0; | |
$0$hi = $0$hi | 0; | |
$1_1 = $1_1 | 0; | |
$2_1 = $2_1 | 0; | |
var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, i64toi32_i32$2 = 0, $9_1 = 0; | |
label$1 : { | |
i64toi32_i32$0 = $0$hi; | |
if (!($0_1 | i64toi32_i32$0 | 0)) { | |
break label$1 | |
} | |
label$2 : while (1) { | |
$1_1 = $1_1 + -1 | 0; | |
i64toi32_i32$0 = $0$hi; | |
HEAP8[$1_1 >> 0] = HEAPU8[(($0_1 & 15 | 0) + 4400 | 0) >> 0] | 0 | $2_1 | 0; | |
i64toi32_i32$2 = $0_1; | |
i64toi32_i32$1 = 0; | |
i64toi32_i32$3 = 4; | |
i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; | |
if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { | |
i64toi32_i32$1 = 0; | |
$9_1 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0; | |
} else { | |
i64toi32_i32$1 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0; | |
$9_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$0 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0; | |
} | |
$0_1 = $9_1; | |
$0$hi = i64toi32_i32$1; | |
i64toi32_i32$0 = $0_1; | |
i64toi32_i32$2 = 0; | |
i64toi32_i32$3 = 0; | |
if ((i64toi32_i32$0 | 0) != (i64toi32_i32$3 | 0) | (i64toi32_i32$1 | 0) != (i64toi32_i32$2 | 0) | 0) { | |
continue label$2 | |
} | |
break label$2; | |
}; | |
} | |
return $1_1 | 0; | |
} | |
function $44($0_1, $0$hi, $1_1) { | |
$0_1 = $0_1 | 0; | |
$0$hi = $0$hi | 0; | |
$1_1 = $1_1 | 0; | |
var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, i64toi32_i32$2 = 0, $8_1 = 0; | |
label$1 : { | |
i64toi32_i32$0 = $0$hi; | |
if (!($0_1 | i64toi32_i32$0 | 0)) { | |
break label$1 | |
} | |
label$2 : while (1) { | |
$1_1 = $1_1 + -1 | 0; | |
i64toi32_i32$0 = $0$hi; | |
HEAP8[$1_1 >> 0] = $0_1 & 7 | 0 | 48 | 0; | |
i64toi32_i32$2 = $0_1; | |
i64toi32_i32$1 = 0; | |
i64toi32_i32$3 = 3; | |
i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; | |
if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { | |
i64toi32_i32$1 = 0; | |
$8_1 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0; | |
} else { | |
i64toi32_i32$1 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0; | |
$8_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$0 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0; | |
} | |
$0_1 = $8_1; | |
$0$hi = i64toi32_i32$1; | |
i64toi32_i32$0 = $0_1; | |
i64toi32_i32$2 = 0; | |
i64toi32_i32$3 = 0; | |
if ((i64toi32_i32$0 | 0) != (i64toi32_i32$3 | 0) | (i64toi32_i32$1 | 0) != (i64toi32_i32$2 | 0) | 0) { | |
continue label$2 | |
} | |
break label$2; | |
}; | |
} | |
return $1_1 | 0; | |
} | |
function $45($0_1, $0$hi, $1_1) { | |
$0_1 = $0_1 | 0; | |
$0$hi = $0$hi | 0; | |
$1_1 = $1_1 | 0; | |
var i64toi32_i32$2 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, $2_1 = 0, i64toi32_i32$3 = 0, $5_1 = 0, i64toi32_i32$5 = 0, $5$hi = 0, $3_1 = 0, $16_1 = 0, $16$hi = 0, $4_1 = 0; | |
label$1 : { | |
label$2 : { | |
i64toi32_i32$0 = $0$hi; | |
i64toi32_i32$2 = $0_1; | |
i64toi32_i32$1 = 1; | |
i64toi32_i32$3 = 0; | |
if (i64toi32_i32$0 >>> 0 > i64toi32_i32$1 >>> 0 | ((i64toi32_i32$0 | 0) == (i64toi32_i32$1 | 0) & i64toi32_i32$2 >>> 0 >= i64toi32_i32$3 >>> 0 | 0) | 0) { | |
break label$2 | |
} | |
i64toi32_i32$2 = $0$hi; | |
$5_1 = $0_1; | |
$5$hi = i64toi32_i32$2; | |
break label$1; | |
} | |
label$3 : while (1) { | |
$1_1 = $1_1 + -1 | 0; | |
i64toi32_i32$2 = $0$hi; | |
i64toi32_i32$0 = 0; | |
i64toi32_i32$0 = __wasm_i64_udiv($0_1 | 0, i64toi32_i32$2 | 0, 10 | 0, i64toi32_i32$0 | 0) | 0; | |
i64toi32_i32$2 = i64toi32_i32$HIGH_BITS; | |
$5_1 = i64toi32_i32$0; | |
$5$hi = i64toi32_i32$2; | |
i64toi32_i32$0 = 0; | |
i64toi32_i32$0 = __wasm_i64_mul($5_1 | 0, i64toi32_i32$2 | 0, 10 | 0, i64toi32_i32$0 | 0) | 0; | |
i64toi32_i32$2 = i64toi32_i32$HIGH_BITS; | |
$16_1 = i64toi32_i32$0; | |
$16$hi = i64toi32_i32$2; | |
i64toi32_i32$2 = $0$hi; | |
i64toi32_i32$3 = $0_1; | |
i64toi32_i32$0 = $16$hi; | |
i64toi32_i32$1 = $16_1; | |
i64toi32_i32$5 = ($0_1 >>> 0 < i64toi32_i32$1 >>> 0) + i64toi32_i32$0 | 0; | |
i64toi32_i32$5 = i64toi32_i32$2 - i64toi32_i32$5 | 0; | |
HEAP8[$1_1 >> 0] = $0_1 - i64toi32_i32$1 | 0 | 48 | 0; | |
i64toi32_i32$5 = i64toi32_i32$2; | |
i64toi32_i32$5 = i64toi32_i32$2; | |
i64toi32_i32$2 = $0_1; | |
i64toi32_i32$3 = 9; | |
i64toi32_i32$1 = -1; | |
$2_1 = $0$hi >>> 0 > i64toi32_i32$3 >>> 0 | (($0$hi | 0) == (i64toi32_i32$3 | 0) & i64toi32_i32$2 >>> 0 > i64toi32_i32$1 >>> 0 | 0) | 0; | |
i64toi32_i32$2 = $5$hi; | |
$0_1 = $5_1; | |
$0$hi = i64toi32_i32$2; | |
if ($2_1) { | |
continue label$3 | |
} | |
break label$3; | |
}; | |
} | |
label$4 : { | |
i64toi32_i32$2 = $5$hi; | |
$2_1 = $5_1; | |
if (!$2_1) { | |
break label$4 | |
} | |
label$5 : while (1) { | |
$1_1 = $1_1 + -1 | 0; | |
$3_1 = ($2_1 >>> 0) / (10 >>> 0) | 0; | |
HEAP8[$1_1 >> 0] = $2_1 - Math_imul($3_1, 10) | 0 | 48 | 0; | |
$4_1 = $2_1 >>> 0 > 9 >>> 0; | |
$2_1 = $3_1; | |
if ($4_1) { | |
continue label$5 | |
} | |
break label$5; | |
}; | |
} | |
return $1_1 | 0; | |
} | |
function $46($0_1, $1_1, $2_1, $3_1, $4_1) { | |
$0_1 = $0_1 | 0; | |
$1_1 = $1_1 | 0; | |
$2_1 = $2_1 | 0; | |
$3_1 = $3_1 | 0; | |
$4_1 = $4_1 | 0; | |
var $5_1 = 0, $7_1 = 0, $6_1 = 0; | |
label$1 : { | |
$5_1 = global$0 - 256 | 0; | |
$6_1 = $5_1; | |
if ($5_1 >>> 0 < global$2 >>> 0) { | |
fimport$3() | |
} | |
global$0 = $6_1; | |
} | |
label$3 : { | |
if (($2_1 | 0) <= ($3_1 | 0)) { | |
break label$3 | |
} | |
if ($4_1 & 73728 | 0) { | |
break label$3 | |
} | |
$2_1 = $2_1 - $3_1 | 0; | |
$3_1 = $2_1 >>> 0 < 256 >>> 0; | |
$19($5_1 | 0, $1_1 | 0, ($3_1 ? $2_1 : 256) | 0) | 0; | |
label$4 : { | |
if ($3_1) { | |
break label$4 | |
} | |
label$5 : while (1) { | |
$40($0_1 | 0, $5_1 | 0, 256 | 0); | |
$2_1 = $2_1 + -256 | 0; | |
if ($2_1 >>> 0 > 255 >>> 0) { | |
continue label$5 | |
} | |
break label$5; | |
}; | |
} | |
$40($0_1 | 0, $5_1 | 0, $2_1 | 0); | |
} | |
label$6 : { | |
$7_1 = $5_1 + 256 | 0; | |
if ($7_1 >>> 0 < global$2 >>> 0) { | |
fimport$3() | |
} | |
global$0 = $7_1; | |
} | |
} | |
function $47($0_1, $1_1, $2_1) { | |
$0_1 = $0_1 | 0; | |
$1_1 = $1_1 | 0; | |
$2_1 = $2_1 | 0; | |
return $38($0_1 | 0, $1_1 | 0, $2_1 | 0, 4 | 0, 5 | 0) | 0 | 0; | |
} | |
function $48($0_1, $1_1, $2_1, $3_1, $4_1, $5_1) { | |
$0_1 = $0_1 | 0; | |
$1_1 = +$1_1; | |
$2_1 = $2_1 | 0; | |
$3_1 = $3_1 | 0; | |
$4_1 = $4_1 | 0; | |
$5_1 = $5_1 | 0; | |
var $10_1 = 0, $17_1 = 0, $16_1 = 0, $22_1 = 0, $6_1 = 0, i64toi32_i32$1 = 0, $9_1 = 0, $13_1 = 0, i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, $20_1 = 0, i64toi32_i32$2 = 0, i64toi32_i32$3 = 0, i64toi32_i32$5 = 0, $21_1 = 0, $15_1 = 0, $11_1 = 0, $12_1 = 0, $18_1 = 0, $27_1 = 0.0, $7_1 = 0, $25_1 = 0, $19_1 = 0, $25$hi = 0, $8_1 = 0, $14_1 = 0, $45_1 = 0, $46_1 = 0, $47_1 = 0, $26$hi = 0, $48_1 = 0, $24_1 = 0, $23_1 = 0, $26_1 = 0, $166 = 0, $168$hi = 0, $170$hi = 0, $172 = 0, $172$hi = 0, $174$hi = 0, $178 = 0, $178$hi = 0, $821 = 0; | |
label$1 : { | |
$6_1 = global$0 - 560 | 0; | |
$23_1 = $6_1; | |
if ($6_1 >>> 0 < global$2 >>> 0) { | |
fimport$3() | |
} | |
global$0 = $23_1; | |
} | |
HEAP32[($6_1 + 44 | 0) >> 2] = 0; | |
label$3 : { | |
label$4 : { | |
i64toi32_i32$0 = $50(+$1_1) | 0; | |
i64toi32_i32$1 = i64toi32_i32$HIGH_BITS; | |
$25_1 = i64toi32_i32$0; | |
$25$hi = i64toi32_i32$1; | |
i64toi32_i32$2 = i64toi32_i32$0; | |
i64toi32_i32$0 = -1; | |
i64toi32_i32$3 = -1; | |
if ((i64toi32_i32$1 | 0) > (i64toi32_i32$0 | 0)) { | |
$45_1 = 1 | |
} else { | |
if ((i64toi32_i32$1 | 0) >= (i64toi32_i32$0 | 0)) { | |
if (i64toi32_i32$2 >>> 0 <= i64toi32_i32$3 >>> 0) { | |
$46_1 = 0 | |
} else { | |
$46_1 = 1 | |
} | |
$47_1 = $46_1; | |
} else { | |
$47_1 = 0 | |
} | |
$45_1 = $47_1; | |
} | |
if ($45_1) { | |
break label$4 | |
} | |
$7_1 = 1; | |
$8_1 = 4416; | |
$1_1 = -$1_1; | |
i64toi32_i32$2 = $50(+$1_1) | 0; | |
i64toi32_i32$1 = i64toi32_i32$HIGH_BITS; | |
$25_1 = i64toi32_i32$2; | |
$25$hi = i64toi32_i32$1; | |
break label$3; | |
} | |
label$5 : { | |
if (!($4_1 & 2048 | 0)) { | |
break label$5 | |
} | |
$7_1 = 1; | |
$8_1 = 4419; | |
break label$3; | |
} | |
$7_1 = $4_1 & 1 | 0; | |
$8_1 = $7_1 ? 4422 : 4417; | |
} | |
label$6 : { | |
label$7 : { | |
i64toi32_i32$1 = $25$hi; | |
i64toi32_i32$3 = $25_1; | |
i64toi32_i32$2 = 2146435072; | |
i64toi32_i32$0 = 0; | |
i64toi32_i32$2 = i64toi32_i32$1 & i64toi32_i32$2 | 0; | |
i64toi32_i32$1 = i64toi32_i32$3 & i64toi32_i32$0 | 0; | |
i64toi32_i32$3 = 2146435072; | |
i64toi32_i32$0 = 0; | |
if ((i64toi32_i32$1 | 0) != (i64toi32_i32$0 | 0) | (i64toi32_i32$2 | 0) != (i64toi32_i32$3 | 0) | 0) { | |
break label$7 | |
} | |
$9_1 = $7_1 + 3 | 0; | |
$46($0_1 | 0, 32 | 0, $2_1 | 0, $9_1 | 0, $4_1 & -65537 | 0 | 0); | |
$40($0_1 | 0, $8_1 | 0, $7_1 | 0); | |
$10_1 = ($5_1 >>> 5 | 0) & 1 | 0; | |
$40($0_1 | 0, ($1_1 != $1_1 ? ($10_1 ? 4443 : 4447) : $10_1 ? 4435 : 4439) | 0, 3 | 0); | |
$46($0_1 | 0, 32 | 0, $2_1 | 0, $9_1 | 0, $4_1 ^ 8192 | 0 | 0); | |
break label$6; | |
} | |
$11_1 = $6_1 + 16 | 0; | |
label$8 : { | |
label$9 : { | |
label$10 : { | |
label$11 : { | |
$1_1 = +$32(+$1_1, $6_1 + 44 | 0 | 0); | |
$1_1 = $1_1 + $1_1; | |
if ($1_1 == 0.0) { | |
break label$11 | |
} | |
$10_1 = HEAP32[($6_1 + 44 | 0) >> 2] | 0; | |
HEAP32[($6_1 + 44 | 0) >> 2] = $10_1 + -1 | 0; | |
$12_1 = $5_1 | 32 | 0; | |
if (($12_1 | 0) != (97 | 0)) { | |
break label$10 | |
} | |
break label$8; | |
} | |
$12_1 = $5_1 | 32 | 0; | |
if (($12_1 | 0) == (97 | 0)) { | |
break label$8 | |
} | |
$13_1 = ($3_1 | 0) < (0 | 0) ? 6 : $3_1; | |
$14_1 = HEAP32[($6_1 + 44 | 0) >> 2] | 0; | |
break label$9; | |
} | |
$14_1 = $10_1 + -29 | 0; | |
HEAP32[($6_1 + 44 | 0) >> 2] = $14_1; | |
$13_1 = ($3_1 | 0) < (0 | 0) ? 6 : $3_1; | |
$1_1 = $1_1 * 268435456.0; | |
} | |
$15_1 = ($14_1 | 0) < (0 | 0) ? $6_1 + 48 | 0 : $6_1 + 336 | 0; | |
$16_1 = $15_1; | |
label$12 : while (1) { | |
label$13 : { | |
label$14 : { | |
if (!($1_1 < 4294967296.0 & $1_1 >= 0.0 | 0)) { | |
break label$14 | |
} | |
$10_1 = ~~$1_1 >>> 0; | |
break label$13; | |
} | |
$10_1 = 0; | |
} | |
HEAP32[$16_1 >> 2] = $10_1; | |
$16_1 = $16_1 + 4 | 0; | |
$1_1 = ($1_1 - +($10_1 >>> 0)) * 1.0e9; | |
if ($1_1 != 0.0) { | |
continue label$12 | |
} | |
break label$12; | |
}; | |
label$15 : { | |
label$16 : { | |
if (($14_1 | 0) >= (1 | 0)) { | |
break label$16 | |
} | |
$3_1 = $14_1; | |
$10_1 = $16_1; | |
$17_1 = $15_1; | |
break label$15; | |
} | |
$17_1 = $15_1; | |
$3_1 = $14_1; | |
label$17 : while (1) { | |
$3_1 = ($3_1 | 0) < (29 | 0) ? $3_1 : 29; | |
label$18 : { | |
$10_1 = $16_1 + -4 | 0; | |
if ($10_1 >>> 0 < $17_1 >>> 0) { | |
break label$18 | |
} | |
i64toi32_i32$1 = 0; | |
$26_1 = $3_1; | |
$26$hi = i64toi32_i32$1; | |
i64toi32_i32$1 = 0; | |
$25_1 = 0; | |
$25$hi = i64toi32_i32$1; | |
label$19 : while (1) { | |
$166 = $10_1; | |
i64toi32_i32$0 = $10_1; | |
i64toi32_i32$1 = HEAP32[$10_1 >> 2] | 0; | |
i64toi32_i32$2 = 0; | |
$168$hi = i64toi32_i32$2; | |
i64toi32_i32$2 = $26$hi; | |
i64toi32_i32$2 = $168$hi; | |
i64toi32_i32$0 = i64toi32_i32$1; | |
i64toi32_i32$1 = $26$hi; | |
i64toi32_i32$3 = $26_1; | |
i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; | |
if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { | |
i64toi32_i32$1 = i64toi32_i32$0 << i64toi32_i32$4 | 0; | |
$48_1 = 0; | |
} else { | |
i64toi32_i32$1 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$0 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$2 << i64toi32_i32$4 | 0) | 0; | |
$48_1 = i64toi32_i32$0 << i64toi32_i32$4 | 0; | |
} | |
$170$hi = i64toi32_i32$1; | |
i64toi32_i32$1 = $25$hi; | |
i64toi32_i32$2 = $25_1; | |
i64toi32_i32$0 = 0; | |
i64toi32_i32$3 = -1; | |
i64toi32_i32$0 = i64toi32_i32$1 & i64toi32_i32$0 | 0; | |
$172 = i64toi32_i32$2 & i64toi32_i32$3 | 0; | |
$172$hi = i64toi32_i32$0; | |
i64toi32_i32$0 = $170$hi; | |
i64toi32_i32$1 = $48_1; | |
i64toi32_i32$2 = $172$hi; | |
i64toi32_i32$3 = $172; | |
i64toi32_i32$4 = i64toi32_i32$1 + i64toi32_i32$3 | 0; | |
i64toi32_i32$5 = i64toi32_i32$0 + i64toi32_i32$2 | 0; | |
if (i64toi32_i32$4 >>> 0 < i64toi32_i32$3 >>> 0) { | |
i64toi32_i32$5 = i64toi32_i32$5 + 1 | 0 | |
} | |
$25_1 = i64toi32_i32$4; | |
$25$hi = i64toi32_i32$5; | |
$174$hi = i64toi32_i32$5; | |
i64toi32_i32$1 = 0; | |
i64toi32_i32$1 = __wasm_i64_udiv(i64toi32_i32$4 | 0, i64toi32_i32$5 | 0, 1e9 | 0, i64toi32_i32$1 | 0) | 0; | |
i64toi32_i32$5 = i64toi32_i32$HIGH_BITS; | |
$25_1 = i64toi32_i32$1; | |
$25$hi = i64toi32_i32$5; | |
i64toi32_i32$1 = 0; | |
i64toi32_i32$1 = __wasm_i64_mul($25_1 | 0, i64toi32_i32$5 | 0, 1e9 | 0, i64toi32_i32$1 | 0) | 0; | |
i64toi32_i32$5 = i64toi32_i32$HIGH_BITS; | |
$178 = i64toi32_i32$1; | |
$178$hi = i64toi32_i32$5; | |
i64toi32_i32$5 = $174$hi; | |
i64toi32_i32$0 = i64toi32_i32$4; | |
i64toi32_i32$1 = $178$hi; | |
i64toi32_i32$3 = $178; | |
i64toi32_i32$2 = i64toi32_i32$0 - i64toi32_i32$3 | 0; | |
i64toi32_i32$4 = (i64toi32_i32$0 >>> 0 < i64toi32_i32$3 >>> 0) + i64toi32_i32$1 | 0; | |
i64toi32_i32$4 = i64toi32_i32$5 - i64toi32_i32$4 | 0; | |
HEAP32[$166 >> 2] = i64toi32_i32$2; | |
$10_1 = $10_1 + -4 | 0; | |
if ($10_1 >>> 0 >= $17_1 >>> 0) { | |
continue label$19 | |
} | |
break label$19; | |
}; | |
i64toi32_i32$4 = $25$hi; | |
$10_1 = $25_1; | |
if (!$10_1) { | |
break label$18 | |
} | |
$17_1 = $17_1 + -4 | 0; | |
HEAP32[$17_1 >> 2] = $10_1; | |
} | |
label$20 : { | |
label$21 : while (1) { | |
$10_1 = $16_1; | |
if ($10_1 >>> 0 <= $17_1 >>> 0) { | |
break label$20 | |
} | |
$16_1 = $10_1 + -4 | 0; | |
if (!(HEAP32[$16_1 >> 2] | 0)) { | |
continue label$21 | |
} | |
break label$21; | |
}; | |
} | |
$3_1 = (HEAP32[($6_1 + 44 | 0) >> 2] | 0) - $3_1 | 0; | |
HEAP32[($6_1 + 44 | 0) >> 2] = $3_1; | |
$16_1 = $10_1; | |
if (($3_1 | 0) > (0 | 0)) { | |
continue label$17 | |
} | |
break label$17; | |
}; | |
} | |
label$22 : { | |
if (($3_1 | 0) > (-1 | 0)) { | |
break label$22 | |
} | |
$18_1 = (($13_1 + 25 | 0 | 0) / (9 | 0) | 0) + 1 | 0; | |
$19_1 = ($12_1 | 0) == (102 | 0); | |
label$23 : while (1) { | |
$9_1 = ($3_1 | 0) < (-9 | 0) ? 9 : 0 - $3_1 | 0; | |
label$24 : { | |
label$25 : { | |
if ($17_1 >>> 0 < $10_1 >>> 0) { | |
break label$25 | |
} | |
$17_1 = HEAP32[$17_1 >> 2] | 0 ? $17_1 : $17_1 + 4 | 0; | |
break label$24; | |
} | |
$20_1 = 1e9 >>> $9_1 | 0; | |
$21_1 = (-1 << $9_1 | 0) ^ -1 | 0; | |
$3_1 = 0; | |
$16_1 = $17_1; | |
label$26 : while (1) { | |
$22_1 = HEAP32[$16_1 >> 2] | 0; | |
HEAP32[$16_1 >> 2] = ($22_1 >>> $9_1 | 0) + $3_1 | 0; | |
$3_1 = Math_imul($22_1 & $21_1 | 0, $20_1); | |
$16_1 = $16_1 + 4 | 0; | |
if ($16_1 >>> 0 < $10_1 >>> 0) { | |
continue label$26 | |
} | |
break label$26; | |
}; | |
$17_1 = HEAP32[$17_1 >> 2] | 0 ? $17_1 : $17_1 + 4 | 0; | |
if (!$3_1) { | |
break label$24 | |
} | |
HEAP32[$10_1 >> 2] = $3_1; | |
$10_1 = $10_1 + 4 | 0; | |
} | |
$3_1 = (HEAP32[($6_1 + 44 | 0) >> 2] | 0) + $9_1 | 0; | |
HEAP32[($6_1 + 44 | 0) >> 2] = $3_1; | |
$16_1 = $19_1 ? $15_1 : $17_1; | |
$10_1 = (($10_1 - $16_1 | 0) >> 2 | 0 | 0) > ($18_1 | 0) ? $16_1 + ($18_1 << 2 | 0) | 0 : $10_1; | |
if (($3_1 | 0) < (0 | 0)) { | |
continue label$23 | |
} | |
break label$23; | |
}; | |
} | |
$16_1 = 0; | |
label$27 : { | |
if ($17_1 >>> 0 >= $10_1 >>> 0) { | |
break label$27 | |
} | |
$16_1 = Math_imul(($15_1 - $17_1 | 0) >> 2 | 0, 9); | |
$3_1 = 10; | |
$22_1 = HEAP32[$17_1 >> 2] | 0; | |
if ($22_1 >>> 0 < 10 >>> 0) { | |
break label$27 | |
} | |
label$28 : while (1) { | |
$16_1 = $16_1 + 1 | 0; | |
$3_1 = Math_imul($3_1, 10); | |
if ($22_1 >>> 0 >= $3_1 >>> 0) { | |
continue label$28 | |
} | |
break label$28; | |
}; | |
} | |
label$29 : { | |
$3_1 = ($13_1 - (($12_1 | 0) == (102 | 0) ? 0 : $16_1) | 0) - (($13_1 | 0) != (0 | 0) & ($12_1 | 0) == (103 | 0) | 0) | 0; | |
if (($3_1 | 0) >= (Math_imul(($10_1 - $15_1 | 0) >> 2 | 0, 9) + -9 | 0 | 0)) { | |
break label$29 | |
} | |
$22_1 = $3_1 + 9216 | 0; | |
$20_1 = ($22_1 | 0) / (9 | 0) | 0; | |
$9_1 = (($20_1 << 2 | 0) + (($14_1 | 0) < (0 | 0) ? $6_1 + 48 | 0 | 4 | 0 : $6_1 + 340 | 0) | 0) + -4096 | 0; | |
$3_1 = 10; | |
label$30 : { | |
$22_1 = $22_1 - Math_imul($20_1, 9) | 0; | |
if (($22_1 | 0) > (7 | 0)) { | |
break label$30 | |
} | |
label$31 : while (1) { | |
$3_1 = Math_imul($3_1, 10); | |
$22_1 = $22_1 + 1 | 0; | |
if (($22_1 | 0) != (8 | 0)) { | |
continue label$31 | |
} | |
break label$31; | |
}; | |
} | |
$20_1 = HEAP32[$9_1 >> 2] | 0; | |
$21_1 = ($20_1 >>> 0) / ($3_1 >>> 0) | 0; | |
$22_1 = $20_1 - Math_imul($21_1, $3_1) | 0; | |
label$32 : { | |
label$33 : { | |
$18_1 = $9_1 + 4 | 0; | |
if (($18_1 | 0) != ($10_1 | 0)) { | |
break label$33 | |
} | |
if (!$22_1) { | |
break label$32 | |
} | |
} | |
$19_1 = $3_1 >>> 1 | 0; | |
$27_1 = $22_1 >>> 0 < $19_1 >>> 0 ? .5 : ($18_1 | 0) == ($10_1 | 0) ? (($22_1 | 0) == ($19_1 | 0) ? 1.0 : 1.5) : 1.5; | |
$1_1 = $21_1 & 1 | 0 ? 9007199254740994.0 : 9007199254740992.0; | |
label$34 : { | |
if (!$7_1) { | |
break label$34 | |
} | |
if ((HEAPU8[$8_1 >> 0] | 0 | 0) != (45 | 0)) { | |
break label$34 | |
} | |
$27_1 = -$27_1; | |
$1_1 = -$1_1; | |
} | |
$22_1 = $20_1 - $22_1 | 0; | |
HEAP32[$9_1 >> 2] = $22_1; | |
if ($1_1 + $27_1 == $1_1) { | |
break label$32 | |
} | |
$16_1 = $22_1 + $3_1 | 0; | |
HEAP32[$9_1 >> 2] = $16_1; | |
label$35 : { | |
if ($16_1 >>> 0 < 1e9 >>> 0) { | |
break label$35 | |
} | |
label$36 : while (1) { | |
HEAP32[$9_1 >> 2] = 0; | |
label$37 : { | |
$9_1 = $9_1 + -4 | 0; | |
if ($9_1 >>> 0 >= $17_1 >>> 0) { | |
break label$37 | |
} | |
$17_1 = $17_1 + -4 | 0; | |
HEAP32[$17_1 >> 2] = 0; | |
} | |
$16_1 = (HEAP32[$9_1 >> 2] | 0) + 1 | 0; | |
HEAP32[$9_1 >> 2] = $16_1; | |
if ($16_1 >>> 0 > 999999999 >>> 0) { | |
continue label$36 | |
} | |
break label$36; | |
}; | |
} | |
$16_1 = Math_imul(($15_1 - $17_1 | 0) >> 2 | 0, 9); | |
$3_1 = 10; | |
$22_1 = HEAP32[$17_1 >> 2] | 0; | |
if ($22_1 >>> 0 < 10 >>> 0) { | |
break label$32 | |
} | |
label$38 : while (1) { | |
$16_1 = $16_1 + 1 | 0; | |
$3_1 = Math_imul($3_1, 10); | |
if ($22_1 >>> 0 >= $3_1 >>> 0) { | |
continue label$38 | |
} | |
break label$38; | |
}; | |
} | |
$3_1 = $9_1 + 4 | 0; | |
$10_1 = $10_1 >>> 0 > $3_1 >>> 0 ? $3_1 : $10_1; | |
} | |
label$39 : { | |
label$40 : while (1) { | |
label$41 : { | |
$3_1 = $10_1; | |
if ($10_1 >>> 0 > $17_1 >>> 0) { | |
break label$41 | |
} | |
$19_1 = 0; | |
break label$39; | |
} | |
$10_1 = $3_1 + -4 | 0; | |
if (!(HEAP32[$10_1 >> 2] | 0)) { | |
continue label$40 | |
} | |
break label$40; | |
}; | |
$19_1 = 1; | |
} | |
label$42 : { | |
label$43 : { | |
if (($12_1 | 0) == (103 | 0)) { | |
break label$43 | |
} | |
$21_1 = $4_1 & 8 | 0; | |
break label$42; | |
} | |
$10_1 = $13_1 ? $13_1 : 1; | |
$22_1 = ($10_1 | 0) > ($16_1 | 0) & ($16_1 | 0) > (-5 | 0) | 0; | |
$13_1 = ($22_1 ? $16_1 ^ -1 | 0 : -1) + $10_1 | 0; | |
$5_1 = ($22_1 ? -1 : -2) + $5_1 | 0; | |
$21_1 = $4_1 & 8 | 0; | |
if ($21_1) { | |
break label$42 | |
} | |
$10_1 = 9; | |
label$44 : { | |
if (!$19_1) { | |
break label$44 | |
} | |
$10_1 = 9; | |
$9_1 = HEAP32[($3_1 + -4 | 0) >> 2] | 0; | |
if (!$9_1) { | |
break label$44 | |
} | |
$22_1 = 10; | |
$10_1 = 0; | |
if (($9_1 >>> 0) % (10 >>> 0) | 0) { | |
break label$44 | |
} | |
label$45 : while (1) { | |
$10_1 = $10_1 + 1 | 0; | |
$22_1 = Math_imul($22_1, 10); | |
if (!(($9_1 >>> 0) % ($22_1 >>> 0) | 0)) { | |
continue label$45 | |
} | |
break label$45; | |
}; | |
} | |
$22_1 = Math_imul(($3_1 - $15_1 | 0) >> 2 | 0, 9) + -9 | 0; | |
label$46 : { | |
if (($5_1 & -33 | 0 | 0) != (70 | 0)) { | |
break label$46 | |
} | |
$21_1 = 0; | |
$10_1 = $22_1 - $10_1 | 0; | |
$10_1 = ($10_1 | 0) > (0 | 0) ? $10_1 : 0; | |
$13_1 = ($13_1 | 0) < ($10_1 | 0) ? $13_1 : $10_1; | |
break label$42; | |
} | |
$21_1 = 0; | |
$10_1 = ($22_1 + $16_1 | 0) - $10_1 | 0; | |
$10_1 = ($10_1 | 0) > (0 | 0) ? $10_1 : 0; | |
$13_1 = ($13_1 | 0) < ($10_1 | 0) ? $13_1 : $10_1; | |
} | |
$12_1 = $13_1 | $21_1 | 0; | |
$22_1 = ($12_1 | 0) != (0 | 0); | |
label$47 : { | |
label$48 : { | |
$20_1 = $5_1 & -33 | 0; | |
if (($20_1 | 0) != (70 | 0)) { | |
break label$48 | |
} | |
$10_1 = ($16_1 | 0) > (0 | 0) ? $16_1 : 0; | |
break label$47; | |
} | |
label$49 : { | |
$10_1 = $16_1 >> 31 | 0; | |
i64toi32_i32$4 = 0; | |
$10_1 = $45(($16_1 + $10_1 | 0) ^ $10_1 | 0 | 0, i64toi32_i32$4 | 0, $11_1 | 0) | 0; | |
if (($11_1 - $10_1 | 0 | 0) > (1 | 0)) { | |
break label$49 | |
} | |
label$50 : while (1) { | |
$10_1 = $10_1 + -1 | 0; | |
HEAP8[$10_1 >> 0] = 48; | |
if (($11_1 - $10_1 | 0 | 0) < (2 | 0)) { | |
continue label$50 | |
} | |
break label$50; | |
}; | |
} | |
$18_1 = $10_1 + -2 | 0; | |
HEAP8[$18_1 >> 0] = $5_1; | |
HEAP8[($10_1 + -1 | 0) >> 0] = ($16_1 | 0) < (0 | 0) ? 45 : 43; | |
$10_1 = $11_1 - $18_1 | 0; | |
} | |
$9_1 = ((($7_1 + $13_1 | 0) + $22_1 | 0) + $10_1 | 0) + 1 | 0; | |
$46($0_1 | 0, 32 | 0, $2_1 | 0, $9_1 | 0, $4_1 | 0); | |
$40($0_1 | 0, $8_1 | 0, $7_1 | 0); | |
$46($0_1 | 0, 48 | 0, $2_1 | 0, $9_1 | 0, $4_1 ^ 65536 | 0 | 0); | |
label$51 : { | |
label$52 : { | |
label$53 : { | |
label$54 : { | |
if (($20_1 | 0) != (70 | 0)) { | |
break label$54 | |
} | |
$20_1 = $6_1 + 16 | 0 | 8 | 0; | |
$16_1 = $6_1 + 16 | 0 | 9 | 0; | |
$22_1 = $17_1 >>> 0 > $15_1 >>> 0 ? $15_1 : $17_1; | |
$17_1 = $22_1; | |
label$55 : while (1) { | |
i64toi32_i32$5 = $17_1; | |
i64toi32_i32$4 = HEAP32[$17_1 >> 2] | 0; | |
i64toi32_i32$0 = 0; | |
$10_1 = $45(i64toi32_i32$4 | 0, i64toi32_i32$0 | 0, $16_1 | 0) | 0; | |
label$56 : { | |
label$57 : { | |
if (($17_1 | 0) == ($22_1 | 0)) { | |
break label$57 | |
} | |
if ($10_1 >>> 0 <= ($6_1 + 16 | 0) >>> 0) { | |
break label$56 | |
} | |
label$58 : while (1) { | |
$10_1 = $10_1 + -1 | 0; | |
HEAP8[$10_1 >> 0] = 48; | |
if ($10_1 >>> 0 > ($6_1 + 16 | 0) >>> 0) { | |
continue label$58 | |
} | |
break label$56; | |
}; | |
} | |
if (($10_1 | 0) != ($16_1 | 0)) { | |
break label$56 | |
} | |
HEAP8[($6_1 + 24 | 0) >> 0] = 48; | |
$10_1 = $20_1; | |
} | |
$40($0_1 | 0, $10_1 | 0, $16_1 - $10_1 | 0 | 0); | |
$17_1 = $17_1 + 4 | 0; | |
if ($17_1 >>> 0 <= $15_1 >>> 0) { | |
continue label$55 | |
} | |
break label$55; | |
}; | |
label$59 : { | |
if (!$12_1) { | |
break label$59 | |
} | |
$40($0_1 | 0, 4451 | 0, 1 | 0); | |
} | |
if ($17_1 >>> 0 >= $3_1 >>> 0) { | |
break label$53 | |
} | |
if (($13_1 | 0) < (1 | 0)) { | |
break label$53 | |
} | |
label$60 : while (1) { | |
label$61 : { | |
i64toi32_i32$5 = $17_1; | |
i64toi32_i32$0 = HEAP32[$17_1 >> 2] | 0; | |
i64toi32_i32$4 = 0; | |
$10_1 = $45(i64toi32_i32$0 | 0, i64toi32_i32$4 | 0, $16_1 | 0) | 0; | |
if ($10_1 >>> 0 <= ($6_1 + 16 | 0) >>> 0) { | |
break label$61 | |
} | |
label$62 : while (1) { | |
$10_1 = $10_1 + -1 | 0; | |
HEAP8[$10_1 >> 0] = 48; | |
if ($10_1 >>> 0 > ($6_1 + 16 | 0) >>> 0) { | |
continue label$62 | |
} | |
break label$62; | |
}; | |
} | |
$40($0_1 | 0, $10_1 | 0, (($13_1 | 0) < (9 | 0) ? $13_1 : 9) | 0); | |
$10_1 = $13_1 + -9 | 0; | |
$17_1 = $17_1 + 4 | 0; | |
if ($17_1 >>> 0 >= $3_1 >>> 0) { | |
break label$52 | |
} | |
$22_1 = ($13_1 | 0) > (9 | 0); | |
$13_1 = $10_1; | |
if ($22_1) { | |
continue label$60 | |
} | |
break label$52; | |
}; | |
} | |
label$63 : { | |
if (($13_1 | 0) < (0 | 0)) { | |
break label$63 | |
} | |
$20_1 = $19_1 ? $3_1 : $17_1 + 4 | 0; | |
$15_1 = $6_1 + 16 | 0 | 8 | 0; | |
$3_1 = $6_1 + 16 | 0 | 9 | 0; | |
$16_1 = $17_1; | |
label$64 : while (1) { | |
label$65 : { | |
i64toi32_i32$5 = $16_1; | |
i64toi32_i32$4 = HEAP32[$16_1 >> 2] | 0; | |
i64toi32_i32$0 = 0; | |
$10_1 = $45(i64toi32_i32$4 | 0, i64toi32_i32$0 | 0, $3_1 | 0) | 0; | |
if (($10_1 | 0) != ($3_1 | 0)) { | |
break label$65 | |
} | |
HEAP8[($6_1 + 24 | 0) >> 0] = 48; | |
$10_1 = $15_1; | |
} | |
label$66 : { | |
label$67 : { | |
if (($16_1 | 0) == ($17_1 | 0)) { | |
break label$67 | |
} | |
if ($10_1 >>> 0 <= ($6_1 + 16 | 0) >>> 0) { | |
break label$66 | |
} | |
label$68 : while (1) { | |
$10_1 = $10_1 + -1 | 0; | |
HEAP8[$10_1 >> 0] = 48; | |
if ($10_1 >>> 0 > ($6_1 + 16 | 0) >>> 0) { | |
continue label$68 | |
} | |
break label$66; | |
}; | |
} | |
$40($0_1 | 0, $10_1 | 0, 1 | 0); | |
$10_1 = $10_1 + 1 | 0; | |
label$69 : { | |
if ($21_1) { | |
break label$69 | |
} | |
if (($13_1 | 0) < (1 | 0)) { | |
break label$66 | |
} | |
} | |
$40($0_1 | 0, 4451 | 0, 1 | 0); | |
} | |
$22_1 = $3_1 - $10_1 | 0; | |
$40($0_1 | 0, $10_1 | 0, (($13_1 | 0) > ($22_1 | 0) ? $22_1 : $13_1) | 0); | |
$13_1 = $13_1 - $22_1 | 0; | |
$16_1 = $16_1 + 4 | 0; | |
if ($16_1 >>> 0 >= $20_1 >>> 0) { | |
break label$63 | |
} | |
if (($13_1 | 0) > (-1 | 0)) { | |
continue label$64 | |
} | |
break label$64; | |
}; | |
} | |
$46($0_1 | 0, 48 | 0, $13_1 + 18 | 0 | 0, 18 | 0, 0 | 0); | |
$40($0_1 | 0, $18_1 | 0, $11_1 - $18_1 | 0 | 0); | |
break label$51; | |
} | |
$10_1 = $13_1; | |
} | |
$46($0_1 | 0, 48 | 0, $10_1 + 9 | 0 | 0, 9 | 0, 0 | 0); | |
} | |
$46($0_1 | 0, 32 | 0, $2_1 | 0, $9_1 | 0, $4_1 ^ 8192 | 0 | 0); | |
break label$6; | |
} | |
$16_1 = $5_1 & 32 | 0; | |
$13_1 = $16_1 ? $8_1 + 9 | 0 : $8_1; | |
label$70 : { | |
if ($3_1 >>> 0 > 11 >>> 0) { | |
break label$70 | |
} | |
$10_1 = 12 - $3_1 | 0; | |
if (!$10_1) { | |
break label$70 | |
} | |
$27_1 = 8.0; | |
label$71 : while (1) { | |
$27_1 = $27_1 * 16.0; | |
$10_1 = $10_1 + -1 | 0; | |
if ($10_1) { | |
continue label$71 | |
} | |
break label$71; | |
}; | |
label$72 : { | |
if ((HEAPU8[$13_1 >> 0] | 0 | 0) != (45 | 0)) { | |
break label$72 | |
} | |
$1_1 = -($27_1 + (-$1_1 - $27_1)); | |
break label$70; | |
} | |
$1_1 = $1_1 + $27_1 - $27_1; | |
} | |
label$73 : { | |
$10_1 = HEAP32[($6_1 + 44 | 0) >> 2] | 0; | |
$821 = $10_1; | |
$10_1 = $10_1 >> 31 | 0; | |
i64toi32_i32$0 = 0; | |
$10_1 = $45(($821 + $10_1 | 0) ^ $10_1 | 0 | 0, i64toi32_i32$0 | 0, $11_1 | 0) | 0; | |
if (($10_1 | 0) != ($11_1 | 0)) { | |
break label$73 | |
} | |
HEAP8[($6_1 + 15 | 0) >> 0] = 48; | |
$10_1 = $6_1 + 15 | 0; | |
} | |
$21_1 = $7_1 | 2 | 0; | |
$17_1 = HEAP32[($6_1 + 44 | 0) >> 2] | 0; | |
$20_1 = $10_1 + -2 | 0; | |
HEAP8[$20_1 >> 0] = $5_1 + 15 | 0; | |
HEAP8[($10_1 + -1 | 0) >> 0] = ($17_1 | 0) < (0 | 0) ? 45 : 43; | |
$22_1 = $4_1 & 8 | 0; | |
$17_1 = $6_1 + 16 | 0; | |
label$74 : while (1) { | |
$10_1 = $17_1; | |
label$75 : { | |
label$76 : { | |
if (!(Math_abs($1_1) < 2147483648.0)) { | |
break label$76 | |
} | |
$17_1 = ~~$1_1; | |
break label$75; | |
} | |
$17_1 = -2147483648; | |
} | |
HEAP8[$10_1 >> 0] = HEAPU8[($17_1 + 4400 | 0) >> 0] | 0 | $16_1 | 0; | |
$1_1 = ($1_1 - +($17_1 | 0)) * 16.0; | |
label$77 : { | |
$17_1 = $10_1 + 1 | 0; | |
if (($17_1 - ($6_1 + 16 | 0) | 0 | 0) != (1 | 0)) { | |
break label$77 | |
} | |
label$78 : { | |
if ($22_1) { | |
break label$78 | |
} | |
if (($3_1 | 0) > (0 | 0)) { | |
break label$78 | |
} | |
if ($1_1 == 0.0) { | |
break label$77 | |
} | |
} | |
HEAP8[($10_1 + 1 | 0) >> 0] = 46; | |
$17_1 = $10_1 + 2 | 0; | |
} | |
if ($1_1 != 0.0) { | |
continue label$74 | |
} | |
break label$74; | |
}; | |
label$79 : { | |
label$80 : { | |
if (!$3_1) { | |
break label$80 | |
} | |
if ((($17_1 - ($6_1 + 16 | 0) | 0) + -2 | 0 | 0) >= ($3_1 | 0)) { | |
break label$80 | |
} | |
$10_1 = (($3_1 + $11_1 | 0) - $20_1 | 0) + 2 | 0; | |
break label$79; | |
} | |
$10_1 = (($11_1 - ($6_1 + 16 | 0) | 0) - $20_1 | 0) + $17_1 | 0; | |
} | |
$9_1 = $10_1 + $21_1 | 0; | |
$46($0_1 | 0, 32 | 0, $2_1 | 0, $9_1 | 0, $4_1 | 0); | |
$40($0_1 | 0, $13_1 | 0, $21_1 | 0); | |
$46($0_1 | 0, 48 | 0, $2_1 | 0, $9_1 | 0, $4_1 ^ 65536 | 0 | 0); | |
$17_1 = $17_1 - ($6_1 + 16 | 0) | 0; | |
$40($0_1 | 0, $6_1 + 16 | 0 | 0, $17_1 | 0); | |
$16_1 = $11_1 - $20_1 | 0; | |
$46($0_1 | 0, 48 | 0, $10_1 - ($17_1 + $16_1 | 0) | 0 | 0, 0 | 0, 0 | 0); | |
$40($0_1 | 0, $20_1 | 0, $16_1 | 0); | |
$46($0_1 | 0, 32 | 0, $2_1 | 0, $9_1 | 0, $4_1 ^ 8192 | 0 | 0); | |
} | |
label$81 : { | |
$24_1 = $6_1 + 560 | 0; | |
if ($24_1 >>> 0 < global$2 >>> 0) { | |
fimport$3() | |
} | |
global$0 = $24_1; | |
} | |
return (($9_1 | 0) < ($2_1 | 0) ? $2_1 : $9_1) | 0; | |
} | |
function $49($0_1, $1_1) { | |
$0_1 = $0_1 | 0; | |
$1_1 = $1_1 | 0; | |
var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$2 = 0, $2_1 = 0, $12_1 = 0, $12$hi = 0, $14_1 = 0, $14$hi = 0; | |
$2_1 = ((HEAP32[$1_1 >> 2] | 0) + 15 | 0) & -16 | 0; | |
HEAP32[$1_1 >> 2] = $2_1 + 16 | 0; | |
i64toi32_i32$2 = $2_1; | |
i64toi32_i32$0 = HEAP32[i64toi32_i32$2 >> 2] | 0; | |
i64toi32_i32$1 = HEAP32[(i64toi32_i32$2 + 4 | 0) >> 2] | 0; | |
$12_1 = i64toi32_i32$0; | |
$12$hi = i64toi32_i32$1; | |
i64toi32_i32$1 = HEAP32[(i64toi32_i32$2 + 8 | 0) >> 2] | 0; | |
i64toi32_i32$0 = HEAP32[(i64toi32_i32$2 + 12 | 0) >> 2] | 0; | |
$14_1 = i64toi32_i32$1; | |
$14$hi = i64toi32_i32$0; | |
i64toi32_i32$0 = $12$hi; | |
i64toi32_i32$1 = $14$hi; | |
HEAPF64[$0_1 >> 3] = +$35($12_1 | 0, i64toi32_i32$0 | 0, $14_1 | 0, i64toi32_i32$1 | 0); | |
} | |
function $50($0_1) { | |
$0_1 = +$0_1; | |
var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0; | |
wasm2js_scratch_store_f64(+$0_1); | |
i64toi32_i32$0 = wasm2js_scratch_load_i32(1 | 0) | 0; | |
i64toi32_i32$1 = wasm2js_scratch_load_i32(0 | 0) | 0; | |
i64toi32_i32$HIGH_BITS = i64toi32_i32$0; | |
return i64toi32_i32$1 | 0; | |
} | |
function $51($0_1, $1_1) { | |
$0_1 = $0_1 | 0; | |
$1_1 = $1_1 | 0; | |
var $2_1 = 0, $4_1 = 0, $3_1 = 0; | |
label$1 : { | |
$2_1 = global$0 - 16 | 0; | |
$3_1 = $2_1; | |
if ($2_1 >>> 0 < global$2 >>> 0) { | |
fimport$3() | |
} | |
global$0 = $3_1; | |
} | |
HEAP32[($2_1 + 12 | 0) >> 2] = $1_1; | |
$1_1 = $47(HEAP32[(0 + 1048 | 0) >> 2] | 0 | 0, $0_1 | 0, $1_1 | 0) | 0; | |
label$3 : { | |
$4_1 = $2_1 + 16 | 0; | |
if ($4_1 >>> 0 < global$2 >>> 0) { | |
fimport$3() | |
} | |
global$0 = $4_1; | |
} | |
return $1_1 | 0; | |
} | |
function $52($0_1) { | |
$0_1 = $0_1 | 0; | |
return 1 | 0; | |
} | |
function $53($0_1) { | |
$0_1 = $0_1 | 0; | |
} | |
function $54($0_1) { | |
$0_1 = $0_1 | 0; | |
var $2_1 = 0, $1_1 = 0, $3_1 = 0; | |
$1_1 = $0() | 0; | |
$2_1 = HEAP32[$1_1 >> 2] | 0; | |
$3_1 = ($0_1 + 3 | 0) & -4 | 0; | |
$0_1 = $2_1 + $3_1 | 0; | |
label$1 : { | |
label$2 : { | |
if (($3_1 | 0) < (1 | 0)) { | |
break label$2 | |
} | |
if ($0_1 >>> 0 <= $2_1 >>> 0) { | |
break label$1 | |
} | |
} | |
label$3 : { | |
if ($0_1 >>> 0 <= (__wasm_memory_size() << 16 | 0) >>> 0) { | |
break label$3 | |
} | |
if (!(fimport$2($0_1 | 0) | 0)) { | |
break label$1 | |
} | |
} | |
HEAP32[$1_1 >> 2] = $0_1; | |
return $2_1 | 0; | |
} | |
HEAP32[($9() | 0) >> 2] = 48; | |
return -1 | 0; | |
} | |
function $55($0_1) { | |
$0_1 = $0_1 | 0; | |
var $4_1 = 0, $5_1 = 0, $6_1 = 0, $8_1 = 0, $3_1 = 0, $2_1 = 0, $11_1 = 0, $7_1 = 0, i64toi32_i32$0 = 0, $9_1 = 0, i64toi32_i32$1 = 0, i64toi32_i32$2 = 0, $1_1 = 0, $10_1 = 0, $13_1 = 0, $12_1 = 0, $88 = 0, $101 = 0, $112 = 0, $120 = 0, $128 = 0, $222 = 0, $233 = 0, $241 = 0, $249 = 0, $284 = 0, $362 = 0, $369 = 0, $462 = 0, $473 = 0, $481 = 0, $489 = 0, $1200 = 0, $1207 = 0, $1329 = 0, $1331 = 0, $1401 = 0, $1408 = 0, $1652 = 0, $1659 = 0; | |
label$1 : { | |
$1_1 = global$0 - 16 | 0; | |
$12_1 = $1_1; | |
if ($1_1 >>> 0 < global$2 >>> 0) { | |
fimport$3() | |
} | |
global$0 = $12_1; | |
} | |
label$3 : { | |
label$4 : { | |
label$5 : { | |
label$6 : { | |
label$7 : { | |
label$8 : { | |
label$9 : { | |
label$10 : { | |
label$11 : { | |
label$12 : { | |
label$13 : { | |
label$14 : { | |
if ($0_1 >>> 0 > 244 >>> 0) { | |
break label$14 | |
} | |
label$15 : { | |
$2_1 = HEAP32[(0 + 5960 | 0) >> 2] | 0; | |
$3_1 = $0_1 >>> 0 < 11 >>> 0 ? 16 : ($0_1 + 11 | 0) & -8 | 0; | |
$4_1 = $3_1 >>> 3 | 0; | |
$0_1 = $2_1 >>> $4_1 | 0; | |
if (!($0_1 & 3 | 0)) { | |
break label$15 | |
} | |
$3_1 = (($0_1 ^ -1 | 0) & 1 | 0) + $4_1 | 0; | |
$5_1 = $3_1 << 3 | 0; | |
$4_1 = HEAP32[($5_1 + 6008 | 0) >> 2] | 0; | |
$0_1 = $4_1 + 8 | 0; | |
label$16 : { | |
label$17 : { | |
$6_1 = HEAP32[($4_1 + 8 | 0) >> 2] | 0; | |
$5_1 = $5_1 + 6e3 | 0; | |
if (($6_1 | 0) != ($5_1 | 0)) { | |
break label$17 | |
} | |
HEAP32[(0 + 5960 | 0) >> 2] = $2_1 & (__wasm_rotl_i32(-2 | 0, $3_1 | 0) | 0) | 0; | |
break label$16; | |
} | |
HEAP32[(0 + 5976 | 0) >> 2] | 0; | |
HEAP32[($6_1 + 12 | 0) >> 2] = $5_1; | |
HEAP32[($5_1 + 8 | 0) >> 2] = $6_1; | |
} | |
$6_1 = $3_1 << 3 | 0; | |
HEAP32[($4_1 + 4 | 0) >> 2] = $6_1 | 3 | 0; | |
$4_1 = $4_1 + $6_1 | 0; | |
HEAP32[($4_1 + 4 | 0) >> 2] = HEAP32[($4_1 + 4 | 0) >> 2] | 0 | 1 | 0; | |
break label$3; | |
} | |
$7_1 = HEAP32[(0 + 5968 | 0) >> 2] | 0; | |
if ($3_1 >>> 0 <= $7_1 >>> 0) { | |
break label$13 | |
} | |
label$18 : { | |
if (!$0_1) { | |
break label$18 | |
} | |
label$19 : { | |
label$20 : { | |
$88 = $0_1 << $4_1 | 0; | |
$0_1 = 2 << $4_1 | 0; | |
$0_1 = $88 & ($0_1 | (0 - $0_1 | 0) | 0) | 0; | |
$0_1 = ($0_1 & (0 - $0_1 | 0) | 0) + -1 | 0; | |
$101 = $0_1; | |
$0_1 = ($0_1 >>> 12 | 0) & 16 | 0; | |
$4_1 = $101 >>> $0_1 | 0; | |
$6_1 = ($4_1 >>> 5 | 0) & 8 | 0; | |
$112 = $6_1 | $0_1 | 0; | |
$0_1 = $4_1 >>> $6_1 | 0; | |
$4_1 = ($0_1 >>> 2 | 0) & 4 | 0; | |
$120 = $112 | $4_1 | 0; | |
$0_1 = $0_1 >>> $4_1 | 0; | |
$4_1 = ($0_1 >>> 1 | 0) & 2 | 0; | |
$128 = $120 | $4_1 | 0; | |
$0_1 = $0_1 >>> $4_1 | 0; | |
$4_1 = ($0_1 >>> 1 | 0) & 1 | 0; | |
$6_1 = ($128 | $4_1 | 0) + ($0_1 >>> $4_1 | 0) | 0; | |
$5_1 = $6_1 << 3 | 0; | |
$4_1 = HEAP32[($5_1 + 6008 | 0) >> 2] | 0; | |
$0_1 = HEAP32[($4_1 + 8 | 0) >> 2] | 0; | |
$5_1 = $5_1 + 6e3 | 0; | |
if (($0_1 | 0) != ($5_1 | 0)) { | |
break label$20 | |
} | |
$2_1 = $2_1 & (__wasm_rotl_i32(-2 | 0, $6_1 | 0) | 0) | 0; | |
HEAP32[(0 + 5960 | 0) >> 2] = $2_1; | |
break label$19; | |
} | |
HEAP32[(0 + 5976 | 0) >> 2] | 0; | |
HEAP32[($0_1 + 12 | 0) >> 2] = $5_1; | |
HEAP32[($5_1 + 8 | 0) >> 2] = $0_1; | |
} | |
$0_1 = $4_1 + 8 | 0; | |
HEAP32[($4_1 + 4 | 0) >> 2] = $3_1 | 3 | 0; | |
$5_1 = $4_1 + $3_1 | 0; | |
$8_1 = $6_1 << 3 | 0; | |
$6_1 = $8_1 - $3_1 | 0; | |
HEAP32[($5_1 + 4 | 0) >> 2] = $6_1 | 1 | 0; | |
HEAP32[($4_1 + $8_1 | 0) >> 2] = $6_1; | |
label$21 : { | |
if (!$7_1) { | |
break label$21 | |
} | |
$8_1 = $7_1 >>> 3 | 0; | |
$3_1 = ($8_1 << 3 | 0) + 6e3 | 0; | |
$4_1 = HEAP32[(0 + 5980 | 0) >> 2] | 0; | |
label$22 : { | |
label$23 : { | |
$8_1 = 1 << $8_1 | 0; | |
if ($2_1 & $8_1 | 0) { | |
break label$23 | |
} | |
HEAP32[(0 + 5960 | 0) >> 2] = $2_1 | $8_1 | 0; | |
$8_1 = $3_1; | |
break label$22; | |
} | |
$8_1 = HEAP32[($3_1 + 8 | 0) >> 2] | 0; | |
} | |
HEAP32[($3_1 + 8 | 0) >> 2] = $4_1; | |
HEAP32[($8_1 + 12 | 0) >> 2] = $4_1; | |
HEAP32[($4_1 + 12 | 0) >> 2] = $3_1; | |
HEAP32[($4_1 + 8 | 0) >> 2] = $8_1; | |
} | |
HEAP32[(0 + 5980 | 0) >> 2] = $5_1; | |
HEAP32[(0 + 5968 | 0) >> 2] = $6_1; | |
break label$3; | |
} | |
$9_1 = HEAP32[(0 + 5964 | 0) >> 2] | 0; | |
if (!$9_1) { | |
break label$13 | |
} | |
$0_1 = ($9_1 & (0 - $9_1 | 0) | 0) + -1 | 0; | |
$222 = $0_1; | |
$0_1 = ($0_1 >>> 12 | 0) & 16 | 0; | |
$4_1 = $222 >>> $0_1 | 0; | |
$6_1 = ($4_1 >>> 5 | 0) & 8 | 0; | |
$233 = $6_1 | $0_1 | 0; | |
$0_1 = $4_1 >>> $6_1 | 0; | |
$4_1 = ($0_1 >>> 2 | 0) & 4 | 0; | |
$241 = $233 | $4_1 | 0; | |
$0_1 = $0_1 >>> $4_1 | 0; | |
$4_1 = ($0_1 >>> 1 | 0) & 2 | 0; | |
$249 = $241 | $4_1 | 0; | |
$0_1 = $0_1 >>> $4_1 | 0; | |
$4_1 = ($0_1 >>> 1 | 0) & 1 | 0; | |
$5_1 = HEAP32[(((($249 | $4_1 | 0) + ($0_1 >>> $4_1 | 0) | 0) << 2 | 0) + 6264 | 0) >> 2] | 0; | |
$4_1 = ((HEAP32[($5_1 + 4 | 0) >> 2] | 0) & -8 | 0) - $3_1 | 0; | |
$6_1 = $5_1; | |
label$24 : { | |
label$25 : while (1) { | |
label$26 : { | |
$0_1 = HEAP32[($6_1 + 16 | 0) >> 2] | 0; | |
if ($0_1) { | |
break label$26 | |
} | |
$0_1 = HEAP32[($6_1 + 20 | 0) >> 2] | 0; | |
if (!$0_1) { | |
break label$24 | |
} | |
} | |
$6_1 = ((HEAP32[($0_1 + 4 | 0) >> 2] | 0) & -8 | 0) - $3_1 | 0; | |
$284 = $6_1; | |
$6_1 = $6_1 >>> 0 < $4_1 >>> 0; | |
$4_1 = $6_1 ? $284 : $4_1; | |
$5_1 = $6_1 ? $0_1 : $5_1; | |
$6_1 = $0_1; | |
continue label$25; | |
}; | |
} | |
$10_1 = HEAP32[($5_1 + 24 | 0) >> 2] | 0; | |
label$27 : { | |
$8_1 = HEAP32[($5_1 + 12 | 0) >> 2] | 0; | |
if (($8_1 | 0) == ($5_1 | 0)) { | |
break label$27 | |
} | |
label$28 : { | |
$0_1 = HEAP32[($5_1 + 8 | 0) >> 2] | 0; | |
if ((HEAP32[(0 + 5976 | 0) >> 2] | 0) >>> 0 > $0_1 >>> 0) { | |
break label$28 | |
} | |
HEAP32[($0_1 + 12 | 0) >> 2] | 0; | |
} | |
HEAP32[($0_1 + 12 | 0) >> 2] = $8_1; | |
HEAP32[($8_1 + 8 | 0) >> 2] = $0_1; | |
break label$4; | |
} | |
label$29 : { | |
$6_1 = $5_1 + 20 | 0; | |
$0_1 = HEAP32[$6_1 >> 2] | 0; | |
if ($0_1) { | |
break label$29 | |
} | |
$0_1 = HEAP32[($5_1 + 16 | 0) >> 2] | 0; | |
if (!$0_1) { | |
break label$12 | |
} | |
$6_1 = $5_1 + 16 | 0; | |
} | |
label$30 : while (1) { | |
$11_1 = $6_1; | |
$8_1 = $0_1; | |
$6_1 = $0_1 + 20 | 0; | |
$0_1 = HEAP32[$6_1 >> 2] | 0; | |
if ($0_1) { | |
continue label$30 | |
} | |
$6_1 = $8_1 + 16 | 0; | |
$0_1 = HEAP32[($8_1 + 16 | 0) >> 2] | 0; | |
if ($0_1) { | |
continue label$30 | |
} | |
break label$30; | |
}; | |
HEAP32[$11_1 >> 2] = 0; | |
break label$4; | |
} | |
$3_1 = -1; | |
if ($0_1 >>> 0 > -65 >>> 0) { | |
break label$13 | |
} | |
$0_1 = $0_1 + 11 | 0; | |
$3_1 = $0_1 & -8 | 0; | |
$7_1 = HEAP32[(0 + 5964 | 0) >> 2] | 0; | |
if (!$7_1) { | |
break label$13 | |
} | |
$11_1 = 0; | |
label$31 : { | |
$0_1 = $0_1 >>> 8 | 0; | |
if (!$0_1) { | |
break label$31 | |
} | |
$11_1 = 31; | |
if ($3_1 >>> 0 > 16777215 >>> 0) { | |
break label$31 | |
} | |
$4_1 = (($0_1 + 1048320 | 0) >>> 16 | 0) & 8 | 0; | |
$0_1 = $0_1 << $4_1 | 0; | |
$362 = $0_1; | |
$0_1 = (($0_1 + 520192 | 0) >>> 16 | 0) & 4 | 0; | |
$6_1 = $362 << $0_1 | 0; | |
$369 = $6_1; | |
$6_1 = (($6_1 + 245760 | 0) >>> 16 | 0) & 2 | 0; | |
$0_1 = (($369 << $6_1 | 0) >>> 15 | 0) - ($0_1 | $4_1 | 0 | $6_1 | 0) | 0; | |
$11_1 = ($0_1 << 1 | 0 | (($3_1 >>> ($0_1 + 21 | 0) | 0) & 1 | 0) | 0) + 28 | 0; | |
} | |
$6_1 = 0 - $3_1 | 0; | |
label$32 : { | |
label$33 : { | |
label$34 : { | |
label$35 : { | |
$4_1 = HEAP32[(($11_1 << 2 | 0) + 6264 | 0) >> 2] | 0; | |
if ($4_1) { | |
break label$35 | |
} | |
$0_1 = 0; | |
$8_1 = 0; | |
break label$34; | |
} | |
$5_1 = $3_1 << (($11_1 | 0) == (31 | 0) ? 0 : 25 - ($11_1 >>> 1 | 0) | 0) | 0; | |
$0_1 = 0; | |
$8_1 = 0; | |
label$36 : while (1) { | |
label$37 : { | |
$2_1 = ((HEAP32[($4_1 + 4 | 0) >> 2] | 0) & -8 | 0) - $3_1 | 0; | |
if ($2_1 >>> 0 >= $6_1 >>> 0) { | |
break label$37 | |
} | |
$6_1 = $2_1; | |
$8_1 = $4_1; | |
if ($6_1) { | |
break label$37 | |
} | |
$6_1 = 0; | |
$8_1 = $4_1; | |
$0_1 = $4_1; | |
break label$33; | |
} | |
$2_1 = HEAP32[($4_1 + 20 | 0) >> 2] | 0; | |
$4_1 = HEAP32[(($4_1 + (($5_1 >>> 29 | 0) & 4 | 0) | 0) + 16 | 0) >> 2] | 0; | |
$0_1 = $2_1 ? (($2_1 | 0) == ($4_1 | 0) ? $0_1 : $2_1) : $0_1; | |
$5_1 = $5_1 << (($4_1 | 0) != (0 | 0)) | 0; | |
if ($4_1) { | |
continue label$36 | |
} | |
break label$36; | |
}; | |
} | |
label$38 : { | |
if ($0_1 | $8_1 | 0) { | |
break label$38 | |
} | |
$0_1 = 2 << $11_1 | 0; | |
$0_1 = ($0_1 | (0 - $0_1 | 0) | 0) & $7_1 | 0; | |
if (!$0_1) { | |
break label$13 | |
} | |
$0_1 = ($0_1 & (0 - $0_1 | 0) | 0) + -1 | 0; | |
$462 = $0_1; | |
$0_1 = ($0_1 >>> 12 | 0) & 16 | 0; | |
$4_1 = $462 >>> $0_1 | 0; | |
$5_1 = ($4_1 >>> 5 | 0) & 8 | 0; | |
$473 = $5_1 | $0_1 | 0; | |
$0_1 = $4_1 >>> $5_1 | 0; | |
$4_1 = ($0_1 >>> 2 | 0) & 4 | 0; | |
$481 = $473 | $4_1 | 0; | |
$0_1 = $0_1 >>> $4_1 | 0; | |
$4_1 = ($0_1 >>> 1 | 0) & 2 | 0; | |
$489 = $481 | $4_1 | 0; | |
$0_1 = $0_1 >>> $4_1 | 0; | |
$4_1 = ($0_1 >>> 1 | 0) & 1 | 0; | |
$0_1 = HEAP32[(((($489 | $4_1 | 0) + ($0_1 >>> $4_1 | 0) | 0) << 2 | 0) + 6264 | 0) >> 2] | 0; | |
} | |
if (!$0_1) { | |
break label$32 | |
} | |
} | |
label$39 : while (1) { | |
$2_1 = ((HEAP32[($0_1 + 4 | 0) >> 2] | 0) & -8 | 0) - $3_1 | 0; | |
$5_1 = $2_1 >>> 0 < $6_1 >>> 0; | |
label$40 : { | |
$4_1 = HEAP32[($0_1 + 16 | 0) >> 2] | 0; | |
if ($4_1) { | |
break label$40 | |
} | |
$4_1 = HEAP32[($0_1 + 20 | 0) >> 2] | 0; | |
} | |
$6_1 = $5_1 ? $2_1 : $6_1; | |
$8_1 = $5_1 ? $0_1 : $8_1; | |
$0_1 = $4_1; | |
if ($0_1) { | |
continue label$39 | |
} | |
break label$39; | |
}; | |
} | |
if (!$8_1) { | |
break label$13 | |
} | |
if ($6_1 >>> 0 >= ((HEAP32[(0 + 5968 | 0) >> 2] | 0) - $3_1 | 0) >>> 0) { | |
break label$13 | |
} | |
$11_1 = HEAP32[($8_1 + 24 | 0) >> 2] | 0; | |
label$41 : { | |
$5_1 = HEAP32[($8_1 + 12 | 0) >> 2] | 0; | |
if (($5_1 | 0) == ($8_1 | 0)) { | |
break label$41 | |
} | |
label$42 : { | |
$0_1 = HEAP32[($8_1 + 8 | 0) >> 2] | 0; | |
if ((HEAP32[(0 + 5976 | 0) >> 2] | 0) >>> 0 > $0_1 >>> 0) { | |
break label$42 | |
} | |
HEAP32[($0_1 + 12 | 0) >> 2] | 0; | |
} | |
HEAP32[($0_1 + 12 | 0) >> 2] = $5_1; | |
HEAP32[($5_1 + 8 | 0) >> 2] = $0_1; | |
break label$5; | |
} | |
label$43 : { | |
$4_1 = $8_1 + 20 | 0; | |
$0_1 = HEAP32[$4_1 >> 2] | 0; | |
if ($0_1) { | |
break label$43 | |
} | |
$0_1 = HEAP32[($8_1 + 16 | 0) >> 2] | 0; | |
if (!$0_1) { | |
break label$11 | |
} | |
$4_1 = $8_1 + 16 | 0; | |
} | |
label$44 : while (1) { | |
$2_1 = $4_1; | |
$5_1 = $0_1; | |
$4_1 = $0_1 + 20 | 0; | |
$0_1 = HEAP32[$4_1 >> 2] | 0; | |
if ($0_1) { | |
continue label$44 | |
} | |
$4_1 = $5_1 + 16 | 0; | |
$0_1 = HEAP32[($5_1 + 16 | 0) >> 2] | 0; | |
if ($0_1) { | |
continue label$44 | |
} | |
break label$44; | |
}; | |
HEAP32[$2_1 >> 2] = 0; | |
break label$5; | |
} | |
label$45 : { | |
$0_1 = HEAP32[(0 + 5968 | 0) >> 2] | 0; | |
if ($0_1 >>> 0 < $3_1 >>> 0) { | |
break label$45 | |
} | |
$4_1 = HEAP32[(0 + 5980 | 0) >> 2] | 0; | |
label$46 : { | |
label$47 : { | |
$6_1 = $0_1 - $3_1 | 0; | |
if ($6_1 >>> 0 < 16 >>> 0) { | |
break label$47 | |
} | |
HEAP32[(0 + 5968 | 0) >> 2] = $6_1; | |
$5_1 = $4_1 + $3_1 | 0; | |
HEAP32[(0 + 5980 | 0) >> 2] = $5_1; | |
HEAP32[($5_1 + 4 | 0) >> 2] = $6_1 | 1 | 0; | |
HEAP32[($4_1 + $0_1 | 0) >> 2] = $6_1; | |
HEAP32[($4_1 + 4 | 0) >> 2] = $3_1 | 3 | 0; | |
break label$46; | |
} | |
HEAP32[(0 + 5980 | 0) >> 2] = 0; | |
HEAP32[(0 + 5968 | 0) >> 2] = 0; | |
HEAP32[($4_1 + 4 | 0) >> 2] = $0_1 | 3 | 0; | |
$0_1 = $4_1 + $0_1 | 0; | |
HEAP32[($0_1 + 4 | 0) >> 2] = HEAP32[($0_1 + 4 | 0) >> 2] | 0 | 1 | 0; | |
} | |
$0_1 = $4_1 + 8 | 0; | |
break label$3; | |
} | |
label$48 : { | |
$5_1 = HEAP32[(0 + 5972 | 0) >> 2] | 0; | |
if ($5_1 >>> 0 <= $3_1 >>> 0) { | |
break label$48 | |
} | |
$4_1 = $5_1 - $3_1 | 0; | |
HEAP32[(0 + 5972 | 0) >> 2] = $4_1; | |
$0_1 = HEAP32[(0 + 5984 | 0) >> 2] | 0; | |
$6_1 = $0_1 + $3_1 | 0; | |
HEAP32[(0 + 5984 | 0) >> 2] = $6_1; | |
HEAP32[($6_1 + 4 | 0) >> 2] = $4_1 | 1 | 0; | |
HEAP32[($0_1 + 4 | 0) >> 2] = $3_1 | 3 | 0; | |
$0_1 = $0_1 + 8 | 0; | |
break label$3; | |
} | |
label$49 : { | |
label$50 : { | |
if (!(HEAP32[(0 + 6432 | 0) >> 2] | 0)) { | |
break label$50 | |
} | |
$4_1 = HEAP32[(0 + 6440 | 0) >> 2] | 0; | |
break label$49; | |
} | |
i64toi32_i32$1 = 0; | |
i64toi32_i32$0 = -1; | |
HEAP32[(i64toi32_i32$1 + 6444 | 0) >> 2] = -1; | |
HEAP32[(i64toi32_i32$1 + 6448 | 0) >> 2] = i64toi32_i32$0; | |
i64toi32_i32$1 = 0; | |
i64toi32_i32$0 = 4096; | |
HEAP32[(i64toi32_i32$1 + 6436 | 0) >> 2] = 4096; | |
HEAP32[(i64toi32_i32$1 + 6440 | 0) >> 2] = i64toi32_i32$0; | |
HEAP32[(0 + 6432 | 0) >> 2] = (($1_1 + 12 | 0) & -16 | 0) ^ 1431655768 | 0; | |
HEAP32[(0 + 6452 | 0) >> 2] = 0; | |
HEAP32[(0 + 6404 | 0) >> 2] = 0; | |
$4_1 = 4096; | |
} | |
$0_1 = 0; | |
$7_1 = $3_1 + 47 | 0; | |
$2_1 = $4_1 + $7_1 | 0; | |
$11_1 = 0 - $4_1 | 0; | |
$8_1 = $2_1 & $11_1 | 0; | |
if ($8_1 >>> 0 <= $3_1 >>> 0) { | |
break label$3 | |
} | |
$0_1 = 0; | |
label$51 : { | |
$4_1 = HEAP32[(0 + 6400 | 0) >> 2] | 0; | |
if (!$4_1) { | |
break label$51 | |
} | |
$6_1 = HEAP32[(0 + 6392 | 0) >> 2] | 0; | |
$9_1 = $6_1 + $8_1 | 0; | |
if ($9_1 >>> 0 <= $6_1 >>> 0) { | |
break label$3 | |
} | |
if ($9_1 >>> 0 > $4_1 >>> 0) { | |
break label$3 | |
} | |
} | |
if ((HEAPU8[(0 + 6404 | 0) >> 0] | 0) & 4 | 0) { | |
break label$8 | |
} | |
label$52 : { | |
label$53 : { | |
label$54 : { | |
$4_1 = HEAP32[(0 + 5984 | 0) >> 2] | 0; | |
if (!$4_1) { | |
break label$54 | |
} | |
$0_1 = 6408; | |
label$55 : while (1) { | |
label$56 : { | |
$6_1 = HEAP32[$0_1 >> 2] | 0; | |
if ($6_1 >>> 0 > $4_1 >>> 0) { | |
break label$56 | |
} | |
if (($6_1 + (HEAP32[($0_1 + 4 | 0) >> 2] | 0) | 0) >>> 0 > $4_1 >>> 0) { | |
break label$53 | |
} | |
} | |
$0_1 = HEAP32[($0_1 + 8 | 0) >> 2] | 0; | |
if ($0_1) { | |
continue label$55 | |
} | |
break label$55; | |
}; | |
} | |
$5_1 = $54(0 | 0) | 0; | |
if (($5_1 | 0) == (-1 | 0)) { | |
break label$9 | |
} | |
$2_1 = $8_1; | |
label$57 : { | |
$0_1 = HEAP32[(0 + 6436 | 0) >> 2] | 0; | |
$4_1 = $0_1 + -1 | 0; | |
if (!($4_1 & $5_1 | 0)) { | |
break label$57 | |
} | |
$2_1 = ($8_1 - $5_1 | 0) + (($4_1 + $5_1 | 0) & (0 - $0_1 | 0) | 0) | 0; | |
} | |
if ($2_1 >>> 0 <= $3_1 >>> 0) { | |
break label$9 | |
} | |
if ($2_1 >>> 0 > 2147483646 >>> 0) { | |
break label$9 | |
} | |
label$58 : { | |
$0_1 = HEAP32[(0 + 6400 | 0) >> 2] | 0; | |
if (!$0_1) { | |
break label$58 | |
} | |
$4_1 = HEAP32[(0 + 6392 | 0) >> 2] | 0; | |
$6_1 = $4_1 + $2_1 | 0; | |
if ($6_1 >>> 0 <= $4_1 >>> 0) { | |
break label$9 | |
} | |
if ($6_1 >>> 0 > $0_1 >>> 0) { | |
break label$9 | |
} | |
} | |
$0_1 = $54($2_1 | 0) | 0; | |
if (($0_1 | 0) != ($5_1 | 0)) { | |
break label$52 | |
} | |
break label$7; | |
} | |
$2_1 = ($2_1 - $5_1 | 0) & $11_1 | 0; | |
if ($2_1 >>> 0 > 2147483646 >>> 0) { | |
break label$9 | |
} | |
$5_1 = $54($2_1 | 0) | 0; | |
if (($5_1 | 0) == ((HEAP32[$0_1 >> 2] | 0) + (HEAP32[($0_1 + 4 | 0) >> 2] | 0) | 0 | 0)) { | |
break label$10 | |
} | |
$0_1 = $5_1; | |
} | |
label$59 : { | |
if (($3_1 + 48 | 0) >>> 0 <= $2_1 >>> 0) { | |
break label$59 | |
} | |
if (($0_1 | 0) == (-1 | 0)) { | |
break label$59 | |
} | |
label$60 : { | |
$4_1 = HEAP32[(0 + 6440 | 0) >> 2] | 0; | |
$4_1 = (($7_1 - $2_1 | 0) + $4_1 | 0) & (0 - $4_1 | 0) | 0; | |
if ($4_1 >>> 0 <= 2147483646 >>> 0) { | |
break label$60 | |
} | |
$5_1 = $0_1; | |
break label$7; | |
} | |
label$61 : { | |
if (($54($4_1 | 0) | 0 | 0) == (-1 | 0)) { | |
break label$61 | |
} | |
$2_1 = $4_1 + $2_1 | 0; | |
$5_1 = $0_1; | |
break label$7; | |
} | |
$54(0 - $2_1 | 0 | 0) | 0; | |
break label$9; | |
} | |
$5_1 = $0_1; | |
if (($0_1 | 0) != (-1 | 0)) { | |
break label$7 | |
} | |
break label$9; | |
} | |
$8_1 = 0; | |
break label$4; | |
} | |
$5_1 = 0; | |
break label$5; | |
} | |
if (($5_1 | 0) != (-1 | 0)) { | |
break label$7 | |
} | |
} | |
HEAP32[(0 + 6404 | 0) >> 2] = HEAP32[(0 + 6404 | 0) >> 2] | 0 | 4 | 0; | |
} | |
if ($8_1 >>> 0 > 2147483646 >>> 0) { | |
break label$6 | |
} | |
$5_1 = $54($8_1 | 0) | 0; | |
$0_1 = $54(0 | 0) | 0; | |
if ($5_1 >>> 0 >= $0_1 >>> 0) { | |
break label$6 | |
} | |
if (($5_1 | 0) == (-1 | 0)) { | |
break label$6 | |
} | |
if (($0_1 | 0) == (-1 | 0)) { | |
break label$6 | |
} | |
$2_1 = $0_1 - $5_1 | 0; | |
if ($2_1 >>> 0 <= ($3_1 + 40 | 0) >>> 0) { | |
break label$6 | |
} | |
} | |
$0_1 = (HEAP32[(0 + 6392 | 0) >> 2] | 0) + $2_1 | 0; | |
HEAP32[(0 + 6392 | 0) >> 2] = $0_1; | |
label$62 : { | |
if ($0_1 >>> 0 <= (HEAP32[(0 + 6396 | 0) >> 2] | 0) >>> 0) { | |
break label$62 | |
} | |
HEAP32[(0 + 6396 | 0) >> 2] = $0_1; | |
} | |
label$63 : { | |
label$64 : { | |
label$65 : { | |
label$66 : { | |
$4_1 = HEAP32[(0 + 5984 | 0) >> 2] | 0; | |
if (!$4_1) { | |
break label$66 | |
} | |
$0_1 = 6408; | |
label$67 : while (1) { | |
$6_1 = HEAP32[$0_1 >> 2] | 0; | |
$8_1 = HEAP32[($0_1 + 4 | 0) >> 2] | 0; | |
if (($5_1 | 0) == ($6_1 + $8_1 | 0 | 0)) { | |
break label$65 | |
} | |
$0_1 = HEAP32[($0_1 + 8 | 0) >> 2] | 0; | |
if ($0_1) { | |
continue label$67 | |
} | |
break label$64; | |
}; | |
} | |
label$68 : { | |
label$69 : { | |
$0_1 = HEAP32[(0 + 5976 | 0) >> 2] | 0; | |
if (!$0_1) { | |
break label$69 | |
} | |
if ($5_1 >>> 0 >= $0_1 >>> 0) { | |
break label$68 | |
} | |
} | |
HEAP32[(0 + 5976 | 0) >> 2] = $5_1; | |
} | |
$0_1 = 0; | |
HEAP32[(0 + 6412 | 0) >> 2] = $2_1; | |
HEAP32[(0 + 6408 | 0) >> 2] = $5_1; | |
HEAP32[(0 + 5992 | 0) >> 2] = -1; | |
HEAP32[(0 + 5996 | 0) >> 2] = HEAP32[(0 + 6432 | 0) >> 2] | 0; | |
HEAP32[(0 + 6420 | 0) >> 2] = 0; | |
label$70 : while (1) { | |
$4_1 = $0_1 << 3 | 0; | |
$6_1 = $4_1 + 6e3 | 0; | |
HEAP32[($4_1 + 6008 | 0) >> 2] = $6_1; | |
HEAP32[($4_1 + 6012 | 0) >> 2] = $6_1; | |
$0_1 = $0_1 + 1 | 0; | |
if (($0_1 | 0) != (32 | 0)) { | |
continue label$70 | |
} | |
break label$70; | |
}; | |
$0_1 = $2_1 + -40 | 0; | |
$4_1 = ($5_1 + 8 | 0) & 7 | 0 ? (-8 - $5_1 | 0) & 7 | 0 : 0; | |
$6_1 = $0_1 - $4_1 | 0; | |
HEAP32[(0 + 5972 | 0) >> 2] = $6_1; | |
$4_1 = $5_1 + $4_1 | 0; | |
HEAP32[(0 + 5984 | 0) >> 2] = $4_1; | |
HEAP32[($4_1 + 4 | 0) >> 2] = $6_1 | 1 | 0; | |
HEAP32[(($5_1 + $0_1 | 0) + 4 | 0) >> 2] = 40; | |
HEAP32[(0 + 5988 | 0) >> 2] = HEAP32[(0 + 6448 | 0) >> 2] | 0; | |
break label$63; | |
} | |
if ((HEAPU8[($0_1 + 12 | 0) >> 0] | 0) & 8 | 0) { | |
break label$64 | |
} | |
if ($5_1 >>> 0 <= $4_1 >>> 0) { | |
break label$64 | |
} | |
if ($6_1 >>> 0 > $4_1 >>> 0) { | |
break label$64 | |
} | |
HEAP32[($0_1 + 4 | 0) >> 2] = $8_1 + $2_1 | 0; | |
$0_1 = ($4_1 + 8 | 0) & 7 | 0 ? (-8 - $4_1 | 0) & 7 | 0 : 0; | |
$6_1 = $4_1 + $0_1 | 0; | |
HEAP32[(0 + 5984 | 0) >> 2] = $6_1; | |
$5_1 = (HEAP32[(0 + 5972 | 0) >> 2] | 0) + $2_1 | 0; | |
$0_1 = $5_1 - $0_1 | 0; | |
HEAP32[(0 + 5972 | 0) >> 2] = $0_1; | |
HEAP32[($6_1 + 4 | 0) >> 2] = $0_1 | 1 | 0; | |
HEAP32[(($4_1 + $5_1 | 0) + 4 | 0) >> 2] = 40; | |
HEAP32[(0 + 5988 | 0) >> 2] = HEAP32[(0 + 6448 | 0) >> 2] | 0; | |
break label$63; | |
} | |
label$71 : { | |
$8_1 = HEAP32[(0 + 5976 | 0) >> 2] | 0; | |
if ($5_1 >>> 0 >= $8_1 >>> 0) { | |
break label$71 | |
} | |
HEAP32[(0 + 5976 | 0) >> 2] = $5_1; | |
$8_1 = $5_1; | |
} | |
$6_1 = $5_1 + $2_1 | 0; | |
$0_1 = 6408; | |
label$72 : { | |
label$73 : { | |
label$74 : { | |
label$75 : { | |
label$76 : { | |
label$77 : { | |
label$78 : { | |
label$79 : while (1) { | |
if ((HEAP32[$0_1 >> 2] | 0 | 0) == ($6_1 | 0)) { | |
break label$78 | |
} | |
$0_1 = HEAP32[($0_1 + 8 | 0) >> 2] | 0; | |
if ($0_1) { | |
continue label$79 | |
} | |
break label$77; | |
}; | |
} | |
if (!((HEAPU8[($0_1 + 12 | 0) >> 0] | 0) & 8 | 0)) { | |
break label$76 | |
} | |
} | |
$0_1 = 6408; | |
label$80 : while (1) { | |
label$81 : { | |
$6_1 = HEAP32[$0_1 >> 2] | 0; | |
if ($6_1 >>> 0 > $4_1 >>> 0) { | |
break label$81 | |
} | |
$6_1 = $6_1 + (HEAP32[($0_1 + 4 | 0) >> 2] | 0) | 0; | |
if ($6_1 >>> 0 > $4_1 >>> 0) { | |
break label$75 | |
} | |
} | |
$0_1 = HEAP32[($0_1 + 8 | 0) >> 2] | 0; | |
continue label$80; | |
}; | |
} | |
HEAP32[$0_1 >> 2] = $5_1; | |
HEAP32[($0_1 + 4 | 0) >> 2] = (HEAP32[($0_1 + 4 | 0) >> 2] | 0) + $2_1 | 0; | |
$11_1 = $5_1 + (($5_1 + 8 | 0) & 7 | 0 ? (-8 - $5_1 | 0) & 7 | 0 : 0) | 0; | |
HEAP32[($11_1 + 4 | 0) >> 2] = $3_1 | 3 | 0; | |
$5_1 = $6_1 + (($6_1 + 8 | 0) & 7 | 0 ? (-8 - $6_1 | 0) & 7 | 0 : 0) | 0; | |
$0_1 = ($5_1 - $11_1 | 0) - $3_1 | 0; | |
$6_1 = $11_1 + $3_1 | 0; | |
label$82 : { | |
if (($4_1 | 0) != ($5_1 | 0)) { | |
break label$82 | |
} | |
HEAP32[(0 + 5984 | 0) >> 2] = $6_1; | |
$0_1 = (HEAP32[(0 + 5972 | 0) >> 2] | 0) + $0_1 | 0; | |
HEAP32[(0 + 5972 | 0) >> 2] = $0_1; | |
HEAP32[($6_1 + 4 | 0) >> 2] = $0_1 | 1 | 0; | |
break label$73; | |
} | |
label$83 : { | |
if ((HEAP32[(0 + 5980 | 0) >> 2] | 0 | 0) != ($5_1 | 0)) { | |
break label$83 | |
} | |
HEAP32[(0 + 5980 | 0) >> 2] = $6_1; | |
$0_1 = (HEAP32[(0 + 5968 | 0) >> 2] | 0) + $0_1 | 0; | |
HEAP32[(0 + 5968 | 0) >> 2] = $0_1; | |
HEAP32[($6_1 + 4 | 0) >> 2] = $0_1 | 1 | 0; | |
HEAP32[($6_1 + $0_1 | 0) >> 2] = $0_1; | |
break label$73; | |
} | |
label$84 : { | |
$4_1 = HEAP32[($5_1 + 4 | 0) >> 2] | 0; | |
if (($4_1 & 3 | 0 | 0) != (1 | 0)) { | |
break label$84 | |
} | |
$7_1 = $4_1 & -8 | 0; | |
label$85 : { | |
label$86 : { | |
if ($4_1 >>> 0 > 255 >>> 0) { | |
break label$86 | |
} | |
$3_1 = HEAP32[($5_1 + 12 | 0) >> 2] | 0; | |
label$87 : { | |
$2_1 = HEAP32[($5_1 + 8 | 0) >> 2] | 0; | |
$9_1 = $4_1 >>> 3 | 0; | |
$4_1 = ($9_1 << 3 | 0) + 6e3 | 0; | |
if (($2_1 | 0) == ($4_1 | 0)) { | |
break label$87 | |
} | |
} | |
label$88 : { | |
if (($3_1 | 0) != ($2_1 | 0)) { | |
break label$88 | |
} | |
HEAP32[(0 + 5960 | 0) >> 2] = (HEAP32[(0 + 5960 | 0) >> 2] | 0) & (__wasm_rotl_i32(-2 | 0, $9_1 | 0) | 0) | 0; | |
break label$85; | |
} | |
label$89 : { | |
if (($3_1 | 0) == ($4_1 | 0)) { | |
break label$89 | |
} | |
} | |
HEAP32[($2_1 + 12 | 0) >> 2] = $3_1; | |
HEAP32[($3_1 + 8 | 0) >> 2] = $2_1; | |
break label$85; | |
} | |
$9_1 = HEAP32[($5_1 + 24 | 0) >> 2] | 0; | |
label$90 : { | |
label$91 : { | |
$2_1 = HEAP32[($5_1 + 12 | 0) >> 2] | 0; | |
if (($2_1 | 0) == ($5_1 | 0)) { | |
break label$91 | |
} | |
label$92 : { | |
$4_1 = HEAP32[($5_1 + 8 | 0) >> 2] | 0; | |
if ($8_1 >>> 0 > $4_1 >>> 0) { | |
break label$92 | |
} | |
HEAP32[($4_1 + 12 | 0) >> 2] | 0; | |
} | |
HEAP32[($4_1 + 12 | 0) >> 2] = $2_1; | |
HEAP32[($2_1 + 8 | 0) >> 2] = $4_1; | |
break label$90; | |
} | |
label$93 : { | |
$4_1 = $5_1 + 20 | 0; | |
$3_1 = HEAP32[$4_1 >> 2] | 0; | |
if ($3_1) { | |
break label$93 | |
} | |
$4_1 = $5_1 + 16 | 0; | |
$3_1 = HEAP32[$4_1 >> 2] | 0; | |
if ($3_1) { | |
break label$93 | |
} | |
$2_1 = 0; | |
break label$90; | |
} | |
label$94 : while (1) { | |
$8_1 = $4_1; | |
$2_1 = $3_1; | |
$4_1 = $3_1 + 20 | 0; | |
$3_1 = HEAP32[$4_1 >> 2] | 0; | |
if ($3_1) { | |
continue label$94 | |
} | |
$4_1 = $2_1 + 16 | 0; | |
$3_1 = HEAP32[($2_1 + 16 | 0) >> 2] | 0; | |
if ($3_1) { | |
continue label$94 | |
} | |
break label$94; | |
}; | |
HEAP32[$8_1 >> 2] = 0; | |
} | |
if (!$9_1) { | |
break label$85 | |
} | |
label$95 : { | |
label$96 : { | |
$3_1 = HEAP32[($5_1 + 28 | 0) >> 2] | 0; | |
$4_1 = ($3_1 << 2 | 0) + 6264 | 0; | |
if ((HEAP32[$4_1 >> 2] | 0 | 0) != ($5_1 | 0)) { | |
break label$96 | |
} | |
HEAP32[$4_1 >> 2] = $2_1; | |
if ($2_1) { | |
break label$95 | |
} | |
HEAP32[(0 + 5964 | 0) >> 2] = (HEAP32[(0 + 5964 | 0) >> 2] | 0) & (__wasm_rotl_i32(-2 | 0, $3_1 | 0) | 0) | 0; | |
break label$85; | |
} | |
HEAP32[($9_1 + ((HEAP32[($9_1 + 16 | 0) >> 2] | 0 | 0) == ($5_1 | 0) ? 16 : 20) | 0) >> 2] = $2_1; | |
if (!$2_1) { | |
break label$85 | |
} | |
} | |
HEAP32[($2_1 + 24 | 0) >> 2] = $9_1; | |
label$97 : { | |
$4_1 = HEAP32[($5_1 + 16 | 0) >> 2] | 0; | |
if (!$4_1) { | |
break label$97 | |
} | |
HEAP32[($2_1 + 16 | 0) >> 2] = $4_1; | |
HEAP32[($4_1 + 24 | 0) >> 2] = $2_1; | |
} | |
$4_1 = HEAP32[($5_1 + 20 | 0) >> 2] | 0; | |
if (!$4_1) { | |
break label$85 | |
} | |
HEAP32[($2_1 + 20 | 0) >> 2] = $4_1; | |
HEAP32[($4_1 + 24 | 0) >> 2] = $2_1; | |
} | |
$0_1 = $7_1 + $0_1 | 0; | |
$5_1 = $5_1 + $7_1 | 0; | |
} | |
HEAP32[($5_1 + 4 | 0) >> 2] = (HEAP32[($5_1 + 4 | 0) >> 2] | 0) & -2 | 0; | |
HEAP32[($6_1 + 4 | 0) >> 2] = $0_1 | 1 | 0; | |
HEAP32[($6_1 + $0_1 | 0) >> 2] = $0_1; | |
label$98 : { | |
if ($0_1 >>> 0 > 255 >>> 0) { | |
break label$98 | |
} | |
$4_1 = $0_1 >>> 3 | 0; | |
$0_1 = ($4_1 << 3 | 0) + 6e3 | 0; | |
label$99 : { | |
label$100 : { | |
$3_1 = HEAP32[(0 + 5960 | 0) >> 2] | 0; | |
$4_1 = 1 << $4_1 | 0; | |
if ($3_1 & $4_1 | 0) { | |
break label$100 | |
} | |
HEAP32[(0 + 5960 | 0) >> 2] = $3_1 | $4_1 | 0; | |
$4_1 = $0_1; | |
break label$99; | |
} | |
$4_1 = HEAP32[($0_1 + 8 | 0) >> 2] | 0; | |
} | |
HEAP32[($0_1 + 8 | 0) >> 2] = $6_1; | |
HEAP32[($4_1 + 12 | 0) >> 2] = $6_1; | |
HEAP32[($6_1 + 12 | 0) >> 2] = $0_1; | |
HEAP32[($6_1 + 8 | 0) >> 2] = $4_1; | |
break label$73; | |
} | |
$4_1 = 0; | |
label$101 : { | |
$3_1 = $0_1 >>> 8 | 0; | |
if (!$3_1) { | |
break label$101 | |
} | |
$4_1 = 31; | |
if ($0_1 >>> 0 > 16777215 >>> 0) { | |
break label$101 | |
} | |
$4_1 = (($3_1 + 1048320 | 0) >>> 16 | 0) & 8 | 0; | |
$3_1 = $3_1 << $4_1 | 0; | |
$1200 = $3_1; | |
$3_1 = (($3_1 + 520192 | 0) >>> 16 | 0) & 4 | 0; | |
$5_1 = $1200 << $3_1 | 0; | |
$1207 = $5_1; | |
$5_1 = (($5_1 + 245760 | 0) >>> 16 | 0) & 2 | 0; | |
$4_1 = (($1207 << $5_1 | 0) >>> 15 | 0) - ($3_1 | $4_1 | 0 | $5_1 | 0) | 0; | |
$4_1 = ($4_1 << 1 | 0 | (($0_1 >>> ($4_1 + 21 | 0) | 0) & 1 | 0) | 0) + 28 | 0; | |
} | |
HEAP32[($6_1 + 28 | 0) >> 2] = $4_1; | |
i64toi32_i32$1 = $6_1; | |
i64toi32_i32$0 = 0; | |
HEAP32[($6_1 + 16 | 0) >> 2] = 0; | |
HEAP32[($6_1 + 20 | 0) >> 2] = i64toi32_i32$0; | |
$3_1 = ($4_1 << 2 | 0) + 6264 | 0; | |
label$102 : { | |
label$103 : { | |
$5_1 = HEAP32[(0 + 5964 | 0) >> 2] | 0; | |
$8_1 = 1 << $4_1 | 0; | |
if ($5_1 & $8_1 | 0) { | |
break label$103 | |
} | |
HEAP32[(0 + 5964 | 0) >> 2] = $5_1 | $8_1 | 0; | |
HEAP32[$3_1 >> 2] = $6_1; | |
HEAP32[($6_1 + 24 | 0) >> 2] = $3_1; | |
break label$102; | |
} | |
$4_1 = $0_1 << (($4_1 | 0) == (31 | 0) ? 0 : 25 - ($4_1 >>> 1 | 0) | 0) | 0; | |
$5_1 = HEAP32[$3_1 >> 2] | 0; | |
label$104 : while (1) { | |
$3_1 = $5_1; | |
if (((HEAP32[($5_1 + 4 | 0) >> 2] | 0) & -8 | 0 | 0) == ($0_1 | 0)) { | |
break label$74 | |
} | |
$5_1 = $4_1 >>> 29 | 0; | |
$4_1 = $4_1 << 1 | 0; | |
$8_1 = ($3_1 + ($5_1 & 4 | 0) | 0) + 16 | 0; | |
$5_1 = HEAP32[$8_1 >> 2] | 0; | |
if ($5_1) { | |
continue label$104 | |
} | |
break label$104; | |
}; | |
HEAP32[$8_1 >> 2] = $6_1; | |
HEAP32[($6_1 + 24 | 0) >> 2] = $3_1; | |
} | |
HEAP32[($6_1 + 12 | 0) >> 2] = $6_1; | |
HEAP32[($6_1 + 8 | 0) >> 2] = $6_1; | |
break label$73; | |
} | |
$0_1 = $2_1 + -40 | 0; | |
$8_1 = ($5_1 + 8 | 0) & 7 | 0 ? (-8 - $5_1 | 0) & 7 | 0 : 0; | |
$11_1 = $0_1 - $8_1 | 0; | |
HEAP32[(0 + 5972 | 0) >> 2] = $11_1; | |
$8_1 = $5_1 + $8_1 | 0; | |
HEAP32[(0 + 5984 | 0) >> 2] = $8_1; | |
HEAP32[($8_1 + 4 | 0) >> 2] = $11_1 | 1 | 0; | |
HEAP32[(($5_1 + $0_1 | 0) + 4 | 0) >> 2] = 40; | |
HEAP32[(0 + 5988 | 0) >> 2] = HEAP32[(0 + 6448 | 0) >> 2] | 0; | |
$0_1 = ($6_1 + (($6_1 + -39 | 0) & 7 | 0 ? (39 - $6_1 | 0) & 7 | 0 : 0) | 0) + -47 | 0; | |
$8_1 = $0_1 >>> 0 < ($4_1 + 16 | 0) >>> 0 ? $4_1 : $0_1; | |
HEAP32[($8_1 + 4 | 0) >> 2] = 27; | |
i64toi32_i32$2 = 0; | |
i64toi32_i32$0 = HEAP32[(i64toi32_i32$2 + 6416 | 0) >> 2] | 0; | |
i64toi32_i32$1 = HEAP32[(i64toi32_i32$2 + 6420 | 0) >> 2] | 0; | |
$1329 = i64toi32_i32$0; | |
i64toi32_i32$0 = $8_1 + 16 | 0; | |
HEAP32[i64toi32_i32$0 >> 2] = $1329; | |
HEAP32[(i64toi32_i32$0 + 4 | 0) >> 2] = i64toi32_i32$1; | |
i64toi32_i32$2 = 0; | |
i64toi32_i32$1 = HEAP32[(i64toi32_i32$2 + 6408 | 0) >> 2] | 0; | |
i64toi32_i32$0 = HEAP32[(i64toi32_i32$2 + 6412 | 0) >> 2] | 0; | |
$1331 = i64toi32_i32$1; | |
i64toi32_i32$1 = $8_1; | |
HEAP32[($8_1 + 8 | 0) >> 2] = $1331; | |
HEAP32[($8_1 + 12 | 0) >> 2] = i64toi32_i32$0; | |
HEAP32[(0 + 6416 | 0) >> 2] = $8_1 + 8 | 0; | |
HEAP32[(0 + 6412 | 0) >> 2] = $2_1; | |
HEAP32[(0 + 6408 | 0) >> 2] = $5_1; | |
HEAP32[(0 + 6420 | 0) >> 2] = 0; | |
$0_1 = $8_1 + 24 | 0; | |
label$105 : while (1) { | |
HEAP32[($0_1 + 4 | 0) >> 2] = 7; | |
$5_1 = $0_1 + 8 | 0; | |
$0_1 = $0_1 + 4 | 0; | |
if ($6_1 >>> 0 > $5_1 >>> 0) { | |
continue label$105 | |
} | |
break label$105; | |
}; | |
if (($8_1 | 0) == ($4_1 | 0)) { | |
break label$63 | |
} | |
HEAP32[($8_1 + 4 | 0) >> 2] = (HEAP32[($8_1 + 4 | 0) >> 2] | 0) & -2 | 0; | |
$2_1 = $8_1 - $4_1 | 0; | |
HEAP32[($4_1 + 4 | 0) >> 2] = $2_1 | 1 | 0; | |
HEAP32[$8_1 >> 2] = $2_1; | |
label$106 : { | |
if ($2_1 >>> 0 > 255 >>> 0) { | |
break label$106 | |
} | |
$6_1 = $2_1 >>> 3 | 0; | |
$0_1 = ($6_1 << 3 | 0) + 6e3 | 0; | |
label$107 : { | |
label$108 : { | |
$5_1 = HEAP32[(0 + 5960 | 0) >> 2] | 0; | |
$6_1 = 1 << $6_1 | 0; | |
if ($5_1 & $6_1 | 0) { | |
break label$108 | |
} | |
HEAP32[(0 + 5960 | 0) >> 2] = $5_1 | $6_1 | 0; | |
$6_1 = $0_1; | |
break label$107; | |
} | |
$6_1 = HEAP32[($0_1 + 8 | 0) >> 2] | 0; | |
} | |
HEAP32[($0_1 + 8 | 0) >> 2] = $4_1; | |
HEAP32[($6_1 + 12 | 0) >> 2] = $4_1; | |
HEAP32[($4_1 + 12 | 0) >> 2] = $0_1; | |
HEAP32[($4_1 + 8 | 0) >> 2] = $6_1; | |
break label$63; | |
} | |
$0_1 = 0; | |
label$109 : { | |
$6_1 = $2_1 >>> 8 | 0; | |
if (!$6_1) { | |
break label$109 | |
} | |
$0_1 = 31; | |
if ($2_1 >>> 0 > 16777215 >>> 0) { | |
break label$109 | |
} | |
$0_1 = (($6_1 + 1048320 | 0) >>> 16 | 0) & 8 | 0; | |
$6_1 = $6_1 << $0_1 | 0; | |
$1401 = $6_1; | |
$6_1 = (($6_1 + 520192 | 0) >>> 16 | 0) & 4 | 0; | |
$5_1 = $1401 << $6_1 | 0; | |
$1408 = $5_1; | |
$5_1 = (($5_1 + 245760 | 0) >>> 16 | 0) & 2 | 0; | |
$0_1 = (($1408 << $5_1 | 0) >>> 15 | 0) - ($6_1 | $0_1 | 0 | $5_1 | 0) | 0; | |
$0_1 = ($0_1 << 1 | 0 | (($2_1 >>> ($0_1 + 21 | 0) | 0) & 1 | 0) | 0) + 28 | 0; | |
} | |
i64toi32_i32$1 = $4_1; | |
i64toi32_i32$0 = 0; | |
HEAP32[($4_1 + 16 | 0) >> 2] = 0; | |
HEAP32[($4_1 + 20 | 0) >> 2] = i64toi32_i32$0; | |
HEAP32[($4_1 + 28 | 0) >> 2] = $0_1; | |
$6_1 = ($0_1 << 2 | 0) + 6264 | 0; | |
label$110 : { | |
label$111 : { | |
$5_1 = HEAP32[(0 + 5964 | 0) >> 2] | 0; | |
$8_1 = 1 << $0_1 | 0; | |
if ($5_1 & $8_1 | 0) { | |
break label$111 | |
} | |
HEAP32[(0 + 5964 | 0) >> 2] = $5_1 | $8_1 | 0; | |
HEAP32[$6_1 >> 2] = $4_1; | |
HEAP32[($4_1 + 24 | 0) >> 2] = $6_1; | |
break label$110; | |
} | |
$0_1 = $2_1 << (($0_1 | 0) == (31 | 0) ? 0 : 25 - ($0_1 >>> 1 | 0) | 0) | 0; | |
$5_1 = HEAP32[$6_1 >> 2] | 0; | |
label$112 : while (1) { | |
$6_1 = $5_1; | |
if (((HEAP32[($5_1 + 4 | 0) >> 2] | 0) & -8 | 0 | 0) == ($2_1 | 0)) { | |
break label$72 | |
} | |
$5_1 = $0_1 >>> 29 | 0; | |
$0_1 = $0_1 << 1 | 0; | |
$8_1 = ($6_1 + ($5_1 & 4 | 0) | 0) + 16 | 0; | |
$5_1 = HEAP32[$8_1 >> 2] | 0; | |
if ($5_1) { | |
continue label$112 | |
} | |
break label$112; | |
}; | |
HEAP32[$8_1 >> 2] = $4_1; | |
HEAP32[($4_1 + 24 | 0) >> 2] = $6_1; | |
} | |
HEAP32[($4_1 + 12 | 0) >> 2] = $4_1; | |
HEAP32[($4_1 + 8 | 0) >> 2] = $4_1; | |
break label$63; | |
} | |
$0_1 = HEAP32[($3_1 + 8 | 0) >> 2] | 0; | |
HEAP32[($0_1 + 12 | 0) >> 2] = $6_1; | |
HEAP32[($3_1 + 8 | 0) >> 2] = $6_1; | |
HEAP32[($6_1 + 24 | 0) >> 2] = 0; | |
HEAP32[($6_1 + 12 | 0) >> 2] = $3_1; | |
HEAP32[($6_1 + 8 | 0) >> 2] = $0_1; | |
} | |
$0_1 = $11_1 + 8 | 0; | |
break label$3; | |
} | |
$0_1 = HEAP32[($6_1 + 8 | 0) >> 2] | 0; | |
HEAP32[($0_1 + 12 | 0) >> 2] = $4_1; | |
HEAP32[($6_1 + 8 | 0) >> 2] = $4_1; | |
HEAP32[($4_1 + 24 | 0) >> 2] = 0; | |
HEAP32[($4_1 + 12 | 0) >> 2] = $6_1; | |
HEAP32[($4_1 + 8 | 0) >> 2] = $0_1; | |
} | |
$0_1 = HEAP32[(0 + 5972 | 0) >> 2] | 0; | |
if ($0_1 >>> 0 <= $3_1 >>> 0) { | |
break label$6 | |
} | |
$4_1 = $0_1 - $3_1 | 0; | |
HEAP32[(0 + 5972 | 0) >> 2] = $4_1; | |
$0_1 = HEAP32[(0 + 5984 | 0) >> 2] | 0; | |
$6_1 = $0_1 + $3_1 | 0; | |
HEAP32[(0 + 5984 | 0) >> 2] = $6_1; | |
HEAP32[($6_1 + 4 | 0) >> 2] = $4_1 | 1 | 0; | |
HEAP32[($0_1 + 4 | 0) >> 2] = $3_1 | 3 | 0; | |
$0_1 = $0_1 + 8 | 0; | |
break label$3; | |
} | |
HEAP32[($9() | 0) >> 2] = 48; | |
$0_1 = 0; | |
break label$3; | |
} | |
label$113 : { | |
if (!$11_1) { | |
break label$113 | |
} | |
label$114 : { | |
label$115 : { | |
$4_1 = HEAP32[($8_1 + 28 | 0) >> 2] | 0; | |
$0_1 = ($4_1 << 2 | 0) + 6264 | 0; | |
if (($8_1 | 0) != (HEAP32[$0_1 >> 2] | 0 | 0)) { | |
break label$115 | |
} | |
HEAP32[$0_1 >> 2] = $5_1; | |
if ($5_1) { | |
break label$114 | |
} | |
$7_1 = $7_1 & (__wasm_rotl_i32(-2 | 0, $4_1 | 0) | 0) | 0; | |
HEAP32[(0 + 5964 | 0) >> 2] = $7_1; | |
break label$113; | |
} | |
HEAP32[($11_1 + ((HEAP32[($11_1 + 16 | 0) >> 2] | 0 | 0) == ($8_1 | 0) ? 16 : 20) | 0) >> 2] = $5_1; | |
if (!$5_1) { | |
break label$113 | |
} | |
} | |
HEAP32[($5_1 + 24 | 0) >> 2] = $11_1; | |
label$116 : { | |
$0_1 = HEAP32[($8_1 + 16 | 0) >> 2] | 0; | |
if (!$0_1) { | |
break label$116 | |
} | |
HEAP32[($5_1 + 16 | 0) >> 2] = $0_1; | |
HEAP32[($0_1 + 24 | 0) >> 2] = $5_1; | |
} | |
$0_1 = HEAP32[($8_1 + 20 | 0) >> 2] | 0; | |
if (!$0_1) { | |
break label$113 | |
} | |
HEAP32[($5_1 + 20 | 0) >> 2] = $0_1; | |
HEAP32[($0_1 + 24 | 0) >> 2] = $5_1; | |
} | |
label$117 : { | |
label$118 : { | |
if ($6_1 >>> 0 > 15 >>> 0) { | |
break label$118 | |
} | |
$0_1 = $6_1 + $3_1 | 0; | |
HEAP32[($8_1 + 4 | 0) >> 2] = $0_1 | 3 | 0; | |
$0_1 = $8_1 + $0_1 | 0; | |
HEAP32[($0_1 + 4 | 0) >> 2] = HEAP32[($0_1 + 4 | 0) >> 2] | 0 | 1 | 0; | |
break label$117; | |
} | |
HEAP32[($8_1 + 4 | 0) >> 2] = $3_1 | 3 | 0; | |
$5_1 = $8_1 + $3_1 | 0; | |
HEAP32[($5_1 + 4 | 0) >> 2] = $6_1 | 1 | 0; | |
HEAP32[($5_1 + $6_1 | 0) >> 2] = $6_1; | |
label$119 : { | |
if ($6_1 >>> 0 > 255 >>> 0) { | |
break label$119 | |
} | |
$4_1 = $6_1 >>> 3 | 0; | |
$0_1 = ($4_1 << 3 | 0) + 6e3 | 0; | |
label$120 : { | |
label$121 : { | |
$6_1 = HEAP32[(0 + 5960 | 0) >> 2] | 0; | |
$4_1 = 1 << $4_1 | 0; | |
if ($6_1 & $4_1 | 0) { | |
break label$121 | |
} | |
HEAP32[(0 + 5960 | 0) >> 2] = $6_1 | $4_1 | 0; | |
$4_1 = $0_1; | |
break label$120; | |
} | |
$4_1 = HEAP32[($0_1 + 8 | 0) >> 2] | 0; | |
} | |
HEAP32[($0_1 + 8 | 0) >> 2] = $5_1; | |
HEAP32[($4_1 + 12 | 0) >> 2] = $5_1; | |
HEAP32[($5_1 + 12 | 0) >> 2] = $0_1; | |
HEAP32[($5_1 + 8 | 0) >> 2] = $4_1; | |
break label$117; | |
} | |
label$122 : { | |
label$123 : { | |
$4_1 = $6_1 >>> 8 | 0; | |
if ($4_1) { | |
break label$123 | |
} | |
$0_1 = 0; | |
break label$122; | |
} | |
$0_1 = 31; | |
if ($6_1 >>> 0 > 16777215 >>> 0) { | |
break label$122 | |
} | |
$0_1 = (($4_1 + 1048320 | 0) >>> 16 | 0) & 8 | 0; | |
$4_1 = $4_1 << $0_1 | 0; | |
$1652 = $4_1; | |
$4_1 = (($4_1 + 520192 | 0) >>> 16 | 0) & 4 | 0; | |
$3_1 = $1652 << $4_1 | 0; | |
$1659 = $3_1; | |
$3_1 = (($3_1 + 245760 | 0) >>> 16 | 0) & 2 | 0; | |
$0_1 = (($1659 << $3_1 | 0) >>> 15 | 0) - ($4_1 | $0_1 | 0 | $3_1 | 0) | 0; | |
$0_1 = ($0_1 << 1 | 0 | (($6_1 >>> ($0_1 + 21 | 0) | 0) & 1 | 0) | 0) + 28 | 0; | |
} | |
HEAP32[($5_1 + 28 | 0) >> 2] = $0_1; | |
i64toi32_i32$1 = $5_1; | |
i64toi32_i32$0 = 0; | |
HEAP32[($5_1 + 16 | 0) >> 2] = 0; | |
HEAP32[($5_1 + 20 | 0) >> 2] = i64toi32_i32$0; | |
$4_1 = ($0_1 << 2 | 0) + 6264 | 0; | |
label$124 : { | |
label$125 : { | |
label$126 : { | |
$3_1 = 1 << $0_1 | 0; | |
if ($7_1 & $3_1 | 0) { | |
break label$126 | |
} | |
HEAP32[(0 + 5964 | 0) >> 2] = $7_1 | $3_1 | 0; | |
HEAP32[$4_1 >> 2] = $5_1; | |
HEAP32[($5_1 + 24 | 0) >> 2] = $4_1; | |
break label$125; | |
} | |
$0_1 = $6_1 << (($0_1 | 0) == (31 | 0) ? 0 : 25 - ($0_1 >>> 1 | 0) | 0) | 0; | |
$3_1 = HEAP32[$4_1 >> 2] | 0; | |
label$127 : while (1) { | |
$4_1 = $3_1; | |
if (((HEAP32[($4_1 + 4 | 0) >> 2] | 0) & -8 | 0 | 0) == ($6_1 | 0)) { | |
break label$124 | |
} | |
$3_1 = $0_1 >>> 29 | 0; | |
$0_1 = $0_1 << 1 | 0; | |
$2_1 = ($4_1 + ($3_1 & 4 | 0) | 0) + 16 | 0; | |
$3_1 = HEAP32[$2_1 >> 2] | 0; | |
if ($3_1) { | |
continue label$127 | |
} | |
break label$127; | |
}; | |
HEAP32[$2_1 >> 2] = $5_1; | |
HEAP32[($5_1 + 24 | 0) >> 2] = $4_1; | |
} | |
HEAP32[($5_1 + 12 | 0) >> 2] = $5_1; | |
HEAP32[($5_1 + 8 | 0) >> 2] = $5_1; | |
break label$117; | |
} | |
$0_1 = HEAP32[($4_1 + 8 | 0) >> 2] | 0; | |
HEAP32[($0_1 + 12 | 0) >> 2] = $5_1; | |
HEAP32[($4_1 + 8 | 0) >> 2] = $5_1; | |
HEAP32[($5_1 + 24 | 0) >> 2] = 0; | |
HEAP32[($5_1 + 12 | 0) >> 2] = $4_1; | |
HEAP32[($5_1 + 8 | 0) >> 2] = $0_1; | |
} | |
$0_1 = $8_1 + 8 | 0; | |
break label$3; | |
} | |
label$128 : { | |
if (!$10_1) { | |
break label$128 | |
} | |
label$129 : { | |
label$130 : { | |
$6_1 = HEAP32[($5_1 + 28 | 0) >> 2] | 0; | |
$0_1 = ($6_1 << 2 | 0) + 6264 | 0; | |
if (($5_1 | 0) != (HEAP32[$0_1 >> 2] | 0 | 0)) { | |
break label$130 | |
} | |
HEAP32[$0_1 >> 2] = $8_1; | |
if ($8_1) { | |
break label$129 | |
} | |
HEAP32[(0 + 5964 | 0) >> 2] = $9_1 & (__wasm_rotl_i32(-2 | 0, $6_1 | 0) | 0) | 0; | |
break label$128; | |
} | |
HEAP32[($10_1 + ((HEAP32[($10_1 + 16 | 0) >> 2] | 0 | 0) == ($5_1 | 0) ? 16 : 20) | 0) >> 2] = $8_1; | |
if (!$8_1) { | |
break label$128 | |
} | |
} | |
HEAP32[($8_1 + 24 | 0) >> 2] = $10_1; | |
label$131 : { | |
$0_1 = HEAP32[($5_1 + 16 | 0) >> 2] | 0; | |
if (!$0_1) { | |
break label$131 | |
} | |
HEAP32[($8_1 + 16 | 0) >> 2] = $0_1; | |
HEAP32[($0_1 + 24 | 0) >> 2] = $8_1; | |
} | |
$0_1 = HEAP32[($5_1 + 20 | 0) >> 2] | 0; | |
if (!$0_1) { | |
break label$128 | |
} | |
HEAP32[($8_1 + 20 | 0) >> 2] = $0_1; | |
HEAP32[($0_1 + 24 | 0) >> 2] = $8_1; | |
} | |
label$132 : { | |
label$133 : { | |
if ($4_1 >>> 0 > 15 >>> 0) { | |
break label$133 | |
} | |
$0_1 = $4_1 + $3_1 | 0; | |
HEAP32[($5_1 + 4 | 0) >> 2] = $0_1 | 3 | 0; | |
$0_1 = $5_1 + $0_1 | 0; | |
HEAP32[($0_1 + 4 | 0) >> 2] = HEAP32[($0_1 + 4 | 0) >> 2] | 0 | 1 | 0; | |
break label$132; | |
} | |
HEAP32[($5_1 + 4 | 0) >> 2] = $3_1 | 3 | 0; | |
$6_1 = $5_1 + $3_1 | 0; | |
HEAP32[($6_1 + 4 | 0) >> 2] = $4_1 | 1 | 0; | |
HEAP32[($6_1 + $4_1 | 0) >> 2] = $4_1; | |
label$134 : { | |
if (!$7_1) { | |
break label$134 | |
} | |
$8_1 = $7_1 >>> 3 | 0; | |
$3_1 = ($8_1 << 3 | 0) + 6e3 | 0; | |
$0_1 = HEAP32[(0 + 5980 | 0) >> 2] | 0; | |
label$135 : { | |
label$136 : { | |
$8_1 = 1 << $8_1 | 0; | |
if ($8_1 & $2_1 | 0) { | |
break label$136 | |
} | |
HEAP32[(0 + 5960 | 0) >> 2] = $8_1 | $2_1 | 0; | |
$8_1 = $3_1; | |
break label$135; | |
} | |
$8_1 = HEAP32[($3_1 + 8 | 0) >> 2] | 0; | |
} | |
HEAP32[($3_1 + 8 | 0) >> 2] = $0_1; | |
HEAP32[($8_1 + 12 | 0) >> 2] = $0_1; | |
HEAP32[($0_1 + 12 | 0) >> 2] = $3_1; | |
HEAP32[($0_1 + 8 | 0) >> 2] = $8_1; | |
} | |
HEAP32[(0 + 5980 | 0) >> 2] = $6_1; | |
HEAP32[(0 + 5968 | 0) >> 2] = $4_1; | |
} | |
$0_1 = $5_1 + 8 | 0; | |
} | |
label$137 : { | |
$13_1 = $1_1 + 16 | 0; | |
if ($13_1 >>> 0 < global$2 >>> 0) { | |
fimport$3() | |
} | |
global$0 = $13_1; | |
} | |
return $0_1 | 0; | |
} | |
function $56($0_1) { | |
$0_1 = $0_1 | 0; | |
var $2_1 = 0, $5_1 = 0, $1_1 = 0, $4_1 = 0, $3_1 = 0, $7_1 = 0, $6_1 = 0, $408 = 0, $415 = 0; | |
label$1 : { | |
if (!$0_1) { | |
break label$1 | |
} | |
$1_1 = $0_1 + -8 | 0; | |
$2_1 = HEAP32[($0_1 + -4 | 0) >> 2] | 0; | |
$0_1 = $2_1 & -8 | 0; | |
$3_1 = $1_1 + $0_1 | 0; | |
label$2 : { | |
if ($2_1 & 1 | 0) { | |
break label$2 | |
} | |
if (!($2_1 & 3 | 0)) { | |
break label$1 | |
} | |
$2_1 = HEAP32[$1_1 >> 2] | 0; | |
$1_1 = $1_1 - $2_1 | 0; | |
$4_1 = HEAP32[(0 + 5976 | 0) >> 2] | 0; | |
if ($1_1 >>> 0 < $4_1 >>> 0) { | |
break label$1 | |
} | |
$0_1 = $2_1 + $0_1 | 0; | |
label$3 : { | |
if ((HEAP32[(0 + 5980 | 0) >> 2] | 0 | 0) == ($1_1 | 0)) { | |
break label$3 | |
} | |
label$4 : { | |
if ($2_1 >>> 0 > 255 >>> 0) { | |
break label$4 | |
} | |
$5_1 = HEAP32[($1_1 + 12 | 0) >> 2] | 0; | |
label$5 : { | |
$6_1 = HEAP32[($1_1 + 8 | 0) >> 2] | 0; | |
$7_1 = $2_1 >>> 3 | 0; | |
$2_1 = ($7_1 << 3 | 0) + 6e3 | 0; | |
if (($6_1 | 0) == ($2_1 | 0)) { | |
break label$5 | |
} | |
} | |
label$6 : { | |
if (($5_1 | 0) != ($6_1 | 0)) { | |
break label$6 | |
} | |
HEAP32[(0 + 5960 | 0) >> 2] = (HEAP32[(0 + 5960 | 0) >> 2] | 0) & (__wasm_rotl_i32(-2 | 0, $7_1 | 0) | 0) | 0; | |
break label$2; | |
} | |
label$7 : { | |
if (($5_1 | 0) == ($2_1 | 0)) { | |
break label$7 | |
} | |
} | |
HEAP32[($6_1 + 12 | 0) >> 2] = $5_1; | |
HEAP32[($5_1 + 8 | 0) >> 2] = $6_1; | |
break label$2; | |
} | |
$7_1 = HEAP32[($1_1 + 24 | 0) >> 2] | 0; | |
label$8 : { | |
label$9 : { | |
$5_1 = HEAP32[($1_1 + 12 | 0) >> 2] | 0; | |
if (($5_1 | 0) == ($1_1 | 0)) { | |
break label$9 | |
} | |
label$10 : { | |
$2_1 = HEAP32[($1_1 + 8 | 0) >> 2] | 0; | |
if ($4_1 >>> 0 > $2_1 >>> 0) { | |
break label$10 | |
} | |
HEAP32[($2_1 + 12 | 0) >> 2] | 0; | |
} | |
HEAP32[($2_1 + 12 | 0) >> 2] = $5_1; | |
HEAP32[($5_1 + 8 | 0) >> 2] = $2_1; | |
break label$8; | |
} | |
label$11 : { | |
$2_1 = $1_1 + 20 | 0; | |
$4_1 = HEAP32[$2_1 >> 2] | 0; | |
if ($4_1) { | |
break label$11 | |
} | |
$2_1 = $1_1 + 16 | 0; | |
$4_1 = HEAP32[$2_1 >> 2] | 0; | |
if ($4_1) { | |
break label$11 | |
} | |
$5_1 = 0; | |
break label$8; | |
} | |
label$12 : while (1) { | |
$6_1 = $2_1; | |
$5_1 = $4_1; | |
$2_1 = $5_1 + 20 | 0; | |
$4_1 = HEAP32[$2_1 >> 2] | 0; | |
if ($4_1) { | |
continue label$12 | |
} | |
$2_1 = $5_1 + 16 | 0; | |
$4_1 = HEAP32[($5_1 + 16 | 0) >> 2] | 0; | |
if ($4_1) { | |
continue label$12 | |
} | |
break label$12; | |
}; | |
HEAP32[$6_1 >> 2] = 0; | |
} | |
if (!$7_1) { | |
break label$2 | |
} | |
label$13 : { | |
label$14 : { | |
$4_1 = HEAP32[($1_1 + 28 | 0) >> 2] | 0; | |
$2_1 = ($4_1 << 2 | 0) + 6264 | 0; | |
if ((HEAP32[$2_1 >> 2] | 0 | 0) != ($1_1 | 0)) { | |
break label$14 | |
} | |
HEAP32[$2_1 >> 2] = $5_1; | |
if ($5_1) { | |
break label$13 | |
} | |
HEAP32[(0 + 5964 | 0) >> 2] = (HEAP32[(0 + 5964 | 0) >> 2] | 0) & (__wasm_rotl_i32(-2 | 0, $4_1 | 0) | 0) | 0; | |
break label$2; | |
} | |
HEAP32[($7_1 + ((HEAP32[($7_1 + 16 | 0) >> 2] | 0 | 0) == ($1_1 | 0) ? 16 : 20) | 0) >> 2] = $5_1; | |
if (!$5_1) { | |
break label$2 | |
} | |
} | |
HEAP32[($5_1 + 24 | 0) >> 2] = $7_1; | |
label$15 : { | |
$2_1 = HEAP32[($1_1 + 16 | 0) >> 2] | 0; | |
if (!$2_1) { | |
break label$15 | |
} | |
HEAP32[($5_1 + 16 | 0) >> 2] = $2_1; | |
HEAP32[($2_1 + 24 | 0) >> 2] = $5_1; | |
} | |
$2_1 = HEAP32[($1_1 + 20 | 0) >> 2] | 0; | |
if (!$2_1) { | |
break label$2 | |
} | |
HEAP32[($5_1 + 20 | 0) >> 2] = $2_1; | |
HEAP32[($2_1 + 24 | 0) >> 2] = $5_1; | |
break label$2; | |
} | |
$2_1 = HEAP32[($3_1 + 4 | 0) >> 2] | 0; | |
if (($2_1 & 3 | 0 | 0) != (3 | 0)) { | |
break label$2 | |
} | |
HEAP32[(0 + 5968 | 0) >> 2] = $0_1; | |
HEAP32[($3_1 + 4 | 0) >> 2] = $2_1 & -2 | 0; | |
HEAP32[($1_1 + 4 | 0) >> 2] = $0_1 | 1 | 0; | |
HEAP32[($1_1 + $0_1 | 0) >> 2] = $0_1; | |
return; | |
} | |
if ($3_1 >>> 0 <= $1_1 >>> 0) { | |
break label$1 | |
} | |
$2_1 = HEAP32[($3_1 + 4 | 0) >> 2] | 0; | |
if (!($2_1 & 1 | 0)) { | |
break label$1 | |
} | |
label$16 : { | |
label$17 : { | |
if ($2_1 & 2 | 0) { | |
break label$17 | |
} | |
label$18 : { | |
if ((HEAP32[(0 + 5984 | 0) >> 2] | 0 | 0) != ($3_1 | 0)) { | |
break label$18 | |
} | |
HEAP32[(0 + 5984 | 0) >> 2] = $1_1; | |
$0_1 = (HEAP32[(0 + 5972 | 0) >> 2] | 0) + $0_1 | 0; | |
HEAP32[(0 + 5972 | 0) >> 2] = $0_1; | |
HEAP32[($1_1 + 4 | 0) >> 2] = $0_1 | 1 | 0; | |
if (($1_1 | 0) != (HEAP32[(0 + 5980 | 0) >> 2] | 0 | 0)) { | |
break label$1 | |
} | |
HEAP32[(0 + 5968 | 0) >> 2] = 0; | |
HEAP32[(0 + 5980 | 0) >> 2] = 0; | |
return; | |
} | |
label$19 : { | |
if ((HEAP32[(0 + 5980 | 0) >> 2] | 0 | 0) != ($3_1 | 0)) { | |
break label$19 | |
} | |
HEAP32[(0 + 5980 | 0) >> 2] = $1_1; | |
$0_1 = (HEAP32[(0 + 5968 | 0) >> 2] | 0) + $0_1 | 0; | |
HEAP32[(0 + 5968 | 0) >> 2] = $0_1; | |
HEAP32[($1_1 + 4 | 0) >> 2] = $0_1 | 1 | 0; | |
HEAP32[($1_1 + $0_1 | 0) >> 2] = $0_1; | |
return; | |
} | |
$0_1 = ($2_1 & -8 | 0) + $0_1 | 0; | |
label$20 : { | |
label$21 : { | |
if ($2_1 >>> 0 > 255 >>> 0) { | |
break label$21 | |
} | |
$4_1 = HEAP32[($3_1 + 12 | 0) >> 2] | 0; | |
label$22 : { | |
$5_1 = HEAP32[($3_1 + 8 | 0) >> 2] | 0; | |
$3_1 = $2_1 >>> 3 | 0; | |
$2_1 = ($3_1 << 3 | 0) + 6e3 | 0; | |
if (($5_1 | 0) == ($2_1 | 0)) { | |
break label$22 | |
} | |
HEAP32[(0 + 5976 | 0) >> 2] | 0; | |
} | |
label$23 : { | |
if (($4_1 | 0) != ($5_1 | 0)) { | |
break label$23 | |
} | |
HEAP32[(0 + 5960 | 0) >> 2] = (HEAP32[(0 + 5960 | 0) >> 2] | 0) & (__wasm_rotl_i32(-2 | 0, $3_1 | 0) | 0) | 0; | |
break label$20; | |
} | |
label$24 : { | |
if (($4_1 | 0) == ($2_1 | 0)) { | |
break label$24 | |
} | |
HEAP32[(0 + 5976 | 0) >> 2] | 0; | |
} | |
HEAP32[($5_1 + 12 | 0) >> 2] = $4_1; | |
HEAP32[($4_1 + 8 | 0) >> 2] = $5_1; | |
break label$20; | |
} | |
$7_1 = HEAP32[($3_1 + 24 | 0) >> 2] | 0; | |
label$25 : { | |
label$26 : { | |
$5_1 = HEAP32[($3_1 + 12 | 0) >> 2] | 0; | |
if (($5_1 | 0) == ($3_1 | 0)) { | |
break label$26 | |
} | |
label$27 : { | |
$2_1 = HEAP32[($3_1 + 8 | 0) >> 2] | 0; | |
if ((HEAP32[(0 + 5976 | 0) >> 2] | 0) >>> 0 > $2_1 >>> 0) { | |
break label$27 | |
} | |
HEAP32[($2_1 + 12 | 0) >> 2] | 0; | |
} | |
HEAP32[($2_1 + 12 | 0) >> 2] = $5_1; | |
HEAP32[($5_1 + 8 | 0) >> 2] = $2_1; | |
break label$25; | |
} | |
label$28 : { | |
$2_1 = $3_1 + 20 | 0; | |
$4_1 = HEAP32[$2_1 >> 2] | 0; | |
if ($4_1) { | |
break label$28 | |
} | |
$2_1 = $3_1 + 16 | 0; | |
$4_1 = HEAP32[$2_1 >> 2] | 0; | |
if ($4_1) { | |
break label$28 | |
} | |
$5_1 = 0; | |
break label$25; | |
} | |
label$29 : while (1) { | |
$6_1 = $2_1; | |
$5_1 = $4_1; | |
$2_1 = $5_1 + 20 | 0; | |
$4_1 = HEAP32[$2_1 >> 2] | 0; | |
if ($4_1) { | |
continue label$29 | |
} | |
$2_1 = $5_1 + 16 | 0; | |
$4_1 = HEAP32[($5_1 + 16 | 0) >> 2] | 0; | |
if ($4_1) { | |
continue label$29 | |
} | |
break label$29; | |
}; | |
HEAP32[$6_1 >> 2] = 0; | |
} | |
if (!$7_1) { | |
break label$20 | |
} | |
label$30 : { | |
label$31 : { | |
$4_1 = HEAP32[($3_1 + 28 | 0) >> 2] | 0; | |
$2_1 = ($4_1 << 2 | 0) + 6264 | 0; | |
if ((HEAP32[$2_1 >> 2] | 0 | 0) != ($3_1 | 0)) { | |
break label$31 | |
} | |
HEAP32[$2_1 >> 2] = $5_1; | |
if ($5_1) { | |
break label$30 | |
} | |
HEAP32[(0 + 5964 | 0) >> 2] = (HEAP32[(0 + 5964 | 0) >> 2] | 0) & (__wasm_rotl_i32(-2 | 0, $4_1 | 0) | 0) | 0; | |
break label$20; | |
} | |
HEAP32[($7_1 + ((HEAP32[($7_1 + 16 | 0) >> 2] | 0 | 0) == ($3_1 | 0) ? 16 : 20) | 0) >> 2] = $5_1; | |
if (!$5_1) { | |
break label$20 | |
} | |
} | |
HEAP32[($5_1 + 24 | 0) >> 2] = $7_1; | |
label$32 : { | |
$2_1 = HEAP32[($3_1 + 16 | 0) >> 2] | 0; | |
if (!$2_1) { | |
break label$32 | |
} | |
HEAP32[($5_1 + 16 | 0) >> 2] = $2_1; | |
HEAP32[($2_1 + 24 | 0) >> 2] = $5_1; | |
} | |
$2_1 = HEAP32[($3_1 + 20 | 0) >> 2] | 0; | |
if (!$2_1) { | |
break label$20 | |
} | |
HEAP32[($5_1 + 20 | 0) >> 2] = $2_1; | |
HEAP32[($2_1 + 24 | 0) >> 2] = $5_1; | |
} | |
HEAP32[($1_1 + 4 | 0) >> 2] = $0_1 | 1 | 0; | |
HEAP32[($1_1 + $0_1 | 0) >> 2] = $0_1; | |
if (($1_1 | 0) != (HEAP32[(0 + 5980 | 0) >> 2] | 0 | 0)) { | |
break label$16 | |
} | |
HEAP32[(0 + 5968 | 0) >> 2] = $0_1; | |
return; | |
} | |
HEAP32[($3_1 + 4 | 0) >> 2] = $2_1 & -2 | 0; | |
HEAP32[($1_1 + 4 | 0) >> 2] = $0_1 | 1 | 0; | |
HEAP32[($1_1 + $0_1 | 0) >> 2] = $0_1; | |
} | |
label$33 : { | |
if ($0_1 >>> 0 > 255 >>> 0) { | |
break label$33 | |
} | |
$2_1 = $0_1 >>> 3 | 0; | |
$0_1 = ($2_1 << 3 | 0) + 6e3 | 0; | |
label$34 : { | |
label$35 : { | |
$4_1 = HEAP32[(0 + 5960 | 0) >> 2] | 0; | |
$2_1 = 1 << $2_1 | 0; | |
if ($4_1 & $2_1 | 0) { | |
break label$35 | |
} | |
HEAP32[(0 + 5960 | 0) >> 2] = $4_1 | $2_1 | 0; | |
$2_1 = $0_1; | |
break label$34; | |
} | |
$2_1 = HEAP32[($0_1 + 8 | 0) >> 2] | 0; | |
} | |
HEAP32[($0_1 + 8 | 0) >> 2] = $1_1; | |
HEAP32[($2_1 + 12 | 0) >> 2] = $1_1; | |
HEAP32[($1_1 + 12 | 0) >> 2] = $0_1; | |
HEAP32[($1_1 + 8 | 0) >> 2] = $2_1; | |
return; | |
} | |
$2_1 = 0; | |
label$36 : { | |
$4_1 = $0_1 >>> 8 | 0; | |
if (!$4_1) { | |
break label$36 | |
} | |
$2_1 = 31; | |
if ($0_1 >>> 0 > 16777215 >>> 0) { | |
break label$36 | |
} | |
$2_1 = (($4_1 + 1048320 | 0) >>> 16 | 0) & 8 | 0; | |
$4_1 = $4_1 << $2_1 | 0; | |
$408 = $4_1; | |
$4_1 = (($4_1 + 520192 | 0) >>> 16 | 0) & 4 | 0; | |
$5_1 = $408 << $4_1 | 0; | |
$415 = $5_1; | |
$5_1 = (($5_1 + 245760 | 0) >>> 16 | 0) & 2 | 0; | |
$2_1 = (($415 << $5_1 | 0) >>> 15 | 0) - ($4_1 | $2_1 | 0 | $5_1 | 0) | 0; | |
$2_1 = ($2_1 << 1 | 0 | (($0_1 >>> ($2_1 + 21 | 0) | 0) & 1 | 0) | 0) + 28 | 0; | |
} | |
HEAP32[($1_1 + 16 | 0) >> 2] = 0; | |
HEAP32[($1_1 + 20 | 0) >> 2] = 0; | |
HEAP32[($1_1 + 28 | 0) >> 2] = $2_1; | |
$4_1 = ($2_1 << 2 | 0) + 6264 | 0; | |
label$37 : { | |
label$38 : { | |
label$39 : { | |
label$40 : { | |
$5_1 = HEAP32[(0 + 5964 | 0) >> 2] | 0; | |
$3_1 = 1 << $2_1 | 0; | |
if ($5_1 & $3_1 | 0) { | |
break label$40 | |
} | |
HEAP32[(0 + 5964 | 0) >> 2] = $5_1 | $3_1 | 0; | |
HEAP32[$4_1 >> 2] = $1_1; | |
HEAP32[($1_1 + 24 | 0) >> 2] = $4_1; | |
break label$39; | |
} | |
$2_1 = $0_1 << (($2_1 | 0) == (31 | 0) ? 0 : 25 - ($2_1 >>> 1 | 0) | 0) | 0; | |
$5_1 = HEAP32[$4_1 >> 2] | 0; | |
label$41 : while (1) { | |
$4_1 = $5_1; | |
if (((HEAP32[($5_1 + 4 | 0) >> 2] | 0) & -8 | 0 | 0) == ($0_1 | 0)) { | |
break label$38 | |
} | |
$5_1 = $2_1 >>> 29 | 0; | |
$2_1 = $2_1 << 1 | 0; | |
$3_1 = ($4_1 + ($5_1 & 4 | 0) | 0) + 16 | 0; | |
$5_1 = HEAP32[$3_1 >> 2] | 0; | |
if ($5_1) { | |
continue label$41 | |
} | |
break label$41; | |
}; | |
HEAP32[$3_1 >> 2] = $1_1; | |
HEAP32[($1_1 + 24 | 0) >> 2] = $4_1; | |
} | |
HEAP32[($1_1 + 12 | 0) >> 2] = $1_1; | |
HEAP32[($1_1 + 8 | 0) >> 2] = $1_1; | |
break label$37; | |
} | |
$0_1 = HEAP32[($4_1 + 8 | 0) >> 2] | 0; | |
HEAP32[($0_1 + 12 | 0) >> 2] = $1_1; | |
HEAP32[($4_1 + 8 | 0) >> 2] = $1_1; | |
HEAP32[($1_1 + 24 | 0) >> 2] = 0; | |
HEAP32[($1_1 + 12 | 0) >> 2] = $4_1; | |
HEAP32[($1_1 + 8 | 0) >> 2] = $0_1; | |
} | |
$1_1 = (HEAP32[(0 + 5992 | 0) >> 2] | 0) + -1 | 0; | |
HEAP32[(0 + 5992 | 0) >> 2] = $1_1; | |
if ($1_1) { | |
break label$1 | |
} | |
$1_1 = 6416; | |
label$42 : while (1) { | |
$0_1 = HEAP32[$1_1 >> 2] | 0; | |
$1_1 = $0_1 + 8 | 0; | |
if ($0_1) { | |
continue label$42 | |
} | |
break label$42; | |
}; | |
HEAP32[(0 + 5992 | 0) >> 2] = -1; | |
} | |
} | |
function $57() { | |
return global$0 | 0; | |
} | |
function $58($0_1) { | |
$0_1 = $0_1 | 0; | |
var $1_1 = 0; | |
$1_1 = $0_1; | |
if ($1_1 >>> 0 < global$2 >>> 0) { | |
fimport$3() | |
} | |
global$0 = $1_1; | |
} | |
function $59($0_1) { | |
$0_1 = $0_1 | 0; | |
var $1_1 = 0, $3_1 = 0; | |
label$1 : { | |
$1_1 = (global$0 - $0_1 | 0) & -16 | 0; | |
$3_1 = $1_1; | |
if ($1_1 >>> 0 < global$2 >>> 0) { | |
fimport$3() | |
} | |
global$0 = $3_1; | |
} | |
return $1_1 | 0; | |
} | |
function $60($0_1) { | |
$0_1 = $0_1 | 0; | |
var $2_1 = 0, $1_1 = 0; | |
label$1 : { | |
label$2 : { | |
if (!$0_1) { | |
break label$2 | |
} | |
label$3 : { | |
if ((HEAP32[($0_1 + 76 | 0) >> 2] | 0 | 0) > (-1 | 0)) { | |
break label$3 | |
} | |
return $61($0_1 | 0) | 0 | 0; | |
} | |
$1_1 = $52($0_1 | 0) | 0; | |
$2_1 = $61($0_1 | 0) | 0; | |
if (!$1_1) { | |
break label$1 | |
} | |
$53($0_1 | 0); | |
return $2_1 | 0; | |
} | |
$2_1 = 0; | |
label$4 : { | |
if (!(HEAP32[(0 + 4600 | 0) >> 2] | 0)) { | |
break label$4 | |
} | |
$2_1 = $60(HEAP32[(0 + 4600 | 0) >> 2] | 0 | 0) | 0; | |
} | |
label$5 : { | |
$0_1 = HEAP32[($22() | 0) >> 2] | 0; | |
if (!$0_1) { | |
break label$5 | |
} | |
label$6 : while (1) { | |
$1_1 = 0; | |
label$7 : { | |
if ((HEAP32[($0_1 + 76 | 0) >> 2] | 0 | 0) < (0 | 0)) { | |
break label$7 | |
} | |
$1_1 = $52($0_1 | 0) | 0; | |
} | |
label$8 : { | |
if ((HEAP32[($0_1 + 20 | 0) >> 2] | 0) >>> 0 <= (HEAP32[($0_1 + 28 | 0) >> 2] | 0) >>> 0) { | |
break label$8 | |
} | |
$2_1 = $61($0_1 | 0) | 0 | $2_1 | 0; | |
} | |
label$9 : { | |
if (!$1_1) { | |
break label$9 | |
} | |
$53($0_1 | 0); | |
} | |
$0_1 = HEAP32[($0_1 + 56 | 0) >> 2] | 0; | |
if ($0_1) { | |
continue label$6 | |
} | |
break label$6; | |
}; | |
} | |
$23(); | |
} | |
return $2_1 | 0; | |
} | |
function $61($0_1) { | |
$0_1 = $0_1 | 0; | |
var i64toi32_i32$1 = 0, i64toi32_i32$0 = 0, $1_1 = 0, $2_1 = 0; | |
label$1 : { | |
if ((HEAP32[($0_1 + 20 | 0) >> 2] | 0) >>> 0 <= (HEAP32[($0_1 + 28 | 0) >> 2] | 0) >>> 0) { | |
break label$1 | |
} | |
FUNCTION_TABLE[HEAP32[($0_1 + 36 | 0) >> 2] | 0]($0_1, 0, 0) | 0; | |
if (HEAP32[($0_1 + 20 | 0) >> 2] | 0) { | |
break label$1 | |
} | |
return -1 | 0; | |
} | |
label$2 : { | |
$1_1 = HEAP32[($0_1 + 4 | 0) >> 2] | 0; | |
$2_1 = HEAP32[($0_1 + 8 | 0) >> 2] | 0; | |
if ($1_1 >>> 0 >= $2_1 >>> 0) { | |
break label$2 | |
} | |
i64toi32_i32$1 = $1_1 - $2_1 | 0; | |
i64toi32_i32$0 = i64toi32_i32$1 >> 31 | 0; | |
i64toi32_i32$0 = FUNCTION_TABLE[HEAP32[($0_1 + 40 | 0) >> 2] | 0]($0_1, i64toi32_i32$1, i64toi32_i32$0, 1) | 0; | |
i64toi32_i32$1 = i64toi32_i32$HIGH_BITS; | |
} | |
HEAP32[($0_1 + 28 | 0) >> 2] = 0; | |
i64toi32_i32$0 = $0_1; | |
i64toi32_i32$1 = 0; | |
HEAP32[($0_1 + 16 | 0) >> 2] = 0; | |
HEAP32[($0_1 + 20 | 0) >> 2] = i64toi32_i32$1; | |
i64toi32_i32$0 = $0_1; | |
i64toi32_i32$1 = 0; | |
HEAP32[($0_1 + 4 | 0) >> 2] = 0; | |
HEAP32[($0_1 + 8 | 0) >> 2] = i64toi32_i32$1; | |
return 0 | 0; | |
} | |
function $62($0_1) { | |
$0_1 = $0_1 | 0; | |
global$2 = $0_1; | |
} | |
function $63($0_1) { | |
$0_1 = $0_1 | 0; | |
return abort() | 0; | |
} | |
function $64($0_1, $1_1) { | |
$0_1 = $0_1 | 0; | |
$1_1 = $1_1 | 0; | |
return FUNCTION_TABLE[$0_1]($1_1) | 0 | 0; | |
} | |
function $65($0_1, $1_1, $2_1, $3_1) { | |
$0_1 = $0_1 | 0; | |
$1_1 = $1_1 | 0; | |
$2_1 = $2_1 | 0; | |
$3_1 = $3_1 | 0; | |
return FUNCTION_TABLE[$0_1]($1_1, $2_1, $3_1) | 0 | 0; | |
} | |
function $66($0_1, $1_1, $2_1, $2$hi, $3_1) { | |
$0_1 = $0_1 | 0; | |
$1_1 = $1_1 | 0; | |
$2_1 = $2_1 | 0; | |
$2$hi = $2$hi | 0; | |
$3_1 = $3_1 | 0; | |
var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0; | |
i64toi32_i32$0 = $2$hi; | |
i64toi32_i32$0 = FUNCTION_TABLE[$0_1]($1_1, $2_1, i64toi32_i32$0, $3_1) | 0; | |
i64toi32_i32$1 = i64toi32_i32$HIGH_BITS; | |
i64toi32_i32$HIGH_BITS = i64toi32_i32$1; | |
return i64toi32_i32$0 | 0; | |
} | |
function $67($0_1, $1_1, $2_1, $3_1, $4_1, $5_1, $6_1) { | |
$0_1 = $0_1 | 0; | |
$1_1 = $1_1 | 0; | |
$2_1 = +$2_1; | |
$3_1 = $3_1 | 0; | |
$4_1 = $4_1 | 0; | |
$5_1 = $5_1 | 0; | |
$6_1 = $6_1 | 0; | |
return FUNCTION_TABLE[$0_1]($1_1, $2_1, $3_1, $4_1, $5_1, $6_1) | 0 | 0; | |
} | |
function $68($0_1, $1_1, $2_1) { | |
$0_1 = $0_1 | 0; | |
$1_1 = $1_1 | 0; | |
$2_1 = $2_1 | 0; | |
FUNCTION_TABLE[$0_1]($1_1, $2_1); | |
} | |
function $69($0_1, $1_1, $2_1, $3_1, $4_1) { | |
$0_1 = $0_1 | 0; | |
$1_1 = $1_1 | 0; | |
$2_1 = $2_1 | 0; | |
$3_1 = $3_1 | 0; | |
$4_1 = $4_1 | 0; | |
var i64toi32_i32$2 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $17_1 = 0, $18_1 = 0, $6_1 = 0, $7_1 = 0, $9_1 = 0, $9$hi = 0, $12$hi = 0, $5_1 = 0, $5$hi = 0; | |
$6_1 = $0_1; | |
$7_1 = $1_1; | |
i64toi32_i32$0 = 0; | |
$9_1 = $2_1; | |
$9$hi = i64toi32_i32$0; | |
i64toi32_i32$0 = 0; | |
i64toi32_i32$2 = $3_1; | |
i64toi32_i32$1 = 0; | |
i64toi32_i32$3 = 32; | |
i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; | |
if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { | |
i64toi32_i32$1 = i64toi32_i32$2 << i64toi32_i32$4 | 0; | |
$17_1 = 0; | |
} else { | |
i64toi32_i32$1 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$2 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$0 << i64toi32_i32$4 | 0) | 0; | |
$17_1 = i64toi32_i32$2 << i64toi32_i32$4 | 0; | |
} | |
$12$hi = i64toi32_i32$1; | |
i64toi32_i32$1 = $9$hi; | |
i64toi32_i32$0 = $9_1; | |
i64toi32_i32$2 = $12$hi; | |
i64toi32_i32$3 = $17_1; | |
i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0; | |
i64toi32_i32$2 = $66($6_1 | 0, $7_1 | 0, i64toi32_i32$0 | i64toi32_i32$3 | 0 | 0, i64toi32_i32$2 | 0, $4_1 | 0) | 0; | |
i64toi32_i32$0 = i64toi32_i32$HIGH_BITS; | |
$5_1 = i64toi32_i32$2; | |
$5$hi = i64toi32_i32$0; | |
i64toi32_i32$1 = i64toi32_i32$2; | |
i64toi32_i32$2 = 0; | |
i64toi32_i32$3 = 32; | |
i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; | |
if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { | |
i64toi32_i32$2 = 0; | |
$18_1 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0; | |
} else { | |
i64toi32_i32$2 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0; | |
$18_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$0 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$1 >>> i64toi32_i32$4 | 0) | 0; | |
} | |
fimport$4($18_1 | 0); | |
i64toi32_i32$2 = $5$hi; | |
return $5_1 | 0; | |
} | |
function legalfunc$wasm2js_scratch_store_i64($0_1, $0$hi) { | |
$0_1 = $0_1 | 0; | |
$0$hi = $0$hi | 0; | |
var i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $8_1 = 0, $2_1 = 0, i64toi32_i32$2 = 0; | |
i64toi32_i32$0 = $0$hi; | |
$2_1 = $0_1; | |
i64toi32_i32$2 = $0_1; | |
i64toi32_i32$1 = 0; | |
i64toi32_i32$3 = 32; | |
i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; | |
if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { | |
i64toi32_i32$1 = 0; | |
$8_1 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0; | |
} else { | |
i64toi32_i32$1 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0; | |
$8_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$0 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0; | |
} | |
legalimport$wasm2js_scratch_store_i64($2_1 | 0, $8_1 | 0); | |
} | |
function _ZN17compiler_builtins3int3mul3Mul3mul17h070e9a1c69faec5bE(var$0, var$0$hi, var$1, var$1$hi) { | |
var$0 = var$0 | 0; | |
var$0$hi = var$0$hi | 0; | |
var$1 = var$1 | 0; | |
var$1$hi = var$1$hi | 0; | |
var i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, var$2 = 0, i64toi32_i32$2 = 0, i64toi32_i32$3 = 0, var$3 = 0, var$4 = 0, var$5 = 0, $21_1 = 0, $22_1 = 0, var$6 = 0, $24_1 = 0, $17_1 = 0, $18_1 = 0, $23_1 = 0, $29_1 = 0, $45_1 = 0, $56$hi = 0, $62$hi = 0; | |
i64toi32_i32$0 = var$1$hi; | |
var$2 = var$1; | |
var$4 = var$2 >>> 16 | 0; | |
i64toi32_i32$0 = var$0$hi; | |
var$3 = var$0; | |
var$5 = var$3 >>> 16 | 0; | |
$17_1 = Math_imul(var$4, var$5); | |
$18_1 = var$2; | |
i64toi32_i32$2 = var$3; | |
i64toi32_i32$1 = 0; | |
i64toi32_i32$3 = 32; | |
i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; | |
if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { | |
i64toi32_i32$1 = 0; | |
$21_1 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0; | |
} else { | |
i64toi32_i32$1 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0; | |
$21_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$0 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0; | |
} | |
$23_1 = $17_1 + Math_imul($18_1, $21_1) | 0; | |
i64toi32_i32$1 = var$1$hi; | |
i64toi32_i32$0 = var$1; | |
i64toi32_i32$2 = 0; | |
i64toi32_i32$3 = 32; | |
i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; | |
if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { | |
i64toi32_i32$2 = 0; | |
$22_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; | |
} else { | |
i64toi32_i32$2 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; | |
$22_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$0 >>> i64toi32_i32$4 | 0) | 0; | |
} | |
$29_1 = $23_1 + Math_imul($22_1, var$3) | 0; | |
var$2 = var$2 & 65535 | 0; | |
var$3 = var$3 & 65535 | 0; | |
var$6 = Math_imul(var$2, var$3); | |
var$2 = (var$6 >>> 16 | 0) + Math_imul(var$2, var$5) | 0; | |
$45_1 = $29_1 + (var$2 >>> 16 | 0) | 0; | |
var$2 = (var$2 & 65535 | 0) + Math_imul(var$4, var$3) | 0; | |
i64toi32_i32$2 = 0; | |
i64toi32_i32$1 = $45_1 + (var$2 >>> 16 | 0) | 0; | |
i64toi32_i32$0 = 0; | |
i64toi32_i32$3 = 32; | |
i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; | |
if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { | |
i64toi32_i32$0 = i64toi32_i32$1 << i64toi32_i32$4 | 0; | |
$24_1 = 0; | |
} else { | |
i64toi32_i32$0 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$1 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$2 << i64toi32_i32$4 | 0) | 0; | |
$24_1 = i64toi32_i32$1 << i64toi32_i32$4 | 0; | |
} | |
$56$hi = i64toi32_i32$0; | |
i64toi32_i32$0 = 0; | |
$62$hi = i64toi32_i32$0; | |
i64toi32_i32$0 = $56$hi; | |
i64toi32_i32$2 = $24_1; | |
i64toi32_i32$1 = $62$hi; | |
i64toi32_i32$3 = var$2 << 16 | 0 | (var$6 & 65535 | 0) | 0; | |
i64toi32_i32$1 = i64toi32_i32$0 | i64toi32_i32$1 | 0; | |
i64toi32_i32$2 = i64toi32_i32$2 | i64toi32_i32$3 | 0; | |
i64toi32_i32$HIGH_BITS = i64toi32_i32$1; | |
return i64toi32_i32$2 | 0; | |
} | |
function _ZN17compiler_builtins3int4udiv10divmod_u6417h6026910b5ed08e40E(var$0, var$0$hi, var$1, var$1$hi) { | |
var$0 = var$0 | 0; | |
var$0$hi = var$0$hi | 0; | |
var$1 = var$1 | 0; | |
var$1$hi = var$1$hi | 0; | |
var i64toi32_i32$2 = 0, i64toi32_i32$3 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$0 = 0, i64toi32_i32$5 = 0, var$2 = 0, var$3 = 0, var$4 = 0, var$5 = 0, var$5$hi = 0, var$6 = 0, var$6$hi = 0, i64toi32_i32$6 = 0, $37_1 = 0, $38_1 = 0, $39_1 = 0, $40_1 = 0, $41_1 = 0, $42_1 = 0, $43_1 = 0, $44_1 = 0, var$8$hi = 0, $45_1 = 0, $46_1 = 0, $47_1 = 0, $48_1 = 0, var$7$hi = 0, $49_1 = 0, $63$hi = 0, $65_1 = 0, $65$hi = 0, $120$hi = 0, $129$hi = 0, $134$hi = 0, var$8 = 0, $140 = 0, $140$hi = 0, $142$hi = 0, $144 = 0, $144$hi = 0, $151 = 0, $151$hi = 0, $154$hi = 0, var$7 = 0, $165$hi = 0; | |
label$1 : { | |
label$2 : { | |
label$3 : { | |
label$4 : { | |
label$5 : { | |
label$6 : { | |
label$7 : { | |
label$8 : { | |
label$9 : { | |
label$10 : { | |
label$11 : { | |
i64toi32_i32$0 = var$0$hi; | |
i64toi32_i32$2 = var$0; | |
i64toi32_i32$1 = 0; | |
i64toi32_i32$3 = 32; | |
i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; | |
if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { | |
i64toi32_i32$1 = 0; | |
$37_1 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0; | |
} else { | |
i64toi32_i32$1 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0; | |
$37_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$0 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0; | |
} | |
var$2 = $37_1; | |
if (var$2) { | |
block : { | |
i64toi32_i32$1 = var$1$hi; | |
var$3 = var$1; | |
if (!var$3) { | |
break label$11 | |
} | |
i64toi32_i32$1 = var$1$hi; | |
i64toi32_i32$0 = var$1; | |
i64toi32_i32$2 = 0; | |
i64toi32_i32$3 = 32; | |
i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; | |
if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { | |
i64toi32_i32$2 = 0; | |
$38_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; | |
} else { | |
i64toi32_i32$2 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; | |
$38_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$0 >>> i64toi32_i32$4 | 0) | 0; | |
} | |
var$4 = $38_1; | |
if (!var$4) { | |
break label$9 | |
} | |
var$2 = Math_clz32(var$4) - Math_clz32(var$2) | 0; | |
if (var$2 >>> 0 <= 31 >>> 0) { | |
break label$8 | |
} | |
break label$2; | |
} | |
} | |
i64toi32_i32$2 = var$1$hi; | |
i64toi32_i32$1 = var$1; | |
i64toi32_i32$0 = 1; | |
i64toi32_i32$3 = 0; | |
if (i64toi32_i32$2 >>> 0 > i64toi32_i32$0 >>> 0 | ((i64toi32_i32$2 | 0) == (i64toi32_i32$0 | 0) & i64toi32_i32$1 >>> 0 >= i64toi32_i32$3 >>> 0 | 0) | 0) { | |
break label$2 | |
} | |
i64toi32_i32$1 = var$0$hi; | |
var$2 = var$0; | |
i64toi32_i32$1 = var$1$hi; | |
var$3 = var$1; | |
var$2 = (var$2 >>> 0) / (var$3 >>> 0) | 0; | |
i64toi32_i32$1 = 0; | |
legalfunc$wasm2js_scratch_store_i64(var$0 - Math_imul(var$2, var$3) | 0 | 0, i64toi32_i32$1 | 0); | |
i64toi32_i32$1 = 0; | |
i64toi32_i32$2 = var$2; | |
i64toi32_i32$HIGH_BITS = i64toi32_i32$1; | |
return i64toi32_i32$2 | 0; | |
} | |
i64toi32_i32$2 = var$1$hi; | |
i64toi32_i32$3 = var$1; | |
i64toi32_i32$1 = 0; | |
i64toi32_i32$0 = 32; | |
i64toi32_i32$4 = i64toi32_i32$0 & 31 | 0; | |
if (32 >>> 0 <= (i64toi32_i32$0 & 63 | 0) >>> 0) { | |
i64toi32_i32$1 = 0; | |
$39_1 = i64toi32_i32$2 >>> i64toi32_i32$4 | 0; | |
} else { | |
i64toi32_i32$1 = i64toi32_i32$2 >>> i64toi32_i32$4 | 0; | |
$39_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$2 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$3 >>> i64toi32_i32$4 | 0) | 0; | |
} | |
var$3 = $39_1; | |
i64toi32_i32$1 = var$0$hi; | |
if (!var$0) { | |
break label$7 | |
} | |
if (!var$3) { | |
break label$6 | |
} | |
var$4 = var$3 + -1 | 0; | |
if (var$4 & var$3 | 0) { | |
break label$6 | |
} | |
i64toi32_i32$1 = 0; | |
i64toi32_i32$2 = var$4 & var$2 | 0; | |
i64toi32_i32$3 = 0; | |
i64toi32_i32$0 = 32; | |
i64toi32_i32$4 = i64toi32_i32$0 & 31 | 0; | |
if (32 >>> 0 <= (i64toi32_i32$0 & 63 | 0) >>> 0) { | |
i64toi32_i32$3 = i64toi32_i32$2 << i64toi32_i32$4 | 0; | |
$40_1 = 0; | |
} else { | |
i64toi32_i32$3 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$2 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$1 << i64toi32_i32$4 | 0) | 0; | |
$40_1 = i64toi32_i32$2 << i64toi32_i32$4 | 0; | |
} | |
$63$hi = i64toi32_i32$3; | |
i64toi32_i32$3 = var$0$hi; | |
i64toi32_i32$1 = var$0; | |
i64toi32_i32$2 = 0; | |
i64toi32_i32$0 = -1; | |
i64toi32_i32$2 = i64toi32_i32$3 & i64toi32_i32$2 | 0; | |
$65_1 = i64toi32_i32$1 & i64toi32_i32$0 | 0; | |
$65$hi = i64toi32_i32$2; | |
i64toi32_i32$2 = $63$hi; | |
i64toi32_i32$3 = $40_1; | |
i64toi32_i32$1 = $65$hi; | |
i64toi32_i32$0 = $65_1; | |
i64toi32_i32$1 = i64toi32_i32$2 | i64toi32_i32$1 | 0; | |
legalfunc$wasm2js_scratch_store_i64(i64toi32_i32$3 | i64toi32_i32$0 | 0 | 0, i64toi32_i32$1 | 0); | |
i64toi32_i32$1 = 0; | |
i64toi32_i32$3 = var$2 >>> ((__wasm_ctz_i32(var$3 | 0) | 0) & 31 | 0) | 0; | |
i64toi32_i32$HIGH_BITS = i64toi32_i32$1; | |
return i64toi32_i32$3 | 0; | |
} | |
} | |
var$4 = var$3 + -1 | 0; | |
if (!(var$4 & var$3 | 0)) { | |
break label$5 | |
} | |
var$2 = (Math_clz32(var$3) + 33 | 0) - Math_clz32(var$2) | 0; | |
var$3 = 0 - var$2 | 0; | |
break label$3; | |
} | |
var$3 = 63 - var$2 | 0; | |
var$2 = var$2 + 1 | 0; | |
break label$3; | |
} | |
var$4 = (var$2 >>> 0) / (var$3 >>> 0) | 0; | |
i64toi32_i32$3 = 0; | |
i64toi32_i32$2 = var$2 - Math_imul(var$4, var$3) | 0; | |
i64toi32_i32$1 = 0; | |
i64toi32_i32$0 = 32; | |
i64toi32_i32$4 = i64toi32_i32$0 & 31 | 0; | |
if (32 >>> 0 <= (i64toi32_i32$0 & 63 | 0) >>> 0) { | |
i64toi32_i32$1 = i64toi32_i32$2 << i64toi32_i32$4 | 0; | |
$41_1 = 0; | |
} else { | |
i64toi32_i32$1 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$2 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$3 << i64toi32_i32$4 | 0) | 0; | |
$41_1 = i64toi32_i32$2 << i64toi32_i32$4 | 0; | |
} | |
legalfunc$wasm2js_scratch_store_i64($41_1 | 0, i64toi32_i32$1 | 0); | |
i64toi32_i32$1 = 0; | |
i64toi32_i32$2 = var$4; | |
i64toi32_i32$HIGH_BITS = i64toi32_i32$1; | |
return i64toi32_i32$2 | 0; | |
} | |
var$2 = Math_clz32(var$3) - Math_clz32(var$2) | 0; | |
if (var$2 >>> 0 < 31 >>> 0) { | |
break label$4 | |
} | |
break label$2; | |
} | |
i64toi32_i32$2 = var$0$hi; | |
i64toi32_i32$2 = 0; | |
legalfunc$wasm2js_scratch_store_i64(var$4 & var$0 | 0 | 0, i64toi32_i32$2 | 0); | |
if ((var$3 | 0) == (1 | 0)) { | |
break label$1 | |
} | |
i64toi32_i32$2 = var$0$hi; | |
i64toi32_i32$2 = 0; | |
$120$hi = i64toi32_i32$2; | |
i64toi32_i32$2 = var$0$hi; | |
i64toi32_i32$3 = var$0; | |
i64toi32_i32$1 = $120$hi; | |
i64toi32_i32$0 = __wasm_ctz_i32(var$3 | 0) | 0; | |
i64toi32_i32$4 = i64toi32_i32$0 & 31 | 0; | |
if (32 >>> 0 <= (i64toi32_i32$0 & 63 | 0) >>> 0) { | |
i64toi32_i32$1 = 0; | |
$42_1 = i64toi32_i32$2 >>> i64toi32_i32$4 | 0; | |
} else { | |
i64toi32_i32$1 = i64toi32_i32$2 >>> i64toi32_i32$4 | 0; | |
$42_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$2 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$3 >>> i64toi32_i32$4 | 0) | 0; | |
} | |
i64toi32_i32$3 = $42_1; | |
i64toi32_i32$HIGH_BITS = i64toi32_i32$1; | |
return i64toi32_i32$3 | 0; | |
} | |
var$3 = 63 - var$2 | 0; | |
var$2 = var$2 + 1 | 0; | |
} | |
i64toi32_i32$3 = var$0$hi; | |
i64toi32_i32$3 = 0; | |
$129$hi = i64toi32_i32$3; | |
i64toi32_i32$3 = var$0$hi; | |
i64toi32_i32$2 = var$0; | |
i64toi32_i32$1 = $129$hi; | |
i64toi32_i32$0 = var$2 & 63 | 0; | |
i64toi32_i32$4 = i64toi32_i32$0 & 31 | 0; | |
if (32 >>> 0 <= (i64toi32_i32$0 & 63 | 0) >>> 0) { | |
i64toi32_i32$1 = 0; | |
$43_1 = i64toi32_i32$3 >>> i64toi32_i32$4 | 0; | |
} else { | |
i64toi32_i32$1 = i64toi32_i32$3 >>> i64toi32_i32$4 | 0; | |
$43_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$3 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0; | |
} | |
var$5 = $43_1; | |
var$5$hi = i64toi32_i32$1; | |
i64toi32_i32$1 = var$0$hi; | |
i64toi32_i32$1 = 0; | |
$134$hi = i64toi32_i32$1; | |
i64toi32_i32$1 = var$0$hi; | |
i64toi32_i32$3 = var$0; | |
i64toi32_i32$2 = $134$hi; | |
i64toi32_i32$0 = var$3 & 63 | 0; | |
i64toi32_i32$4 = i64toi32_i32$0 & 31 | 0; | |
if (32 >>> 0 <= (i64toi32_i32$0 & 63 | 0) >>> 0) { | |
i64toi32_i32$2 = i64toi32_i32$3 << i64toi32_i32$4 | 0; | |
$44_1 = 0; | |
} else { | |
i64toi32_i32$2 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$3 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$1 << i64toi32_i32$4 | 0) | 0; | |
$44_1 = i64toi32_i32$3 << i64toi32_i32$4 | 0; | |
} | |
var$0 = $44_1; | |
var$0$hi = i64toi32_i32$2; | |
label$13 : { | |
if (var$2) { | |
block3 : { | |
i64toi32_i32$2 = var$1$hi; | |
i64toi32_i32$1 = var$1; | |
i64toi32_i32$3 = -1; | |
i64toi32_i32$0 = -1; | |
i64toi32_i32$4 = i64toi32_i32$1 + i64toi32_i32$0 | 0; | |
i64toi32_i32$5 = i64toi32_i32$2 + i64toi32_i32$3 | 0; | |
if (i64toi32_i32$4 >>> 0 < i64toi32_i32$0 >>> 0) { | |
i64toi32_i32$5 = i64toi32_i32$5 + 1 | 0 | |
} | |
var$8 = i64toi32_i32$4; | |
var$8$hi = i64toi32_i32$5; | |
label$15 : while (1) { | |
i64toi32_i32$5 = var$5$hi; | |
i64toi32_i32$2 = var$5; | |
i64toi32_i32$1 = 0; | |
i64toi32_i32$0 = 1; | |
i64toi32_i32$3 = i64toi32_i32$0 & 31 | 0; | |
if (32 >>> 0 <= (i64toi32_i32$0 & 63 | 0) >>> 0) { | |
i64toi32_i32$1 = i64toi32_i32$2 << i64toi32_i32$3 | 0; | |
$45_1 = 0; | |
} else { | |
i64toi32_i32$1 = ((1 << i64toi32_i32$3 | 0) - 1 | 0) & (i64toi32_i32$2 >>> (32 - i64toi32_i32$3 | 0) | 0) | 0 | (i64toi32_i32$5 << i64toi32_i32$3 | 0) | 0; | |
$45_1 = i64toi32_i32$2 << i64toi32_i32$3 | 0; | |
} | |
$140 = $45_1; | |
$140$hi = i64toi32_i32$1; | |
i64toi32_i32$1 = var$0$hi; | |
i64toi32_i32$5 = var$0; | |
i64toi32_i32$2 = 0; | |
i64toi32_i32$0 = 63; | |
i64toi32_i32$3 = i64toi32_i32$0 & 31 | 0; | |
if (32 >>> 0 <= (i64toi32_i32$0 & 63 | 0) >>> 0) { | |
i64toi32_i32$2 = 0; | |
$46_1 = i64toi32_i32$1 >>> i64toi32_i32$3 | 0; | |
} else { | |
i64toi32_i32$2 = i64toi32_i32$1 >>> i64toi32_i32$3 | 0; | |
$46_1 = (((1 << i64toi32_i32$3 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$3 | 0) | 0 | (i64toi32_i32$5 >>> i64toi32_i32$3 | 0) | 0; | |
} | |
$142$hi = i64toi32_i32$2; | |
i64toi32_i32$2 = $140$hi; | |
i64toi32_i32$1 = $140; | |
i64toi32_i32$5 = $142$hi; | |
i64toi32_i32$0 = $46_1; | |
i64toi32_i32$5 = i64toi32_i32$2 | i64toi32_i32$5 | 0; | |
var$5 = i64toi32_i32$1 | i64toi32_i32$0 | 0; | |
var$5$hi = i64toi32_i32$5; | |
$144 = var$5; | |
$144$hi = i64toi32_i32$5; | |
i64toi32_i32$5 = var$8$hi; | |
i64toi32_i32$5 = var$5$hi; | |
i64toi32_i32$5 = var$8$hi; | |
i64toi32_i32$2 = var$8; | |
i64toi32_i32$1 = var$5$hi; | |
i64toi32_i32$0 = var$5; | |
i64toi32_i32$3 = i64toi32_i32$2 - i64toi32_i32$0 | 0; | |
i64toi32_i32$6 = i64toi32_i32$2 >>> 0 < i64toi32_i32$0 >>> 0; | |
i64toi32_i32$4 = i64toi32_i32$6 + i64toi32_i32$1 | 0; | |
i64toi32_i32$4 = i64toi32_i32$5 - i64toi32_i32$4 | 0; | |
i64toi32_i32$5 = i64toi32_i32$3; | |
i64toi32_i32$2 = 0; | |
i64toi32_i32$0 = 63; | |
i64toi32_i32$1 = i64toi32_i32$0 & 31 | 0; | |
if (32 >>> 0 <= (i64toi32_i32$0 & 63 | 0) >>> 0) { | |
i64toi32_i32$2 = i64toi32_i32$4 >> 31 | 0; | |
$47_1 = i64toi32_i32$4 >> i64toi32_i32$1 | 0; | |
} else { | |
i64toi32_i32$2 = i64toi32_i32$4 >> i64toi32_i32$1 | 0; | |
$47_1 = (((1 << i64toi32_i32$1 | 0) - 1 | 0) & i64toi32_i32$4 | 0) << (32 - i64toi32_i32$1 | 0) | 0 | (i64toi32_i32$5 >>> i64toi32_i32$1 | 0) | 0; | |
} | |
var$6 = $47_1; | |
var$6$hi = i64toi32_i32$2; | |
i64toi32_i32$2 = var$1$hi; | |
i64toi32_i32$2 = var$6$hi; | |
i64toi32_i32$4 = var$6; | |
i64toi32_i32$5 = var$1$hi; | |
i64toi32_i32$0 = var$1; | |
i64toi32_i32$5 = i64toi32_i32$2 & i64toi32_i32$5 | 0; | |
$151 = i64toi32_i32$4 & i64toi32_i32$0 | 0; | |
$151$hi = i64toi32_i32$5; | |
i64toi32_i32$5 = $144$hi; | |
i64toi32_i32$2 = $144; | |
i64toi32_i32$4 = $151$hi; | |
i64toi32_i32$0 = $151; | |
i64toi32_i32$1 = i64toi32_i32$2 - i64toi32_i32$0 | 0; | |
i64toi32_i32$6 = i64toi32_i32$2 >>> 0 < i64toi32_i32$0 >>> 0; | |
i64toi32_i32$3 = i64toi32_i32$6 + i64toi32_i32$4 | 0; | |
i64toi32_i32$3 = i64toi32_i32$5 - i64toi32_i32$3 | 0; | |
var$5 = i64toi32_i32$1; | |
var$5$hi = i64toi32_i32$3; | |
i64toi32_i32$3 = var$0$hi; | |
i64toi32_i32$5 = var$0; | |
i64toi32_i32$2 = 0; | |
i64toi32_i32$0 = 1; | |
i64toi32_i32$4 = i64toi32_i32$0 & 31 | 0; | |
if (32 >>> 0 <= (i64toi32_i32$0 & 63 | 0) >>> 0) { | |
i64toi32_i32$2 = i64toi32_i32$5 << i64toi32_i32$4 | 0; | |
$48_1 = 0; | |
} else { | |
i64toi32_i32$2 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$5 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$3 << i64toi32_i32$4 | 0) | 0; | |
$48_1 = i64toi32_i32$5 << i64toi32_i32$4 | 0; | |
} | |
$154$hi = i64toi32_i32$2; | |
i64toi32_i32$2 = var$7$hi; | |
i64toi32_i32$2 = $154$hi; | |
i64toi32_i32$3 = $48_1; | |
i64toi32_i32$5 = var$7$hi; | |
i64toi32_i32$0 = var$7; | |
i64toi32_i32$5 = i64toi32_i32$2 | i64toi32_i32$5 | 0; | |
var$0 = i64toi32_i32$3 | i64toi32_i32$0 | 0; | |
var$0$hi = i64toi32_i32$5; | |
i64toi32_i32$5 = var$6$hi; | |
i64toi32_i32$2 = var$6; | |
i64toi32_i32$3 = 0; | |
i64toi32_i32$0 = 1; | |
i64toi32_i32$3 = i64toi32_i32$5 & i64toi32_i32$3 | 0; | |
var$6 = i64toi32_i32$2 & i64toi32_i32$0 | 0; | |
var$6$hi = i64toi32_i32$3; | |
var$7 = var$6; | |
var$7$hi = i64toi32_i32$3; | |
var$2 = var$2 + -1 | 0; | |
if (var$2) { | |
continue label$15 | |
} | |
break label$15; | |
}; | |
break label$13; | |
} | |
} | |
} | |
i64toi32_i32$3 = var$5$hi; | |
legalfunc$wasm2js_scratch_store_i64(var$5 | 0, i64toi32_i32$3 | 0); | |
i64toi32_i32$3 = var$0$hi; | |
i64toi32_i32$5 = var$0; | |
i64toi32_i32$2 = 0; | |
i64toi32_i32$0 = 1; | |
i64toi32_i32$4 = i64toi32_i32$0 & 31 | 0; | |
if (32 >>> 0 <= (i64toi32_i32$0 & 63 | 0) >>> 0) { | |
i64toi32_i32$2 = i64toi32_i32$5 << i64toi32_i32$4 | 0; | |
$49_1 = 0; | |
} else { | |
i64toi32_i32$2 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$5 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$3 << i64toi32_i32$4 | 0) | 0; | |
$49_1 = i64toi32_i32$5 << i64toi32_i32$4 | 0; | |
} | |
$165$hi = i64toi32_i32$2; | |
i64toi32_i32$2 = var$6$hi; | |
i64toi32_i32$2 = $165$hi; | |
i64toi32_i32$3 = $49_1; | |
i64toi32_i32$5 = var$6$hi; | |
i64toi32_i32$0 = var$6; | |
i64toi32_i32$5 = i64toi32_i32$2 | i64toi32_i32$5 | 0; | |
i64toi32_i32$3 = i64toi32_i32$3 | i64toi32_i32$0 | 0; | |
i64toi32_i32$HIGH_BITS = i64toi32_i32$5; | |
return i64toi32_i32$3 | 0; | |
} | |
i64toi32_i32$3 = var$0$hi; | |
legalfunc$wasm2js_scratch_store_i64(var$0 | 0, i64toi32_i32$3 | 0); | |
i64toi32_i32$3 = 0; | |
var$0 = 0; | |
var$0$hi = i64toi32_i32$3; | |
} | |
i64toi32_i32$3 = var$0$hi; | |
i64toi32_i32$5 = var$0; | |
i64toi32_i32$HIGH_BITS = i64toi32_i32$3; | |
return i64toi32_i32$5 | 0; | |
} | |
function __wasm_i64_mul(var$0, var$0$hi, var$1, var$1$hi) { | |
var$0 = var$0 | 0; | |
var$0$hi = var$0$hi | 0; | |
var$1 = var$1 | 0; | |
var$1$hi = var$1$hi | 0; | |
var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0; | |
i64toi32_i32$0 = var$0$hi; | |
i64toi32_i32$0 = var$1$hi; | |
i64toi32_i32$0 = var$0$hi; | |
i64toi32_i32$1 = var$1$hi; | |
i64toi32_i32$1 = _ZN17compiler_builtins3int3mul3Mul3mul17h070e9a1c69faec5bE(var$0 | 0, i64toi32_i32$0 | 0, var$1 | 0, i64toi32_i32$1 | 0) | 0; | |
i64toi32_i32$0 = i64toi32_i32$HIGH_BITS; | |
i64toi32_i32$HIGH_BITS = i64toi32_i32$0; | |
return i64toi32_i32$1 | 0; | |
} | |
function __wasm_i64_udiv(var$0, var$0$hi, var$1, var$1$hi) { | |
var$0 = var$0 | 0; | |
var$0$hi = var$0$hi | 0; | |
var$1 = var$1 | 0; | |
var$1$hi = var$1$hi | 0; | |
var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0; | |
i64toi32_i32$0 = var$0$hi; | |
i64toi32_i32$0 = var$1$hi; | |
i64toi32_i32$0 = var$0$hi; | |
i64toi32_i32$1 = var$1$hi; | |
i64toi32_i32$1 = _ZN17compiler_builtins3int4udiv10divmod_u6417h6026910b5ed08e40E(var$0 | 0, i64toi32_i32$0 | 0, var$1 | 0, i64toi32_i32$1 | 0) | 0; | |
i64toi32_i32$0 = i64toi32_i32$HIGH_BITS; | |
i64toi32_i32$HIGH_BITS = i64toi32_i32$0; | |
return i64toi32_i32$1 | 0; | |
} | |
function __wasm_rotl_i32(var$0, var$1) { | |
var$0 = var$0 | 0; | |
var$1 = var$1 | 0; | |
var var$2 = 0; | |
var$2 = var$1 & 31 | 0; | |
var$1 = (0 - var$1 | 0) & 31 | 0; | |
return ((-1 >>> var$2 | 0) & var$0 | 0) << var$2 | 0 | (((-1 << var$1 | 0) & var$0 | 0) >>> var$1 | 0) | 0 | 0; | |
} | |
function __wasm_ctz_i32(var$0) { | |
var$0 = var$0 | 0; | |
if (var$0) { | |
return 31 - Math_clz32((var$0 + -1 | 0) ^ var$0 | 0) | 0 | 0 | |
} | |
return 32 | 0; | |
} | |
// EMSCRIPTEN_END_FUNCS | |
; | |
FUNCTION_TABLE[1] = $6; | |
FUNCTION_TABLE[2] = $8; | |
FUNCTION_TABLE[3] = $7; | |
FUNCTION_TABLE[4] = $48; | |
FUNCTION_TABLE[5] = $49; | |
function __wasm_memory_size() { | |
return buffer.byteLength / 65536 | 0; | |
} | |
return { | |
"__wasm_call_ctors": $1, | |
"main": $3, | |
"__errno_location": $9, | |
"fflush": $60, | |
"stackSave": $57, | |
"stackRestore": $58, | |
"stackAlloc": $59, | |
"malloc": $55, | |
"free": $56, | |
"__set_stack_limit": $62, | |
"__growWasmMemory": $63, | |
"dynCall_ii": $64, | |
"dynCall_iiii": $65, | |
"dynCall_jiji": $69, | |
"dynCall_iidiiii": $67, | |
"dynCall_vii": $68 | |
}; | |
} | |
for (var base64ReverseLookup = new Uint8Array(123/*'z'+1*/), i = 25; i >= 0; --i) { | |
base64ReverseLookup[48+i] = 52+i; // '0-9' | |
base64ReverseLookup[65+i] = i; // 'A-Z' | |
base64ReverseLookup[97+i] = 26+i; // 'a-z' | |
} | |
base64ReverseLookup[43] = 62; // '+' | |
base64ReverseLookup[47] = 63; // '/' | |
/** @noinline Inlining this function would mean expanding the base64 string 4x times in the source code, which Closure seems to be happy to do. */ | |
function base64DecodeToExistingUint8Array(uint8Array, offset, b64) { | |
var b1, b2, i = 0, j = offset, bLength = b64.length, end = offset + (bLength*3>>2) - (b64[bLength-2] == '=') - (b64[bLength-1] == '='); | |
for (; i < bLength; i += 4) { | |
b1 = base64ReverseLookup[b64.charCodeAt(i+1)]; | |
b2 = base64ReverseLookup[b64.charCodeAt(i+2)]; | |
uint8Array[j++] = base64ReverseLookup[b64.charCodeAt(i)] << 2 | b1 >> 4; | |
if (j < end) uint8Array[j++] = b1 << 4 | b2 >> 2; | |
if (j < end) uint8Array[j++] = b2 << 6 | base64ReverseLookup[b64.charCodeAt(i+3)]; | |
} | |
} | |
var bufferView = new Uint8Array(wasmMemory.buffer); | |
base64DecodeToExistingUint8Array(bufferView, 1024, "G1sySgAuLC1+Ojs9ISojJEAAG1tIAAAAaBEAAAAAAAADAAAABAAAAAQAAAAGAAAAg/miAERObgD8KRUA0VcnAN009QBi28AAPJmVAEGQQwBjUf4Au96rALdhxQA6biQA0k1CAEkG4AAJ6i4AHJLRAOsd/gApsRwA6D6nAPU1ggBEuy4AnOmEALQmcABBfl8A1pE5AFODOQCc9DkAi1+EACj5vQD4HzsA3v+XAA+YBQARL+8AClqLAG0fbQDPfjYACcsnAEZPtwCeZj8ALepfALondQDl68cAPXvxAPc5BwCSUooA+2vqAB+xXwAIXY0AMANWAHv8RgDwq2sAILzPADb0mgDjqR0AXmGRAAgb5gCFmWUAoBRfAI1AaACA2P8AJ3NNAAYGMQDKVhUAyahzAHviYABrjMAAGcRHAM1nwwAJ6NwAWYMqAIt2xACmHJYARK/dABlX0QClPgUABQf/ADN+PwDCMugAmE/eALt9MgAmPcMAHmvvAJ/4XgA1HzoAf/LKAPGHHQB8kCEAaiR8ANVu+gAwLXcAFTtDALUUxgDDGZ0ArcTCACxNQQAMAF0Ahn1GAONxLQCbxpoAM2IAALTSfAC0p5cAN1XVANc+9gCjEBgATXb8AGSdKgBw16sAY3z4AHqwVwAXFecAwElWADvW2QCnhDgAJCPLANaKdwBaVCMAAB+5APEKGwAZzt8AnzH/AGYeagCZV2EArPtHAH5/2AAiZbcAMuiJAOa/YADvxM0AbDYJAF0/1AAW3tcAWDveAN6bkgDSIigAKIboAOJYTQDGyjIACOMWAOB9ywAXwFAA8x2nABjgWwAuEzQAgxJiAINIAQD1jlsArbB/AB7p8gBISkMAEGfTAKrd2ACuX0IAamHOAAoopADTmbQABqbyAFx3fwCjwoMAYTyIAIpzeACvjFoAb9e9AC2mYwD0v8sAjYHvACbBZwBVykUAytk2ACio0gDCYY0AEsl3AAQmFAASRpsAxFnEAMjFRABNspEAABfzANRDrQApSeUA/dUQAAC+/AAelMwAcM7uABM+9QDs8YAAs+fDAMf4KACTBZQAwXE+AC4JswALRfMAiBKcAKsgewAutZ8AR5LCAHsyLwAMVW0AcqeQAGvnHwAxy5YAeRZKAEF54gD034kA6JSXAOLmhACZMZcAiO1rAF9fNgC7/Q4ASJq0AGekbABxckIAjV0yAJ8VuAC85QkAjTElAPd0OQAwBRwADQwBAEsIaAAs7lgAR6qQAHTnAgC91iQA932mAG5IcgCfFu8AjpSmALSR9gDRU1EAzwryACCYMwD1S34AsmNoAN0+XwBAXQMAhYl/AFVSKQA3ZMAAbdgQADJIMgBbTHUATnHUAEVUbgALCcEAKvVpABRm1QAnB50AXQRQALQ72wDqdsUAh/kXAElrfQAdJ7oAlmkpAMbMrACtFFQAkOJqAIjZiQAsclAABKS+AHcHlADzMHAAAPwnAOpxqABmwkkAZOA9AJfdgwCjP5cAQ5T9AA2GjAAxQd4AkjmdAN1wjAAXt+cACN87ABU3KwBcgKAAWoCTABARkgAP6NgAbICvANv/SwA4kA8AWRh2AGKlFQBhy7sAx4m5ABBAvQDS8gQASXUnAOu29gDbIrsAChSqAIkmLwBkg3YACTszAA6UGgBROqoAHaPCAK/trgBcJhIAbcJNAC16nADAVpcAAz+DAAnw9gArQIwAbTGZADm0BwAMIBUA2MNbAPWSxADGrUsATsqlAKc3zQDmqTYAq5KUAN1CaAAZY94AdozvAGiLUgD82zcArqGrAN8VMQAArqEADPvaAGRNZgDtBbcAKWUwAFdWvwBH/zoAavm5AHW+8wAok98Aq4AwAGaM9gAEyxUA+iIGANnkHQA9s6QAVxuPADbNCQBOQukAE76kADMjtQDwqhoAT2WoANLBpQALPw8AW3jNACP5dgB7iwQAiRdyAMamUwBvbuIA7+sAAJtKWADE2rcAqma6AHbPzwDRAh0AsfEtAIyZwQDDrXcAhkjaAPddoADGgPQArPAvAN3smgA/XLwA0N5tAJDHHwAq27YAoyU6AACvmgCtU5MAtlcEACkttABLgH4A2genAHaqDgB7WaEAFhIqANy3LQD65f0Aidv+AIm+/QDkdmwABqn8AD6AcACFbhUA/Yf/ACg+BwBhZzMAKhiGAE296gCz568Aj21uAJVnOQAxv1sAhNdIADDfFgDHLUMAJWE1AMlwzgAwy7gAv2z9AKQAogAFbOQAWt2gACFvRwBiEtIAuVyEAHBhSQBrVuAAmVIBAFBVNwAe1bcAM/HEABNuXwBdMOQAhS6pAB2ywwChMjYACLekAOqx1AAW9yEAj2nkACf/dwAMA4AAjUAtAE/NoAAgpZkAs6LTAC9dCgC0+UIAEdrLAH2+0ACb28EAqxe9AMqigQAIalwALlUXACcAVQB/FPAA4QeGABQLZACWQY0Ah77eANr9KgBrJbYAe4k0AAXz/gC5v54AaGpPAEoqqABPxFoALfi8ANdamAD0x5UADU2NACA6pgCkV18AFD+xAIA4lQDMIAEAcd2GAMnetgC/YPUATWURAAEHawCMsKwAssDQAFFVSAAe+w4AlXLDAKMGOwDAQDUABtx7AOBFzABOKfoA1srIAOjzQQB8ZN4Am2TYANm+MQCkl8MAd1jUAGnjxQDw2hMAujo8AEYYRgBVdV8A0r31AG6SxgCsLl0ADkTtABw+QgBhxIcAKf3pAOfW8wAifMoAb5E1AAjgxQD/140AbmriALD9xgCTCMEAfF10AGutsgDNbp0APnJ7AMYRagD3z6kAKXPfALXJugC3AFEA4rINAHS6JADlfWAAdNiKAA0VLACBGAwAfmaUAAEpFgCfenYA/f2+AFZF7wDZfjYA7NkTAIu6uQDEl/wAMagnAPFuwwCUxTYA2KhWALSotQDPzA4AEoktAG9XNAAsVokAmc7jANYguQBrXqoAPiqcABFfzAD9C0oA4fT7AI47bQDihiwA6dSEAPy0qQDv7tEALjXJAC85YQA4IUQAG9nIAIH8CgD7SmoALxzYAFO0hABOmYwAVCLMACpV3ADAxtYACxmWABpwuABplWQAJlpgAD9S7gB/EQ8A9LURAPzL9QA0vC0ANLzuAOhdzADdXmAAZ46bAJIz7wDJF7gAYVibAOFXvABRg8YA2D4QAN1xSAAtHN0ArxihACEsRgBZ89cA2XqYAJ5UwABPhvoAVgb8AOV5rgCJIjYAOK0iAGeT3ABV6KoAgiY4AMrnmwBRDaQAmTOxAKnXDgBpBUgAZbLwAH+IpwCITJcA+dE2ACGSswB7gkoAmM8hAECf3ADcR1UA4XQ6AGfrQgD+nd8AXtRfAHtnpAC6rHoAVfaiACuIIwBBulUAWW4IACEqhgA5R4MAiePmAOWe1ABJ+0AA/1bpABwPygDFWYoAlPorANPBxQAPxc8A21quAEfFhgCFQ2IAIYY7ACx5lAAQYYcAKkx7AIAsGgBDvxIAiCaQAHg8iQCoxOQA5dt7AMQ6wgAm9OoA92eKAA2SvwBloysAPZOxAL18CwCkUdwAJ91jAGnh3QCalBkAqCmVAGjOKAAJ7bQARJ8gAE6YygBwgmMAfnwjAA+5MgCn9Y4AFFbnACHxCAC1nSoAb35NAKUZUQC1+asAgt/WAJbdYQAWNgIAxDqfAIOioQBy7W0AOY16AIK4qQBrMlwARidbAAA07QDSAHcA/PRVAAFZTQDgcYAAAAAAAAAAAAAAAABA+yH5PwAAAAAtRHQ+AAAAgJhG+DwAAABgUcx4OwAAAICDG/A5AAAAQCAlejgAAACAIoLjNgAAAAAd82k1LSsgICAwWDB4AChudWxsKQAAAAAAAAAAAAAAAAAAAAARAAoAERERAAAAAAUAAAAAAAAJAAAAAAsAAAAAAAAAABEADwoREREDCgcAAQAJCwsAAAkGCwAACwAGEQAAABEREQAAAAAAAAAAAAAAAAAAAAALAAAAAAAAAAARAAoKERERAAoAAAIACQsAAAAJAAsAAAsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAADAAAAAAMAAAAAAkMAAAAAAAMAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAA0AAAAEDQAAAAAJDgAAAAAADgAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAPAAAAAA8AAAAACRAAAAAAABAAABAAABIAAAASEhIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEgAAABISEgAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsAAAAAAAAAAAAAAAoAAAAACgAAAAAJCwAAAAAACwAACwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAAAAwAAAAACQwAAAAAAAwAAAwAADAxMjM0NTY3ODlBQkNERUYtMFgrMFggMFgtMHgrMHggMHgAaW5mAElORgBuYW4ATkFOAC4A"); | |
base64DecodeToExistingUint8Array(bufferView, 4456, "BQAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAMAAAD4EgAAAAQAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAACv////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaBEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMBcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="); | |
base64DecodeToExistingUint8Array(bufferView, 4848, "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"); | |
return asmFunc({ | |
'Int8Array': Int8Array, | |
'Int16Array': Int16Array, | |
'Int32Array': Int32Array, | |
'Uint8Array': Uint8Array, | |
'Uint16Array': Uint16Array, | |
'Uint32Array': Uint32Array, | |
'Float32Array': Float32Array, | |
'Float64Array': Float64Array, | |
'NaN': NaN, | |
'Infinity': Infinity, | |
'Math': Math | |
}, | |
asmLibraryArg, | |
wasmMemory.buffer | |
) | |
} | |
)(asmLibraryArg, wasmMemory, wasmTable); | |
return { | |
'exports': exports | |
}; | |
}, | |
instantiate: /** @suppress{checkTypes} */ function(binary, info) { | |
return { | |
then: function(ok) { | |
ok({ | |
'instance': new WebAssembly.Instance(new WebAssembly.Module(binary)) | |
}); | |
// Emulate a simple WebAssembly.instantiate(..).then(()=>{}).catch(()=>{}) syntax. | |
return { catch: function() {} }; | |
} | |
}; | |
}, | |
RuntimeError: Error | |
}; | |
// We don't need to actually download a wasm binary, mark it as present but empty. | |
wasmBinary = []; | |
if (typeof WebAssembly !== 'object') { | |
abort('No WebAssembly support found. Build with -s WASM=0 to target JavaScript instead.'); | |
} | |
// In MINIMAL_RUNTIME, setValue() and getValue() are only available when building with safe heap enabled, for heap safety checking. | |
// In traditional runtime, setValue() and getValue() are always available (although their use is highly discouraged due to perf penalties) | |
/** @param {number} ptr | |
@param {number} value | |
@param {string} type | |
@param {number|boolean=} noSafe */ | |
function setValue(ptr, value, type, noSafe) { | |
type = type || 'i8'; | |
if (type.charAt(type.length-1) === '*') type = 'i32'; // pointers are 32-bit | |
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.0 ? (tempDouble > 0.0 ? ((Math_min((+(Math_floor((tempDouble)/4294967296.0))), 4294967295.0))|0)>>>0 : (~~((+(Math_ceil((tempDouble - +(((~~(tempDouble)))>>>0))/4294967296.0)))))>>>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); | |
} | |
} | |
/** @param {number} ptr | |
@param {string} type | |
@param {number|boolean=} noSafe */ | |
function getValue(ptr, type, noSafe) { | |
type = type || 'i8'; | |
if (type.charAt(type.length-1) === '*') type = 'i32'; // pointers are 32-bit | |
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 getValue: ' + type); | |
} | |
return null; | |
} | |
// Wasm globals | |
var wasmMemory; | |
// In fastcomp asm.js, we don't need a wasm Table at all. | |
// In the wasm backend, we polyfill the WebAssembly object, | |
// so this creates a (non-native-wasm) table for us. | |
var wasmTable = new WebAssembly.Table({ | |
'initial': 6, | |
'maximum': 6 + 0, | |
'element': 'anyfunc' | |
}); | |
//======================================== | |
// Runtime essentials | |
//======================================== | |
// whether we are quitting the application. no code should run after this. | |
// set in exit() and abort() | |
var ABORT = false; | |
// set by exit() and abort(). Passed to 'onExit' handler. | |
// NOTE: This is also used as the process return code code in shell environments | |
// but only when noExitRuntime is false. | |
var EXITSTATUS = 0; | |
/** @type {function(*, string=)} */ | |
function assert(condition, text) { | |
if (!condition) { | |
abort('Assertion failed: ' + text); | |
} | |
} | |
// Returns the C function with a specified identifier (for C++, you need to do manual name mangling) | |
function getCFunc(ident) { | |
var func = Module['_' + ident]; // closure exported function | |
assert(func, 'Cannot call unknown function ' + ident + ', make sure it is exported'); | |
return func; | |
} | |
// C calling interface. | |
/** @param {string|null=} returnType | |
@param {Array=} argTypes | |
@param {Arguments|Array=} args | |
@param {Object=} opts */ | |
function ccall(ident, returnType, argTypes, args, opts) { | |
// For fast lookup of conversion functions | |
var toC = { | |
'string': function(str) { | |
var ret = 0; | |
if (str !== null && str !== undefined && str !== 0) { // null string | |
// at most 4 bytes per UTF-8 code point, +1 for the trailing '\0' | |
var len = (str.length << 2) + 1; | |
ret = stackAlloc(len); | |
stringToUTF8(str, ret, len); | |
} | |
return ret; | |
}, | |
'array': function(arr) { | |
var ret = stackAlloc(arr.length); | |
writeArrayToMemory(arr, ret); | |
return ret; | |
} | |
}; | |
function convertReturnValue(ret) { | |
if (returnType === 'string') return UTF8ToString(ret); | |
if (returnType === 'boolean') return Boolean(ret); | |
return ret; | |
} | |
var func = getCFunc(ident); | |
var cArgs = []; | |
var stack = 0; | |
assert(returnType !== 'array', 'Return type should not be "array".'); | |
if (args) { | |
for (var i = 0; i < args.length; i++) { | |
var converter = toC[argTypes[i]]; | |
if (converter) { | |
if (stack === 0) stack = stackSave(); | |
cArgs[i] = converter(args[i]); | |
} else { | |
cArgs[i] = args[i]; | |
} | |
} | |
} | |
var ret = func.apply(null, cArgs); | |
ret = convertReturnValue(ret); | |
if (stack !== 0) stackRestore(stack); | |
return ret; | |
} | |
/** @param {string=} returnType | |
@param {Array=} argTypes | |
@param {Object=} opts */ | |
function cwrap(ident, returnType, argTypes, opts) { | |
return function() { | |
return ccall(ident, returnType, argTypes, arguments, opts); | |
} | |
} | |
var ALLOC_NORMAL = 0; // Tries to use _malloc() | |
var ALLOC_STACK = 1; // Lives for the duration of the current function call | |
var ALLOC_DYNAMIC = 2; // Cannot be freed except through sbrk | |
var ALLOC_NONE = 3; // Do not allocate | |
// allocate(): This is for internal use. You can use it yourself as well, but the interface | |
// is a little tricky (see docs right below). The reason is that it is optimized | |
// for multiple syntaxes to save space in generated code. So you should | |
// normally not use allocate(), and instead allocate memory using _malloc(), | |
// initialize it with setValue(), and so forth. | |
// @slab: An array of data, or a number. If a number, then the size of the block to allocate, | |
// in *bytes* (note that this is sometimes confusing: the next parameter does not | |
// affect this!) | |
// @types: Either an array of types, one for each byte (or 0 if no type at that position), | |
// or a single type which is used for the entire block. This only matters if there | |
// is initial data - if @slab is a number, then this does not matter at all and is | |
// ignored. | |
// @allocator: How to allocate memory, see ALLOC_* | |
/** @type {function((TypedArray|Array<number>|number), string, number, number=)} */ | |
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 = [_malloc, | |
stackAlloc, | |
dynamicAlloc][allocator](Math.max(size, singleType ? 1 : types.length)); | |
} | |
if (zeroinit) { | |
var stop; | |
ptr = ret; | |
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(/** @type {!Uint8Array} */ (slab), ret); | |
} else { | |
HEAPU8.set(new Uint8Array(slab), ret); | |
} | |
return ret; | |
} | |
var i = 0, type, typeSize, previousType; | |
while (i < size) { | |
var curr = slab[i]; | |
type = singleType || types[i]; | |
if (type === 0) { | |
i++; | |
continue; | |
} | |
assert(type, 'Must know what type to store in allocate!'); | |
if (type == 'i64') type = 'i32'; // special case: we have one i32 here, and one i32 later | |
setValue(ret+i, curr, type); | |
// no need to look up size unless type changes, so cache it | |
if (previousType !== type) { | |
typeSize = getNativeTypeSize(type); | |
previousType = type; | |
} | |
i += typeSize; | |
} | |
return ret; | |
} | |
// Allocate memory during any stage of startup - static memory early on, dynamic memory later, malloc when ready | |
function getMemory(size) { | |
if (!runtimeInitialized) return dynamicAlloc(size); | |
return _malloc(size); | |
} | |
// runtime_strings.js: Strings related runtime functions that are part of both MINIMAL_RUNTIME and regular runtime. | |
// Given a pointer 'ptr' to a null-terminated UTF8-encoded string in the given array that contains uint8 values, returns | |
// a copy of that string as a Javascript String object. | |
var UTF8Decoder = typeof TextDecoder !== 'undefined' ? new TextDecoder('utf8') : undefined; | |
/** | |
* @param {number} idx | |
* @param {number=} maxBytesToRead | |
* @return {string} | |
*/ | |
function UTF8ArrayToString(heap, idx, maxBytesToRead) { | |
var endIdx = idx + maxBytesToRead; | |
var endPtr = idx; | |
// TextDecoder needs to know the byte length in advance, it doesn't stop on null terminator by itself. | |
// Also, use the length info to avoid running tiny strings through TextDecoder, since .subarray() allocates garbage. | |
// (As a tiny code save trick, compare endPtr against endIdx using a negation, so that undefined means Infinity) | |
while (heap[endPtr] && !(endPtr >= endIdx)) ++endPtr; | |
if (endPtr - idx > 16 && heap.subarray && UTF8Decoder) { | |
return UTF8Decoder.decode(heap.subarray(idx, endPtr)); | |
} else { | |
var str = ''; | |
// If building with TextDecoder, we have already computed the string length above, so test loop end condition against that | |
while (idx < endPtr) { | |
// For UTF8 byte structure, see: | |
// http://en.wikipedia.org/wiki/UTF-8#Description | |
// https://www.ietf.org/rfc/rfc2279.txt | |
// https://tools.ietf.org/html/rfc3629 | |
var u0 = heap[idx++]; | |
if (!(u0 & 0x80)) { str += String.fromCharCode(u0); continue; } | |
var u1 = heap[idx++] & 63; | |
if ((u0 & 0xE0) == 0xC0) { str += String.fromCharCode(((u0 & 31) << 6) | u1); continue; } | |
var u2 = heap[idx++] & 63; | |
if ((u0 & 0xF0) == 0xE0) { | |
u0 = ((u0 & 15) << 12) | (u1 << 6) | u2; | |
} else { | |
if ((u0 & 0xF8) != 0xF0) warnOnce('Invalid UTF-8 leading byte 0x' + u0.toString(16) + ' encountered when deserializing a UTF-8 string on the asm.js/wasm heap to a JS string!'); | |
u0 = ((u0 & 7) << 18) | (u1 << 12) | (u2 << 6) | (heap[idx++] & 63); | |
} | |
if (u0 < 0x10000) { | |
str += String.fromCharCode(u0); | |
} else { | |
var ch = u0 - 0x10000; | |
str += String.fromCharCode(0xD800 | (ch >> 10), 0xDC00 | (ch & 0x3FF)); | |
} | |
} | |
} | |
return str; | |
} | |
// Given a pointer 'ptr' to a null-terminated UTF8-encoded string in the emscripten HEAP, returns a | |
// copy of that string as a Javascript String object. | |
// maxBytesToRead: an optional length that specifies the maximum number of bytes to read. You can omit | |
// this parameter to scan the string until the first \0 byte. If maxBytesToRead is | |
// passed, and the string at [ptr, ptr+maxBytesToReadr[ contains a null byte in the | |
// middle, then the string will cut short at that byte index (i.e. maxBytesToRead will | |
// not produce a string of exact length [ptr, ptr+maxBytesToRead[) | |
// N.B. mixing frequent uses of UTF8ToString() with and without maxBytesToRead may | |
// throw JS JIT optimizations off, so it is worth to consider consistently using one | |
// style or the other. | |
/** | |
* @param {number} ptr | |
* @param {number=} maxBytesToRead | |
* @return {string} | |
*/ | |
function UTF8ToString(ptr, maxBytesToRead) { | |
return ptr ? UTF8ArrayToString(HEAPU8, ptr, maxBytesToRead) : ''; | |
} | |
// Copies the given Javascript String object 'str' to the given byte array at address 'outIdx', | |
// encoded in UTF8 form and null-terminated. The copy will require at most str.length*4+1 bytes of space in the HEAP. | |
// Use the function lengthBytesUTF8 to compute the exact number of bytes (excluding null terminator) that this function will write. | |
// Parameters: | |
// str: the Javascript string to copy. | |
// heap: the array to copy to. Each index in this array is assumed to be one 8-byte element. | |
// outIdx: The starting offset in the array to begin the copying. | |
// maxBytesToWrite: The maximum number of bytes this function can write to the array. | |
// This count should include the null terminator, | |
// i.e. if maxBytesToWrite=1, only the null terminator will be written and nothing else. | |
// maxBytesToWrite=0 does not write any bytes to the output, not even the null terminator. | |
// Returns the number of bytes written, EXCLUDING the null terminator. | |
function stringToUTF8Array(str, heap, outIdx, maxBytesToWrite) { | |
if (!(maxBytesToWrite > 0)) // Parameter maxBytesToWrite is not optional. Negative values, 0, null, undefined and false each don't write out any bytes. | |
return 0; | |
var startIdx = outIdx; | |
var endIdx = outIdx + maxBytesToWrite - 1; // -1 for string null terminator. | |
for (var i = 0; i < str.length; ++i) { | |
// Gotcha: charCodeAt returns a 16-bit word that is a UTF-16 encoded code unit, not a Unicode code point of the character! So decode UTF16->UTF32->UTF8. | |
// See http://unicode.org/faq/utf_bom.html#utf16-3 | |
// For UTF8 byte structure, see http://en.wikipedia.org/wiki/UTF-8#Description and https://www.ietf.org/rfc/rfc2279.txt and https://tools.ietf.org/html/rfc3629 | |
var u = str.charCodeAt(i); // possibly a lead surrogate | |
if (u >= 0xD800 && u <= 0xDFFF) { | |
var u1 = str.charCodeAt(++i); | |
u = 0x10000 + ((u & 0x3FF) << 10) | (u1 & 0x3FF); | |
} | |
if (u <= 0x7F) { | |
if (outIdx >= endIdx) break; | |
heap[outIdx++] = u; | |
} else if (u <= 0x7FF) { | |
if (outIdx + 1 >= endIdx) break; | |
heap[outIdx++] = 0xC0 | (u >> 6); | |
heap[outIdx++] = 0x80 | (u & 63); | |
} else if (u <= 0xFFFF) { | |
if (outIdx + 2 >= endIdx) break; | |
heap[outIdx++] = 0xE0 | (u >> 12); | |
heap[outIdx++] = 0x80 | ((u >> 6) & 63); | |
heap[outIdx++] = 0x80 | (u & 63); | |
} else { | |
if (outIdx + 3 >= endIdx) break; | |
if (u >= 0x200000) warnOnce('Invalid Unicode code point 0x' + u.toString(16) + ' encountered when serializing a JS string to an UTF-8 string on the asm.js/wasm heap! (Valid unicode code points should be in range 0-0x1FFFFF).'); | |
heap[outIdx++] = 0xF0 | (u >> 18); | |
heap[outIdx++] = 0x80 | ((u >> 12) & 63); | |
heap[outIdx++] = 0x80 | ((u >> 6) & 63); | |
heap[outIdx++] = 0x80 | (u & 63); | |
} | |
} | |
// Null-terminate the pointer to the buffer. | |
heap[outIdx] = 0; | |
return outIdx - startIdx; | |
} | |
// Copies the given Javascript String object 'str' to the emscripten HEAP at address 'outPtr', | |
// null-terminated and encoded in UTF8 form. The copy will require at most str.length*4+1 bytes of space in the HEAP. | |
// Use the function lengthBytesUTF8 to compute the exact number of bytes (excluding null terminator) that this function will write. | |
// Returns the number of bytes written, EXCLUDING the null terminator. | |
function stringToUTF8(str, outPtr, maxBytesToWrite) { | |
assert(typeof maxBytesToWrite == 'number', 'stringToUTF8(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!'); | |
return stringToUTF8Array(str, HEAPU8,outPtr, maxBytesToWrite); | |
} | |
// Returns the number of bytes the given Javascript string takes if encoded as a UTF8 byte array, EXCLUDING the null terminator byte. | |
function lengthBytesUTF8(str) { | |
var len = 0; | |
for (var i = 0; i < str.length; ++i) { | |
// Gotcha: charCodeAt returns a 16-bit word that is a UTF-16 encoded code unit, not a Unicode code point of the character! So decode UTF16->UTF32->UTF8. | |
// See http://unicode.org/faq/utf_bom.html#utf16-3 | |
var u = str.charCodeAt(i); // possibly a lead surrogate | |
if (u >= 0xD800 && u <= 0xDFFF) u = 0x10000 + ((u & 0x3FF) << 10) | (str.charCodeAt(++i) & 0x3FF); | |
if (u <= 0x7F) ++len; | |
else if (u <= 0x7FF) len += 2; | |
else if (u <= 0xFFFF) len += 3; | |
else len += 4; | |
} | |
return len; | |
} | |
// runtime_strings_extra.js: Strings related runtime functions that are available only in regular runtime. | |
// Given a pointer 'ptr' to a null-terminated ASCII-encoded string in the emscripten HEAP, returns | |
// a copy of that string as a Javascript String object. | |
function AsciiToString(ptr) { | |
var str = ''; | |
while (1) { | |
var ch = HEAPU8[((ptr++)>>0)]; | |
if (!ch) return str; | |
str += String.fromCharCode(ch); | |
} | |
} | |
// Copies the given Javascript String object 'str' to the emscripten HEAP at address 'outPtr', | |
// null-terminated and encoded in ASCII form. The copy will require at most str.length+1 bytes of space in the HEAP. | |
function stringToAscii(str, outPtr) { | |
return writeAsciiToMemory(str, outPtr, false); | |
} | |
// Given a pointer 'ptr' to a null-terminated UTF16LE-encoded string in the emscripten HEAP, returns | |
// a copy of that string as a Javascript String object. | |
var UTF16Decoder = typeof TextDecoder !== 'undefined' ? new TextDecoder('utf-16le') : undefined; | |
function UTF16ToString(ptr, maxBytesToRead) { | |
assert(ptr % 2 == 0, 'Pointer passed to UTF16ToString must be aligned to two bytes!'); | |
var endPtr = ptr; | |
// TextDecoder needs to know the byte length in advance, it doesn't stop on null terminator by itself. | |
// Also, use the length info to avoid running tiny strings through TextDecoder, since .subarray() allocates garbage. | |
var idx = endPtr >> 1; | |
var maxIdx = idx + maxBytesToRead / 2; | |
// If maxBytesToRead is not passed explicitly, it will be undefined, and this | |
// will always evaluate to true. This saves on code size. | |
while (!(idx >= maxIdx) && HEAPU16[idx]) ++idx; | |
endPtr = idx << 1; | |
if (endPtr - ptr > 32 && UTF16Decoder) { | |
return UTF16Decoder.decode(HEAPU8.subarray(ptr, endPtr)); | |
} else { | |
var i = 0; | |
var str = ''; | |
while (1) { | |
var codeUnit = HEAP16[(((ptr)+(i*2))>>1)]; | |
if (codeUnit == 0 || i == maxBytesToRead / 2) return str; | |
++i; | |
// fromCharCode constructs a character from a UTF-16 code unit, so we can pass the UTF16 string right through. | |
str += String.fromCharCode(codeUnit); | |
} | |
} | |
} | |
// Copies the given Javascript String object 'str' to the emscripten HEAP at address 'outPtr', | |
// null-terminated and encoded in UTF16 form. The copy will require at most str.length*4+2 bytes of space in the HEAP. | |
// Use the function lengthBytesUTF16() to compute the exact number of bytes (excluding null terminator) that this function will write. | |
// Parameters: | |
// str: the Javascript string to copy. | |
// outPtr: Byte address in Emscripten HEAP where to write the string to. | |
// maxBytesToWrite: The maximum number of bytes this function can write to the array. This count should include the null | |
// terminator, i.e. if maxBytesToWrite=2, only the null terminator will be written and nothing else. | |
// maxBytesToWrite<2 does not write any bytes to the output, not even the null terminator. | |
// Returns the number of bytes written, EXCLUDING the null terminator. | |
function stringToUTF16(str, outPtr, maxBytesToWrite) { | |
assert(outPtr % 2 == 0, 'Pointer passed to stringToUTF16 must be aligned to two bytes!'); | |
assert(typeof maxBytesToWrite == 'number', 'stringToUTF16(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!'); | |
// Backwards compatibility: if max bytes is not specified, assume unsafe unbounded write is allowed. | |
if (maxBytesToWrite === undefined) { | |
maxBytesToWrite = 0x7FFFFFFF; | |
} | |
if (maxBytesToWrite < 2) return 0; | |
maxBytesToWrite -= 2; // Null terminator. | |
var startPtr = outPtr; | |
var numCharsToWrite = (maxBytesToWrite < str.length*2) ? (maxBytesToWrite / 2) : str.length; | |
for (var i = 0; i < numCharsToWrite; ++i) { | |
// charCodeAt returns a UTF-16 encoded code unit, so it can be directly written to the HEAP. | |
var codeUnit = str.charCodeAt(i); // possibly a lead surrogate | |
HEAP16[((outPtr)>>1)]=codeUnit; | |
outPtr += 2; | |
} | |
// Null-terminate the pointer to the HEAP. | |
HEAP16[((outPtr)>>1)]=0; | |
return outPtr - startPtr; | |
} | |
// Returns the number of bytes the given Javascript string takes if encoded as a UTF16 byte array, EXCLUDING the null terminator byte. | |
function lengthBytesUTF16(str) { | |
return str.length*2; | |
} | |
function UTF32ToString(ptr, maxBytesToRead) { | |
assert(ptr % 4 == 0, 'Pointer passed to UTF32ToString must be aligned to four bytes!'); | |
var i = 0; | |
var str = ''; | |
// If maxBytesToRead is not passed explicitly, it will be undefined, and this | |
// will always evaluate to true. This saves on code size. | |
while (!(i >= maxBytesToRead / 4)) { | |
var utf32 = HEAP32[(((ptr)+(i*4))>>2)]; | |
if (utf32 == 0) break; | |
++i; | |
// Gotcha: fromCharCode constructs a character from a UTF-16 encoded code (pair), not from a Unicode code point! So encode the code point to UTF-16 for constructing. | |
// See http://unicode.org/faq/utf_bom.html#utf16-3 | |
if (utf32 >= 0x10000) { | |
var ch = utf32 - 0x10000; | |
str += String.fromCharCode(0xD800 | (ch >> 10), 0xDC00 | (ch & 0x3FF)); | |
} else { | |
str += String.fromCharCode(utf32); | |
} | |
} | |
return str; | |
} | |
// Copies the given Javascript String object 'str' to the emscripten HEAP at address 'outPtr', | |
// null-terminated and encoded in UTF32 form. The copy will require at most str.length*4+4 bytes of space in the HEAP. | |
// Use the function lengthBytesUTF32() to compute the exact number of bytes (excluding null terminator) that this function will write. | |
// Parameters: | |
// str: the Javascript string to copy. | |
// outPtr: Byte address in Emscripten HEAP where to write the string to. | |
// maxBytesToWrite: The maximum number of bytes this function can write to the array. This count should include the null | |
// terminator, i.e. if maxBytesToWrite=4, only the null terminator will be written and nothing else. | |
// maxBytesToWrite<4 does not write any bytes to the output, not even the null terminator. | |
// Returns the number of bytes written, EXCLUDING the null terminator. | |
function stringToUTF32(str, outPtr, maxBytesToWrite) { | |
assert(outPtr % 4 == 0, 'Pointer passed to stringToUTF32 must be aligned to four bytes!'); | |
assert(typeof maxBytesToWrite == 'number', 'stringToUTF32(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!'); | |
// Backwards compatibility: if max bytes is not specified, assume unsafe unbounded write is allowed. | |
if (maxBytesToWrite === undefined) { | |
maxBytesToWrite = 0x7FFFFFFF; | |
} | |
if (maxBytesToWrite < 4) return 0; | |
var startPtr = outPtr; | |
var endPtr = startPtr + maxBytesToWrite - 4; | |
for (var i = 0; i < str.length; ++i) { | |
// Gotcha: charCodeAt returns a 16-bit word that is a UTF-16 encoded code unit, not a Unicode code point of the character! We must decode the string to UTF-32 to the heap. | |
// See http://unicode.org/faq/utf_bom.html#utf16-3 | |
var codeUnit = str.charCodeAt(i); // possibly a lead surrogate | |
if (codeUnit >= 0xD800 && codeUnit <= 0xDFFF) { | |
var trailSurrogate = str.charCodeAt(++i); | |
codeUnit = 0x10000 + ((codeUnit & 0x3FF) << 10) | (trailSurrogate & 0x3FF); | |
} | |
HEAP32[((outPtr)>>2)]=codeUnit; | |
outPtr += 4; | |
if (outPtr + 4 > endPtr) break; | |
} | |
// Null-terminate the pointer to the HEAP. | |
HEAP32[((outPtr)>>2)]=0; | |
return outPtr - startPtr; | |
} | |
// Returns the number of bytes the given Javascript string takes if encoded as a UTF16 byte array, EXCLUDING the null terminator byte. | |
function lengthBytesUTF32(str) { | |
var len = 0; | |
for (var i = 0; i < str.length; ++i) { | |
// Gotcha: charCodeAt returns a 16-bit word that is a UTF-16 encoded code unit, not a Unicode code point of the character! We must decode the string to UTF-32 to the heap. | |
// See http://unicode.org/faq/utf_bom.html#utf16-3 | |
var codeUnit = str.charCodeAt(i); | |
if (codeUnit >= 0xD800 && codeUnit <= 0xDFFF) ++i; // possibly a lead surrogate, so skip over the tail surrogate. | |
len += 4; | |
} | |
return len; | |
} | |
// Allocate heap space for a JS string, and write it there. | |
// It is the responsibility of the caller to free() that memory. | |
function allocateUTF8(str) { | |
var size = lengthBytesUTF8(str) + 1; | |
var ret = _malloc(size); | |
if (ret) stringToUTF8Array(str, HEAP8, ret, size); | |
return ret; | |
} | |
// Allocate stack space for a JS string, and write it there. | |
function allocateUTF8OnStack(str) { | |
var size = lengthBytesUTF8(str) + 1; | |
var ret = stackAlloc(size); | |
stringToUTF8Array(str, HEAP8, ret, size); | |
return ret; | |
} | |
// Deprecated: This function should not be called because it is unsafe and does not provide | |
// a maximum length limit of how many bytes it is allowed to write. Prefer calling the | |
// function stringToUTF8Array() instead, which takes in a maximum length that can be used | |
// to be secure from out of bounds writes. | |
/** @deprecated | |
@param {boolean=} dontAddNull */ | |
function writeStringToMemory(string, buffer, dontAddNull) { | |
warnOnce('writeStringToMemory is deprecated and should not be called! Use stringToUTF8() instead!'); | |
var /** @type {number} */ lastChar, /** @type {number} */ end; | |
if (dontAddNull) { | |
// stringToUTF8Array always appends null. If we don't want to do that, remember the | |
// character that existed at the location where the null will be placed, and restore | |
// that after the write (below). | |
end = buffer + lengthBytesUTF8(string); | |
lastChar = HEAP8[end]; | |
} | |
stringToUTF8(string, buffer, Infinity); | |
if (dontAddNull) HEAP8[end] = lastChar; // Restore the value under the null character. | |
} | |
function writeArrayToMemory(array, buffer) { | |
assert(array.length >= 0, 'writeArrayToMemory array must have a length (should be an array or typed array)') | |
HEAP8.set(array, buffer); | |
} | |
/** @param {boolean=} dontAddNull */ | |
function writeAsciiToMemory(str, buffer, dontAddNull) { | |
for (var i = 0; i < str.length; ++i) { | |
assert(str.charCodeAt(i) === str.charCodeAt(i)&0xff); | |
HEAP8[((buffer++)>>0)]=str.charCodeAt(i); | |
} | |
// Null-terminate the pointer to the HEAP. | |
if (!dontAddNull) HEAP8[((buffer)>>0)]=0; | |
} | |
// Memory management | |
var PAGE_SIZE = 16384; | |
var WASM_PAGE_SIZE = 65536; | |
var ASMJS_PAGE_SIZE = 16777216; | |
function alignUp(x, multiple) { | |
if (x % multiple > 0) { | |
x += multiple - (x % multiple); | |
} | |
return x; | |
} | |
var HEAP, | |
/** @type {ArrayBuffer} */ | |
buffer, | |
/** @type {Int8Array} */ | |
HEAP8, | |
/** @type {Uint8Array} */ | |
HEAPU8, | |
/** @type {Int16Array} */ | |
HEAP16, | |
/** @type {Uint16Array} */ | |
HEAPU16, | |
/** @type {Int32Array} */ | |
HEAP32, | |
/** @type {Uint32Array} */ | |
HEAPU32, | |
/** @type {Float32Array} */ | |
HEAPF32, | |
/** @type {Float64Array} */ | |
HEAPF64; | |
function updateGlobalBufferAndViews(buf) { | |
buffer = buf; | |
Module['HEAP8'] = HEAP8 = new Int8Array(buf); | |
Module['HEAP16'] = HEAP16 = new Int16Array(buf); | |
Module['HEAP32'] = HEAP32 = new Int32Array(buf); | |
Module['HEAPU8'] = HEAPU8 = new Uint8Array(buf); | |
Module['HEAPU16'] = HEAPU16 = new Uint16Array(buf); | |
Module['HEAPU32'] = HEAPU32 = new Uint32Array(buf); | |
Module['HEAPF32'] = HEAPF32 = new Float32Array(buf); | |
Module['HEAPF64'] = HEAPF64 = new Float64Array(buf); | |
} | |
var STATIC_BASE = 1024, | |
STACK_BASE = 5249504, | |
STACKTOP = STACK_BASE, | |
STACK_MAX = 6624, | |
DYNAMIC_BASE = 5249504, | |
DYNAMICTOP_PTR = 6464; | |
assert(STACK_BASE % 16 === 0, 'stack must start aligned'); | |
assert(DYNAMIC_BASE % 16 === 0, 'heap must start aligned'); | |
var TOTAL_STACK = 5242880; | |
if (Module['TOTAL_STACK']) assert(TOTAL_STACK === Module['TOTAL_STACK'], 'the stack size can no longer be determined at runtime') | |
var INITIAL_INITIAL_MEMORY = Module['INITIAL_MEMORY'] || 16777216;if (!Object.getOwnPropertyDescriptor(Module, 'INITIAL_MEMORY')) Object.defineProperty(Module, 'INITIAL_MEMORY', { configurable: true, get: function() { abort('Module.INITIAL_MEMORY has been replaced with plain INITIAL_INITIAL_MEMORY (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)') } }); | |
assert(INITIAL_INITIAL_MEMORY >= TOTAL_STACK, 'INITIAL_MEMORY should be larger than TOTAL_STACK, was ' + INITIAL_INITIAL_MEMORY + '! (TOTAL_STACK=' + TOTAL_STACK + ')'); | |
// check for full engine support (use string 'subarray' to avoid closure compiler confusion) | |
assert(typeof Int32Array !== 'undefined' && typeof Float64Array !== 'undefined' && Int32Array.prototype.subarray !== undefined && Int32Array.prototype.set !== undefined, | |
'JS engine does not provide full typed array support'); | |
// In non-standalone/normal mode, we create the memory here. | |
// Create the main memory. (Note: this isn't used in STANDALONE_WASM mode since the wasm | |
// memory is created in the wasm, not in JS.) | |
if (Module['wasmMemory']) { | |
wasmMemory = Module['wasmMemory']; | |
} else | |
{ | |
wasmMemory = new WebAssembly.Memory({ | |
'initial': INITIAL_INITIAL_MEMORY / WASM_PAGE_SIZE | |
, | |
'maximum': INITIAL_INITIAL_MEMORY / WASM_PAGE_SIZE | |
}); | |
} | |
if (wasmMemory) { | |
buffer = wasmMemory.buffer; | |
} | |
// If the user provides an incorrect length, just use that length instead rather than providing the user to | |
// specifically provide the memory length with Module['INITIAL_MEMORY']. | |
INITIAL_INITIAL_MEMORY = buffer.byteLength; | |
assert(INITIAL_INITIAL_MEMORY % WASM_PAGE_SIZE === 0); | |
updateGlobalBufferAndViews(buffer); | |
HEAP32[DYNAMICTOP_PTR>>2] = DYNAMIC_BASE; | |
// Initializes the stack cookie. Called at the startup of main and at the startup of each thread in pthreads mode. | |
function writeStackCookie() { | |
assert((STACK_MAX & 3) == 0); | |
// The stack grows downwards | |
HEAPU32[(STACK_MAX >> 2)+1] = 0x2135467; | |
HEAPU32[(STACK_MAX >> 2)+2] = 0x89BACDFE; | |
// Also test the global address 0 for integrity. | |
// We don't do this with ASan because ASan does its own checks for this. | |
HEAP32[0] = 0x63736d65; /* 'emsc' */ | |
} | |
function checkStackCookie() { | |
var cookie1 = HEAPU32[(STACK_MAX >> 2)+1]; | |
var cookie2 = HEAPU32[(STACK_MAX >> 2)+2]; | |
if (cookie1 != 0x2135467 || cookie2 != 0x89BACDFE) { | |
abort('Stack overflow! Stack cookie has been overwritten, expected hex dwords 0x89BACDFE and 0x2135467, but received 0x' + cookie2.toString(16) + ' ' + cookie1.toString(16)); | |
} | |
// Also test the global address 0 for integrity. | |
// We don't do this with ASan because ASan does its own checks for this. | |
if (HEAP32[0] !== 0x63736d65 /* 'emsc' */) abort('Runtime error: The application has corrupted its heap memory area (address zero)!'); | |
} | |
// Endianness check (note: assumes compiler arch was little-endian) | |
(function() { | |
var h16 = new Int16Array(1); | |
var h8 = new Int8Array(h16.buffer); | |
h16[0] = 0x6373; | |
if (h8[0] !== 0x73 || h8[1] !== 0x63) throw 'Runtime error: expected the system to be little-endian!'; | |
})(); | |
function abortFnPtrError(ptr, sig) { | |
abort("Invalid function pointer " + ptr + " called with signature '" + sig + "'. Perhaps this is an invalid value (e.g. caused by calling a virtual method on a NULL pointer)? Or calling a function with an incorrect type, which will fail? (it is worth building your source files with -Werror (warnings are errors), as warnings can indicate undefined behavior which can cause this). Build with ASSERTIONS=2 for more info."); | |
} | |
function callRuntimeCallbacks(callbacks) { | |
while(callbacks.length > 0) { | |
var callback = callbacks.shift(); | |
if (typeof callback == 'function') { | |
callback(Module); // Pass the module as the first argument. | |
continue; | |
} | |
var func = callback.func; | |
if (typeof func === 'number') { | |
if (callback.arg === undefined) { | |
Module['dynCall_v'](func); | |
} else { | |
Module['dynCall_vi'](func, callback.arg); | |
} | |
} else { | |
func(callback.arg === undefined ? null : callback.arg); | |
} | |
} | |
} | |
var __ATPRERUN__ = []; // functions called before the runtime is initialized | |
var __ATINIT__ = []; // functions called during startup | |
var __ATMAIN__ = []; // functions called when main() is to be run | |
var __ATEXIT__ = []; // functions called during shutdown | |
var __ATPOSTRUN__ = []; // functions called after the main() is called | |
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 initRuntime() { | |
checkStackCookie(); | |
assert(!runtimeInitialized); | |
runtimeInitialized = true; | |
callRuntimeCallbacks(__ATINIT__); | |
} | |
function preMain() { | |
checkStackCookie(); | |
callRuntimeCallbacks(__ATMAIN__); | |
} | |
function exitRuntime() { | |
checkStackCookie(); | |
runtimeExited = true; | |
} | |
function postRun() { | |
checkStackCookie(); | |
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); | |
} | |
function addOnInit(cb) { | |
__ATINIT__.unshift(cb); | |
} | |
function addOnPreMain(cb) { | |
__ATMAIN__.unshift(cb); | |
} | |
function addOnExit(cb) { | |
} | |
function addOnPostRun(cb) { | |
__ATPOSTRUN__.unshift(cb); | |
} | |
/** @param {number|boolean=} ignore */ | |
function unSign(value, bits, ignore) { | |
if (value >= 0) { | |
return value; | |
} | |
return bits <= 32 ? 2*Math.abs(1 << (bits-1)) + value // Need some trickery, since if bits == 32, we are right at the limit of the bits JS uses in bitshifts | |
: Math.pow(2, bits) + value; | |
} | |
/** @param {number|boolean=} ignore */ | |
function reSign(value, bits, ignore) { | |
if (value <= 0) { | |
return value; | |
} | |
var half = bits <= 32 ? Math.abs(1 << (bits-1)) // abs is needed if bits == 32 | |
: Math.pow(2, bits-1); | |
if (value >= half && (bits <= 32 || value > half)) { // for huge values, we can hit the precision limit and always get true here. so don't do that | |
// but, in general there is no perfect solution here. With 64-bit ints, we get rounding and errors | |
// TODO: In i64 mode 1, resign the two parts separately and safely | |
value = -2*half + value; // Cannot bitshift half, as it may be at the limit of the bits JS uses in bitshifts | |
} | |
return value; | |
} | |
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/imul | |
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/fround | |
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/clz32 | |
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/trunc | |
assert(Math.imul, 'This browser does not support Math.imul(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill'); | |
assert(Math.fround, 'This browser does not support Math.fround(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill'); | |
assert(Math.clz32, 'This browser does not support Math.clz32(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill'); | |
assert(Math.trunc, 'This browser does not support Math.trunc(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill'); | |
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_round = Math.round; | |
var Math_min = Math.min; | |
var Math_max = Math.max; | |
var Math_clz32 = Math.clz32; | |
var Math_trunc = Math.trunc; | |
// A counter of dependencies for calling run(). If we need to | |
// do asynchronous work before running, increment this and | |
// decrement it. Incrementing must happen in a place like | |
// Module.preRun (used by emcc to add file preloading). | |
// Note that you can add dependencies in preRun, even though | |
// it happens right before run - run will be postponed until | |
// the dependencies are met. | |
var runDependencies = 0; | |
var runDependencyWatcher = null; | |
var dependenciesFulfilled = null; // overridden to take different actions when all run dependencies are fulfilled | |
var runDependencyTracking = {}; | |
function getUniqueRunDependency(id) { | |
var orig = id; | |
while (1) { | |
if (!runDependencyTracking[id]) return id; | |
id = orig + Math.random(); | |
} | |
} | |
function addRunDependency(id) { | |
runDependencies++; | |
if (Module['monitorRunDependencies']) { | |
Module['monitorRunDependencies'](runDependencies); | |
} | |
if (id) { | |
assert(!runDependencyTracking[id]); | |
runDependencyTracking[id] = 1; | |
if (runDependencyWatcher === null && typeof setInterval !== 'undefined') { | |
// Check for missing dependencies every few seconds | |
runDependencyWatcher = setInterval(function() { | |
if (ABORT) { | |
clearInterval(runDependencyWatcher); | |
runDependencyWatcher = null; | |
return; | |
} | |
var shown = false; | |
for (var dep in runDependencyTracking) { | |
if (!shown) { | |
shown = true; | |
err('still waiting on run dependencies:'); | |
} | |
err('dependency: ' + dep); | |
} | |
if (shown) { | |
err('(end of list)'); | |
} | |
}, 10000); | |
} | |
} else { | |
err('warning: run dependency added without ID'); | |
} | |
} | |
function removeRunDependency(id) { | |
runDependencies--; | |
if (Module['monitorRunDependencies']) { | |
Module['monitorRunDependencies'](runDependencies); | |
} | |
if (id) { | |
assert(runDependencyTracking[id]); | |
delete runDependencyTracking[id]; | |
} else { | |
err('warning: run dependency removed without ID'); | |
} | |
if (runDependencies == 0) { | |
if (runDependencyWatcher !== null) { | |
clearInterval(runDependencyWatcher); | |
runDependencyWatcher = null; | |
} | |
if (dependenciesFulfilled) { | |
var callback = dependenciesFulfilled; | |
dependenciesFulfilled = null; | |
callback(); // can add another dependenciesFulfilled | |
} | |
} | |
} | |
Module["preloadedImages"] = {}; // maps url to image data | |
Module["preloadedAudios"] = {}; // maps url to audio data | |
/** @param {string|number=} what */ | |
function abort(what) { | |
if (Module['onAbort']) { | |
Module['onAbort'](what); | |
} | |
what += ''; | |
out(what); | |
err(what); | |
ABORT = true; | |
EXITSTATUS = 1; | |
var output = 'abort(' + what + ') at ' + stackTrace(); | |
what = output; | |
// Throw a wasm runtime error, because a JS error might be seen as a foreign | |
// exception, which means we'd run destructors on it. We need the error to | |
// simply make the program stop. | |
throw new WebAssembly.RuntimeError(what); | |
} | |
var memoryInitializer = null; | |
// show errors on likely calls to FS when it was not included | |
var FS = { | |
error: function() { | |
abort('Filesystem support (FS) was not included. The problem is that you are using files from JS, but files were not used from C/C++, so filesystem support was not auto-included. You can force-include filesystem support with -s FORCE_FILESYSTEM=1'); | |
}, | |
init: function() { FS.error() }, | |
createDataFile: function() { FS.error() }, | |
createPreloadedFile: function() { FS.error() }, | |
createLazyFile: function() { FS.error() }, | |
open: function() { FS.error() }, | |
mkdev: function() { FS.error() }, | |
registerDevice: function() { FS.error() }, | |
analyzePath: function() { FS.error() }, | |
loadFilesFromDB: function() { FS.error() }, | |
ErrnoError: function ErrnoError() { FS.error() }, | |
}; | |
Module['FS_createDataFile'] = FS.createDataFile; | |
Module['FS_createPreloadedFile'] = FS.createPreloadedFile; | |
function hasPrefix(str, prefix) { | |
return String.prototype.startsWith ? | |
str.startsWith(prefix) : | |
str.indexOf(prefix) === 0; | |
} | |
// Prefix of data URIs emitted by SINGLE_FILE and related options. | |
var dataURIPrefix = 'data:application/octet-stream;base64,'; | |
// Indicates whether filename is a base64 data URI. | |
function isDataURI(filename) { | |
return hasPrefix(filename, dataURIPrefix); | |
} | |
var fileURIPrefix = "file://"; | |
// Indicates whether filename is delivered via file protocol (as opposed to http/https) | |
function isFileURI(filename) { | |
return hasPrefix(filename, fileURIPrefix); | |
} | |
function createExportWrapper(name, fixedasm) { | |
return function() { | |
var displayName = name; | |
var asm = fixedasm; | |
if (!fixedasm) { | |
asm = Module['asm']; | |
} | |
assert(runtimeInitialized, 'native function `' + displayName + '` called before runtime initialization'); | |
assert(!runtimeExited, 'native function `' + displayName + '` called after runtime exit (use NO_EXIT_RUNTIME to keep it alive after main() exits)'); | |
if (!asm[name]) { | |
assert(asm[name], 'exported native function `' + displayName + '` not found'); | |
} | |
return asm[name].apply(null, arguments); | |
}; | |
} | |
var wasmBinaryFile = 'donut.wasm'; | |
if (!isDataURI(wasmBinaryFile)) { | |
wasmBinaryFile = locateFile(wasmBinaryFile); | |
} | |
function getBinary() { | |
try { | |
if (wasmBinary) { | |
return new Uint8Array(wasmBinary); | |
} | |
var binary = tryParseAsDataURI(wasmBinaryFile); | |
if (binary) { | |
return binary; | |
} | |
if (readBinary) { | |
return readBinary(wasmBinaryFile); | |
} else { | |
throw "both async and sync fetching of the wasm failed"; | |
} | |
} | |
catch (err) { | |
abort(err); | |
} | |
} | |
function getBinaryPromise() { | |
// If we don't have the binary yet, and have the Fetch api, use that; | |
// in some environments, like Electron's render process, Fetch api may be present, but have a different context than expected, let's only use it on the Web | |
if (!wasmBinary && (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) && typeof fetch === 'function' | |
// Let's not use fetch to get objects over file:// as it's most likely Cordova which doesn't support fetch for file:// | |
&& !isFileURI(wasmBinaryFile) | |
) { | |
return fetch(wasmBinaryFile, { credentials: 'same-origin' }).then(function(response) { | |
if (!response['ok']) { | |
throw "failed to load wasm binary file at '" + wasmBinaryFile + "'"; | |
} | |
return response['arrayBuffer'](); | |
}).catch(function () { | |
return getBinary(); | |
}); | |
} | |
// Otherwise, getBinary should be able to get it synchronously | |
return new Promise(function(resolve, reject) { | |
resolve(getBinary()); | |
}); | |
} | |
// Create the wasm instance. | |
// Receives the wasm imports, returns the exports. | |
function createWasm() { | |
// prepare imports | |
var info = { | |
'env': asmLibraryArg, | |
'wasi_snapshot_preview1': asmLibraryArg | |
}; | |
// Load the wasm module and create an instance of using native support in the JS engine. | |
// handle a generated wasm instance, receiving its exports and | |
// performing other necessary setup | |
/** @param {WebAssembly.Module=} module*/ | |
function receiveInstance(instance, module) { | |
var exports = instance.exports; | |
Module['asm'] = exports; | |
removeRunDependency('wasm-instantiate'); | |
} | |
// we can't run yet (except in a pthread, where we have a custom sync instantiator) | |
addRunDependency('wasm-instantiate'); | |
// Async compilation can be confusing when an error on the page overwrites Module | |
// (for example, if the order of elements is wrong, and the one defining Module is | |
// later), so we save Module and check it later. | |
var trueModule = Module; | |
function receiveInstantiatedSource(output) { | |
// 'output' is a WebAssemblyInstantiatedSource object which has both the module and instance. | |
// receiveInstance() will swap in the exports (to Module.asm) so they can be called | |
assert(Module === trueModule, 'the Module object should not be replaced during async compilation - perhaps the order of HTML elements is wrong?'); | |
trueModule = null; | |
// TODO: Due to Closure regression https://github.com/google/closure-compiler/issues/3193, the above line no longer optimizes out down to the following line. | |
// When the regression is fixed, can restore the above USE_PTHREADS-enabled path. | |
receiveInstance(output['instance']); | |
} | |
function instantiateArrayBuffer(receiver) { | |
return getBinaryPromise().then(function(binary) { | |
return WebAssembly.instantiate(binary, info); | |
}).then(receiver, function(reason) { | |
err('failed to asynchronously prepare wasm: ' + reason); | |
abort(reason); | |
}); | |
} | |
// Prefer streaming instantiation if available. | |
function instantiateAsync() { | |
if (!wasmBinary && | |
typeof WebAssembly.instantiateStreaming === 'function' && | |
!isDataURI(wasmBinaryFile) && | |
// Don't use streaming for file:// delivered objects in a webview, fetch them synchronously. | |
!isFileURI(wasmBinaryFile) && | |
typeof fetch === 'function') { | |
fetch(wasmBinaryFile, { credentials: 'same-origin' }).then(function (response) { | |
var result = WebAssembly.instantiateStreaming(response, info); | |
return result.then(receiveInstantiatedSource, function(reason) { | |
// We expect the most common failure cause to be a bad MIME type for the binary, | |
// in which case falling back to ArrayBuffer instantiation should work. | |
err('wasm streaming compile failed: ' + reason); | |
err('falling back to ArrayBuffer instantiation'); | |
return instantiateArrayBuffer(receiveInstantiatedSource); | |
}); | |
}); | |
} else { | |
return instantiateArrayBuffer(receiveInstantiatedSource); | |
} | |
} | |
// User shell pages can write their own Module.instantiateWasm = function(imports, successCallback) callback | |
// to manually instantiate the Wasm module themselves. This allows pages to run the instantiation parallel | |
// to any other async startup actions they are performing. | |
if (Module['instantiateWasm']) { | |
try { | |
var exports = Module['instantiateWasm'](info, receiveInstance); | |
return exports; | |
} catch(e) { | |
err('Module.instantiateWasm callback failed with error: ' + e); | |
return false; | |
} | |
} | |
instantiateAsync(); | |
return {}; // no exports yet; we'll fill them in later | |
} | |
// Globals used by JS i64 conversions | |
var tempDouble; | |
var tempI64; | |
// === Body === | |
var ASM_CONSTS = { | |
}; | |
// STATICTOP = STATIC_BASE + 5600; | |
/* global initializers */ __ATINIT__.push({ func: function() { ___wasm_call_ctors() } }); | |
/* no memory initializer */ | |
// {{PRE_LIBRARY}} | |
function abortStackOverflow(allocSize) { | |
abort('Stack overflow! Attempted to allocate ' + allocSize + ' bytes on the stack, but stack has only ' + (STACK_MAX - stackSave() + allocSize) + ' bytes available!'); | |
} | |
function demangle(func) { | |
warnOnce('warning: build with -s DEMANGLE_SUPPORT=1 to link in libcxxabi demangling'); | |
return func; | |
} | |
function demangleAll(text) { | |
var regex = | |
/\b_Z[\w\d_]+/g; | |
return text.replace(regex, | |
function(x) { | |
var y = demangle(x); | |
return x === y ? x : (y + ' [' + x + ']'); | |
}); | |
} | |
function jsStackTrace() { | |
var err = new Error(); | |
if (!err.stack) { | |
// IE10+ special cases: It does have callstack info, but it is only populated if an Error object is thrown, | |
// so try that as a special-case. | |
try { | |
throw new Error(); | |
} 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); | |
} | |
function ___handle_stack_overflow() { | |
abort('stack overflow') | |
} | |
function _emscripten_get_sbrk_ptr() { | |
return 6464; | |
} | |
function _emscripten_memcpy_big(dest, src, num) { | |
HEAPU8.copyWithin(dest, src, src + num); | |
} | |
function _emscripten_get_heap_size() { | |
return HEAPU8.length; | |
} | |
function abortOnCannotGrowMemory(requestedSize) { | |
abort('Cannot enlarge memory arrays to size ' + requestedSize + ' bytes (OOM). Either (1) compile with -s INITIAL_MEMORY=X with X higher than the current value ' + HEAP8.length + ', (2) compile with -s ALLOW_MEMORY_GROWTH=1 which allows increasing the size at runtime, or (3) if you want malloc to return NULL (0) instead of this abort, compile with -s ABORTING_MALLOC=0 '); | |
}function _emscripten_resize_heap(requestedSize) { | |
requestedSize = requestedSize >>> 0; | |
abortOnCannotGrowMemory(requestedSize); | |
} | |
function flush_NO_FILESYSTEM() { | |
// flush anything remaining in the buffers during shutdown | |
if (typeof _fflush !== 'undefined') _fflush(0); | |
var buffers = SYSCALLS.buffers; | |
if (buffers[1].length) SYSCALLS.printChar(1, 10); | |
if (buffers[2].length) SYSCALLS.printChar(2, 10); | |
} | |
var PATH={splitPath:function(filename) { | |
var splitPathRe = /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/; | |
return splitPathRe.exec(filename).slice(1); | |
},normalizeArray:function(parts, allowAboveRoot) { | |
// if the path tries to go above the root, `up` ends up > 0 | |
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 the path is allowed to go above the root, restore leading ..s | |
if (allowAboveRoot) { | |
for (; up; up--) { | |
parts.unshift('..'); | |
} | |
} | |
return parts; | |
},normalize:function(path) { | |
var isAbsolute = path.charAt(0) === '/', | |
trailingSlash = path.substr(-1) === '/'; | |
// Normalize the path | |
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) { | |
// No dirname whatsoever | |
return '.'; | |
} | |
if (dir) { | |
// It has a dirname, strip trailing slash | |
dir = dir.substr(0, dir.length - 1); | |
} | |
return root + dir; | |
},basename:function(path) { | |
// EMSCRIPTEN return '/'' for '/', not an empty string | |
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); | |
}};var SYSCALLS={mappings:{},buffers:[null,[],[]],printChar:function(stream, curr) { | |
var buffer = SYSCALLS.buffers[stream]; | |
assert(buffer); | |
if (curr === 0 || curr === 10) { | |
(stream === 1 ? out : err)(UTF8ArrayToString(buffer, 0)); | |
buffer.length = 0; | |
} else { | |
buffer.push(curr); | |
} | |
},varargs:undefined,get:function() { | |
assert(SYSCALLS.varargs != undefined); | |
SYSCALLS.varargs += 4; | |
var ret = HEAP32[(((SYSCALLS.varargs)-(4))>>2)]; | |
return ret; | |
},getStr:function(ptr) { | |
var ret = UTF8ToString(ptr); | |
return ret; | |
},get64:function(low, high) { | |
if (low >= 0) assert(high === 0); | |
else assert(high === -1); | |
return low; | |
}};function _fd_write(fd, iov, iovcnt, pnum) { | |
// hack to support printf in SYSCALLS_REQUIRE_FILESYSTEM=0 | |
var num = 0; | |
for (var i = 0; i < iovcnt; i++) { | |
var ptr = HEAP32[(((iov)+(i*8))>>2)]; | |
var len = HEAP32[(((iov)+(i*8 + 4))>>2)]; | |
for (var j = 0; j < len; j++) { | |
SYSCALLS.printChar(fd, HEAPU8[ptr+j]); | |
} | |
num += len; | |
} | |
HEAP32[((pnum)>>2)]=num | |
return 0; | |
} | |
function _setTempRet0($i) { | |
setTempRet0(($i) | 0); | |
} | |
var ASSERTIONS = true; | |
/** @type {function(string, boolean=, number=)} */ | |
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; | |
} | |
function intArrayToString(array) { | |
var ret = []; | |
for (var i = 0; i < array.length; i++) { | |
var chr = array[i]; | |
if (chr > 0xFF) { | |
if (ASSERTIONS) { | |
assert(false, 'Character code ' + chr + ' (' + String.fromCharCode(chr) + ') at offset ' + i + ' not in 0x00-0xFF.'); | |
} | |
chr &= 0xFF; | |
} | |
ret.push(String.fromCharCode(chr)); | |
} | |
return ret.join(''); | |
} | |
// Copied from https://github.com/strophe/strophejs/blob/e06d027/src/polyfills.js#L149 | |
// This code was written by Tyler Akins and has been placed in the | |
// public domain. It would be nice if you left this header intact. | |
// Base64 code from Tyler Akins -- http://rumkin.com | |
/** | |
* Decodes a base64 string. | |
* @param {string} input The string to decode. | |
*/ | |
var decodeBase64 = typeof atob === 'function' ? atob : function (input) { | |
var keyStr = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='; | |
var output = ''; | |
var chr1, chr2, chr3; | |
var enc1, enc2, enc3, enc4; | |
var i = 0; | |
// remove all characters that are not A-Z, a-z, 0-9, +, /, or = | |
input = input.replace(/[^A-Za-z0-9\+\/\=]/g, ''); | |
do { | |
enc1 = keyStr.indexOf(input.charAt(i++)); | |
enc2 = keyStr.indexOf(input.charAt(i++)); | |
enc3 = keyStr.indexOf(input.charAt(i++)); | |
enc4 = keyStr.indexOf(input.charAt(i++)); | |
chr1 = (enc1 << 2) | (enc2 >> 4); | |
chr2 = ((enc2 & 15) << 4) | (enc3 >> 2); | |
chr3 = ((enc3 & 3) << 6) | enc4; | |
output = output + String.fromCharCode(chr1); | |
if (enc3 !== 64) { | |
output = output + String.fromCharCode(chr2); | |
} | |
if (enc4 !== 64) { | |
output = output + String.fromCharCode(chr3); | |
} | |
} while (i < input.length); | |
return output; | |
}; | |
// Converts a string of base64 into a byte array. | |
// Throws error on invalid input. | |
function intArrayFromBase64(s) { | |
if (typeof ENVIRONMENT_IS_NODE === 'boolean' && ENVIRONMENT_IS_NODE) { | |
var buf; | |
try { | |
// TODO: Update Node.js externs, Closure does not recognize the following Buffer.from() | |
/**@suppress{checkTypes}*/ | |
buf = Buffer.from(s, 'base64'); | |
} catch (_) { | |
buf = new Buffer(s, 'base64'); | |
} | |
return new Uint8Array(buf['buffer'], buf['byteOffset'], buf['byteLength']); | |
} | |
try { | |
var decoded = decodeBase64(s); | |
var bytes = new Uint8Array(decoded.length); | |
for (var i = 0 ; i < decoded.length ; ++i) { | |
bytes[i] = decoded.charCodeAt(i); | |
} | |
return bytes; | |
} catch (_) { | |
throw new Error('Converting base64 string to bytes failed.'); | |
} | |
} | |
// If filename is a base64 data URI, parses and returns data (Buffer on node, | |
// Uint8Array otherwise). If filename is not a base64 data URI, returns undefined. | |
function tryParseAsDataURI(filename) { | |
if (!isDataURI(filename)) { | |
return; | |
} | |
return intArrayFromBase64(filename.slice(dataURIPrefix.length)); | |
} | |
var asmGlobalArg = {}; | |
var asmLibraryArg = { "__handle_stack_overflow": ___handle_stack_overflow, "emscripten_get_sbrk_ptr": _emscripten_get_sbrk_ptr, "emscripten_memcpy_big": _emscripten_memcpy_big, "emscripten_resize_heap": _emscripten_resize_heap, "fd_write": _fd_write, "getTempRet0": getTempRet0, "memory": wasmMemory, "setTempRet0": setTempRet0, "table": wasmTable }; | |
var asm = createWasm(); | |
/** @type {function(...*):?} */ | |
var ___wasm_call_ctors = Module["___wasm_call_ctors"] = createExportWrapper("__wasm_call_ctors"); | |
/** @type {function(...*):?} */ | |
var _main = Module["_main"] = createExportWrapper("main"); | |
/** @type {function(...*):?} */ | |
var ___errno_location = Module["___errno_location"] = createExportWrapper("__errno_location"); | |
/** @type {function(...*):?} */ | |
var _fflush = Module["_fflush"] = createExportWrapper("fflush"); | |
/** @type {function(...*):?} */ | |
var stackSave = Module["stackSave"] = createExportWrapper("stackSave"); | |
/** @type {function(...*):?} */ | |
var stackRestore = Module["stackRestore"] = createExportWrapper("stackRestore"); | |
/** @type {function(...*):?} */ | |
var stackAlloc = Module["stackAlloc"] = createExportWrapper("stackAlloc"); | |
/** @type {function(...*):?} */ | |
var _malloc = Module["_malloc"] = createExportWrapper("malloc"); | |
/** @type {function(...*):?} */ | |
var _free = Module["_free"] = createExportWrapper("free"); | |
/** @type {function(...*):?} */ | |
var ___set_stack_limit = Module["___set_stack_limit"] = createExportWrapper("__set_stack_limit"); | |
/** @type {function(...*):?} */ | |
var __growWasmMemory = Module["__growWasmMemory"] = createExportWrapper("__growWasmMemory"); | |
/** @type {function(...*):?} */ | |
var dynCall_ii = Module["dynCall_ii"] = createExportWrapper("dynCall_ii"); | |
/** @type {function(...*):?} */ | |
var dynCall_iiii = Module["dynCall_iiii"] = createExportWrapper("dynCall_iiii"); | |
/** @type {function(...*):?} */ | |
var dynCall_jiji = Module["dynCall_jiji"] = createExportWrapper("dynCall_jiji"); | |
/** @type {function(...*):?} */ | |
var dynCall_iidiiii = Module["dynCall_iidiiii"] = createExportWrapper("dynCall_iidiiii"); | |
/** @type {function(...*):?} */ | |
var dynCall_vii = Module["dynCall_vii"] = createExportWrapper("dynCall_vii"); | |
// === Auto-generated postamble setup entry stuff === | |
if (!Object.getOwnPropertyDescriptor(Module, "intArrayFromString")) Module["intArrayFromString"] = function() { abort("'intArrayFromString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "intArrayToString")) Module["intArrayToString"] = function() { abort("'intArrayToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "ccall")) Module["ccall"] = function() { abort("'ccall' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "cwrap")) Module["cwrap"] = function() { abort("'cwrap' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "setValue")) Module["setValue"] = function() { abort("'setValue' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "getValue")) Module["getValue"] = function() { abort("'getValue' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "allocate")) Module["allocate"] = function() { abort("'allocate' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "getMemory")) Module["getMemory"] = function() { abort("'getMemory' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "UTF8ArrayToString")) Module["UTF8ArrayToString"] = function() { abort("'UTF8ArrayToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "UTF8ToString")) Module["UTF8ToString"] = function() { abort("'UTF8ToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "stringToUTF8Array")) Module["stringToUTF8Array"] = function() { abort("'stringToUTF8Array' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "stringToUTF8")) Module["stringToUTF8"] = function() { abort("'stringToUTF8' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "lengthBytesUTF8")) Module["lengthBytesUTF8"] = function() { abort("'lengthBytesUTF8' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "stackTrace")) Module["stackTrace"] = function() { abort("'stackTrace' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "addOnPreRun")) Module["addOnPreRun"] = function() { abort("'addOnPreRun' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "addOnInit")) Module["addOnInit"] = function() { abort("'addOnInit' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "addOnPreMain")) Module["addOnPreMain"] = function() { abort("'addOnPreMain' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "addOnExit")) Module["addOnExit"] = function() { abort("'addOnExit' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "addOnPostRun")) Module["addOnPostRun"] = function() { abort("'addOnPostRun' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "writeStringToMemory")) Module["writeStringToMemory"] = function() { abort("'writeStringToMemory' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "writeArrayToMemory")) Module["writeArrayToMemory"] = function() { abort("'writeArrayToMemory' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "writeAsciiToMemory")) Module["writeAsciiToMemory"] = function() { abort("'writeAsciiToMemory' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "addRunDependency")) Module["addRunDependency"] = function() { abort("'addRunDependency' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "removeRunDependency")) Module["removeRunDependency"] = function() { abort("'removeRunDependency' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "FS_createFolder")) Module["FS_createFolder"] = function() { abort("'FS_createFolder' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "FS_createPath")) Module["FS_createPath"] = function() { abort("'FS_createPath' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "FS_createDataFile")) Module["FS_createDataFile"] = function() { abort("'FS_createDataFile' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "FS_createPreloadedFile")) Module["FS_createPreloadedFile"] = function() { abort("'FS_createPreloadedFile' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "FS_createLazyFile")) Module["FS_createLazyFile"] = function() { abort("'FS_createLazyFile' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "FS_createLink")) Module["FS_createLink"] = function() { abort("'FS_createLink' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "FS_createDevice")) Module["FS_createDevice"] = function() { abort("'FS_createDevice' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "FS_unlink")) Module["FS_unlink"] = function() { abort("'FS_unlink' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "dynamicAlloc")) Module["dynamicAlloc"] = function() { abort("'dynamicAlloc' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "loadDynamicLibrary")) Module["loadDynamicLibrary"] = function() { abort("'loadDynamicLibrary' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "loadWebAssemblyModule")) Module["loadWebAssemblyModule"] = function() { abort("'loadWebAssemblyModule' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "getLEB")) Module["getLEB"] = function() { abort("'getLEB' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "getFunctionTables")) Module["getFunctionTables"] = function() { abort("'getFunctionTables' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "alignFunctionTables")) Module["alignFunctionTables"] = function() { abort("'alignFunctionTables' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "registerFunctions")) Module["registerFunctions"] = function() { abort("'registerFunctions' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "addFunction")) Module["addFunction"] = function() { abort("'addFunction' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "removeFunction")) Module["removeFunction"] = function() { abort("'removeFunction' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "getFuncWrapper")) Module["getFuncWrapper"] = function() { abort("'getFuncWrapper' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "prettyPrint")) Module["prettyPrint"] = function() { abort("'prettyPrint' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "makeBigInt")) Module["makeBigInt"] = function() { abort("'makeBigInt' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "dynCall")) Module["dynCall"] = function() { abort("'dynCall' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "getCompilerSetting")) Module["getCompilerSetting"] = function() { abort("'getCompilerSetting' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "print")) Module["print"] = function() { abort("'print' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "printErr")) Module["printErr"] = function() { abort("'printErr' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "getTempRet0")) Module["getTempRet0"] = function() { abort("'getTempRet0' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "setTempRet0")) Module["setTempRet0"] = function() { abort("'setTempRet0' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "callMain")) Module["callMain"] = function() { abort("'callMain' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "abort")) Module["abort"] = function() { abort("'abort' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "stringToNewUTF8")) Module["stringToNewUTF8"] = function() { abort("'stringToNewUTF8' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "abortOnCannotGrowMemory")) Module["abortOnCannotGrowMemory"] = function() { abort("'abortOnCannotGrowMemory' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "emscripten_realloc_buffer")) Module["emscripten_realloc_buffer"] = function() { abort("'emscripten_realloc_buffer' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "ENV")) Module["ENV"] = function() { abort("'ENV' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "ERRNO_CODES")) Module["ERRNO_CODES"] = function() { abort("'ERRNO_CODES' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "ERRNO_MESSAGES")) Module["ERRNO_MESSAGES"] = function() { abort("'ERRNO_MESSAGES' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "setErrNo")) Module["setErrNo"] = function() { abort("'setErrNo' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "DNS")) Module["DNS"] = function() { abort("'DNS' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "GAI_ERRNO_MESSAGES")) Module["GAI_ERRNO_MESSAGES"] = function() { abort("'GAI_ERRNO_MESSAGES' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "Protocols")) Module["Protocols"] = function() { abort("'Protocols' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "Sockets")) Module["Sockets"] = function() { abort("'Sockets' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "UNWIND_CACHE")) Module["UNWIND_CACHE"] = function() { abort("'UNWIND_CACHE' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "readAsmConstArgs")) Module["readAsmConstArgs"] = function() { abort("'readAsmConstArgs' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "jstoi_q")) Module["jstoi_q"] = function() { abort("'jstoi_q' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "jstoi_s")) Module["jstoi_s"] = function() { abort("'jstoi_s' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "abortStackOverflow")) Module["abortStackOverflow"] = function() { abort("'abortStackOverflow' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "reallyNegative")) Module["reallyNegative"] = function() { abort("'reallyNegative' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "formatString")) Module["formatString"] = function() { abort("'formatString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "PATH")) Module["PATH"] = function() { abort("'PATH' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "PATH_FS")) Module["PATH_FS"] = function() { abort("'PATH_FS' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "SYSCALLS")) Module["SYSCALLS"] = function() { abort("'SYSCALLS' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "syscallMmap2")) Module["syscallMmap2"] = function() { abort("'syscallMmap2' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "syscallMunmap")) Module["syscallMunmap"] = function() { abort("'syscallMunmap' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "flush_NO_FILESYSTEM")) Module["flush_NO_FILESYSTEM"] = function() { abort("'flush_NO_FILESYSTEM' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "JSEvents")) Module["JSEvents"] = function() { abort("'JSEvents' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "specialHTMLTargets")) Module["specialHTMLTargets"] = function() { abort("'specialHTMLTargets' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "demangle")) Module["demangle"] = function() { abort("'demangle' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "demangleAll")) Module["demangleAll"] = function() { abort("'demangleAll' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "jsStackTrace")) Module["jsStackTrace"] = function() { abort("'jsStackTrace' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "stackTrace")) Module["stackTrace"] = function() { abort("'stackTrace' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "getEnvStrings")) Module["getEnvStrings"] = function() { abort("'getEnvStrings' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "checkWasiClock")) Module["checkWasiClock"] = function() { abort("'checkWasiClock' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "writeI53ToI64")) Module["writeI53ToI64"] = function() { abort("'writeI53ToI64' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "writeI53ToI64Clamped")) Module["writeI53ToI64Clamped"] = function() { abort("'writeI53ToI64Clamped' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "writeI53ToI64Signaling")) Module["writeI53ToI64Signaling"] = function() { abort("'writeI53ToI64Signaling' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "writeI53ToU64Clamped")) Module["writeI53ToU64Clamped"] = function() { abort("'writeI53ToU64Clamped' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "writeI53ToU64Signaling")) Module["writeI53ToU64Signaling"] = function() { abort("'writeI53ToU64Signaling' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "readI53FromI64")) Module["readI53FromI64"] = function() { abort("'readI53FromI64' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "readI53FromU64")) Module["readI53FromU64"] = function() { abort("'readI53FromU64' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "convertI32PairToI53")) Module["convertI32PairToI53"] = function() { abort("'convertI32PairToI53' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "convertU32PairToI53")) Module["convertU32PairToI53"] = function() { abort("'convertU32PairToI53' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "Browser")) Module["Browser"] = function() { abort("'Browser' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "FS")) Module["FS"] = function() { abort("'FS' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "MEMFS")) Module["MEMFS"] = function() { abort("'MEMFS' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "TTY")) Module["TTY"] = function() { abort("'TTY' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "PIPEFS")) Module["PIPEFS"] = function() { abort("'PIPEFS' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "SOCKFS")) Module["SOCKFS"] = function() { abort("'SOCKFS' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "GL")) Module["GL"] = function() { abort("'GL' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "emscriptenWebGLGet")) Module["emscriptenWebGLGet"] = function() { abort("'emscriptenWebGLGet' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "emscriptenWebGLGetTexPixelData")) Module["emscriptenWebGLGetTexPixelData"] = function() { abort("'emscriptenWebGLGetTexPixelData' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "emscriptenWebGLGetUniform")) Module["emscriptenWebGLGetUniform"] = function() { abort("'emscriptenWebGLGetUniform' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "emscriptenWebGLGetVertexAttrib")) Module["emscriptenWebGLGetVertexAttrib"] = function() { abort("'emscriptenWebGLGetVertexAttrib' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "AL")) Module["AL"] = function() { abort("'AL' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "SDL_unicode")) Module["SDL_unicode"] = function() { abort("'SDL_unicode' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "SDL_ttfContext")) Module["SDL_ttfContext"] = function() { abort("'SDL_ttfContext' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "SDL_audio")) Module["SDL_audio"] = function() { abort("'SDL_audio' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "SDL")) Module["SDL"] = function() { abort("'SDL' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "SDL_gfx")) Module["SDL_gfx"] = function() { abort("'SDL_gfx' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "GLUT")) Module["GLUT"] = function() { abort("'GLUT' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "EGL")) Module["EGL"] = function() { abort("'EGL' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "GLFW_Window")) Module["GLFW_Window"] = function() { abort("'GLFW_Window' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "GLFW")) Module["GLFW"] = function() { abort("'GLFW' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "GLEW")) Module["GLEW"] = function() { abort("'GLEW' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "IDBStore")) Module["IDBStore"] = function() { abort("'IDBStore' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "runAndAbortIfError")) Module["runAndAbortIfError"] = function() { abort("'runAndAbortIfError' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "warnOnce")) Module["warnOnce"] = function() { abort("'warnOnce' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "stackSave")) Module["stackSave"] = function() { abort("'stackSave' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "stackRestore")) Module["stackRestore"] = function() { abort("'stackRestore' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "stackAlloc")) Module["stackAlloc"] = function() { abort("'stackAlloc' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "AsciiToString")) Module["AsciiToString"] = function() { abort("'AsciiToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "stringToAscii")) Module["stringToAscii"] = function() { abort("'stringToAscii' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "UTF16ToString")) Module["UTF16ToString"] = function() { abort("'UTF16ToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "stringToUTF16")) Module["stringToUTF16"] = function() { abort("'stringToUTF16' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "lengthBytesUTF16")) Module["lengthBytesUTF16"] = function() { abort("'lengthBytesUTF16' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "UTF32ToString")) Module["UTF32ToString"] = function() { abort("'UTF32ToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "stringToUTF32")) Module["stringToUTF32"] = function() { abort("'stringToUTF32' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "lengthBytesUTF32")) Module["lengthBytesUTF32"] = function() { abort("'lengthBytesUTF32' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "allocateUTF8")) Module["allocateUTF8"] = function() { abort("'allocateUTF8' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "allocateUTF8OnStack")) Module["allocateUTF8OnStack"] = function() { abort("'allocateUTF8OnStack' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; | |
Module["writeStackCookie"] = writeStackCookie; | |
Module["checkStackCookie"] = checkStackCookie; | |
if (!Object.getOwnPropertyDescriptor(Module, "intArrayFromBase64")) Module["intArrayFromBase64"] = function() { abort("'intArrayFromBase64' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") }; | |
if (!Object.getOwnPropertyDescriptor(Module, "tryParseAsDataURI")) Module["tryParseAsDataURI"] = function() { abort("'tryParseAsDataURI' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") };if (!Object.getOwnPropertyDescriptor(Module, "ALLOC_NORMAL")) Object.defineProperty(Module, "ALLOC_NORMAL", { configurable: true, get: function() { abort("'ALLOC_NORMAL' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") } }); | |
if (!Object.getOwnPropertyDescriptor(Module, "ALLOC_STACK")) Object.defineProperty(Module, "ALLOC_STACK", { configurable: true, get: function() { abort("'ALLOC_STACK' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") } }); | |
if (!Object.getOwnPropertyDescriptor(Module, "ALLOC_DYNAMIC")) Object.defineProperty(Module, "ALLOC_DYNAMIC", { configurable: true, get: function() { abort("'ALLOC_DYNAMIC' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") } }); | |
if (!Object.getOwnPropertyDescriptor(Module, "ALLOC_NONE")) Object.defineProperty(Module, "ALLOC_NONE", { configurable: true, get: function() { abort("'ALLOC_NONE' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)") } }); | |
var calledRun; | |
/** | |
* @constructor | |
* @this {ExitStatus} | |
*/ | |
function ExitStatus(status) { | |
this.name = "ExitStatus"; | |
this.message = "Program terminated with exit(" + status + ")"; | |
this.status = status; | |
} | |
var calledMain = false; | |
dependenciesFulfilled = function runCaller() { | |
// If run has never been called, and we should call run (INVOKE_RUN is true, and Module.noInitialRun is not false) | |
if (!calledRun) run(); | |
if (!calledRun) dependenciesFulfilled = runCaller; // try this again later, after new deps are fulfilled | |
}; | |
function callMain(args) { | |
assert(runDependencies == 0, 'cannot call main when async dependencies remain! (listen on Module["onRuntimeInitialized"])'); | |
assert(__ATPRERUN__.length == 0, 'cannot call main when preRun functions remain to be called'); | |
var entryFunction = Module['_main']; | |
args = args || []; | |
var argc = args.length+1; | |
var argv = stackAlloc((argc + 1) * 4); | |
HEAP32[argv >> 2] = allocateUTF8OnStack(thisProgram); | |
for (var i = 1; i < argc; i++) { | |
HEAP32[(argv >> 2) + i] = allocateUTF8OnStack(args[i - 1]); | |
} | |
HEAP32[(argv >> 2) + argc] = 0; | |
try { | |
Module['___set_stack_limit'](STACK_MAX); | |
var ret = entryFunction(argc, argv); | |
// In PROXY_TO_PTHREAD builds, we should never exit the runtime below, as execution is asynchronously handed | |
// off to a pthread. | |
// if we're not running an evented main loop, it's time to exit | |
exit(ret, /* implicit = */ true); | |
} | |
catch(e) { | |
if (e instanceof ExitStatus) { | |
// exit() throws this once it's done to make sure execution | |
// has been stopped completely | |
return; | |
} else if (e == 'unwind') { | |
// running an evented main loop, don't immediately exit | |
noExitRuntime = true; | |
return; | |
} else { | |
var toLog = e; | |
if (e && typeof e === 'object' && e.stack) { | |
toLog = [e, e.stack]; | |
} | |
err('exception thrown: ' + toLog); | |
quit_(1, e); | |
} | |
} finally { | |
calledMain = true; | |
} | |
} | |
/** @type {function(Array=)} */ | |
function run(args) { | |
args = args || arguments_; | |
if (runDependencies > 0) { | |
return; | |
} | |
writeStackCookie(); | |
preRun(); | |
if (runDependencies > 0) return; // a preRun added a dependency, run will be called later | |
function doRun() { | |
// run may have just been called through dependencies being fulfilled just in this very frame, | |
// or while the async setStatus time below was happening | |
if (calledRun) return; | |
calledRun = true; | |
Module['calledRun'] = true; | |
if (ABORT) return; | |
initRuntime(); | |
preMain(); | |
if (Module['onRuntimeInitialized']) Module['onRuntimeInitialized'](); | |
if (shouldRunNow) callMain(args); | |
postRun(); | |
} | |
if (Module['setStatus']) { | |
Module['setStatus']('Running...'); | |
setTimeout(function() { | |
setTimeout(function() { | |
Module['setStatus'](''); | |
}, 1); | |
doRun(); | |
}, 1); | |
} else | |
{ | |
doRun(); | |
} | |
checkStackCookie(); | |
} | |
Module['run'] = run; | |
function checkUnflushedContent() { | |
// Compiler settings do not allow exiting the runtime, so flushing | |
// the streams is not possible. but in ASSERTIONS mode we check | |
// if there was something to flush, and if so tell the user they | |
// should request that the runtime be exitable. | |
// Normally we would not even include flush() at all, but in ASSERTIONS | |
// builds we do so just for this check, and here we see if there is any | |
// content to flush, that is, we check if there would have been | |
// something a non-ASSERTIONS build would have not seen. | |
// How we flush the streams depends on whether we are in SYSCALLS_REQUIRE_FILESYSTEM=0 | |
// mode (which has its own special function for this; otherwise, all | |
// the code is inside libc) | |
var print = out; | |
var printErr = err; | |
var has = false; | |
out = err = function(x) { | |
has = true; | |
} | |
try { // it doesn't matter if it fails | |
var flush = flush_NO_FILESYSTEM; | |
if (flush) flush(); | |
} catch(e) {} | |
out = print; | |
err = printErr; | |
if (has) { | |
warnOnce('stdio streams had content in them that was not flushed. you should set EXIT_RUNTIME to 1 (see the FAQ), or make sure to emit a newline when you printf etc.'); | |
warnOnce('(this may also be due to not including full filesystem support - try building with -s FORCE_FILESYSTEM=1)'); | |
} | |
} | |
/** @param {boolean|number=} implicit */ | |
function exit(status, implicit) { | |
checkUnflushedContent(); | |
// if this is just main exit-ing implicitly, and the status is 0, then we | |
// don't need to do anything here and can just leave. if the status is | |
// non-zero, though, then we need to report it. | |
// (we may have warned about this earlier, if a situation justifies doing so) | |
if (implicit && noExitRuntime && status === 0) { | |
return; | |
} | |
if (noExitRuntime) { | |
// if exit() was called, we may warn the user if the runtime isn't actually being shut down | |
if (!implicit) { | |
var msg = 'program exited (with status: ' + status + '), but EXIT_RUNTIME is not set, so halting execution but not exiting the runtime or preventing further async execution (build with EXIT_RUNTIME=1, if you want a true shutdown)'; | |
err(msg); | |
} | |
} else { | |
ABORT = true; | |
EXITSTATUS = status; | |
exitRuntime(); | |
if (Module['onExit']) Module['onExit'](status); | |
} | |
quit_(status, new ExitStatus(status)); | |
} | |
if (Module['preInit']) { | |
if (typeof Module['preInit'] == 'function') Module['preInit'] = [Module['preInit']]; | |
while (Module['preInit'].length > 0) { | |
Module['preInit'].pop()(); | |
} | |
} | |
// shouldRunNow refers to calling main(), not run(). | |
var shouldRunNow = true; | |
if (Module['noInitialRun']) shouldRunNow = false; | |
noExitRuntime = true; | |
run(); | |
// {{MODULE_ADDITIONS}} | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment