Skip to content

Instantly share code, notes, and snippets.

@AaronC81
Created May 7, 2017 10:51
Show Gist options
  • Save AaronC81/0b8e1f5fd3f7e59f7b24194d7347feb2 to your computer and use it in GitHub Desktop.
Save AaronC81/0b8e1f5fd3f7e59f7b24194d7347feb2 to your computer and use it in GitHub Desktop.
SO #43830559
<!doctype html>
<html lang="en-us">
<head>
<meta charset="utf-8">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Emscripten-Generated Code</title>
<style>
.emscripten { padding-right: 0; margin-left: auto; margin-right: auto; display: block; }
textarea.emscripten { font-family: monospace; width: 80%; }
div.emscripten { text-align: center; }
div.emscripten_border { border: 1px solid black; }
/* the canvas *must not* have any border or padding, or mouse coords will be wrong */
canvas.emscripten { border: 0px none; }
.spinner {
height: 50px;
width: 50px;
margin: 0px auto;
-webkit-animation: rotation .8s linear infinite;
-moz-animation: rotation .8s linear infinite;
-o-animation: rotation .8s linear infinite;
animation: rotation 0.8s linear infinite;
border-left: 10px solid rgb(0,150,240);
border-right: 10px solid rgb(0,150,240);
border-bottom: 10px solid rgb(0,150,240);
border-top: 10px solid rgb(100,0,200);
border-radius: 100%;
background-color: rgb(200,100,250);
}
@-webkit-keyframes rotation {
from {-webkit-transform: rotate(0deg);}
to {-webkit-transform: rotate(360deg);}
}
@-moz-keyframes rotation {
from {-moz-transform: rotate(0deg);}
to {-moz-transform: rotate(360deg);}
}
@-o-keyframes rotation {
from {-o-transform: rotate(0deg);}
to {-o-transform: rotate(360deg);}
}
@keyframes rotation {
from {transform: rotate(0deg);}
to {transform: rotate(360deg);}
}
</style>
</head>
<body>
<hr/>
<figure style="overflow:visible;" id="spinner"><div class="spinner"></div><center style="margin-top:0.5em"><strong>emscripten</strong></center></figure>
<div class="emscripten" id="status">Downloading...</div>
<div class="emscripten">
<progress value="0" max="100" id="progress" hidden=1></progress>
</div>
<div class="emscripten_border">
<canvas class="emscripten" id="canvas" oncontextmenu="event.preventDefault()"></canvas>
</div>
<hr/>
<div class="emscripten">
<input type="checkbox" id="resize">Resize canvas
<input type="checkbox" id="pointerLock" checked>Lock/hide mouse pointer
&nbsp;&nbsp;&nbsp;
<input type="button" value="Fullscreen" onclick="Module.requestFullScreen(document.getElementById('pointerLock').checked,
document.getElementById('resize').checked)">
</div>
<hr/>
<textarea class="emscripten" id="output" rows="8"></textarea>
<hr>
<script type='text/javascript'>
var statusElement = document.getElementById('status');
var progressElement = document.getElementById('progress');
var spinnerElement = document.getElementById('spinner');
var Module = {
preRun: [],
postRun: [],
print: (function() {
var element = document.getElementById('output');
element.value = ''; // clear browser cache
return function(text) {
text = Array.prototype.slice.call(arguments).join(' ');
// These replacements are necessary if you render to raw HTML
//text = text.replace(/&/g, "&amp;");
//text = text.replace(/</g, "&lt;");
//text = text.replace(/>/g, "&gt;");
//text = text.replace('\n', '<br>', 'g');
element.value += text + "\n";
element.scrollTop = element.scrollHeight; // focus on bottom
};
})(),
printErr: function(text) {
text = Array.prototype.slice.call(arguments).join(' ');
if (0) { // XXX disabled for safety typeof dump == 'function') {
dump(text + '\n'); // fast, straight to the real console
} else {
console.log(text);
}
},
canvas: document.getElementById('canvas'),
setStatus: function(text) {
if (!Module.setStatus.last) Module.setStatus.last = { time: Date.now(), text: '' };
if (text === Module.setStatus.text) return;
var m = text.match(/([^(]+)\((\d+(\.\d+)?)\/(\d+)\)/);
var now = Date.now();
if (m && now - Date.now() < 30) return; // if this is a progress update, skip it if too soon
if (m) {
text = m[1];
progressElement.value = parseInt(m[2])*100;
progressElement.max = parseInt(m[4])*100;
progressElement.hidden = false;
spinnerElement.hidden = false;
} else {
progressElement.value = null;
progressElement.max = null;
progressElement.hidden = true;
if (!text) spinnerElement.hidden = true;
}
statusElement.innerHTML = text;
},
totalDependencies: 0,
monitorRunDependencies: function(left) {
this.totalDependencies = Math.max(this.totalDependencies, left);
Module.setStatus(left ? 'Preparing... (' + (this.totalDependencies-left) + '/' + this.totalDependencies + ')' : 'All downloads complete.');
}
};
Module.setStatus('Downloading...');
</script>
<script async type="text/javascript" src="index.js"></script>
</body>
</html>
// Note: Some Emscripten settings will significantly limit the speed of the generated code.
// Note: Some Emscripten settings may limit the speed of the generated code.
// The Module object: Our interface to the outside world. We import
// and export values on it, and do the work to get that through
// closure compiler if necessary. 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 do an eval in order to handle the closure compiler
// case, where this code here is minified but Module was defined
// elsewhere (e.g. case 4 above). We also need to check if Module
// already exists (e.g. case 3 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;
if (!Module) Module = eval('(function() { try { return Module || {} } catch(e) { return {} } })()');
// 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 = {};
for (var key in Module) {
if (Module.hasOwnProperty(key)) {
moduleOverrides[key] = Module[key];
}
}
// The environment setup code below is customized to use Module.
// *** Environment setup code ***
var ENVIRONMENT_IS_NODE = typeof process === 'object' && typeof require === 'function';
var ENVIRONMENT_IS_WEB = typeof window === 'object';
var ENVIRONMENT_IS_WORKER = typeof importScripts === 'function';
var ENVIRONMENT_IS_SHELL = !ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_NODE && !ENVIRONMENT_IS_WORKER;
if (ENVIRONMENT_IS_NODE) {
// Expose functionality in the same simple way that the shells work
// Note that we pollute the global namespace here, otherwise we break in node
if (!Module['print']) Module['print'] = function print(x) {
process['stdout'].write(x + '\n');
};
if (!Module['printErr']) Module['printErr'] = function printErr(x) {
process['stderr'].write(x + '\n');
};
var nodeFS = require('fs');
var nodePath = require('path');
Module['read'] = function read(filename, binary) {
filename = nodePath['normalize'](filename);
var ret = nodeFS['readFileSync'](filename);
// The path is absolute if the normalized version is the same as the resolved.
if (!ret && filename != nodePath['resolve'](filename)) {
filename = path.join(__dirname, '..', 'src', filename);
ret = nodeFS['readFileSync'](filename);
}
if (ret && !binary) ret = ret.toString();
return ret;
};
Module['readBinary'] = function readBinary(filename) { return Module['read'](filename, true) };
Module['load'] = function load(f) {
globalEval(read(f));
};
Module['arguments'] = process['argv'].slice(2);
module['exports'] = Module;
}
else if (ENVIRONMENT_IS_SHELL) {
if (!Module['print']) Module['print'] = print;
if (typeof printErr != 'undefined') Module['printErr'] = printErr; // not present in v8 or older sm
if (typeof read != 'undefined') {
Module['read'] = read;
} else {
Module['read'] = function read() { throw 'no read() available (jsc?)' };
}
Module['readBinary'] = function readBinary(f) {
return read(f, 'binary');
};
if (typeof scriptArgs != 'undefined') {
Module['arguments'] = scriptArgs;
} else if (typeof arguments != 'undefined') {
Module['arguments'] = arguments;
}
this['Module'] = Module;
eval("if (typeof gc === 'function' && gc.toString().indexOf('[native code]') > 0) var gc = undefined"); // wipe out the SpiderMonkey shell 'gc' function, which can confuse closure (uses it as a minified name, and it is then initted to a non-falsey value unexpectedly)
}
else if (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) {
Module['read'] = function read(url) {
var xhr = new XMLHttpRequest();
xhr.open('GET', url, false);
xhr.send(null);
return xhr.responseText;
};
if (typeof arguments != 'undefined') {
Module['arguments'] = arguments;
}
if (typeof console !== 'undefined') {
if (!Module['print']) Module['print'] = function print(x) {
console.log(x);
};
if (!Module['printErr']) Module['printErr'] = function printErr(x) {
console.log(x);
};
} else {
// Probably a worker, and without console.log. We can do very little here...
var TRY_USE_DUMP = false;
if (!Module['print']) Module['print'] = (TRY_USE_DUMP && (typeof(dump) !== "undefined") ? (function(x) {
dump(x);
}) : (function(x) {
// self.postMessage(x); // enable this if you want stdout to be sent as messages
}));
}
if (ENVIRONMENT_IS_WEB) {
this['Module'] = Module;
} else {
Module['load'] = importScripts;
}
}
else {
// Unreachable because SHELL is dependant on the others
throw 'Unknown runtime environment. Where are we?';
}
function globalEval(x) {
eval.call(null, x);
}
if (!Module['load'] == 'undefined' && Module['read']) {
Module['load'] = function load(f) {
globalEval(Module['read'](f));
};
}
if (!Module['print']) {
Module['print'] = function(){};
}
if (!Module['printErr']) {
Module['printErr'] = Module['print'];
}
if (!Module['arguments']) {
Module['arguments'] = [];
}
// *** Environment setup code ***
// Closure helpers
Module.print = Module['print'];
Module.printErr = Module['printErr'];
// Callbacks
Module['preRun'] = [];
Module['postRun'] = [];
// Merge back in the overrides
for (var key in moduleOverrides) {
if (moduleOverrides.hasOwnProperty(key)) {
Module[key] = moduleOverrides[key];
}
}
// === Auto-generated preamble library stuff ===
//========================================
// Runtime code shared with compiler
//========================================
var Runtime = {
stackSave: function () {
return STACKTOP;
},
stackRestore: function (stackTop) {
STACKTOP = stackTop;
},
forceAlign: function (target, quantum) {
quantum = quantum || 4;
if (quantum == 1) return target;
if (isNumber(target) && isNumber(quantum)) {
return Math.ceil(target/quantum)*quantum;
} else if (isNumber(quantum) && isPowerOfTwo(quantum)) {
return '(((' +target + ')+' + (quantum-1) + ')&' + -quantum + ')';
}
return 'Math.ceil((' + target + ')/' + quantum + ')*' + quantum;
},
isNumberType: function (type) {
return type in Runtime.INT_TYPES || type in Runtime.FLOAT_TYPES;
},
isPointerType: function isPointerType(type) {
return type[type.length-1] == '*';
},
isStructType: function isStructType(type) {
if (isPointerType(type)) return false;
if (isArrayType(type)) return true;
if (/<?{ ?[^}]* ?}>?/.test(type)) return true; // { i32, i8 } etc. - anonymous struct types
// See comment in isStructPointerType()
return type[0] == '%';
},
INT_TYPES: {"i1":0,"i8":0,"i16":0,"i32":0,"i64":0},
FLOAT_TYPES: {"float":0,"double":0},
or64: function (x, y) {
var l = (x | 0) | (y | 0);
var h = (Math.round(x / 4294967296) | Math.round(y / 4294967296)) * 4294967296;
return l + h;
},
and64: function (x, y) {
var l = (x | 0) & (y | 0);
var h = (Math.round(x / 4294967296) & Math.round(y / 4294967296)) * 4294967296;
return l + h;
},
xor64: function (x, y) {
var l = (x | 0) ^ (y | 0);
var h = (Math.round(x / 4294967296) ^ Math.round(y / 4294967296)) * 4294967296;
return l + h;
},
getNativeTypeSize: function (type) {
switch (type) {
case 'i1': case 'i8': return 1;
case 'i16': return 2;
case 'i32': return 4;
case 'i64': return 8;
case 'float': return 4;
case 'double': return 8;
default: {
if (type[type.length-1] === '*') {
return Runtime.QUANTUM_SIZE; // A pointer
} else if (type[0] === 'i') {
var bits = parseInt(type.substr(1));
assert(bits % 8 === 0);
return bits/8;
} else {
return 0;
}
}
}
},
getNativeFieldSize: function (type) {
return Math.max(Runtime.getNativeTypeSize(type), Runtime.QUANTUM_SIZE);
},
dedup: function dedup(items, ident) {
var seen = {};
if (ident) {
return items.filter(function(item) {
if (seen[item[ident]]) return false;
seen[item[ident]] = true;
return true;
});
} else {
return items.filter(function(item) {
if (seen[item]) return false;
seen[item] = true;
return true;
});
}
},
set: function set() {
var args = typeof arguments[0] === 'object' ? arguments[0] : arguments;
var ret = {};
for (var i = 0; i < args.length; i++) {
ret[args[i]] = 0;
}
return ret;
},
STACK_ALIGN: 8,
getAlignSize: function (type, size, vararg) {
// we align i64s and doubles on 64-bit boundaries, unlike x86
if (vararg) return 8;
if (!vararg && (type == 'i64' || type == 'double')) return 8;
if (!type) return Math.min(size, 8); // align structures internally to 64 bits
return Math.min(size || (type ? Runtime.getNativeFieldSize(type) : 0), Runtime.QUANTUM_SIZE);
},
calculateStructAlignment: function calculateStructAlignment(type) {
type.flatSize = 0;
type.alignSize = 0;
var diffs = [];
var prev = -1;
var index = 0;
type.flatIndexes = type.fields.map(function(field) {
index++;
var size, alignSize;
if (Runtime.isNumberType(field) || Runtime.isPointerType(field)) {
size = Runtime.getNativeTypeSize(field); // pack char; char; in structs, also char[X]s.
alignSize = Runtime.getAlignSize(field, size);
} else if (Runtime.isStructType(field)) {
if (field[1] === '0') {
// this is [0 x something]. When inside another structure like here, it must be at the end,
// and it adds no size
// XXX this happens in java-nbody for example... assert(index === type.fields.length, 'zero-length in the middle!');
size = 0;
if (Types.types[field]) {
alignSize = Runtime.getAlignSize(null, Types.types[field].alignSize);
} else {
alignSize = type.alignSize || QUANTUM_SIZE;
}
} else {
size = Types.types[field].flatSize;
alignSize = Runtime.getAlignSize(null, Types.types[field].alignSize);
}
} else if (field[0] == 'b') {
// bN, large number field, like a [N x i8]
size = field.substr(1)|0;
alignSize = 1;
} else if (field[0] === '<') {
// vector type
size = alignSize = Types.types[field].flatSize; // fully aligned
} else if (field[0] === 'i') {
// illegal integer field, that could not be legalized because it is an internal structure field
// it is ok to have such fields, if we just use them as markers of field size and nothing more complex
size = alignSize = parseInt(field.substr(1))/8;
assert(size % 1 === 0, 'cannot handle non-byte-size field ' + field);
} else {
assert(false, 'invalid type for calculateStructAlignment');
}
if (type.packed) alignSize = 1;
type.alignSize = Math.max(type.alignSize, alignSize);
var curr = Runtime.alignMemory(type.flatSize, alignSize); // if necessary, place this on aligned memory
type.flatSize = curr + size;
if (prev >= 0) {
diffs.push(curr-prev);
}
prev = curr;
return curr;
});
if (type.name_ && type.name_[0] === '[') {
// arrays have 2 elements, so we get the proper difference. then we scale here. that way we avoid
// allocating a potentially huge array for [999999 x i8] etc.
type.flatSize = parseInt(type.name_.substr(1))*type.flatSize/2;
}
type.flatSize = Runtime.alignMemory(type.flatSize, type.alignSize);
if (diffs.length == 0) {
type.flatFactor = type.flatSize;
} else if (Runtime.dedup(diffs).length == 1) {
type.flatFactor = diffs[0];
}
type.needsFlattening = (type.flatFactor != 1);
return type.flatIndexes;
},
generateStructInfo: function (struct, typeName, offset) {
var type, alignment;
if (typeName) {
offset = offset || 0;
type = (typeof Types === 'undefined' ? Runtime.typeInfo : Types.types)[typeName];
if (!type) return null;
if (type.fields.length != struct.length) {
printErr('Number of named fields must match the type for ' + typeName + ': possibly duplicate struct names. Cannot return structInfo');
return null;
}
alignment = type.flatIndexes;
} else {
var type = { fields: struct.map(function(item) { return item[0] }) };
alignment = Runtime.calculateStructAlignment(type);
}
var ret = {
__size__: type.flatSize
};
if (typeName) {
struct.forEach(function(item, i) {
if (typeof item === 'string') {
ret[item] = alignment[i] + offset;
} else {
// embedded struct
var key;
for (var k in item) key = k;
ret[key] = Runtime.generateStructInfo(item[key], type.fields[i], alignment[i]);
}
});
} else {
struct.forEach(function(item, i) {
ret[item[1]] = alignment[i];
});
}
return ret;
},
dynCall: function (sig, ptr, args) {
if (args && args.length) {
assert(args.length == sig.length-1);
return FUNCTION_TABLE[ptr].apply(null, args);
} else {
assert(sig.length == 1);
return FUNCTION_TABLE[ptr]();
}
},
addFunction: function (func) {
var table = FUNCTION_TABLE;
var ret = table.length;
assert(ret % 2 === 0);
table.push(func);
for (var i = 0; i < 2-1; i++) table.push(0);
return ret;
},
removeFunction: function (index) {
var table = FUNCTION_TABLE;
table[index] = null;
},
getAsmConst: function (code, numArgs) {
// code is a constant string on the heap, so we can cache these
if (!Runtime.asmConstCache) Runtime.asmConstCache = {};
var func = Runtime.asmConstCache[code];
if (func) return func;
var args = [];
for (var i = 0; i < numArgs; i++) {
args.push(String.fromCharCode(36) + i); // $0, $1 etc
}
code = Pointer_stringify(code);
if (code[0] === '"') {
// tolerate EM_ASM("..code..") even though EM_ASM(..code..) is correct
if (code.indexOf('"', 1) === code.length-1) {
code = code.substr(1, code.length-2);
} else {
// something invalid happened, e.g. EM_ASM("..code($0)..", input)
abort('invalid EM_ASM input |' + code + '|. Please use EM_ASM(..code..) (no quotes) or EM_ASM({ ..code($0).. }, input) (to input values)');
}
}
return Runtime.asmConstCache[code] = eval('(function(' + args.join(',') + '){ ' + code + ' })'); // new Function does not allow upvars in node
},
warnOnce: function (text) {
if (!Runtime.warnOnce.shown) Runtime.warnOnce.shown = {};
if (!Runtime.warnOnce.shown[text]) {
Runtime.warnOnce.shown[text] = 1;
Module.printErr(text);
}
},
funcWrappers: {},
getFuncWrapper: function (func, sig) {
assert(sig);
if (!Runtime.funcWrappers[func]) {
Runtime.funcWrappers[func] = function dynCall_wrapper() {
return Runtime.dynCall(sig, func, arguments);
};
}
return Runtime.funcWrappers[func];
},
UTF8Processor: function () {
var buffer = [];
var needed = 0;
this.processCChar = function (code) {
code = code & 0xFF;
if (buffer.length == 0) {
if ((code & 0x80) == 0x00) { // 0xxxxxxx
return String.fromCharCode(code);
}
buffer.push(code);
if ((code & 0xE0) == 0xC0) { // 110xxxxx
needed = 1;
} else if ((code & 0xF0) == 0xE0) { // 1110xxxx
needed = 2;
} else { // 11110xxx
needed = 3;
}
return '';
}
if (needed) {
buffer.push(code);
needed--;
if (needed > 0) return '';
}
var c1 = buffer[0];
var c2 = buffer[1];
var c3 = buffer[2];
var c4 = buffer[3];
var ret;
if (buffer.length == 2) {
ret = String.fromCharCode(((c1 & 0x1F) << 6) | (c2 & 0x3F));
} else if (buffer.length == 3) {
ret = String.fromCharCode(((c1 & 0x0F) << 12) | ((c2 & 0x3F) << 6) | (c3 & 0x3F));
} else {
// http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae
var codePoint = ((c1 & 0x07) << 18) | ((c2 & 0x3F) << 12) |
((c3 & 0x3F) << 6) | (c4 & 0x3F);
ret = String.fromCharCode(
Math.floor((codePoint - 0x10000) / 0x400) + 0xD800,
(codePoint - 0x10000) % 0x400 + 0xDC00);
}
buffer.length = 0;
return ret;
}
this.processJSString = function processJSString(string) {
string = unescape(encodeURIComponent(string));
var ret = [];
for (var i = 0; i < string.length; i++) {
ret.push(string.charCodeAt(i));
}
return ret;
}
},
stackAlloc: function (size) { var ret = STACKTOP;STACKTOP = (STACKTOP + size)|0;STACKTOP = (((STACKTOP)+7)&-8);(assert((STACKTOP|0) < (STACK_MAX|0))|0); return ret; },
staticAlloc: function (size) { var ret = STATICTOP;STATICTOP = (STATICTOP + (assert(!staticSealed),size))|0;STATICTOP = (((STATICTOP)+7)&-8); return ret; },
dynamicAlloc: function (size) { var ret = DYNAMICTOP;DYNAMICTOP = (DYNAMICTOP + (assert(DYNAMICTOP > 0),size))|0;DYNAMICTOP = (((DYNAMICTOP)+7)&-8); if (DYNAMICTOP >= TOTAL_MEMORY) enlargeMemory();; return ret; },
alignMemory: function (size,quantum) { var ret = size = Math.ceil((size)/(quantum ? quantum : 8))*(quantum ? quantum : 8); return ret; },
makeBigInt: function (low,high,unsigned) { var ret = (unsigned ? ((low>>>0)+((high>>>0)*4294967296)) : ((low>>>0)+((high|0)*4294967296))); return ret; },
GLOBAL_BASE: 8,
QUANTUM_SIZE: 4,
__dummy__: 0
}
Module['Runtime'] = Runtime;
//========================================
// Runtime essentials
//========================================
var __THREW__ = 0; // Used in checking for thrown exceptions.
var setjmpId = 1; // Used in setjmp/longjmp
var setjmpLabels = {};
var ABORT = false; // whether we are quitting the application. no code should run after this. set in exit() and abort()
var EXITSTATUS = 0;
var undef = 0;
// tempInt is used for 32-bit signed values or smaller. tempBigInt is used
// for 32-bit unsigned values or more than 32 bits. TODO: audit all uses of tempInt
var tempValue, tempInt, tempBigInt, tempInt2, tempBigInt2, tempPair, tempBigIntI, tempBigIntR, tempBigIntS, tempBigIntP, tempBigIntD, tempDouble, tempFloat;
var tempI64, tempI64b;
var tempRet0, tempRet1, tempRet2, tempRet3, tempRet4, tempRet5, tempRet6, tempRet7, tempRet8, tempRet9;
function assert(condition, text) {
if (!condition) {
abort('Assertion failed: ' + text);
}
}
var globalScope = this;
// C calling interface. A convenient way to call C functions (in C files, or
// defined with extern "C").
//
// Note: LLVM optimizations can inline and remove functions, after which you will not be
// able to call them. Closure can also do so. To avoid that, add your function to
// the exports using something like
//
// -s EXPORTED_FUNCTIONS='["_main", "_myfunc"]'
//
// @param ident The name of the C function (note that C++ functions will be name-mangled - use extern "C")
// @param returnType The return type of the function, one of the JS types 'number', 'string' or 'array' (use 'number' for any C pointer, and
// 'array' for JavaScript arrays and typed arrays; note that arrays are 8-bit).
// @param argTypes An array of the types of arguments for the function (if there are no arguments, this can be ommitted). Types are as in returnType,
// except that 'array' is not possible (there is no way for us to know the length of the array)
// @param args An array of the arguments to the function, as native JS values (as in returnType)
// Note that string arguments will be stored on the stack (the JS string will become a C string on the stack).
// @return The return value, as a native JS value (as in returnType)
function ccall(ident, returnType, argTypes, args) {
return ccallFunc(getCFunc(ident), returnType, argTypes, args);
}
Module["ccall"] = ccall;
// Returns the C function with a specified identifier (for C++, you need to do manual name mangling)
function getCFunc(ident) {
try {
var func = Module['_' + ident]; // closure exported function
if (!func) func = eval('_' + ident); // explicit lookup
} catch(e) {
}
assert(func, 'Cannot call unknown function ' + ident + ' (perhaps LLVM optimizations or closure removed it?)');
return func;
}
// Internal function that does a C call using a function, not an identifier
function ccallFunc(func, returnType, argTypes, args) {
var stack = 0;
function toC(value, type) {
if (type == 'string') {
if (value === null || value === undefined || value === 0) return 0; // null string
value = intArrayFromString(value);
type = 'array';
}
if (type == 'array') {
if (!stack) stack = Runtime.stackSave();
var ret = Runtime.stackAlloc(value.length);
writeArrayToMemory(value, ret);
return ret;
}
return value;
}
function fromC(value, type) {
if (type == 'string') {
return Pointer_stringify(value);
}
assert(type != 'array');
return value;
}
var i = 0;
var cArgs = args ? args.map(function(arg) {
return toC(arg, argTypes[i++]);
}) : [];
var ret = fromC(func.apply(null, cArgs), returnType);
if (stack) Runtime.stackRestore(stack);
return ret;
}
// Returns a native JS wrapper for a C function. This is similar to ccall, but
// returns a function you can call repeatedly in a normal way. For example:
//
// var my_function = cwrap('my_c_function', 'number', ['number', 'number']);
// alert(my_function(5, 22));
// alert(my_function(99, 12));
//
function cwrap(ident, returnType, argTypes) {
var func = getCFunc(ident);
return function() {
return ccallFunc(func, returnType, argTypes, Array.prototype.slice.call(arguments));
}
}
Module["cwrap"] = cwrap;
// Sets a value in memory in a dynamic way at run-time. Uses the
// type data. This is the same as makeSetValue, except that
// makeSetValue is done at compile-time and generates the needed
// code then, whereas this function picks the right code at
// run-time.
// Note that setValue and getValue only do *aligned* writes and reads!
// Note that ccall uses JS types as for defining types, while setValue and
// getValue need LLVM types ('i8', 'i32') - this is a lower-level operation
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)]=value; break;
case 'i8': HEAP8[(ptr)]=value; break;
case 'i16': HEAP16[((ptr)>>1)]=value; break;
case 'i32': HEAP32[((ptr)>>2)]=value; break;
case 'i64': (tempI64 = [value>>>0,(tempDouble=value,Math_abs(tempDouble) >= 1 ? (tempDouble > 0 ? Math_min(Math_floor((tempDouble)/4294967296), 4294967295)>>>0 : (~~(Math_ceil((tempDouble - +(((~~(tempDouble)))>>>0))/4294967296)))>>>0) : 0)],HEAP32[((ptr)>>2)]=tempI64[0],HEAP32[(((ptr)+(4))>>2)]=tempI64[1]); break;
case 'float': HEAPF32[((ptr)>>2)]=value; break;
case 'double': HEAPF64[((ptr)>>3)]=value; break;
default: abort('invalid type for setValue: ' + type);
}
}
Module['setValue'] = setValue;
// Parallel to setValue.
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)];
case 'i8': return HEAP8[(ptr)];
case 'i16': return HEAP16[((ptr)>>1)];
case 'i32': return HEAP32[((ptr)>>2)];
case 'i64': return HEAP32[((ptr)>>2)];
case 'float': return HEAPF32[((ptr)>>2)];
case 'double': return HEAPF64[((ptr)>>3)];
default: abort('invalid type for setValue: ' + type);
}
return null;
}
Module['getValue'] = getValue;
var ALLOC_NORMAL = 0; // Tries to use _malloc()
var ALLOC_STACK = 1; // Lives for the duration of the current function call
var ALLOC_STATIC = 2; // Cannot be freed
var ALLOC_DYNAMIC = 3; // Cannot be freed except through sbrk
var ALLOC_NONE = 4; // Do not allocate
Module['ALLOC_NORMAL'] = ALLOC_NORMAL;
Module['ALLOC_STACK'] = ALLOC_STACK;
Module['ALLOC_STATIC'] = ALLOC_STATIC;
Module['ALLOC_DYNAMIC'] = ALLOC_DYNAMIC;
Module['ALLOC_NONE'] = ALLOC_NONE;
// 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_*
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, Runtime.stackAlloc, Runtime.staticAlloc, Runtime.dynamicAlloc][allocator === undefined ? ALLOC_STATIC : allocator](Math.max(size, singleType ? 1 : types.length));
}
if (zeroinit) {
var ptr = ret, stop;
assert((ret & 3) == 0);
stop = ret + (size & ~3);
for (; ptr < stop; ptr += 4) {
HEAP32[((ptr)>>2)]=0;
}
stop = ret + size;
while (ptr < stop) {
HEAP8[((ptr++)|0)]=0;
}
return ret;
}
if (singleType === 'i8') {
if (slab.subarray || slab.slice) {
HEAPU8.set(slab, ret);
} else {
HEAPU8.set(new Uint8Array(slab), ret);
}
return ret;
}
var i = 0, type, typeSize, previousType;
while (i < size) {
var curr = slab[i];
if (typeof curr === 'function') {
curr = Runtime.getFunctionIndex(curr);
}
type = singleType || types[i];
if (type === 0) {
i++;
continue;
}
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 = Runtime.getNativeTypeSize(type);
previousType = type;
}
i += typeSize;
}
return ret;
}
Module['allocate'] = allocate;
function Pointer_stringify(ptr, /* optional */ length) {
// TODO: use TextDecoder
// Find the length, and check for UTF while doing so
var hasUtf = false;
var t;
var i = 0;
while (1) {
assert(ptr + i < TOTAL_MEMORY);
t = HEAPU8[(((ptr)+(i))|0)];
if (t >= 128) hasUtf = true;
else if (t == 0 && !length) break;
i++;
if (length && i == length) break;
}
if (!length) length = i;
var ret = '';
if (!hasUtf) {
var MAX_CHUNK = 1024; // split up into chunks, because .apply on a huge string can overflow the stack
var curr;
while (length > 0) {
curr = String.fromCharCode.apply(String, HEAPU8.subarray(ptr, ptr + Math.min(length, MAX_CHUNK)));
ret = ret ? ret + curr : curr;
ptr += MAX_CHUNK;
length -= MAX_CHUNK;
}
return ret;
}
var utf8 = new Runtime.UTF8Processor();
for (i = 0; i < length; i++) {
assert(ptr + i < TOTAL_MEMORY);
t = HEAPU8[(((ptr)+(i))|0)];
ret += utf8.processCChar(t);
}
return ret;
}
Module['Pointer_stringify'] = Pointer_stringify;
// 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.
function UTF16ToString(ptr) {
var i = 0;
var str = '';
while (1) {
var codeUnit = HEAP16[(((ptr)+(i*2))>>1)];
if (codeUnit == 0)
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);
}
}
Module['UTF16ToString'] = UTF16ToString;
// Copies the given Javascript String object 'str' to the emscripten HEAP at address 'outPtr',
// null-terminated and encoded in UTF16LE form. The copy will require at most (str.length*2+1)*2 bytes of space in the HEAP.
function stringToUTF16(str, outPtr) {
for(var i = 0; i < str.length; ++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)+(i*2))>>1)]=codeUnit;
}
// Null-terminate the pointer to the HEAP.
HEAP16[(((outPtr)+(str.length*2))>>1)]=0;
}
Module['stringToUTF16'] = stringToUTF16;
// Given a pointer 'ptr' to a null-terminated UTF32LE-encoded string in the emscripten HEAP, returns
// a copy of that string as a Javascript String object.
function UTF32ToString(ptr) {
var i = 0;
var str = '';
while (1) {
var utf32 = HEAP32[(((ptr)+(i*4))>>2)];
if (utf32 == 0)
return str;
++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.
if (utf32 >= 0x10000) {
var ch = utf32 - 0x10000;
str += String.fromCharCode(0xD800 | (ch >> 10), 0xDC00 | (ch & 0x3FF));
} else {
str += String.fromCharCode(utf32);
}
}
}
Module['UTF32ToString'] = UTF32ToString;
// Copies the given Javascript String object 'str' to the emscripten HEAP at address 'outPtr',
// null-terminated and encoded in UTF32LE form. The copy will require at most (str.length+1)*4 bytes of space in the HEAP,
// but can use less, since str.length does not return the number of characters in the string, but the number of UTF-16 code units in the string.
function stringToUTF32(str, outPtr) {
var iChar = 0;
for(var iCodeUnit = 0; iCodeUnit < str.length; ++iCodeUnit) {
// 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.
var codeUnit = str.charCodeAt(iCodeUnit); // possibly a lead surrogate
if (codeUnit >= 0xD800 && codeUnit <= 0xDFFF) {
var trailSurrogate = str.charCodeAt(++iCodeUnit);
codeUnit = 0x10000 + ((codeUnit & 0x3FF) << 10) | (trailSurrogate & 0x3FF);
}
HEAP32[(((outPtr)+(iChar*4))>>2)]=codeUnit;
++iChar;
}
// Null-terminate the pointer to the HEAP.
HEAP32[(((outPtr)+(iChar*4))>>2)]=0;
}
Module['stringToUTF32'] = stringToUTF32;
function demangle(func) {
try {
// Special-case the entry point, since its name differs from other name mangling.
if (func == 'Object._main' || func == '_main') {
return 'main()';
}
if (typeof func === 'number') func = Pointer_stringify(func);
if (func[0] !== '_') return func;
if (func[1] !== '_') return func; // C function
if (func[2] !== 'Z') return func;
switch (func[3]) {
case 'n': return 'operator new()';
case 'd': return 'operator delete()';
}
var i = 3;
// params, etc.
var basicTypes = {
'v': 'void',
'b': 'bool',
'c': 'char',
's': 'short',
'i': 'int',
'l': 'long',
'f': 'float',
'd': 'double',
'w': 'wchar_t',
'a': 'signed char',
'h': 'unsigned char',
't': 'unsigned short',
'j': 'unsigned int',
'm': 'unsigned long',
'x': 'long long',
'y': 'unsigned long long',
'z': '...'
};
function dump(x) {
//return;
if (x) Module.print(x);
Module.print(func);
var pre = '';
for (var a = 0; a < i; a++) pre += ' ';
Module.print (pre + '^');
}
var subs = [];
function parseNested() {
i++;
if (func[i] === 'K') i++; // ignore const
var parts = [];
while (func[i] !== 'E') {
if (func[i] === 'S') { // substitution
i++;
var next = func.indexOf('_', i);
var num = func.substring(i, next) || 0;
parts.push(subs[num] || '?');
i = next+1;
continue;
}
if (func[i] === 'C') { // constructor
parts.push(parts[parts.length-1]);
i += 2;
continue;
}
var size = parseInt(func.substr(i));
var pre = size.toString().length;
if (!size || !pre) { i--; break; } // counter i++ below us
var curr = func.substr(i + pre, size);
parts.push(curr);
subs.push(curr);
i += pre + size;
}
i++; // skip E
return parts;
}
var first = true;
function parse(rawList, limit, allowVoid) { // main parser
limit = limit || Infinity;
var ret = '', list = [];
function flushList() {
return '(' + list.join(', ') + ')';
}
var name;
if (func[i] === 'N') {
// namespaced N-E
name = parseNested().join('::');
limit--;
if (limit === 0) return rawList ? [name] : name;
} else {
// not namespaced
if (func[i] === 'K' || (first && func[i] === 'L')) i++; // ignore const and first 'L'
var size = parseInt(func.substr(i));
if (size) {
var pre = size.toString().length;
name = func.substr(i + pre, size);
i += pre + size;
}
}
first = false;
if (func[i] === 'I') {
i++;
var iList = parse(true);
var iRet = parse(true, 1, true);
ret += iRet[0] + ' ' + name + '<' + iList.join(', ') + '>';
} else {
ret = name;
}
paramLoop: while (i < func.length && limit-- > 0) {
//dump('paramLoop');
var c = func[i++];
if (c in basicTypes) {
list.push(basicTypes[c]);
} else {
switch (c) {
case 'P': list.push(parse(true, 1, true)[0] + '*'); break; // pointer
case 'R': list.push(parse(true, 1, true)[0] + '&'); break; // reference
case 'L': { // literal
i++; // skip basic type
var end = func.indexOf('E', i);
var size = end - i;
list.push(func.substr(i, size));
i += size + 2; // size + 'EE'
break;
}
case 'A': { // array
var size = parseInt(func.substr(i));
i += size.toString().length;
if (func[i] !== '_') throw '?';
i++; // skip _
list.push(parse(true, 1, true)[0] + ' [' + size + ']');
break;
}
case 'E': break paramLoop;
default: ret += '?' + c; break paramLoop;
}
}
}
if (!allowVoid && list.length === 1 && list[0] === 'void') list = []; // avoid (void)
return rawList ? list : ret + flushList();
}
return parse();
} catch(e) {
return func;
}
}
function demangleAll(text) {
return text.replace(/__Z[\w\d_]+/g, function(x) { var y = demangle(x); return x === y ? x : (x + ' [' + y + ']') });
}
function stackTrace() {
var stack = new Error().stack;
return stack ? demangleAll(stack) : '(no stack trace available)'; // Stack trace is not available at least on IE10 and Safari 6.
}
// Memory management
var PAGE_SIZE = 4096;
function alignMemoryPage(x) {
return (x+4095)&-4096;
}
var HEAP;
var HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64;
var STATIC_BASE = 0, STATICTOP = 0, staticSealed = false; // static area
var STACK_BASE = 0, STACKTOP = 0, STACK_MAX = 0; // stack area
var DYNAMIC_BASE = 0, DYNAMICTOP = 0; // dynamic area handled by sbrk
function enlargeMemory() {
abort('Cannot enlarge memory arrays. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value ' + TOTAL_MEMORY + ', (2) compile with ALLOW_MEMORY_GROWTH which adjusts the size at runtime but prevents some optimizations, or (3) set Module.TOTAL_MEMORY before the program runs.');
}
var TOTAL_STACK = Module['TOTAL_STACK'] || 5242880;
var TOTAL_MEMORY = Module['TOTAL_MEMORY'] || 335544320;
var FAST_MEMORY = Module['FAST_MEMORY'] || 2097152;
// Initialize the runtime's memory
// check for full engine support (use string 'subarray' to avoid closure compiler confusion)
assert(typeof Int32Array !== 'undefined' && typeof Float64Array !== 'undefined' && !!(new Int32Array(1)['subarray']) && !!(new Int32Array(1)['set']),
'Cannot fallback to non-typed array case: Code is too specialized');
var buffer = new ArrayBuffer(TOTAL_MEMORY);
HEAP8 = new Int8Array(buffer);
HEAP16 = new Int16Array(buffer);
HEAP32 = new Int32Array(buffer);
HEAPU8 = new Uint8Array(buffer);
HEAPU16 = new Uint16Array(buffer);
HEAPU32 = new Uint32Array(buffer);
HEAPF32 = new Float32Array(buffer);
HEAPF64 = new Float64Array(buffer);
// Endianness check (note: assumes compiler arch was little-endian)
HEAP32[0] = 255;
assert(HEAPU8[0] === 255 && HEAPU8[3] === 0, 'Typed arrays 2 must be run on a little-endian system');
Module['HEAP'] = HEAP;
Module['HEAP8'] = HEAP8;
Module['HEAP16'] = HEAP16;
Module['HEAP32'] = HEAP32;
Module['HEAPU8'] = HEAPU8;
Module['HEAPU16'] = HEAPU16;
Module['HEAPU32'] = HEAPU32;
Module['HEAPF32'] = HEAPF32;
Module['HEAPF64'] = HEAPF64;
function callRuntimeCallbacks(callbacks) {
while(callbacks.length > 0) {
var callback = callbacks.shift();
if (typeof callback == 'function') {
callback();
continue;
}
var func = callback.func;
if (typeof func === 'number') {
if (callback.arg === undefined) {
Runtime.dynCall('v', func);
} else {
Runtime.dynCall('vi', func, [callback.arg]);
}
} else {
func(callback.arg === undefined ? null : callback.arg);
}
}
}
var __ATPRERUN__ = []; // 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 runtime has exited
var runtimeInitialized = false;
function preRun() {
// compatibility - merge in anything from Module['preRun'] at this time
if (Module['preRun']) {
if (typeof Module['preRun'] == 'function') Module['preRun'] = [Module['preRun']];
while (Module['preRun'].length) {
addOnPreRun(Module['preRun'].shift());
}
}
callRuntimeCallbacks(__ATPRERUN__);
}
function ensureInitRuntime() {
if (runtimeInitialized) return;
runtimeInitialized = true;
callRuntimeCallbacks(__ATINIT__);
}
function preMain() {
callRuntimeCallbacks(__ATMAIN__);
}
function exitRuntime() {
callRuntimeCallbacks(__ATEXIT__);
}
function postRun() {
// compatibility - merge in anything from Module['postRun'] at this time
if (Module['postRun']) {
if (typeof Module['postRun'] == 'function') Module['postRun'] = [Module['postRun']];
while (Module['postRun'].length) {
addOnPostRun(Module['postRun'].shift());
}
}
callRuntimeCallbacks(__ATPOSTRUN__);
}
function addOnPreRun(cb) {
__ATPRERUN__.unshift(cb);
}
Module['addOnPreRun'] = Module.addOnPreRun = addOnPreRun;
function addOnInit(cb) {
__ATINIT__.unshift(cb);
}
Module['addOnInit'] = Module.addOnInit = addOnInit;
function addOnPreMain(cb) {
__ATMAIN__.unshift(cb);
}
Module['addOnPreMain'] = Module.addOnPreMain = addOnPreMain;
function addOnExit(cb) {
__ATEXIT__.unshift(cb);
}
Module['addOnExit'] = Module.addOnExit = addOnExit;
function addOnPostRun(cb) {
__ATPOSTRUN__.unshift(cb);
}
Module['addOnPostRun'] = Module.addOnPostRun = addOnPostRun;
// Tools
// This processes a JS string into a C-line array of numbers, 0-terminated.
// For LLVM-originating strings, see parser.js:parseLLVMString function
function intArrayFromString(stringy, dontAddNull, length /* optional */) {
var ret = (new Runtime.UTF8Processor()).processJSString(stringy);
if (length) {
ret.length = length;
}
if (!dontAddNull) {
ret.push(0);
}
return ret;
}
Module['intArrayFromString'] = intArrayFromString;
function intArrayToString(array) {
var ret = [];
for (var i = 0; i < array.length; i++) {
var chr = array[i];
if (chr > 0xFF) {
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('');
}
Module['intArrayToString'] = intArrayToString;
// Write a Javascript array to somewhere in the heap
function writeStringToMemory(string, buffer, dontAddNull) {
var array = intArrayFromString(string, dontAddNull);
var i = 0;
while (i < array.length) {
var chr = array[i];
HEAP8[(((buffer)+(i))|0)]=chr;
i = i + 1;
}
}
Module['writeStringToMemory'] = writeStringToMemory;
function writeArrayToMemory(array, buffer) {
for (var i = 0; i < array.length; i++) {
HEAP8[(((buffer)+(i))|0)]=array[i];
}
}
Module['writeArrayToMemory'] = writeArrayToMemory;
function writeAsciiToMemory(str, buffer, dontAddNull) {
for (var i = 0; i < str.length; i++) {
assert(str.charCodeAt(i) === str.charCodeAt(i)&0xff);
HEAP8[(((buffer)+(i))|0)]=str.charCodeAt(i);
}
if (!dontAddNull) HEAP8[(((buffer)+(str.length))|0)]=0;
}
Module['writeAsciiToMemory'] = writeAsciiToMemory;
function unSign(value, bits, ignore, sig) {
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;
}
function reSign(value, bits, ignore, sig) {
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;
}
// check for imul support, and also for correctness ( https://bugs.webkit.org/show_bug.cgi?id=126345 )
if (!Math['imul'] || Math['imul'](0xffffffff, 5) !== -5) Math['imul'] = function imul(a, b) {
var ah = a >>> 16;
var al = a & 0xffff;
var bh = b >>> 16;
var bl = b & 0xffff;
return (al*bl + ((ah*bl + al*bh) << 16))|0;
};
Math.imul = Math['imul'];
var Math_abs = Math.abs;
var Math_cos = Math.cos;
var Math_sin = Math.sin;
var Math_tan = Math.tan;
var Math_acos = Math.acos;
var Math_asin = Math.asin;
var Math_atan = Math.atan;
var Math_atan2 = Math.atan2;
var Math_exp = Math.exp;
var Math_log = Math.log;
var Math_sqrt = Math.sqrt;
var Math_ceil = Math.ceil;
var Math_floor = Math.floor;
var Math_pow = Math.pow;
var Math_imul = Math.imul;
var Math_fround = Math.fround;
var Math_min = Math.min;
// 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
// PRE_RUN_ADDITIONS (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 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() {
var shown = false;
for (var dep in runDependencyTracking) {
if (!shown) {
shown = true;
Module.printErr('still waiting on run dependencies:');
}
Module.printErr('dependency: ' + dep);
}
if (shown) {
Module.printErr('(end of list)');
}
}, 10000);
}
} else {
Module.printErr('warning: run dependency added without ID');
}
}
Module['addRunDependency'] = addRunDependency;
function removeRunDependency(id) {
runDependencies--;
if (Module['monitorRunDependencies']) {
Module['monitorRunDependencies'](runDependencies);
}
if (id) {
assert(runDependencyTracking[id]);
delete runDependencyTracking[id];
} else {
Module.printErr('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['removeRunDependency'] = removeRunDependency;
Module["preloadedImages"] = {}; // maps url to image data
Module["preloadedAudios"] = {}; // maps url to audio data
var memoryInitializer = null;
// === Body ===
STATIC_BASE = 8;
STATICTOP = STATIC_BASE + 22352;
/* global initializers */ __ATINIT__.push({ func: function() { runPostSets() } });
var _timezone;
var _timezone=_timezone=allocate([0,0,0,0,0,0,0,0], "i8", ALLOC_STATIC);;
var _stdout;
var _stdout=_stdout=allocate([0,0,0,0,0,0,0,0], "i8", ALLOC_STATIC);;
var _stderr;
var _stderr=_stderr=allocate([0,0,0,0,0,0,0,0], "i8", ALLOC_STATIC);;
var _environ;
var _environ=_environ=allocate([0,0,0,0,0,0,0,0], "i8", ALLOC_STATIC);;
/* memory initializer */ allocate([6,0,1,2,3,4,5,0,112,19,0,0,104,19,0,0,88,19,0,0,24,19,0,0,8,19,0,0,0,0,0,0,8,10,0,0,240,9,0,0,208,9,0,0,144,9,0,0,72,9,0,0,40,9,0,0,8,9,0,0,0,0,0,0,152,11,0,0,128,11,0,0,72,11,0,0,48,11,0,0,8,11,0,0,208,10,0,0,152,10,0,0,128,10,0,0,104,10,0,0,80,10,0,0,56,10,0,0,40,10,0,0,200,9,0,0,40,8,0,0,184,6,0,0,160,3,0,0,200,25,0,0,144,24,0,0,104,23,0,0,96,22,0,0,136,21,0,0,168,20,0,0,200,19,0,0,48,19,0,0,128,18,0,0,216,17,0,0,56,17,0,0,112,16,0,0,40,16,0,0,208,15,0,0,160,15,0,0,128,15,0,0,64,15,0,0,8,15,0,0,216,14,0,0,120,14,0,0,56,14,0,0,0,14,0,0,184,13,0,0,112,13,0,0,80,13,0,0,48,13,0,0,24,13,0,0,240,12,0,0,216,12,0,0,184,12,0,0,112,12,0,0,80,12,0,0,40,12,0,0,0,12,0,0,240,11,0,0,224,11,0,0,208,11,0,0,176,11,0,0,136,11,0,0,112,11,0,0,56,11,0,0,32,11,0,0,216,10,0,0,160,10,0,0,136,10,0,0,112,10,0,0,88,10,0,0,64,10,0,0,48,10,0,0,24,10,0,0,248,9,0,0,216,9,0,0,160,9,0,0,88,9,0,0,48,9,0,0,16,9,0,0,0,9,0,0,200,8,0,0,176,8,0,0,160,8,0,0,104,8,0,0,64,8,0,0,24,8,0,0,216,7,0,0,192,7,0,0,168,7,0,0,136,7,0,0,56,7,0,0,32,7,0,0,24,7,0,0,0,7,0,0,232,6,0,0,200,6,0,0,152,6,0,0,48,4,0,0,32,4,0,0,16,4,0,0,0,4,0,0,240,3,0,0,224,3,0,0,208,3,0,0,192,3,0,0,168,3,0,0,128,3,0,0,104,3,0,0,88,3,0,0,72,3,0,0,56,3,0,0,40,3,0,0,24,3,0,0,248,25,0,0,232,25,0,0,208,25,0,0,168,25,0,0,136,25,0,0,120,25,0,0,104,25,0,0,88,25,0,0,72,25,0,0,56,25,0,0,24,25,0,0,232,24,0,0,160,24,0,0,80,24,0,0,48,24,0,0,32,24,0,0,16,24,0,0,248,23,0,0,216,23,0,0,200,23,0,0,176,23,0,0,144,23,0,0,120,23,0,0,64,23,0,0,40,23,0,0,16,23,0,0,0,23,0,0,240,22,0,0,224,22,0,0,208,22,0,0,176,22,0,0,144,22,0,0,128,22,0,0,64,22,0,0,32,22,0,0,16,22,0,0,8,22,0,0,248,21,0,0,232,21,0,0,216,21,0,0,184,21,0,0,168,21,0,0,152,21,0,0,120,21,0,0,96,21,0,0,80,21,0,0,64,21,0,0,48,21,0,0,32,21,0,0,16,21,0,0,0,21,0,0,224,20,0,0,184,20,0,0,152,20,0,0,120,20,0,0,88,20,0,0,72,20,0,0,56,20,0,0,40,20,0,0,24,20,0,0,248,19,0,0,232,19,0,0,216,19,0,0,168,19,0,0,136,19,0,0,0,0,0,0,160,18,0,0,248,17,0,0,88,17,0,0,144,16,0,0,56,16,0,0,240,15,0,0,176,15,0,0,144,15,0,0,110,110,107,87,104,101,110,83,116,109,116,0,0,0,0,0,110,110,107,73,102,83,116,109,116,0,0,0,0,0,0,0,110,110,107,80,114,97,103,109,97,66,108,111,99,107,0,0,110,110,107,80,114,97,103,109,97,0,0,0,0,0,0,0,110,110,107,65,115,109,83,116,109,116,0,0,0,0,0,0,110,110,107,69,108,115,101,0,114,97,105,115,101,79,117,116,79,102,77,101,109,0,0,0,110,110,107,69,120,99,101,112,116,66,114,97,110,99,104,0,111,115,112,97,116,104,115,46,110,105,109,0,0,0,0,0,110,110,107,83,121,109,0,0,110,110,107,69,108,105,102,66,114,97,110,99,104,0,0,0,102,105,110,100,0,0,0,0,110,110,107,79,102,66,114,97,110,99,104,0,0,0,0,0,110,110,107,73,116,101,114,97,116,111,114,68,101,102,0,0,110,110,107,84,101,109,112,108,97,116,101,68,101,102,0,0,110,110,107,77,97,99,114,111,68,101,102,0,0,0,0,0,110,110,107,67,111,110,118,101,114,116,101,114,68,101,102,0,110,110,107,77,101,116,104,111,100,68,101,102,0,0,0,0,110,110,107,80,114,111,99,68,101,102,0,0,0,0,0,0,110,110,107,73,109,112,111,114,116,65,115,0,0,0,0,0,101,120,99,108,0,0,0,0,123,32,118,97,114,32,103,32,61,32,40,40,116,121,112,101,111,102,32,119,105,110,100,111,119,41,32,61,61,61,32,39,117,110,100,101,102,105,110,101,100,39,41,32,63,32,103,108,111,98,97,108,32,58,32,119,105,110,100,111,119,59,32,103,46,95,110,105,109,101,109,95,111,32,61,32,123,48,58,32,110,117,108,108,125,59,32,103,46,95,110,105,109,101,109,95,105,32,61,32,48,59,32,103,46,95,110,105,109,101,109,95,119,32,61,32,102,117,110,99,116,105,111,110,40,111,41,32,123,32,105,102,32,40,111,32,61,61,61,32,110,117,108,108,41,32,114,101,116,117,114,110,32,48,59,32,103,46,95,110,105,109,101,109,95,111,91,43,43,103,46,95,110,105,109,101,109,95,105,93,32,61,32,111,59,32,114,101,116,117,114,110,32,103,46,95,110,105,109,101,109,95,105,59,32,125,59,32,103,46,95,110,105,109,101,109,95,115,32,61,32,102,117,110,99,116,105,111,110,40,115,41,32,123,32,118,97,114,32,108,32,61,32,108,101,110,103,116,104,66,121,116,101,115,85,84,70,56,40,115,41,59,32,118,97,114,32,98,32,61,32,95,110,105,109,101,109,95,112,115,40,108,41,59,32,115,116,114,105,110,103,84,111,85,84,70,56,40,115,44,32,95,110,105,109,101,109,95,115,98,40,98,41,44,32,108,32,43,32,49,41,59,32,114,101,116,117,114,110,32,98,59,32,125,59,32,103,46,95,110,105,109,101,109,95,101,32,61,32,102,117,110,99,116,105,111,110,40,101,41,32,123,32,118,97,114,32,115,32,61,32,34,69,120,99,101,112,116,105,111,110,58,32,34,32,43,32,40,40,101,46,109,101,115,115,97,103,101,32,33,61,61,32,117,110,100,101,102,105,110,101,100,41,32,63,32,101,46,109,101,115,115,97,103,101,32,58,32,34,85,110,107,110,111,119,110,34,41,59,32,105,102,32,40,101,46,115,116,97,99,107,32,33,61,61,32,117,110,100,101,102,105,110,101,100,41,32,115,32,43,61,32,34,58,32,34,32,43,32,101,46,115,116,97,99,107,59,32,118,97,114,32,99,32,61,32,97,108,108,111,99,97,116,101,40,105,110,116,65,114,114,97,121,70,114,111,109,83,116,114,105,110,103,40,115,41,44,32,39,105,56,39,44,32,65,76,76,79,67,95,78,79,82,77,65,76,41,59,32,95,110,105,109,101,109,95,101,101,40,99,41,59,32,95,102,114,101,101,40,99,41,59,32,116,104,114,111,119,32,101,59,32,125,59,32,125,0,0,0,0,0,0,110,110,107,79,102,73,110,104,101,114,105,116,0,0,0,0,106,111,105,110,80,97,116,104,0,0,0,0,0,0,0,0,110,110,107,73,100,101,110,116,0,0,0,0,0,0,0,0,110,110,107,70,111,114,109,97,108,80,97,114,97,109,115,0,115,116,97,114,116,115,87,105,116,104,0,0,0,0,0,0,110,110,107,71,101,110,101,114,105,99,80,97,114,97,109,115,0,0,0,0,0,0,0,0,110,110,107,70,97,115,116,65,115,103,110,0,0,0,0,0,111,110,101,114,114,111,114,0,110,110,107,65,115,103,110,0,110,110,107,67,83,116,114,105,110,103,84,111,83,116,114,105,110,103,0,0,0,0,0,0,110,110,107,83,116,114,105,110,103,84,111,67,83,116,114,105,110,103,0,0,0,0,0,0,123,114,101,116,117,114,110,32,95,110,105,109,101,109,95,119,40,102,117,110,99,116,105,111,110,40,41,123,114,101,116,117,114,110,32,99,111,110,115,111,108,101,59,125,40,41,41,125,0,0,0,0,0,0,0,0,110,110,107,67,104,99,107,82,97,110,103,101,0,0,0,0,116,105,109,101,122,111,110,101,0,0,0,0,0,0,0,0,110,110,107,67,104,99,107,82,97,110,103,101,54,52,0,0,105,115,68,83,84,0,0,0,110,110,107,67,104,99,107,82,97,110,103,101,70,0,0,0,121,101,97,114,100,97,121,0,110,110,107,79,98,106,85,112,67,111,110,118,0,0,0,0,99,111,110,116,97,105,110,115,0,0,0,0,0,0,0,0,101,109,115,99,114,105,112,116,101,110,46,110,105,109,0,0,119,101,101,107,100,97,121,0,103,101,116,69,110,118,0,0,110,110,107,79,98,106,68,111,119,110,67,111,110,118,0,0,110,110,107,69,109,112,116,121,0,0,0,0,0,0,0,0,121,101,97,114,0,0,0,0,110,110,107,72,105,100,100,101,110,68,101,114,101,102,0,0,109,111,110,116,104,0,0,0,115,101,108,101,99,116,66,114,97,110,99,104,0,0,0,0,110,110,107,72,105,100,100,101,110,65,100,100,114,0,0,0,109,111,110,116,104,100,97,121,0,0,0,0,0,0,0,0,111,110,108,111,97,100,0,0,103,101,116,68,105,115,99,114,105,109,105,110,97,110,116,0,110,110,107,65,100,100,114,0,104,111,117,114,0,0,0,0,110,110,107,83,116,97,116,105,99,69,120,112,114,0,0,0,109,105,110,117,116,101,0,0,110,110,107,67,97,115,116,0,115,101,99,111,110,100,0,0,123,95,110,105,109,101,109,95,111,91,36,48,93,46,108,111,103,40,85,84,70,56,84,111,83,116,114,105,110,103,40,36,49,41,41,125,0,0,0,0,110,110,107,67,111,110,118,0,100,83,117,110,0,0,0,0,110,110,107,72,105,100,100,101,110,83,117,98,67,111,110,118,0,0,0,0,0,0,0,0,100,83,97,116,0,0,0,0,110,110,107,72,105,100,100,101,110,83,116,100,67,111,110,118,0,0,0,0,0,0,0,0,100,70,114,105,0,0,0,0,110,101,119,83,101,113,0,0,110,110,107,79,112,101,110,83,121,109,67,104,111,105,99,101,0,0,0,0,0,0,0,0,115,121,115,116,101,109,46,110,105,109,0,0,0,0,0,0,105,110,105,116,69,109,98,105,110,100,69,110,118,0,0,0,100,84,104,117,0,0,0,0,108,111,103,0,0,0,0,0,110,110,107,67,108,111,115,101,100,83,121,109,67,104,111,105,99,101,0,0,0,0,0,0,102,105,110,100,69,110,118,86,97,114,0,0,0,0,0,0,110,110,107,78,111,110,101,0,100,87,101,100,0,0,0,0,110,110,107,66,105,110,100,0,112,97,114,115,101,117,116,105,108,115,0,0,0,0,0,0,100,84,117,101,0,0,0,0,110,110,107,84,97,98,108,101,67,111,110,115,116,114,0,0,100,77,111,110,0,0,0,0,70,105,101,108,100,49,0,0,110,110,107,65,99,99,81,117,111,116,101,100,0,0,0,0,109,68,101,99,0,0,0,0,110,110,107,68,111,0,0,0,109,78,111,118,0,0,0,0,110,110,107,76,97,109,98,100,97,0,0,0,0,0,0,0,109,79,99,116,0,0,0,0,110,110,107,69,108,115,101,69,120,112,114,0,0,0,0,0,109,83,101,112,0,0,0,0,110,110,107,69,108,105,102,69,120,112,114,0,0,0,0,0,109,65,117,103,0,0,0,0,110,110,107,73,102,69,120,112,114,0,0,0,0,0,0,0,109,74,117,108,0,0,0,0,110,110,107,68,101,114,101,102,69,120,112,114,0,0,0,0,105,110,116,83,101,116,71,101,116,0,0,0,0,0,0,0,108,111,103,103,105,110,103,46,110,105,109,0,0,0,0,0,109,74,117,110,0,0,0,0,110,110,107,67,104,101,99,107,101,100,70,105,101,108,100,69,120,112,114,0,0,0,0,0,109,97,99,114,111,115,0,0,103,101,116,69,110,118,86,97,114,115,67,0,0,0,0,0,109,77,97,121,0,0,0,0,116,111,76,111,119,101,114,65,115,99,105,105,0,0,0,0,110,110,107,68,111,116,69,120,112,114,0,0,0,0,0,0,109,65,112,114,0,0,0,0,110,110,107,82,97,110,103,101,0,0,0,0,0,0,0,0,109,77,97,114,0,0,0,0,70,105,101,108,100,48,0,0,114,97,105,115,101,69,73,79,0,0,0,0,0,0,0,0,109,97,116,104,0,0,0,0,110,110,107,80,114,97,103,109,97,69,120,112,114,0,0,0,109,70,101,98,0,0,0,0,110,110,107,66,114,97,99,107,101,116,69,120,112,114,0,0,109,74,97,110,0,0,0,0,102,108,117,115,104,70,105,108,101,0,0,0,0,0,0,0,110,110,107,66,114,97,99,107,101,116,0,0,0,0,0,0,116,105,109,101,115,0,0,0,37,115,10,0,0,0,0,0,110,110,107,67,117,114,108,121,69,120,112,114,0,0,0,0,110,110,107,67,117,114,108,121,0,0,0,0,0,0,0,0,110,110,107,79,98,106,67,111,110,115,116,114,0,0,0,0,110,110,107,80,97,114,0,0,112,116,114,83,105,122,101,0,110,105,109,101,109,95,101,101,0,0,0,0,0,0,0,0,111,112,101,110,0,0,0,0,110,110,107,86,97,114,84,117,112,108,101,0,0,0,0,0,73,110,100,101,120,69,114,114,111,114,0,0,0,0,0,0,99,108,111,115,101,0,0,0,110,110,107,73,100,101,110,116,68,101,102,115,0,0,0,0,115,121,115,105,111,46,110,105,109,0,0,0,0,0,0,0,110,110,107,69,120,112,114,67,111,108,111,110,69,120,112,114,0,0,0,0,0,0,0,0,115,121,115,105,111,46,110,105,109,0,0,0,0,0,0,0,101,109,115,99,114,105,112,116,101,110,0,0,0,0,0,0,103,101,116,70,105,108,101,72,97,110,100,108,101,0,0,0,110,110,107,69,120,112,114,69,113,69,120,112,114,0,0,0,119,114,105,116,101,76,105,110,101,0,0,0,0,0,0,0,110,110,107,72,105,100,100,101,110,67,97,108,108,67,111,110,118,0,0,0,0,0,0,0,110,110,107,80,111,115,116,102,105,120,0,0,0,0,0,0,110,101,119,79,98,106,0,0,116,101,115,116,46,110,105,109,0,0,0,0,0,0,0,0,110,110,107,80,114,101,102,105,120,0,0,0,0,0,0,0,97,108,108,111,99,48,0,0,110,110,107,73,110,102,105,120,0,0,0,0,0,0,0,0,114,97,119,65,108,108,111,99,0,0,0,0,0,0,0,0,110,110,107,67,97,108,108,83,116,114,76,105,116,0,0,0,98,117,102,83,105,122,101,0,97,100,100,0,0,0,0,0,110,110,107,67,97,108,108,0,109,109,100,105,115,112,46,110,105,109,0,0,0,0,0,0,108,111,103,70,105,108,101,115,0,0,0,0,0,0,0,0,110,105,109,101,109,95,115,98,0,0,0,0,0,0,0,0,97,108,108,111,99,65,118,108,78,111,100,101,0,0,0,0,110,110,107,67,111,109,109,97,110,100,0,0,0,0,0,0,98,97,115,101,77,111,100,101,0,0,0,0,0,0,0,0,97,108,108,111,99,0,0,0,115,121,115,116,101,109,46,110,105,109,0,0,0,0,0,0,103,101,116,83,109,97,108,108,67,104,117,110,107,0,0,0,110,110,107,68,111,116,67,97,108,108,0,0,0,0,0,0,108,111,103,0,0,0,0,0,98,97,115,101,78,97,109,101,0,0,0,0,0,0,0,0,103,101,116,66,105,103,67,104,117,110,107,0,0,0,0,0,110,110,107,77,101,116,97,78,111,100,101,0,0,0,0,0,99,117,114,76,105,110,101,0,123,100,101,108,101,116,101,32,95,110,105,109,101,109,95,111,91,36,48,93,125,0,0,0,114,101,113,117,101,115,116,79,115,67,104,117,110,107,115,0,110,110,107,78,105,108,76,105,116,0,0,0,0,0,0,0,109,97,120,76,105,110,101,115,0,0,0,0,0,0,0,0,103,101,116,67,108,111,99,107,83,116,114,0,0,0,0,0,103,101,116,68,97,116,101,83,116,114,0,0,0,0,0,0,111,115,97,108,108,111,99,46,110,105,109,0,0,0,0,0,97,108,103,111,114,105,116,104,109,0,0,0,0,0,0,0,110,110,107,84,114,105,112,108,101,83,116,114,76,105,116,0,102,105,108,101,0,0,0,0,61,61,0,0,0,0,0,0,111,115,84,114,121,65,108,108,111,99,80,97,103,101,115,0,110,110,107,82,83,116,114,76,105,116,0,0,0,0,0,0,102,109,116,83,116,114,0,0,111,115,0,0,0,0,0,0,115,112,108,105,116,67,104,117,110,107,0,0,0,0,0,0,116,101,115,116,0,0,0,0,110,110,107,83,116,114,76,105,116,0,0,0,0,0,0,0,108,101,118,101,108,84,104,114,101,115,104,111,108,100,0,0,109,111,118,101,70,105,108,101,0,0,0,0,0,0,0,0,83,116,97,99,107,32,111,118,101,114,102,108,111,119,10,0,110,110,107,70,108,111,97,116,49,50,56,76,105,116,0,0,108,118,108,78,111,110,101,0,103,114,111,119,79,98,106,0,110,110,107,70,108,111,97,116,54,52,76,105,116,0,0,0,108,118,108,70,97,116,97,108,0,0,0,0,0,0,0,0,79,83,69,114,114,111,114,0,114,101,97,108,108,111,99,0,110,110,107,70,108,111,97,116,51,50,76,105,116,0,0,0,110,101,119,79,98,106,78,111,73,110,105,116,0,0,0,0,108,118,108,69,114,114,111,114,0,0,0,0,0,0,0,0,106,115,98,105,110,100,46,110,105,109,0,0,0,0,0,0,114,97,105,115,101,79,83,69,114,114,111,114,0,0,0,0,100,101,97,108,108,111,99,0,110,110,107,70,108,111,97,116,76,105,116,0,0,0,0,0,108,118,108,87,97,114,110,0,111,115,69,114,114,111,114,77,115,103,0,0,0,0,0,0,112,97,114,97,109,83,116,114,0,0,0,0,0,0,0,0,114,97,119,68,101,97,108,108,111,99,0,0,0,0,0,0,110,110,107,85,73,110,116,54,52,76,105,116,0,0,0,0,115,121,115,116,101,109,46,110,105,109,0,0,0,0,0,0,108,118,108,78,111,116,105,99,101,0,0,0,0,0,0,0,112,97,103,101,65,100,100,114,0,0,0,0,0,0,0,0,105,115,83,109,97,108,108,67,104,117,110,107,0,0,0,0,111,115,65,108,108,111,99,80,97,103,101,115,0,0,0,0,105,110,99,67,117,114,114,77,101,109,0,0,0,0,0,0,112,97,103,101,73,110,100,101,120,0,0,0,0,0,0,0,103,101,116,76,111,99,97,108,84,105,109,101,0,0,0,0,111,115,68,101,97,108,108,111,99,80,97,103,101,115,0,0,100,101,99,67,117,114,114,77,101,109,0,0,0,0,0,0,100,101,108,0,0,0,0,0,105,115,65,99,99,101,115,115,105,98,108,101,0,0,0,0,110,110,107,85,73,110,116,51,50,76,105,116,0,0,0,0,99,104,117,110,107,85,110,117,115,101,100,0,0,0,0,0,108,118,108,73,110,102,111,0,117,112,100,97,116,101,80,114,101,118,83,105,122,101,0,0,100,101,97,108,108,111,99,65,118,108,78,111,100,101,0,0,108,105,115,116,65,100,100,0,108,105,115,116,82,101,109,111,118,101,0,0,0,0,0,0,114,111,117,110,100,117,112,0,73,79,69,114,114,111,114,0,103,101,116,84,105,109,101,0,79,118,101,114,102,108,111,119,69,114,114,111,114,0,0,0,115,112,108,105,116,0,0,0,73,110,100,101,120,69,114,114,111,114,0,0,0,0,0,0,110,110,107,85,73,110,116,49,54,76,105,116,0,0,0,0,82,97,110,103,101,69,114,114,111,114,0,0,0,0,0,0,108,118,108,68,101,98,117,103,0,0,0,0,0,0,0,0,86,97,108,117,101,69,114,114,111,114,0,0,0,0,0,0,71,67,95,100,105,115,97,98,108,101,0,0,0,0,0,0,109,97,116,104,46,110,105,109,0,0,0,0,0,0,0,0,71,67,95,101,110,97,98,108,101,0,0,0,0,0,0,0,79,98,106,101,99,116,67,111,110,118,101,114,115,105,111,110,69,114,114,111,114,0,0,0,97,118,108,116,114,101,101,46,110,105,109,0,0,0,0,0,117,110,115,117,114,101,65,115,103,110,82,101,102,0,0,0,110,110,107,85,73,110,116,56,76,105,116,0,0,0,0,0,97,108,103,111,114,105,116,104,109,46,110,105,109,0,0,0,108,118,108,65,108,108,0,0,65,115,115,101,114,116,105,111,110,69,114,114,111,114,0,0,47,0,0,0,0,0,0,0,115,121,115,70,97,116,97,108,0,0,0,0,0,0,0,0,101,114,114,111,114,67,111,100,101,0,0,0,0,0,0,0,116,114,97,99,101,0,0,0,109,115,103,0,0,0,0,0,110,97,109,101,0,0,0,0,112,97,114,101,110,116,0,0,115,107,101,119,0,0,0,0,102,109,65,112,112,101,110,100,0,0,0,0,0,0,0,0,102,109,82,101,97,100,87,114,105,116,101,69,120,105,115,116,105,110,103,0,0,0,0,0,110,110,107,85,73,110,116,76,105,116,0,0,0,0,0,0,105,110,116,84,111,83,116,114,0,0,0,0,0,0,0,0,108,111,103,103,105,110,103,0,102,109,82,101,97,100,87,114,105,116,101,0,0,0,0,0,102,109,87,114,105,116,101,0,102,109,82,101,97,100,0,0,116,109,84,111,84,105,109,101,73,110,102,111,0,0,0,0,110,110,107,66,114,101,97,107,83,116,97,116,101,0,0,0,102,114,101,101,66,105,103,67,104,117,110,107,0,0,0,0,110,110,107,83,116,97,116,101,0,0,0,0,0,0,0,0,108,111,103,103,105,110,103,46,110,105,109,0,0,0,0,0,110,110,107,73,110,116,54,52,76,105,116,0,0,0,0,0,110,110,107,71,111,116,111,83,116,97,116,101,0,0,0,0,110,110,107,67,108,111,115,117,114,101,0,0,0,0,0,0,110,110,107,82,101,116,117,114,110,84,111,107,101,110,0,0,103,101,116,65,112,112,108,65,117,120,0,0,0,0,0,0,110,110,107,80,97,116,116,101,114,110,0,0,0,0,0,0,110,110,107,65,114,103,108,105,115,116,0,0,0,0,0,0,110,110,107,69,110,117,109,70,105,101,108,100,68,101,102,0,110,110,107,69,110,117,109,84,121,0,0,0,0,0,0,0,110,110,107,83,104,97,114,101,100,84,121,0,0,0,0,0,103,101,116,84,105,109,101,122,111,110,101,0,0,0,0,0,110,110,107,73,116,101,114,97,116,111,114,84,121,0,0,0,102,114,101,101,79,115,67,104,117,110,107,115,0,0,0,0,110,110,107,80,114,111,99,84,121,0,0,0,0,0,0,0,110,110,107,73,110,116,51,50,76,105,116,0,0,0,0,0,110,110,107,68,105,115,116,105,110,99,116,84,121,0,0,0,102,97,105,108,101,100,65,115,115,101,114,116,73,109,112,108,0,0,0,0,0,0,0,0,110,110,107,77,117,116,97,98,108,101,84,121,0,0,0,0,114,97,105,115,101,65,115,115,101,114,116,0,0,0,0,0,110,110,107,67,111,110,115,116,84,121,0,0,0,0,0,0,110,110,107,86,97,114,84,121,0,0,0,0,0,0,0,0,110,110,107,80,116,114,84,121,0,0,0,0,0,0,0,0,110,110,107,82,101,102,84,121,0,0,0,0,0,0,0,0,110,110,107,82,101,99,87,104,101,110,0,0,0,0,0,0,110,110,107,82,101,99,67,97,115,101,0,0,0,0,0,0,110,110,107,82,101,99,76,105,115,116,0,0,0,0,0,0,105,110,99,108,0,0,0,0,110,110,107,83,116,97,116,105,99,84,121,0,0,0,0,0,110,110,107,73,110,116,49,54,76,105,116,0,0,0,0,0,110,110,107,84,121,112,101,67,108,97,115,115,84,121,0,0,110,110,107,84,117,112,108,101,67,108,97,115,115,84,121,0,110,110,107,84,117,112,108,101,84,121,0,0,0,0,0,0,115,112,108,105,116,70,105,108,101,0,0,0,0,0,0,0,110,110,107,79,98,106,101,99,116,84,121,0,0,0,0,0,110,110,107,84,121,112,101,79,102,69,120,112,114,0,0,0,110,110,107,87,105,116,104,111,117,116,0,0,0,0,0,0,110,110,107,87,105,116,104,0,110,110,107,66,108,111,99,107,84,121,112,101,0,0,0,0,110,110,107,83,116,109,116,76,105,115,116,84,121,112,101,0,105,110,116,83,101,116,80,117,116,0,0,0,0,0,0,0,110,110,107,66,108,111,99,107,69,120,112,114,0,0,0,0,116,105,109,101,115,46,110,105,109,0,0,0,0,0,0,0,110,110,107,73,110,116,56,76,105,116,0,0,0,0,0,0,97,108,108,111,99,46,110,105,109,0,0,0,0,0,0,0,110,110,107,83,116,109,116,76,105,115,116,69,120,112,114,0,110,110,107,67,111,109,109,101,110,116,83,116,109,116,0,0,110,105,109,101,109,95,112,115,0,0,0,0,0,0,0,0,110,110,107,85,115,105,110,103,83,116,109,116,0,0,0,0,103,101,116,65,112,112,70,105,108,101,110,97,109,101,0,0,110,110,107,77,105,120,105,110,83,116,109,116,0,0,0,0,110,110,107,66,105,110,100,83,116,109,116,0,0,0,0,0,110,110,107,73,110,99,108,117,100,101,83,116,109,116,0,0,110,110,107,70,114,111,109,83,116,109,116,0,0,0,0,0,110,110,107,69,120,112,111,114,116,69,120,99,101,112,116,83,116,109,116,0,0,0,0,0,110,110,107,69,120,112,111,114,116,83,116,109,116,0,0,0,108,108,65,108,108,111,99,0,110,110,107,73,109,112,111,114,116,69,120,99,101,112,116,83,116,109,116,0,0,0,0,0,115,116,114,117,116,105,108,115,46,110,105,109,0,0,0,0,110,110,107,73,110,116,76,105,116,0,0,0,0,0,0,0,110,110,107,73,109,112,111,114,116,83,116,109,116,0,0,0,108,111,103,76,111,111,112,0,110,110,107,83,116,109,116,76,105,115,116,0,0,0,0,0,109,97,99,114,111,115,46,110,105,109,0,0,0,0,0,0,110,110,107,68,105,115,99,97,114,100,83,116,109,116,0,0,112,111,115,105,120,0,0,0,110,110,107,83,116,97,116,105,99,83,116,109,116,0,0,0,110,110,107,66,108,111,99,107,83,116,109,116,0,0,0,0,115,116,114,117,116,105,108,115,46,110,105,109,0,0,0,0,110,110,107,67,111,110,116,105,110,117,101,83,116,109,116,0,111,115,46,110,105,109,0,0,110,110,107,66,114,101,97,107,83,116,109,116,0,0,0,0,110,110,107,82,101,116,117,114,110,83,116,109,116,0,0,0,110,110,107,82,97,105,115,101,83,116,109,116,0,0,0,0,115,117,98,115,116,105,116,117,116,101,76,111,103,0,0,0,110,110,107,70,105,110,97,108,108,121,0,0,0,0,0,0,112,0,0,0,0,0,0,0,112,111,115,105,120,46,110,105,109,0,0,0,0,0,0,0,103,101,116,65,112,112,108,72,101,117,114,105,115,116,105,99,0,0,0,0,0,0,0,0,110,110,107,67,104,97,114,76,105,116,0,0,0,0,0,0,110,110,107,84,114,121,83,116,109,116,0,0,0,0,0,0,115,116,114,117,116,105,108,115,0,0,0,0,0,0,0,0,108,111,103,103,105,110,103,46,110,105,109,0,0,0,0,0,103,101,110,101,114,105,99,82,101,115,101,116,65,117,120,0,114,111,116,97,116,101,0,0,110,110,107,68,101,102,101,114,0,0,0,0,0,0,0,0,97,115,115,105,103,110,46,110,105,109,0,0,0,0,0,0,112,97,114,115,101,117,116,105,108,115,46,110,105,109,0,0,110,110,107,89,105,101,108,100,83,116,109,116,0,0,0,0,103,101,110,101,114,105,99,82,101,115,101,116,0,0,0,0,110,110,107,84,121,112,101,68,101,102,0,0,0,0,0,0,110,110,107,67,111,110,115,116,68,101,102,0,0,0,0,0,110,110,107,67,111,110,115,116,83,101,99,116,105,111,110,0,110,110,107,76,101,116,83,101,99,116,105,111,110,0,0,0,110,110,107,86,97,114,83,101,99,116,105,111,110,0,0,0,110,110,107,84,121,112,101,83,101,99,116,105,111,110,0,0,37,115,10,0,0,0,0,0,106,115,98,105,110,100,0,0,110,110,107,67,97,115,101,83,116,109,116,0,0,0,0,0,101,120,105,115,116,115,70,105,108,101,0,0,0,0,0,0,110,110,107,84,121,112,101,0,110,110,107,87,104,105,108,101,83,116,109,116,0,0,0,0,116,111,76,111,119,101,114,0,110,110,107,80,97,114,70,111,114,83,116,109,116,0,0,0,110,110,107,70,111,114,83,116,109,116,0,0,0,0,0,0,101,109,115,99,114,105,112,116,101,110,46,110,105,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,13,0,0,0,105,110,118,97,108,105,100,32,105,110,100,101,120,0,0,0,14,0,0,0,14,0,0,0,47,112,114,111,99,47,115,101,108,102,47,101,120,101,0,0,16,0,0,0,16,0,0,0,117,110,107,110,111,119,110,32,79,83,32,101,114,114,111,114,0,0,0,0,0,0,0,0,18,0,0,0,18,0,0,0,10,65,100,100,105,116,105,111,110,97,108,32,105,110,102,111,58,32,0,0,0,0,0,0,4,0,0,0,4,0,0,0,80,65,84,72,0,0,0,0,9,0,0,0,9,0,0,0,65,102,116,101,114,32,108,111,103,0,0,0,0,0,0,0,5,0,0,0,5,0,0,0,72,101,108,108,111,0,0,0,10,0,0,0,10,0,0,0,66,101,102,111,114,101,32,108,111,103,0,0,0,0,0,0,1,0,0,0,1,0,0,0,10,0,0,0,0,0,0,0,19,0,0,0,19,0,0,0,32,99,97,108,108,115,32,111,109,105,116,116,101,100,41,32,46,46,46,0,0,0,0,0,1,0,0,0,1,0,0,0,40,0,0,0,0,0,0,0,34,0,0,0,34,0,0,0,84,114,97,99,101,98,97,99,107,32,40,109,111,115,116,32,114,101,99,101,110,116,32,99,97,108,108,32,108,97,115,116,41,10,0,0,0,0,0,0,13,0,0,0,13,0,0,0,111,117,116,32,111,102,32,109,101,109,111,114,121,0,0,0,25,0,0,0,25,0,0,0,105,110,118,97,108,105,100,32,111,98,106,101,99,116,32,99,111,110,118,101,114,115,105,111,110,0,0,0,0,0,0,0,15,0,0,0,15,0,0,0,117,110,107,110,111,119,110,32,115,105,103,110,97,108,10,0,22,0,0,0,22,0,0,0,83,73,71,80,73,80,69,58,32,80,105,112,101,32,99,108,111,115,101,100,46,10,0,0,60,0,0,0,60,0,0,0,83,73,71,66,85,83,58,32,73,108,108,101,103,97,108,32,115,116,111,114,97,103,101,32,97,99,99,101,115,115,46,32,40,65,116,116,101,109,112,116,32,116,111,32,114,101,97,100,32,102,114,111,109,32,110,105,108,63,41,10,0,0,0,0,27,0,0,0,27,0,0,0,83,73,71,73,76,76,58,32,73,108,108,101,103,97,108,32,111,112,101,114,97,116,105,111,110,46,10,0,0,0,0,0,26,0,0,0,26,0,0,0,83,73,71,70,80,69,58,32,65,114,105,116,104,109,101,116,105,99,32,101,114,114,111,114,46,10,0,0,0,0,0,0,31,0,0,0,31,0,0,0,83,73,71,65,66,82,84,58,32,65,98,110,111,114,109,97,108,32,116,101,114,109,105,110,97,116,105,111,110,46,10,0,61,0,0,0,61,0,0,0,83,73,71,83,69,71,86,58,32,73,108,108,101,103,97,108,32,115,116,111,114,97,103,101,32,97,99,99,101,115,115,46,32,40,65,116,116,101,109,112,116,32,116,111,32,114,101,97,100,32,102,114,111,109,32,110,105,108,63,41,10,0,0,0,29,0,0,0,29,0,0,0,78,111,32,115,116,97,99,107,32,116,114,97,99,101,98,97,99,107,32,97,118,97,105,108,97,98,108,101,10,0,0,0,31,0,0,0,31,0,0,0,83,73,71,73,78,84,58,32,73,110,116,101,114,114,117,112,116,101,100,32,98,121,32,67,116,114,108,45,67,46,10,0,33,0,0,0,33,0,0,0,97,116,116,101,109,112,116,32,116,111,32,119,114,105,116,101,32,116,111,32,97,32,110,105,108,32,97,100,100,114,101,115,115,0,0,0,0,0,0,0,20,0,0,0,20,0,0,0,118,97,108,117,101,32,111,117,116,32,111,102,32,114,97,110,103,101,58,32,0,0,0,0,19,0,0,0,19,0,0,0,105,110,100,101,120,32,111,117,116,32,111,102,32,98,111,117,110,100,115,0,0,0,0,0,18,0,0,0,18,0,0,0,111,118,101,114,45,32,111,114,32,117,110,100,101,114,102,108,111,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,0,0,0,27,0,0,0,99,97,110,110,111,116,32,119,114,105,116,101,32,115,116,114,105,110,103,32,116,111,32,102,105,108,101,0,0,0,0,0,13,0,0,0,13,0,0,0,99,97,110,110,111,116,32,111,112,101,110,58,32,0,0,0,2,0,0,0,2,0,0,0,97,98,0,0,0,0,0,0,3,0,0,0,3,0,0,0,114,43,98,0,0,0,0,0,3,0,0,0,3,0,0,0,119,43,98,0,0,0,0,0,2,0,0,0,2,0,0,0,119,98,0,0,0,0,0,0,2,0,0,0,2,0,0,0,114,98,0,0,0,0,0,0,2,0,0,0,2,0,0,0,93,10,0,0,0,0,0,0,2,0,0,0,2,0,0,0,32,91,0,0,0,0,0,0,28,0,0,0,28,0,0,0,69,114,114,111,114,58,32,117,110,104,97,110,100,108,101,100,32,101,120,99,101,112,116,105,111,110,58,32,0,0,0,0,4,0,0,0,4,0,0,0,78,79,78,69,0,0,0,0,5,0,0,0,5,0,0,0,70,65,84,65,76,0,0,0,5,0,0,0,5,0,0,0,69,82,82,79,82,0,0,0,4,0,0,0,4,0,0,0,87,65,82,78,0,0,0,0,48,0,0,0,48,0,0,0,108,101,110,40,97,41,32,61,61,32,76,32,115,101,113,32,109,111,100,105,102,105,101,100,32,119,104,105,108,101,32,105,116,101,114,97,116,105,110,103,32,111,118,101,114,32,105,116,0,0,0,0,0,0,0,0,6,0,0,0,6,0,0,0,78,79,84,73,67,69,0,0,4,0,0,0,4,0,0,0,73,78,70,79,0,0,0,0,1,0,0,0,1,0,0,0,10,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,84,0,0,0,0,0,0,0,9,0,0,0,9,0,0,0,108,101,118,101,108,110,97,109,101,0,0,0,0,0,0,0,7,0,0,0,7,0,0,0,108,101,118,101,108,105,100,0,7,0,0,0,7,0,0,0,97,112,112,110,97,109,101,0,6,0,0,0,6,0,0,0,97,112,112,100,105,114,0,0,3,0,0,0,3,0,0,0,97,112,112,0,0,0,0,0,5,0,0,0,5,0,0,0,68,69,66,85,71,0,0,0,8,0,0,0,8,0,0,0,100,97,116,101,116,105,109,101,0,0,0,0,0,0,0,0,4,0,0,0,4,0,0,0,116,105,109,101,0,0,0,0,4,0,0,0,4,0,0,0,100,97,116,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,14,0,0,0,110,111,116,32,105,115,78,105,108,40,108,116,41,32,0,0,184,31,0,0,184,31,0,0,48,31,0,0,32,31,0,0,208,30,0,0,192,30,0,0,176,30,0,0,160,30,0,0,72,30,0,0,56,30,0,0,40,30,0,0,24,30,0,0,8,30,0,0,0,0,0,0], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE);
function runPostSets() {
}
var tempDoublePtr = Runtime.alignMemory(allocate(12, "i8", ALLOC_STATIC), 8);
assert(tempDoublePtr % 8 == 0);
function copyTempFloat(ptr) { // functions, because inlining this code increases code size too much
HEAP8[tempDoublePtr] = HEAP8[ptr];
HEAP8[tempDoublePtr+1] = HEAP8[ptr+1];
HEAP8[tempDoublePtr+2] = HEAP8[ptr+2];
HEAP8[tempDoublePtr+3] = HEAP8[ptr+3];
}
function copyTempDouble(ptr) {
HEAP8[tempDoublePtr] = HEAP8[ptr];
HEAP8[tempDoublePtr+1] = HEAP8[ptr+1];
HEAP8[tempDoublePtr+2] = HEAP8[ptr+2];
HEAP8[tempDoublePtr+3] = HEAP8[ptr+3];
HEAP8[tempDoublePtr+4] = HEAP8[ptr+4];
HEAP8[tempDoublePtr+5] = HEAP8[ptr+5];
HEAP8[tempDoublePtr+6] = HEAP8[ptr+6];
HEAP8[tempDoublePtr+7] = HEAP8[ptr+7];
}
var ERRNO_CODES={EPERM:1,ENOENT:2,ESRCH:3,EINTR:4,EIO:5,ENXIO:6,E2BIG:7,ENOEXEC:8,EBADF:9,ECHILD:10,EAGAIN:11,EWOULDBLOCK:11,ENOMEM:12,EACCES:13,EFAULT:14,ENOTBLK:15,EBUSY:16,EEXIST:17,EXDEV:18,ENODEV:19,ENOTDIR:20,EISDIR:21,EINVAL:22,ENFILE:23,EMFILE:24,ENOTTY:25,ETXTBSY:26,EFBIG:27,ENOSPC:28,ESPIPE:29,EROFS:30,EMLINK:31,EPIPE:32,EDOM:33,ERANGE:34,ENOMSG:42,EIDRM:43,ECHRNG:44,EL2NSYNC:45,EL3HLT:46,EL3RST:47,ELNRNG:48,EUNATCH:49,ENOCSI:50,EL2HLT:51,EDEADLK:35,ENOLCK:37,EBADE:52,EBADR:53,EXFULL:54,ENOANO:55,EBADRQC:56,EBADSLT:57,EDEADLOCK:35,EBFONT:59,ENOSTR:60,ENODATA:61,ETIME:62,ENOSR:63,ENONET:64,ENOPKG:65,EREMOTE:66,ENOLINK:67,EADV:68,ESRMNT:69,ECOMM:70,EPROTO:71,EMULTIHOP:72,EDOTDOT:73,EBADMSG:74,ENOTUNIQ:76,EBADFD:77,EREMCHG:78,ELIBACC:79,ELIBBAD:80,ELIBSCN:81,ELIBMAX:82,ELIBEXEC:83,ENOSYS:38,ENOTEMPTY:39,ENAMETOOLONG:36,ELOOP:40,EOPNOTSUPP:95,EPFNOSUPPORT:96,ECONNRESET:104,ENOBUFS:105,EAFNOSUPPORT:97,EPROTOTYPE:91,ENOTSOCK:88,ENOPROTOOPT:92,ESHUTDOWN:108,ECONNREFUSED:111,EADDRINUSE:98,ECONNABORTED:103,ENETUNREACH:101,ENETDOWN:100,ETIMEDOUT:110,EHOSTDOWN:112,EHOSTUNREACH:113,EINPROGRESS:115,EALREADY:114,EDESTADDRREQ:89,EMSGSIZE:90,EPROTONOSUPPORT:93,ESOCKTNOSUPPORT:94,EADDRNOTAVAIL:99,ENETRESET:102,EISCONN:106,ENOTCONN:107,ETOOMANYREFS:109,EUSERS:87,EDQUOT:122,ESTALE:116,ENOTSUP:95,ENOMEDIUM:123,EILSEQ:84,EOVERFLOW:75,ECANCELED:125,ENOTRECOVERABLE:131,EOWNERDEAD:130,ESTRPIPE:86};
var ERRNO_MESSAGES={0:"Success",1:"Not super-user",2:"No such file or directory",3:"No such process",4:"Interrupted system call",5:"I/O error",6:"No such device or address",7:"Arg list too long",8:"Exec format error",9:"Bad file number",10:"No children",11:"No more processes",12:"Not enough core",13:"Permission denied",14:"Bad address",15:"Block device required",16:"Mount device busy",17:"File exists",18:"Cross-device link",19:"No such device",20:"Not a directory",21:"Is a directory",22:"Invalid argument",23:"Too many open files in system",24:"Too many open files",25:"Not a typewriter",26:"Text file busy",27:"File too large",28:"No space left on device",29:"Illegal seek",30:"Read only file system",31:"Too many links",32:"Broken pipe",33:"Math arg out of domain of func",34:"Math result not representable",35:"File locking deadlock error",36:"File or path name too long",37:"No record locks available",38:"Function not implemented",39:"Directory not empty",40:"Too many symbolic links",42:"No message of desired type",43:"Identifier removed",44:"Channel number out of range",45:"Level 2 not synchronized",46:"Level 3 halted",47:"Level 3 reset",48:"Link number out of range",49:"Protocol driver not attached",50:"No CSI structure available",51:"Level 2 halted",52:"Invalid exchange",53:"Invalid request descriptor",54:"Exchange full",55:"No anode",56:"Invalid request code",57:"Invalid slot",59:"Bad font file fmt",60:"Device not a stream",61:"No data (for no delay io)",62:"Timer expired",63:"Out of streams resources",64:"Machine is not on the network",65:"Package not installed",66:"The object is remote",67:"The link has been severed",68:"Advertise error",69:"Srmount error",70:"Communication error on send",71:"Protocol error",72:"Multihop attempted",73:"Cross mount point (not really error)",74:"Trying to read unreadable message",75:"Value too large for defined data type",76:"Given log. name not unique",77:"f.d. invalid for this operation",78:"Remote address changed",79:"Can access a needed shared lib",80:"Accessing a corrupted shared lib",81:".lib section in a.out corrupted",82:"Attempting to link in too many libs",83:"Attempting to exec a shared library",84:"Illegal byte sequence",86:"Streams pipe error",87:"Too many users",88:"Socket operation on non-socket",89:"Destination address required",90:"Message too long",91:"Protocol wrong type for socket",92:"Protocol not available",93:"Unknown protocol",94:"Socket type not supported",95:"Not supported",96:"Protocol family not supported",97:"Address family not supported by protocol family",98:"Address already in use",99:"Address not available",100:"Network interface is not configured",101:"Network is unreachable",102:"Connection reset by network",103:"Connection aborted",104:"Connection reset by peer",105:"No buffer space available",106:"Socket is already connected",107:"Socket is not connected",108:"Can't send after socket shutdown",109:"Too many references",110:"Connection timed out",111:"Connection refused",112:"Host is down",113:"Host is unreachable",114:"Socket already connected",115:"Connection already in progress",116:"Stale file handle",122:"Quota exceeded",123:"No medium (in tape drive)",125:"Operation canceled",130:"Previous owner died",131:"State not recoverable"};
var ___errno_state=0;function ___setErrNo(value) {
// For convenient setting and returning of errno.
HEAP32[((___errno_state)>>2)]=value;
return value;
}
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);
},resolve:function () {
var resolvedPath = '',
resolvedAbsolute = false;
for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {
var path = (i >= 0) ? arguments[i] : FS.cwd();
// Skip empty and invalid entries
if (typeof path !== 'string') {
throw new TypeError('Arguments to path.resolve must be strings');
} else if (!path) {
continue;
}
resolvedPath = path + '/' + resolvedPath;
resolvedAbsolute = path.charAt(0) === '/';
}
// At this point the path should be resolved to a full absolute path, but
// handle relative paths to be safe (might happen when process.cwd() fails)
resolvedPath = PATH.normalizeArray(resolvedPath.split('/').filter(function(p) {
return !!p;
}), !resolvedAbsolute).join('/');
return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';
},relative:function (from, to) {
from = PATH.resolve(from).substr(1);
to = PATH.resolve(to).substr(1);
function trim(arr) {
var start = 0;
for (; start < arr.length; start++) {
if (arr[start] !== '') break;
}
var end = arr.length - 1;
for (; end >= 0; end--) {
if (arr[end] !== '') break;
}
if (start > end) return [];
return arr.slice(start, end - start + 1);
}
var fromParts = trim(from.split('/'));
var toParts = trim(to.split('/'));
var length = Math.min(fromParts.length, toParts.length);
var samePartsLength = length;
for (var i = 0; i < length; i++) {
if (fromParts[i] !== toParts[i]) {
samePartsLength = i;
break;
}
}
var outputParts = [];
for (var i = samePartsLength; i < fromParts.length; i++) {
outputParts.push('..');
}
outputParts = outputParts.concat(toParts.slice(samePartsLength));
return outputParts.join('/');
}};
var TTY={ttys:[],init:function () {
// https://github.com/kripken/emscripten/pull/1555
// if (ENVIRONMENT_IS_NODE) {
// // currently, FS.init does not distinguish if process.stdin is a file or TTY
// // device, it always assumes it's a TTY device. because of this, we're forcing
// // process.stdin to UTF8 encoding to at least make stdin reading compatible
// // with text files until FS.init can be refactored.
// process['stdin']['setEncoding']('utf8');
// }
},shutdown:function () {
// https://github.com/kripken/emscripten/pull/1555
// if (ENVIRONMENT_IS_NODE) {
// // inolen: any idea as to why node -e 'process.stdin.read()' wouldn't exit immediately (with process.stdin being a tty)?
// // isaacs: because now it's reading from the stream, you've expressed interest in it, so that read() kicks off a _read() which creates a ReadReq operation
// // inolen: I thought read() in that case was a synchronous operation that just grabbed some amount of buffered data if it exists?
// // isaacs: it is. but it also triggers a _read() call, which calls readStart() on the handle
// // isaacs: do process.stdin.pause() and i'd think it'd probably close the pending call
// process['stdin']['pause']();
// }
},register:function (dev, ops) {
TTY.ttys[dev] = { input: [], output: [], ops: ops };
FS.registerDevice(dev, TTY.stream_ops);
},stream_ops:{open:function (stream) {
var tty = TTY.ttys[stream.node.rdev];
if (!tty) {
throw new FS.ErrnoError(ERRNO_CODES.ENODEV);
}
stream.tty = tty;
stream.seekable = false;
},close:function (stream) {
// flush any pending line data
if (stream.tty.output.length) {
stream.tty.ops.put_char(stream.tty, 10);
}
},read:function (stream, buffer, offset, length, pos /* ignored */) {
if (!stream.tty || !stream.tty.ops.get_char) {
throw new FS.ErrnoError(ERRNO_CODES.ENXIO);
}
var bytesRead = 0;
for (var i = 0; i < length; i++) {
var result;
try {
result = stream.tty.ops.get_char(stream.tty);
} catch (e) {
throw new FS.ErrnoError(ERRNO_CODES.EIO);
}
if (result === undefined && bytesRead === 0) {
throw new FS.ErrnoError(ERRNO_CODES.EAGAIN);
}
if (result === null || result === undefined) break;
bytesRead++;
buffer[offset+i] = result;
}
if (bytesRead) {
stream.node.timestamp = Date.now();
}
return bytesRead;
},write:function (stream, buffer, offset, length, pos) {
if (!stream.tty || !stream.tty.ops.put_char) {
throw new FS.ErrnoError(ERRNO_CODES.ENXIO);
}
for (var i = 0; i < length; i++) {
try {
stream.tty.ops.put_char(stream.tty, buffer[offset+i]);
} catch (e) {
throw new FS.ErrnoError(ERRNO_CODES.EIO);
}
}
if (length) {
stream.node.timestamp = Date.now();
}
return i;
}},default_tty_ops:{get_char:function (tty) {
if (!tty.input.length) {
var result = null;
if (ENVIRONMENT_IS_NODE) {
result = process['stdin']['read']();
if (!result) {
if (process['stdin']['_readableState'] && process['stdin']['_readableState']['ended']) {
return null; // EOF
}
return undefined; // no data available
}
} else if (typeof window != 'undefined' &&
typeof window.prompt == 'function') {
// Browser.
result = window.prompt('Input: '); // returns null on cancel
if (result !== null) {
result += '\n';
}
} else if (typeof readline == 'function') {
// Command line.
result = readline();
if (result !== null) {
result += '\n';
}
}
if (!result) {
return null;
}
tty.input = intArrayFromString(result, true);
}
return tty.input.shift();
},put_char:function (tty, val) {
if (val === null || val === 10) {
Module['print'](tty.output.join(''));
tty.output = [];
} else {
tty.output.push(TTY.utf8.processCChar(val));
}
}},default_tty1_ops:{put_char:function (tty, val) {
if (val === null || val === 10) {
Module['printErr'](tty.output.join(''));
tty.output = [];
} else {
tty.output.push(TTY.utf8.processCChar(val));
}
}}};
var MEMFS={ops_table:null,CONTENT_OWNING:1,CONTENT_FLEXIBLE:2,CONTENT_FIXED:3,mount:function (mount) {
return MEMFS.createNode(null, '/', 16384 | 0777, 0);
},createNode:function (parent, name, mode, dev) {
if (FS.isBlkdev(mode) || FS.isFIFO(mode)) {
// no supported
throw new FS.ErrnoError(ERRNO_CODES.EPERM);
}
if (!MEMFS.ops_table) {
MEMFS.ops_table = {
dir: {
node: {
getattr: MEMFS.node_ops.getattr,
setattr: MEMFS.node_ops.setattr,
lookup: MEMFS.node_ops.lookup,
mknod: MEMFS.node_ops.mknod,
mknod: MEMFS.node_ops.mknod,
rename: MEMFS.node_ops.rename,
unlink: MEMFS.node_ops.unlink,
rmdir: MEMFS.node_ops.rmdir,
readdir: MEMFS.node_ops.readdir,
symlink: MEMFS.node_ops.symlink
},
stream: {
llseek: MEMFS.stream_ops.llseek
}
},
file: {
node: {
getattr: MEMFS.node_ops.getattr,
setattr: MEMFS.node_ops.setattr
},
stream: {
llseek: MEMFS.stream_ops.llseek,
read: MEMFS.stream_ops.read,
write: MEMFS.stream_ops.write,
allocate: MEMFS.stream_ops.allocate,
mmap: MEMFS.stream_ops.mmap
}
},
link: {
node: {
getattr: MEMFS.node_ops.getattr,
setattr: MEMFS.node_ops.setattr,
readlink: MEMFS.node_ops.readlink
},
stream: {}
},
chrdev: {
node: {
getattr: MEMFS.node_ops.getattr,
setattr: MEMFS.node_ops.setattr
},
stream: FS.chrdev_stream_ops
},
};
}
var node = FS.createNode(parent, name, mode, dev);
if (FS.isDir(node.mode)) {
node.node_ops = MEMFS.ops_table.dir.node;
node.stream_ops = MEMFS.ops_table.dir.stream;
node.contents = {};
} else if (FS.isFile(node.mode)) {
node.node_ops = MEMFS.ops_table.file.node;
node.stream_ops = MEMFS.ops_table.file.stream;
node.contents = [];
node.contentMode = MEMFS.CONTENT_FLEXIBLE;
} else if (FS.isLink(node.mode)) {
node.node_ops = MEMFS.ops_table.link.node;
node.stream_ops = MEMFS.ops_table.link.stream;
} else if (FS.isChrdev(node.mode)) {
node.node_ops = MEMFS.ops_table.chrdev.node;
node.stream_ops = MEMFS.ops_table.chrdev.stream;
}
node.timestamp = Date.now();
// add the new node to the parent
if (parent) {
parent.contents[name] = node;
}
return node;
},ensureFlexible:function (node) {
if (node.contentMode !== MEMFS.CONTENT_FLEXIBLE) {
var contents = node.contents;
node.contents = Array.prototype.slice.call(contents);
node.contentMode = MEMFS.CONTENT_FLEXIBLE;
}
},node_ops:{getattr:function (node) {
var attr = {};
// device numbers reuse inode numbers.
attr.dev = FS.isChrdev(node.mode) ? node.id : 1;
attr.ino = node.id;
attr.mode = node.mode;
attr.nlink = 1;
attr.uid = 0;
attr.gid = 0;
attr.rdev = node.rdev;
if (FS.isDir(node.mode)) {
attr.size = 4096;
} else if (FS.isFile(node.mode)) {
attr.size = node.contents.length;
} else if (FS.isLink(node.mode)) {
attr.size = node.link.length;
} else {
attr.size = 0;
}
attr.atime = new Date(node.timestamp);
attr.mtime = new Date(node.timestamp);
attr.ctime = new Date(node.timestamp);
// NOTE: In our implementation, st_blocks = Math.ceil(st_size/st_blksize),
// but this is not required by the standard.
attr.blksize = 4096;
attr.blocks = Math.ceil(attr.size / attr.blksize);
return attr;
},setattr:function (node, attr) {
if (attr.mode !== undefined) {
node.mode = attr.mode;
}
if (attr.timestamp !== undefined) {
node.timestamp = attr.timestamp;
}
if (attr.size !== undefined) {
MEMFS.ensureFlexible(node);
var contents = node.contents;
if (attr.size < contents.length) contents.length = attr.size;
else while (attr.size > contents.length) contents.push(0);
}
},lookup:function (parent, name) {
throw FS.genericErrors[ERRNO_CODES.ENOENT];
},mknod:function (parent, name, mode, dev) {
return MEMFS.createNode(parent, name, mode, dev);
},rename:function (old_node, new_dir, new_name) {
// if we're overwriting a directory at new_name, make sure it's empty.
if (FS.isDir(old_node.mode)) {
var new_node;
try {
new_node = FS.lookupNode(new_dir, new_name);
} catch (e) {
}
if (new_node) {
for (var i in new_node.contents) {
throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY);
}
}
}
// do the internal rewiring
delete old_node.parent.contents[old_node.name];
old_node.name = new_name;
new_dir.contents[new_name] = old_node;
old_node.parent = new_dir;
},unlink:function (parent, name) {
delete parent.contents[name];
},rmdir:function (parent, name) {
var node = FS.lookupNode(parent, name);
for (var i in node.contents) {
throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY);
}
delete parent.contents[name];
},readdir:function (node) {
var entries = ['.', '..']
for (var key in node.contents) {
if (!node.contents.hasOwnProperty(key)) {
continue;
}
entries.push(key);
}
return entries;
},symlink:function (parent, newname, oldpath) {
var node = MEMFS.createNode(parent, newname, 0777 | 40960, 0);
node.link = oldpath;
return node;
},readlink:function (node) {
if (!FS.isLink(node.mode)) {
throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
}
return node.link;
}},stream_ops:{read:function (stream, buffer, offset, length, position) {
var contents = stream.node.contents;
if (position >= contents.length)
return 0;
var size = Math.min(contents.length - position, length);
assert(size >= 0);
if (size > 8 && contents.subarray) { // non-trivial, and typed array
buffer.set(contents.subarray(position, position + size), offset);
} else
{
for (var i = 0; i < size; i++) {
buffer[offset + i] = contents[position + i];
}
}
return size;
},write:function (stream, buffer, offset, length, position, canOwn) {
var node = stream.node;
node.timestamp = Date.now();
var contents = node.contents;
if (length && contents.length === 0 && position === 0 && buffer.subarray) {
// just replace it with the new data
assert(buffer.length);
if (canOwn && offset === 0) {
node.contents = buffer; // this could be a subarray of Emscripten HEAP, or allocated from some other source.
node.contentMode = (buffer.buffer === HEAP8.buffer) ? MEMFS.CONTENT_OWNING : MEMFS.CONTENT_FIXED;
} else {
node.contents = new Uint8Array(buffer.subarray(offset, offset+length));
node.contentMode = MEMFS.CONTENT_FIXED;
}
return length;
}
MEMFS.ensureFlexible(node);
var contents = node.contents;
while (contents.length < position) contents.push(0);
for (var i = 0; i < length; i++) {
contents[position + i] = buffer[offset + i];
}
return length;
},llseek:function (stream, offset, whence) {
var position = offset;
if (whence === 1) { // SEEK_CUR.
position += stream.position;
} else if (whence === 2) { // SEEK_END.
if (FS.isFile(stream.node.mode)) {
position += stream.node.contents.length;
}
}
if (position < 0) {
throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
}
stream.ungotten = [];
stream.position = position;
return position;
},allocate:function (stream, offset, length) {
MEMFS.ensureFlexible(stream.node);
var contents = stream.node.contents;
var limit = offset + length;
while (limit > contents.length) contents.push(0);
},mmap:function (stream, buffer, offset, length, position, prot, flags) {
if (!FS.isFile(stream.node.mode)) {
throw new FS.ErrnoError(ERRNO_CODES.ENODEV);
}
var ptr;
var allocated;
var contents = stream.node.contents;
// Only make a new copy when MAP_PRIVATE is specified.
if ( !(flags & 2) &&
(contents.buffer === buffer || contents.buffer === buffer.buffer) ) {
// We can't emulate MAP_SHARED when the file is not backed by the buffer
// we're mapping to (e.g. the HEAP buffer).
allocated = false;
ptr = contents.byteOffset;
} else {
// Try to avoid unnecessary slices.
if (position > 0 || position + length < contents.length) {
if (contents.subarray) {
contents = contents.subarray(position, position + length);
} else {
contents = Array.prototype.slice.call(contents, position, position + length);
}
}
allocated = true;
ptr = _malloc(length);
if (!ptr) {
throw new FS.ErrnoError(ERRNO_CODES.ENOMEM);
}
buffer.set(contents, ptr);
}
return { ptr: ptr, allocated: allocated };
}}};
var IDBFS={dbs:{},indexedDB:function () {
return window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB;
},DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",mount:function (mount) {
return MEMFS.mount.apply(null, arguments);
},syncfs:function (mount, populate, callback) {
IDBFS.getLocalSet(mount, function(err, local) {
if (err) return callback(err);
IDBFS.getRemoteSet(mount, function(err, remote) {
if (err) return callback(err);
var src = populate ? remote : local;
var dst = populate ? local : remote;
IDBFS.reconcile(src, dst, callback);
});
});
},reconcile:function (src, dst, callback) {
var total = 0;
var create = {};
for (var key in src.files) {
if (!src.files.hasOwnProperty(key)) continue;
var e = src.files[key];
var e2 = dst.files[key];
if (!e2 || e.timestamp > e2.timestamp) {
create[key] = e;
total++;
}
}
var remove = {};
for (var key in dst.files) {
if (!dst.files.hasOwnProperty(key)) continue;
var e = dst.files[key];
var e2 = src.files[key];
if (!e2) {
remove[key] = e;
total++;
}
}
if (!total) {
// early out
return callback(null);
}
var completed = 0;
function done(err) {
if (err) return callback(err);
if (++completed >= total) {
return callback(null);
}
};
// create a single transaction to handle and IDB reads / writes we'll need to do
var db = src.type === 'remote' ? src.db : dst.db;
var transaction = db.transaction([IDBFS.DB_STORE_NAME], 'readwrite');
transaction.onerror = function transaction_onerror() { callback(this.error); };
var store = transaction.objectStore(IDBFS.DB_STORE_NAME);
for (var path in create) {
if (!create.hasOwnProperty(path)) continue;
var entry = create[path];
if (dst.type === 'local') {
// save file to local
try {
if (FS.isDir(entry.mode)) {
FS.mkdir(path, entry.mode);
} else if (FS.isFile(entry.mode)) {
var stream = FS.open(path, 'w+', 0666);
FS.write(stream, entry.contents, 0, entry.contents.length, 0, true /* canOwn */);
FS.close(stream);
}
done(null);
} catch (e) {
return done(e);
}
} else {
// save file to IDB
var req = store.put(entry, path);
req.onsuccess = function req_onsuccess() { done(null); };
req.onerror = function req_onerror() { done(this.error); };
}
}
for (var path in remove) {
if (!remove.hasOwnProperty(path)) continue;
var entry = remove[path];
if (dst.type === 'local') {
// delete file from local
try {
if (FS.isDir(entry.mode)) {
// TODO recursive delete?
FS.rmdir(path);
} else if (FS.isFile(entry.mode)) {
FS.unlink(path);
}
done(null);
} catch (e) {
return done(e);
}
} else {
// delete file from IDB
var req = store.delete(path);
req.onsuccess = function req_onsuccess() { done(null); };
req.onerror = function req_onerror() { done(this.error); };
}
}
},getLocalSet:function (mount, callback) {
var files = {};
function isRealDir(p) {
return p !== '.' && p !== '..';
};
function toAbsolute(root) {
return function(p) {
return PATH.join2(root, p);
}
};
var check = FS.readdir(mount.mountpoint)
.filter(isRealDir)
.map(toAbsolute(mount.mountpoint));
while (check.length) {
var path = check.pop();
var stat, node;
try {
var lookup = FS.lookupPath(path);
node = lookup.node;
stat = FS.stat(path);
} catch (e) {
return callback(e);
}
if (FS.isDir(stat.mode)) {
check.push.apply(check, FS.readdir(path)
.filter(isRealDir)
.map(toAbsolute(path)));
files[path] = { mode: stat.mode, timestamp: stat.mtime };
} else if (FS.isFile(stat.mode)) {
files[path] = { contents: node.contents, mode: stat.mode, timestamp: stat.mtime };
} else {
return callback(new Error('node type not supported'));
}
}
return callback(null, { type: 'local', files: files });
},getDB:function (name, callback) {
// look it up in the cache
var db = IDBFS.dbs[name];
if (db) {
return callback(null, db);
}
var req;
try {
req = IDBFS.indexedDB().open(name, IDBFS.DB_VERSION);
} catch (e) {
return onerror(e);
}
req.onupgradeneeded = function req_onupgradeneeded() {
db = req.result;
db.createObjectStore(IDBFS.DB_STORE_NAME);
};
req.onsuccess = function req_onsuccess() {
db = req.result;
// add to the cache
IDBFS.dbs[name] = db;
callback(null, db);
};
req.onerror = function req_onerror() {
callback(this.error);
};
},getRemoteSet:function (mount, callback) {
var files = {};
IDBFS.getDB(mount.mountpoint, function(err, db) {
if (err) return callback(err);
var transaction = db.transaction([IDBFS.DB_STORE_NAME], 'readonly');
transaction.onerror = function transaction_onerror() { callback(this.error); };
var store = transaction.objectStore(IDBFS.DB_STORE_NAME);
store.openCursor().onsuccess = function store_openCursor_onsuccess(event) {
var cursor = event.target.result;
if (!cursor) {
return callback(null, { type: 'remote', db: db, files: files });
}
files[cursor.key] = cursor.value;
cursor.continue();
};
});
}};
var NODEFS={isWindows:false,staticInit:function () {
NODEFS.isWindows = !!process.platform.match(/^win/);
},mount:function (mount) {
assert(ENVIRONMENT_IS_NODE);
return NODEFS.createNode(null, '/', NODEFS.getMode(mount.opts.root), 0);
},createNode:function (parent, name, mode, dev) {
if (!FS.isDir(mode) && !FS.isFile(mode) && !FS.isLink(mode)) {
throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
}
var node = FS.createNode(parent, name, mode);
node.node_ops = NODEFS.node_ops;
node.stream_ops = NODEFS.stream_ops;
return node;
},getMode:function (path) {
var stat;
try {
stat = fs.lstatSync(path);
if (NODEFS.isWindows) {
// On Windows, directories return permission bits 'rw-rw-rw-', even though they have 'rwxrwxrwx', so
// propagate write bits to execute bits.
stat.mode = stat.mode | ((stat.mode & 146) >> 1);
}
} catch (e) {
if (!e.code) throw e;
throw new FS.ErrnoError(ERRNO_CODES[e.code]);
}
return stat.mode;
},realPath:function (node) {
var parts = [];
while (node.parent !== node) {
parts.push(node.name);
node = node.parent;
}
parts.push(node.mount.opts.root);
parts.reverse();
return PATH.join.apply(null, parts);
},flagsToPermissionStringMap:{0:"r",1:"r+",2:"r+",64:"r",65:"r+",66:"r+",129:"rx+",193:"rx+",514:"w+",577:"w",578:"w+",705:"wx",706:"wx+",1024:"a",1025:"a",1026:"a+",1089:"a",1090:"a+",1153:"ax",1154:"ax+",1217:"ax",1218:"ax+",4096:"rs",4098:"rs+"},flagsToPermissionString:function (flags) {
if (flags in NODEFS.flagsToPermissionStringMap) {
return NODEFS.flagsToPermissionStringMap[flags];
} else {
return flags;
}
},node_ops:{getattr:function (node) {
var path = NODEFS.realPath(node);
var stat;
try {
stat = fs.lstatSync(path);
} catch (e) {
if (!e.code) throw e;
throw new FS.ErrnoError(ERRNO_CODES[e.code]);
}
// node.js v0.10.20 doesn't report blksize and blocks on Windows. Fake them with default blksize of 4096.
// See http://support.microsoft.com/kb/140365
if (NODEFS.isWindows && !stat.blksize) {
stat.blksize = 4096;
}
if (NODEFS.isWindows && !stat.blocks) {
stat.blocks = (stat.size+stat.blksize-1)/stat.blksize|0;
}
return {
dev: stat.dev,
ino: stat.ino,
mode: stat.mode,
nlink: stat.nlink,
uid: stat.uid,
gid: stat.gid,
rdev: stat.rdev,
size: stat.size,
atime: stat.atime,
mtime: stat.mtime,
ctime: stat.ctime,
blksize: stat.blksize,
blocks: stat.blocks
};
},setattr:function (node, attr) {
var path = NODEFS.realPath(node);
try {
if (attr.mode !== undefined) {
fs.chmodSync(path, attr.mode);
// update the common node structure mode as well
node.mode = attr.mode;
}
if (attr.timestamp !== undefined) {
var date = new Date(attr.timestamp);
fs.utimesSync(path, date, date);
}
if (attr.size !== undefined) {
fs.truncateSync(path, attr.size);
}
} catch (e) {
if (!e.code) throw e;
throw new FS.ErrnoError(ERRNO_CODES[e.code]);
}
},lookup:function (parent, name) {
var path = PATH.join2(NODEFS.realPath(parent), name);
var mode = NODEFS.getMode(path);
return NODEFS.createNode(parent, name, mode);
},mknod:function (parent, name, mode, dev) {
var node = NODEFS.createNode(parent, name, mode, dev);
// create the backing node for this in the fs root as well
var path = NODEFS.realPath(node);
try {
if (FS.isDir(node.mode)) {
fs.mkdirSync(path, node.mode);
} else {
fs.writeFileSync(path, '', { mode: node.mode });
}
} catch (e) {
if (!e.code) throw e;
throw new FS.ErrnoError(ERRNO_CODES[e.code]);
}
return node;
},rename:function (oldNode, newDir, newName) {
var oldPath = NODEFS.realPath(oldNode);
var newPath = PATH.join2(NODEFS.realPath(newDir), newName);
try {
fs.renameSync(oldPath, newPath);
} catch (e) {
if (!e.code) throw e;
throw new FS.ErrnoError(ERRNO_CODES[e.code]);
}
},unlink:function (parent, name) {
var path = PATH.join2(NODEFS.realPath(parent), name);
try {
fs.unlinkSync(path);
} catch (e) {
if (!e.code) throw e;
throw new FS.ErrnoError(ERRNO_CODES[e.code]);
}
},rmdir:function (parent, name) {
var path = PATH.join2(NODEFS.realPath(parent), name);
try {
fs.rmdirSync(path);
} catch (e) {
if (!e.code) throw e;
throw new FS.ErrnoError(ERRNO_CODES[e.code]);
}
},readdir:function (node) {
var path = NODEFS.realPath(node);
try {
return fs.readdirSync(path);
} catch (e) {
if (!e.code) throw e;
throw new FS.ErrnoError(ERRNO_CODES[e.code]);
}
},symlink:function (parent, newName, oldPath) {
var newPath = PATH.join2(NODEFS.realPath(parent), newName);
try {
fs.symlinkSync(oldPath, newPath);
} catch (e) {
if (!e.code) throw e;
throw new FS.ErrnoError(ERRNO_CODES[e.code]);
}
},readlink:function (node) {
var path = NODEFS.realPath(node);
try {
return fs.readlinkSync(path);
} catch (e) {
if (!e.code) throw e;
throw new FS.ErrnoError(ERRNO_CODES[e.code]);
}
}},stream_ops:{open:function (stream) {
var path = NODEFS.realPath(stream.node);
try {
if (FS.isFile(stream.node.mode)) {
stream.nfd = fs.openSync(path, NODEFS.flagsToPermissionString(stream.flags));
}
} catch (e) {
if (!e.code) throw e;
throw new FS.ErrnoError(ERRNO_CODES[e.code]);
}
},close:function (stream) {
try {
if (FS.isFile(stream.node.mode) && stream.nfd) {
fs.closeSync(stream.nfd);
}
} catch (e) {
if (!e.code) throw e;
throw new FS.ErrnoError(ERRNO_CODES[e.code]);
}
},read:function (stream, buffer, offset, length, position) {
// FIXME this is terrible.
var nbuffer = new Buffer(length);
var res;
try {
res = fs.readSync(stream.nfd, nbuffer, 0, length, position);
} catch (e) {
throw new FS.ErrnoError(ERRNO_CODES[e.code]);
}
if (res > 0) {
for (var i = 0; i < res; i++) {
buffer[offset + i] = nbuffer[i];
}
}
return res;
},write:function (stream, buffer, offset, length, position) {
// FIXME this is terrible.
var nbuffer = new Buffer(buffer.subarray(offset, offset + length));
var res;
try {
res = fs.writeSync(stream.nfd, nbuffer, 0, length, position);
} catch (e) {
throw new FS.ErrnoError(ERRNO_CODES[e.code]);
}
return res;
},llseek:function (stream, offset, whence) {
var position = offset;
if (whence === 1) { // SEEK_CUR.
position += stream.position;
} else if (whence === 2) { // SEEK_END.
if (FS.isFile(stream.node.mode)) {
try {
var stat = fs.fstatSync(stream.nfd);
position += stat.size;
} catch (e) {
throw new FS.ErrnoError(ERRNO_CODES[e.code]);
}
}
}
if (position < 0) {
throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
}
stream.position = position;
return position;
}}};
var _stdin=allocate(1, "i32*", ALLOC_STATIC);
var _stdout=allocate(1, "i32*", ALLOC_STATIC);
var _stderr=allocate(1, "i32*", ALLOC_STATIC);
function _fflush(stream) {
// int fflush(FILE *stream);
// http://pubs.opengroup.org/onlinepubs/000095399/functions/fflush.html
// we don't currently perform any user-space buffering of data
}var FS={root:null,mounts:[],devices:[null],streams:[null],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,ErrnoError:null,genericErrors:{},handleFSError:function (e) {
if (!(e instanceof FS.ErrnoError)) throw e + ' : ' + stackTrace();
return ___setErrNo(e.errno);
},lookupPath:function (path, opts) {
path = PATH.resolve(FS.cwd(), path);
opts = opts || { recurse_count: 0 };
if (opts.recurse_count > 8) { // max recursive lookup of 8
throw new FS.ErrnoError(ERRNO_CODES.ELOOP);
}
// split the path
var parts = PATH.normalizeArray(path.split('/').filter(function(p) {
return !!p;
}), false);
// start at the root
var current = FS.root;
var current_path = '/';
for (var i = 0; i < parts.length; i++) {
var islast = (i === parts.length-1);
if (islast && opts.parent) {
// stop resolving
break;
}
current = FS.lookupNode(current, parts[i]);
current_path = PATH.join2(current_path, parts[i]);
// jump to the mount's root node if this is a mountpoint
if (FS.isMountpoint(current)) {
current = current.mount.root;
}
// follow symlinks
// by default, lookupPath will not follow a symlink if it is the final path component.
// setting opts.follow = true will override this behavior.
if (!islast || opts.follow) {
var count = 0;
while (FS.isLink(current.mode)) {
var link = FS.readlink(current_path);
current_path = PATH.resolve(PATH.dirname(current_path), link);
var lookup = FS.lookupPath(current_path, { recurse_count: opts.recurse_count });
current = lookup.node;
if (count++ > 40) { // limit max consecutive symlinks to 40 (SYMLOOP_MAX).
throw new FS.ErrnoError(ERRNO_CODES.ELOOP);
}
}
}
}
return { path: current_path, node: current };
},getPath:function (node) {
var path;
while (true) {
if (FS.isRoot(node)) {
var mount = node.mount.mountpoint;
if (!path) return mount;
return mount[mount.length-1] !== '/' ? mount + '/' + path : mount + path;
}
path = path ? node.name + '/' + path : node.name;
node = node.parent;
}
},hashName:function (parentid, name) {
var hash = 0;
for (var i = 0; i < name.length; i++) {
hash = ((hash << 5) - hash + name.charCodeAt(i)) | 0;
}
return ((parentid + hash) >>> 0) % FS.nameTable.length;
},hashAddNode:function (node) {
var hash = FS.hashName(node.parent.id, node.name);
node.name_next = FS.nameTable[hash];
FS.nameTable[hash] = node;
},hashRemoveNode:function (node) {
var hash = FS.hashName(node.parent.id, node.name);
if (FS.nameTable[hash] === node) {
FS.nameTable[hash] = node.name_next;
} else {
var current = FS.nameTable[hash];
while (current) {
if (current.name_next === node) {
current.name_next = node.name_next;
break;
}
current = current.name_next;
}
}
},lookupNode:function (parent, name) {
var err = FS.mayLookup(parent);
if (err) {
throw new FS.ErrnoError(err);
}
var hash = FS.hashName(parent.id, name);
for (var node = FS.nameTable[hash]; node; node = node.name_next) {
var nodeName = node.name;
if (node.parent.id === parent.id && nodeName === name) {
return node;
}
}
// if we failed to find it in the cache, call into the VFS
return FS.lookup(parent, name);
},createNode:function (parent, name, mode, rdev) {
if (!FS.FSNode) {
FS.FSNode = function(parent, name, mode, rdev) {
this.id = FS.nextInode++;
this.name = name;
this.mode = mode;
this.node_ops = {};
this.stream_ops = {};
this.rdev = rdev;
this.parent = null;
this.mount = null;
if (!parent) {
parent = this; // root node sets parent to itself
}
this.parent = parent;
this.mount = parent.mount;
FS.hashAddNode(this);
};
// compatibility
var readMode = 292 | 73;
var writeMode = 146;
FS.FSNode.prototype = {};
// NOTE we must use Object.defineProperties instead of individual calls to
// Object.defineProperty in order to make closure compiler happy
Object.defineProperties(FS.FSNode.prototype, {
read: {
get: function() { return (this.mode & readMode) === readMode; },
set: function(val) { val ? this.mode |= readMode : this.mode &= ~readMode; }
},
write: {
get: function() { return (this.mode & writeMode) === writeMode; },
set: function(val) { val ? this.mode |= writeMode : this.mode &= ~writeMode; }
},
isFolder: {
get: function() { return FS.isDir(this.mode); },
},
isDevice: {
get: function() { return FS.isChrdev(this.mode); },
},
});
}
return new FS.FSNode(parent, name, mode, rdev);
},destroyNode:function (node) {
FS.hashRemoveNode(node);
},isRoot:function (node) {
return node === node.parent;
},isMountpoint:function (node) {
return node.mounted;
},isFile:function (mode) {
return (mode & 61440) === 32768;
},isDir:function (mode) {
return (mode & 61440) === 16384;
},isLink:function (mode) {
return (mode & 61440) === 40960;
},isChrdev:function (mode) {
return (mode & 61440) === 8192;
},isBlkdev:function (mode) {
return (mode & 61440) === 24576;
},isFIFO:function (mode) {
return (mode & 61440) === 4096;
},isSocket:function (mode) {
return (mode & 49152) === 49152;
},flagModes:{"r":0,"rs":1052672,"r+":2,"w":577,"wx":705,"xw":705,"w+":578,"wx+":706,"xw+":706,"a":1089,"ax":1217,"xa":1217,"a+":1090,"ax+":1218,"xa+":1218},modeStringToFlags:function (str) {
var flags = FS.flagModes[str];
if (typeof flags === 'undefined') {
throw new Error('Unknown file open mode: ' + str);
}
return flags;
},flagsToPermissionString:function (flag) {
var accmode = flag & 2097155;
var perms = ['r', 'w', 'rw'][accmode];
if ((flag & 512)) {
perms += 'w';
}
return perms;
},nodePermissions:function (node, perms) {
if (FS.ignorePermissions) {
return 0;
}
// return 0 if any user, group or owner bits are set.
if (perms.indexOf('r') !== -1 && !(node.mode & 292)) {
return ERRNO_CODES.EACCES;
} else if (perms.indexOf('w') !== -1 && !(node.mode & 146)) {
return ERRNO_CODES.EACCES;
} else if (perms.indexOf('x') !== -1 && !(node.mode & 73)) {
return ERRNO_CODES.EACCES;
}
return 0;
},mayLookup:function (dir) {
return FS.nodePermissions(dir, 'x');
},mayCreate:function (dir, name) {
try {
var node = FS.lookupNode(dir, name);
return ERRNO_CODES.EEXIST;
} catch (e) {
}
return FS.nodePermissions(dir, 'wx');
},mayDelete:function (dir, name, isdir) {
var node;
try {
node = FS.lookupNode(dir, name);
} catch (e) {
return e.errno;
}
var err = FS.nodePermissions(dir, 'wx');
if (err) {
return err;
}
if (isdir) {
if (!FS.isDir(node.mode)) {
return ERRNO_CODES.ENOTDIR;
}
if (FS.isRoot(node) || FS.getPath(node) === FS.cwd()) {
return ERRNO_CODES.EBUSY;
}
} else {
if (FS.isDir(node.mode)) {
return ERRNO_CODES.EISDIR;
}
}
return 0;
},mayOpen:function (node, flags) {
if (!node) {
return ERRNO_CODES.ENOENT;
}
if (FS.isLink(node.mode)) {
return ERRNO_CODES.ELOOP;
} else if (FS.isDir(node.mode)) {
if ((flags & 2097155) !== 0 || // opening for write
(flags & 512)) {
return ERRNO_CODES.EISDIR;
}
}
return FS.nodePermissions(node, FS.flagsToPermissionString(flags));
},MAX_OPEN_FDS:4096,nextfd:function (fd_start, fd_end) {
fd_start = fd_start || 1;
fd_end = fd_end || FS.MAX_OPEN_FDS;
for (var fd = fd_start; fd <= fd_end; fd++) {
if (!FS.streams[fd]) {
return fd;
}
}
throw new FS.ErrnoError(ERRNO_CODES.EMFILE);
},getStream:function (fd) {
return FS.streams[fd];
},createStream:function (stream, fd_start, fd_end) {
if (!FS.FSStream) {
FS.FSStream = function(){};
FS.FSStream.prototype = {};
// compatibility
Object.defineProperties(FS.FSStream.prototype, {
object: {
get: function() { return this.node; },
set: function(val) { this.node = val; }
},
isRead: {
get: function() { return (this.flags & 2097155) !== 1; }
},
isWrite: {
get: function() { return (this.flags & 2097155) !== 0; }
},
isAppend: {
get: function() { return (this.flags & 1024); }
}
});
}
if (stream.__proto__) {
// reuse the object
stream.__proto__ = FS.FSStream.prototype;
} else {
var newStream = new FS.FSStream();
for (var p in stream) {
newStream[p] = stream[p];
}
stream = newStream;
}
var fd = FS.nextfd(fd_start, fd_end);
stream.fd = fd;
FS.streams[fd] = stream;
return stream;
},closeStream:function (fd) {
FS.streams[fd] = null;
},chrdev_stream_ops:{open:function (stream) {
var device = FS.getDevice(stream.node.rdev);
// override node's stream ops with the device's
stream.stream_ops = device.stream_ops;
// forward the open call
if (stream.stream_ops.open) {
stream.stream_ops.open(stream);
}
},llseek:function () {
throw new FS.ErrnoError(ERRNO_CODES.ESPIPE);
}},major:function (dev) {
return ((dev) >> 8);
},minor:function (dev) {
return ((dev) & 0xff);
},makedev:function (ma, mi) {
return ((ma) << 8 | (mi));
},registerDevice:function (dev, ops) {
FS.devices[dev] = { stream_ops: ops };
},getDevice:function (dev) {
return FS.devices[dev];
},syncfs:function (populate, callback) {
if (typeof(populate) === 'function') {
callback = populate;
populate = false;
}
var completed = 0;
var total = FS.mounts.length;
function done(err) {
if (err) {
return callback(err);
}
if (++completed >= total) {
callback(null);
}
};
// sync all mounts
for (var i = 0; i < FS.mounts.length; i++) {
var mount = FS.mounts[i];
if (!mount.type.syncfs) {
done(null);
continue;
}
mount.type.syncfs(mount, populate, done);
}
},mount:function (type, opts, mountpoint) {
var lookup;
if (mountpoint) {
lookup = FS.lookupPath(mountpoint, { follow: false });
mountpoint = lookup.path; // use the absolute path
}
var mount = {
type: type,
opts: opts,
mountpoint: mountpoint,
root: null
};
// create a root node for the fs
var root = type.mount(mount);
root.mount = mount;
mount.root = root;
// assign the mount info to the mountpoint's node
if (lookup) {
lookup.node.mount = mount;
lookup.node.mounted = true;
// compatibility update FS.root if we mount to /
if (mountpoint === '/') {
FS.root = mount.root;
}
}
// add to our cached list of mounts
FS.mounts.push(mount);
return root;
},lookup:function (parent, name) {
return parent.node_ops.lookup(parent, name);
},mknod:function (path, mode, dev) {
var lookup = FS.lookupPath(path, { parent: true });
var parent = lookup.node;
var name = PATH.basename(path);
var err = FS.mayCreate(parent, name);
if (err) {
throw new FS.ErrnoError(err);
}
if (!parent.node_ops.mknod) {
throw new FS.ErrnoError(ERRNO_CODES.EPERM);
}
return parent.node_ops.mknod(parent, name, mode, dev);
},create:function (path, mode) {
mode = mode !== undefined ? mode : 0666;
mode &= 4095;
mode |= 32768;
return FS.mknod(path, mode, 0);
},mkdir:function (path, mode) {
mode = mode !== undefined ? mode : 0777;
mode &= 511 | 512;
mode |= 16384;
return FS.mknod(path, mode, 0);
},mkdev:function (path, mode, dev) {
if (typeof(dev) === 'undefined') {
dev = mode;
mode = 0666;
}
mode |= 8192;
return FS.mknod(path, mode, dev);
},symlink:function (oldpath, newpath) {
var lookup = FS.lookupPath(newpath, { parent: true });
var parent = lookup.node;
var newname = PATH.basename(newpath);
var err = FS.mayCreate(parent, newname);
if (err) {
throw new FS.ErrnoError(err);
}
if (!parent.node_ops.symlink) {
throw new FS.ErrnoError(ERRNO_CODES.EPERM);
}
return parent.node_ops.symlink(parent, newname, oldpath);
},rename:function (old_path, new_path) {
var old_dirname = PATH.dirname(old_path);
var new_dirname = PATH.dirname(new_path);
var old_name = PATH.basename(old_path);
var new_name = PATH.basename(new_path);
// parents must exist
var lookup, old_dir, new_dir;
try {
lookup = FS.lookupPath(old_path, { parent: true });
old_dir = lookup.node;
lookup = FS.lookupPath(new_path, { parent: true });
new_dir = lookup.node;
} catch (e) {
throw new FS.ErrnoError(ERRNO_CODES.EBUSY);
}
// need to be part of the same mount
if (old_dir.mount !== new_dir.mount) {
throw new FS.ErrnoError(ERRNO_CODES.EXDEV);
}
// source must exist
var old_node = FS.lookupNode(old_dir, old_name);
// old path should not be an ancestor of the new path
var relative = PATH.relative(old_path, new_dirname);
if (relative.charAt(0) !== '.') {
throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
}
// new path should not be an ancestor of the old path
relative = PATH.relative(new_path, old_dirname);
if (relative.charAt(0) !== '.') {
throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY);
}
// see if the new path already exists
var new_node;
try {
new_node = FS.lookupNode(new_dir, new_name);
} catch (e) {
// not fatal
}
// early out if nothing needs to change
if (old_node === new_node) {
return;
}
// we'll need to delete the old entry
var isdir = FS.isDir(old_node.mode);
var err = FS.mayDelete(old_dir, old_name, isdir);
if (err) {
throw new FS.ErrnoError(err);
}
// need delete permissions if we'll be overwriting.
// need create permissions if new doesn't already exist.
err = new_node ?
FS.mayDelete(new_dir, new_name, isdir) :
FS.mayCreate(new_dir, new_name);
if (err) {
throw new FS.ErrnoError(err);
}
if (!old_dir.node_ops.rename) {
throw new FS.ErrnoError(ERRNO_CODES.EPERM);
}
if (FS.isMountpoint(old_node) || (new_node && FS.isMountpoint(new_node))) {
throw new FS.ErrnoError(ERRNO_CODES.EBUSY);
}
// if we are going to change the parent, check write permissions
if (new_dir !== old_dir) {
err = FS.nodePermissions(old_dir, 'w');
if (err) {
throw new FS.ErrnoError(err);
}
}
// remove the node from the lookup hash
FS.hashRemoveNode(old_node);
// do the underlying fs rename
try {
old_dir.node_ops.rename(old_node, new_dir, new_name);
} catch (e) {
throw e;
} finally {
// add the node back to the hash (in case node_ops.rename
// changed its name)
FS.hashAddNode(old_node);
}
},rmdir:function (path) {
var lookup = FS.lookupPath(path, { parent: true });
var parent = lookup.node;
var name = PATH.basename(path);
var node = FS.lookupNode(parent, name);
var err = FS.mayDelete(parent, name, true);
if (err) {
throw new FS.ErrnoError(err);
}
if (!parent.node_ops.rmdir) {
throw new FS.ErrnoError(ERRNO_CODES.EPERM);
}
if (FS.isMountpoint(node)) {
throw new FS.ErrnoError(ERRNO_CODES.EBUSY);
}
parent.node_ops.rmdir(parent, name);
FS.destroyNode(node);
},readdir:function (path) {
var lookup = FS.lookupPath(path, { follow: true });
var node = lookup.node;
if (!node.node_ops.readdir) {
throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR);
}
return node.node_ops.readdir(node);
},unlink:function (path) {
var lookup = FS.lookupPath(path, { parent: true });
var parent = lookup.node;
var name = PATH.basename(path);
var node = FS.lookupNode(parent, name);
var err = FS.mayDelete(parent, name, false);
if (err) {
// POSIX says unlink should set EPERM, not EISDIR
if (err === ERRNO_CODES.EISDIR) err = ERRNO_CODES.EPERM;
throw new FS.ErrnoError(err);
}
if (!parent.node_ops.unlink) {
throw new FS.ErrnoError(ERRNO_CODES.EPERM);
}
if (FS.isMountpoint(node)) {
throw new FS.ErrnoError(ERRNO_CODES.EBUSY);
}
parent.node_ops.unlink(parent, name);
FS.destroyNode(node);
},readlink:function (path) {
var lookup = FS.lookupPath(path, { follow: false });
var link = lookup.node;
if (!link.node_ops.readlink) {
throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
}
return link.node_ops.readlink(link);
},stat:function (path, dontFollow) {
var lookup = FS.lookupPath(path, { follow: !dontFollow });
var node = lookup.node;
if (!node.node_ops.getattr) {
throw new FS.ErrnoError(ERRNO_CODES.EPERM);
}
return node.node_ops.getattr(node);
},lstat:function (path) {
return FS.stat(path, true);
},chmod:function (path, mode, dontFollow) {
var node;
if (typeof path === 'string') {
var lookup = FS.lookupPath(path, { follow: !dontFollow });
node = lookup.node;
} else {
node = path;
}
if (!node.node_ops.setattr) {
throw new FS.ErrnoError(ERRNO_CODES.EPERM);
}
node.node_ops.setattr(node, {
mode: (mode & 4095) | (node.mode & ~4095),
timestamp: Date.now()
});
},lchmod:function (path, mode) {
FS.chmod(path, mode, true);
},fchmod:function (fd, mode) {
var stream = FS.getStream(fd);
if (!stream) {
throw new FS.ErrnoError(ERRNO_CODES.EBADF);
}
FS.chmod(stream.node, mode);
},chown:function (path, uid, gid, dontFollow) {
var node;
if (typeof path === 'string') {
var lookup = FS.lookupPath(path, { follow: !dontFollow });
node = lookup.node;
} else {
node = path;
}
if (!node.node_ops.setattr) {
throw new FS.ErrnoError(ERRNO_CODES.EPERM);
}
node.node_ops.setattr(node, {
timestamp: Date.now()
// we ignore the uid / gid for now
});
},lchown:function (path, uid, gid) {
FS.chown(path, uid, gid, true);
},fchown:function (fd, uid, gid) {
var stream = FS.getStream(fd);
if (!stream) {
throw new FS.ErrnoError(ERRNO_CODES.EBADF);
}
FS.chown(stream.node, uid, gid);
},truncate:function (path, len) {
if (len < 0) {
throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
}
var node;
if (typeof path === 'string') {
var lookup = FS.lookupPath(path, { follow: true });
node = lookup.node;
} else {
node = path;
}
if (!node.node_ops.setattr) {
throw new FS.ErrnoError(ERRNO_CODES.EPERM);
}
if (FS.isDir(node.mode)) {
throw new FS.ErrnoError(ERRNO_CODES.EISDIR);
}
if (!FS.isFile(node.mode)) {
throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
}
var err = FS.nodePermissions(node, 'w');
if (err) {
throw new FS.ErrnoError(err);
}
node.node_ops.setattr(node, {
size: len,
timestamp: Date.now()
});
},ftruncate:function (fd, len) {
var stream = FS.getStream(fd);
if (!stream) {
throw new FS.ErrnoError(ERRNO_CODES.EBADF);
}
if ((stream.flags & 2097155) === 0) {
throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
}
FS.truncate(stream.node, len);
},utime:function (path, atime, mtime) {
var lookup = FS.lookupPath(path, { follow: true });
var node = lookup.node;
node.node_ops.setattr(node, {
timestamp: Math.max(atime, mtime)
});
},open:function (path, flags, mode, fd_start, fd_end) {
flags = typeof flags === 'string' ? FS.modeStringToFlags(flags) : flags;
mode = typeof mode === 'undefined' ? 0666 : mode;
if ((flags & 64)) {
mode = (mode & 4095) | 32768;
} else {
mode = 0;
}
var node;
if (typeof path === 'object') {
node = path;
} else {
path = PATH.normalize(path);
try {
var lookup = FS.lookupPath(path, {
follow: !(flags & 131072)
});
node = lookup.node;
} catch (e) {
// ignore
}
}
// perhaps we need to create the node
if ((flags & 64)) {
if (node) {
// if O_CREAT and O_EXCL are set, error out if the node already exists
if ((flags & 128)) {
throw new FS.ErrnoError(ERRNO_CODES.EEXIST);
}
} else {
// node doesn't exist, try to create it
node = FS.mknod(path, mode, 0);
}
}
if (!node) {
throw new FS.ErrnoError(ERRNO_CODES.ENOENT);
}
// can't truncate a device
if (FS.isChrdev(node.mode)) {
flags &= ~512;
}
// check permissions
var err = FS.mayOpen(node, flags);
if (err) {
throw new FS.ErrnoError(err);
}
// do truncation if necessary
if ((flags & 512)) {
FS.truncate(node, 0);
}
// we've already handled these, don't pass down to the underlying vfs
flags &= ~(128 | 512);
// register the stream with the filesystem
var stream = FS.createStream({
node: node,
path: FS.getPath(node), // we want the absolute path to the node
flags: flags,
seekable: true,
position: 0,
stream_ops: node.stream_ops,
// used by the file family libc calls (fopen, fwrite, ferror, etc.)
ungotten: [],
error: false
}, fd_start, fd_end);
// call the new stream's open function
if (stream.stream_ops.open) {
stream.stream_ops.open(stream);
}
if (Module['logReadFiles'] && !(flags & 1)) {
if (!FS.readFiles) FS.readFiles = {};
if (!(path in FS.readFiles)) {
FS.readFiles[path] = 1;
Module['printErr']('read file: ' + path);
}
}
return stream;
},close:function (stream) {
try {
if (stream.stream_ops.close) {
stream.stream_ops.close(stream);
}
} catch (e) {
throw e;
} finally {
FS.closeStream(stream.fd);
}
},llseek:function (stream, offset, whence) {
if (!stream.seekable || !stream.stream_ops.llseek) {
throw new FS.ErrnoError(ERRNO_CODES.ESPIPE);
}
return stream.stream_ops.llseek(stream, offset, whence);
},read:function (stream, buffer, offset, length, position) {
if (length < 0 || position < 0) {
throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
}
if ((stream.flags & 2097155) === 1) {
throw new FS.ErrnoError(ERRNO_CODES.EBADF);
}
if (FS.isDir(stream.node.mode)) {
throw new FS.ErrnoError(ERRNO_CODES.EISDIR);
}
if (!stream.stream_ops.read) {
throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
}
var seeking = true;
if (typeof position === 'undefined') {
position = stream.position;
seeking = false;
} else if (!stream.seekable) {
throw new FS.ErrnoError(ERRNO_CODES.ESPIPE);
}
var bytesRead = stream.stream_ops.read(stream, buffer, offset, length, position);
if (!seeking) stream.position += bytesRead;
return bytesRead;
},write:function (stream, buffer, offset, length, position, canOwn) {
if (length < 0 || position < 0) {
throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
}
if ((stream.flags & 2097155) === 0) {
throw new FS.ErrnoError(ERRNO_CODES.EBADF);
}
if (FS.isDir(stream.node.mode)) {
throw new FS.ErrnoError(ERRNO_CODES.EISDIR);
}
if (!stream.stream_ops.write) {
throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
}
var seeking = true;
if (typeof position === 'undefined') {
position = stream.position;
seeking = false;
} else if (!stream.seekable) {
throw new FS.ErrnoError(ERRNO_CODES.ESPIPE);
}
if (stream.flags & 1024) {
// seek to the end before writing in append mode
FS.llseek(stream, 0, 2);
}
var bytesWritten = stream.stream_ops.write(stream, buffer, offset, length, position, canOwn);
if (!seeking) stream.position += bytesWritten;
return bytesWritten;
},allocate:function (stream, offset, length) {
if (offset < 0 || length <= 0) {
throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
}
if ((stream.flags & 2097155) === 0) {
throw new FS.ErrnoError(ERRNO_CODES.EBADF);
}
if (!FS.isFile(stream.node.mode) && !FS.isDir(node.mode)) {
throw new FS.ErrnoError(ERRNO_CODES.ENODEV);
}
if (!stream.stream_ops.allocate) {
throw new FS.ErrnoError(ERRNO_CODES.EOPNOTSUPP);
}
stream.stream_ops.allocate(stream, offset, length);
},mmap:function (stream, buffer, offset, length, position, prot, flags) {
// TODO if PROT is PROT_WRITE, make sure we have write access
if ((stream.flags & 2097155) === 1) {
throw new FS.ErrnoError(ERRNO_CODES.EACCES);
}
if (!stream.stream_ops.mmap) {
throw new FS.ErrnoError(ERRNO_CODES.ENODEV);
}
return stream.stream_ops.mmap(stream, buffer, offset, length, position, prot, flags);
},ioctl:function (stream, cmd, arg) {
if (!stream.stream_ops.ioctl) {
throw new FS.ErrnoError(ERRNO_CODES.ENOTTY);
}
return stream.stream_ops.ioctl(stream, cmd, arg);
},readFile:function (path, opts) {
opts = opts || {};
opts.flags = opts.flags || 'r';
opts.encoding = opts.encoding || 'binary';
var ret;
var stream = FS.open(path, opts.flags);
var stat = FS.stat(path);
var length = stat.size;
var buf = new Uint8Array(length);
FS.read(stream, buf, 0, length, 0);
if (opts.encoding === 'utf8') {
ret = '';
var utf8 = new Runtime.UTF8Processor();
for (var i = 0; i < length; i++) {
ret += utf8.processCChar(buf[i]);
}
} else if (opts.encoding === 'binary') {
ret = buf;
} else {
throw new Error('Invalid encoding type "' + opts.encoding + '"');
}
FS.close(stream);
return ret;
},writeFile:function (path, data, opts) {
opts = opts || {};
opts.flags = opts.flags || 'w';
opts.encoding = opts.encoding || 'utf8';
var stream = FS.open(path, opts.flags, opts.mode);
if (opts.encoding === 'utf8') {
var utf8 = new Runtime.UTF8Processor();
var buf = new Uint8Array(utf8.processJSString(data));
FS.write(stream, buf, 0, buf.length, 0);
} else if (opts.encoding === 'binary') {
FS.write(stream, data, 0, data.length, 0);
} else {
throw new Error('Invalid encoding type "' + opts.encoding + '"');
}
FS.close(stream);
},cwd:function () {
return FS.currentPath;
},chdir:function (path) {
var lookup = FS.lookupPath(path, { follow: true });
if (!FS.isDir(lookup.node.mode)) {
throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR);
}
var err = FS.nodePermissions(lookup.node, 'x');
if (err) {
throw new FS.ErrnoError(err);
}
FS.currentPath = lookup.path;
},createDefaultDirectories:function () {
FS.mkdir('/tmp');
},createDefaultDevices:function () {
// create /dev
FS.mkdir('/dev');
// setup /dev/null
FS.registerDevice(FS.makedev(1, 3), {
read: function() { return 0; },
write: function() { return 0; }
});
FS.mkdev('/dev/null', FS.makedev(1, 3));
// setup /dev/tty and /dev/tty1
// stderr needs to print output using Module['printErr']
// so we register a second tty just for it.
TTY.register(FS.makedev(5, 0), TTY.default_tty_ops);
TTY.register(FS.makedev(6, 0), TTY.default_tty1_ops);
FS.mkdev('/dev/tty', FS.makedev(5, 0));
FS.mkdev('/dev/tty1', FS.makedev(6, 0));
// we're not going to emulate the actual shm device,
// just create the tmp dirs that reside in it commonly
FS.mkdir('/dev/shm');
FS.mkdir('/dev/shm/tmp');
},createStandardStreams:function () {
// TODO deprecate the old functionality of a single
// input / output callback and that utilizes FS.createDevice
// and instead require a unique set of stream ops
// by default, we symlink the standard streams to the
// default tty devices. however, if the standard streams
// have been overwritten we create a unique device for
// them instead.
if (Module['stdin']) {
FS.createDevice('/dev', 'stdin', Module['stdin']);
} else {
FS.symlink('/dev/tty', '/dev/stdin');
}
if (Module['stdout']) {
FS.createDevice('/dev', 'stdout', null, Module['stdout']);
} else {
FS.symlink('/dev/tty', '/dev/stdout');
}
if (Module['stderr']) {
FS.createDevice('/dev', 'stderr', null, Module['stderr']);
} else {
FS.symlink('/dev/tty1', '/dev/stderr');
}
// open default streams for the stdin, stdout and stderr devices
var stdin = FS.open('/dev/stdin', 'r');
HEAP32[((_stdin)>>2)]=stdin.fd;
assert(stdin.fd === 1, 'invalid handle for stdin (' + stdin.fd + ')');
var stdout = FS.open('/dev/stdout', 'w');
HEAP32[((_stdout)>>2)]=stdout.fd;
assert(stdout.fd === 2, 'invalid handle for stdout (' + stdout.fd + ')');
var stderr = FS.open('/dev/stderr', 'w');
HEAP32[((_stderr)>>2)]=stderr.fd;
assert(stderr.fd === 3, 'invalid handle for stderr (' + stderr.fd + ')');
},ensureErrnoError:function () {
if (FS.ErrnoError) return;
FS.ErrnoError = function ErrnoError(errno) {
this.errno = errno;
for (var key in ERRNO_CODES) {
if (ERRNO_CODES[key] === errno) {
this.code = key;
break;
}
}
this.message = ERRNO_MESSAGES[errno];
if (this.stack) this.stack = demangleAll(this.stack);
};
FS.ErrnoError.prototype = new Error();
FS.ErrnoError.prototype.constructor = FS.ErrnoError;
// Some errors may happen quite a bit, to avoid overhead we reuse them (and suffer a lack of stack info)
[ERRNO_CODES.ENOENT].forEach(function(code) {
FS.genericErrors[code] = new FS.ErrnoError(code);
FS.genericErrors[code].stack = '<generic error, no stack>';
});
},staticInit:function () {
FS.ensureErrnoError();
FS.nameTable = new Array(4096);
FS.root = FS.createNode(null, '/', 16384 | 0777, 0);
FS.mount(MEMFS, {}, '/');
FS.createDefaultDirectories();
FS.createDefaultDevices();
},init:function (input, output, error) {
assert(!FS.init.initialized, 'FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)');
FS.init.initialized = true;
FS.ensureErrnoError();
// Allow Module.stdin etc. to provide defaults, if none explicitly passed to us here
Module['stdin'] = input || Module['stdin'];
Module['stdout'] = output || Module['stdout'];
Module['stderr'] = error || Module['stderr'];
FS.createStandardStreams();
},quit:function () {
FS.init.initialized = false;
for (var i = 0; i < FS.streams.length; i++) {
var stream = FS.streams[i];
if (!stream) {
continue;
}
FS.close(stream);
}
},getMode:function (canRead, canWrite) {
var mode = 0;
if (canRead) mode |= 292 | 73;
if (canWrite) mode |= 146;
return mode;
},joinPath:function (parts, forceRelative) {
var path = PATH.join.apply(null, parts);
if (forceRelative && path[0] == '/') path = path.substr(1);
return path;
},absolutePath:function (relative, base) {
return PATH.resolve(base, relative);
},standardizePath:function (path) {
return PATH.normalize(path);
},findObject:function (path, dontResolveLastLink) {
var ret = FS.analyzePath(path, dontResolveLastLink);
if (ret.exists) {
return ret.object;
} else {
___setErrNo(ret.error);
return null;
}
},analyzePath:function (path, dontResolveLastLink) {
// operate from within the context of the symlink's target
try {
var lookup = FS.lookupPath(path, { follow: !dontResolveLastLink });
path = lookup.path;
} catch (e) {
}
var ret = {
isRoot: false, exists: false, error: 0, name: null, path: null, object: null,
parentExists: false, parentPath: null, parentObject: null
};
try {
var lookup = FS.lookupPath(path, { parent: true });
ret.parentExists = true;
ret.parentPath = lookup.path;
ret.parentObject = lookup.node;
ret.name = PATH.basename(path);
lookup = FS.lookupPath(path, { follow: !dontResolveLastLink });
ret.exists = true;
ret.path = lookup.path;
ret.object = lookup.node;
ret.name = lookup.node.name;
ret.isRoot = lookup.path === '/';
} catch (e) {
ret.error = e.errno;
};
return ret;
},createFolder:function (parent, name, canRead, canWrite) {
var path = PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name);
var mode = FS.getMode(canRead, canWrite);
return FS.mkdir(path, mode);
},createPath:function (parent, path, canRead, canWrite) {
parent = typeof parent === 'string' ? parent : FS.getPath(parent);
var parts = path.split('/').reverse();
while (parts.length) {
var part = parts.pop();
if (!part) continue;
var current = PATH.join2(parent, part);
try {
FS.mkdir(current);
} catch (e) {
// ignore EEXIST
}
parent = current;
}
return current;
},createFile:function (parent, name, properties, canRead, canWrite) {
var path = PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name);
var mode = FS.getMode(canRead, canWrite);
return FS.create(path, mode);
},createDataFile:function (parent, name, data, canRead, canWrite, canOwn) {
var path = name ? PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name) : parent;
var mode = FS.getMode(canRead, canWrite);
var node = FS.create(path, mode);
if (data) {
if (typeof data === 'string') {
var arr = new Array(data.length);
for (var i = 0, len = data.length; i < len; ++i) arr[i] = data.charCodeAt(i);
data = arr;
}
// make sure we can write to the file
FS.chmod(node, mode | 146);
var stream = FS.open(node, 'w');
FS.write(stream, data, 0, data.length, 0, canOwn);
FS.close(stream);
FS.chmod(node, mode);
}
return node;
},createDevice:function (parent, name, input, output) {
var path = PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name);
var mode = FS.getMode(!!input, !!output);
if (!FS.createDevice.major) FS.createDevice.major = 64;
var dev = FS.makedev(FS.createDevice.major++, 0);
// Create a fake device that a set of stream ops to emulate
// the old behavior.
FS.registerDevice(dev, {
open: function(stream) {
stream.seekable = false;
},
close: function(stream) {
// flush any pending line data
if (output && output.buffer && output.buffer.length) {
output(10);
}
},
read: function(stream, buffer, offset, length, pos /* ignored */) {
var bytesRead = 0;
for (var i = 0; i < length; i++) {
var result;
try {
result = input();
} catch (e) {
throw new FS.ErrnoError(ERRNO_CODES.EIO);
}
if (result === undefined && bytesRead === 0) {
throw new FS.ErrnoError(ERRNO_CODES.EAGAIN);
}
if (result === null || result === undefined) break;
bytesRead++;
buffer[offset+i] = result;
}
if (bytesRead) {
stream.node.timestamp = Date.now();
}
return bytesRead;
},
write: function(stream, buffer, offset, length, pos) {
for (var i = 0; i < length; i++) {
try {
output(buffer[offset+i]);
} catch (e) {
throw new FS.ErrnoError(ERRNO_CODES.EIO);
}
}
if (length) {
stream.node.timestamp = Date.now();
}
return i;
}
});
return FS.mkdev(path, mode, dev);
},createLink:function (parent, name, target, canRead, canWrite) {
var path = PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name);
return FS.symlink(target, path);
},forceLoadFile:function (obj) {
if (obj.isDevice || obj.isFolder || obj.link || obj.contents) return true;
var success = true;
if (typeof XMLHttpRequest !== 'undefined') {
throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.");
} else if (Module['read']) {
// Command-line.
try {
// WARNING: Can't read binary files in V8's d8 or tracemonkey's js, as
// read() will try to parse UTF8.
obj.contents = intArrayFromString(Module['read'](obj.url), true);
} catch (e) {
success = false;
}
} else {
throw new Error('Cannot load without read() or XMLHttpRequest.');
}
if (!success) ___setErrNo(ERRNO_CODES.EIO);
return success;
},createLazyFile:function (parent, name, url, canRead, canWrite) {
if (typeof XMLHttpRequest !== 'undefined') {
if (!ENVIRONMENT_IS_WORKER) throw 'Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc';
// Lazy chunked Uint8Array (implements get and length from Uint8Array). Actual getting is abstracted away for eventual reuse.
function LazyUint8Array() {
this.lengthKnown = false;
this.chunks = []; // Loaded chunks. Index is the chunk number
}
LazyUint8Array.prototype.get = function LazyUint8Array_get(idx) {
if (idx > this.length-1 || idx < 0) {
return undefined;
}
var chunkOffset = idx % this.chunkSize;
var chunkNum = Math.floor(idx / this.chunkSize);
return this.getter(chunkNum)[chunkOffset];
}
LazyUint8Array.prototype.setDataGetter = function LazyUint8Array_setDataGetter(getter) {
this.getter = getter;
}
LazyUint8Array.prototype.cacheLength = function LazyUint8Array_cacheLength() {
// Find length
var xhr = new XMLHttpRequest();
xhr.open('HEAD', url, false);
xhr.send(null);
if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error("Couldn't load " + url + ". Status: " + xhr.status);
var datalength = Number(xhr.getResponseHeader("Content-length"));
var header;
var hasByteServing = (header = xhr.getResponseHeader("Accept-Ranges")) && header === "bytes";
var chunkSize = 1024*1024; // Chunk size in bytes
if (!hasByteServing) chunkSize = datalength;
// Function to get a range from the remote URL.
var doXHR = (function(from, to) {
if (from > to) throw new Error("invalid range (" + from + ", " + to + ") or no bytes requested!");
if (to > datalength-1) throw new Error("only " + datalength + " bytes available! programmer error!");
// TODO: Use mozResponseArrayBuffer, responseStream, etc. if available.
var xhr = new XMLHttpRequest();
xhr.open('GET', url, false);
if (datalength !== chunkSize) xhr.setRequestHeader("Range", "bytes=" + from + "-" + to);
// Some hints to the browser that we want binary data.
if (typeof Uint8Array != 'undefined') xhr.responseType = 'arraybuffer';
if (xhr.overrideMimeType) {
xhr.overrideMimeType('text/plain; charset=x-user-defined');
}
xhr.send(null);
if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error("Couldn't load " + url + ". Status: " + xhr.status);
if (xhr.response !== undefined) {
return new Uint8Array(xhr.response || []);
} else {
return intArrayFromString(xhr.responseText || '', true);
}
});
var lazyArray = this;
lazyArray.setDataGetter(function(chunkNum) {
var start = chunkNum * chunkSize;
var end = (chunkNum+1) * chunkSize - 1; // including this byte
end = Math.min(end, datalength-1); // if datalength-1 is selected, this is the last block
if (typeof(lazyArray.chunks[chunkNum]) === "undefined") {
lazyArray.chunks[chunkNum] = doXHR(start, end);
}
if (typeof(lazyArray.chunks[chunkNum]) === "undefined") throw new Error("doXHR failed!");
return lazyArray.chunks[chunkNum];
});
this._length = datalength;
this._chunkSize = chunkSize;
this.lengthKnown = true;
}
var lazyArray = new LazyUint8Array();
Object.defineProperty(lazyArray, "length", {
get: function() {
if(!this.lengthKnown) {
this.cacheLength();
}
return this._length;
}
});
Object.defineProperty(lazyArray, "chunkSize", {
get: function() {
if(!this.lengthKnown) {
this.cacheLength();
}
return this._chunkSize;
}
});
var properties = { isDevice: false, contents: lazyArray };
} else {
var properties = { isDevice: false, url: url };
}
var node = FS.createFile(parent, name, properties, canRead, canWrite);
// This is a total hack, but I want to get this lazy file code out of the
// core of MEMFS. If we want to keep this lazy file concept I feel it should
// be its own thin LAZYFS proxying calls to MEMFS.
if (properties.contents) {
node.contents = properties.contents;
} else if (properties.url) {
node.contents = null;
node.url = properties.url;
}
// override each stream op with one that tries to force load the lazy file first
var stream_ops = {};
var keys = Object.keys(node.stream_ops);
keys.forEach(function(key) {
var fn = node.stream_ops[key];
stream_ops[key] = function forceLoadLazyFile() {
if (!FS.forceLoadFile(node)) {
throw new FS.ErrnoError(ERRNO_CODES.EIO);
}
return fn.apply(null, arguments);
};
});
// use a custom read function
stream_ops.read = function stream_ops_read(stream, buffer, offset, length, position) {
if (!FS.forceLoadFile(node)) {
throw new FS.ErrnoError(ERRNO_CODES.EIO);
}
var contents = stream.node.contents;
if (position >= contents.length)
return 0;
var size = Math.min(contents.length - position, length);
assert(size >= 0);
if (contents.slice) { // normal array
for (var i = 0; i < size; i++) {
buffer[offset + i] = contents[position + i];
}
} else {
for (var i = 0; i < size; i++) { // LazyUint8Array from sync binary XHR
buffer[offset + i] = contents.get(position + i);
}
}
return size;
};
node.stream_ops = stream_ops;
return node;
},createPreloadedFile:function (parent, name, url, canRead, canWrite, onload, onerror, dontCreateFile, canOwn) {
Browser.init();
// TODO we should allow people to just pass in a complete filename instead
// of parent and name being that we just join them anyways
var fullname = name ? PATH.resolve(PATH.join2(parent, name)) : parent;
function processData(byteArray) {
function finish(byteArray) {
if (!dontCreateFile) {
FS.createDataFile(parent, name, byteArray, canRead, canWrite, canOwn);
}
if (onload) onload();
removeRunDependency('cp ' + fullname);
}
var handled = false;
Module['preloadPlugins'].forEach(function(plugin) {
if (handled) return;
if (plugin['canHandle'](fullname)) {
plugin['handle'](byteArray, fullname, finish, function() {
if (onerror) onerror();
removeRunDependency('cp ' + fullname);
});
handled = true;
}
});
if (!handled) finish(byteArray);
}
addRunDependency('cp ' + fullname);
if (typeof url == 'string') {
Browser.asyncLoad(url, function(byteArray) {
processData(byteArray);
}, onerror);
} else {
processData(url);
}
},indexedDB:function () {
return window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB;
},DB_NAME:function () {
return 'EM_FS_' + window.location.pathname;
},DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:function (paths, onload, onerror) {
onload = onload || function(){};
onerror = onerror || function(){};
var indexedDB = FS.indexedDB();
try {
var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION);
} catch (e) {
return onerror(e);
}
openRequest.onupgradeneeded = function openRequest_onupgradeneeded() {
console.log('creating db');
var db = openRequest.result;
db.createObjectStore(FS.DB_STORE_NAME);
};
openRequest.onsuccess = function openRequest_onsuccess() {
var db = openRequest.result;
var transaction = db.transaction([FS.DB_STORE_NAME], 'readwrite');
var files = transaction.objectStore(FS.DB_STORE_NAME);
var ok = 0, fail = 0, total = paths.length;
function finish() {
if (fail == 0) onload(); else onerror();
}
paths.forEach(function(path) {
var putRequest = files.put(FS.analyzePath(path).object.contents, path);
putRequest.onsuccess = function putRequest_onsuccess() { ok++; if (ok + fail == total) finish() };
putRequest.onerror = function putRequest_onerror() { fail++; if (ok + fail == total) finish() };
});
transaction.onerror = onerror;
};
openRequest.onerror = onerror;
},loadFilesFromDB:function (paths, onload, onerror) {
onload = onload || function(){};
onerror = onerror || function(){};
var indexedDB = FS.indexedDB();
try {
var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION);
} catch (e) {
return onerror(e);
}
openRequest.onupgradeneeded = onerror; // no database to load from
openRequest.onsuccess = function openRequest_onsuccess() {
var db = openRequest.result;
try {
var transaction = db.transaction([FS.DB_STORE_NAME], 'readonly');
} catch(e) {
onerror(e);
return;
}
var files = transaction.objectStore(FS.DB_STORE_NAME);
var ok = 0, fail = 0, total = paths.length;
function finish() {
if (fail == 0) onload(); else onerror();
}
paths.forEach(function(path) {
var getRequest = files.get(path);
getRequest.onsuccess = function getRequest_onsuccess() {
if (FS.analyzePath(path).exists) {
FS.unlink(path);
}
FS.createDataFile(PATH.dirname(path), PATH.basename(path), getRequest.result, true, true, true);
ok++;
if (ok + fail == total) finish();
};
getRequest.onerror = function getRequest_onerror() { fail++; if (ok + fail == total) finish() };
});
transaction.onerror = onerror;
};
openRequest.onerror = onerror;
}};function _readlink(path, buf, bufsize) {
// ssize_t readlink(const char *restrict path, char *restrict buf, size_t bufsize);
// http://pubs.opengroup.org/onlinepubs/000095399/functions/readlink.html
path = Pointer_stringify(path);
var str;
try {
str = FS.readlink(path);
} catch (e) {
FS.handleFSError(e);
return -1;
}
str = str.slice(0, Math.max(0, bufsize - 1));
writeStringToMemory(str, buf, true);
return str.length;
}
var _environ=allocate(1, "i32*", ALLOC_STATIC);var ___environ=_environ;function ___buildEnvironment(env) {
// WARNING: Arbitrary limit!
var MAX_ENV_VALUES = 64;
var TOTAL_ENV_SIZE = 1024;
// Statically allocate memory for the environment.
var poolPtr;
var envPtr;
if (!___buildEnvironment.called) {
___buildEnvironment.called = true;
// Set default values. Use string keys for Closure Compiler compatibility.
ENV['USER'] = 'root';
ENV['PATH'] = '/';
ENV['PWD'] = '/';
ENV['HOME'] = '/home/emscripten';
ENV['LANG'] = 'en_US.UTF-8';
ENV['_'] = './this.program';
// Allocate memory.
poolPtr = allocate(TOTAL_ENV_SIZE, 'i8', ALLOC_STATIC);
envPtr = allocate(MAX_ENV_VALUES * 4,
'i8*', ALLOC_STATIC);
HEAP32[((envPtr)>>2)]=poolPtr;
HEAP32[((_environ)>>2)]=envPtr;
} else {
envPtr = HEAP32[((_environ)>>2)];
poolPtr = HEAP32[((envPtr)>>2)];
}
// Collect key=value lines.
var strings = [];
var totalSize = 0;
for (var key in env) {
if (typeof env[key] === 'string') {
var line = key + '=' + env[key];
strings.push(line);
totalSize += line.length;
}
}
if (totalSize > TOTAL_ENV_SIZE) {
throw new Error('Environment size exceeded TOTAL_ENV_SIZE!');
}
// Make new.
var ptrSize = 4;
for (var i = 0; i < strings.length; i++) {
var line = strings[i];
writeAsciiToMemory(line, poolPtr);
HEAP32[(((envPtr)+(i * ptrSize))>>2)]=poolPtr;
poolPtr += line.length + 1;
}
HEAP32[(((envPtr)+(strings.length * ptrSize))>>2)]=0;
}var ENV={};function _getenv(name) {
// char *getenv(const char *name);
// http://pubs.opengroup.org/onlinepubs/009695399/functions/getenv.html
if (name === 0) return 0;
name = Pointer_stringify(name);
if (!ENV.hasOwnProperty(name)) return 0;
if (_getenv.ret) _free(_getenv.ret);
_getenv.ret = allocate(intArrayFromString(ENV[name]), 'i8', ALLOC_NORMAL);
return _getenv.ret;
}
function _memset(ptr, value, num) {
ptr = ptr|0; value = value|0; num = num|0;
var stop = 0, value4 = 0, stop4 = 0, unaligned = 0;
stop = (ptr + num)|0;
if ((num|0) >= 20) {
// This is unaligned, but quite large, so work hard to get to aligned settings
value = value & 0xff;
unaligned = ptr & 3;
value4 = value | (value << 8) | (value << 16) | (value << 24);
stop4 = stop & ~3;
if (unaligned) {
unaligned = (ptr + 4 - unaligned)|0;
while ((ptr|0) < (unaligned|0)) { // no need to check for stop, since we have large num
HEAP8[(ptr)]=value;
ptr = (ptr+1)|0;
}
}
while ((ptr|0) < (stop4|0)) {
HEAP32[((ptr)>>2)]=value4;
ptr = (ptr+4)|0;
}
}
while ((ptr|0) < (stop|0)) {
HEAP8[(ptr)]=value;
ptr = (ptr+1)|0;
}
return (ptr-num)|0;
}var _llvm_memset_p0i8_i32=_memset;
function _stat(path, buf, dontResolveLastLink) {
// http://pubs.opengroup.org/onlinepubs/7908799/xsh/stat.html
// int stat(const char *path, struct stat *buf);
// NOTE: dontResolveLastLink is a shortcut for lstat(). It should never be
// used in client code.
path = typeof path !== 'string' ? Pointer_stringify(path) : path;
try {
var stat = dontResolveLastLink ? FS.lstat(path) : FS.stat(path);
HEAP32[((buf)>>2)]=stat.dev;
HEAP32[(((buf)+(4))>>2)]=0;
HEAP32[(((buf)+(8))>>2)]=stat.ino;
HEAP32[(((buf)+(12))>>2)]=stat.mode;
HEAP32[(((buf)+(16))>>2)]=stat.nlink;
HEAP32[(((buf)+(20))>>2)]=stat.uid;
HEAP32[(((buf)+(24))>>2)]=stat.gid;
HEAP32[(((buf)+(28))>>2)]=stat.rdev;
HEAP32[(((buf)+(32))>>2)]=0;
HEAP32[(((buf)+(36))>>2)]=stat.size;
HEAP32[(((buf)+(40))>>2)]=4096;
HEAP32[(((buf)+(44))>>2)]=stat.blocks;
HEAP32[(((buf)+(48))>>2)]=Math.floor(stat.atime.getTime() / 1000);
HEAP32[(((buf)+(52))>>2)]=0;
HEAP32[(((buf)+(56))>>2)]=Math.floor(stat.mtime.getTime() / 1000);
HEAP32[(((buf)+(60))>>2)]=0;
HEAP32[(((buf)+(64))>>2)]=Math.floor(stat.ctime.getTime() / 1000);
HEAP32[(((buf)+(68))>>2)]=0;
HEAP32[(((buf)+(72))>>2)]=stat.ino;
return 0;
} catch (e) {
FS.handleFSError(e);
return -1;
}
}
function _strerror_r(errnum, strerrbuf, buflen) {
if (errnum in ERRNO_MESSAGES) {
if (ERRNO_MESSAGES[errnum].length > buflen - 1) {
return ___setErrNo(ERRNO_CODES.ERANGE);
} else {
var msg = ERRNO_MESSAGES[errnum];
writeAsciiToMemory(msg, strerrbuf);
return 0;
}
} else {
return ___setErrNo(ERRNO_CODES.EINVAL);
}
}function _strerror(errnum) {
if (!_strerror.buffer) _strerror.buffer = _malloc(256);
_strerror_r(errnum, _strerror.buffer, 256);
return _strerror.buffer;
}
function ___errno_location() {
return ___errno_state;
}
function _rename(old_path, new_path) {
// int rename(const char *old, const char *new);
// http://pubs.opengroup.org/onlinepubs/000095399/functions/rename.html
old_path = Pointer_stringify(old_path);
new_path = Pointer_stringify(new_path);
try {
FS.rename(old_path, new_path);
return 0;
} catch (e) {
FS.handleFSError(e);
return -1;
}
}
function _memcpy(dest, src, num) {
dest = dest|0; src = src|0; num = num|0;
var ret = 0;
ret = dest|0;
if ((dest&3) == (src&3)) {
while (dest & 3) {
if ((num|0) == 0) return ret|0;
HEAP8[(dest)]=HEAP8[(src)];
dest = (dest+1)|0;
src = (src+1)|0;
num = (num-1)|0;
}
while ((num|0) >= 4) {
HEAP32[((dest)>>2)]=HEAP32[((src)>>2)];
dest = (dest+4)|0;
src = (src+4)|0;
num = (num-4)|0;
}
}
while ((num|0) > 0) {
HEAP8[(dest)]=HEAP8[(src)];
dest = (dest+1)|0;
src = (src+1)|0;
num = (num-1)|0;
}
return ret|0;
}var _llvm_memcpy_p0i8_p0i8_i32=_memcpy;
function _strncmp(px, py, n) {
var i = 0;
while (i < n) {
var x = HEAPU8[(((px)+(i))|0)];
var y = HEAPU8[(((py)+(i))|0)];
if (x == y && x == 0) return 0;
if (x == 0) return -1;
if (y == 0) return 1;
if (x == y) {
i ++;
continue;
} else {
return x > y ? 1 : -1;
}
}
return 0;
}function _strcmp(px, py) {
return _strncmp(px, py, TOTAL_MEMORY);
}
function _time(ptr) {
var ret = Math.floor(Date.now()/1000);
if (ptr) {
HEAP32[((ptr)>>2)]=ret;
}
return ret;
}
var ___tm_current=allocate(44, "i8", ALLOC_STATIC);
var ___tm_timezone=allocate(intArrayFromString("GMT"), "i8", ALLOC_STATIC);
var _tzname=allocate(8, "i32*", ALLOC_STATIC);
var _daylight=allocate(1, "i32*", ALLOC_STATIC);
var _timezone=allocate(1, "i32*", ALLOC_STATIC);function _tzset() {
// TODO: Use (malleable) environment variables instead of system settings.
if (_tzset.called) return;
_tzset.called = true;
HEAP32[((_timezone)>>2)]=-(new Date()).getTimezoneOffset() * 60;
var winter = new Date(2000, 0, 1);
var summer = new Date(2000, 6, 1);
HEAP32[((_daylight)>>2)]=Number(winter.getTimezoneOffset() != summer.getTimezoneOffset());
var winterName = 'GMT'; // XXX do not rely on browser timezone info, it is very unpredictable | winter.toString().match(/\(([A-Z]+)\)/)[1];
var summerName = 'GMT'; // XXX do not rely on browser timezone info, it is very unpredictable | summer.toString().match(/\(([A-Z]+)\)/)[1];
var winterNamePtr = allocate(intArrayFromString(winterName), 'i8', ALLOC_NORMAL);
var summerNamePtr = allocate(intArrayFromString(summerName), 'i8', ALLOC_NORMAL);
HEAP32[((_tzname)>>2)]=winterNamePtr;
HEAP32[(((_tzname)+(4))>>2)]=summerNamePtr;
}function _localtime_r(time, tmPtr) {
_tzset();
var date = new Date(HEAP32[((time)>>2)]*1000);
HEAP32[((tmPtr)>>2)]=date.getSeconds();
HEAP32[(((tmPtr)+(4))>>2)]=date.getMinutes();
HEAP32[(((tmPtr)+(8))>>2)]=date.getHours();
HEAP32[(((tmPtr)+(12))>>2)]=date.getDate();
HEAP32[(((tmPtr)+(16))>>2)]=date.getMonth();
HEAP32[(((tmPtr)+(20))>>2)]=date.getFullYear()-1900;
HEAP32[(((tmPtr)+(24))>>2)]=date.getDay();
var start = new Date(date.getFullYear(), 0, 1);
var yday = Math.floor((date.getTime() - start.getTime()) / (1000 * 60 * 60 * 24));
HEAP32[(((tmPtr)+(28))>>2)]=yday;
HEAP32[(((tmPtr)+(36))>>2)]=start.getTimezoneOffset() * 60;
var dst = Number(start.getTimezoneOffset() != date.getTimezoneOffset());
HEAP32[(((tmPtr)+(32))>>2)]=dst;
HEAP32[(((tmPtr)+(40))>>2)]=___tm_timezone;
return tmPtr;
}function _localtime(time) {
return _localtime_r(time, ___tm_current);
}
function _memcmp(p1, p2, num) {
p1 = p1|0; p2 = p2|0; num = num|0;
var i = 0, v1 = 0, v2 = 0;
while ((i|0) < (num|0)) {
v1 = HEAPU8[(((p1)+(i))|0)];
v2 = HEAPU8[(((p2)+(i))|0)];
if ((v1|0) != (v2|0)) return ((v1|0) > (v2|0) ? 1 : -1)|0;
i = (i+1)|0;
}
return 0;
}
function _emscripten_asm_const_int(code) {
var args = Array.prototype.slice.call(arguments, 1);
return Runtime.getAsmConst(code, args.length).apply(null, args) | 0;
}
var _mkport=undefined;var SOCKFS={mount:function (mount) {
return FS.createNode(null, '/', 16384 | 0777, 0);
},createSocket:function (family, type, protocol) {
var streaming = type == 1;
if (protocol) {
assert(streaming == (protocol == 6)); // if SOCK_STREAM, must be tcp
}
// create our internal socket structure
var sock = {
family: family,
type: type,
protocol: protocol,
server: null,
peers: {},
pending: [],
recv_queue: [],
sock_ops: SOCKFS.websocket_sock_ops
};
// create the filesystem node to store the socket structure
var name = SOCKFS.nextname();
var node = FS.createNode(SOCKFS.root, name, 49152, 0);
node.sock = sock;
// and the wrapping stream that enables library functions such
// as read and write to indirectly interact with the socket
var stream = FS.createStream({
path: name,
node: node,
flags: FS.modeStringToFlags('r+'),
seekable: false,
stream_ops: SOCKFS.stream_ops
});
// map the new stream to the socket structure (sockets have a 1:1
// relationship with a stream)
sock.stream = stream;
return sock;
},getSocket:function (fd) {
var stream = FS.getStream(fd);
if (!stream || !FS.isSocket(stream.node.mode)) {
return null;
}
return stream.node.sock;
},stream_ops:{poll:function (stream) {
var sock = stream.node.sock;
return sock.sock_ops.poll(sock);
},ioctl:function (stream, request, varargs) {
var sock = stream.node.sock;
return sock.sock_ops.ioctl(sock, request, varargs);
},read:function (stream, buffer, offset, length, position /* ignored */) {
var sock = stream.node.sock;
var msg = sock.sock_ops.recvmsg(sock, length);
if (!msg) {
// socket is closed
return 0;
}
buffer.set(msg.buffer, offset);
return msg.buffer.length;
},write:function (stream, buffer, offset, length, position /* ignored */) {
var sock = stream.node.sock;
return sock.sock_ops.sendmsg(sock, buffer, offset, length);
},close:function (stream) {
var sock = stream.node.sock;
sock.sock_ops.close(sock);
}},nextname:function () {
if (!SOCKFS.nextname.current) {
SOCKFS.nextname.current = 0;
}
return 'socket[' + (SOCKFS.nextname.current++) + ']';
},websocket_sock_ops:{createPeer:function (sock, addr, port) {
var ws;
if (typeof addr === 'object') {
ws = addr;
addr = null;
port = null;
}
if (ws) {
// for sockets that've already connected (e.g. we're the server)
// we can inspect the _socket property for the address
if (ws._socket) {
addr = ws._socket.remoteAddress;
port = ws._socket.remotePort;
}
// if we're just now initializing a connection to the remote,
// inspect the url property
else {
var result = /ws[s]?:\/\/([^:]+):(\d+)/.exec(ws.url);
if (!result) {
throw new Error('WebSocket URL must be in the format ws(s)://address:port');
}
addr = result[1];
port = parseInt(result[2], 10);
}
} else {
// create the actual websocket object and connect
try {
var url = 'ws://' + addr + ':' + port;
// the node ws library API is slightly different than the browser's
var opts = ENVIRONMENT_IS_NODE ? {headers: {'websocket-protocol': ['binary']}} : ['binary'];
// If node we use the ws library.
var WebSocket = ENVIRONMENT_IS_NODE ? require('ws') : window['WebSocket'];
ws = new WebSocket(url, opts);
ws.binaryType = 'arraybuffer';
} catch (e) {
throw new FS.ErrnoError(ERRNO_CODES.EHOSTUNREACH);
}
}
var peer = {
addr: addr,
port: port,
socket: ws,
dgram_send_queue: []
};
SOCKFS.websocket_sock_ops.addPeer(sock, peer);
SOCKFS.websocket_sock_ops.handlePeerEvents(sock, peer);
// if this is a bound dgram socket, send the port number first to allow
// us to override the ephemeral port reported to us by remotePort on the
// remote end.
if (sock.type === 2 && typeof sock.sport !== 'undefined') {
peer.dgram_send_queue.push(new Uint8Array([
255, 255, 255, 255,
'p'.charCodeAt(0), 'o'.charCodeAt(0), 'r'.charCodeAt(0), 't'.charCodeAt(0),
((sock.sport & 0xff00) >> 8) , (sock.sport & 0xff)
]));
}
return peer;
},getPeer:function (sock, addr, port) {
return sock.peers[addr + ':' + port];
},addPeer:function (sock, peer) {
sock.peers[peer.addr + ':' + peer.port] = peer;
},removePeer:function (sock, peer) {
delete sock.peers[peer.addr + ':' + peer.port];
},handlePeerEvents:function (sock, peer) {
var first = true;
var handleOpen = function () {
try {
var queued = peer.dgram_send_queue.shift();
while (queued) {
peer.socket.send(queued);
queued = peer.dgram_send_queue.shift();
}
} catch (e) {
// not much we can do here in the way of proper error handling as we've already
// lied and said this data was sent. shut it down.
peer.socket.close();
}
};
function handleMessage(data) {
assert(typeof data !== 'string' && data.byteLength !== undefined); // must receive an ArrayBuffer
data = new Uint8Array(data); // make a typed array view on the array buffer
// if this is the port message, override the peer's port with it
var wasfirst = first;
first = false;
if (wasfirst &&
data.length === 10 &&
data[0] === 255 && data[1] === 255 && data[2] === 255 && data[3] === 255 &&
data[4] === 'p'.charCodeAt(0) && data[5] === 'o'.charCodeAt(0) && data[6] === 'r'.charCodeAt(0) && data[7] === 't'.charCodeAt(0)) {
// update the peer's port and it's key in the peer map
var newport = ((data[8] << 8) | data[9]);
SOCKFS.websocket_sock_ops.removePeer(sock, peer);
peer.port = newport;
SOCKFS.websocket_sock_ops.addPeer(sock, peer);
return;
}
sock.recv_queue.push({ addr: peer.addr, port: peer.port, data: data });
};
if (ENVIRONMENT_IS_NODE) {
peer.socket.on('open', handleOpen);
peer.socket.on('message', function(data, flags) {
if (!flags.binary) {
return;
}
handleMessage((new Uint8Array(data)).buffer); // copy from node Buffer -> ArrayBuffer
});
peer.socket.on('error', function() {
// don't throw
});
} else {
peer.socket.onopen = handleOpen;
peer.socket.onmessage = function peer_socket_onmessage(event) {
handleMessage(event.data);
};
}
},poll:function (sock) {
if (sock.type === 1 && sock.server) {
// listen sockets should only say they're available for reading
// if there are pending clients.
return sock.pending.length ? (64 | 1) : 0;
}
var mask = 0;
var dest = sock.type === 1 ? // we only care about the socket state for connection-based sockets
SOCKFS.websocket_sock_ops.getPeer(sock, sock.daddr, sock.dport) :
null;
if (sock.recv_queue.length ||
!dest || // connection-less sockets are always ready to read
(dest && dest.socket.readyState === dest.socket.CLOSING) ||
(dest && dest.socket.readyState === dest.socket.CLOSED)) { // let recv return 0 once closed
mask |= (64 | 1);
}
if (!dest || // connection-less sockets are always ready to write
(dest && dest.socket.readyState === dest.socket.OPEN)) {
mask |= 4;
}
if ((dest && dest.socket.readyState === dest.socket.CLOSING) ||
(dest && dest.socket.readyState === dest.socket.CLOSED)) {
mask |= 16;
}
return mask;
},ioctl:function (sock, request, arg) {
switch (request) {
case 21531:
var bytes = 0;
if (sock.recv_queue.length) {
bytes = sock.recv_queue[0].data.length;
}
HEAP32[((arg)>>2)]=bytes;
return 0;
default:
return ERRNO_CODES.EINVAL;
}
},close:function (sock) {
// if we've spawned a listen server, close it
if (sock.server) {
try {
sock.server.close();
} catch (e) {
}
sock.server = null;
}
// close any peer connections
var peers = Object.keys(sock.peers);
for (var i = 0; i < peers.length; i++) {
var peer = sock.peers[peers[i]];
try {
peer.socket.close();
} catch (e) {
}
SOCKFS.websocket_sock_ops.removePeer(sock, peer);
}
return 0;
},bind:function (sock, addr, port) {
if (typeof sock.saddr !== 'undefined' || typeof sock.sport !== 'undefined') {
throw new FS.ErrnoError(ERRNO_CODES.EINVAL); // already bound
}
sock.saddr = addr;
sock.sport = port || _mkport();
// in order to emulate dgram sockets, we need to launch a listen server when
// binding on a connection-less socket
// note: this is only required on the server side
if (sock.type === 2) {
// close the existing server if it exists
if (sock.server) {
sock.server.close();
sock.server = null;
}
// swallow error operation not supported error that occurs when binding in the
// browser where this isn't supported
try {
sock.sock_ops.listen(sock, 0);
} catch (e) {
if (!(e instanceof FS.ErrnoError)) throw e;
if (e.errno !== ERRNO_CODES.EOPNOTSUPP) throw e;
}
}
},connect:function (sock, addr, port) {
if (sock.server) {
throw new FS.ErrnoError(ERRNO_CODS.EOPNOTSUPP);
}
// TODO autobind
// if (!sock.addr && sock.type == 2) {
// }
// early out if we're already connected / in the middle of connecting
if (typeof sock.daddr !== 'undefined' && typeof sock.dport !== 'undefined') {
var dest = SOCKFS.websocket_sock_ops.getPeer(sock, sock.daddr, sock.dport);
if (dest) {
if (dest.socket.readyState === dest.socket.CONNECTING) {
throw new FS.ErrnoError(ERRNO_CODES.EALREADY);
} else {
throw new FS.ErrnoError(ERRNO_CODES.EISCONN);
}
}
}
// add the socket to our peer list and set our
// destination address / port to match
var peer = SOCKFS.websocket_sock_ops.createPeer(sock, addr, port);
sock.daddr = peer.addr;
sock.dport = peer.port;
// always "fail" in non-blocking mode
throw new FS.ErrnoError(ERRNO_CODES.EINPROGRESS);
},listen:function (sock, backlog) {
if (!ENVIRONMENT_IS_NODE) {
throw new FS.ErrnoError(ERRNO_CODES.EOPNOTSUPP);
}
if (sock.server) {
throw new FS.ErrnoError(ERRNO_CODES.EINVAL); // already listening
}
var WebSocketServer = require('ws').Server;
var host = sock.saddr;
sock.server = new WebSocketServer({
host: host,
port: sock.sport
// TODO support backlog
});
sock.server.on('connection', function(ws) {
if (sock.type === 1) {
var newsock = SOCKFS.createSocket(sock.family, sock.type, sock.protocol);
// create a peer on the new socket
var peer = SOCKFS.websocket_sock_ops.createPeer(newsock, ws);
newsock.daddr = peer.addr;
newsock.dport = peer.port;
// push to queue for accept to pick up
sock.pending.push(newsock);
} else {
// create a peer on the listen socket so calling sendto
// with the listen socket and an address will resolve
// to the correct client
SOCKFS.websocket_sock_ops.createPeer(sock, ws);
}
});
sock.server.on('closed', function() {
sock.server = null;
});
sock.server.on('error', function() {
// don't throw
});
},accept:function (listensock) {
if (!listensock.server) {
throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
}
var newsock = listensock.pending.shift();
newsock.stream.flags = listensock.stream.flags;
return newsock;
},getname:function (sock, peer) {
var addr, port;
if (peer) {
if (sock.daddr === undefined || sock.dport === undefined) {
throw new FS.ErrnoError(ERRNO_CODES.ENOTCONN);
}
addr = sock.daddr;
port = sock.dport;
} else {
// TODO saddr and sport will be set for bind()'d UDP sockets, but what
// should we be returning for TCP sockets that've been connect()'d?
addr = sock.saddr || 0;
port = sock.sport || 0;
}
return { addr: addr, port: port };
},sendmsg:function (sock, buffer, offset, length, addr, port) {
if (sock.type === 2) {
// connection-less sockets will honor the message address,
// and otherwise fall back to the bound destination address
if (addr === undefined || port === undefined) {
addr = sock.daddr;
port = sock.dport;
}
// if there was no address to fall back to, error out
if (addr === undefined || port === undefined) {
throw new FS.ErrnoError(ERRNO_CODES.EDESTADDRREQ);
}
} else {
// connection-based sockets will only use the bound
addr = sock.daddr;
port = sock.dport;
}
// find the peer for the destination address
var dest = SOCKFS.websocket_sock_ops.getPeer(sock, addr, port);
// early out if not connected with a connection-based socket
if (sock.type === 1) {
if (!dest || dest.socket.readyState === dest.socket.CLOSING || dest.socket.readyState === dest.socket.CLOSED) {
throw new FS.ErrnoError(ERRNO_CODES.ENOTCONN);
} else if (dest.socket.readyState === dest.socket.CONNECTING) {
throw new FS.ErrnoError(ERRNO_CODES.EAGAIN);
}
}
// create a copy of the incoming data to send, as the WebSocket API
// doesn't work entirely with an ArrayBufferView, it'll just send
// the entire underlying buffer
var data;
if (buffer instanceof Array || buffer instanceof ArrayBuffer) {
data = buffer.slice(offset, offset + length);
} else { // ArrayBufferView
data = buffer.buffer.slice(buffer.byteOffset + offset, buffer.byteOffset + offset + length);
}
// if we're emulating a connection-less dgram socket and don't have
// a cached connection, queue the buffer to send upon connect and
// lie, saying the data was sent now.
if (sock.type === 2) {
if (!dest || dest.socket.readyState !== dest.socket.OPEN) {
// if we're not connected, open a new connection
if (!dest || dest.socket.readyState === dest.socket.CLOSING || dest.socket.readyState === dest.socket.CLOSED) {
dest = SOCKFS.websocket_sock_ops.createPeer(sock, addr, port);
}
dest.dgram_send_queue.push(data);
return length;
}
}
try {
// send the actual data
dest.socket.send(data);
return length;
} catch (e) {
throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
}
},recvmsg:function (sock, length) {
// http://pubs.opengroup.org/onlinepubs/7908799/xns/recvmsg.html
if (sock.type === 1 && sock.server) {
// tcp servers should not be recv()'ing on the listen socket
throw new FS.ErrnoError(ERRNO_CODES.ENOTCONN);
}
var queued = sock.recv_queue.shift();
if (!queued) {
if (sock.type === 1) {
var dest = SOCKFS.websocket_sock_ops.getPeer(sock, sock.daddr, sock.dport);
if (!dest) {
// if we have a destination address but are not connected, error out
throw new FS.ErrnoError(ERRNO_CODES.ENOTCONN);
}
else if (dest.socket.readyState === dest.socket.CLOSING || dest.socket.readyState === dest.socket.CLOSED) {
// return null if the socket has closed
return null;
}
else {
// else, our socket is in a valid state but truly has nothing available
throw new FS.ErrnoError(ERRNO_CODES.EAGAIN);
}
} else {
throw new FS.ErrnoError(ERRNO_CODES.EAGAIN);
}
}
// queued.data will be an ArrayBuffer if it's unadulterated, but if it's
// requeued TCP data it'll be an ArrayBufferView
var queuedLength = queued.data.byteLength || queued.data.length;
var queuedOffset = queued.data.byteOffset || 0;
var queuedBuffer = queued.data.buffer || queued.data;
var bytesRead = Math.min(length, queuedLength);
var res = {
buffer: new Uint8Array(queuedBuffer, queuedOffset, bytesRead),
addr: queued.addr,
port: queued.port
};
// push back any unread data for TCP connections
if (sock.type === 1 && bytesRead < queuedLength) {
var bytesRemaining = queuedLength - bytesRead;
queued.data = new Uint8Array(queuedBuffer, queuedOffset + bytesRead, bytesRemaining);
sock.recv_queue.unshift(queued);
}
return res;
}}};function _send(fd, buf, len, flags) {
var sock = SOCKFS.getSocket(fd);
if (!sock) {
___setErrNo(ERRNO_CODES.EBADF);
return -1;
}
// TODO honor flags
return _write(fd, buf, len);
}
function _pwrite(fildes, buf, nbyte, offset) {
// ssize_t pwrite(int fildes, const void *buf, size_t nbyte, off_t offset);
// http://pubs.opengroup.org/onlinepubs/000095399/functions/write.html
var stream = FS.getStream(fildes);
if (!stream) {
___setErrNo(ERRNO_CODES.EBADF);
return -1;
}
try {
var slab = HEAP8;
return FS.write(stream, slab, buf, nbyte, offset);
} catch (e) {
FS.handleFSError(e);
return -1;
}
}function _write(fildes, buf, nbyte) {
// ssize_t write(int fildes, const void *buf, size_t nbyte);
// http://pubs.opengroup.org/onlinepubs/000095399/functions/write.html
var stream = FS.getStream(fildes);
if (!stream) {
___setErrNo(ERRNO_CODES.EBADF);
return -1;
}
try {
var slab = HEAP8;
return FS.write(stream, slab, buf, nbyte);
} catch (e) {
FS.handleFSError(e);
return -1;
}
}function _fwrite(ptr, size, nitems, stream) {
// size_t fwrite(const void *restrict ptr, size_t size, size_t nitems, FILE *restrict stream);
// http://pubs.opengroup.org/onlinepubs/000095399/functions/fwrite.html
var bytesToWrite = nitems * size;
if (bytesToWrite == 0) return 0;
var bytesWritten = _write(stream, ptr, bytesToWrite);
if (bytesWritten == -1) {
var streamObj = FS.getStream(stream);
if (streamObj) streamObj.error = true;
return 0;
} else {
return Math.floor(bytesWritten / size);
}
}
function _strlen(ptr) {
ptr = ptr|0;
var curr = 0;
curr = ptr;
while (HEAP8[(curr)]) {
curr = (curr + 1)|0;
}
return (curr - ptr)|0;
}
function __reallyNegative(x) {
return x < 0 || (x === 0 && (1/x) === -Infinity);
}function __formatString(format, varargs) {
var textIndex = format;
var argIndex = 0;
function getNextArg(type) {
// NOTE: Explicitly ignoring type safety. Otherwise this fails:
// int x = 4; printf("%c\n", (char)x);
var ret;
if (type === 'double') {
ret = HEAPF64[(((varargs)+(argIndex))>>3)];
} else if (type == 'i64') {
ret = [HEAP32[(((varargs)+(argIndex))>>2)],
HEAP32[(((varargs)+(argIndex+8))>>2)]];
argIndex += 8; // each 32-bit chunk is in a 64-bit block
} else {
type = 'i32'; // varargs are always i32, i64, or double
ret = HEAP32[(((varargs)+(argIndex))>>2)];
}
argIndex += Math.max(Runtime.getNativeFieldSize(type), Runtime.getAlignSize(type, null, true));
return ret;
}
var ret = [];
var curr, next, currArg;
while(1) {
var startTextIndex = textIndex;
curr = HEAP8[(textIndex)];
if (curr === 0) break;
next = HEAP8[((textIndex+1)|0)];
if (curr == 37) {
// Handle flags.
var flagAlwaysSigned = false;
var flagLeftAlign = false;
var flagAlternative = false;
var flagZeroPad = false;
var flagPadSign = false;
flagsLoop: while (1) {
switch (next) {
case 43:
flagAlwaysSigned = true;
break;
case 45:
flagLeftAlign = true;
break;
case 35:
flagAlternative = true;
break;
case 48:
if (flagZeroPad) {
break flagsLoop;
} else {
flagZeroPad = true;
break;
}
case 32:
flagPadSign = true;
break;
default:
break flagsLoop;
}
textIndex++;
next = HEAP8[((textIndex+1)|0)];
}
// Handle width.
var width = 0;
if (next == 42) {
width = getNextArg('i32');
textIndex++;
next = HEAP8[((textIndex+1)|0)];
} else {
while (next >= 48 && next <= 57) {
width = width * 10 + (next - 48);
textIndex++;
next = HEAP8[((textIndex+1)|0)];
}
}
// Handle precision.
var precisionSet = false, precision = -1;
if (next == 46) {
precision = 0;
precisionSet = true;
textIndex++;
next = HEAP8[((textIndex+1)|0)];
if (next == 42) {
precision = getNextArg('i32');
textIndex++;
} else {
while(1) {
var precisionChr = HEAP8[((textIndex+1)|0)];
if (precisionChr < 48 ||
precisionChr > 57) break;
precision = precision * 10 + (precisionChr - 48);
textIndex++;
}
}
next = HEAP8[((textIndex+1)|0)];
}
if (precision === -1) {
precision = 6; // Standard default.
precisionSet = false;
}
// Handle integer sizes. WARNING: These assume a 32-bit architecture!
var argSize;
switch (String.fromCharCode(next)) {
case 'h':
var nextNext = HEAP8[((textIndex+2)|0)];
if (nextNext == 104) {
textIndex++;
argSize = 1; // char (actually i32 in varargs)
} else {
argSize = 2; // short (actually i32 in varargs)
}
break;
case 'l':
var nextNext = HEAP8[((textIndex+2)|0)];
if (nextNext == 108) {
textIndex++;
argSize = 8; // long long
} else {
argSize = 4; // long
}
break;
case 'L': // long long
case 'q': // int64_t
case 'j': // intmax_t
argSize = 8;
break;
case 'z': // size_t
case 't': // ptrdiff_t
case 'I': // signed ptrdiff_t or unsigned size_t
argSize = 4;
break;
default:
argSize = null;
}
if (argSize) textIndex++;
next = HEAP8[((textIndex+1)|0)];
// Handle type specifier.
switch (String.fromCharCode(next)) {
case 'd': case 'i': case 'u': case 'o': case 'x': case 'X': case 'p': {
// Integer.
var signed = next == 100 || next == 105;
argSize = argSize || 4;
var currArg = getNextArg('i' + (argSize * 8));
var origArg = currArg;
var argText;
// Flatten i64-1 [low, high] into a (slightly rounded) double
if (argSize == 8) {
currArg = Runtime.makeBigInt(currArg[0], currArg[1], next == 117);
}
// Truncate to requested size.
if (argSize <= 4) {
var limit = Math.pow(256, argSize) - 1;
currArg = (signed ? reSign : unSign)(currArg & limit, argSize * 8);
}
// Format the number.
var currAbsArg = Math.abs(currArg);
var prefix = '';
if (next == 100 || next == 105) {
if (argSize == 8 && i64Math) argText = i64Math.stringify(origArg[0], origArg[1], null); else
argText = reSign(currArg, 8 * argSize, 1).toString(10);
} else if (next == 117) {
if (argSize == 8 && i64Math) argText = i64Math.stringify(origArg[0], origArg[1], true); else
argText = unSign(currArg, 8 * argSize, 1).toString(10);
currArg = Math.abs(currArg);
} else if (next == 111) {
argText = (flagAlternative ? '0' : '') + currAbsArg.toString(8);
} else if (next == 120 || next == 88) {
prefix = (flagAlternative && currArg != 0) ? '0x' : '';
if (argSize == 8 && i64Math) {
if (origArg[1]) {
argText = (origArg[1]>>>0).toString(16);
var lower = (origArg[0]>>>0).toString(16);
while (lower.length < 8) lower = '0' + lower;
argText += lower;
} else {
argText = (origArg[0]>>>0).toString(16);
}
} else
if (currArg < 0) {
// Represent negative numbers in hex as 2's complement.
currArg = -currArg;
argText = (currAbsArg - 1).toString(16);
var buffer = [];
for (var i = 0; i < argText.length; i++) {
buffer.push((0xF - parseInt(argText[i], 16)).toString(16));
}
argText = buffer.join('');
while (argText.length < argSize * 2) argText = 'f' + argText;
} else {
argText = currAbsArg.toString(16);
}
if (next == 88) {
prefix = prefix.toUpperCase();
argText = argText.toUpperCase();
}
} else if (next == 112) {
if (currAbsArg === 0) {
argText = '(nil)';
} else {
prefix = '0x';
argText = currAbsArg.toString(16);
}
}
if (precisionSet) {
while (argText.length < precision) {
argText = '0' + argText;
}
}
// Add sign if needed
if (currArg >= 0) {
if (flagAlwaysSigned) {
prefix = '+' + prefix;
} else if (flagPadSign) {
prefix = ' ' + prefix;
}
}
// Move sign to prefix so we zero-pad after the sign
if (argText.charAt(0) == '-') {
prefix = '-' + prefix;
argText = argText.substr(1);
}
// Add padding.
while (prefix.length + argText.length < width) {
if (flagLeftAlign) {
argText += ' ';
} else {
if (flagZeroPad) {
argText = '0' + argText;
} else {
prefix = ' ' + prefix;
}
}
}
// Insert the result into the buffer.
argText = prefix + argText;
argText.split('').forEach(function(chr) {
ret.push(chr.charCodeAt(0));
});
break;
}
case 'f': case 'F': case 'e': case 'E': case 'g': case 'G': {
// Float.
var currArg = getNextArg('double');
var argText;
if (isNaN(currArg)) {
argText = 'nan';
flagZeroPad = false;
} else if (!isFinite(currArg)) {
argText = (currArg < 0 ? '-' : '') + 'inf';
flagZeroPad = false;
} else {
var isGeneral = false;
var effectivePrecision = Math.min(precision, 20);
// Convert g/G to f/F or e/E, as per:
// http://pubs.opengroup.org/onlinepubs/9699919799/functions/printf.html
if (next == 103 || next == 71) {
isGeneral = true;
precision = precision || 1;
var exponent = parseInt(currArg.toExponential(effectivePrecision).split('e')[1], 10);
if (precision > exponent && exponent >= -4) {
next = ((next == 103) ? 'f' : 'F').charCodeAt(0);
precision -= exponent + 1;
} else {
next = ((next == 103) ? 'e' : 'E').charCodeAt(0);
precision--;
}
effectivePrecision = Math.min(precision, 20);
}
if (next == 101 || next == 69) {
argText = currArg.toExponential(effectivePrecision);
// Make sure the exponent has at least 2 digits.
if (/[eE][-+]\d$/.test(argText)) {
argText = argText.slice(0, -1) + '0' + argText.slice(-1);
}
} else if (next == 102 || next == 70) {
argText = currArg.toFixed(effectivePrecision);
if (currArg === 0 && __reallyNegative(currArg)) {
argText = '-' + argText;
}
}
var parts = argText.split('e');
if (isGeneral && !flagAlternative) {
// Discard trailing zeros and periods.
while (parts[0].length > 1 && parts[0].indexOf('.') != -1 &&
(parts[0].slice(-1) == '0' || parts[0].slice(-1) == '.')) {
parts[0] = parts[0].slice(0, -1);
}
} else {
// Make sure we have a period in alternative mode.
if (flagAlternative && argText.indexOf('.') == -1) parts[0] += '.';
// Zero pad until required precision.
while (precision > effectivePrecision++) parts[0] += '0';
}
argText = parts[0] + (parts.length > 1 ? 'e' + parts[1] : '');
// Capitalize 'E' if needed.
if (next == 69) argText = argText.toUpperCase();
// Add sign.
if (currArg >= 0) {
if (flagAlwaysSigned) {
argText = '+' + argText;
} else if (flagPadSign) {
argText = ' ' + argText;
}
}
}
// Add padding.
while (argText.length < width) {
if (flagLeftAlign) {
argText += ' ';
} else {
if (flagZeroPad && (argText[0] == '-' || argText[0] == '+')) {
argText = argText[0] + '0' + argText.slice(1);
} else {
argText = (flagZeroPad ? '0' : ' ') + argText;
}
}
}
// Adjust case.
if (next < 97) argText = argText.toUpperCase();
// Insert the result into the buffer.
argText.split('').forEach(function(chr) {
ret.push(chr.charCodeAt(0));
});
break;
}
case 's': {
// String.
var arg = getNextArg('i8*');
var argLength = arg ? _strlen(arg) : '(null)'.length;
if (precisionSet) argLength = Math.min(argLength, precision);
if (!flagLeftAlign) {
while (argLength < width--) {
ret.push(32);
}
}
if (arg) {
for (var i = 0; i < argLength; i++) {
ret.push(HEAPU8[((arg++)|0)]);
}
} else {
ret = ret.concat(intArrayFromString('(null)'.substr(0, argLength), true));
}
if (flagLeftAlign) {
while (argLength < width--) {
ret.push(32);
}
}
break;
}
case 'c': {
// Character.
if (flagLeftAlign) ret.push(getNextArg('i8'));
while (--width > 0) {
ret.push(32);
}
if (!flagLeftAlign) ret.push(getNextArg('i8'));
break;
}
case 'n': {
// Write the length written so far to the next parameter.
var ptr = getNextArg('i32*');
HEAP32[((ptr)>>2)]=ret.length;
break;
}
case '%': {
// Literal percent sign.
ret.push(curr);
break;
}
default: {
// Unknown specifiers remain untouched.
for (var i = startTextIndex; i < textIndex + 2; i++) {
ret.push(HEAP8[(i)]);
}
}
}
textIndex += 2;
// TODO: Support a/A (hex float) and m (last error) specifiers.
// TODO: Support %1${specifier} for arg selection.
} else {
ret.push(curr);
textIndex += 1;
}
}
return ret;
}function _fprintf(stream, format, varargs) {
// int fprintf(FILE *restrict stream, const char *restrict format, ...);
// http://pubs.opengroup.org/onlinepubs/000095399/functions/printf.html
var result = __formatString(format, varargs);
var stack = Runtime.stackSave();
var ret = _fwrite(allocate(result, 'i8', ALLOC_STACK), 1, result.length, stream);
Runtime.stackRestore(stack);
return ret;
}function _printf(format, varargs) {
// int printf(const char *restrict format, ...);
// http://pubs.opengroup.org/onlinepubs/000095399/functions/printf.html
var stdout = HEAP32[((_stdout)>>2)];
return _fprintf(stdout, format, varargs);
}
function __exit(status) {
// void _exit(int status);
// http://pubs.opengroup.org/onlinepubs/000095399/functions/exit.html
Module['exit'](status);
}function _exit(status) {
__exit(status);
}
function _fputs(s, stream) {
// int fputs(const char *restrict s, FILE *restrict stream);
// http://pubs.opengroup.org/onlinepubs/000095399/functions/fputs.html
return _write(stream, s, _strlen(s));
}
function _longjmp(env, value) {
throw { longjmp: true, id: HEAP32[((env)>>2)], value: value || 1 };
}
function _fileno(stream) {
// int fileno(FILE *stream);
// http://pubs.opengroup.org/onlinepubs/000095399/functions/fileno.html
// We use file descriptor numbers and FILE* streams interchangeably.
return stream;
}
function _close(fildes) {
// int close(int fildes);
// http://pubs.opengroup.org/onlinepubs/000095399/functions/close.html
var stream = FS.getStream(fildes);
if (!stream) {
___setErrNo(ERRNO_CODES.EBADF);
return -1;
}
try {
FS.close(stream);
return 0;
} catch (e) {
FS.handleFSError(e);
return -1;
}
}
function _fsync(fildes) {
// int fsync(int fildes);
// http://pubs.opengroup.org/onlinepubs/000095399/functions/fsync.html
var stream = FS.getStream(fildes);
if (stream) {
// We write directly to the file system, so there's nothing to do here.
return 0;
} else {
___setErrNo(ERRNO_CODES.EBADF);
return -1;
}
}function _fclose(stream) {
// int fclose(FILE *stream);
// http://pubs.opengroup.org/onlinepubs/000095399/functions/fclose.html
_fsync(stream);
return _close(stream);
}
function _open(path, oflag, varargs) {
// int open(const char *path, int oflag, ...);
// http://pubs.opengroup.org/onlinepubs/009695399/functions/open.html
var mode = HEAP32[((varargs)>>2)];
path = Pointer_stringify(path);
try {
var stream = FS.open(path, oflag, mode);
return stream.fd;
} catch (e) {
FS.handleFSError(e);
return -1;
}
}function _fopen(filename, mode) {
// FILE *fopen(const char *restrict filename, const char *restrict mode);
// http://pubs.opengroup.org/onlinepubs/000095399/functions/fopen.html
var flags;
mode = Pointer_stringify(mode);
if (mode[0] == 'r') {
if (mode.indexOf('+') != -1) {
flags = 2;
} else {
flags = 0;
}
} else if (mode[0] == 'w') {
if (mode.indexOf('+') != -1) {
flags = 2;
} else {
flags = 1;
}
flags |= 64;
flags |= 512;
} else if (mode[0] == 'a') {
if (mode.indexOf('+') != -1) {
flags = 2;
} else {
flags = 1;
}
flags |= 64;
flags |= 1024;
} else {
___setErrNo(ERRNO_CODES.EINVAL);
return 0;
}
var ret = _open(filename, flags, allocate([0x1FF, 0, 0, 0], 'i32', ALLOC_STACK)); // All creation permissions.
return (ret == -1) ? 0 : ret;
}
function _fstat(fildes, buf) {
// int fstat(int fildes, struct stat *buf);
// http://pubs.opengroup.org/onlinepubs/7908799/xsh/fstat.html
var stream = FS.getStream(fildes);
if (!stream) {
___setErrNo(ERRNO_CODES.EBADF);
return -1;
}
return _stat(stream.path, buf);
}
function _setvbuf(stream, buf, type, size) {
// int setvbuf(FILE *restrict stream, char *restrict buf, int type, size_t size);
// http://pubs.opengroup.org/onlinepubs/000095399/functions/setvbuf.html
// TODO: Implement custom buffering.
return 0;
}
function _signal(sig, func) {
// TODO
return 0;
}
function _munmap(start, num) {
if (!_mmap.mappings) _mmap.mappings = {};
// TODO: support unmmap'ing parts of allocations
var info = _mmap.mappings[start];
if (!info) return 0;
if (num == info.num) {
_mmap.mappings[start] = null;
if (info.allocated) {
_free(info.malloc);
}
}
return 0;
}
function _mmap(start, num, prot, flags, stream, offset) {
/* FIXME: Since mmap is normally implemented at the kernel level,
* this implementation simply uses malloc underneath the call to
* mmap.
*/
var MAP_PRIVATE = 2;
var ptr;
var allocated = false;
if (!_mmap.mappings) _mmap.mappings = {};
if (stream == -1) {
ptr = _malloc(num);
if (!ptr) return -1;
_memset(ptr, 0, num);
allocated = true;
} else {
var info = FS.getStream(stream);
if (!info) return -1;
try {
var res = FS.mmap(info, HEAPU8, start, num, offset, prot, flags);
ptr = res.ptr;
allocated = res.allocated;
} catch (e) {
FS.handleFSError(e);
return -1;
}
}
_mmap.mappings[ptr] = { malloc: ptr, num: num, allocated: allocated };
return ptr;
}
function _abort() {
Module['abort']();
}
function _sbrk(bytes) {
// Implement a Linux-like 'memory area' for our 'process'.
// Changes the size of the memory area by |bytes|; returns the
// address of the previous top ('break') of the memory area
// We control the "dynamic" memory - DYNAMIC_BASE to DYNAMICTOP
var self = _sbrk;
if (!self.called) {
DYNAMICTOP = alignMemoryPage(DYNAMICTOP); // make sure we start out aligned
self.called = true;
assert(Runtime.dynamicAlloc);
self.alloc = Runtime.dynamicAlloc;
Runtime.dynamicAlloc = function() { abort('cannot dynamically allocate, sbrk now has control') };
}
var ret = DYNAMICTOP;
if (bytes != 0) self.alloc(bytes);
return ret; // Previous break location.
}
function _sysconf(name) {
// long sysconf(int name);
// http://pubs.opengroup.org/onlinepubs/009695399/functions/sysconf.html
switch(name) {
case 30: return PAGE_SIZE;
case 132:
case 133:
case 12:
case 137:
case 138:
case 15:
case 235:
case 16:
case 17:
case 18:
case 19:
case 20:
case 149:
case 13:
case 10:
case 236:
case 153:
case 9:
case 21:
case 22:
case 159:
case 154:
case 14:
case 77:
case 78:
case 139:
case 80:
case 81:
case 79:
case 82:
case 68:
case 67:
case 164:
case 11:
case 29:
case 47:
case 48:
case 95:
case 52:
case 51:
case 46:
return 200809;
case 27:
case 246:
case 127:
case 128:
case 23:
case 24:
case 160:
case 161:
case 181:
case 182:
case 242:
case 183:
case 184:
case 243:
case 244:
case 245:
case 165:
case 178:
case 179:
case 49:
case 50:
case 168:
case 169:
case 175:
case 170:
case 171:
case 172:
case 97:
case 76:
case 32:
case 173:
case 35:
return -1;
case 176:
case 177:
case 7:
case 155:
case 8:
case 157:
case 125:
case 126:
case 92:
case 93:
case 129:
case 130:
case 131:
case 94:
case 91:
return 1;
case 74:
case 60:
case 69:
case 70:
case 4:
return 1024;
case 31:
case 42:
case 72:
return 32;
case 87:
case 26:
case 33:
return 2147483647;
case 34:
case 1:
return 47839;
case 38:
case 36:
return 99;
case 43:
case 37:
return 2048;
case 0: return 2097152;
case 3: return 65536;
case 28: return 32768;
case 44: return 32767;
case 75: return 16384;
case 39: return 1000;
case 89: return 700;
case 71: return 256;
case 40: return 255;
case 2: return 100;
case 180: return 64;
case 25: return 20;
case 5: return 16;
case 6: return 6;
case 73: return 4;
case 84: return 1;
}
___setErrNo(ERRNO_CODES.EINVAL);
return -1;
}
var Browser={mainLoop:{scheduler:null,shouldPause:false,paused:false,queue:[],pause:function () {
Browser.mainLoop.shouldPause = true;
},resume:function () {
if (Browser.mainLoop.paused) {
Browser.mainLoop.paused = false;
Browser.mainLoop.scheduler();
}
Browser.mainLoop.shouldPause = false;
},updateStatus:function () {
if (Module['setStatus']) {
var message = Module['statusMessage'] || 'Please wait...';
var remaining = Browser.mainLoop.remainingBlockers;
var expected = Browser.mainLoop.expectedBlockers;
if (remaining) {
if (remaining < expected) {
Module['setStatus'](message + ' (' + (expected - remaining) + '/' + expected + ')');
} else {
Module['setStatus'](message);
}
} else {
Module['setStatus']('');
}
}
}},isFullScreen:false,pointerLock:false,moduleContextCreatedCallbacks:[],workers:[],init:function () {
if (!Module["preloadPlugins"]) Module["preloadPlugins"] = []; // needs to exist even in workers
if (Browser.initted || ENVIRONMENT_IS_WORKER) return;
Browser.initted = true;
try {
new Blob();
Browser.hasBlobConstructor = true;
} catch(e) {
Browser.hasBlobConstructor = false;
console.log("warning: no blob constructor, cannot create blobs with mimetypes");
}
Browser.BlobBuilder = typeof MozBlobBuilder != "undefined" ? MozBlobBuilder : (typeof WebKitBlobBuilder != "undefined" ? WebKitBlobBuilder : (!Browser.hasBlobConstructor ? console.log("warning: no BlobBuilder") : null));
Browser.URLObject = typeof window != "undefined" ? (window.URL ? window.URL : window.webkitURL) : undefined;
if (!Module.noImageDecoding && typeof Browser.URLObject === 'undefined') {
console.log("warning: Browser does not support creating object URLs. Built-in browser image decoding will not be available.");
Module.noImageDecoding = true;
}
// Support for plugins that can process preloaded files. You can add more of these to
// your app by creating and appending to Module.preloadPlugins.
//
// Each plugin is asked if it can handle a file based on the file's name. If it can,
// it is given the file's raw data. When it is done, it calls a callback with the file's
// (possibly modified) data. For example, a plugin might decompress a file, or it
// might create some side data structure for use later (like an Image element, etc.).
var imagePlugin = {};
imagePlugin['canHandle'] = function imagePlugin_canHandle(name) {
return !Module.noImageDecoding && /\.(jpg|jpeg|png|bmp)$/i.test(name);
};
imagePlugin['handle'] = function imagePlugin_handle(byteArray, name, onload, onerror) {
var b = null;
if (Browser.hasBlobConstructor) {
try {
b = new Blob([byteArray], { type: Browser.getMimetype(name) });
if (b.size !== byteArray.length) { // Safari bug #118630
// Safari's Blob can only take an ArrayBuffer
b = new Blob([(new Uint8Array(byteArray)).buffer], { type: Browser.getMimetype(name) });
}
} catch(e) {
Runtime.warnOnce('Blob constructor present but fails: ' + e + '; falling back to blob builder');
}
}
if (!b) {
var bb = new Browser.BlobBuilder();
bb.append((new Uint8Array(byteArray)).buffer); // we need to pass a buffer, and must copy the array to get the right data range
b = bb.getBlob();
}
var url = Browser.URLObject.createObjectURL(b);
assert(typeof url == 'string', 'createObjectURL must return a url as a string');
var img = new Image();
img.onload = function img_onload() {
assert(img.complete, 'Image ' + name + ' could not be decoded');
var canvas = document.createElement('canvas');
canvas.width = img.width;
canvas.height = img.height;
var ctx = canvas.getContext('2d');
ctx.drawImage(img, 0, 0);
Module["preloadedImages"][name] = canvas;
Browser.URLObject.revokeObjectURL(url);
if (onload) onload(byteArray);
};
img.onerror = function img_onerror(event) {
console.log('Image ' + url + ' could not be decoded');
if (onerror) onerror();
};
img.src = url;
};
Module['preloadPlugins'].push(imagePlugin);
var audioPlugin = {};
audioPlugin['canHandle'] = function audioPlugin_canHandle(name) {
return !Module.noAudioDecoding && name.substr(-4) in { '.ogg': 1, '.wav': 1, '.mp3': 1 };
};
audioPlugin['handle'] = function audioPlugin_handle(byteArray, name, onload, onerror) {
var done = false;
function finish(audio) {
if (done) return;
done = true;
Module["preloadedAudios"][name] = audio;
if (onload) onload(byteArray);
}
function fail() {
if (done) return;
done = true;
Module["preloadedAudios"][name] = new Audio(); // empty shim
if (onerror) onerror();
}
if (Browser.hasBlobConstructor) {
try {
var b = new Blob([byteArray], { type: Browser.getMimetype(name) });
} catch(e) {
return fail();
}
var url = Browser.URLObject.createObjectURL(b); // XXX we never revoke this!
assert(typeof url == 'string', 'createObjectURL must return a url as a string');
var audio = new Audio();
audio.addEventListener('canplaythrough', function() { finish(audio) }, false); // use addEventListener due to chromium bug 124926
audio.onerror = function audio_onerror(event) {
if (done) return;
console.log('warning: browser could not fully decode audio ' + name + ', trying slower base64 approach');
function encode64(data) {
var BASE = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
var PAD = '=';
var ret = '';
var leftchar = 0;
var leftbits = 0;
for (var i = 0; i < data.length; i++) {
leftchar = (leftchar << 8) | data[i];
leftbits += 8;
while (leftbits >= 6) {
var curr = (leftchar >> (leftbits-6)) & 0x3f;
leftbits -= 6;
ret += BASE[curr];
}
}
if (leftbits == 2) {
ret += BASE[(leftchar&3) << 4];
ret += PAD + PAD;
} else if (leftbits == 4) {
ret += BASE[(leftchar&0xf) << 2];
ret += PAD;
}
return ret;
}
audio.src = 'data:audio/x-' + name.substr(-3) + ';base64,' + encode64(byteArray);
finish(audio); // we don't wait for confirmation this worked - but it's worth trying
};
audio.src = url;
// workaround for chrome bug 124926 - we do not always get oncanplaythrough or onerror
Browser.safeSetTimeout(function() {
finish(audio); // try to use it even though it is not necessarily ready to play
}, 10000);
} else {
return fail();
}
};
Module['preloadPlugins'].push(audioPlugin);
// Canvas event setup
var canvas = Module['canvas'];
canvas.requestPointerLock = canvas['requestPointerLock'] ||
canvas['mozRequestPointerLock'] ||
canvas['webkitRequestPointerLock'];
canvas.exitPointerLock = document['exitPointerLock'] ||
document['mozExitPointerLock'] ||
document['webkitExitPointerLock'] ||
function(){}; // no-op if function does not exist
canvas.exitPointerLock = canvas.exitPointerLock.bind(document);
function pointerLockChange() {
Browser.pointerLock = document['pointerLockElement'] === canvas ||
document['mozPointerLockElement'] === canvas ||
document['webkitPointerLockElement'] === canvas;
}
document.addEventListener('pointerlockchange', pointerLockChange, false);
document.addEventListener('mozpointerlockchange', pointerLockChange, false);
document.addEventListener('webkitpointerlockchange', pointerLockChange, false);
if (Module['elementPointerLock']) {
canvas.addEventListener("click", function(ev) {
if (!Browser.pointerLock && canvas.requestPointerLock) {
canvas.requestPointerLock();
ev.preventDefault();
}
}, false);
}
},createContext:function (canvas, useWebGL, setInModule, webGLContextAttributes) {
var ctx;
try {
if (useWebGL) {
var contextAttributes = {
antialias: false,
alpha: false
};
if (webGLContextAttributes) {
for (var attribute in webGLContextAttributes) {
contextAttributes[attribute] = webGLContextAttributes[attribute];
}
}
var errorInfo = '?';
function onContextCreationError(event) {
errorInfo = event.statusMessage || errorInfo;
}
canvas.addEventListener('webglcontextcreationerror', onContextCreationError, false);
try {
['experimental-webgl', 'webgl'].some(function(webglId) {
return ctx = canvas.getContext(webglId, contextAttributes);
});
} finally {
canvas.removeEventListener('webglcontextcreationerror', onContextCreationError, false);
}
} else {
ctx = canvas.getContext('2d');
}
if (!ctx) throw ':(';
} catch (e) {
Module.print('Could not create canvas: ' + [errorInfo, e]);
return null;
}
if (useWebGL) {
// Set the background of the WebGL canvas to black
canvas.style.backgroundColor = "black";
// Warn on context loss
canvas.addEventListener('webglcontextlost', function(event) {
alert('WebGL context lost. You will need to reload the page.');
}, false);
}
if (setInModule) {
GLctx = Module.ctx = ctx;
Module.useWebGL = useWebGL;
Browser.moduleContextCreatedCallbacks.forEach(function(callback) { callback() });
Browser.init();
}
return ctx;
},destroyContext:function (canvas, useWebGL, setInModule) {},fullScreenHandlersInstalled:false,lockPointer:undefined,resizeCanvas:undefined,requestFullScreen:function (lockPointer, resizeCanvas) {
Browser.lockPointer = lockPointer;
Browser.resizeCanvas = resizeCanvas;
if (typeof Browser.lockPointer === 'undefined') Browser.lockPointer = true;
if (typeof Browser.resizeCanvas === 'undefined') Browser.resizeCanvas = false;
var canvas = Module['canvas'];
function fullScreenChange() {
Browser.isFullScreen = false;
if ((document['webkitFullScreenElement'] || document['webkitFullscreenElement'] ||
document['mozFullScreenElement'] || document['mozFullscreenElement'] ||
document['fullScreenElement'] || document['fullscreenElement']) === canvas) {
canvas.cancelFullScreen = document['cancelFullScreen'] ||
document['mozCancelFullScreen'] ||
document['webkitCancelFullScreen'];
canvas.cancelFullScreen = canvas.cancelFullScreen.bind(document);
if (Browser.lockPointer) canvas.requestPointerLock();
Browser.isFullScreen = true;
if (Browser.resizeCanvas) Browser.setFullScreenCanvasSize();
} else if (Browser.resizeCanvas){
Browser.setWindowedCanvasSize();
}
if (Module['onFullScreen']) Module['onFullScreen'](Browser.isFullScreen);
}
if (!Browser.fullScreenHandlersInstalled) {
Browser.fullScreenHandlersInstalled = true;
document.addEventListener('fullscreenchange', fullScreenChange, false);
document.addEventListener('mozfullscreenchange', fullScreenChange, false);
document.addEventListener('webkitfullscreenchange', fullScreenChange, false);
}
canvas.requestFullScreen = canvas['requestFullScreen'] ||
canvas['mozRequestFullScreen'] ||
(canvas['webkitRequestFullScreen'] ? function() { canvas['webkitRequestFullScreen'](Element['ALLOW_KEYBOARD_INPUT']) } : null);
canvas.requestFullScreen();
},requestAnimationFrame:function requestAnimationFrame(func) {
if (typeof window === 'undefined') { // Provide fallback to setTimeout if window is undefined (e.g. in Node.js)
setTimeout(func, 1000/60);
} else {
if (!window.requestAnimationFrame) {
window.requestAnimationFrame = window['requestAnimationFrame'] ||
window['mozRequestAnimationFrame'] ||
window['webkitRequestAnimationFrame'] ||
window['msRequestAnimationFrame'] ||
window['oRequestAnimationFrame'] ||
window['setTimeout'];
}
window.requestAnimationFrame(func);
}
},safeCallback:function (func) {
return function() {
if (!ABORT) return func.apply(null, arguments);
};
},safeRequestAnimationFrame:function (func) {
return Browser.requestAnimationFrame(function() {
if (!ABORT) func();
});
},safeSetTimeout:function (func, timeout) {
return setTimeout(function() {
if (!ABORT) func();
}, timeout);
},safeSetInterval:function (func, timeout) {
return setInterval(function() {
if (!ABORT) func();
}, timeout);
},getMimetype:function (name) {
return {
'jpg': 'image/jpeg',
'jpeg': 'image/jpeg',
'png': 'image/png',
'bmp': 'image/bmp',
'ogg': 'audio/ogg',
'wav': 'audio/wav',
'mp3': 'audio/mpeg'
}[name.substr(name.lastIndexOf('.')+1)];
},getUserMedia:function (func) {
if(!window.getUserMedia) {
window.getUserMedia = navigator['getUserMedia'] ||
navigator['mozGetUserMedia'];
}
window.getUserMedia(func);
},getMovementX:function (event) {
return event['movementX'] ||
event['mozMovementX'] ||
event['webkitMovementX'] ||
0;
},getMovementY:function (event) {
return event['movementY'] ||
event['mozMovementY'] ||
event['webkitMovementY'] ||
0;
},mouseX:0,mouseY:0,mouseMovementX:0,mouseMovementY:0,calculateMouseEvent:function (event) { // event should be mousemove, mousedown or mouseup
if (Browser.pointerLock) {
// When the pointer is locked, calculate the coordinates
// based on the movement of the mouse.
// Workaround for Firefox bug 764498
if (event.type != 'mousemove' &&
('mozMovementX' in event)) {
Browser.mouseMovementX = Browser.mouseMovementY = 0;
} else {
Browser.mouseMovementX = Browser.getMovementX(event);
Browser.mouseMovementY = Browser.getMovementY(event);
}
// check if SDL is available
if (typeof SDL != "undefined") {
Browser.mouseX = SDL.mouseX + Browser.mouseMovementX;
Browser.mouseY = SDL.mouseY + Browser.mouseMovementY;
} else {
// just add the mouse delta to the current absolut mouse position
// FIXME: ideally this should be clamped against the canvas size and zero
Browser.mouseX += Browser.mouseMovementX;
Browser.mouseY += Browser.mouseMovementY;
}
} else {
// Otherwise, calculate the movement based on the changes
// in the coordinates.
var rect = Module["canvas"].getBoundingClientRect();
var x, y;
// Neither .scrollX or .pageXOffset are defined in a spec, but
// we prefer .scrollX because it is currently in a spec draft.
// (see: http://www.w3.org/TR/2013/WD-cssom-view-20131217/)
var scrollX = ((typeof window.scrollX !== 'undefined') ? window.scrollX : window.pageXOffset);
var scrollY = ((typeof window.scrollY !== 'undefined') ? window.scrollY : window.pageYOffset);
// If this assert lands, it's likely because the browser doesn't support scrollX or pageXOffset
// and we have no viable fallback.
assert((typeof scrollX !== 'undefined') && (typeof scrollY !== 'undefined'), 'Unable to retrieve scroll position, mouse positions likely broken.');
if (event.type == 'touchstart' ||
event.type == 'touchend' ||
event.type == 'touchmove') {
var t = event.touches.item(0);
if (t) {
x = t.pageX - (scrollX + rect.left);
y = t.pageY - (scrollY + rect.top);
} else {
return;
}
} else {
x = event.pageX - (scrollX + rect.left);
y = event.pageY - (scrollY + rect.top);
}
// the canvas might be CSS-scaled compared to its backbuffer;
// SDL-using content will want mouse coordinates in terms
// of backbuffer units.
var cw = Module["canvas"].width;
var ch = Module["canvas"].height;
x = x * (cw / rect.width);
y = y * (ch / rect.height);
Browser.mouseMovementX = x - Browser.mouseX;
Browser.mouseMovementY = y - Browser.mouseY;
Browser.mouseX = x;
Browser.mouseY = y;
}
},xhrLoad:function (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);
} else {
onerror();
}
};
xhr.onerror = onerror;
xhr.send(null);
},asyncLoad:function (url, onload, onerror, noRunDep) {
Browser.xhrLoad(url, function(arrayBuffer) {
assert(arrayBuffer, 'Loading data file "' + url + '" failed (no arrayBuffer).');
onload(new Uint8Array(arrayBuffer));
if (!noRunDep) removeRunDependency('al ' + url);
}, function(event) {
if (onerror) {
onerror();
} else {
throw 'Loading data file "' + url + '" failed.';
}
});
if (!noRunDep) addRunDependency('al ' + url);
},resizeListeners:[],updateResizeListeners:function () {
var canvas = Module['canvas'];
Browser.resizeListeners.forEach(function(listener) {
listener(canvas.width, canvas.height);
});
},setCanvasSize:function (width, height, noUpdates) {
var canvas = Module['canvas'];
canvas.width = width;
canvas.height = height;
if (!noUpdates) Browser.updateResizeListeners();
},windowedWidth:0,windowedHeight:0,setFullScreenCanvasSize:function () {
var canvas = Module['canvas'];
this.windowedWidth = canvas.width;
this.windowedHeight = canvas.height;
canvas.width = screen.width;
canvas.height = screen.height;
// check if SDL is available
if (typeof SDL != "undefined") {
var flags = HEAPU32[((SDL.screen+Runtime.QUANTUM_SIZE*0)>>2)];
flags = flags | 0x00800000; // set SDL_FULLSCREEN flag
HEAP32[((SDL.screen+Runtime.QUANTUM_SIZE*0)>>2)]=flags
}
Browser.updateResizeListeners();
},setWindowedCanvasSize:function () {
var canvas = Module['canvas'];
canvas.width = this.windowedWidth;
canvas.height = this.windowedHeight;
// check if SDL is available
if (typeof SDL != "undefined") {
var flags = HEAPU32[((SDL.screen+Runtime.QUANTUM_SIZE*0)>>2)];
flags = flags & ~0x00800000; // clear SDL_FULLSCREEN flag
HEAP32[((SDL.screen+Runtime.QUANTUM_SIZE*0)>>2)]=flags
}
Browser.updateResizeListeners();
}};
FS.staticInit();__ATINIT__.unshift({ func: function() { if (!Module["noFSInit"] && !FS.init.initialized) FS.init() } });__ATMAIN__.push({ func: function() { FS.ignorePermissions = false } });__ATEXIT__.push({ func: function() { FS.quit() } });Module["FS_createFolder"] = FS.createFolder;Module["FS_createPath"] = FS.createPath;Module["FS_createDataFile"] = FS.createDataFile;Module["FS_createPreloadedFile"] = FS.createPreloadedFile;Module["FS_createLazyFile"] = FS.createLazyFile;Module["FS_createLink"] = FS.createLink;Module["FS_createDevice"] = FS.createDevice;
___errno_state = Runtime.staticAlloc(4); HEAP32[((___errno_state)>>2)]=0;
__ATINIT__.unshift({ func: function() { TTY.init() } });__ATEXIT__.push({ func: function() { TTY.shutdown() } });TTY.utf8 = new Runtime.UTF8Processor();
if (ENVIRONMENT_IS_NODE) { var fs = require("fs"); NODEFS.staticInit(); }
___buildEnvironment(ENV);
__ATINIT__.push({ func: function() { SOCKFS.root = FS.mount(SOCKFS, {}, null); } });
Module["requestFullScreen"] = function Module_requestFullScreen(lockPointer, resizeCanvas) { Browser.requestFullScreen(lockPointer, resizeCanvas) };
Module["requestAnimationFrame"] = function Module_requestAnimationFrame(func) { Browser.requestAnimationFrame(func) };
Module["setCanvasSize"] = function Module_setCanvasSize(width, height, noUpdates) { Browser.setCanvasSize(width, height, noUpdates) };
Module["pauseMainLoop"] = function Module_pauseMainLoop() { Browser.mainLoop.pause() };
Module["resumeMainLoop"] = function Module_resumeMainLoop() { Browser.mainLoop.resume() };
Module["getUserMedia"] = function Module_getUserMedia() { Browser.getUserMedia() }
STACK_BASE = STACKTOP = Runtime.alignMemory(STATICTOP);
staticSealed = true; // seal the static portion of memory
STACK_MAX = STACK_BASE + 5242880;
DYNAMIC_BASE = DYNAMICTOP = Runtime.alignMemory(STACK_MAX);
assert(DYNAMIC_BASE < TOTAL_MEMORY, "TOTAL_MEMORY not big enough for stack");
var FUNCTION_TABLE = [0,0,_signalHandler,0,_finalizeembindobject_FFAWeqZ9bKkcao12N6E8W0g,0,_PreMainInner,0,_NimMainInner,0];
// EMSCRIPTEN_START_FUNCS
function _nimFrame($s0){
var label=0;
var sp=STACKTOP; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
label = 1;
while(1)switch(label){
case 1:
var $1;
var $LOC1;
$1=$s0;
$LOC1=0;
var $2=HEAP32[((16016)>>2)];
var $3=($2|0)==0;
if($3){label=3;break;}else{label=2;break;}
case 2:
label=4;break;
case 3:
$LOC1=0;
label=5;break;
case 4:
var $7=HEAP32[((16016)>>2)];
var $8=(($7+18)|0);
var $9=HEAP16[(($8)>>1)];
var $10=(($9<<16)>>16);
var $11=((($10)+(1))|0);
var $12=(($11)&65535);
var $13=(($12<<16)>>16);
$LOC1=$13;
label=5;break;
case 5:
var $15=$LOC1;
var $16=(($15)&65535);
var $17=$1;
var $18=(($17+18)|0);
HEAP16[(($18)>>1)]=$16;
var $19=HEAP32[((16016)>>2)];
var $20=$1;
var $21=(($20)|0);
HEAP32[(($21)>>2)]=$19;
var $22=$1;
HEAP32[((16016)>>2)]=$22;
var $23=$1;
var $24=(($23+18)|0);
var $25=HEAP16[(($24)>>1)];
var $26=(($25<<16)>>16);
var $27=($26|0)==2000;
if($27){label=7;break;}else{label=6;break;}
case 6:
label=8;break;
case 7:
_stackoverflow_II46IjNZztN9bmbxUD8dt8g();
label=8;break;
case 8:
STACKTOP=sp;return;
default: assert(0, "bad label: " + label);
}
}
function _popFrame(){
var label=0;
var $1=HEAP32[((16016)>>2)];
var $2=(($1)|0);
var $3=HEAP32[(($2)>>2)];
HEAP32[((16016)>>2)]=$3;
return;
}
function _jsbind_emscriptenInit000(){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+24)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
var $FR=sp;
var $1=(($FR+4)|0);
HEAP32[(($1)>>2)]=3224;
var $2=(($FR+12)|0);
HEAP32[(($2)>>2)]=6664;
var $3=(($FR+8)|0);
HEAP32[(($3)>>2)]=0;
var $4=(($FR+16)|0);
HEAP16[(($4)>>1)]=0;
_nimFrame($FR);
_popFrame();
STACKTOP=sp;return;
}
function _jsbind_emscriptenDatInit000(){
var label=0;
HEAP32[((21400)>>2)]=16;
HEAP8[(21404)]=18;
HEAP32[((21408)>>2)]=0;
HEAP32[((15744)>>2)]=15776;
HEAP32[((20408)>>2)]=8;
HEAP8[(20412)]=18;
HEAP32[((20416)>>2)]=0;
HEAP8[(20413)]=2;
HEAP32[((15736)>>2)]=15824;
HEAP32[((19896)>>2)]=4;
HEAP8[(19900)]=26;
HEAP32[((19904)>>2)]=0;
HEAP8[(19901)]=3;
HEAP8[(15824)]=1;
HEAP32[((15828)>>2)]=0;
HEAP32[((15832)>>2)]=19896;
HEAP32[((15836)>>2)]=2896;
HEAP32[((15740)>>2)]=15848;
HEAP32[((20152)>>2)]=1;
HEAP8[(20156)]=18;
HEAP32[((20160)>>2)]=0;
HEAP8[(20157)]=3;
HEAP32[((15888)>>2)]=0;
HEAP8[(15872)]=2;
HEAP32[((20164)>>2)]=15872;
HEAP32[((20376)>>2)]=4;
HEAP8[(20380)]=22;
HEAP32[((20384)>>2)]=20152;
HEAP8[(20381)]=2;
HEAP8[(15848)]=1;
HEAP32[((15852)>>2)]=4;
HEAP32[((15856)>>2)]=20376;
HEAP32[((15860)>>2)]=2576;
HEAP32[((15816)>>2)]=2;
HEAP8[(15800)]=2;
HEAP32[((15820)>>2)]=15736;
HEAP32[((20420)>>2)]=15800;
HEAP8[(15776)]=1;
HEAP32[((15780)>>2)]=0;
HEAP32[((15784)>>2)]=20408;
HEAP32[((15788)>>2)]=2184;
HEAP32[((15748)>>2)]=15896;
HEAP32[((21464)>>2)]=8;
HEAP8[(21468)]=18;
HEAP32[((21472)>>2)]=0;
HEAP8[(21469)]=2;
HEAP32[((15728)>>2)]=15944;
HEAP8[(15944)]=1;
HEAP32[((15948)>>2)]=0;
HEAP32[((15952)>>2)]=19896;
HEAP32[((15956)>>2)]=2896;
HEAP32[((15732)>>2)]=15968;
HEAP8[(15968)]=1;
HEAP32[((15972)>>2)]=4;
HEAP32[((15976)>>2)]=20376;
HEAP32[((15980)>>2)]=2576;
HEAP32[((15936)>>2)]=2;
HEAP8[(15920)]=2;
HEAP32[((15940)>>2)]=15728;
HEAP32[((21476)>>2)]=15920;
HEAP8[(15896)]=1;
HEAP32[((15900)>>2)]=8;
HEAP32[((15904)>>2)]=21464;
HEAP32[((15908)>>2)]=1808;
HEAP32[((15768)>>2)]=2;
HEAP8[(15752)]=2;
HEAP32[((15772)>>2)]=15744;
HEAP32[((21412)>>2)]=15752;
HEAP32[((22072)>>2)]=4;
HEAP8[(22076)]=22;
HEAP32[((22080)>>2)]=21400;
return;
}
function _stdlib_posixInit000(){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+24)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
var $FR=sp;
var $1=(($FR+4)|0);
HEAP32[(($1)>>2)]=6080;
var $2=(($FR+12)|0);
HEAP32[(($2)>>2)]=6248;
var $3=(($FR+8)|0);
HEAP32[(($3)>>2)]=0;
var $4=(($FR+16)|0);
HEAP16[(($4)>>1)]=0;
_nimFrame14($FR);
_popFrame15();
STACKTOP=sp;return;
}
function _stdlib_posixDatInit000(){
var label=0;
return;
}
function _nimFrame14($s0){
var label=0;
var sp=STACKTOP; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
label = 1;
while(1)switch(label){
case 1:
var $1;
var $LOC1;
$1=$s0;
$LOC1=0;
var $2=HEAP32[((16016)>>2)];
var $3=($2|0)==0;
if($3){label=3;break;}else{label=2;break;}
case 2:
label=4;break;
case 3:
$LOC1=0;
label=5;break;
case 4:
var $7=HEAP32[((16016)>>2)];
var $8=(($7+18)|0);
var $9=HEAP16[(($8)>>1)];
var $10=(($9<<16)>>16);
var $11=((($10)+(1))|0);
var $12=(($11)&65535);
var $13=(($12<<16)>>16);
$LOC1=$13;
label=5;break;
case 5:
var $15=$LOC1;
var $16=(($15)&65535);
var $17=$1;
var $18=(($17+18)|0);
HEAP16[(($18)>>1)]=$16;
var $19=HEAP32[((16016)>>2)];
var $20=$1;
var $21=(($20)|0);
HEAP32[(($21)>>2)]=$19;
var $22=$1;
HEAP32[((16016)>>2)]=$22;
var $23=$1;
var $24=(($23+18)|0);
var $25=HEAP16[(($24)>>1)];
var $26=(($25<<16)>>16);
var $27=($26|0)==2000;
if($27){label=7;break;}else{label=6;break;}
case 6:
label=8;break;
case 7:
_stackoverflow_II46IjNZztN9bmbxUD8dt8g();
label=8;break;
case 8:
STACKTOP=sp;return;
default: assert(0, "bad label: " + label);
}
}
function _popFrame15(){
var label=0;
var $1=HEAP32[((16016)>>2)];
var $2=(($1)|0);
var $3=HEAP32[(($2)>>2)];
HEAP32[((16016)>>2)]=$3;
return;
}
function _getapplaux_Cd6LaCdd4j2y8pff6G0r9aw($procpath0){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+24)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
label = 1;
while(1)switch(label){
case 1:
var $1;
var $result0;
var $len0;
var $FR=sp;
var $T_yu6cxgKBBXbNsTkT9cyMd4g_3;
$1=$procpath0;
var $2=(($FR+4)|0);
HEAP32[(($2)>>2)]=5128;
var $3=(($FR+12)|0);
HEAP32[(($3)>>2)]=6152;
var $4=(($FR+8)|0);
HEAP32[(($4)>>2)]=0;
var $5=(($FR+16)|0);
HEAP16[(($5)>>1)]=0;
_nimFrame30($FR);
$result0=0;
var $6=(($FR+8)|0);
HEAP32[(($6)>>2)]=1497;
var $7=(($FR+12)|0);
HEAP32[(($7)>>2)]=6152;
var $8=_mnewString(256);
$result0=$8;
var $9=(($FR+8)|0);
HEAP32[(($9)>>2)]=1498;
var $10=(($FR+12)|0);
HEAP32[(($10)>>2)]=6152;
var $11=$1;
var $12=(($11+8)|0);
var $13=(($12)|0);
var $14=$result0;
var $15=(($14+8)|0);
var $16=(($15)|0);
var $17=_readlink($13,$16,256);
$len0=$17;
var $18=(($FR+8)|0);
HEAP32[(($18)>>2)]=1499;
var $19=(($FR+12)|0);
HEAP32[(($19)>>2)]=6152;
var $20=$len0;
var $21=256<($20|0);
if($21){label=3;break;}else{label=2;break;}
case 2:
label=4;break;
case 3:
var $24=(($FR+8)|0);
HEAP32[(($24)>>2)]=1500;
var $25=(($FR+12)|0);
HEAP32[(($25)>>2)]=6152;
var $26=$len0;
var $27=_addInt($26,1);
$T_yu6cxgKBBXbNsTkT9cyMd4g_3=$27;
var $28=$T_yu6cxgKBBXbNsTkT9cyMd4g_3;
var $29=_chckRange($28,0,2147483647);
var $30=_mnewString($29);
$result0=$30;
var $31=(($FR+8)|0);
HEAP32[(($31)>>2)]=1501;
var $32=(($FR+12)|0);
HEAP32[(($32)>>2)]=6152;
var $33=$1;
var $34=(($33+8)|0);
var $35=(($34)|0);
var $36=$result0;
var $37=(($36+8)|0);
var $38=(($37)|0);
var $39=$len0;
var $40=_readlink($35,$38,$39);
$len0=$40;
label=4;break;
case 4:
var $42=(($FR+8)|0);
HEAP32[(($42)>>2)]=1502;
var $43=(($FR+12)|0);
HEAP32[(($43)>>2)]=6152;
var $44=$result0;
var $45=$len0;
var $46=_chckRange($45,0,2147483647);
var $47=_setLengthStr($44,$46);
$result0=$47;
_popFrame31();
var $48=$result0;
STACKTOP=sp;return $48;
default: assert(0, "bad label: " + label);
}
}
function _paramstr_eYicl3uwirn1ppNz7OCowg($i0){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+24)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
label = 1;
while(1)switch(label){
case 1:
var $1;
var $result0;
var $e_9c9avxASFO8rHZknrsDnVzEA;
var $FR=sp;
var $LOC3;
$1=$i0;
var $2=(($FR+4)|0);
HEAP32[(($2)>>2)]=4176;
var $3=(($FR+12)|0);
HEAP32[(($3)>>2)]=6152;
var $4=(($FR+8)|0);
HEAP32[(($4)>>2)]=0;
var $5=(($FR+16)|0);
HEAP16[(($5)>>1)]=0;
_nimFrame30($FR);
$result0=0;
var $6=(($FR+8)|0);
HEAP32[(($6)>>2)]=1438;
var $7=(($FR+12)|0);
HEAP32[(($7)>>2)]=6152;
$LOC3=0;
var $8=$1;
var $9=HEAP32[((16072)>>2)];
var $10=($8|0)<($9|0);
var $11=($10&1);
var $12=(($11)&255);
$LOC3=$12;
var $13=$LOC3;
var $14=(($13<<24)>>24)!=0;
if($14){label=3;break;}else{label=2;break;}
case 2:
label=4;break;
case 3:
var $17=$1;
var $18=0<=($17|0);
var $19=($18&1);
var $20=(($19)&255);
$LOC3=$20;
label=4;break;
case 4:
var $22=$LOC3;
var $23=(($22<<24)>>24)!=0;
if($23){label=6;break;}else{label=5;break;}
case 5:
label=9;break;
case 6:
var $26=$1;
var $27=($26>>>0)>100000000;
if($27){label=7;break;}else{label=8;break;}
case 7:
_raiseIndexError();
label=8;break;
case 8:
var $30=$1;
var $31=(($30)|0);
var $32=HEAP32[((16064)>>2)];
var $33=(($32+($31<<2))|0);
var $34=HEAP32[(($33)>>2)];
var $35=_cstrToNimstr($34);
$result0=$35;
label=10;break;
case 9:
$e_9c9avxASFO8rHZknrsDnVzEA=0;
var $37=(($FR+8)|0);
HEAP32[(($37)>>2)]=2560;
var $38=(($FR+12)|0);
HEAP32[(($38)>>2)]=3552;
var $39=_newObj(19736,20);
var $40=$39;
$e_9c9avxASFO8rHZknrsDnVzEA=$40;
var $41=$e_9c9avxASFO8rHZknrsDnVzEA;
var $42=(($41)|0);
var $43=(($42)|0);
var $44=(($43)|0);
HEAP32[(($44)>>2)]=20728;
var $45=(($FR+8)|0);
HEAP32[(($45)>>2)]=2561;
var $46=(($FR+12)|0);
HEAP32[(($46)>>2)]=3552;
var $47=_copyString(6696);
var $48=$e_9c9avxASFO8rHZknrsDnVzEA;
var $49=(($48)|0);
var $50=(($49+12)|0);
HEAP32[(($50)>>2)]=$47;
var $51=(($FR+8)|0);
HEAP32[(($51)>>2)]=1439;
var $52=(($FR+12)|0);
HEAP32[(($52)>>2)]=6152;
var $53=$e_9c9avxASFO8rHZknrsDnVzEA;
var $54=$53;
_raiseException($54,3128);
label=10;break;
case 10:
_popFrame31();
var $56=$result0;
STACKTOP=sp;return $56;
default: assert(0, "bad label: " + label);
}
}
function _getenvvarsc_xlXgIeBHBOL9cl4MJcFJ8xA(){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+24)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
label = 1;
while(1)switch(label){
case 1:
var $FR=sp;
var $i0;
var $LOC12;
var $T_yu6cxgKBBXbNsTkT9cyMd4g_6;
var $LOC9;
var $1=(($FR+4)|0);
HEAP32[(($1)>>2)]=2808;
var $2=(($FR+12)|0);
HEAP32[(($2)>>2)]=6152;
var $3=(($FR+8)|0);
HEAP32[(($3)>>2)]=0;
var $4=(($FR+16)|0);
HEAP16[(($4)>>1)]=0;
_nimFrame30($FR);
var $5=(($FR+8)|0);
HEAP32[(($5)>>2)]=751;
var $6=(($FR+12)|0);
HEAP32[(($6)>>2)]=6152;
var $7=HEAP8[(16048)];
var $8=(($7<<24)>>24)!=0;
if($8){label=2;break;}else{label=3;break;}
case 2:
label=13;break;
case 3:
var $11=(($FR+8)|0);
HEAP32[(($11)>>2)]=752;
var $12=(($FR+12)|0);
HEAP32[(($12)>>2)]=6152;
var $13=_newSeq(20024,0);
var $14=$13;
HEAP32[((16040)>>2)]=$14;
var $15=(($FR+8)|0);
HEAP32[(($15)>>2)]=755;
var $16=(($FR+12)|0);
HEAP32[(($16)>>2)]=6152;
$i0=0;
var $17=(($FR+8)|0);
HEAP32[(($17)>>2)]=756;
var $18=(($FR+12)|0);
HEAP32[(($18)>>2)]=6152;
label=4;break;
case 4:
var $20=(($FR+8)|0);
HEAP32[(($20)>>2)]=757;
var $21=(($FR+12)|0);
HEAP32[(($21)>>2)]=6152;
var $22=$i0;
var $23=($22>>>0)>100000000;
if($23){label=5;break;}else{label=6;break;}
case 5:
_raiseIndexError();
label=6;break;
case 6:
$LOC9=0;
var $26=$i0;
var $27=(($26)|0);
var $28=HEAP32[((_environ)>>2)];
var $29=(($28+($27<<2))|0);
var $30=HEAP32[(($29)>>2)];
var $31=_HEX3DHEX3D_9ccNWqrTIE9bcAqE2Q0ro7zgsystem($30,0);
$LOC9=$31;
var $32=$LOC9;
var $33=(($32<<24)>>24)!=0;
if($33){label=8;break;}else{label=7;break;}
case 7:
label=9;break;
case 8:
label=12;break;
case 9:
var $37=(($FR+8)|0);
HEAP32[(($37)>>2)]=758;
var $38=(($FR+12)|0);
HEAP32[(($38)>>2)]=6152;
var $39=$i0;
var $40=($39>>>0)>100000000;
if($40){label=10;break;}else{label=11;break;}
case 10:
_raiseIndexError();
label=11;break;
case 11:
$LOC12=0;
var $43=$i0;
var $44=(($43)|0);
var $45=HEAP32[((_environ)>>2)];
var $46=(($45+($44<<2))|0);
var $47=HEAP32[(($46)>>2)];
var $48=_cstrToNimstr($47);
$LOC12=$48;
var $49=HEAP32[((16040)>>2)];
var $50=(($49)|0);
var $51=_incrSeqV2($50,4);
var $52=$51;
HEAP32[((16040)>>2)]=$52;
var $53=$LOC12;
var $54=_copyString($53);
var $55=HEAP32[((16040)>>2)];
var $56=(($55)|0);
var $57=(($56)|0);
var $58=HEAP32[(($57)>>2)];
var $59=HEAP32[((16040)>>2)];
var $60=(($59+8)|0);
var $61=(($60+($58<<2))|0);
tempBigInt=$54;HEAP8[($61)]=tempBigInt&0xff;tempBigInt = tempBigInt>>8;HEAP8[((($61)+(1))|0)]=tempBigInt&0xff;tempBigInt = tempBigInt>>8;HEAP8[((($61)+(2))|0)]=tempBigInt&0xff;tempBigInt = tempBigInt>>8;HEAP8[((($61)+(3))|0)]=tempBigInt&0xff;
var $62=HEAP32[((16040)>>2)];
var $63=(($62)|0);
var $64=(($63)|0);
var $65=HEAP32[(($64)>>2)];
var $66=((($65)+(1))|0);
HEAP32[(($64)>>2)]=$66;
var $67=(($FR+8)|0);
HEAP32[(($67)>>2)]=759;
var $68=(($FR+12)|0);
HEAP32[(($68)>>2)]=6152;
var $69=$i0;
var $70=_addInt($69,1);
$T_yu6cxgKBBXbNsTkT9cyMd4g_6=$70;
var $71=$T_yu6cxgKBBXbNsTkT9cyMd4g_6;
$i0=$71;
label=4;break;
case 12:
var $73=(($FR+8)|0);
HEAP32[(($73)>>2)]=760;
var $74=(($FR+12)|0);
HEAP32[(($74)>>2)]=6152;
HEAP8[(16048)]=1;
label=13;break;
case 13:
_popFrame31();
STACKTOP=sp;return;
default: assert(0, "bad label: " + label);
}
}
function _findenvvar_cmJJ3H7KloA4DztTvzWyCw($key0){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+24)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
label = 1;
while(1)switch(label){
case 1:
var $1;
var $result0;
var $temp0;
var $LOC1;
var $FR=sp;
var $i_QFpQyCBMTAf3RQiHRTCtRA;
var $HEX3Atmp_8z2i61QBqrTxJYp9bXCSF9aA;
var $res_9cO4Qfuzy9c4z8ih7joizeqg;
var $T_yu6cxgKBBXbNsTkT9cyMd4g_7;
var $LOC7;
$1=$key0;
var $2=(($FR+4)|0);
HEAP32[(($2)>>2)]=2488;
var $3=(($FR+12)|0);
HEAP32[(($3)>>2)]=6152;
var $4=(($FR+8)|0);
HEAP32[(($4)>>2)]=0;
var $5=(($FR+16)|0);
HEAP16[(($5)>>1)]=0;
_nimFrame30($FR);
$result0=0;
var $6=(($FR+8)|0);
HEAP32[(($6)>>2)]=763;
var $7=(($FR+12)|0);
HEAP32[(($7)>>2)]=6152;
_getenvvarsc_xlXgIeBHBOL9cl4MJcFJ8xA();
var $8=(($FR+8)|0);
HEAP32[(($8)>>2)]=764;
var $9=(($FR+12)|0);
HEAP32[(($9)>>2)]=6152;
$LOC1=0;
var $10=$1;
var $11=(($10)|0);
var $12=(($11)|0);
var $13=HEAP32[(($12)>>2)];
var $14=((($13)+(1))|0);
var $15=_rawNewString($14);
$LOC1=$15;
var $16=$LOC1;
var $17=$1;
_appendString($16,$17);
var $18=$LOC1;
_appendChar($18,61);
var $19=$LOC1;
$temp0=$19;
$i_QFpQyCBMTAf3RQiHRTCtRA=0;
$HEX3Atmp_8z2i61QBqrTxJYp9bXCSF9aA=0;
var $20=(($FR+8)|0);
HEAP32[(($20)>>2)]=765;
var $21=(($FR+12)|0);
HEAP32[(($21)>>2)]=6152;
var $22=HEAP32[((16040)>>2)];
var $23=($22|0)!=0;
if($23){label=2;break;}else{label=3;break;}
case 2:
var $25=HEAP32[((16040)>>2)];
var $26=(($25)|0);
var $27=(($26)|0);
var $28=HEAP32[(($27)>>2)];
var $29=((($28)-(1))|0);
var $32=$29;label=4;break;
case 3:
var $32=-1;label=4;break;
case 4:
var $32;
$HEX3Atmp_8z2i61QBqrTxJYp9bXCSF9aA=$32;
var $33=(($FR+8)|0);
HEAP32[(($33)>>2)]=1908;
var $34=(($FR+12)|0);
HEAP32[(($34)>>2)]=3552;
$res_9cO4Qfuzy9c4z8ih7joizeqg=0;
var $35=(($FR+8)|0);
HEAP32[(($35)>>2)]=1909;
var $36=(($FR+12)|0);
HEAP32[(($36)>>2)]=3552;
label=5;break;
case 5:
var $38=(($FR+8)|0);
HEAP32[(($38)>>2)]=1908;
var $39=(($FR+12)|0);
HEAP32[(($39)>>2)]=3552;
var $40=$res_9cO4Qfuzy9c4z8ih7joizeqg;
var $41=$HEX3Atmp_8z2i61QBqrTxJYp9bXCSF9aA;
var $42=($40|0)<=($41|0);
if($42){label=7;break;}else{label=6;break;}
case 6:
label=13;break;
case 7:
var $45=(($FR+8)|0);
HEAP32[(($45)>>2)]=1910;
var $46=(($FR+12)|0);
HEAP32[(($46)>>2)]=3552;
var $47=$res_9cO4Qfuzy9c4z8ih7joizeqg;
$i_QFpQyCBMTAf3RQiHRTCtRA=$47;
var $48=(($FR+8)|0);
HEAP32[(($48)>>2)]=766;
var $49=(($FR+12)|0);
HEAP32[(($49)>>2)]=6152;
var $50=$i_QFpQyCBMTAf3RQiHRTCtRA;
var $51=HEAP32[((16040)>>2)];
var $52=(($51)|0);
var $53=(($52)|0);
var $54=HEAP32[(($53)>>2)];
var $55=($50>>>0)>=($54>>>0);
if($55){label=8;break;}else{label=9;break;}
case 8:
_raiseIndexError();
label=9;break;
case 9:
$LOC7=0;
var $58=$i_QFpQyCBMTAf3RQiHRTCtRA;
var $59=HEAP32[((16040)>>2)];
var $60=(($59+8)|0);
var $61=(($60+($58<<2))|0);
var $62=((((HEAPU8[($61)])|(HEAPU8[((($61)+(1))|0)]<<8)|(HEAPU8[((($61)+(2))|0)]<<16)|(HEAPU8[((($61)+(3))|0)]<<24))|0));
var $63=$temp0;
var $64=_nsuStartsWith($62,$63);
$LOC7=$64;
var $65=$LOC7;
var $66=(($65<<24)>>24)!=0;
if($66){label=11;break;}else{label=10;break;}
case 10:
label=12;break;
case 11:
var $69=$i_QFpQyCBMTAf3RQiHRTCtRA;
$result0=$69;
label=14;break;
case 12:
var $71=(($FR+8)|0);
HEAP32[(($71)>>2)]=1908;
var $72=(($FR+12)|0);
HEAP32[(($72)>>2)]=3552;
var $73=$res_9cO4Qfuzy9c4z8ih7joizeqg;
var $74=_addInt($73,1);
$T_yu6cxgKBBXbNsTkT9cyMd4g_7=$74;
var $75=$T_yu6cxgKBBXbNsTkT9cyMd4g_7;
$res_9cO4Qfuzy9c4z8ih7joizeqg=$75;
label=5;break;
case 13:
var $77=(($FR+8)|0);
HEAP32[(($77)>>2)]=767;
var $78=(($FR+12)|0);
HEAP32[(($78)>>2)]=6152;
$result0=-1;
label=14;break;
case 14:
_popFrame31();
var $80=$result0;
STACKTOP=sp;return $80;
default: assert(0, "bad label: " + label);
}
}
function _getenv_8zNgT9bxx7m9cTt2TeVdTdIw($key0){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+24)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
label = 1;
while(1)switch(label){
case 1:
var $1;
var $result0;
var $i0;
var $FR=sp;
var $LOC5;
var $T_yu6cxgKBBXbNsTkT9cyMd4g_8;
var $env0;
var $LOC9;
$1=$key0;
var $2=(($FR+4)|0);
HEAP32[(($2)>>2)]=2064;
var $3=(($FR+12)|0);
HEAP32[(($3)>>2)]=6152;
var $4=(($FR+8)|0);
HEAP32[(($4)>>2)]=0;
var $5=(($FR+16)|0);
HEAP16[(($5)>>1)]=0;
_nimFrame30($FR);
$result0=0;
var $6=(($FR+8)|0);
HEAP32[(($6)>>2)]=775;
var $7=(($FR+12)|0);
HEAP32[(($7)>>2)]=6152;
var $8=$1;
var $9=_findenvvar_cmJJ3H7KloA4DztTvzWyCw($8);
$i0=$9;
var $10=(($FR+8)|0);
HEAP32[(($10)>>2)]=776;
var $11=(($FR+12)|0);
HEAP32[(($11)>>2)]=6152;
var $12=$i0;
var $13=0<=($12|0);
if($13){label=3;break;}else{label=2;break;}
case 2:
label=8;break;
case 3:
var $16=(($FR+8)|0);
HEAP32[(($16)>>2)]=777;
var $17=(($FR+12)|0);
HEAP32[(($17)>>2)]=6152;
var $18=$i0;
var $19=HEAP32[((16040)>>2)];
var $20=(($19)|0);
var $21=(($20)|0);
var $22=HEAP32[(($21)>>2)];
var $23=($18>>>0)>=($22>>>0);
if($23){label=4;break;}else{label=5;break;}
case 4:
_raiseIndexError();
label=5;break;
case 5:
var $26=$i0;
var $27=HEAP32[((16040)>>2)];
var $28=(($27)|0);
var $29=(($28)|0);
var $30=HEAP32[(($29)>>2)];
var $31=($26>>>0)>=($30>>>0);
if($31){label=6;break;}else{label=7;break;}
case 6:
_raiseIndexError();
label=7;break;
case 7:
$LOC5=0;
var $34=$i0;
var $35=HEAP32[((16040)>>2)];
var $36=(($35+8)|0);
var $37=(($36+($34<<2))|0);
var $38=((((HEAPU8[($37)])|(HEAPU8[((($37)+(1))|0)]<<8)|(HEAPU8[((($37)+(2))|0)]<<16)|(HEAPU8[((($37)+(3))|0)]<<24))|0));
var $39=_nsuFindChar($38,61,0);
$LOC5=$39;
var $40=$LOC5;
var $41=_addInt($40,1);
$T_yu6cxgKBBXbNsTkT9cyMd4g_8=$41;
var $42=$i0;
var $43=HEAP32[((16040)>>2)];
var $44=(($43+8)|0);
var $45=(($44+($42<<2))|0);
var $46=((((HEAPU8[($45)])|(HEAPU8[((($45)+(1))|0)]<<8)|(HEAPU8[((($45)+(2))|0)]<<16)|(HEAPU8[((($45)+(3))|0)]<<24))|0));
var $47=$T_yu6cxgKBBXbNsTkT9cyMd4g_8;
var $48=_copyStr($46,$47);
$result0=$48;
label=13;break;
case 8:
var $50=(($FR+8)|0);
HEAP32[(($50)>>2)]=779;
var $51=(($FR+12)|0);
HEAP32[(($51)>>2)]=6152;
var $52=$1;
var $53=(($52+8)|0);
var $54=(($53)|0);
var $55=_getenv($54);
$env0=$55;
var $56=(($FR+8)|0);
HEAP32[(($56)>>2)]=780;
var $57=(($FR+12)|0);
HEAP32[(($57)>>2)]=6152;
$LOC9=0;
var $58=$env0;
var $59=_HEX3DHEX3D_9ccNWqrTIE9bcAqE2Q0ro7zgsystem($58,0);
$LOC9=$59;
var $60=$LOC9;
var $61=(($60<<24)>>24)!=0;
if($61){label=10;break;}else{label=9;break;}
case 9:
label=11;break;
case 10:
var $64=_copyString(6680);
$result0=$64;
label=13;break;
case 11:
var $66=(($FR+8)|0);
HEAP32[(($66)>>2)]=781;
var $67=(($FR+12)|0);
HEAP32[(($67)>>2)]=6152;
var $68=$env0;
var $69=_cstrToNimstr($68);
$result0=$69;
label=12;break;
case 12:
label=13;break;
case 13:
_popFrame31();
var $72=$result0;
STACKTOP=sp;return $72;
default: assert(0, "bad label: " + label);
}
}
function _nosjoinPath($head0,$tail0){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+24)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
label = 1;
while(1)switch(label){
case 1:
var $1;
var $2;
var $result0;
var $FR=sp;
var $T_yu6cxgKBBXbNsTkT9cyMd4g_13;
var $LOC12;
var $LOC13;
var $LOC15;
var $LOC21;
var $LOC23;
$1=$head0;
$2=$tail0;
var $3=(($FR+4)|0);
HEAP32[(($3)>>2)]=1704;
var $4=(($FR+12)|0);
HEAP32[(($4)>>2)]=912;
var $5=(($FR+8)|0);
HEAP32[(($5)>>2)]=0;
var $6=(($FR+16)|0);
HEAP16[(($6)>>1)]=0;
_nimFrame30($FR);
$result0=0;
var $7=(($FR+8)|0);
HEAP32[(($7)>>2)]=197;
var $8=(($FR+12)|0);
HEAP32[(($8)>>2)]=912;
var $9=$1;
var $10=($9|0)!=0;
if($10){label=2;break;}else{label=3;break;}
case 2:
var $12=$1;
var $13=(($12)|0);
var $14=(($13)|0);
var $15=HEAP32[(($14)>>2)];
var $18=$15;label=4;break;
case 3:
var $18=0;label=4;break;
case 4:
var $18;
var $19=($18|0)==0;
if($19){label=6;break;}else{label=5;break;}
case 5:
label=7;break;
case 6:
var $22=(($FR+8)|0);
HEAP32[(($22)>>2)]=198;
var $23=(($FR+12)|0);
HEAP32[(($23)>>2)]=912;
var $24=$2;
var $25=_copyString($24);
$result0=$25;
label=31;break;
case 7:
var $27=(($FR+8)|0);
HEAP32[(($27)>>2)]=199;
var $28=(($FR+12)|0);
HEAP32[(($28)>>2)]=912;
var $29=$1;
var $30=($29|0)!=0;
if($30){label=8;break;}else{label=9;break;}
case 8:
var $32=$1;
var $33=(($32)|0);
var $34=(($33)|0);
var $35=HEAP32[(($34)>>2)];
var $38=$35;label=10;break;
case 9:
var $38=0;label=10;break;
case 10:
var $38;
var $39=_subInt($38,1);
$T_yu6cxgKBBXbNsTkT9cyMd4g_13=$39;
var $40=$T_yu6cxgKBBXbNsTkT9cyMd4g_13;
var $41=$1;
var $42=(($41)|0);
var $43=(($42)|0);
var $44=HEAP32[(($43)>>2)];
var $45=($40>>>0)>($44>>>0);
if($45){label=11;break;}else{label=12;break;}
case 11:
_raiseIndexError();
label=12;break;
case 12:
var $48=$T_yu6cxgKBBXbNsTkT9cyMd4g_13;
var $49=$1;
var $50=(($49+8)|0);
var $51=(($50+$48)|0);
var $52=HEAP8[($51)];
var $53=($52&255);
var $54=($53|0)==47;
if($54){label=15;break;}else{label=13;break;}
case 13:
var $56=$T_yu6cxgKBBXbNsTkT9cyMd4g_13;
var $57=$1;
var $58=(($57+8)|0);
var $59=(($58+$56)|0);
var $60=HEAP8[($59)];
var $61=($60&255);
var $62=($61|0)==47;
if($62){label=15;break;}else{label=14;break;}
case 14:
label=23;break;
case 15:
var $65=(($FR+8)|0);
HEAP32[(($65)>>2)]=200;
var $66=(($FR+12)|0);
HEAP32[(($66)>>2)]=912;
var $67=$2;
var $68=(($67)|0);
var $69=(($68)|0);
var $70=HEAP32[(($69)>>2)];
var $71=0>($70>>>0);
if($71){label=16;break;}else{label=17;break;}
case 16:
_raiseIndexError();
label=17;break;
case 17:
var $74=$2;
var $75=(($74+8)|0);
var $76=(($75)|0);
var $77=HEAP8[($76)];
var $78=($77&255);
var $79=($78|0)==47;
if($79){label=20;break;}else{label=18;break;}
case 18:
var $81=$2;
var $82=(($81+8)|0);
var $83=(($82)|0);
var $84=HEAP8[($83)];
var $85=($84&255);
var $86=($85|0)==47;
if($86){label=20;break;}else{label=19;break;}
case 19:
label=21;break;
case 20:
var $89=(($FR+8)|0);
HEAP32[(($89)>>2)]=201;
var $90=(($FR+12)|0);
HEAP32[(($90)>>2)]=912;
$LOC12=0;
$LOC13=0;
var $91=$2;
var $92=_copyStr($91,1);
$LOC13=$92;
var $93=$1;
var $94=(($93)|0);
var $95=(($94)|0);
var $96=HEAP32[(($95)>>2)];
var $97=$LOC13;
var $98=(($97)|0);
var $99=(($98)|0);
var $100=HEAP32[(($99)>>2)];
var $101=((($96)+($100))|0);
var $102=(($101)|0);
var $103=_rawNewString($102);
$LOC12=$103;
var $104=$LOC12;
var $105=$1;
_appendString($104,$105);
var $106=$LOC12;
var $107=$LOC13;
_appendString($106,$107);
var $108=$LOC12;
$result0=$108;
label=22;break;
case 21:
var $110=(($FR+8)|0);
HEAP32[(($110)>>2)]=203;
var $111=(($FR+12)|0);
HEAP32[(($111)>>2)]=912;
$LOC15=0;
var $112=$1;
var $113=(($112)|0);
var $114=(($113)|0);
var $115=HEAP32[(($114)>>2)];
var $116=$2;
var $117=(($116)|0);
var $118=(($117)|0);
var $119=HEAP32[(($118)>>2)];
var $120=((($115)+($119))|0);
var $121=(($120)|0);
var $122=_rawNewString($121);
$LOC15=$122;
var $123=$LOC15;
var $124=$1;
_appendString($123,$124);
var $125=$LOC15;
var $126=$2;
_appendString($125,$126);
var $127=$LOC15;
$result0=$127;
label=22;break;
case 22:
label=31;break;
case 23:
var $130=(($FR+8)|0);
HEAP32[(($130)>>2)]=205;
var $131=(($FR+12)|0);
HEAP32[(($131)>>2)]=912;
var $132=$2;
var $133=(($132)|0);
var $134=(($133)|0);
var $135=HEAP32[(($134)>>2)];
var $136=0>($135>>>0);
if($136){label=24;break;}else{label=25;break;}
case 24:
_raiseIndexError();
label=25;break;
case 25:
var $139=$2;
var $140=(($139+8)|0);
var $141=(($140)|0);
var $142=HEAP8[($141)];
var $143=($142&255);
var $144=($143|0)==47;
if($144){label=28;break;}else{label=26;break;}
case 26:
var $146=$2;
var $147=(($146+8)|0);
var $148=(($147)|0);
var $149=HEAP8[($148)];
var $150=($149&255);
var $151=($150|0)==47;
if($151){label=28;break;}else{label=27;break;}
case 27:
label=29;break;
case 28:
var $154=(($FR+8)|0);
HEAP32[(($154)>>2)]=206;
var $155=(($FR+12)|0);
HEAP32[(($155)>>2)]=912;
$LOC21=0;
var $156=$1;
var $157=(($156)|0);
var $158=(($157)|0);
var $159=HEAP32[(($158)>>2)];
var $160=$2;
var $161=(($160)|0);
var $162=(($161)|0);
var $163=HEAP32[(($162)>>2)];
var $164=((($159)+($163))|0);
var $165=(($164)|0);
var $166=_rawNewString($165);
$LOC21=$166;
var $167=$LOC21;
var $168=$1;
_appendString($167,$168);
var $169=$LOC21;
var $170=$2;
_appendString($169,$170);
var $171=$LOC21;
$result0=$171;
label=30;break;
case 29:
var $173=(($FR+8)|0);
HEAP32[(($173)>>2)]=208;
var $174=(($FR+12)|0);
HEAP32[(($174)>>2)]=912;
$LOC23=0;
var $175=$1;
var $176=(($175)|0);
var $177=(($176)|0);
var $178=HEAP32[(($177)>>2)];
var $179=$2;
var $180=(($179)|0);
var $181=(($180)|0);
var $182=HEAP32[(($181)>>2)];
var $183=((($178)+($182))|0);
var $184=((($183)+(1))|0);
var $185=_rawNewString($184);
$LOC23=$185;
var $186=$LOC23;
var $187=$1;
_appendString($186,$187);
var $188=$LOC23;
_appendChar($188,47);
var $189=$LOC23;
var $190=$2;
_appendString($189,$190);
var $191=$LOC23;
$result0=$191;
label=30;break;
case 30:
label=31;break;
case 31:
_popFrame31();
var $194=$result0;
STACKTOP=sp;return $194;
default: assert(0, "bad label: " + label);
}
}
function _nosexistsFile($filename0){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+104)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
label = 1;
while(1)switch(label){
case 1:
var $1;
var $result0;
var $res0=sp;
var $LOC1;
var $LOC2;
var $FR=(sp)+(80);
$1=$filename0;
var $2=(($FR+4)|0);
HEAP32[(($2)>>2)]=6584;
var $3=(($FR+12)|0);
HEAP32[(($3)>>2)]=6152;
var $4=(($FR+8)|0);
HEAP32[(($4)>>2)]=0;
var $5=(($FR+16)|0);
HEAP16[(($5)>>1)]=0;
_nimFrame30($FR);
$result0=0;
var $6=$res0;
_memset($6, 0, 76)|0;
var $7=(($FR+8)|0);
HEAP32[(($7)>>2)]=215;
var $8=(($FR+12)|0);
HEAP32[(($8)>>2)]=6152;
$LOC1=0;
$LOC2=0;
var $9=$1;
var $10=(($9+8)|0);
var $11=(($10)|0);
var $12=_stat($11,$res0);
$LOC2=$12;
var $13=$LOC2;
var $14=0<=($13|0);
var $15=($14&1);
var $16=(($15)&255);
$LOC1=$16;
var $17=$LOC1;
var $18=(($17<<24)>>24)!=0;
if($18){label=3;break;}else{label=2;break;}
case 2:
label=4;break;
case 3:
var $21=(($res0+12)|0);
var $22=HEAP32[(($21)>>2)];
var $23=$22&61440;
var $24=($23|0)==32768;
var $25=($24&1);
var $26=(($25)&255);
$LOC1=$26;
label=4;break;
case 4:
var $28=$LOC1;
$result0=$28;
label=5;break;
case 5:
_popFrame31();
var $30=$result0;
STACKTOP=sp;return $30;
default: assert(0, "bad label: " + label);
}
}
function _getapplheuristic_Mvl1mQZZxpEWtJIYJ85UWw(){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+24)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
label = 1;
while(1)switch(label){
case 1:
var $result0;
var $FR=sp;
var $LOC3;
var $p_EjpoDc4yoV2bOBVA9a87NEw;
var $HEX3Atmp_FJT9c9bnJ3EGi20yEwysG8Fg;
var $last_rIwWmKQAopGwgYFIIwiuxQ;
var $splits_jlkozoKbhldeNcp3VkacDw;
var $first_sK2zaikjbX9bS49c1Xg2Xh7Q;
var $T_yu6cxgKBBXbNsTkT9cyMd4g_12;
var $x0;
var $T_yu6cxgKBBXbNsTkT9cyMd4g_14;
var $T_yu6cxgKBBXbNsTkT9cyMd4g_15;
var $LOC16;
var $T_yu6cxgKBBXbNsTkT9cyMd4g_11;
var $LOC24;
var $1=(($FR+4)|0);
HEAP32[(($1)>>2)]=6264;
var $2=(($FR+12)|0);
HEAP32[(($2)>>2)]=6152;
var $3=(($FR+8)|0);
HEAP32[(($3)>>2)]=0;
var $4=(($FR+16)|0);
HEAP16[(($4)>>1)]=0;
_nimFrame30($FR);
$result0=0;
var $5=(($FR+8)|0);
HEAP32[(($5)>>2)]=1507;
var $6=(($FR+12)|0);
HEAP32[(($6)>>2)]=6152;
var $7=_paramstr_eYicl3uwirn1ppNz7OCowg(0);
$result0=$7;
var $8=(($FR+8)|0);
HEAP32[(($8)>>2)]=1510;
var $9=(($FR+12)|0);
HEAP32[(($9)>>2)]=6152;
$LOC3=0;
var $10=$result0;
var $11=($10|0)!=0;
if($11){label=2;break;}else{label=3;break;}
case 2:
var $13=$result0;
var $14=(($13)|0);
var $15=(($14)|0);
var $16=HEAP32[(($15)>>2)];
var $19=$16;label=4;break;
case 3:
var $19=0;label=4;break;
case 4:
var $19;
var $20=0<($19|0);
var $21=($20&1);
var $22=(($21)&255);
$LOC3=$22;
var $23=$LOC3;
var $24=(($23<<24)>>24)!=0;
if($24){label=6;break;}else{label=5;break;}
case 5:
label=9;break;
case 6:
var $27=(($FR+8)|0);
HEAP32[(($27)>>2)]=347;
var $28=(($FR+12)|0);
HEAP32[(($28)>>2)]=3552;
var $29=(($FR+8)|0);
HEAP32[(($29)>>2)]=1510;
var $30=(($FR+12)|0);
HEAP32[(($30)>>2)]=6152;
var $31=$result0;
var $32=(($31)|0);
var $33=(($32)|0);
var $34=HEAP32[(($33)>>2)];
var $35=0>($34>>>0);
if($35){label=7;break;}else{label=8;break;}
case 7:
_raiseIndexError();
label=8;break;
case 8:
var $38=$result0;
var $39=(($38+8)|0);
var $40=(($39)|0);
var $41=HEAP8[($40)];
var $42=($41&255);
var $43=($42|0)==47;
var $44=$43^1;
var $45=($44&1);
var $46=(($45)&255);
$LOC3=$46;
label=9;break;
case 9:
var $48=$LOC3;
var $49=(($48<<24)>>24)!=0;
if($49){label=11;break;}else{label=10;break;}
case 10:
label=50;break;
case 11:
$p_EjpoDc4yoV2bOBVA9a87NEw=0;
$HEX3Atmp_FJT9c9bnJ3EGi20yEwysG8Fg=0;
var $52=(($FR+8)|0);
HEAP32[(($52)>>2)]=1512;
var $53=(($FR+12)|0);
HEAP32[(($53)>>2)]=6152;
var $54=_getenv_8zNgT9bxx7m9cTt2TeVdTdIw(6808);
$HEX3Atmp_FJT9c9bnJ3EGi20yEwysG8Fg=$54;
var $55=(($FR+8)|0);
HEAP32[(($55)>>2)]=504;
var $56=(($FR+12)|0);
HEAP32[(($56)>>2)]=5976;
$last_rIwWmKQAopGwgYFIIwiuxQ=0;
var $57=(($FR+8)|0);
HEAP32[(($57)>>2)]=505;
var $58=(($FR+12)|0);
HEAP32[(($58)>>2)]=5976;
$splits_jlkozoKbhldeNcp3VkacDw=-1;
var $59=(($FR+8)|0);
HEAP32[(($59)>>2)]=577;
var $60=(($FR+12)|0);
HEAP32[(($60)>>2)]=5976;
var $61=(($FR+8)|0);
HEAP32[(($61)>>2)]=507;
var $62=(($FR+12)|0);
HEAP32[(($62)>>2)]=5976;
var $63=(($FR+8)|0);
HEAP32[(($63)>>2)]=532;
var $64=(($FR+12)|0);
HEAP32[(($64)>>2)]=5976;
var $65=$HEX3Atmp_FJT9c9bnJ3EGi20yEwysG8Fg;
var $66=($65|0)!=0;
if($66){label=12;break;}else{label=13;break;}
case 12:
var $68=$HEX3Atmp_FJT9c9bnJ3EGi20yEwysG8Fg;
var $69=(($68)|0);
var $70=(($69)|0);
var $71=HEAP32[(($70)>>2)];
var $74=$71;label=14;break;
case 13:
var $74=0;label=14;break;
case 14:
var $74;
var $75=0<($74|0);
if($75){label=16;break;}else{label=15;break;}
case 15:
label=49;break;
case 16:
var $78=(($FR+8)|0);
HEAP32[(($78)>>2)]=508;
var $79=(($FR+12)|0);
HEAP32[(($79)>>2)]=5976;
label=17;break;
case 17:
var $81=(($FR+8)|0);
HEAP32[(($81)>>2)]=504;
var $82=(($FR+12)|0);
HEAP32[(($82)>>2)]=5976;
var $83=(($FR+8)|0);
HEAP32[(($83)>>2)]=532;
var $84=(($FR+12)|0);
HEAP32[(($84)>>2)]=5976;
var $85=$last_rIwWmKQAopGwgYFIIwiuxQ;
var $86=$HEX3Atmp_FJT9c9bnJ3EGi20yEwysG8Fg;
var $87=($86|0)!=0;
if($87){label=18;break;}else{label=19;break;}
case 18:
var $89=$HEX3Atmp_FJT9c9bnJ3EGi20yEwysG8Fg;
var $90=(($89)|0);
var $91=(($90)|0);
var $92=HEAP32[(($91)>>2)];
var $95=$92;label=20;break;
case 19:
var $95=0;label=20;break;
case 20:
var $95;
var $96=($85|0)<=($95|0);
if($96){label=22;break;}else{label=21;break;}
case 21:
label=47;break;
case 22:
var $99=(($FR+8)|0);
HEAP32[(($99)>>2)]=509;
var $100=(($FR+12)|0);
HEAP32[(($100)>>2)]=5976;
var $101=$last_rIwWmKQAopGwgYFIIwiuxQ;
$first_sK2zaikjbX9bS49c1Xg2Xh7Q=$101;
var $102=(($FR+8)|0);
HEAP32[(($102)>>2)]=510;
var $103=(($FR+12)|0);
HEAP32[(($103)>>2)]=5976;
label=23;break;
case 23:
$LOC16=0;
var $105=(($FR+8)|0);
HEAP32[(($105)>>2)]=504;
var $106=(($FR+12)|0);
HEAP32[(($106)>>2)]=5976;
var $107=(($FR+8)|0);
HEAP32[(($107)>>2)]=532;
var $108=(($FR+12)|0);
HEAP32[(($108)>>2)]=5976;
var $109=$last_rIwWmKQAopGwgYFIIwiuxQ;
var $110=$HEX3Atmp_FJT9c9bnJ3EGi20yEwysG8Fg;
var $111=($110|0)!=0;
if($111){label=24;break;}else{label=25;break;}
case 24:
var $113=$HEX3Atmp_FJT9c9bnJ3EGi20yEwysG8Fg;
var $114=(($113)|0);
var $115=(($114)|0);
var $116=HEAP32[(($115)>>2)];
var $119=$116;label=26;break;
case 25:
var $119=0;label=26;break;
case 26:
var $119;
var $120=($109|0)<($119|0);
var $121=($120&1);
var $122=(($121)&255);
$LOC16=$122;
var $123=$LOC16;
var $124=(($123<<24)>>24)!=0;
if($124){label=28;break;}else{label=27;break;}
case 27:
label=31;break;
case 28:
var $127=(($FR+8)|0);
HEAP32[(($127)>>2)]=510;
var $128=(($FR+12)|0);
HEAP32[(($128)>>2)]=5976;
var $129=(($FR+8)|0);
HEAP32[(($129)>>2)]=1512;
var $130=(($FR+12)|0);
HEAP32[(($130)>>2)]=6152;
var $131=$last_rIwWmKQAopGwgYFIIwiuxQ;
var $132=$HEX3Atmp_FJT9c9bnJ3EGi20yEwysG8Fg;
var $133=(($132)|0);
var $134=(($133)|0);
var $135=HEAP32[(($134)>>2)];
var $136=($131>>>0)>($135>>>0);
if($136){label=29;break;}else{label=30;break;}
case 29:
_raiseIndexError();
label=30;break;
case 30:
var $139=$last_rIwWmKQAopGwgYFIIwiuxQ;
var $140=$HEX3Atmp_FJT9c9bnJ3EGi20yEwysG8Fg;
var $141=(($140+8)|0);
var $142=(($141+$139)|0);
var $143=HEAP8[($142)];
var $144=($143&255);
var $145=($144|0)==58;
var $146=$145^1;
var $147=($146&1);
var $148=(($147)&255);
$LOC16=$148;
label=31;break;
case 31:
var $150=$LOC16;
var $151=(($150<<24)>>24)!=0;
if($151){label=33;break;}else{label=32;break;}
case 32:
label=34;break;
case 33:
var $154=(($FR+8)|0);
HEAP32[(($154)>>2)]=504;
var $155=(($FR+12)|0);
HEAP32[(($155)>>2)]=5976;
var $156=$last_rIwWmKQAopGwgYFIIwiuxQ;
var $157=_addInt($156,1);
$T_yu6cxgKBBXbNsTkT9cyMd4g_11=$157;
var $158=$T_yu6cxgKBBXbNsTkT9cyMd4g_11;
$last_rIwWmKQAopGwgYFIIwiuxQ=$158;
label=23;break;
case 34:
var $160=(($FR+8)|0);
HEAP32[(($160)>>2)]=512;
var $161=(($FR+12)|0);
HEAP32[(($161)>>2)]=5976;
var $162=(($FR+8)|0);
HEAP32[(($162)>>2)]=505;
var $163=(($FR+12)|0);
HEAP32[(($163)>>2)]=5976;
var $164=$splits_jlkozoKbhldeNcp3VkacDw;
var $165=($164|0)==0;
if($165){label=36;break;}else{label=35;break;}
case 35:
label=40;break;
case 36:
var $168=(($FR+8)|0);
HEAP32[(($168)>>2)]=512;
var $169=(($FR+12)|0);
HEAP32[(($169)>>2)]=5976;
var $170=(($FR+8)|0);
HEAP32[(($170)>>2)]=532;
var $171=(($FR+12)|0);
HEAP32[(($171)>>2)]=5976;
var $172=$HEX3Atmp_FJT9c9bnJ3EGi20yEwysG8Fg;
var $173=($172|0)!=0;
if($173){label=37;break;}else{label=38;break;}
case 37:
var $175=$HEX3Atmp_FJT9c9bnJ3EGi20yEwysG8Fg;
var $176=(($175)|0);
var $177=(($176)|0);
var $178=HEAP32[(($177)>>2)];
var $181=$178;label=39;break;
case 38:
var $181=0;label=39;break;
case 39:
var $181;
$last_rIwWmKQAopGwgYFIIwiuxQ=$181;
label=40;break;
case 40:
var $183=(($FR+8)|0);
HEAP32[(($183)>>2)]=513;
var $184=(($FR+12)|0);
HEAP32[(($184)>>2)]=5976;
var $185=(($FR+8)|0);
HEAP32[(($185)>>2)]=532;
var $186=(($FR+12)|0);
HEAP32[(($186)>>2)]=5976;
var $187=(($FR+8)|0);
HEAP32[(($187)>>2)]=504;
var $188=(($FR+12)|0);
HEAP32[(($188)>>2)]=5976;
var $189=$last_rIwWmKQAopGwgYFIIwiuxQ;
var $190=_subInt($189,1);
$T_yu6cxgKBBXbNsTkT9cyMd4g_12=$190;
var $191=$HEX3Atmp_FJT9c9bnJ3EGi20yEwysG8Fg;
var $192=$first_sK2zaikjbX9bS49c1Xg2Xh7Q;
var $193=$T_yu6cxgKBBXbNsTkT9cyMd4g_12;
var $194=_copyStrLast($191,$192,$193);
$p_EjpoDc4yoV2bOBVA9a87NEw=$194;
var $195=(($FR+8)|0);
HEAP32[(($195)>>2)]=1513;
var $196=(($FR+12)|0);
HEAP32[(($196)>>2)]=6152;
var $197=$p_EjpoDc4yoV2bOBVA9a87NEw;
var $198=$result0;
var $199=_nosjoinPath($197,$198);
$x0=$199;
var $200=(($FR+8)|0);
HEAP32[(($200)>>2)]=1514;
var $201=(($FR+12)|0);
HEAP32[(($201)>>2)]=6152;
$LOC24=0;
var $202=$x0;
var $203=_nosexistsFile($202);
$LOC24=$203;
var $204=$LOC24;
var $205=(($204<<24)>>24)!=0;
if($205){label=42;break;}else{label=41;break;}
case 41:
label=43;break;
case 42:
var $208=$x0;
var $209=_copyString($208);
$result0=$209;
label=51;break;
case 43:
var $211=(($FR+8)|0);
HEAP32[(($211)>>2)]=514;
var $212=(($FR+12)|0);
HEAP32[(($212)>>2)]=5976;
var $213=(($FR+8)|0);
HEAP32[(($213)>>2)]=505;
var $214=(($FR+12)|0);
HEAP32[(($214)>>2)]=5976;
var $215=$splits_jlkozoKbhldeNcp3VkacDw;
var $216=($215|0)==0;
if($216){label=45;break;}else{label=44;break;}
case 44:
label=46;break;
case 45:
var $219=(($FR+8)|0);
HEAP32[(($219)>>2)]=514;
var $220=(($FR+12)|0);
HEAP32[(($220)>>2)]=5976;
label=48;break;
case 46:
var $222=(($FR+8)|0);
HEAP32[(($222)>>2)]=505;
var $223=(($FR+12)|0);
HEAP32[(($223)>>2)]=5976;
var $224=$splits_jlkozoKbhldeNcp3VkacDw;
var $225=_subInt($224,1);
$T_yu6cxgKBBXbNsTkT9cyMd4g_14=$225;
var $226=$T_yu6cxgKBBXbNsTkT9cyMd4g_14;
$splits_jlkozoKbhldeNcp3VkacDw=$226;
var $227=(($FR+8)|0);
HEAP32[(($227)>>2)]=504;
var $228=(($FR+12)|0);
HEAP32[(($228)>>2)]=5976;
var $229=$last_rIwWmKQAopGwgYFIIwiuxQ;
var $230=_addInt($229,1);
$T_yu6cxgKBBXbNsTkT9cyMd4g_15=$230;
var $231=$T_yu6cxgKBBXbNsTkT9cyMd4g_15;
$last_rIwWmKQAopGwgYFIIwiuxQ=$231;
label=17;break;
case 47:
label=48;break;
case 48:
label=49;break;
case 49:
label=50;break;
case 50:
label=51;break;
case 51:
_popFrame31();
var $237=$result0;
STACKTOP=sp;return $237;
default: assert(0, "bad label: " + label);
}
}
function _nosgetAppFilename(){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+24)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
label = 1;
while(1)switch(label){
case 1:
var $result0;
var $FR=sp;
var $1=(($FR+4)|0);
HEAP32[(($1)>>2)]=5824;
var $2=(($FR+12)|0);
HEAP32[(($2)>>2)]=6152;
var $3=(($FR+8)|0);
HEAP32[(($3)>>2)]=0;
var $4=(($FR+16)|0);
HEAP16[(($4)>>1)]=0;
_nimFrame30($FR);
$result0=0;
var $5=(($FR+8)|0);
HEAP32[(($5)>>2)]=1577;
var $6=(($FR+12)|0);
HEAP32[(($6)>>2)]=6152;
var $7=_getapplaux_Cd6LaCdd4j2y8pff6G0r9aw(6720);
$result0=$7;
var $8=(($FR+8)|0);
HEAP32[(($8)>>2)]=1583;
var $9=(($FR+12)|0);
HEAP32[(($9)>>2)]=6152;
var $10=$result0;
var $11=($10|0)!=0;
if($11){label=2;break;}else{label=3;break;}
case 2:
var $13=$result0;
var $14=(($13)|0);
var $15=(($14)|0);
var $16=HEAP32[(($15)>>2)];
var $19=$16;label=4;break;
case 3:
var $19=0;label=4;break;
case 4:
var $19;
var $20=($19|0)==0;
if($20){label=6;break;}else{label=5;break;}
case 5:
label=7;break;
case 6:
var $23=(($FR+8)|0);
HEAP32[(($23)>>2)]=1584;
var $24=(($FR+12)|0);
HEAP32[(($24)>>2)]=6152;
var $25=_getapplheuristic_Mvl1mQZZxpEWtJIYJ85UWw();
$result0=$25;
label=7;break;
case 7:
_popFrame31();
var $27=$result0;
STACKTOP=sp;return $27;
default: assert(0, "bad label: " + label);
}
}
function _nossplitFile($path0,$Result){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+24)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
label = 1;
while(1)switch(label){
case 1:
var $1;
var $2;
var $FR=sp;
var $LOC3;
var $T_yu6cxgKBBXbNsTkT9cyMd4g_16;
var $seppos0;
var $dotpos0;
var $T_yu6cxgKBBXbNsTkT9cyMd4g_20;
var $T_yu6cxgKBBXbNsTkT9cyMd4g_21;
var $T_yu6cxgKBBXbNsTkT9cyMd4g_22;
var $i_RvAXC8pcRrjQVcLzMy7Fhw;
var $HEX3Atmp_yDPmQODHSEiGYJLOLrehCg;
var $T_yu6cxgKBBXbNsTkT9cyMd4g_17;
var $res_FD5o2nBImp9bjBTg5egPNBA;
var $T_yu6cxgKBBXbNsTkT9cyMd4g_19;
var $LOC17;
var $LOC18;
var $T_yu6cxgKBBXbNsTkT9cyMd4g_18;
$1=$path0;
$2=$Result;
var $3=(($FR+4)|0);
HEAP32[(($3)>>2)]=5576;
var $4=(($FR+12)|0);
HEAP32[(($4)>>2)]=912;
var $5=(($FR+8)|0);
HEAP32[(($5)>>2)]=0;
var $6=(($FR+16)|0);
HEAP16[(($6)>>1)]=0;
_nimFrame30($FR);
var $7=(($FR+8)|0);
HEAP32[(($7)>>2)]=361;
var $8=(($FR+12)|0);
HEAP32[(($8)>>2)]=912;
$LOC3=0;
var $9=$1;
var $10=($9|0)!=0;
if($10){label=2;break;}else{label=3;break;}
case 2:
var $12=$1;
var $13=(($12)|0);
var $14=(($13)|0);
var $15=HEAP32[(($14)>>2)];
var $18=$15;label=4;break;
case 3:
var $18=0;label=4;break;
case 4:
var $18;
var $19=($18|0)==0;
var $20=($19&1);
var $21=(($20)&255);
$LOC3=$21;
var $22=$LOC3;
var $23=(($22<<24)>>24)!=0;
if($23){label=5;break;}else{label=6;break;}
case 5:
label=14;break;
case 6:
var $26=$1;
var $27=($26|0)!=0;
if($27){label=7;break;}else{label=8;break;}
case 7:
var $29=$1;
var $30=(($29)|0);
var $31=(($30)|0);
var $32=HEAP32[(($31)>>2)];
var $35=$32;label=9;break;
case 8:
var $35=0;label=9;break;
case 9:
var $35;
var $36=_subInt($35,1);
$T_yu6cxgKBBXbNsTkT9cyMd4g_16=$36;
var $37=$T_yu6cxgKBBXbNsTkT9cyMd4g_16;
var $38=$1;
var $39=(($38)|0);
var $40=(($39)|0);
var $41=HEAP32[(($40)>>2)];
var $42=($37>>>0)>($41>>>0);
if($42){label=10;break;}else{label=11;break;}
case 10:
_raiseIndexError();
label=11;break;
case 11:
var $45=$T_yu6cxgKBBXbNsTkT9cyMd4g_16;
var $46=$1;
var $47=(($46+8)|0);
var $48=(($47+$45)|0);
var $49=HEAP8[($48)];
var $50=($49&255);
var $51=($50|0)==47;
if($51){var $61=1;label=13;break;}else{label=12;break;}
case 12:
var $53=$T_yu6cxgKBBXbNsTkT9cyMd4g_16;
var $54=$1;
var $55=(($54+8)|0);
var $56=(($55+$53)|0);
var $57=HEAP8[($56)];
var $58=($57&255);
var $59=($58|0)==47;
var $61=$59;label=13;break;
case 13:
var $61;
var $62=($61&1);
var $63=(($62)&255);
$LOC3=$63;
label=14;break;
case 14:
var $65=$LOC3;
var $66=(($65<<24)>>24)!=0;
if($66){label=16;break;}else{label=15;break;}
case 15:
label=17;break;
case 16:
var $69=(($FR+8)|0);
HEAP32[(($69)>>2)]=362;
var $70=(($FR+12)|0);
HEAP32[(($70)>>2)]=912;
var $71=$1;
var $72=_copyString($71);
var $73=$2;
var $74=(($73)|0);
HEAP32[(($74)>>2)]=$72;
var $75=_copyString(6680);
var $76=$2;
var $77=(($76+4)|0);
HEAP32[(($77)>>2)]=$75;
var $78=_copyString(6680);
var $79=$2;
var $80=(($79+8)|0);
HEAP32[(($80)>>2)]=$78;
label=57;break;
case 17:
var $82=(($FR+8)|0);
HEAP32[(($82)>>2)]=364;
var $83=(($FR+12)|0);
HEAP32[(($83)>>2)]=912;
$seppos0=-1;
var $84=(($FR+8)|0);
HEAP32[(($84)>>2)]=365;
var $85=(($FR+12)|0);
HEAP32[(($85)>>2)]=912;
var $86=$1;
var $87=($86|0)!=0;
if($87){label=18;break;}else{label=19;break;}
case 18:
var $89=$1;
var $90=(($89)|0);
var $91=(($90)|0);
var $92=HEAP32[(($91)>>2)];
var $95=$92;label=20;break;
case 19:
var $95=0;label=20;break;
case 20:
var $95;
$dotpos0=$95;
$i_RvAXC8pcRrjQVcLzMy7Fhw=0;
$HEX3Atmp_yDPmQODHSEiGYJLOLrehCg=0;
var $96=(($FR+8)|0);
HEAP32[(($96)>>2)]=366;
var $97=(($FR+12)|0);
HEAP32[(($97)>>2)]=912;
var $98=$1;
var $99=($98|0)!=0;
if($99){label=21;break;}else{label=22;break;}
case 21:
var $101=$1;
var $102=(($101)|0);
var $103=(($102)|0);
var $104=HEAP32[(($103)>>2)];
var $107=$104;label=23;break;
case 22:
var $107=0;label=23;break;
case 23:
var $107;
var $108=_subInt($107,1);
$T_yu6cxgKBBXbNsTkT9cyMd4g_17=$108;
var $109=$T_yu6cxgKBBXbNsTkT9cyMd4g_17;
$HEX3Atmp_yDPmQODHSEiGYJLOLrehCg=$109;
var $110=(($FR+8)|0);
HEAP32[(($110)>>2)]=1896;
var $111=(($FR+12)|0);
HEAP32[(($111)>>2)]=3552;
var $112=$HEX3Atmp_yDPmQODHSEiGYJLOLrehCg;
$res_FD5o2nBImp9bjBTg5egPNBA=$112;
var $113=(($FR+8)|0);
HEAP32[(($113)>>2)]=1897;
var $114=(($FR+12)|0);
HEAP32[(($114)>>2)]=3552;
label=24;break;
case 24:
var $116=(($FR+8)|0);
HEAP32[(($116)>>2)]=366;
var $117=(($FR+12)|0);
HEAP32[(($117)>>2)]=912;
var $118=$res_FD5o2nBImp9bjBTg5egPNBA;
var $119=0<=($118|0);
if($119){label=26;break;}else{label=25;break;}
case 25:
label=55;break;
case 26:
var $122=(($FR+8)|0);
HEAP32[(($122)>>2)]=1898;
var $123=(($FR+12)|0);
HEAP32[(($123)>>2)]=3552;
var $124=$res_FD5o2nBImp9bjBTg5egPNBA;
$i_RvAXC8pcRrjQVcLzMy7Fhw=$124;
var $125=(($FR+8)|0);
HEAP32[(($125)>>2)]=367;
var $126=(($FR+12)|0);
HEAP32[(($126)>>2)]=912;
var $127=$i_RvAXC8pcRrjQVcLzMy7Fhw;
var $128=$1;
var $129=(($128)|0);
var $130=(($129)|0);
var $131=HEAP32[(($130)>>2)];
var $132=($127>>>0)>($131>>>0);
if($132){label=27;break;}else{label=28;break;}
case 27:
_raiseIndexError();
label=28;break;
case 28:
var $135=$i_RvAXC8pcRrjQVcLzMy7Fhw;
var $136=$1;
var $137=(($136+8)|0);
var $138=(($137+$135)|0);
var $139=HEAP8[($138)];
var $140=($139&255);
var $141=($140|0)==46;
if($141){label=30;break;}else{label=29;break;}
case 29:
label=47;break;
case 30:
var $144=(($FR+8)|0);
HEAP32[(($144)>>2)]=368;
var $145=(($FR+12)|0);
HEAP32[(($145)>>2)]=912;
$LOC17=0;
$LOC18=0;
var $146=$dotpos0;
var $147=$1;
var $148=($147|0)!=0;
if($148){label=31;break;}else{label=32;break;}
case 31:
var $150=$1;
var $151=(($150)|0);
var $152=(($151)|0);
var $153=HEAP32[(($152)>>2)];
var $156=$153;label=33;break;
case 32:
var $156=0;label=33;break;
case 33:
var $156;
var $157=($146|0)==($156|0);
var $158=($157&1);
var $159=(($158)&255);
$LOC18=$159;
var $160=$LOC18;
var $161=(($160<<24)>>24)!=0;
if($161){label=35;break;}else{label=34;break;}
case 34:
label=36;break;
case 35:
var $164=$i_RvAXC8pcRrjQVcLzMy7Fhw;
var $165=0<($164|0);
var $166=($165&1);
var $167=(($166)&255);
$LOC18=$167;
label=36;break;
case 36:
var $169=$LOC18;
$LOC17=$169;
var $170=$LOC17;
var $171=(($170<<24)>>24)!=0;
if($171){label=38;break;}else{label=37;break;}
case 37:
label=43;break;
case 38:
var $174=(($FR+8)|0);
HEAP32[(($174)>>2)]=1130;
var $175=(($FR+12)|0);
HEAP32[(($175)>>2)]=3552;
var $176=(($FR+8)|0);
HEAP32[(($176)>>2)]=369;
var $177=(($FR+12)|0);
HEAP32[(($177)>>2)]=912;
var $178=$i_RvAXC8pcRrjQVcLzMy7Fhw;
var $179=_subInt($178,1);
$T_yu6cxgKBBXbNsTkT9cyMd4g_18=$179;
var $180=$T_yu6cxgKBBXbNsTkT9cyMd4g_18;
var $181=$1;
var $182=(($181)|0);
var $183=(($182)|0);
var $184=HEAP32[(($183)>>2)];
var $185=($180>>>0)>($184>>>0);
if($185){label=39;break;}else{label=40;break;}
case 39:
_raiseIndexError();
label=40;break;
case 40:
var $188=$T_yu6cxgKBBXbNsTkT9cyMd4g_18;
var $189=$1;
var $190=(($189+8)|0);
var $191=(($190+$188)|0);
var $192=HEAP8[($191)];
var $193=($192&255);
var $194=($193|0)==47;
if($194){var $204=1;label=42;break;}else{label=41;break;}
case 41:
var $196=$T_yu6cxgKBBXbNsTkT9cyMd4g_18;
var $197=$1;
var $198=(($197+8)|0);
var $199=(($198+$196)|0);
var $200=HEAP8[($199)];
var $201=($200&255);
var $202=($201|0)==47;
var $204=$202;label=42;break;
case 42:
var $204;
var $205=$204^1;
var $206=($205&1);
var $207=(($206)&255);
$LOC17=$207;
label=43;break;
case 43:
var $209=$LOC17;
var $210=(($209<<24)>>24)!=0;
if($210){label=45;break;}else{label=44;break;}
case 44:
label=46;break;
case 45:
var $213=$i_RvAXC8pcRrjQVcLzMy7Fhw;
$dotpos0=$213;
label=46;break;
case 46:
label=54;break;
case 47:
var $216=(($FR+8)|0);
HEAP32[(($216)>>2)]=370;
var $217=(($FR+12)|0);
HEAP32[(($217)>>2)]=912;
var $218=$i_RvAXC8pcRrjQVcLzMy7Fhw;
var $219=$1;
var $220=(($219)|0);
var $221=(($220)|0);
var $222=HEAP32[(($221)>>2)];
var $223=($218>>>0)>($222>>>0);
if($223){label=48;break;}else{label=49;break;}
case 48:
_raiseIndexError();
label=49;break;
case 49:
var $226=$i_RvAXC8pcRrjQVcLzMy7Fhw;
var $227=$1;
var $228=(($227+8)|0);
var $229=(($228+$226)|0);
var $230=HEAP8[($229)];
var $231=($230&255);
var $232=($231|0)==47;
if($232){label=52;break;}else{label=50;break;}
case 50:
var $234=$i_RvAXC8pcRrjQVcLzMy7Fhw;
var $235=$1;
var $236=(($235+8)|0);
var $237=(($236+$234)|0);
var $238=HEAP8[($237)];
var $239=($238&255);
var $240=($239|0)==47;
if($240){label=52;break;}else{label=51;break;}
case 51:
label=53;break;
case 52:
var $243=(($FR+8)|0);
HEAP32[(($243)>>2)]=371;
var $244=(($FR+12)|0);
HEAP32[(($244)>>2)]=912;
var $245=$i_RvAXC8pcRrjQVcLzMy7Fhw;
$seppos0=$245;
var $246=(($FR+8)|0);
HEAP32[(($246)>>2)]=372;
var $247=(($FR+12)|0);
HEAP32[(($247)>>2)]=912;
label=56;break;
case 53:
label=54;break;
case 54:
var $250=(($FR+8)|0);
HEAP32[(($250)>>2)]=1896;
var $251=(($FR+12)|0);
HEAP32[(($251)>>2)]=3552;
var $252=$res_FD5o2nBImp9bjBTg5egPNBA;
var $253=_subInt($252,1);
$T_yu6cxgKBBXbNsTkT9cyMd4g_19=$253;
var $254=$T_yu6cxgKBBXbNsTkT9cyMd4g_19;
$res_FD5o2nBImp9bjBTg5egPNBA=$254;
label=24;break;
case 55:
label=56;break;
case 56:
var $257=(($FR+8)|0);
HEAP32[(($257)>>2)]=373;
var $258=(($FR+12)|0);
HEAP32[(($258)>>2)]=912;
var $259=$seppos0;
var $260=_subInt($259,1);
$T_yu6cxgKBBXbNsTkT9cyMd4g_20=$260;
var $261=$1;
var $262=$T_yu6cxgKBBXbNsTkT9cyMd4g_20;
var $263=_copyStrLast($261,0,$262);
var $264=$2;
var $265=(($264)|0);
HEAP32[(($265)>>2)]=$263;
var $266=(($FR+8)|0);
HEAP32[(($266)>>2)]=374;
var $267=(($FR+12)|0);
HEAP32[(($267)>>2)]=912;
var $268=$seppos0;
var $269=_addInt($268,1);
$T_yu6cxgKBBXbNsTkT9cyMd4g_21=$269;
var $270=$dotpos0;
var $271=_subInt($270,1);
$T_yu6cxgKBBXbNsTkT9cyMd4g_22=$271;
var $272=$1;
var $273=$T_yu6cxgKBBXbNsTkT9cyMd4g_21;
var $274=$T_yu6cxgKBBXbNsTkT9cyMd4g_22;
var $275=_copyStrLast($272,$273,$274);
var $276=$2;
var $277=(($276+4)|0);
HEAP32[(($277)>>2)]=$275;
var $278=(($FR+8)|0);
HEAP32[(($278)>>2)]=375;
var $279=(($FR+12)|0);
HEAP32[(($279)>>2)]=912;
var $280=$1;
var $281=$dotpos0;
var $282=_copyStr($280,$281);
var $283=$2;
var $284=(($283+8)|0);
HEAP32[(($284)>>2)]=$282;
label=57;break;
case 57:
_popFrame31();
STACKTOP=sp;return;
default: assert(0, "bad label: " + label);
}
}
function _HEX2F_BsTQv9c9anbxt9bKmR0aN1elQ($head0,$tail0){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+24)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
label = 1;
while(1)switch(label){
case 1:
var $1;
var $2;
var $result0;
var $FR=sp;
$1=$head0;
$2=$tail0;
var $3=(($FR+4)|0);
HEAP32[(($3)>>2)]=4792;
var $4=(($FR+12)|0);
HEAP32[(($4)>>2)]=912;
var $5=(($FR+8)|0);
HEAP32[(($5)>>2)]=0;
var $6=(($FR+16)|0);
HEAP16[(($6)>>1)]=0;
_nimFrame30($FR);
$result0=0;
var $7=(($FR+8)|0);
HEAP32[(($7)>>2)]=229;
var $8=(($FR+12)|0);
HEAP32[(($8)>>2)]=912;
var $9=$1;
var $10=$2;
var $11=_nosjoinPath($9,$10);
$result0=$11;
label=2;break;
case 2:
_popFrame31();
var $13=$result0;
STACKTOP=sp;return $13;
default: assert(0, "bad label: " + label);
}
}
function _oserrormsg_9cO757MdTrYxfurMy5qIoAg($errorcode0){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+24)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
label = 1;
while(1)switch(label){
case 1:
var $1;
var $result0;
var $FR=sp;
var $LOC5;
$1=$errorcode0;
var $2=(($FR+4)|0);
HEAP32[(($2)>>2)]=4160;
var $3=(($FR+12)|0);
HEAP32[(($3)>>2)]=6152;
var $4=(($FR+8)|0);
HEAP32[(($4)>>2)]=0;
var $5=(($FR+16)|0);
HEAP16[(($5)>>1)]=0;
_nimFrame30($FR);
$result0=0;
var $6=(($FR+8)|0);
HEAP32[(($6)>>2)]=118;
var $7=(($FR+12)|0);
HEAP32[(($7)>>2)]=6152;
var $8=_copyString(6680);
$result0=$8;
var $9=(($FR+8)|0);
HEAP32[(($9)>>2)]=134;
var $10=(($FR+12)|0);
HEAP32[(($10)>>2)]=6152;
var $11=(($FR+8)|0);
HEAP32[(($11)>>2)]=347;
var $12=(($FR+12)|0);
HEAP32[(($12)>>2)]=3552;
var $13=(($FR+8)|0);
HEAP32[(($13)>>2)]=134;
var $14=(($FR+12)|0);
HEAP32[(($14)>>2)]=6152;
var $15=$1;
var $16=($15|0)==0;
if($16){label=2;break;}else{label=3;break;}
case 2:
label=4;break;
case 3:
var $19=(($FR+8)|0);
HEAP32[(($19)>>2)]=135;
var $20=(($FR+12)|0);
HEAP32[(($20)>>2)]=6152;
$LOC5=0;
var $21=$1;
var $22=_strerror($21);
$LOC5=$22;
var $23=$LOC5;
var $24=_cstrToNimstr($23);
$result0=$24;
label=4;break;
case 4:
_popFrame31();
var $26=$result0;
STACKTOP=sp;return $26;
default: assert(0, "bad label: " + label);
}
}
function _raiseoserror_K9a7YBjj81Bse0N0Fg7MFIA($errorcode0,$additionalinfo0){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+24)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
label = 1;
while(1)switch(label){
case 1:
var $1;
var $2;
var $e0;
var $FR=sp;
var $LOC6;
var $LOC7;
$1=$errorcode0;
$2=$additionalinfo0;
var $3=(($FR+4)|0);
HEAP32[(($3)>>2)]=4112;
var $4=(($FR+12)|0);
HEAP32[(($4)>>2)]=6152;
var $5=(($FR+8)|0);
HEAP32[(($5)>>2)]=0;
var $6=(($FR+16)|0);
HEAP16[(($6)>>1)]=0;
_nimFrame30($FR);
$e0=0;
var $7=(($FR+8)|0);
HEAP32[(($7)>>2)]=145;
var $8=(($FR+12)|0);
HEAP32[(($8)>>2)]=6152;
var $9=_newObj(21112,24);
var $10=$9;
$e0=$10;
var $11=$e0;
var $12=(($11)|0);
var $13=(($12)|0);
var $14=(($13)|0);
var $15=(($14)|0);
HEAP32[(($15)>>2)]=22296;
var $16=(($FR+8)|0);
HEAP32[(($16)>>2)]=146;
var $17=(($FR+12)|0);
HEAP32[(($17)>>2)]=6152;
var $18=$1;
var $19=$e0;
var $20=(($19+20)|0);
HEAP32[(($20)>>2)]=$18;
var $21=(($FR+8)|0);
HEAP32[(($21)>>2)]=147;
var $22=(($FR+12)|0);
HEAP32[(($22)>>2)]=6152;
var $23=$2;
var $24=($23|0)!=0;
if($24){label=2;break;}else{label=3;break;}
case 2:
var $26=$2;
var $27=(($26)|0);
var $28=(($27)|0);
var $29=HEAP32[(($28)>>2)];
var $32=$29;label=4;break;
case 3:
var $32=0;label=4;break;
case 4:
var $32;
var $33=($32|0)==0;
if($33){label=6;break;}else{label=5;break;}
case 5:
label=7;break;
case 6:
var $36=(($FR+8)|0);
HEAP32[(($36)>>2)]=148;
var $37=(($FR+12)|0);
HEAP32[(($37)>>2)]=6152;
var $38=$1;
var $39=_oserrormsg_9cO757MdTrYxfurMy5qIoAg($38);
var $40=$e0;
var $41=(($40)|0);
var $42=(($41)|0);
var $43=(($42+12)|0);
HEAP32[(($43)>>2)]=$39;
label=8;break;
case 7:
var $45=(($FR+8)|0);
HEAP32[(($45)>>2)]=150;
var $46=(($FR+12)|0);
HEAP32[(($46)>>2)]=6152;
$LOC6=0;
$LOC7=0;
var $47=$1;
var $48=_oserrormsg_9cO757MdTrYxfurMy5qIoAg($47);
$LOC7=$48;
var $49=$LOC7;
var $50=(($49)|0);
var $51=(($50)|0);
var $52=HEAP32[(($51)>>2)];
var $53=$2;
var $54=(($53)|0);
var $55=(($54)|0);
var $56=HEAP32[(($55)>>2)];
var $57=((($52)+($56))|0);
var $58=((($57)+(18))|0);
var $59=_rawNewString($58);
$LOC6=$59;
var $60=$LOC6;
var $61=$LOC7;
_appendString($60,$61);
var $62=$LOC6;
_appendString($62,6776);
var $63=$LOC6;
var $64=$2;
_appendString($63,$64);
var $65=$LOC6;
var $66=$e0;
var $67=(($66)|0);
var $68=(($67)|0);
var $69=(($68+12)|0);
HEAP32[(($69)>>2)]=$65;
label=8;break;
case 8:
var $71=(($FR+8)|0);
HEAP32[(($71)>>2)]=151;
var $72=(($FR+12)|0);
HEAP32[(($72)>>2)]=6152;
var $73=$e0;
var $74=(($73)|0);
var $75=(($74)|0);
var $76=(($75+12)|0);
var $77=HEAP32[(($76)>>2)];
var $78=($77|0)!=0;
if($78){label=9;break;}else{label=10;break;}
case 9:
var $80=$e0;
var $81=(($80)|0);
var $82=(($81)|0);
var $83=(($82+12)|0);
var $84=HEAP32[(($83)>>2)];
var $85=(($84)|0);
var $86=(($85)|0);
var $87=HEAP32[(($86)>>2)];
var $88=($87|0)==0;
if($88){label=11;break;}else{label=10;break;}
case 10:
label=12;break;
case 11:
var $91=(($FR+8)|0);
HEAP32[(($91)>>2)]=152;
var $92=(($FR+12)|0);
HEAP32[(($92)>>2)]=6152;
var $93=_copyString(6744);
var $94=$e0;
var $95=(($94)|0);
var $96=(($95)|0);
var $97=(($96+12)|0);
HEAP32[(($97)>>2)]=$93;
label=12;break;
case 12:
var $99=(($FR+8)|0);
HEAP32[(($99)>>2)]=153;
var $100=(($FR+12)|0);
HEAP32[(($100)>>2)]=6152;
var $101=$e0;
var $102=$101;
_raiseException($102,4032);
_popFrame31();
STACKTOP=sp;return;
default: assert(0, "bad label: " + label);
}
}
function _oslasterror_pMOMIZAQaKFp1XoL58mjVg(){
var label=0;
var sp=STACKTOP; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
var $result0;
$result0=0;
var $1=___errno_location();
var $2=HEAP32[(($1)>>2)];
$result0=$2;
var $3=$result0;
STACKTOP=sp;return $3;
}
function _nosmoveFile($source0,$dest0){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+24)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
label = 1;
while(1)switch(label){
case 1:
var $1;
var $2;
var $FR=sp;
var $LOC3;
var $LOC6;
var $LOC7;
var $LOC8;
$1=$source0;
$2=$dest0;
var $3=(($FR+4)|0);
HEAP32[(($3)>>2)]=3936;
var $4=(($FR+12)|0);
HEAP32[(($4)>>2)]=6152;
var $5=(($FR+8)|0);
HEAP32[(($5)>>2)]=0;
var $6=(($FR+16)|0);
HEAP16[(($6)>>1)]=0;
_nimFrame30($FR);
var $7=(($FR+8)|0);
HEAP32[(($7)>>2)]=630;
var $8=(($FR+12)|0);
HEAP32[(($8)>>2)]=6152;
var $9=(($FR+8)|0);
HEAP32[(($9)>>2)]=347;
var $10=(($FR+12)|0);
HEAP32[(($10)>>2)]=3552;
var $11=(($FR+8)|0);
HEAP32[(($11)>>2)]=630;
var $12=(($FR+12)|0);
HEAP32[(($12)>>2)]=6152;
$LOC3=0;
var $13=$1;
var $14=(($13+8)|0);
var $15=(($14)|0);
var $16=$2;
var $17=(($16+8)|0);
var $18=(($17)|0);
var $19=_rename($15,$18);
$LOC3=$19;
var $20=$LOC3;
var $21=($20|0)==0;
if($21){label=2;break;}else{label=3;break;}
case 2:
label=4;break;
case 3:
var $24=(($FR+8)|0);
HEAP32[(($24)>>2)]=631;
var $25=(($FR+12)|0);
HEAP32[(($25)>>2)]=6152;
$LOC6=0;
var $26=_oslasterror_pMOMIZAQaKFp1XoL58mjVg();
$LOC6=$26;
$LOC7=0;
var $27=___errno_location();
var $28=HEAP32[(($27)>>2)];
var $29=_strerror($28);
$LOC7=$29;
$LOC8=0;
var $30=$LOC7;
var $31=_cstrToNimstr($30);
$LOC8=$31;
var $32=$LOC6;
var $33=$LOC8;
_raiseoserror_K9a7YBjj81Bse0N0Fg7MFIA($32,$33);
label=4;break;
case 4:
_popFrame31();
STACKTOP=sp;return;
default: assert(0, "bad label: " + label);
}
}
function _stdlib_osInit000(){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+24)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
var $FR=sp;
var $1=(($FR+4)|0);
HEAP32[(($1)>>2)]=3872;
var $2=(($FR+12)|0);
HEAP32[(($2)>>2)]=6152;
var $3=(($FR+8)|0);
HEAP32[(($3)>>2)]=0;
var $4=(($FR+16)|0);
HEAP16[(($4)>>1)]=0;
_nimFrame30($FR);
_popFrame31();
STACKTOP=sp;return;
}
function _stdlib_osDatInit000(){
var label=0;
return;
}
function _nimFrame30($s0){
var label=0;
var sp=STACKTOP; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
label = 1;
while(1)switch(label){
case 1:
var $1;
var $LOC1;
$1=$s0;
$LOC1=0;
var $2=HEAP32[((16016)>>2)];
var $3=($2|0)==0;
if($3){label=3;break;}else{label=2;break;}
case 2:
label=4;break;
case 3:
$LOC1=0;
label=5;break;
case 4:
var $7=HEAP32[((16016)>>2)];
var $8=(($7+18)|0);
var $9=HEAP16[(($8)>>1)];
var $10=(($9<<16)>>16);
var $11=((($10)+(1))|0);
var $12=(($11)&65535);
var $13=(($12<<16)>>16);
$LOC1=$13;
label=5;break;
case 5:
var $15=$LOC1;
var $16=(($15)&65535);
var $17=$1;
var $18=(($17+18)|0);
HEAP16[(($18)>>1)]=$16;
var $19=HEAP32[((16016)>>2)];
var $20=$1;
var $21=(($20)|0);
HEAP32[(($21)>>2)]=$19;
var $22=$1;
HEAP32[((16016)>>2)]=$22;
var $23=$1;
var $24=(($23+18)|0);
var $25=HEAP16[(($24)>>1)];
var $26=(($25<<16)>>16);
var $27=($26|0)==2000;
if($27){label=7;break;}else{label=6;break;}
case 6:
label=8;break;
case 7:
_stackoverflow_II46IjNZztN9bmbxUD8dt8g();
label=8;break;
case 8:
STACKTOP=sp;return;
default: assert(0, "bad label: " + label);
}
}
function _addInt($a0,$b0){
var label=0;
var sp=STACKTOP; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
label = 1;
while(1)switch(label){
case 1:
var $1;
var $2;
var $result0;
var $LOC3;
$1=$a0;
$2=$b0;
$result0=0;
var $3=$1;
var $4=$2;
var $5=((($3)+($4))|0);
$result0=$5;
$LOC3=0;
var $6=$result0;
var $7=$1;
var $8=$6^$7;
var $9=0<=($8|0);
var $10=($9&1);
var $11=(($10)&255);
$LOC3=$11;
var $12=$LOC3;
var $13=(($12<<24)>>24)!=0;
if($13){label=2;break;}else{label=3;break;}
case 2:
label=4;break;
case 3:
var $16=$result0;
var $17=$2;
var $18=$16^$17;
var $19=0<=($18|0);
var $20=($19&1);
var $21=(($20)&255);
$LOC3=$21;
label=4;break;
case 4:
var $23=$LOC3;
var $24=(($23<<24)>>24)!=0;
if($24){label=6;break;}else{label=5;break;}
case 5:
label=7;break;
case 6:
label=8;break;
case 7:
_raiseOverflow();
label=8;break;
case 8:
var $29=$result0;
STACKTOP=sp;return $29;
default: assert(0, "bad label: " + label);
}
}
function _chckRange($i0,$a0,$b0){
var label=0;
var sp=STACKTOP; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
label = 1;
while(1)switch(label){
case 1:
var $1;
var $2;
var $3;
var $result0;
var $LOC3;
$1=$i0;
$2=$a0;
$3=$b0;
$result0=0;
$LOC3=0;
var $4=$2;
var $5=$1;
var $6=($4|0)<=($5|0);
var $7=($6&1);
var $8=(($7)&255);
$LOC3=$8;
var $9=$LOC3;
var $10=(($9<<24)>>24)!=0;
if($10){label=3;break;}else{label=2;break;}
case 2:
label=4;break;
case 3:
var $13=$1;
var $14=$3;
var $15=($13|0)<=($14|0);
var $16=($15&1);
var $17=(($16)&255);
$LOC3=$17;
label=4;break;
case 4:
var $19=$LOC3;
var $20=(($19<<24)>>24)!=0;
if($20){label=6;break;}else{label=5;break;}
case 5:
label=7;break;
case 6:
var $23=$1;
$result0=$23;
label=9;break;
case 7:
var $25=$1;
var $26$0=$25;
var $26$1=((((($25|0)<0))|0)?-1:0);
_raiseRangeError($26$0,$26$1);
label=8;break;
case 8:
label=9;break;
case 9:
var $29=$result0;
STACKTOP=sp;return $29;
default: assert(0, "bad label: " + label);
}
}
function _popFrame31(){
var label=0;
var $1=HEAP32[((16016)>>2)];
var $2=(($1)|0);
var $3=HEAP32[(($2)>>2)];
HEAP32[((16016)>>2)]=$3;
return;
}
function _HEX3DHEX3D_9ccNWqrTIE9bcAqE2Q0ro7zgsystem($x0,$y0){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+24)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
label = 1;
while(1)switch(label){
case 1:
var $1;
var $2;
var $result0;
var $FR=sp;
var $LOC6;
var $LOC11;
$1=$x0;
$2=$y0;
var $3=(($FR+4)|0);
HEAP32[(($3)>>2)]=3824;
var $4=(($FR+12)|0);
HEAP32[(($4)>>2)]=3552;
var $5=(($FR+8)|0);
HEAP32[(($5)>>2)]=0;
var $6=(($FR+16)|0);
HEAP16[(($6)>>1)]=0;
_nimFrame30($FR);
$result0=0;
var $7=(($FR+8)|0);
HEAP32[(($7)>>2)]=3706;
var $8=(($FR+12)|0);
HEAP32[(($8)>>2)]=3552;
var $9=$1;
var $10=$2;
var $11=($9|0)==($10|0);
if($11){label=3;break;}else{label=2;break;}
case 2:
label=4;break;
case 3:
$result0=1;
label=11;break;
case 4:
var $15=(($FR+8)|0);
HEAP32[(($15)>>2)]=3707;
var $16=(($FR+12)|0);
HEAP32[(($16)>>2)]=3552;
$LOC6=0;
var $17=$1;
var $18=($17|0)==0;
var $19=($18&1);
var $20=(($19)&255);
$LOC6=$20;
var $21=$LOC6;
var $22=(($21<<24)>>24)!=0;
if($22){label=5;break;}else{label=6;break;}
case 5:
label=7;break;
case 6:
var $25=$2;
var $26=($25|0)==0;
var $27=($26&1);
var $28=(($27)&255);
$LOC6=$28;
label=7;break;
case 7:
var $30=$LOC6;
var $31=(($30<<24)>>24)!=0;
if($31){label=9;break;}else{label=8;break;}
case 8:
label=10;break;
case 9:
$result0=0;
label=11;break;
case 10:
var $35=(($FR+8)|0);
HEAP32[(($35)>>2)]=3708;
var $36=(($FR+12)|0);
HEAP32[(($36)>>2)]=3552;
$LOC11=0;
var $37=$1;
var $38=$2;
var $39=_strcmp($37,$38);
$LOC11=$39;
var $40=$LOC11;
var $41=($40|0)==0;
var $42=($41&1);
var $43=(($42)&255);
$result0=$43;
label=11;break;
case 11:
_popFrame31();
var $45=$result0;
STACKTOP=sp;return $45;
default: assert(0, "bad label: " + label);
}
}
function _appendString($dest0,$src0){
var label=0;
var sp=STACKTOP; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
var $1;
var $2;
$1=$dest0;
$2=$src0;
var $3=$1;
var $4=(($3)|0);
var $5=(($4)|0);
var $6=HEAP32[(($5)>>2)];
var $7=(($6)|0);
var $8=$1;
var $9=(($8+8)|0);
var $10=(($9+$7)|0);
var $11=$2;
var $12=(($11+8)|0);
var $13=(($12)|0);
var $14=$2;
var $15=(($14)|0);
var $16=(($15)|0);
var $17=HEAP32[(($16)>>2)];
var $18=((($17)+(1))|0);
_copymem_fPlwH3r9agN9aEHB6yCPMh0wsystem($10,$13,$18);
var $19=$2;
var $20=(($19)|0);
var $21=(($20)|0);
var $22=HEAP32[(($21)>>2)];
var $23=$1;
var $24=(($23)|0);
var $25=(($24)|0);
var $26=HEAP32[(($25)>>2)];
var $27=((($26)+($22))|0);
HEAP32[(($25)>>2)]=$27;
STACKTOP=sp;return;
}
function _appendChar($dest0,$c0){
var label=0;
var sp=STACKTOP; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
var $1;
var $2;
$1=$dest0;
$2=$c0;
var $3=$2;
var $4=$1;
var $5=(($4)|0);
var $6=(($5)|0);
var $7=HEAP32[(($6)>>2)];
var $8=(($7)|0);
var $9=$1;
var $10=(($9+8)|0);
var $11=(($10+$8)|0);
HEAP8[($11)]=$3;
var $12=$1;
var $13=(($12)|0);
var $14=(($13)|0);
var $15=HEAP32[(($14)>>2)];
var $16=((($15)+(1))|0);
var $17=(($16)|0);
var $18=$1;
var $19=(($18+8)|0);
var $20=(($19+$17)|0);
HEAP8[($20)]=0;
var $21=$1;
var $22=(($21)|0);
var $23=(($22)|0);
var $24=HEAP32[(($23)>>2)];
var $25=((($24)+(1))|0);
HEAP32[(($23)>>2)]=$25;
STACKTOP=sp;return;
}
function _subInt($a0,$b0){
var label=0;
var sp=STACKTOP; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
label = 1;
while(1)switch(label){
case 1:
var $1;
var $2;
var $result0;
var $LOC3;
$1=$a0;
$2=$b0;
$result0=0;
var $3=$1;
var $4=$2;
var $5=((($3)-($4))|0);
$result0=$5;
$LOC3=0;
var $6=$result0;
var $7=$1;
var $8=$6^$7;
var $9=0<=($8|0);
var $10=($9&1);
var $11=(($10)&255);
$LOC3=$11;
var $12=$LOC3;
var $13=(($12<<24)>>24)!=0;
if($13){label=2;break;}else{label=3;break;}
case 2:
label=4;break;
case 3:
var $16=$result0;
var $17=$2;
var $18=$17^-1;
var $19=$16^$18;
var $20=0<=($19|0);
var $21=($20&1);
var $22=(($21)&255);
$LOC3=$22;
label=4;break;
case 4:
var $24=$LOC3;
var $25=(($24<<24)>>24)!=0;
if($25){label=6;break;}else{label=5;break;}
case 5:
label=7;break;
case 6:
label=8;break;
case 7:
_raiseOverflow();
label=8;break;
case 8:
var $30=$result0;
STACKTOP=sp;return $30;
default: assert(0, "bad label: " + label);
}
}
function _copymem_fPlwH3r9agN9aEHB6yCPMh0wsystem($dest0,$source0,$size0){
var label=0;
var sp=STACKTOP; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
var $1;
var $2;
var $3;
var $LOC1;
$1=$dest0;
$2=$source0;
$3=$size0;
$LOC1=0;
var $4=$1;
var $5=$2;
var $6=$3;
assert($6 % 1 === 0);(_memcpy($4, $5, $6)|0);
$LOC1=$4;
STACKTOP=sp;return;
}
function _getlocaltime_Ql5lAb5s0QPmy9b8QhS3ucg_2($t0,$Result){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+32)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
label = 1;
while(1)switch(label){
case 1:
var $1;
var $2;
var $a0=sp;
var $lt0;
var $FR=(sp)+(8);
$1=$t0;
$2=$Result;
var $3=(($FR+4)|0);
HEAP32[(($3)>>2)]=4336;
var $4=(($FR+12)|0);
HEAP32[(($4)>>2)]=5712;
var $5=(($FR+8)|0);
HEAP32[(($5)>>2)]=0;
var $6=(($FR+16)|0);
HEAP16[(($6)>>1)]=0;
_nimFrame62($FR);
var $7=(($FR+8)|0);
HEAP32[(($7)>>2)]=509;
var $8=(($FR+12)|0);
HEAP32[(($8)>>2)]=5712;
var $9=$1;
HEAP32[(($a0)>>2)]=$9;
var $10=(($FR+8)|0);
HEAP32[(($10)>>2)]=510;
var $11=(($FR+12)|0);
HEAP32[(($11)>>2)]=5712;
var $12=_localtime($a0);
$lt0=$12;
var $13=(($FR+8)|0);
HEAP32[(($13)>>2)]=511;
var $14=(($FR+12)|0);
HEAP32[(($14)>>2)]=5712;
var $15=$lt0;
var $16=($15|0)==0;
if($16){label=3;break;}else{label=2;break;}
case 2:
label=4;break;
case 3:
_failedassertimpl_aDmpBTs9cPuXp0Mp9cfiNeyA(8208);
label=4;break;
case 4:
var $20=(($FR+8)|0);
HEAP32[(($20)>>2)]=512;
var $21=(($FR+12)|0);
HEAP32[(($21)>>2)]=5712;
var $22=$2;
var $23=$22;
_chckNil($23);
var $24=$2;
var $25=$24;
_genericReset($25,20056);
var $26=$2;
var $27=(($26)|0);
var $28=(($27)|0);
HEAP32[(($28)>>2)]=20056;
var $29=$lt0;
var $30=$2;
_tmtotimeinfo_qFsEbGfYkdT2YiBOfTVRZQ($29,1,$30);
_popFrame63();
STACKTOP=sp;return;
default: assert(0, "bad label: " + label);
}
}
function _gettimezone_mKxN2AZMCSmCGOUS2uUP7w(){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+24)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
label = 1;
while(1)switch(label){
case 1:
var $result0;
var $FR=sp;
var $1=(($FR+4)|0);
HEAP32[(($1)>>2)]=5224;
var $2=(($FR+12)|0);
HEAP32[(($2)>>2)]=5712;
var $3=(($FR+8)|0);
HEAP32[(($3)>>2)]=0;
var $4=(($FR+16)|0);
HEAP16[(($4)>>1)]=0;
_nimFrame62($FR);
$result0=0;
var $5=(($FR+8)|0);
HEAP32[(($5)>>2)]=553;
var $6=(($FR+12)|0);
HEAP32[(($6)>>2)]=5712;
var $7=HEAP32[((_timezone)>>2)];
$result0=$7;
label=2;break;
case 2:
_popFrame63();
var $9=$result0;
STACKTOP=sp;return $9;
default: assert(0, "bad label: " + label);
}
}
function _tmtotimeinfo_qFsEbGfYkdT2YiBOfTVRZQ($tm0,$local0,$Result){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+72)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
label = 1;
while(1)switch(label){
case 1:
var $1;
var $2;
var $3;
var $LOC1=sp;
var $T_6NbDwwj5FY059b1gz2AsAZQ_82;
var $FR=(sp)+(48);
$1=$tm0;
$2=$local0;
$3=$Result;
var $4=(($FR+4)|0);
HEAP32[(($4)>>2)]=4984;
var $5=(($FR+12)|0);
HEAP32[(($5)>>2)]=5712;
var $6=(($FR+8)|0);
HEAP32[(($6)>>2)]=0;
var $7=(($FR+16)|0);
HEAP16[(($7)>>1)]=0;
_nimFrame62($FR);
var $8=(($FR+8)|0);
HEAP32[(($8)>>2)]=461;
var $9=(($FR+12)|0);
HEAP32[(($9)>>2)]=5712;
var $10=(($LOC1)|0);
var $11=(($10)|0);
HEAP32[(($11)>>2)]=20056;
var $12=$LOC1;
_memset($12, 0, 44)|0;
var $13=(($LOC1)|0);
var $14=(($13)|0);
HEAP32[(($14)>>2)]=20056;
var $15=$1;
var $16=(($15)|0);
var $17=HEAP32[(($16)>>2)];
var $18=_chckRange66($17,0,61);
var $19=(($LOC1+4)|0);
HEAP32[(($19)>>2)]=$18;
var $20=$1;
var $21=(($20+4)|0);
var $22=HEAP32[(($21)>>2)];
var $23=_chckRange66($22,0,59);
var $24=(($LOC1+8)|0);
HEAP32[(($24)>>2)]=$23;
var $25=$1;
var $26=(($25+8)|0);
var $27=HEAP32[(($26)>>2)];
var $28=_chckRange66($27,0,23);
var $29=(($LOC1+12)|0);
HEAP32[(($29)>>2)]=$28;
var $30=$1;
var $31=(($30+12)|0);
var $32=HEAP32[(($31)>>2)];
var $33=_chckRange66($32,1,31);
var $34=(($LOC1+16)|0);
HEAP32[(($34)>>2)]=$33;
var $35=$1;
var $36=(($35+16)|0);
var $37=HEAP32[(($36)>>2)];
var $38=_chckRange66($37,0,11);
var $39=(($38)&255);
var $40=(($LOC1+20)|0);
HEAP8[($40)]=$39;
var $41=(($FR+8)|0);
HEAP32[(($41)>>2)]=469;
var $42=(($FR+12)|0);
HEAP32[(($42)>>2)]=5712;
var $43=$1;
var $44=(($43+20)|0);
var $45=HEAP32[(($44)>>2)];
var $46=_addInt64($45,1900);
$T_6NbDwwj5FY059b1gz2AsAZQ_82=$46;
var $47=$T_6NbDwwj5FY059b1gz2AsAZQ_82;
var $48=(($LOC1+24)|0);
HEAP32[(($48)>>2)]=$47;
var $49=$1;
var $50=(($49+24)|0);
var $51=HEAP32[(($50)>>2)];
var $52=($51>>>0)>6;
if($52){label=2;break;}else{label=3;break;}
case 2:
_raiseIndexError();
label=3;break;
case 3:
var $55=$1;
var $56=(($55+24)|0);
var $57=HEAP32[(($56)>>2)];
var $58=(($57)|0);
var $59=((8+$58)|0);
var $60=HEAP8[($59)];
var $61=(($LOC1+28)|0);
HEAP8[($61)]=$60;
var $62=$1;
var $63=(($62+28)|0);
var $64=HEAP32[(($63)>>2)];
var $65=_chckRange66($64,0,365);
var $66=(($LOC1+32)|0);
HEAP32[(($66)>>2)]=$65;
var $67=(($FR+8)|0);
HEAP32[(($67)>>2)]=472;
var $68=(($FR+12)|0);
HEAP32[(($68)>>2)]=5712;
var $69=$1;
var $70=(($69+32)|0);
var $71=HEAP32[(($70)>>2)];
var $72=0<($71|0);
var $73=($72&1);
var $74=(($73)&255);
var $75=(($LOC1+36)|0);
HEAP8[($75)]=$74;
var $76=(($FR+8)|0);
HEAP32[(($76)>>2)]=473;
var $77=(($FR+12)|0);
HEAP32[(($77)>>2)]=5712;
var $78=$2;
var $79=(($78<<24)>>24)!=0;
if($79){label=5;break;}else{label=4;break;}
case 4:
label=6;break;
case 5:
var $82=_gettimezone_mKxN2AZMCSmCGOUS2uUP7w();
var $83=(($LOC1+40)|0);
HEAP32[(($83)>>2)]=$82;
label=7;break;
case 6:
var $85=(($LOC1+40)|0);
HEAP32[(($85)>>2)]=0;
label=7;break;
case 7:
var $87=$3;
var $88=$87;
var $89=$LOC1;
assert(44 % 1 === 0);(_memcpy($88, $89, 44)|0);
_popFrame63();
STACKTOP=sp;return;
default: assert(0, "bad label: " + label);
}
}
function _gettime_wqmoaGqnr3gMTpWruGQ3FA(){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+24)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
label = 1;
while(1)switch(label){
case 1:
var $result0;
var $FR=sp;
var $1=(($FR+4)|0);
HEAP32[(($1)>>2)]=4520;
var $2=(($FR+12)|0);
HEAP32[(($2)>>2)]=5712;
var $3=(($FR+8)|0);
HEAP32[(($3)>>2)]=0;
var $4=(($FR+16)|0);
HEAP16[(($4)>>1)]=0;
_nimFrame62($FR);
$result0=0;
var $5=(($FR+8)|0);
HEAP32[(($5)>>2)]=507;
var $6=(($FR+12)|0);
HEAP32[(($6)>>2)]=5712;
var $7=_time(0);
$result0=$7;
label=2;break;
case 2:
_popFrame63();
var $9=$result0;
STACKTOP=sp;return $9;
default: assert(0, "bad label: " + label);
}
}
function _ntgetDateStr(){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+72)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
var $result0;
var $ti0=sp;
var $LOC1;
var $LOC2;
var $LOC3;
var $T_6NbDwwj5FY059b1gz2AsAZQ_93;
var $LOC4;
var $LOC5;
var $FR=(sp)+(48);
var $1=(($FR+4)|0);
HEAP32[(($1)>>2)]=3752;
var $2=(($FR+12)|0);
HEAP32[(($2)>>2)]=5712;
var $3=(($FR+8)|0);
HEAP32[(($3)>>2)]=0;
var $4=(($FR+16)|0);
HEAP16[(($4)>>1)]=0;
_nimFrame62($FR);
$result0=0;
var $5=$ti0;
_memset($5, 0, 44)|0;
var $6=(($ti0)|0);
var $7=(($6)|0);
HEAP32[(($7)>>2)]=20056;
var $8=(($FR+8)|0);
HEAP32[(($8)>>2)]=643;
var $9=(($FR+12)|0);
HEAP32[(($9)>>2)]=5712;
$LOC1=0;
var $10=_gettime_wqmoaGqnr3gMTpWruGQ3FA();
$LOC1=$10;
var $11=$ti0;
_chckNil($11);
var $12=$ti0;
_memset($12, 0, 44)|0;
var $13=(($ti0)|0);
var $14=(($13)|0);
HEAP32[(($14)>>2)]=20056;
var $15=$LOC1;
_getlocaltime_Ql5lAb5s0QPmy9b8QhS3ucg_2($15,$ti0);
var $16=(($FR+8)|0);
HEAP32[(($16)>>2)]=644;
var $17=(($FR+12)|0);
HEAP32[(($17)>>2)]=5712;
$LOC2=0;
$LOC3=0;
var $18=(($ti0+24)|0);
var $19=HEAP32[(($18)>>2)];
var $20=_nimIntToStr($19);
$LOC3=$20;
var $21=(($ti0+20)|0);
var $22=HEAP8[($21)];
var $23=($22&255);
var $24=_addInt64($23,1);
$T_6NbDwwj5FY059b1gz2AsAZQ_93=$24;
$LOC4=0;
var $25=$T_6NbDwwj5FY059b1gz2AsAZQ_93;
var $26=_nsuIntToStr($25,2);
$LOC4=$26;
var $27=(($FR+8)|0);
HEAP32[(($27)>>2)]=645;
var $28=(($FR+12)|0);
HEAP32[(($28)>>2)]=5712;
$LOC5=0;
var $29=(($ti0+16)|0);
var $30=HEAP32[(($29)>>2)];
var $31=_nsuIntToStr($30,2);
$LOC5=$31;
var $32=$LOC3;
var $33=(($32)|0);
var $34=(($33)|0);
var $35=HEAP32[(($34)>>2)];
var $36=$LOC4;
var $37=(($36)|0);
var $38=(($37)|0);
var $39=HEAP32[(($38)>>2)];
var $40=((($35)+($39))|0);
var $41=$LOC5;
var $42=(($41)|0);
var $43=(($42)|0);
var $44=HEAP32[(($43)>>2)];
var $45=((($40)+($44))|0);
var $46=((($45)+(2))|0);
var $47=_rawNewString($46);
$LOC2=$47;
var $48=$LOC2;
var $49=$LOC3;
_appendString68($48,$49);
var $50=$LOC2;
_appendChar69($50,45);
var $51=$LOC2;
var $52=$LOC4;
_appendString68($51,$52);
var $53=$LOC2;
_appendChar69($53,45);
var $54=$LOC2;
var $55=$LOC5;
_appendString68($54,$55);
var $56=$LOC2;
$result0=$56;
_popFrame63();
var $57=$result0;
STACKTOP=sp;return $57;
}
function _ntgetClockStr(){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+72)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
var $result0;
var $ti0=sp;
var $LOC1;
var $LOC2;
var $LOC3;
var $LOC4;
var $LOC5;
var $FR=(sp)+(48);
var $1=(($FR+4)|0);
HEAP32[(($1)>>2)]=3736;
var $2=(($FR+12)|0);
HEAP32[(($2)>>2)]=5712;
var $3=(($FR+8)|0);
HEAP32[(($3)>>2)]=0;
var $4=(($FR+16)|0);
HEAP16[(($4)>>1)]=0;
_nimFrame62($FR);
$result0=0;
var $5=$ti0;
_memset($5, 0, 44)|0;
var $6=(($ti0)|0);
var $7=(($6)|0);
HEAP32[(($7)>>2)]=20056;
var $8=(($FR+8)|0);
HEAP32[(($8)>>2)]=649;
var $9=(($FR+12)|0);
HEAP32[(($9)>>2)]=5712;
$LOC1=0;
var $10=_gettime_wqmoaGqnr3gMTpWruGQ3FA();
$LOC1=$10;
var $11=$ti0;
_chckNil($11);
var $12=$ti0;
_memset($12, 0, 44)|0;
var $13=(($ti0)|0);
var $14=(($13)|0);
HEAP32[(($14)>>2)]=20056;
var $15=$LOC1;
_getlocaltime_Ql5lAb5s0QPmy9b8QhS3ucg_2($15,$ti0);
var $16=(($FR+8)|0);
HEAP32[(($16)>>2)]=650;
var $17=(($FR+12)|0);
HEAP32[(($17)>>2)]=5712;
$LOC2=0;
$LOC3=0;
var $18=(($ti0+12)|0);
var $19=HEAP32[(($18)>>2)];
var $20=_nsuIntToStr($19,2);
$LOC3=$20;
$LOC4=0;
var $21=(($ti0+8)|0);
var $22=HEAP32[(($21)>>2)];
var $23=_nsuIntToStr($22,2);
$LOC4=$23;
var $24=(($FR+8)|0);
HEAP32[(($24)>>2)]=651;
var $25=(($FR+12)|0);
HEAP32[(($25)>>2)]=5712;
$LOC5=0;
var $26=(($ti0+4)|0);
var $27=HEAP32[(($26)>>2)];
var $28=_nsuIntToStr($27,2);
$LOC5=$28;
var $29=$LOC3;
var $30=(($29)|0);
var $31=(($30)|0);
var $32=HEAP32[(($31)>>2)];
var $33=$LOC4;
var $34=(($33)|0);
var $35=(($34)|0);
var $36=HEAP32[(($35)>>2)];
var $37=((($32)+($36))|0);
var $38=$LOC5;
var $39=(($38)|0);
var $40=(($39)|0);
var $41=HEAP32[(($40)>>2)];
var $42=((($37)+($41))|0);
var $43=((($42)+(2))|0);
var $44=_rawNewString($43);
$LOC2=$44;
var $45=$LOC2;
var $46=$LOC3;
_appendString68($45,$46);
var $47=$LOC2;
_appendChar69($47,58);
var $48=$LOC2;
var $49=$LOC4;
_appendString68($48,$49);
var $50=$LOC2;
_appendChar69($50,58);
var $51=$LOC2;
var $52=$LOC5;
_appendString68($51,$52);
var $53=$LOC2;
$result0=$53;
_popFrame63();
var $54=$result0;
STACKTOP=sp;return $54;
}
function _stdlib_timesInit000(){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+24)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
var $FR=sp;
var $1=(($FR+4)|0);
HEAP32[(($1)>>2)]=3008;
var $2=(($FR+12)|0);
HEAP32[(($2)>>2)]=5712;
var $3=(($FR+8)|0);
HEAP32[(($3)>>2)]=0;
var $4=(($FR+16)|0);
HEAP16[(($4)>>1)]=0;
_nimFrame62($FR);
_popFrame63();
STACKTOP=sp;return;
}
function _stdlib_timesDatInit000(){
var label=0;
var sp=STACKTOP; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
label = 1;
while(1)switch(label){
case 1:
var $T_6NbDwwj5FY059b1gz2AsAZQ_57;
var $T_6NbDwwj5FY059b1gz2AsAZQ_60;
HEAP32[((20056)>>2)]=44;
HEAP8[(20060)]=17;
HEAP32[((20064)>>2)]=22328;
HEAP8[(20061)]=1;
HEAP32[((9768)>>2)]=9832;
HEAP8[(9832)]=1;
HEAP32[((9836)>>2)]=4;
HEAP32[((9840)>>2)]=20888;
HEAP32[((9844)>>2)]=2256;
HEAP32[((9772)>>2)]=9856;
HEAP8[(9856)]=1;
HEAP32[((9860)>>2)]=8;
HEAP32[((9864)>>2)]=21336;
HEAP32[((9868)>>2)]=2240;
HEAP32[((9776)>>2)]=9880;
HEAP8[(9880)]=1;
HEAP32[((9884)>>2)]=12;
HEAP32[((9888)>>2)]=21624;
HEAP32[((9892)>>2)]=2216;
HEAP32[((9780)>>2)]=9904;
HEAP8[(9904)]=1;
HEAP32[((9908)>>2)]=16;
HEAP32[((9912)>>2)]=21848;
HEAP32[((9916)>>2)]=2168;
HEAP32[((9784)>>2)]=9928;
HEAP32[((21432)>>2)]=1;
HEAP8[(21436)]=14;
HEAP32[((21440)>>2)]=0;
HEAP8[(21437)]=3;
$T_6NbDwwj5FY059b1gz2AsAZQ_57=0;
label=2;break;
case 2:
var $2=$T_6NbDwwj5FY059b1gz2AsAZQ_57;
var $3=($2|0)<12;
if($3){label=3;break;}else{label=5;break;}
case 3:
var $5=$T_6NbDwwj5FY059b1gz2AsAZQ_57;
var $6=((($5)+(6))|0);
var $7=((9808+((($6)*(24))&-1))|0);
var $8=(($7)|0);
HEAP8[($8)]=1;
var $9=$T_6NbDwwj5FY059b1gz2AsAZQ_57;
var $10=$T_6NbDwwj5FY059b1gz2AsAZQ_57;
var $11=((($10)+(6))|0);
var $12=((9808+((($11)*(24))&-1))|0);
var $13=(($12+4)|0);
HEAP32[(($13)>>2)]=$9;
var $14=$T_6NbDwwj5FY059b1gz2AsAZQ_57;
var $15=((72+($14<<2))|0);
var $16=HEAP32[(($15)>>2)];
var $17=$T_6NbDwwj5FY059b1gz2AsAZQ_57;
var $18=((($17)+(6))|0);
var $19=((9808+((($18)*(24))&-1))|0);
var $20=(($19+12)|0);
HEAP32[(($20)>>2)]=$16;
var $21=$T_6NbDwwj5FY059b1gz2AsAZQ_57;
var $22=((($21)+(6))|0);
var $23=((9808+((($22)*(24))&-1))|0);
var $24=$T_6NbDwwj5FY059b1gz2AsAZQ_57;
var $25=((9720+($24<<2))|0);
HEAP32[(($25)>>2)]=$23;
label=4;break;
case 4:
var $27=$T_6NbDwwj5FY059b1gz2AsAZQ_57;
var $28=((($27)+(1))|0);
$T_6NbDwwj5FY059b1gz2AsAZQ_57=$28;
label=2;break;
case 5:
HEAP32[((10256)>>2)]=12;
HEAP8[(10240)]=2;
HEAP32[((10260)>>2)]=9720;
HEAP32[((21444)>>2)]=10240;
HEAP8[(9928)]=1;
HEAP32[((9932)>>2)]=20;
HEAP32[((9936)>>2)]=21432;
HEAP32[((9940)>>2)]=2128;
HEAP32[((9788)>>2)]=10264;
HEAP8[(10264)]=1;
HEAP32[((10268)>>2)]=24;
HEAP32[((10272)>>2)]=20120;
HEAP32[((10276)>>2)]=2104;
HEAP32[((9792)>>2)]=10288;
HEAP32[((21016)>>2)]=1;
HEAP8[(21020)]=14;
HEAP32[((21024)>>2)]=0;
HEAP8[(21021)]=3;
$T_6NbDwwj5FY059b1gz2AsAZQ_60=0;
label=6;break;
case 6:
var $31=$T_6NbDwwj5FY059b1gz2AsAZQ_60;
var $32=($31|0)<7;
if($32){label=7;break;}else{label=9;break;}
case 7:
var $34=$T_6NbDwwj5FY059b1gz2AsAZQ_60;
var $35=((($34)+(21))|0);
var $36=((9808+((($35)*(24))&-1))|0);
var $37=(($36)|0);
HEAP8[($37)]=1;
var $38=$T_6NbDwwj5FY059b1gz2AsAZQ_60;
var $39=$T_6NbDwwj5FY059b1gz2AsAZQ_60;
var $40=((($39)+(21))|0);
var $41=((9808+((($40)*(24))&-1))|0);
var $42=(($41+4)|0);
HEAP32[(($42)>>2)]=$38;
var $43=$T_6NbDwwj5FY059b1gz2AsAZQ_60;
var $44=((40+($43<<2))|0);
var $45=HEAP32[(($44)>>2)];
var $46=$T_6NbDwwj5FY059b1gz2AsAZQ_60;
var $47=((($46)+(21))|0);
var $48=((9808+((($47)*(24))&-1))|0);
var $49=(($48+12)|0);
HEAP32[(($49)>>2)]=$45;
var $50=$T_6NbDwwj5FY059b1gz2AsAZQ_60;
var $51=((($50)+(21))|0);
var $52=((9808+((($51)*(24))&-1))|0);
var $53=$T_6NbDwwj5FY059b1gz2AsAZQ_60;
var $54=((9688+($53<<2))|0);
HEAP32[(($54)>>2)]=$52;
label=8;break;
case 8:
var $56=$T_6NbDwwj5FY059b1gz2AsAZQ_60;
var $57=((($56)+(1))|0);
$T_6NbDwwj5FY059b1gz2AsAZQ_60=$57;
label=6;break;
case 9:
HEAP32[((10496)>>2)]=7;
HEAP8[(10480)]=2;
HEAP32[((10500)>>2)]=9688;
HEAP32[((21028)>>2)]=10480;
HEAP8[(10288)]=1;
HEAP32[((10292)>>2)]=28;
HEAP32[((10296)>>2)]=21016;
HEAP32[((10300)>>2)]=2056;
HEAP32[((9796)>>2)]=10504;
HEAP8[(10504)]=1;
HEAP32[((10508)>>2)]=32;
HEAP32[((10512)>>2)]=20504;
HEAP32[((10516)>>2)]=2000;
HEAP32[((9800)>>2)]=10528;
HEAP8[(10528)]=1;
HEAP32[((10532)>>2)]=36;
HEAP32[((10536)>>2)]=20856;
HEAP32[((10540)>>2)]=1976;
HEAP32[((9804)>>2)]=10552;
HEAP8[(10552)]=1;
HEAP32[((10556)>>2)]=40;
HEAP32[((10560)>>2)]=20120;
HEAP32[((10564)>>2)]=1944;
HEAP32[((9824)>>2)]=10;
HEAP8[(9808)]=2;
HEAP32[((9828)>>2)]=9768;
HEAP32[((20068)>>2)]=9808;
STACKTOP=sp;return;
default: assert(0, "bad label: " + label);
}
}
function _nimFrame62($s0){
var label=0;
var sp=STACKTOP; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
label = 1;
while(1)switch(label){
case 1:
var $1;
var $LOC1;
$1=$s0;
$LOC1=0;
var $2=HEAP32[((16016)>>2)];
var $3=($2|0)==0;
if($3){label=3;break;}else{label=2;break;}
case 2:
label=4;break;
case 3:
$LOC1=0;
label=5;break;
case 4:
var $7=HEAP32[((16016)>>2)];
var $8=(($7+18)|0);
var $9=HEAP16[(($8)>>1)];
var $10=(($9<<16)>>16);
var $11=((($10)+(1))|0);
var $12=(($11)&65535);
var $13=(($12<<16)>>16);
$LOC1=$13;
label=5;break;
case 5:
var $15=$LOC1;
var $16=(($15)&65535);
var $17=$1;
var $18=(($17+18)|0);
HEAP16[(($18)>>1)]=$16;
var $19=HEAP32[((16016)>>2)];
var $20=$1;
var $21=(($20)|0);
HEAP32[(($21)>>2)]=$19;
var $22=$1;
HEAP32[((16016)>>2)]=$22;
var $23=$1;
var $24=(($23+18)|0);
var $25=HEAP16[(($24)>>1)];
var $26=(($25<<16)>>16);
var $27=($26|0)==2000;
if($27){label=7;break;}else{label=6;break;}
case 6:
label=8;break;
case 7:
_stackoverflow_II46IjNZztN9bmbxUD8dt8g();
label=8;break;
case 8:
STACKTOP=sp;return;
default: assert(0, "bad label: " + label);
}
}
function _popFrame63(){
var label=0;
var $1=HEAP32[((16016)>>2)];
var $2=(($1)|0);
var $3=HEAP32[(($2)>>2)];
HEAP32[((16016)>>2)]=$3;
return;
}
function _addInt64($a0,$b0){
var label=0;
var sp=STACKTOP; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
label = 1;
while(1)switch(label){
case 1:
var $1;
var $2;
var $result0;
var $LOC3;
$1=$a0;
$2=$b0;
$result0=0;
var $3=$1;
var $4=$2;
var $5=((($3)+($4))|0);
$result0=$5;
$LOC3=0;
var $6=$result0;
var $7=$1;
var $8=$6^$7;
var $9=0<=($8|0);
var $10=($9&1);
var $11=(($10)&255);
$LOC3=$11;
var $12=$LOC3;
var $13=(($12<<24)>>24)!=0;
if($13){label=2;break;}else{label=3;break;}
case 2:
label=4;break;
case 3:
var $16=$result0;
var $17=$2;
var $18=$16^$17;
var $19=0<=($18|0);
var $20=($19&1);
var $21=(($20)&255);
$LOC3=$21;
label=4;break;
case 4:
var $23=$LOC3;
var $24=(($23<<24)>>24)!=0;
if($24){label=6;break;}else{label=5;break;}
case 5:
label=7;break;
case 6:
label=8;break;
case 7:
_raiseOverflow();
label=8;break;
case 8:
var $29=$result0;
STACKTOP=sp;return $29;
default: assert(0, "bad label: " + label);
}
}
function _chckRange66($i0,$a0,$b0){
var label=0;
var sp=STACKTOP; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
label = 1;
while(1)switch(label){
case 1:
var $1;
var $2;
var $3;
var $result0;
var $LOC3;
$1=$i0;
$2=$a0;
$3=$b0;
$result0=0;
$LOC3=0;
var $4=$2;
var $5=$1;
var $6=($4|0)<=($5|0);
var $7=($6&1);
var $8=(($7)&255);
$LOC3=$8;
var $9=$LOC3;
var $10=(($9<<24)>>24)!=0;
if($10){label=3;break;}else{label=2;break;}
case 2:
label=4;break;
case 3:
var $13=$1;
var $14=$3;
var $15=($13|0)<=($14|0);
var $16=($15&1);
var $17=(($16)&255);
$LOC3=$17;
label=4;break;
case 4:
var $19=$LOC3;
var $20=(($19<<24)>>24)!=0;
if($20){label=6;break;}else{label=5;break;}
case 5:
label=7;break;
case 6:
var $23=$1;
$result0=$23;
label=9;break;
case 7:
var $25=$1;
var $26$0=$25;
var $26$1=((((($25|0)<0))|0)?-1:0);
_raiseRangeError($26$0,$26$1);
label=8;break;
case 8:
label=9;break;
case 9:
var $29=$result0;
STACKTOP=sp;return $29;
default: assert(0, "bad label: " + label);
}
}
function _appendString68($dest0,$src0){
var label=0;
var sp=STACKTOP; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
var $1;
var $2;
$1=$dest0;
$2=$src0;
var $3=$1;
var $4=(($3)|0);
var $5=(($4)|0);
var $6=HEAP32[(($5)>>2)];
var $7=(($6)|0);
var $8=$1;
var $9=(($8+8)|0);
var $10=(($9+$7)|0);
var $11=$2;
var $12=(($11+8)|0);
var $13=(($12)|0);
var $14=$2;
var $15=(($14)|0);
var $16=(($15)|0);
var $17=HEAP32[(($16)>>2)];
var $18=((($17)+(1))|0);
_copymem_fPlwH3r9agN9aEHB6yCPMh0wsystem70($10,$13,$18);
var $19=$2;
var $20=(($19)|0);
var $21=(($20)|0);
var $22=HEAP32[(($21)>>2)];
var $23=$1;
var $24=(($23)|0);
var $25=(($24)|0);
var $26=HEAP32[(($25)>>2)];
var $27=((($26)+($22))|0);
HEAP32[(($25)>>2)]=$27;
STACKTOP=sp;return;
}
function _appendChar69($dest0,$c0){
var label=0;
var sp=STACKTOP; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
var $1;
var $2;
$1=$dest0;
$2=$c0;
var $3=$2;
var $4=$1;
var $5=(($4)|0);
var $6=(($5)|0);
var $7=HEAP32[(($6)>>2)];
var $8=(($7)|0);
var $9=$1;
var $10=(($9+8)|0);
var $11=(($10+$8)|0);
HEAP8[($11)]=$3;
var $12=$1;
var $13=(($12)|0);
var $14=(($13)|0);
var $15=HEAP32[(($14)>>2)];
var $16=((($15)+(1))|0);
var $17=(($16)|0);
var $18=$1;
var $19=(($18+8)|0);
var $20=(($19+$17)|0);
HEAP8[($20)]=0;
var $21=$1;
var $22=(($21)|0);
var $23=(($22)|0);
var $24=HEAP32[(($23)>>2)];
var $25=((($24)+(1))|0);
HEAP32[(($23)>>2)]=$25;
STACKTOP=sp;return;
}
function _copymem_fPlwH3r9agN9aEHB6yCPMh0wsystem70($dest0,$source0,$size0){
var label=0;
var sp=STACKTOP; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
var $1;
var $2;
var $3;
var $LOC1;
$1=$dest0;
$2=$source0;
$3=$size0;
$LOC1=0;
var $4=$1;
var $5=$2;
var $6=$3;
assert($6 % 1 === 0);(_memcpy($4, $5, $6)|0);
$LOC1=$4;
STACKTOP=sp;return;
}
function _stdlib_algorithmInit000(){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+24)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
var $FR=sp;
var $1=(($FR+4)|0);
HEAP32[(($1)>>2)]=3784;
var $2=(($FR+12)|0);
HEAP32[(($2)>>2)]=4752;
var $3=(($FR+8)|0);
HEAP32[(($3)>>2)]=0;
var $4=(($FR+16)|0);
HEAP16[(($4)>>1)]=0;
_nimFrame84($FR);
_popFrame87();
STACKTOP=sp;return;
}
function _stdlib_algorithmDatInit000(){
var label=0;
return;
}
function _nimFrame84($s0){
var label=0;
var sp=STACKTOP; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
label = 1;
while(1)switch(label){
case 1:
var $1;
var $LOC1;
$1=$s0;
$LOC1=0;
var $2=HEAP32[((16016)>>2)];
var $3=($2|0)==0;
if($3){label=3;break;}else{label=2;break;}
case 2:
label=4;break;
case 3:
$LOC1=0;
label=5;break;
case 4:
var $7=HEAP32[((16016)>>2)];
var $8=(($7+18)|0);
var $9=HEAP16[(($8)>>1)];
var $10=(($9<<16)>>16);
var $11=((($10)+(1))|0);
var $12=(($11)&65535);
var $13=(($12<<16)>>16);
$LOC1=$13;
label=5;break;
case 5:
var $15=$LOC1;
var $16=(($15)&65535);
var $17=$1;
var $18=(($17+18)|0);
HEAP16[(($18)>>1)]=$16;
var $19=HEAP32[((16016)>>2)];
var $20=$1;
var $21=(($20)|0);
HEAP32[(($21)>>2)]=$19;
var $22=$1;
HEAP32[((16016)>>2)]=$22;
var $23=$1;
var $24=(($23+18)|0);
var $25=HEAP16[(($24)>>1)];
var $26=(($25<<16)>>16);
var $27=($26|0)==2000;
if($27){label=7;break;}else{label=6;break;}
case 6:
label=8;break;
case 7:
_stackoverflow_II46IjNZztN9bmbxUD8dt8g();
label=8;break;
case 8:
STACKTOP=sp;return;
default: assert(0, "bad label: " + label);
}
}
function _popFrame87(){
var label=0;
var $1=HEAP32[((16016)>>2)];
var $2=(($1)|0);
var $3=HEAP32[(($2)>>2)];
HEAP32[((16016)>>2)]=$3;
return;
}
function _stdlib_mathInit000(){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+24)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
var $FR=sp;
var $1=(($FR+4)|0);
HEAP32[(($1)>>2)]=2920;
var $2=(($FR+12)|0);
HEAP32[(($2)>>2)]=4648;
var $3=(($FR+8)|0);
HEAP32[(($3)>>2)]=0;
var $4=(($FR+16)|0);
HEAP16[(($4)>>1)]=0;
_nimFrame94($FR);
_popFrame98();
STACKTOP=sp;return;
}
function _stdlib_mathDatInit000(){
var label=0;
return;
}
function _nimFrame94($s0){
var label=0;
var sp=STACKTOP; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
label = 1;
while(1)switch(label){
case 1:
var $1;
var $LOC1;
$1=$s0;
$LOC1=0;
var $2=HEAP32[((16016)>>2)];
var $3=($2|0)==0;
if($3){label=3;break;}else{label=2;break;}
case 2:
label=4;break;
case 3:
$LOC1=0;
label=5;break;
case 4:
var $7=HEAP32[((16016)>>2)];
var $8=(($7+18)|0);
var $9=HEAP16[(($8)>>1)];
var $10=(($9<<16)>>16);
var $11=((($10)+(1))|0);
var $12=(($11)&65535);
var $13=(($12<<16)>>16);
$LOC1=$13;
label=5;break;
case 5:
var $15=$LOC1;
var $16=(($15)&65535);
var $17=$1;
var $18=(($17+18)|0);
HEAP16[(($18)>>1)]=$16;
var $19=HEAP32[((16016)>>2)];
var $20=$1;
var $21=(($20)|0);
HEAP32[(($21)>>2)]=$19;
var $22=$1;
HEAP32[((16016)>>2)]=$22;
var $23=$1;
var $24=(($23+18)|0);
var $25=HEAP16[(($24)>>1)];
var $26=(($25<<16)>>16);
var $27=($26|0)==2000;
if($27){label=7;break;}else{label=6;break;}
case 6:
label=8;break;
case 7:
_stackoverflow_II46IjNZztN9bmbxUD8dt8g();
label=8;break;
case 8:
STACKTOP=sp;return;
default: assert(0, "bad label: " + label);
}
}
function _popFrame98(){
var label=0;
var $1=HEAP32[((16016)>>2)];
var $2=(($1)|0);
var $3=HEAP32[(($2)>>2)];
HEAP32[((16016)>>2)]=$3;
return;
}
function _stdlib_parseutilsInit000(){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+24)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
var $FR=sp;
var $1=(($FR+4)|0);
HEAP32[(($1)>>2)]=2528;
var $2=(($FR+12)|0);
HEAP32[(($2)>>2)]=6408;
var $3=(($FR+8)|0);
HEAP32[(($3)>>2)]=0;
var $4=(($FR+16)|0);
HEAP16[(($4)>>1)]=0;
_nimFrame108($FR);
_popFrame112();
STACKTOP=sp;return;
}
function _stdlib_parseutilsDatInit000(){
var label=0;
return;
}
function _nimFrame108($s0){
var label=0;
var sp=STACKTOP; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
label = 1;
while(1)switch(label){
case 1:
var $1;
var $LOC1;
$1=$s0;
$LOC1=0;
var $2=HEAP32[((16016)>>2)];
var $3=($2|0)==0;
if($3){label=3;break;}else{label=2;break;}
case 2:
label=4;break;
case 3:
$LOC1=0;
label=5;break;
case 4:
var $7=HEAP32[((16016)>>2)];
var $8=(($7+18)|0);
var $9=HEAP16[(($8)>>1)];
var $10=(($9<<16)>>16);
var $11=((($10)+(1))|0);
var $12=(($11)&65535);
var $13=(($12<<16)>>16);
$LOC1=$13;
label=5;break;
case 5:
var $15=$LOC1;
var $16=(($15)&65535);
var $17=$1;
var $18=(($17+18)|0);
HEAP16[(($18)>>1)]=$16;
var $19=HEAP32[((16016)>>2)];
var $20=$1;
var $21=(($20)|0);
HEAP32[(($21)>>2)]=$19;
var $22=$1;
HEAP32[((16016)>>2)]=$22;
var $23=$1;
var $24=(($23+18)|0);
var $25=HEAP16[(($24)>>1)];
var $26=(($25<<16)>>16);
var $27=($26|0)==2000;
if($27){label=7;break;}else{label=6;break;}
case 6:
label=8;break;
case 7:
_stackoverflow_II46IjNZztN9bmbxUD8dt8g();
label=8;break;
case 8:
STACKTOP=sp;return;
default: assert(0, "bad label: " + label);
}
}
function _popFrame112(){
var label=0;
var $1=HEAP32[((16016)>>2)];
var $2=(($1)|0);
var $3=HEAP32[(($2)>>2)];
HEAP32[((16016)>>2)]=$3;
return;
}
function _substitutelog_GUiLaZ0b21eA2W7LstPGkg($frmt0,$level0,$args0,$args0Len0){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+56)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
label = 1;
while(1)switch(label){
case 1:
var $1;
var $2;
var $3;
var $4;
var $result0;
var $msglen0;
var $T_7EbqAVTAsJVrNKIE9b0UU9bA_11;
var $T_7EbqAVTAsJVrNKIE9b0UU9bA_12;
var $i0;
var $FR=sp;
var $arg_GQDxa9aVqi6Wv9cteHHIdjKw;
var $i_6q8zJ6Ysv9cgN6WlvnR3pZw;
var $T_7EbqAVTAsJVrNKIE9b0UU9bA_9;
var $T_7EbqAVTAsJVrNKIE9b0UU9bA_10;
var $T_7EbqAVTAsJVrNKIE9b0UU9bA_13;
var $T_7EbqAVTAsJVrNKIE9b0UU9bA_14;
var $v0;
var $app0;
var $LOC13;
var $T_7EbqAVTAsJVrNKIE9b0UU9bA_16;
var $LOC25;
var $LOC27;
var $LOC29;
var $LOC30;
var $LOC31;
var $LOC34=(sp)+(24);
var $LOC36=(sp)+(40);
var $arg_GQDxa9aVqi6Wv9cteHHIdjKw_2;
var $i_6q8zJ6Ysv9cgN6WlvnR3pZw_2;
var $T_7EbqAVTAsJVrNKIE9b0UU9bA_26;
$1=$frmt0;
$2=$level0;
$3=$args0;
$4=$args0Len0;
var $5=(($FR+4)|0);
HEAP32[(($5)>>2)]=6208;
var $6=(($FR+12)|0);
HEAP32[(($6)>>2)]=6336;
var $7=(($FR+8)|0);
HEAP32[(($7)>>2)]=0;
var $8=(($FR+16)|0);
HEAP16[(($8)>>1)]=0;
_nimFrame155($FR);
$result0=0;
var $9=(($FR+8)|0);
HEAP32[(($9)>>2)]=108;
var $10=(($FR+12)|0);
HEAP32[(($10)>>2)]=6336;
$msglen0=0;
$arg_GQDxa9aVqi6Wv9cteHHIdjKw=0;
var $11=(($FR+8)|0);
HEAP32[(($11)>>2)]=1999;
var $12=(($FR+12)|0);
HEAP32[(($12)>>2)]=4224;
$i_6q8zJ6Ysv9cgN6WlvnR3pZw=0;
var $13=(($FR+8)|0);
HEAP32[(($13)>>2)]=2000;
var $14=(($FR+12)|0);
HEAP32[(($14)>>2)]=4224;
label=2;break;
case 2:
var $16=(($FR+8)|0);
HEAP32[(($16)>>2)]=1999;
var $17=(($FR+12)|0);
HEAP32[(($17)>>2)]=4224;
var $18=(($FR+8)|0);
HEAP32[(($18)>>2)]=109;
var $19=(($FR+12)|0);
HEAP32[(($19)>>2)]=6336;
var $20=$i_6q8zJ6Ysv9cgN6WlvnR3pZw;
var $21=$4;
var $22=($20|0)<($21|0);
if($22){label=4;break;}else{label=3;break;}
case 3:
label=10;break;
case 4:
var $25=(($FR+8)|0);
HEAP32[(($25)>>2)]=2001;
var $26=(($FR+12)|0);
HEAP32[(($26)>>2)]=4224;
var $27=$i_6q8zJ6Ysv9cgN6WlvnR3pZw;
var $28=$4;
var $29=($27>>>0)>=($28>>>0);
if($29){label=5;break;}else{label=6;break;}
case 5:
_raiseIndexError();
label=6;break;
case 6:
var $32=$i_6q8zJ6Ysv9cgN6WlvnR3pZw;
var $33=$3;
var $34=(($33+($32<<2))|0);
var $35=HEAP32[(($34)>>2)];
$arg_GQDxa9aVqi6Wv9cteHHIdjKw=$35;
var $36=(($FR+8)|0);
HEAP32[(($36)>>2)]=110;
var $37=(($FR+12)|0);
HEAP32[(($37)>>2)]=6336;
var $38=$msglen0;
var $39=$arg_GQDxa9aVqi6Wv9cteHHIdjKw;
var $40=($39|0)!=0;
if($40){label=7;break;}else{label=8;break;}
case 7:
var $42=$arg_GQDxa9aVqi6Wv9cteHHIdjKw;
var $43=(($42)|0);
var $44=(($43)|0);
var $45=HEAP32[(($44)>>2)];
var $48=$45;label=9;break;
case 8:
var $48=0;label=9;break;
case 9:
var $48;
var $49=_addInt156($38,$48);
$T_7EbqAVTAsJVrNKIE9b0UU9bA_9=$49;
var $50=$T_7EbqAVTAsJVrNKIE9b0UU9bA_9;
$msglen0=$50;
var $51=(($FR+8)|0);
HEAP32[(($51)>>2)]=1999;
var $52=(($FR+12)|0);
HEAP32[(($52)>>2)]=4224;
var $53=$i_6q8zJ6Ysv9cgN6WlvnR3pZw;
var $54=_addInt156($53,1);
$T_7EbqAVTAsJVrNKIE9b0UU9bA_10=$54;
var $55=$T_7EbqAVTAsJVrNKIE9b0UU9bA_10;
$i_6q8zJ6Ysv9cgN6WlvnR3pZw=$55;
label=2;break;
case 10:
var $57=(($FR+8)|0);
HEAP32[(($57)>>2)]=111;
var $58=(($FR+12)|0);
HEAP32[(($58)>>2)]=6336;
var $59=$1;
var $60=($59|0)!=0;
if($60){label=11;break;}else{label=12;break;}
case 11:
var $62=$1;
var $63=(($62)|0);
var $64=(($63)|0);
var $65=HEAP32[(($64)>>2)];
var $68=$65;label=13;break;
case 12:
var $68=0;label=13;break;
case 13:
var $68;
var $69=$msglen0;
var $70=_addInt156($68,$69);
$T_7EbqAVTAsJVrNKIE9b0UU9bA_11=$70;
var $71=$T_7EbqAVTAsJVrNKIE9b0UU9bA_11;
var $72=_addInt156($71,20);
$T_7EbqAVTAsJVrNKIE9b0UU9bA_12=$72;
var $73=$T_7EbqAVTAsJVrNKIE9b0UU9bA_12;
var $74=_chckRange157($73,0,2147483647);
var $75=_rawNewString($74);
$result0=$75;
var $76=(($FR+8)|0);
HEAP32[(($76)>>2)]=112;
var $77=(($FR+12)|0);
HEAP32[(($77)>>2)]=6336;
$i0=0;
var $78=(($FR+8)|0);
HEAP32[(($78)>>2)]=113;
var $79=(($FR+12)|0);
HEAP32[(($79)>>2)]=6336;
label=14;break;
case 14:
var $81=$i0;
var $82=$1;
var $83=($82|0)!=0;
if($83){label=15;break;}else{label=16;break;}
case 15:
var $85=$1;
var $86=(($85)|0);
var $87=(($86)|0);
var $88=HEAP32[(($87)>>2)];
var $91=$88;label=17;break;
case 16:
var $91=0;label=17;break;
case 17:
var $91;
var $92=($81|0)<($91|0);
if($92){label=19;break;}else{label=18;break;}
case 18:
label=70;break;
case 19:
var $95=(($FR+8)|0);
HEAP32[(($95)>>2)]=114;
var $96=(($FR+12)|0);
HEAP32[(($96)>>2)]=6336;
var $97=(($FR+8)|0);
HEAP32[(($97)>>2)]=347;
var $98=(($FR+12)|0);
HEAP32[(($98)>>2)]=4224;
var $99=(($FR+8)|0);
HEAP32[(($99)>>2)]=114;
var $100=(($FR+12)|0);
HEAP32[(($100)>>2)]=6336;
var $101=$i0;
var $102=$1;
var $103=(($102)|0);
var $104=(($103)|0);
var $105=HEAP32[(($104)>>2)];
var $106=($101>>>0)>($105>>>0);
if($106){label=20;break;}else{label=21;break;}
case 20:
_raiseIndexError();
label=21;break;
case 21:
var $109=$i0;
var $110=$1;
var $111=(($110+8)|0);
var $112=(($111+$109)|0);
var $113=HEAP8[($112)];
var $114=($113&255);
var $115=($114|0)==36;
if($115){label=22;break;}else{label=23;break;}
case 22:
label=26;break;
case 23:
var $118=(($FR+8)|0);
HEAP32[(($118)>>2)]=115;
var $119=(($FR+12)|0);
HEAP32[(($119)>>2)]=6336;
var $120=$i0;
var $121=$1;
var $122=(($121)|0);
var $123=(($122)|0);
var $124=HEAP32[(($123)>>2)];
var $125=($120>>>0)>($124>>>0);
if($125){label=24;break;}else{label=25;break;}
case 24:
_raiseIndexError();
label=25;break;
case 25:
var $128=$result0;
var $129=$i0;
var $130=$1;
var $131=(($130+8)|0);
var $132=(($131+$129)|0);
var $133=HEAP8[($132)];
var $134=_addChar($128,$133);
$result0=$134;
var $135=(($FR+8)|0);
HEAP32[(($135)>>2)]=116;
var $136=(($FR+12)|0);
HEAP32[(($136)>>2)]=6336;
var $137=$i0;
var $138=_addInt156($137,1);
$T_7EbqAVTAsJVrNKIE9b0UU9bA_13=$138;
var $139=$T_7EbqAVTAsJVrNKIE9b0UU9bA_13;
$i0=$139;
label=69;break;
case 26:
var $141=(($FR+8)|0);
HEAP32[(($141)>>2)]=118;
var $142=(($FR+12)|0);
HEAP32[(($142)>>2)]=6336;
var $143=$i0;
var $144=_addInt156($143,1);
$T_7EbqAVTAsJVrNKIE9b0UU9bA_14=$144;
var $145=$T_7EbqAVTAsJVrNKIE9b0UU9bA_14;
$i0=$145;
var $146=(($FR+8)|0);
HEAP32[(($146)>>2)]=119;
var $147=(($FR+12)|0);
HEAP32[(($147)>>2)]=6336;
var $148=_copyString(8192);
$v0=$148;
var $149=(($FR+8)|0);
HEAP32[(($149)>>2)]=120;
var $150=(($FR+12)|0);
HEAP32[(($150)>>2)]=6336;
var $151=_nosgetAppFilename();
$app0=$151;
var $152=(($FR+8)|0);
HEAP32[(($152)>>2)]=121;
var $153=(($FR+12)|0);
HEAP32[(($153)>>2)]=6336;
label=27;break;
case 27:
var $155=$i0;
var $156=$1;
var $157=(($156)|0);
var $158=(($157)|0);
var $159=HEAP32[(($158)>>2)];
var $160=($155>>>0)>($159>>>0);
if($160){label=28;break;}else{label=29;break;}
case 28:
_raiseIndexError();
label=29;break;
case 29:
var $163=$i0;
var $164=$1;
var $165=(($164+8)|0);
var $166=(($165+$163)|0);
var $167=HEAP8[($166)];
var $168=($167&255);
var $169=($168|0)>=97;
if($169){label=30;break;}else{label=31;break;}
case 30:
var $171=$i0;
var $172=$1;
var $173=(($172+8)|0);
var $174=(($173+$171)|0);
var $175=HEAP8[($174)];
var $176=($175&255);
var $177=($176|0)<=122;
if($177){label=37;break;}else{label=31;break;}
case 31:
var $179=$i0;
var $180=$1;
var $181=(($180+8)|0);
var $182=(($181+$179)|0);
var $183=HEAP8[($182)];
var $184=($183&255);
var $185=($184|0)>=65;
if($185){label=32;break;}else{label=33;break;}
case 32:
var $187=$i0;
var $188=$1;
var $189=(($188+8)|0);
var $190=(($189+$187)|0);
var $191=HEAP8[($190)];
var $192=($191&255);
var $193=($192|0)<=90;
if($193){label=37;break;}else{label=33;break;}
case 33:
var $195=$i0;
var $196=$1;
var $197=(($196+8)|0);
var $198=(($197+$195)|0);
var $199=HEAP8[($198)];
var $200=($199&255);
var $201=($200|0)>=48;
if($201){label=34;break;}else{label=35;break;}
case 34:
var $203=$i0;
var $204=$1;
var $205=(($204+8)|0);
var $206=(($205+$203)|0);
var $207=HEAP8[($206)];
var $208=($207&255);
var $209=($208|0)<=57;
if($209){label=37;break;}else{label=35;break;}
case 35:
var $211=$i0;
var $212=$1;
var $213=(($212+8)|0);
var $214=(($213+$211)|0);
var $215=HEAP8[($214)];
var $216=($215&255);
var $217=($216|0)==95;
if($217){label=37;break;}else{label=36;break;}
case 36:
label=40;break;
case 37:
var $220=(($FR+8)|0);
HEAP32[(($220)>>2)]=122;
var $221=(($FR+12)|0);
HEAP32[(($221)>>2)]=6336;
var $222=$i0;
var $223=$1;
var $224=(($223)|0);
var $225=(($224)|0);
var $226=HEAP32[(($225)>>2)];
var $227=($222>>>0)>($226>>>0);
if($227){label=38;break;}else{label=39;break;}
case 38:
_raiseIndexError();
label=39;break;
case 39:
$LOC13=0;
var $230=$i0;
var $231=$1;
var $232=(($231+8)|0);
var $233=(($232+$230)|0);
var $234=HEAP8[($233)];
var $235=_nsuToLowerChar($234);
$LOC13=$235;
var $236=$v0;
var $237=$LOC13;
var $238=_addChar($236,$237);
$v0=$238;
var $239=(($FR+8)|0);
HEAP32[(($239)>>2)]=123;
var $240=(($FR+12)|0);
HEAP32[(($240)>>2)]=6336;
var $241=$i0;
var $242=_addInt156($241,1);
$T_7EbqAVTAsJVrNKIE9b0UU9bA_16=$242;
var $243=$T_7EbqAVTAsJVrNKIE9b0UU9bA_16;
$i0=$243;
label=27;break;
case 40:
var $245=(($FR+8)|0);
HEAP32[(($245)>>2)]=124;
var $246=(($FR+12)|0);
HEAP32[(($246)>>2)]=6336;
var $247=$v0;
var $248=_eqStrings158($247,8176);
var $249=(($248<<24)>>24)!=0;
if($249){label=41;break;}else{label=42;break;}
case 41:
label=57;break;
case 42:
var $252=$v0;
var $253=_eqStrings158($252,8160);
var $254=(($253<<24)>>24)!=0;
if($254){label=43;break;}else{label=44;break;}
case 43:
label=58;break;
case 44:
var $257=$v0;
var $258=_eqStrings158($257,8136);
var $259=(($258<<24)>>24)!=0;
if($259){label=45;break;}else{label=46;break;}
case 45:
label=59;break;
case 46:
var $262=$v0;
var $263=_eqStrings158($262,8104);
var $264=(($263<<24)>>24)!=0;
if($264){label=47;break;}else{label=48;break;}
case 47:
label=60;break;
case 48:
var $267=$v0;
var $268=_eqStrings158($267,8088);
var $269=(($268<<24)>>24)!=0;
if($269){label=49;break;}else{label=50;break;}
case 49:
label=61;break;
case 50:
var $272=$v0;
var $273=_eqStrings158($272,8072);
var $274=(($273<<24)>>24)!=0;
if($274){label=51;break;}else{label=52;break;}
case 51:
label=62;break;
case 52:
var $277=$v0;
var $278=_eqStrings158($277,8056);
var $279=(($278<<24)>>24)!=0;
if($279){label=53;break;}else{label=54;break;}
case 53:
label=63;break;
case 54:
var $282=$v0;
var $283=_eqStrings158($282,8032);
var $284=(($283<<24)>>24)!=0;
if($284){label=55;break;}else{label=56;break;}
case 55:
label=66;break;
case 56:
label=67;break;
case 57:
var $288=(($FR+8)|0);
HEAP32[(($288)>>2)]=125;
var $289=(($FR+12)|0);
HEAP32[(($289)>>2)]=6336;
$LOC25=0;
var $290=_ntgetDateStr();
$LOC25=$290;
var $291=$result0;
var $292=$LOC25;
var $293=(($292)|0);
var $294=(($293)|0);
var $295=HEAP32[(($294)>>2)];
var $296=(($295)|0);
var $297=_resizeString($291,$296);
$result0=$297;
var $298=$result0;
var $299=$LOC25;
_appendString159($298,$299);
label=68;break;
case 58:
var $301=(($FR+8)|0);
HEAP32[(($301)>>2)]=126;
var $302=(($FR+12)|0);
HEAP32[(($302)>>2)]=6336;
$LOC27=0;
var $303=_ntgetClockStr();
$LOC27=$303;
var $304=$result0;
var $305=$LOC27;
var $306=(($305)|0);
var $307=(($306)|0);
var $308=HEAP32[(($307)>>2)];
var $309=(($308)|0);
var $310=_resizeString($304,$309);
$result0=$310;
var $311=$result0;
var $312=$LOC27;
_appendString159($311,$312);
label=68;break;
case 59:
var $314=(($FR+8)|0);
HEAP32[(($314)>>2)]=127;
var $315=(($FR+12)|0);
HEAP32[(($315)>>2)]=6336;
$LOC29=0;
$LOC30=0;
var $316=_ntgetDateStr();
$LOC30=$316;
$LOC31=0;
var $317=_ntgetClockStr();
$LOC31=$317;
var $318=$LOC30;
var $319=(($318)|0);
var $320=(($319)|0);
var $321=HEAP32[(($320)>>2)];
var $322=$LOC31;
var $323=(($322)|0);
var $324=(($323)|0);
var $325=HEAP32[(($324)>>2)];
var $326=((($321)+($325))|0);
var $327=((($326)+(1))|0);
var $328=_rawNewString($327);
$LOC29=$328;
var $329=$LOC29;
var $330=$LOC30;
_appendString159($329,$330);
var $331=$LOC29;
_appendString159($331,8016);
var $332=$LOC29;
var $333=$LOC31;
_appendString159($332,$333);
var $334=$result0;
var $335=$LOC29;
var $336=(($335)|0);
var $337=(($336)|0);
var $338=HEAP32[(($337)>>2)];
var $339=(($338)|0);
var $340=_resizeString($334,$339);
$result0=$340;
var $341=$result0;
var $342=$LOC29;
_appendString159($341,$342);
label=68;break;
case 60:
var $344=(($FR+8)|0);
HEAP32[(($344)>>2)]=128;
var $345=(($FR+12)|0);
HEAP32[(($345)>>2)]=6336;
var $346=$result0;
var $347=$app0;
var $348=(($347)|0);
var $349=(($348)|0);
var $350=HEAP32[(($349)>>2)];
var $351=(($350)|0);
var $352=_resizeString($346,$351);
$result0=$352;
var $353=$result0;
var $354=$app0;
_appendString159($353,$354);
label=68;break;
case 61:
var $356=(($FR+8)|0);
HEAP32[(($356)>>2)]=130;
var $357=(($FR+12)|0);
HEAP32[(($357)>>2)]=6336;
var $358=$LOC34;
_memset($358, 0, 12)|0;
var $359=$app0;
_nossplitFile($359,$LOC34);
var $360=$result0;
var $361=(($LOC34)|0);
var $362=HEAP32[(($361)>>2)];
var $363=(($362)|0);
var $364=(($363)|0);
var $365=HEAP32[(($364)>>2)];
var $366=(($365)|0);
var $367=_resizeString($360,$366);
$result0=$367;
var $368=$result0;
var $369=(($LOC34)|0);
var $370=HEAP32[(($369)>>2)];
_appendString159($368,$370);
label=68;break;
case 62:
var $372=(($FR+8)|0);
HEAP32[(($372)>>2)]=132;
var $373=(($FR+12)|0);
HEAP32[(($373)>>2)]=6336;
var $374=$LOC36;
_memset($374, 0, 12)|0;
var $375=$app0;
_nossplitFile($375,$LOC36);
var $376=$result0;
var $377=(($LOC36+4)|0);
var $378=HEAP32[(($377)>>2)];
var $379=(($378)|0);
var $380=(($379)|0);
var $381=HEAP32[(($380)>>2)];
var $382=(($381)|0);
var $383=_resizeString($376,$382);
$result0=$383;
var $384=$result0;
var $385=(($LOC36+4)|0);
var $386=HEAP32[(($385)>>2)];
_appendString159($384,$386);
label=68;break;
case 63:
var $388=(($FR+8)|0);
HEAP32[(($388)>>2)]=133;
var $389=(($FR+12)|0);
HEAP32[(($389)>>2)]=6336;
var $390=$2;
var $391=($390&255);
var $392=(($391)|0);
var $393=((8232+($392<<2))|0);
var $394=HEAP32[(($393)>>2)];
var $395=(($394)|0);
var $396=(($395)|0);
var $397=HEAP32[(($396)>>2)];
var $398=0>($397>>>0);
if($398){label=64;break;}else{label=65;break;}
case 64:
_raiseIndexError();
label=65;break;
case 65:
var $401=$result0;
var $402=$2;
var $403=($402&255);
var $404=(($403)|0);
var $405=((8232+($404<<2))|0);
var $406=HEAP32[(($405)>>2)];
var $407=(($406+8)|0);
var $408=(($407)|0);
var $409=HEAP8[($408)];
var $410=_addChar($401,$409);
$result0=$410;
label=68;break;
case 66:
var $412=(($FR+8)|0);
HEAP32[(($412)>>2)]=134;
var $413=(($FR+12)|0);
HEAP32[(($413)>>2)]=6336;
var $414=$result0;
var $415=$2;
var $416=($415&255);
var $417=(($416)|0);
var $418=((8232+($417<<2))|0);
var $419=HEAP32[(($418)>>2)];
var $420=(($419)|0);
var $421=(($420)|0);
var $422=HEAP32[(($421)>>2)];
var $423=(($422)|0);
var $424=_resizeString($414,$423);
$result0=$424;
var $425=$result0;
var $426=$2;
var $427=($426&255);
var $428=(($427)|0);
var $429=((8232+($428<<2))|0);
var $430=HEAP32[(($429)>>2)];
_appendString159($425,$430);
label=68;break;
case 67:
label=68;break;
case 68:
label=69;break;
case 69:
label=14;break;
case 70:
$arg_GQDxa9aVqi6Wv9cteHHIdjKw_2=0;
var $435=(($FR+8)|0);
HEAP32[(($435)>>2)]=1999;
var $436=(($FR+12)|0);
HEAP32[(($436)>>2)]=4224;
$i_6q8zJ6Ysv9cgN6WlvnR3pZw_2=0;
var $437=(($FR+8)|0);
HEAP32[(($437)>>2)]=2000;
var $438=(($FR+12)|0);
HEAP32[(($438)>>2)]=4224;
label=71;break;
case 71:
var $440=(($FR+8)|0);
HEAP32[(($440)>>2)]=1999;
var $441=(($FR+12)|0);
HEAP32[(($441)>>2)]=4224;
var $442=(($FR+8)|0);
HEAP32[(($442)>>2)]=136;
var $443=(($FR+12)|0);
HEAP32[(($443)>>2)]=6336;
var $444=$i_6q8zJ6Ysv9cgN6WlvnR3pZw_2;
var $445=$4;
var $446=($444|0)<($445|0);
if($446){label=73;break;}else{label=72;break;}
case 72:
label=76;break;
case 73:
var $449=(($FR+8)|0);
HEAP32[(($449)>>2)]=2001;
var $450=(($FR+12)|0);
HEAP32[(($450)>>2)]=4224;
var $451=$i_6q8zJ6Ysv9cgN6WlvnR3pZw_2;
var $452=$4;
var $453=($451>>>0)>=($452>>>0);
if($453){label=74;break;}else{label=75;break;}
case 74:
_raiseIndexError();
label=75;break;
case 75:
var $456=$i_6q8zJ6Ysv9cgN6WlvnR3pZw_2;
var $457=$3;
var $458=(($457+($456<<2))|0);
var $459=HEAP32[(($458)>>2)];
$arg_GQDxa9aVqi6Wv9cteHHIdjKw_2=$459;
var $460=(($FR+8)|0);
HEAP32[(($460)>>2)]=137;
var $461=(($FR+12)|0);
HEAP32[(($461)>>2)]=6336;
var $462=$result0;
var $463=$arg_GQDxa9aVqi6Wv9cteHHIdjKw_2;
var $464=(($463)|0);
var $465=(($464)|0);
var $466=HEAP32[(($465)>>2)];
var $467=(($466)|0);
var $468=_resizeString($462,$467);
$result0=$468;
var $469=$result0;
var $470=$arg_GQDxa9aVqi6Wv9cteHHIdjKw_2;
_appendString159($469,$470);
var $471=(($FR+8)|0);
HEAP32[(($471)>>2)]=1999;
var $472=(($FR+12)|0);
HEAP32[(($472)>>2)]=4224;
var $473=$i_6q8zJ6Ysv9cgN6WlvnR3pZw_2;
var $474=_addInt156($473,1);
$T_7EbqAVTAsJVrNKIE9b0UU9bA_26=$474;
var $475=$T_7EbqAVTAsJVrNKIE9b0UU9bA_26;
$i_6q8zJ6Ysv9cgN6WlvnR3pZw_2=$475;
label=71;break;
case 76:
_popFrame160();
var $477=$result0;
STACKTOP=sp;return $477;
default: assert(0, "bad label: " + label);
}
}
function _log_ickm9bT0pWcynhn7oX83aTg($logger0,$level0,$args0,$args0Len0){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+24)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
var $1;
var $2;
var $3;
var $4;
var $FR=sp;
$1=$logger0;
$2=$level0;
$3=$args0;
$4=$args0Len0;
var $5=(($FR+4)|0);
HEAP32[(($5)>>2)]=3600;
var $6=(($FR+12)|0);
HEAP32[(($6)>>2)]=6336;
var $7=(($FR+8)|0);
HEAP32[(($7)>>2)]=0;
var $8=(($FR+16)|0);
HEAP16[(($8)>>1)]=0;
_nimFrame155($FR);
_popFrame160();
STACKTOP=sp;return;
}
function _log_F2wVp9bYd9alkwSwovfO9aanw($logger0,$level0,$args0,$args0Len0){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+32)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
label = 1;
while(1)switch(label){
case 1:
var $1;
var $2;
var $3;
var $4;
var $FR=sp;
var $LOC3;
var $ln0;
var $LOC7=(sp)+(24);
$1=$logger0;
$2=$level0;
$3=$args0;
$4=$args0Len0;
var $5=(($FR+4)|0);
HEAP32[(($5)>>2)]=3600;
var $6=(($FR+12)|0);
HEAP32[(($6)>>2)]=6336;
var $7=(($FR+8)|0);
HEAP32[(($7)>>2)]=0;
var $8=(($FR+16)|0);
HEAP16[(($8)>>1)]=0;
_nimFrame155($FR);
var $9=(($FR+8)|0);
HEAP32[(($9)>>2)]=148;
var $10=(($FR+12)|0);
HEAP32[(($10)>>2)]=6336;
$LOC3=0;
var $11=HEAP8[(15696)];
var $12=($11&255);
var $13=$2;
var $14=($13&255);
var $15=($12|0)<=($14|0);
var $16=($15&1);
var $17=(($16)&255);
$LOC3=$17;
var $18=$LOC3;
var $19=(($18<<24)>>24)!=0;
if($19){label=3;break;}else{label=2;break;}
case 2:
label=4;break;
case 3:
var $22=$1;
var $23=(($22)|0);
var $24=(($23+4)|0);
var $25=HEAP8[($24)];
var $26=($25&255);
var $27=$2;
var $28=($27&255);
var $29=($26|0)<=($28|0);
var $30=($29&1);
var $31=(($30)&255);
$LOC3=$31;
label=4;break;
case 4:
var $33=$LOC3;
var $34=(($33<<24)>>24)!=0;
if($34){label=6;break;}else{label=5;break;}
case 5:
label=10;break;
case 6:
var $37=(($FR+8)|0);
HEAP32[(($37)>>2)]=149;
var $38=(($FR+12)|0);
HEAP32[(($38)>>2)]=6336;
var $39=$1;
var $40=(($39)|0);
var $41=(($40+8)|0);
var $42=HEAP32[(($41)>>2)];
var $43=$2;
var $44=$3;
var $45=$4;
var $46=_substitutelog_GUiLaZ0b21eA2W7LstPGkg($42,$43,$44,$45);
$ln0=$46;
var $47=(($FR+8)|0);
HEAP32[(($47)>>2)]=154;
var $48=(($FR+12)|0);
HEAP32[(($48)>>2)]=6336;
var $49=(($LOC7)|0);
var $50=$49;
HEAP8[($50)]=0; HEAP8[((($50)+(1))|0)]=0; HEAP8[((($50)+(2))|0)]=0; HEAP8[((($50)+(3))|0)]=0;
var $51=$ln0;
var $52=_copyString($51);
var $53=(($LOC7)|0);
HEAP32[(($53)>>2)]=$52;
var $54=HEAP32[((_stdout)>>2)];
var $55=(($LOC7)|0);
_writeline_rBQVO3cm3BhnA9aEFD7PG6Qlogging($54,$55,1);
var $56=(($FR+8)|0);
HEAP32[(($56)>>2)]=155;
var $57=(($FR+12)|0);
HEAP32[(($57)>>2)]=6336;
var $58=$2;
var $59=($58&255);
var $60=$59&7;
var $61=1<<$60;
var $62=96&$61;
var $63=($62|0)!=0;
if($63){label=8;break;}else{label=7;break;}
case 7:
label=9;break;
case 8:
var $66=HEAP32[((_stdout)>>2)];
_flushfile_BWnr8V7RERYno9bIdPmw8Hw_2($66);
label=9;break;
case 9:
label=10;break;
case 10:
_popFrame160();
STACKTOP=sp;return;
default: assert(0, "bad label: " + label);
}
}
function _log_ZlB8IWVc9cdlahbPdrAh0Og($logger0,$level0,$args0,$args0Len0){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+32)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
label = 1;
while(1)switch(label){
case 1:
var $1;
var $2;
var $3;
var $4;
var $FR=sp;
var $LOC3;
var $LOC7=(sp)+(24);
$1=$logger0;
$2=$level0;
$3=$args0;
$4=$args0Len0;
var $5=(($FR+4)|0);
HEAP32[(($5)>>2)]=3600;
var $6=(($FR+12)|0);
HEAP32[(($6)>>2)]=6336;
var $7=(($FR+8)|0);
HEAP32[(($7)>>2)]=0;
var $8=(($FR+16)|0);
HEAP16[(($8)>>1)]=0;
_nimFrame155($FR);
var $9=(($FR+8)|0);
HEAP32[(($9)>>2)]=166;
var $10=(($FR+12)|0);
HEAP32[(($10)>>2)]=6336;
$LOC3=0;
var $11=HEAP8[(15696)];
var $12=($11&255);
var $13=$2;
var $14=($13&255);
var $15=($12|0)<=($14|0);
var $16=($15&1);
var $17=(($16)&255);
$LOC3=$17;
var $18=$LOC3;
var $19=(($18<<24)>>24)!=0;
if($19){label=3;break;}else{label=2;break;}
case 2:
label=4;break;
case 3:
var $22=$1;
var $23=(($22)|0);
var $24=(($23+4)|0);
var $25=HEAP8[($24)];
var $26=($25&255);
var $27=$2;
var $28=($27&255);
var $29=($26|0)<=($28|0);
var $30=($29&1);
var $31=(($30)&255);
$LOC3=$31;
label=4;break;
case 4:
var $33=$LOC3;
var $34=(($33<<24)>>24)!=0;
if($34){label=6;break;}else{label=5;break;}
case 5:
label=10;break;
case 6:
var $37=(($FR+8)|0);
HEAP32[(($37)>>2)]=167;
var $38=(($FR+12)|0);
HEAP32[(($38)>>2)]=6336;
var $39=(($LOC7)|0);
var $40=$39;
HEAP8[($40)]=0; HEAP8[((($40)+(1))|0)]=0; HEAP8[((($40)+(2))|0)]=0; HEAP8[((($40)+(3))|0)]=0;
var $41=$1;
var $42=(($41)|0);
var $43=(($42+8)|0);
var $44=HEAP32[(($43)>>2)];
var $45=$2;
var $46=$3;
var $47=$4;
var $48=_substitutelog_GUiLaZ0b21eA2W7LstPGkg($44,$45,$46,$47);
var $49=(($LOC7)|0);
HEAP32[(($49)>>2)]=$48;
var $50=$1;
var $51=(($50+12)|0);
var $52=HEAP32[(($51)>>2)];
var $53=(($LOC7)|0);
_writeline_rBQVO3cm3BhnA9aEFD7PG6Qlogging($52,$53,1);
var $54=(($FR+8)|0);
HEAP32[(($54)>>2)]=168;
var $55=(($FR+12)|0);
HEAP32[(($55)>>2)]=6336;
var $56=$2;
var $57=($56&255);
var $58=$57&7;
var $59=1<<$58;
var $60=96&$59;
var $61=($60|0)!=0;
if($61){label=8;break;}else{label=7;break;}
case 7:
label=9;break;
case 8:
var $64=$1;
var $65=(($64+12)|0);
var $66=HEAP32[(($65)>>2)];
_flushfile_BWnr8V7RERYno9bIdPmw8Hw_2($66);
label=9;break;
case 9:
label=10;break;
case 10:
_popFrame160();
STACKTOP=sp;return;
default: assert(0, "bad label: " + label);
}
}
function _rotate_bHYfZPrwSC9aTEhX7BtAatw($logger0){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+40)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
label = 1;
while(1)switch(label){
case 1:
var $1;
var $LOC1=sp;
var $dir0;
var $name0;
var $ext0;
var $FR=(sp)+(16);
var $i_eVYqvKQF5dUxoBiTqcJmBA;
var $HEX3Atmp_olwylfpyRd1zzgFmMZp4Sw;
var $res_eNEh1riV1ZYZwpwKm9cdvdA;
var $srcsuff0;
var $LOC12;
var $LOC13;
var $LOC14;
var $T_7EbqAVTAsJVrNKIE9b0UU9bA_42;
var $LOC15;
var $LOC16;
var $T_7EbqAVTAsJVrNKIE9b0UU9bA_43;
var $LOC9;
var $LOC10;
$1=$logger0;
var $2=(($FR+4)|0);
HEAP32[(($2)>>2)]=6368;
var $3=(($FR+12)|0);
HEAP32[(($3)>>2)]=6336;
var $4=(($FR+8)|0);
HEAP32[(($4)>>2)]=0;
var $5=(($FR+16)|0);
HEAP16[(($5)>>1)]=0;
_nimFrame155($FR);
var $6=(($FR+8)|0);
HEAP32[(($6)>>2)]=245;
var $7=(($FR+12)|0);
HEAP32[(($7)>>2)]=6336;
var $8=$LOC1;
_memset($8, 0, 12)|0;
var $9=$1;
var $10=(($9+24)|0);
var $11=HEAP32[(($10)>>2)];
_nossplitFile($11,$LOC1);
$dir0=0;
var $12=(($LOC1)|0);
var $13=HEAP32[(($12)>>2)];
$dir0=$13;
$name0=0;
var $14=(($LOC1+4)|0);
var $15=HEAP32[(($14)>>2)];
$name0=$15;
$ext0=0;
var $16=(($LOC1+8)|0);
var $17=HEAP32[(($16)>>2)];
$ext0=$17;
$i_eVYqvKQF5dUxoBiTqcJmBA=0;
$HEX3Atmp_olwylfpyRd1zzgFmMZp4Sw=0;
var $18=(($FR+8)|0);
HEAP32[(($18)>>2)]=246;
var $19=(($FR+12)|0);
HEAP32[(($19)>>2)]=6336;
var $20=$1;
var $21=(($20+32)|0);
var $22=HEAP32[(($21)>>2)];
$HEX3Atmp_olwylfpyRd1zzgFmMZp4Sw=$22;
var $23=(($FR+8)|0);
HEAP32[(($23)>>2)]=1896;
var $24=(($FR+12)|0);
HEAP32[(($24)>>2)]=4224;
var $25=$HEX3Atmp_olwylfpyRd1zzgFmMZp4Sw;
$res_eNEh1riV1ZYZwpwKm9cdvdA=$25;
var $26=(($FR+8)|0);
HEAP32[(($26)>>2)]=1897;
var $27=(($FR+12)|0);
HEAP32[(($27)>>2)]=4224;
label=2;break;
case 2:
var $29=(($FR+8)|0);
HEAP32[(($29)>>2)]=246;
var $30=(($FR+12)|0);
HEAP32[(($30)>>2)]=6336;
var $31=$res_eNEh1riV1ZYZwpwKm9cdvdA;
var $32=0<=($31|0);
if($32){label=4;break;}else{label=3;break;}
case 3:
label=9;break;
case 4:
var $35=(($FR+8)|0);
HEAP32[(($35)>>2)]=1898;
var $36=(($FR+12)|0);
HEAP32[(($36)>>2)]=4224;
var $37=$res_eNEh1riV1ZYZwpwKm9cdvdA;
$i_eVYqvKQF5dUxoBiTqcJmBA=$37;
var $38=(($FR+8)|0);
HEAP32[(($38)>>2)]=247;
var $39=(($FR+12)|0);
HEAP32[(($39)>>2)]=6336;
var $40=(($FR+8)|0);
HEAP32[(($40)>>2)]=347;
var $41=(($FR+12)|0);
HEAP32[(($41)>>2)]=4224;
var $42=(($FR+8)|0);
HEAP32[(($42)>>2)]=247;
var $43=(($FR+12)|0);
HEAP32[(($43)>>2)]=6336;
var $44=$i_eVYqvKQF5dUxoBiTqcJmBA;
var $45=($44|0)==0;
if($45){label=5;break;}else{label=6;break;}
case 5:
label=7;break;
case 6:
$LOC9=0;
$LOC10=0;
var $48=$i_eVYqvKQF5dUxoBiTqcJmBA;
var $49=_nimIntToStr($48);
$LOC10=$49;
var $50=$LOC10;
var $51=(($50)|0);
var $52=(($51)|0);
var $53=HEAP32[(($52)>>2)];
var $54=((($53)+(1))|0);
var $55=_rawNewString($54);
$LOC9=$55;
var $56=$LOC9;
_appendChar162($56,46);
var $57=$LOC9;
var $58=$LOC10;
_appendString159($57,$58);
var $59=$LOC9;
$srcsuff0=$59;
label=8;break;
case 7:
var $61=_copyString(8192);
$srcsuff0=$61;
label=8;break;
case 8:
var $63=(($FR+8)|0);
HEAP32[(($63)>>2)]=248;
var $64=(($FR+12)|0);
HEAP32[(($64)>>2)]=6336;
$LOC12=0;
var $65=$name0;
var $66=(($65)|0);
var $67=(($66)|0);
var $68=HEAP32[(($67)>>2)];
var $69=$ext0;
var $70=(($69)|0);
var $71=(($70)|0);
var $72=HEAP32[(($71)>>2)];
var $73=((($68)+($72))|0);
var $74=$srcsuff0;
var $75=(($74)|0);
var $76=(($75)|0);
var $77=HEAP32[(($76)>>2)];
var $78=((($73)+($77))|0);
var $79=(($78)|0);
var $80=_rawNewString($79);
$LOC12=$80;
var $81=$LOC12;
var $82=$name0;
_appendString159($81,$82);
var $83=$LOC12;
var $84=$ext0;
_appendString159($83,$84);
var $85=$LOC12;
var $86=$srcsuff0;
_appendString159($85,$86);
$LOC13=0;
var $87=$dir0;
var $88=$LOC12;
var $89=_HEX2F_BsTQv9c9anbxt9bKmR0aN1elQ($87,$88);
$LOC13=$89;
var $90=(($FR+8)|0);
HEAP32[(($90)>>2)]=249;
var $91=(($FR+12)|0);
HEAP32[(($91)>>2)]=6336;
$LOC14=0;
var $92=$i_eVYqvKQF5dUxoBiTqcJmBA;
var $93=_addInt156($92,1);
$T_7EbqAVTAsJVrNKIE9b0UU9bA_42=$93;
$LOC15=0;
var $94=$T_7EbqAVTAsJVrNKIE9b0UU9bA_42;
var $95=_nimIntToStr($94);
$LOC15=$95;
var $96=$name0;
var $97=(($96)|0);
var $98=(($97)|0);
var $99=HEAP32[(($98)>>2)];
var $100=$ext0;
var $101=(($100)|0);
var $102=(($101)|0);
var $103=HEAP32[(($102)>>2)];
var $104=((($99)+($103))|0);
var $105=$LOC15;
var $106=(($105)|0);
var $107=(($106)|0);
var $108=HEAP32[(($107)>>2)];
var $109=((($104)+($108))|0);
var $110=((($109)+(1))|0);
var $111=_rawNewString($110);
$LOC14=$111;
var $112=$LOC14;
var $113=$name0;
_appendString159($112,$113);
var $114=$LOC14;
var $115=$ext0;
_appendString159($114,$115);
var $116=$LOC14;
_appendChar162($116,46);
var $117=$LOC14;
var $118=$LOC15;
_appendString159($117,$118);
$LOC16=0;
var $119=$dir0;
var $120=$LOC14;
var $121=_HEX2F_BsTQv9c9anbxt9bKmR0aN1elQ($119,$120);
$LOC16=$121;
var $122=$LOC13;
var $123=$LOC16;
_nosmoveFile($122,$123);
var $124=(($FR+8)|0);
HEAP32[(($124)>>2)]=1896;
var $125=(($FR+12)|0);
HEAP32[(($125)>>2)]=4224;
var $126=$res_eNEh1riV1ZYZwpwKm9cdvdA;
var $127=_subInt163($126,1);
$T_7EbqAVTAsJVrNKIE9b0UU9bA_43=$127;
var $128=$T_7EbqAVTAsJVrNKIE9b0UU9bA_43;
$res_eNEh1riV1ZYZwpwKm9cdvdA=$128;
label=2;break;
case 9:
_popFrame160();
STACKTOP=sp;return;
default: assert(0, "bad label: " + label);
}
}
function _log_Z1wwTzhV8hfwxjrAweVVZQ($logger0,$level0,$args0,$args0Len0){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+32)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
label = 1;
while(1)switch(label){
case 1:
var $1;
var $2;
var $3;
var $4;
var $FR=sp;
var $LOC3;
var $LOC11=(sp)+(24);
var $T_7EbqAVTAsJVrNKIE9b0UU9bA_45;
var $T_7EbqAVTAsJVrNKIE9b0UU9bA_44;
$1=$logger0;
$2=$level0;
$3=$args0;
$4=$args0Len0;
var $5=(($FR+4)|0);
HEAP32[(($5)>>2)]=3600;
var $6=(($FR+12)|0);
HEAP32[(($6)>>2)]=6336;
var $7=(($FR+8)|0);
HEAP32[(($7)>>2)]=0;
var $8=(($FR+16)|0);
HEAP16[(($8)>>1)]=0;
_nimFrame155($FR);
var $9=(($FR+8)|0);
HEAP32[(($9)>>2)]=253;
var $10=(($FR+12)|0);
HEAP32[(($10)>>2)]=6336;
$LOC3=0;
var $11=HEAP8[(15696)];
var $12=($11&255);
var $13=$2;
var $14=($13&255);
var $15=($12|0)<=($14|0);
var $16=($15&1);
var $17=(($16)&255);
$LOC3=$17;
var $18=$LOC3;
var $19=(($18<<24)>>24)!=0;
if($19){label=3;break;}else{label=2;break;}
case 2:
label=4;break;
case 3:
var $22=$1;
var $23=(($22)|0);
var $24=(($23)|0);
var $25=(($24+4)|0);
var $26=HEAP8[($25)];
var $27=($26&255);
var $28=$2;
var $29=($28&255);
var $30=($27|0)<=($29|0);
var $31=($30&1);
var $32=(($31)&255);
$LOC3=$32;
label=4;break;
case 4:
var $34=$LOC3;
var $35=(($34<<24)>>24)!=0;
if($35){label=6;break;}else{label=5;break;}
case 5:
label=13;break;
case 6:
var $38=(($FR+8)|0);
HEAP32[(($38)>>2)]=254;
var $39=(($FR+12)|0);
HEAP32[(($39)>>2)]=6336;
var $40=$1;
var $41=(($40+16)|0);
var $42=HEAP32[(($41)>>2)];
var $43=$1;
var $44=(($43+20)|0);
var $45=HEAP32[(($44)>>2)];
var $46=($42|0)<=($45|0);
if($46){label=8;break;}else{label=7;break;}
case 7:
label=9;break;
case 8:
var $49=(($FR+8)|0);
HEAP32[(($49)>>2)]=255;
var $50=(($FR+12)|0);
HEAP32[(($50)>>2)]=6336;
var $51=$1;
var $52=(($51)|0);
var $53=(($52+12)|0);
var $54=HEAP32[(($53)>>2)];
_close_BWnr8V7RERYno9bIdPmw8Hw($54);
var $55=(($FR+8)|0);
HEAP32[(($55)>>2)]=256;
var $56=(($FR+12)|0);
HEAP32[(($56)>>2)]=6336;
var $57=$1;
_rotate_bHYfZPrwSC9aTEhX7BtAatw($57);
var $58=(($FR+8)|0);
HEAP32[(($58)>>2)]=257;
var $59=(($FR+12)|0);
HEAP32[(($59)>>2)]=6336;
var $60=$1;
var $61=(($60+32)|0);
var $62=HEAP32[(($61)>>2)];
var $63=_addInt156($62,1);
$T_7EbqAVTAsJVrNKIE9b0UU9bA_44=$63;
var $64=$T_7EbqAVTAsJVrNKIE9b0UU9bA_44;
var $65=$1;
var $66=(($65+32)|0);
HEAP32[(($66)>>2)]=$64;
var $67=(($FR+8)|0);
HEAP32[(($67)>>2)]=258;
var $68=(($FR+12)|0);
HEAP32[(($68)>>2)]=6336;
var $69=$1;
var $70=(($69+20)|0);
HEAP32[(($70)>>2)]=0;
var $71=(($FR+8)|0);
HEAP32[(($71)>>2)]=259;
var $72=(($FR+12)|0);
HEAP32[(($72)>>2)]=6336;
var $73=$1;
var $74=(($73+24)|0);
var $75=HEAP32[(($74)>>2)];
var $76=$1;
var $77=(($76+28)|0);
var $78=HEAP8[($77)];
var $79=$1;
var $80=(($79+36)|0);
var $81=HEAP32[(($80)>>2)];
var $82=_open_hqzpWQbdA2B8l9a6wwNoP4g($75,$78,$81);
var $83=$1;
var $84=(($83)|0);
var $85=(($84+12)|0);
HEAP32[(($85)>>2)]=$82;
label=9;break;
case 9:
var $87=(($FR+8)|0);
HEAP32[(($87)>>2)]=261;
var $88=(($FR+12)|0);
HEAP32[(($88)>>2)]=6336;
var $89=(($LOC11)|0);
var $90=$89;
HEAP8[($90)]=0; HEAP8[((($90)+(1))|0)]=0; HEAP8[((($90)+(2))|0)]=0; HEAP8[((($90)+(3))|0)]=0;
var $91=$1;
var $92=(($91)|0);
var $93=(($92)|0);
var $94=(($93+8)|0);
var $95=HEAP32[(($94)>>2)];
var $96=$2;
var $97=$3;
var $98=$4;
var $99=_substitutelog_GUiLaZ0b21eA2W7LstPGkg($95,$96,$97,$98);
var $100=(($LOC11)|0);
HEAP32[(($100)>>2)]=$99;
var $101=$1;
var $102=(($101)|0);
var $103=(($102+12)|0);
var $104=HEAP32[(($103)>>2)];
var $105=(($LOC11)|0);
_writeline_rBQVO3cm3BhnA9aEFD7PG6Qlogging($104,$105,1);
var $106=(($FR+8)|0);
HEAP32[(($106)>>2)]=262;
var $107=(($FR+12)|0);
HEAP32[(($107)>>2)]=6336;
var $108=$2;
var $109=($108&255);
var $110=$109&7;
var $111=1<<$110;
var $112=96&$111;
var $113=($112|0)!=0;
if($113){label=11;break;}else{label=10;break;}
case 10:
label=12;break;
case 11:
var $116=$1;
var $117=(($116)|0);
var $118=(($117+12)|0);
var $119=HEAP32[(($118)>>2)];
_flushfile_BWnr8V7RERYno9bIdPmw8Hw_2($119);
label=12;break;
case 12:
var $121=(($FR+8)|0);
HEAP32[(($121)>>2)]=263;
var $122=(($FR+12)|0);
HEAP32[(($122)>>2)]=6336;
var $123=$1;
var $124=(($123+20)|0);
var $125=HEAP32[(($124)>>2)];
var $126=_addInt156($125,1);
$T_7EbqAVTAsJVrNKIE9b0UU9bA_45=$126;
var $127=$T_7EbqAVTAsJVrNKIE9b0UU9bA_45;
var $128=$1;
var $129=(($128+20)|0);
HEAP32[(($129)>>2)]=$127;
label=13;break;
case 13:
_popFrame160();
STACKTOP=sp;return;
default: assert(0, "bad label: " + label);
}
}
function _logloop_Y1QvvdpC0FmKBCafruMWGQ($level0,$args0,$args0Len0){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+24)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
label = 1;
while(1)switch(label){
case 1:
var $1;
var $2;
var $3;
var $FR=sp;
var $logger_XApjmV0oYNRw9cxHUtKtjvg;
var $i_1F3ekmVHswvYBAYE2P0jEA;
var $L_iaupH2Qgx03UJZtxdQ9aXAQ;
var $T_7EbqAVTAsJVrNKIE9b0UU9bA_46;
$1=$level0;
$2=$args0;
$3=$args0Len0;
var $4=(($FR+4)|0);
HEAP32[(($4)>>2)]=6024;
var $5=(($FR+12)|0);
HEAP32[(($5)>>2)]=6336;
var $6=(($FR+8)|0);
HEAP32[(($6)>>2)]=0;
var $7=(($FR+16)|0);
HEAP16[(($7)>>1)]=0;
_nimFrame155($FR);
$logger_XApjmV0oYNRw9cxHUtKtjvg=0;
var $8=(($FR+8)|0);
HEAP32[(($8)>>2)]=3497;
var $9=(($FR+12)|0);
HEAP32[(($9)>>2)]=4224;
$i_1F3ekmVHswvYBAYE2P0jEA=0;
var $10=(($FR+8)|0);
HEAP32[(($10)>>2)]=3498;
var $11=(($FR+12)|0);
HEAP32[(($11)>>2)]=4224;
var $12=(($FR+8)|0);
HEAP32[(($12)>>2)]=268;
var $13=(($FR+12)|0);
HEAP32[(($13)>>2)]=6336;
var $14=HEAP32[((15992)>>2)];
var $15=($14|0)!=0;
if($15){label=2;break;}else{label=3;break;}
case 2:
var $17=HEAP32[((15992)>>2)];
var $18=(($17)|0);
var $19=(($18)|0);
var $20=HEAP32[(($19)>>2)];
var $23=$20;label=4;break;
case 3:
var $23=0;label=4;break;
case 4:
var $23;
$L_iaupH2Qgx03UJZtxdQ9aXAQ=$23;
var $24=(($FR+8)|0);
HEAP32[(($24)>>2)]=3499;
var $25=(($FR+12)|0);
HEAP32[(($25)>>2)]=4224;
label=5;break;
case 5:
var $27=(($FR+8)|0);
HEAP32[(($27)>>2)]=3497;
var $28=(($FR+12)|0);
HEAP32[(($28)>>2)]=4224;
var $29=$i_1F3ekmVHswvYBAYE2P0jEA;
var $30=$L_iaupH2Qgx03UJZtxdQ9aXAQ;
var $31=($29|0)<($30|0);
if($31){label=7;break;}else{label=6;break;}
case 6:
label=19;break;
case 7:
var $34=(($FR+8)|0);
HEAP32[(($34)>>2)]=3500;
var $35=(($FR+12)|0);
HEAP32[(($35)>>2)]=4224;
var $36=$i_1F3ekmVHswvYBAYE2P0jEA;
var $37=HEAP32[((15992)>>2)];
var $38=(($37)|0);
var $39=(($38)|0);
var $40=HEAP32[(($39)>>2)];
var $41=($36>>>0)>=($40>>>0);
if($41){label=8;break;}else{label=9;break;}
case 8:
_raiseIndexError();
label=9;break;
case 9:
var $44=$i_1F3ekmVHswvYBAYE2P0jEA;
var $45=HEAP32[((15992)>>2)];
var $46=(($45+8)|0);
var $47=(($46+($44<<2))|0);
var $48=((((HEAPU8[($47)])|(HEAPU8[((($47)+(1))|0)]<<8)|(HEAPU8[((($47)+(2))|0)]<<16)|(HEAPU8[((($47)+(3))|0)]<<24))|0));
$logger_XApjmV0oYNRw9cxHUtKtjvg=$48;
var $49=(($FR+8)|0);
HEAP32[(($49)>>2)]=269;
var $50=(($FR+12)|0);
HEAP32[(($50)>>2)]=6336;
var $51=$logger_XApjmV0oYNRw9cxHUtKtjvg;
var $52=(($51+4)|0);
var $53=HEAP8[($52)];
var $54=($53&255);
var $55=$1;
var $56=($55&255);
var $57=($54|0)<=($56|0);
if($57){label=11;break;}else{label=10;break;}
case 10:
label=12;break;
case 11:
var $60=(($FR+8)|0);
HEAP32[(($60)>>2)]=270;
var $61=(($FR+12)|0);
HEAP32[(($61)>>2)]=6336;
var $62=$logger_XApjmV0oYNRw9cxHUtKtjvg;
var $63=$1;
var $64=$2;
var $65=$3;
_log_BoknhXXZUS1bUdtvQ5RiNA($62,$63,$64,$65);
label=12;break;
case 12:
var $67=(($FR+8)|0);
HEAP32[(($67)>>2)]=3497;
var $68=(($FR+12)|0);
HEAP32[(($68)>>2)]=4224;
var $69=$i_1F3ekmVHswvYBAYE2P0jEA;
var $70=_addInt156($69,1);
$T_7EbqAVTAsJVrNKIE9b0UU9bA_46=$70;
var $71=$T_7EbqAVTAsJVrNKIE9b0UU9bA_46;
$i_1F3ekmVHswvYBAYE2P0jEA=$71;
var $72=(($FR+8)|0);
HEAP32[(($72)>>2)]=3502;
var $73=(($FR+12)|0);
HEAP32[(($73)>>2)]=4224;
var $74=(($FR+8)|0);
HEAP32[(($74)>>2)]=268;
var $75=(($FR+12)|0);
HEAP32[(($75)>>2)]=6336;
var $76=HEAP32[((15992)>>2)];
var $77=($76|0)!=0;
if($77){label=13;break;}else{label=14;break;}
case 13:
var $79=HEAP32[((15992)>>2)];
var $80=(($79)|0);
var $81=(($80)|0);
var $82=HEAP32[(($81)>>2)];
var $85=$82;label=15;break;
case 14:
var $85=0;label=15;break;
case 15:
var $85;
var $86=$L_iaupH2Qgx03UJZtxdQ9aXAQ;
var $87=($85|0)==($86|0);
if($87){label=16;break;}else{label=17;break;}
case 16:
label=18;break;
case 17:
var $90=(($FR+8)|0);
HEAP32[(($90)>>2)]=3502;
var $91=(($FR+12)|0);
HEAP32[(($91)>>2)]=4224;
_failedassertimpl_aDmpBTs9cPuXp0Mp9cfiNeyA(7904);
label=18;break;
case 18:
label=5;break;
case 19:
_popFrame160();
STACKTOP=sp;return;
default: assert(0, "bad label: " + label);
}
}
function _stdlib_loggingInit000(){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+24)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
var $FR=sp;
var $1=(($FR+4)|0);
HEAP32[(($1)>>2)]=4944;
var $2=(($FR+12)|0);
HEAP32[(($2)>>2)]=6336;
var $3=(($FR+8)|0);
HEAP32[(($3)>>2)]=0;
var $4=(($FR+16)|0);
HEAP16[(($4)>>1)]=0;
_nimFrame155($FR);
_popFrame160();
STACKTOP=sp;return;
}
function _stdlib_loggingDatInit000(){
var label=0;
var sp=STACKTOP; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
label = 1;
while(1)switch(label){
case 1:
var $T_7EbqAVTAsJVrNKIE9b0UU9bA_31;
HEAP32[((20440)>>2)]=12;
HEAP8[(20444)]=17;
HEAP32[((20448)>>2)]=22328;
HEAP32[((15112)>>2)]=15144;
HEAP32[((20184)>>2)]=1;
HEAP8[(20188)]=14;
HEAP32[((20192)>>2)]=0;
HEAP8[(20189)]=3;
$T_7EbqAVTAsJVrNKIE9b0UU9bA_31=0;
label=2;break;
case 2:
var $2=$T_7EbqAVTAsJVrNKIE9b0UU9bA_31;
var $3=($2|0)<8;
if($3){label=3;break;}else{label=5;break;}
case 3:
var $5=$T_7EbqAVTAsJVrNKIE9b0UU9bA_31;
var $6=((($5)+(2))|0);
var $7=((15120+((($6)*(24))&-1))|0);
var $8=(($7)|0);
HEAP8[($8)]=1;
var $9=$T_7EbqAVTAsJVrNKIE9b0UU9bA_31;
var $10=$T_7EbqAVTAsJVrNKIE9b0UU9bA_31;
var $11=((($10)+(2))|0);
var $12=((15120+((($11)*(24))&-1))|0);
var $13=(($12+4)|0);
HEAP32[(($13)>>2)]=$9;
var $14=$T_7EbqAVTAsJVrNKIE9b0UU9bA_31;
var $15=((760+($14<<2))|0);
var $16=HEAP32[(($15)>>2)];
var $17=$T_7EbqAVTAsJVrNKIE9b0UU9bA_31;
var $18=((($17)+(2))|0);
var $19=((15120+((($18)*(24))&-1))|0);
var $20=(($19+12)|0);
HEAP32[(($20)>>2)]=$16;
var $21=$T_7EbqAVTAsJVrNKIE9b0UU9bA_31;
var $22=((($21)+(2))|0);
var $23=((15120+((($22)*(24))&-1))|0);
var $24=$T_7EbqAVTAsJVrNKIE9b0UU9bA_31;
var $25=((15080+($24<<2))|0);
HEAP32[(($25)>>2)]=$23;
label=4;break;
case 4:
var $27=$T_7EbqAVTAsJVrNKIE9b0UU9bA_31;
var $28=((($27)+(1))|0);
$T_7EbqAVTAsJVrNKIE9b0UU9bA_31=$28;
label=2;break;
case 5:
HEAP32[((15376)>>2)]=8;
HEAP8[(15360)]=2;
HEAP32[((15380)>>2)]=15080;
HEAP32[((20196)>>2)]=15360;
HEAP8[(15144)]=1;
HEAP32[((15148)>>2)]=4;
HEAP32[((15152)>>2)]=20184;
HEAP32[((15156)>>2)]=3920;
HEAP32[((15116)>>2)]=15384;
HEAP8[(15384)]=1;
HEAP32[((15388)>>2)]=8;
HEAP32[((15392)>>2)]=22200;
HEAP32[((15396)>>2)]=3864;
HEAP32[((15136)>>2)]=2;
HEAP8[(15120)]=2;
HEAP32[((15140)>>2)]=15112;
HEAP32[((20452)>>2)]=15120;
HEAP32[((21176)>>2)]=12;
HEAP8[(21180)]=17;
HEAP32[((21184)>>2)]=20440;
HEAP32[((15424)>>2)]=0;
HEAP8[(15408)]=2;
HEAP32[((21188)>>2)]=15408;
HEAP32[((19960)>>2)]=4;
HEAP8[(19964)]=22;
HEAP32[((19968)>>2)]=21176;
HEAP32[((21816)>>2)]=16;
HEAP8[(21820)]=17;
HEAP32[((21824)>>2)]=20440;
HEAP8[(15432)]=1;
HEAP32[((15436)>>2)]=12;
HEAP32[((15440)>>2)]=22168;
HEAP32[((15444)>>2)]=3816;
HEAP32[((21828)>>2)]=15432;
HEAP32[((20984)>>2)]=4;
HEAP8[(20988)]=22;
HEAP32[((20992)>>2)]=21816;
HEAP32[((21240)>>2)]=40;
HEAP8[(21244)]=17;
HEAP32[((21248)>>2)]=21816;
HEAP32[((15056)>>2)]=15480;
HEAP8[(15480)]=1;
HEAP32[((15484)>>2)]=16;
HEAP32[((15488)>>2)]=20120;
HEAP32[((15492)>>2)]=3720;
HEAP32[((15060)>>2)]=15504;
HEAP8[(15504)]=1;
HEAP32[((15508)>>2)]=20;
HEAP32[((15512)>>2)]=20120;
HEAP32[((15516)>>2)]=3656;
HEAP32[((15064)>>2)]=15528;
HEAP8[(15528)]=1;
HEAP32[((15532)>>2)]=24;
HEAP32[((15536)>>2)]=22200;
HEAP32[((15540)>>2)]=3608;
HEAP32[((15068)>>2)]=15552;
HEAP8[(15552)]=1;
HEAP32[((15556)>>2)]=28;
HEAP32[((15560)>>2)]=20536;
HEAP32[((15564)>>2)]=3528;
HEAP32[((15072)>>2)]=15576;
HEAP8[(15576)]=1;
HEAP32[((15580)>>2)]=32;
HEAP32[((15584)>>2)]=20120;
HEAP32[((15588)>>2)]=3464;
HEAP32[((15076)>>2)]=15600;
HEAP8[(15600)]=1;
HEAP32[((15604)>>2)]=36;
HEAP32[((15608)>>2)]=20120;
HEAP32[((15612)>>2)]=3424;
HEAP32[((15472)>>2)]=6;
HEAP8[(15456)]=2;
HEAP32[((15476)>>2)]=15056;
HEAP32[((21252)>>2)]=15456;
HEAP32[((19768)>>2)]=4;
HEAP8[(19772)]=22;
HEAP32[((19776)>>2)]=21240;
HEAP32[((21720)>>2)]=4;
HEAP8[(21724)]=22;
HEAP32[((21728)>>2)]=20440;
HEAP32[((20472)>>2)]=4;
HEAP8[(20476)]=24;
HEAP32[((20480)>>2)]=21720;
STACKTOP=sp;return;
default: assert(0, "bad label: " + label);
}
}
function _nimFrame155($s0){
var label=0;
var sp=STACKTOP; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
label = 1;
while(1)switch(label){
case 1:
var $1;
var $LOC1;
$1=$s0;
$LOC1=0;
var $2=HEAP32[((16016)>>2)];
var $3=($2|0)==0;
if($3){label=3;break;}else{label=2;break;}
case 2:
label=4;break;
case 3:
$LOC1=0;
label=5;break;
case 4:
var $7=HEAP32[((16016)>>2)];
var $8=(($7+18)|0);
var $9=HEAP16[(($8)>>1)];
var $10=(($9<<16)>>16);
var $11=((($10)+(1))|0);
var $12=(($11)&65535);
var $13=(($12<<16)>>16);
$LOC1=$13;
label=5;break;
case 5:
var $15=$LOC1;
var $16=(($15)&65535);
var $17=$1;
var $18=(($17+18)|0);
HEAP16[(($18)>>1)]=$16;
var $19=HEAP32[((16016)>>2)];
var $20=$1;
var $21=(($20)|0);
HEAP32[(($21)>>2)]=$19;
var $22=$1;
HEAP32[((16016)>>2)]=$22;
var $23=$1;
var $24=(($23+18)|0);
var $25=HEAP16[(($24)>>1)];
var $26=(($25<<16)>>16);
var $27=($26|0)==2000;
if($27){label=7;break;}else{label=6;break;}
case 6:
label=8;break;
case 7:
_stackoverflow_II46IjNZztN9bmbxUD8dt8g();
label=8;break;
case 8:
STACKTOP=sp;return;
default: assert(0, "bad label: " + label);
}
}
function _addInt156($a0,$b0){
var label=0;
var sp=STACKTOP; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
label = 1;
while(1)switch(label){
case 1:
var $1;
var $2;
var $result0;
var $LOC3;
$1=$a0;
$2=$b0;
$result0=0;
var $3=$1;
var $4=$2;
var $5=((($3)+($4))|0);
$result0=$5;
$LOC3=0;
var $6=$result0;
var $7=$1;
var $8=$6^$7;
var $9=0<=($8|0);
var $10=($9&1);
var $11=(($10)&255);
$LOC3=$11;
var $12=$LOC3;
var $13=(($12<<24)>>24)!=0;
if($13){label=2;break;}else{label=3;break;}
case 2:
label=4;break;
case 3:
var $16=$result0;
var $17=$2;
var $18=$16^$17;
var $19=0<=($18|0);
var $20=($19&1);
var $21=(($20)&255);
$LOC3=$21;
label=4;break;
case 4:
var $23=$LOC3;
var $24=(($23<<24)>>24)!=0;
if($24){label=6;break;}else{label=5;break;}
case 5:
label=7;break;
case 6:
label=8;break;
case 7:
_raiseOverflow();
label=8;break;
case 8:
var $29=$result0;
STACKTOP=sp;return $29;
default: assert(0, "bad label: " + label);
}
}
function _chckRange157($i0,$a0,$b0){
var label=0;
var sp=STACKTOP; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
label = 1;
while(1)switch(label){
case 1:
var $1;
var $2;
var $3;
var $result0;
var $LOC3;
$1=$i0;
$2=$a0;
$3=$b0;
$result0=0;
$LOC3=0;
var $4=$2;
var $5=$1;
var $6=($4|0)<=($5|0);
var $7=($6&1);
var $8=(($7)&255);
$LOC3=$8;
var $9=$LOC3;
var $10=(($9<<24)>>24)!=0;
if($10){label=3;break;}else{label=2;break;}
case 2:
label=4;break;
case 3:
var $13=$1;
var $14=$3;
var $15=($13|0)<=($14|0);
var $16=($15&1);
var $17=(($16)&255);
$LOC3=$17;
label=4;break;
case 4:
var $19=$LOC3;
var $20=(($19<<24)>>24)!=0;
if($20){label=6;break;}else{label=5;break;}
case 5:
label=7;break;
case 6:
var $23=$1;
$result0=$23;
label=9;break;
case 7:
var $25=$1;
var $26$0=$25;
var $26$1=((((($25|0)<0))|0)?-1:0);
_raiseRangeError($26$0,$26$1);
label=8;break;
case 8:
label=9;break;
case 9:
var $29=$result0;
STACKTOP=sp;return $29;
default: assert(0, "bad label: " + label);
}
}
function _eqStrings158($a0,$b0){
var label=0;
var sp=STACKTOP; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
label = 1;
while(1)switch(label){
case 1:
var $1;
var $2;
var $result0;
var $LOC11;
var $LOC7;
$1=$a0;
$2=$b0;
$result0=0;
var $3=$1;
var $4=$2;
var $5=($3|0)==($4|0);
if($5){label=3;break;}else{label=2;break;}
case 2:
label=4;break;
case 3:
$result0=1;
label=14;break;
case 4:
$LOC7=0;
var $9=$1;
var $10=($9|0)==0;
var $11=($10&1);
var $12=(($11)&255);
$LOC7=$12;
var $13=$LOC7;
var $14=(($13<<24)>>24)!=0;
if($14){label=5;break;}else{label=6;break;}
case 5:
label=7;break;
case 6:
var $17=$2;
var $18=($17|0)==0;
var $19=($18&1);
var $20=(($19)&255);
$LOC7=$20;
label=7;break;
case 7:
var $22=$LOC7;
var $23=(($22<<24)>>24)!=0;
if($23){label=9;break;}else{label=8;break;}
case 8:
label=10;break;
case 9:
$result0=0;
label=14;break;
case 10:
$LOC11=0;
var $27=$1;
var $28=(($27)|0);
var $29=(($28)|0);
var $30=HEAP32[(($29)>>2)];
var $31=$2;
var $32=(($31)|0);
var $33=(($32)|0);
var $34=HEAP32[(($33)>>2)];
var $35=($30|0)==($34|0);
var $36=($35&1);
var $37=(($36)&255);
$LOC11=$37;
var $38=$LOC11;
var $39=(($38<<24)>>24)!=0;
if($39){label=12;break;}else{label=11;break;}
case 11:
label=13;break;
case 12:
var $42=$1;
var $43=(($42+8)|0);
var $44=(($43)|0);
var $45=$2;
var $46=(($45+8)|0);
var $47=(($46)|0);
var $48=$1;
var $49=(($48)|0);
var $50=(($49)|0);
var $51=HEAP32[(($50)>>2)];
var $52=_equalmem_DCrUjdaMvFDHaR1hs7sQGwsystem170($44,$47,$51);
$LOC11=$52;
label=13;break;
case 13:
var $54=$LOC11;
$result0=$54;
label=14;break;
case 14:
var $56=$result0;
STACKTOP=sp;return $56;
default: assert(0, "bad label: " + label);
}
}
function _appendString159($dest0,$src0){
var label=0;
var sp=STACKTOP; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
var $1;
var $2;
$1=$dest0;
$2=$src0;
var $3=$1;
var $4=(($3)|0);
var $5=(($4)|0);
var $6=HEAP32[(($5)>>2)];
var $7=(($6)|0);
var $8=$1;
var $9=(($8+8)|0);
var $10=(($9+$7)|0);
var $11=$2;
var $12=(($11+8)|0);
var $13=(($12)|0);
var $14=$2;
var $15=(($14)|0);
var $16=(($15)|0);
var $17=HEAP32[(($16)>>2)];
var $18=((($17)+(1))|0);
_copymem_fPlwH3r9agN9aEHB6yCPMh0wsystem171($10,$13,$18);
var $19=$2;
var $20=(($19)|0);
var $21=(($20)|0);
var $22=HEAP32[(($21)>>2)];
var $23=$1;
var $24=(($23)|0);
var $25=(($24)|0);
var $26=HEAP32[(($25)>>2)];
var $27=((($26)+($22))|0);
HEAP32[(($25)>>2)]=$27;
STACKTOP=sp;return;
}
function _popFrame160(){
var label=0;
var $1=HEAP32[((16016)>>2)];
var $2=(($1)|0);
var $3=HEAP32[(($2)>>2)];
HEAP32[((16016)>>2)]=$3;
return;
}
function _writeline_rBQVO3cm3BhnA9aEFD7PG6Qlogging($f0,$x0,$x0Len0){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+24)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
label = 1;
while(1)switch(label){
case 1:
var $1;
var $2;
var $3;
var $FR=sp;
var $i_kSboRGYz9bWc0rf2v8AlLGQ;
var $i_kSboRGYz9bWc0rf2v8AlLGQ_2;
$1=$f0;
$2=$x0;
$3=$x0Len0;
var $4=(($FR+4)|0);
HEAP32[(($4)>>2)]=3272;
var $5=(($FR+12)|0);
HEAP32[(($5)>>2)]=3208;
var $6=(($FR+8)|0);
HEAP32[(($6)>>2)]=0;
var $7=(($FR+16)|0);
HEAP16[(($7)>>1)]=0;
_nimFrame155($FR);
$i_kSboRGYz9bWc0rf2v8AlLGQ=0;
var $8=(($FR+8)|0);
HEAP32[(($8)>>2)]=1999;
var $9=(($FR+12)|0);
HEAP32[(($9)>>2)]=4224;
$i_kSboRGYz9bWc0rf2v8AlLGQ_2=0;
var $10=(($FR+8)|0);
HEAP32[(($10)>>2)]=2000;
var $11=(($FR+12)|0);
HEAP32[(($11)>>2)]=4224;
label=2;break;
case 2:
var $13=(($FR+8)|0);
HEAP32[(($13)>>2)]=1999;
var $14=(($FR+12)|0);
HEAP32[(($14)>>2)]=4224;
var $15=(($FR+8)|0);
HEAP32[(($15)>>2)]=235;
var $16=(($FR+12)|0);
HEAP32[(($16)>>2)]=3208;
var $17=$i_kSboRGYz9bWc0rf2v8AlLGQ_2;
var $18=$3;
var $19=($17|0)<($18|0);
if($19){label=4;break;}else{label=3;break;}
case 3:
label=5;break;
case 4:
var $22=(($FR+8)|0);
HEAP32[(($22)>>2)]=2001;
var $23=(($FR+12)|0);
HEAP32[(($23)>>2)]=4224;
var $24=$i_kSboRGYz9bWc0rf2v8AlLGQ_2;
var $25=$2;
var $26=(($25+($24<<2))|0);
var $27=HEAP32[(($26)>>2)];
$i_kSboRGYz9bWc0rf2v8AlLGQ=$27;
var $28=(($FR+8)|0);
HEAP32[(($28)>>2)]=236;
var $29=(($FR+12)|0);
HEAP32[(($29)>>2)]=3208;
var $30=$1;
var $31=$i_kSboRGYz9bWc0rf2v8AlLGQ;
_write_c4mGyJBvK73pdM22jiweKQ($30,$31);
var $32=(($FR+8)|0);
HEAP32[(($32)>>2)]=1999;
var $33=(($FR+12)|0);
HEAP32[(($33)>>2)]=4224;
var $34=$i_kSboRGYz9bWc0rf2v8AlLGQ_2;
var $35=((($34)+(1))|0);
$i_kSboRGYz9bWc0rf2v8AlLGQ_2=$35;
label=2;break;
case 5:
var $37=(($FR+8)|0);
HEAP32[(($37)>>2)]=237;
var $38=(($FR+12)|0);
HEAP32[(($38)>>2)]=3208;
var $39=$1;
_write_c4mGyJBvK73pdM22jiweKQ($39,8000);
_popFrame160();
STACKTOP=sp;return;
default: assert(0, "bad label: " + label);
}
}
function _appendChar162($dest0,$c0){
var label=0;
var sp=STACKTOP; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
var $1;
var $2;
$1=$dest0;
$2=$c0;
var $3=$2;
var $4=$1;
var $5=(($4)|0);
var $6=(($5)|0);
var $7=HEAP32[(($6)>>2)];
var $8=(($7)|0);
var $9=$1;
var $10=(($9+8)|0);
var $11=(($10+$8)|0);
HEAP8[($11)]=$3;
var $12=$1;
var $13=(($12)|0);
var $14=(($13)|0);
var $15=HEAP32[(($14)>>2)];
var $16=((($15)+(1))|0);
var $17=(($16)|0);
var $18=$1;
var $19=(($18+8)|0);
var $20=(($19+$17)|0);
HEAP8[($20)]=0;
var $21=$1;
var $22=(($21)|0);
var $23=(($22)|0);
var $24=HEAP32[(($23)>>2)];
var $25=((($24)+(1))|0);
HEAP32[(($23)>>2)]=$25;
STACKTOP=sp;return;
}
function _subInt163($a0,$b0){
var label=0;
var sp=STACKTOP; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
label = 1;
while(1)switch(label){
case 1:
var $1;
var $2;
var $result0;
var $LOC3;
$1=$a0;
$2=$b0;
$result0=0;
var $3=$1;
var $4=$2;
var $5=((($3)-($4))|0);
$result0=$5;
$LOC3=0;
var $6=$result0;
var $7=$1;
var $8=$6^$7;
var $9=0<=($8|0);
var $10=($9&1);
var $11=(($10)&255);
$LOC3=$11;
var $12=$LOC3;
var $13=(($12<<24)>>24)!=0;
if($13){label=2;break;}else{label=3;break;}
case 2:
label=4;break;
case 3:
var $16=$result0;
var $17=$2;
var $18=$17^-1;
var $19=$16^$18;
var $20=0<=($19|0);
var $21=($20&1);
var $22=(($21)&255);
$LOC3=$22;
label=4;break;
case 4:
var $24=$LOC3;
var $25=(($24<<24)>>24)!=0;
if($25){label=6;break;}else{label=5;break;}
case 5:
label=7;break;
case 6:
label=8;break;
case 7:
_raiseOverflow();
label=8;break;
case 8:
var $30=$result0;
STACKTOP=sp;return $30;
default: assert(0, "bad label: " + label);
}
}
function _equalmem_DCrUjdaMvFDHaR1hs7sQGwsystem170($a0,$b0,$size0){
var label=0;
var sp=STACKTOP; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
var $1;
var $2;
var $3;
var $result0;
var $LOC1;
$1=$a0;
$2=$b0;
$3=$size0;
$result0=0;
$LOC1=0;
var $4=$1;
var $5=$2;
var $6=$3;
var $7=_memcmp($4,$5,$6);
$LOC1=$7;
var $8=$LOC1;
var $9=($8|0)==0;
var $10=($9&1);
var $11=(($10)&255);
$result0=$11;
var $12=$result0;
STACKTOP=sp;return $12;
}
function _copymem_fPlwH3r9agN9aEHB6yCPMh0wsystem171($dest0,$source0,$size0){
var label=0;
var sp=STACKTOP; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
var $1;
var $2;
var $3;
var $LOC1;
$1=$dest0;
$2=$source0;
$3=$size0;
$LOC1=0;
var $4=$1;
var $5=$2;
var $6=$3;
assert($6 % 1 === 0);(_memcpy($4, $5, $6)|0);
$LOC1=$4;
STACKTOP=sp;return;
}
function _nsuIntToStr($x0,$minchars0){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+24)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
label = 1;
while(1)switch(label){
case 1:
var $1;
var $2;
var $result0;
var $FR=sp;
var $i_0WI5azliNHYkVYV8ChzA6A;
var $HEX3Atmp_fSOxXjlVMUMPmJjXyPHj4Q;
var $res_9aPdOY13II9avtAIzc2NHzgg;
var $LOC4;
var $LOC9;
$1=$x0;
$2=$minchars0;
var $3=(($FR+4)|0);
HEAP32[(($3)>>2)]=4928;
var $4=(($FR+12)|0);
HEAP32[(($4)>>2)]=6120;
var $5=(($FR+8)|0);
HEAP32[(($5)>>2)]=0;
var $6=(($FR+16)|0);
HEAP16[(($6)>>1)]=0;
_nimFrame200($FR);
$result0=0;
var $7=$1;
var $8=($7|0)>0;
if($8){label=2;break;}else{label=3;break;}
case 2:
var $10=$1;
var $15=$10;label=4;break;
case 3:
var $12=$1;
var $13=(((-$12))|0);
var $15=$13;label=4;break;
case 4:
var $15;
var $16=_nimIntToStr($15);
$result0=$16;
$i_0WI5azliNHYkVYV8ChzA6A=0;
$HEX3Atmp_fSOxXjlVMUMPmJjXyPHj4Q=0;
var $17=$2;
var $18=$result0;
var $19=($18|0)!=0;
if($19){label=5;break;}else{label=6;break;}
case 5:
var $21=$result0;
var $22=(($21)|0);
var $23=(($22)|0);
var $24=HEAP32[(($23)>>2)];
var $27=$24;label=7;break;
case 6:
var $27=0;label=7;break;
case 7:
var $27;
var $28=((($17)-($27))|0);
$HEX3Atmp_fSOxXjlVMUMPmJjXyPHj4Q=$28;
$res_9aPdOY13II9avtAIzc2NHzgg=1;
label=8;break;
case 8:
var $30=$res_9aPdOY13II9avtAIzc2NHzgg;
var $31=$HEX3Atmp_fSOxXjlVMUMPmJjXyPHj4Q;
var $32=($30|0)<=($31|0);
if($32){label=10;break;}else{label=9;break;}
case 9:
label=11;break;
case 10:
var $35=$res_9aPdOY13II9avtAIzc2NHzgg;
$i_0WI5azliNHYkVYV8ChzA6A=$35;
$LOC4=0;
var $36=$result0;
var $37=(($36)|0);
var $38=(($37)|0);
var $39=HEAP32[(($38)>>2)];
var $40=((($39)+(1))|0);
var $41=_rawNewString($40);
$LOC4=$41;
var $42=$LOC4;
_appendChar201($42,48);
var $43=$LOC4;
var $44=$result0;
_appendString202($43,$44);
var $45=$LOC4;
$result0=$45;
var $46=$res_9aPdOY13II9avtAIzc2NHzgg;
var $47=((($46)+(1))|0);
$res_9aPdOY13II9avtAIzc2NHzgg=$47;
label=8;break;
case 11:
var $49=$1;
var $50=($49|0)<0;
if($50){label=13;break;}else{label=12;break;}
case 12:
label=14;break;
case 13:
$LOC9=0;
var $53=$result0;
var $54=(($53)|0);
var $55=(($54)|0);
var $56=HEAP32[(($55)>>2)];
var $57=((($56)+(1))|0);
var $58=_rawNewString($57);
$LOC9=$58;
var $59=$LOC9;
_appendChar201($59,45);
var $60=$LOC9;
var $61=$result0;
_appendString202($60,$61);
var $62=$LOC9;
$result0=$62;
label=14;break;
case 14:
_popFrame203();
var $64=$result0;
STACKTOP=sp;return $64;
default: assert(0, "bad label: " + label);
}
}
function _nsuToLowerAsciiChar($c0){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+24)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
label = 1;
while(1)switch(label){
case 1:
var $1;
var $result0;
var $FR=sp;
var $T_JGc9b9bh2D3nTdUR7TGyq8aA_6;
$1=$c0;
var $2=(($FR+4)|0);
HEAP32[(($2)>>2)]=2832;
var $3=(($FR+12)|0);
HEAP32[(($3)>>2)]=6120;
var $4=(($FR+8)|0);
HEAP32[(($4)>>2)]=0;
var $5=(($FR+16)|0);
HEAP16[(($5)>>1)]=0;
_nimFrame200($FR);
$result0=0;
var $6=(($FR+8)|0);
HEAP32[(($6)>>2)]=209;
var $7=(($FR+12)|0);
HEAP32[(($7)>>2)]=6120;
var $8=$1;
var $9=($8&255);
var $10=($9|0)>=65;
if($10){label=2;break;}else{label=3;break;}
case 2:
var $12=$1;
var $13=($12&255);
var $14=($13|0)<=90;
if($14){label=4;break;}else{label=3;break;}
case 3:
label=5;break;
case 4:
var $17=(($FR+8)|0);
HEAP32[(($17)>>2)]=210;
var $18=(($FR+12)|0);
HEAP32[(($18)>>2)]=6120;
var $19=$1;
var $20=($19&255);
var $21=_addInt204($20,32);
$T_JGc9b9bh2D3nTdUR7TGyq8aA_6=$21;
var $22=$T_JGc9b9bh2D3nTdUR7TGyq8aA_6;
var $23=_chckRange205($22,0,255);
var $24=(($23)&255);
$result0=$24;
label=6;break;
case 5:
var $26=(($FR+8)|0);
HEAP32[(($26)>>2)]=212;
var $27=(($FR+12)|0);
HEAP32[(($27)>>2)]=6120;
var $28=$1;
$result0=$28;
label=6;break;
case 6:
_popFrame203();
var $30=$result0;
STACKTOP=sp;return $30;
default: assert(0, "bad label: " + label);
}
}
function _nsuStartsWith($s0,$prefix0){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+24)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
label = 1;
while(1)switch(label){
case 1:
var $1;
var $2;
var $result0;
var $i0;
var $FR=sp;
$1=$s0;
$2=$prefix0;
var $3=(($FR+4)|0);
HEAP32[(($3)>>2)]=1752;
var $4=(($FR+12)|0);
HEAP32[(($4)>>2)]=6120;
var $5=(($FR+8)|0);
HEAP32[(($5)>>2)]=0;
var $6=(($FR+16)|0);
HEAP16[(($6)>>1)]=0;
_nimFrame200($FR);
$result0=0;
$i0=0;
label=2;break;
case 2:
var $8=$i0;
var $9=$2;
var $10=(($9+8)|0);
var $11=(($10+$8)|0);
var $12=HEAP8[($11)];
var $13=($12&255);
var $14=($13|0)==0;
if($14){label=4;break;}else{label=3;break;}
case 3:
label=5;break;
case 4:
$result0=1;
label=9;break;
case 5:
var $18=$i0;
var $19=$1;
var $20=(($19+8)|0);
var $21=(($20+$18)|0);
var $22=HEAP8[($21)];
var $23=($22&255);
var $24=$i0;
var $25=$2;
var $26=(($25+8)|0);
var $27=(($26+$24)|0);
var $28=HEAP8[($27)];
var $29=($28&255);
var $30=($23|0)==($29|0);
if($30){label=6;break;}else{label=7;break;}
case 6:
label=8;break;
case 7:
$result0=0;
label=9;break;
case 8:
var $34=$i0;
var $35=((($34)+(1))|0);
$i0=$35;
label=2;break;
case 9:
_popFrame203();
var $37=$result0;
STACKTOP=sp;return $37;
default: assert(0, "bad label: " + label);
}
}
function _nsuFindChar($s0,$sub0,$start0){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+24)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
label = 1;
while(1)switch(label){
case 1:
var $1;
var $2;
var $3;
var $result0;
var $FR=sp;
var $i_S4Ts5NaQRo1vHKx5LGYx5w;
var $HEX3Atmp_Ms17sAa0cfUTjtJ6sQnN2Q;
var $res_dBqJ9biAHlqcB0S3Zb0ahAw;
$1=$s0;
$2=$sub0;
$3=$start0;
var $4=(($FR+4)|0);
HEAP32[(($4)>>2)]=952;
var $5=(($FR+12)|0);
HEAP32[(($5)>>2)]=6120;
var $6=(($FR+8)|0);
HEAP32[(($6)>>2)]=0;
var $7=(($FR+16)|0);
HEAP16[(($7)>>1)]=0;
_nimFrame200($FR);
$result0=0;
$i_S4Ts5NaQRo1vHKx5LGYx5w=0;
$HEX3Atmp_Ms17sAa0cfUTjtJ6sQnN2Q=0;
var $8=$1;
var $9=($8|0)!=0;
if($9){label=2;break;}else{label=3;break;}
case 2:
var $11=$1;
var $12=(($11)|0);
var $13=(($12)|0);
var $14=HEAP32[(($13)>>2)];
var $17=$14;label=4;break;
case 3:
var $17=0;label=4;break;
case 4:
var $17;
var $18=((($17)-(1))|0);
$HEX3Atmp_Ms17sAa0cfUTjtJ6sQnN2Q=$18;
var $19=$3;
$res_dBqJ9biAHlqcB0S3Zb0ahAw=$19;
label=5;break;
case 5:
var $21=$res_dBqJ9biAHlqcB0S3Zb0ahAw;
var $22=$HEX3Atmp_Ms17sAa0cfUTjtJ6sQnN2Q;
var $23=($21|0)<=($22|0);
if($23){label=7;break;}else{label=6;break;}
case 6:
label=11;break;
case 7:
var $26=$res_dBqJ9biAHlqcB0S3Zb0ahAw;
$i_S4Ts5NaQRo1vHKx5LGYx5w=$26;
var $27=$2;
var $28=($27&255);
var $29=$i_S4Ts5NaQRo1vHKx5LGYx5w;
var $30=$1;
var $31=(($30+8)|0);
var $32=(($31+$29)|0);
var $33=HEAP8[($32)];
var $34=($33&255);
var $35=($28|0)==($34|0);
if($35){label=9;break;}else{label=8;break;}
case 8:
label=10;break;
case 9:
var $38=$i_S4Ts5NaQRo1vHKx5LGYx5w;
$result0=$38;
label=12;break;
case 10:
var $40=$res_dBqJ9biAHlqcB0S3Zb0ahAw;
var $41=((($40)+(1))|0);
$res_dBqJ9biAHlqcB0S3Zb0ahAw=$41;
label=5;break;
case 11:
$result0=-1;
label=12;break;
case 12:
_popFrame203();
var $44=$result0;
STACKTOP=sp;return $44;
default: assert(0, "bad label: " + label);
}
}
function _nsuToLowerChar($c0){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+24)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
var $1;
var $result0;
var $FR=sp;
$1=$c0;
var $2=(($FR+4)|0);
HEAP32[(($2)>>2)]=6624;
var $3=(($FR+12)|0);
HEAP32[(($3)>>2)]=6120;
var $4=(($FR+8)|0);
HEAP32[(($4)>>2)]=0;
var $5=(($FR+16)|0);
HEAP16[(($5)>>1)]=0;
_nimFrame200($FR);
$result0=0;
var $6=(($FR+8)|0);
HEAP32[(($6)>>2)]=335;
var $7=(($FR+12)|0);
HEAP32[(($7)>>2)]=6120;
var $8=(($FR+8)|0);
HEAP32[(($8)>>2)]=342;
var $9=(($FR+12)|0);
HEAP32[(($9)>>2)]=6120;
var $10=$1;
var $11=_nsuToLowerAsciiChar($10);
$result0=$11;
_popFrame203();
var $12=$result0;
STACKTOP=sp;return $12;
}
function _stdlib_strutilsInit000(){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+24)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
var $FR=sp;
var $1=(($FR+4)|0);
HEAP32[(($1)>>2)]=6320;
var $2=(($FR+12)|0);
HEAP32[(($2)>>2)]=6120;
var $3=(($FR+8)|0);
HEAP32[(($3)>>2)]=0;
var $4=(($FR+16)|0);
HEAP16[(($4)>>1)]=0;
_nimFrame200($FR);
_popFrame203();
STACKTOP=sp;return;
}
function _stdlib_strutilsDatInit000(){
var label=0;
return;
}
function _nimFrame200($s0){
var label=0;
var sp=STACKTOP; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
label = 1;
while(1)switch(label){
case 1:
var $1;
var $LOC1;
$1=$s0;
$LOC1=0;
var $2=HEAP32[((16016)>>2)];
var $3=($2|0)==0;
if($3){label=3;break;}else{label=2;break;}
case 2:
label=4;break;
case 3:
$LOC1=0;
label=5;break;
case 4:
var $7=HEAP32[((16016)>>2)];
var $8=(($7+18)|0);
var $9=HEAP16[(($8)>>1)];
var $10=(($9<<16)>>16);
var $11=((($10)+(1))|0);
var $12=(($11)&65535);
var $13=(($12<<16)>>16);
$LOC1=$13;
label=5;break;
case 5:
var $15=$LOC1;
var $16=(($15)&65535);
var $17=$1;
var $18=(($17+18)|0);
HEAP16[(($18)>>1)]=$16;
var $19=HEAP32[((16016)>>2)];
var $20=$1;
var $21=(($20)|0);
HEAP32[(($21)>>2)]=$19;
var $22=$1;
HEAP32[((16016)>>2)]=$22;
var $23=$1;
var $24=(($23+18)|0);
var $25=HEAP16[(($24)>>1)];
var $26=(($25<<16)>>16);
var $27=($26|0)==2000;
if($27){label=7;break;}else{label=6;break;}
case 6:
label=8;break;
case 7:
_stackoverflow_II46IjNZztN9bmbxUD8dt8g();
label=8;break;
case 8:
STACKTOP=sp;return;
default: assert(0, "bad label: " + label);
}
}
function _appendChar201($dest0,$c0){
var label=0;
var sp=STACKTOP; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
var $1;
var $2;
$1=$dest0;
$2=$c0;
var $3=$2;
var $4=$1;
var $5=(($4)|0);
var $6=(($5)|0);
var $7=HEAP32[(($6)>>2)];
var $8=(($7)|0);
var $9=$1;
var $10=(($9+8)|0);
var $11=(($10+$8)|0);
HEAP8[($11)]=$3;
var $12=$1;
var $13=(($12)|0);
var $14=(($13)|0);
var $15=HEAP32[(($14)>>2)];
var $16=((($15)+(1))|0);
var $17=(($16)|0);
var $18=$1;
var $19=(($18+8)|0);
var $20=(($19+$17)|0);
HEAP8[($20)]=0;
var $21=$1;
var $22=(($21)|0);
var $23=(($22)|0);
var $24=HEAP32[(($23)>>2)];
var $25=((($24)+(1))|0);
HEAP32[(($23)>>2)]=$25;
STACKTOP=sp;return;
}
function _appendString202($dest0,$src0){
var label=0;
var sp=STACKTOP; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
var $1;
var $2;
$1=$dest0;
$2=$src0;
var $3=$1;
var $4=(($3)|0);
var $5=(($4)|0);
var $6=HEAP32[(($5)>>2)];
var $7=(($6)|0);
var $8=$1;
var $9=(($8+8)|0);
var $10=(($9+$7)|0);
var $11=$2;
var $12=(($11+8)|0);
var $13=(($12)|0);
var $14=$2;
var $15=(($14)|0);
var $16=(($15)|0);
var $17=HEAP32[(($16)>>2)];
var $18=((($17)+(1))|0);
_copymem_fPlwH3r9agN9aEHB6yCPMh0wsystem207($10,$13,$18);
var $19=$2;
var $20=(($19)|0);
var $21=(($20)|0);
var $22=HEAP32[(($21)>>2)];
var $23=$1;
var $24=(($23)|0);
var $25=(($24)|0);
var $26=HEAP32[(($25)>>2)];
var $27=((($26)+($22))|0);
HEAP32[(($25)>>2)]=$27;
STACKTOP=sp;return;
}
function _popFrame203(){
var label=0;
var $1=HEAP32[((16016)>>2)];
var $2=(($1)|0);
var $3=HEAP32[(($2)>>2)];
HEAP32[((16016)>>2)]=$3;
return;
}
function _addInt204($a0,$b0){
var label=0;
var sp=STACKTOP; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
label = 1;
while(1)switch(label){
case 1:
var $1;
var $2;
var $result0;
var $LOC3;
$1=$a0;
$2=$b0;
$result0=0;
var $3=$1;
var $4=$2;
var $5=((($3)+($4))|0);
$result0=$5;
$LOC3=0;
var $6=$result0;
var $7=$1;
var $8=$6^$7;
var $9=0<=($8|0);
var $10=($9&1);
var $11=(($10)&255);
$LOC3=$11;
var $12=$LOC3;
var $13=(($12<<24)>>24)!=0;
if($13){label=2;break;}else{label=3;break;}
case 2:
label=4;break;
case 3:
var $16=$result0;
var $17=$2;
var $18=$16^$17;
var $19=0<=($18|0);
var $20=($19&1);
var $21=(($20)&255);
$LOC3=$21;
label=4;break;
case 4:
var $23=$LOC3;
var $24=(($23<<24)>>24)!=0;
if($24){label=6;break;}else{label=5;break;}
case 5:
label=7;break;
case 6:
label=8;break;
case 7:
_raiseOverflow();
label=8;break;
case 8:
var $29=$result0;
STACKTOP=sp;return $29;
default: assert(0, "bad label: " + label);
}
}
function _chckRange205($i0,$a0,$b0){
var label=0;
var sp=STACKTOP; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
label = 1;
while(1)switch(label){
case 1:
var $1;
var $2;
var $3;
var $result0;
var $LOC3;
$1=$i0;
$2=$a0;
$3=$b0;
$result0=0;
$LOC3=0;
var $4=$2;
var $5=$1;
var $6=($4|0)<=($5|0);
var $7=($6&1);
var $8=(($7)&255);
$LOC3=$8;
var $9=$LOC3;
var $10=(($9<<24)>>24)!=0;
if($10){label=3;break;}else{label=2;break;}
case 2:
label=4;break;
case 3:
var $13=$1;
var $14=$3;
var $15=($13|0)<=($14|0);
var $16=($15&1);
var $17=(($16)&255);
$LOC3=$17;
label=4;break;
case 4:
var $19=$LOC3;
var $20=(($19<<24)>>24)!=0;
if($20){label=6;break;}else{label=5;break;}
case 5:
label=7;break;
case 6:
var $23=$1;
$result0=$23;
label=9;break;
case 7:
var $25=$1;
var $26$0=$25;
var $26$1=((((($25|0)<0))|0)?-1:0);
_raiseRangeError($26$0,$26$1);
label=8;break;
case 8:
label=9;break;
case 9:
var $29=$result0;
STACKTOP=sp;return $29;
default: assert(0, "bad label: " + label);
}
}
function _copymem_fPlwH3r9agN9aEHB6yCPMh0wsystem207($dest0,$source0,$size0){
var label=0;
var sp=STACKTOP; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
var $1;
var $2;
var $3;
var $LOC1;
$1=$dest0;
$2=$source0;
$3=$size0;
$LOC1=0;
var $4=$1;
var $5=$2;
var $6=$3;
assert($6 % 1 === 0);(_memcpy($4, $5, $6)|0);
$LOC1=$4;
STACKTOP=sp;return;
}
function _stdlib_macrosInit000(){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+24)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
var $FR=sp;
var $1=(($FR+4)|0);
HEAP32[(($1)>>2)]=2800;
var $2=(($FR+12)|0);
HEAP32[(($2)>>2)]=6048;
var $3=(($FR+8)|0);
HEAP32[(($3)>>2)]=0;
var $4=(($FR+16)|0);
HEAP16[(($4)>>1)]=0;
_nimFrame296($FR);
_popFrame297();
STACKTOP=sp;return;
}
function _stdlib_macrosDatInit000(){
var label=0;
var sp=STACKTOP; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
label = 1;
while(1)switch(label){
case 1:
var $T_rY22sBfKo26xl9aV6GtFfSg_4;
HEAP32[((22264)>>2)]=1;
HEAP8[(22268)]=14;
HEAP32[((22272)>>2)]=0;
HEAP8[(22269)]=3;
$T_rY22sBfKo26xl9aV6GtFfSg_4=0;
label=2;break;
case 2:
var $2=$T_rY22sBfKo26xl9aV6GtFfSg_4;
var $3=($2|0)<159;
if($3){label=3;break;}else{label=5;break;}
case 3:
var $5=$T_rY22sBfKo26xl9aV6GtFfSg_4;
var $6=(($5)|0);
var $7=((11216+((($6)*(24))&-1))|0);
var $8=(($7)|0);
HEAP8[($8)]=1;
var $9=$T_rY22sBfKo26xl9aV6GtFfSg_4;
var $10=$T_rY22sBfKo26xl9aV6GtFfSg_4;
var $11=(($10)|0);
var $12=((11216+((($11)*(24))&-1))|0);
var $13=(($12+4)|0);
HEAP32[(($13)>>2)]=$9;
var $14=$T_rY22sBfKo26xl9aV6GtFfSg_4;
var $15=((120+($14<<2))|0);
var $16=HEAP32[(($15)>>2)];
var $17=$T_rY22sBfKo26xl9aV6GtFfSg_4;
var $18=(($17)|0);
var $19=((11216+((($18)*(24))&-1))|0);
var $20=(($19+12)|0);
HEAP32[(($20)>>2)]=$16;
var $21=$T_rY22sBfKo26xl9aV6GtFfSg_4;
var $22=(($21)|0);
var $23=((11216+((($22)*(24))&-1))|0);
var $24=$T_rY22sBfKo26xl9aV6GtFfSg_4;
var $25=((10576+($24<<2))|0);
HEAP32[(($25)>>2)]=$23;
label=4;break;
case 4:
var $27=$T_rY22sBfKo26xl9aV6GtFfSg_4;
var $28=((($27)+(1))|0);
$T_rY22sBfKo26xl9aV6GtFfSg_4=$28;
label=2;break;
case 5:
HEAP32[((15048)>>2)]=159;
HEAP8[(15032)]=2;
HEAP32[((15052)>>2)]=10576;
HEAP32[((22276)>>2)]=15032;
STACKTOP=sp;return;
default: assert(0, "bad label: " + label);
}
}
function _nimFrame296($s0){
var label=0;
var sp=STACKTOP; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
label = 1;
while(1)switch(label){
case 1:
var $1;
var $LOC1;
$1=$s0;
$LOC1=0;
var $2=HEAP32[((16016)>>2)];
var $3=($2|0)==0;
if($3){label=3;break;}else{label=2;break;}
case 2:
label=4;break;
case 3:
$LOC1=0;
label=5;break;
case 4:
var $7=HEAP32[((16016)>>2)];
var $8=(($7+18)|0);
var $9=HEAP16[(($8)>>1)];
var $10=(($9<<16)>>16);
var $11=((($10)+(1))|0);
var $12=(($11)&65535);
var $13=(($12<<16)>>16);
$LOC1=$13;
label=5;break;
case 5:
var $15=$LOC1;
var $16=(($15)&65535);
var $17=$1;
var $18=(($17+18)|0);
HEAP16[(($18)>>1)]=$16;
var $19=HEAP32[((16016)>>2)];
var $20=$1;
var $21=(($20)|0);
HEAP32[(($21)>>2)]=$19;
var $22=$1;
HEAP32[((16016)>>2)]=$22;
var $23=$1;
var $24=(($23+18)|0);
var $25=HEAP16[(($24)>>1)];
var $26=(($25<<16)>>16);
var $27=($26|0)==2000;
if($27){label=7;break;}else{label=6;break;}
case 6:
label=8;break;
case 7:
_stackoverflow_II46IjNZztN9bmbxUD8dt8g();
label=8;break;
case 8:
STACKTOP=sp;return;
default: assert(0, "bad label: " + label);
}
}
function _popFrame297(){
var label=0;
var $1=HEAP32[((16016)>>2)];
var $2=(($1)|0);
var $3=HEAP32[(($2)>>2)];
HEAP32[((16016)>>2)]=$3;
return;
}
function _finalizeembindobject_FFAWeqZ9bKkcao12N6E8W0g($o0){
var label=0;
var sp=STACKTOP; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
var $1;
var $LOC1;
var $emintres;
var $emintarg0;
var $tht_vLzRwiCHj5Meo4KCawVKgA;
$1=$o0;
$LOC1=0;
$tht_vLzRwiCHj5Meo4KCawVKgA=0;
$emintres=0;
var $2=$1;
var $3=(($2+4)|0);
var $4=HEAP32[(($3)>>2)];
$emintarg0=$4;
var $5=$emintarg0;
var $6=_emscripten_asm_const_int(3664,$5);
$emintres=$6;
var $7=$emintres;
$LOC1=$7;
STACKTOP=sp;return;
}
function _nimem_ps($s0){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+24)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
var $1;
var $result0;
var $FR=sp;
$1=$s0;
var $2=(($FR+4)|0);
HEAP32[(($2)>>2)]=5792;
var $3=(($FR+12)|0);
HEAP32[(($3)>>2)]=4096;
var $4=(($FR+8)|0);
HEAP32[(($4)>>2)]=0;
var $5=(($FR+16)|0);
HEAP16[(($5)>>1)]=0;
_nimFrame316($FR);
$result0=0;
var $6=(($FR+8)|0);
HEAP32[(($6)>>2)]=60;
var $7=(($FR+12)|0);
HEAP32[(($7)>>2)]=4096;
var $8=$1;
var $9=_chckRange317($8,0,2147483647);
var $10=_mnewString($9);
$result0=$10;
_popFrame318();
var $11=$result0;
STACKTOP=sp;return $11;
}
Module["_nimem_ps"] = _nimem_ps;
function _nimem_sb($s0){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+24)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
label = 1;
while(1)switch(label){
case 1:
var $1;
var $result0;
var $FR=sp;
$1=$s0;
var $2=(($FR+4)|0);
HEAP32[(($2)>>2)]=3480;
var $3=(($FR+12)|0);
HEAP32[(($3)>>2)]=4096;
var $4=(($FR+8)|0);
HEAP32[(($4)>>2)]=0;
var $5=(($FR+16)|0);
HEAP16[(($5)>>1)]=0;
_nimFrame316($FR);
$result0=0;
var $6=(($FR+8)|0);
HEAP32[(($6)>>2)]=61;
var $7=(($FR+12)|0);
HEAP32[(($7)>>2)]=4096;
var $8=$1;
var $9=(($8)|0);
var $10=(($9)|0);
var $11=HEAP32[(($10)>>2)];
var $12=0>($11>>>0);
if($12){label=2;break;}else{label=3;break;}
case 2:
_raiseIndexError();
label=3;break;
case 3:
var $15=$1;
var $16=(($15+8)|0);
var $17=(($16)|0);
$result0=$17;
_popFrame318();
var $18=$result0;
STACKTOP=sp;return $18;
default: assert(0, "bad label: " + label);
}
}
Module["_nimem_sb"] = _nimem_sb;
function _nimem_ee($c0){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+32)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
label = 1;
while(1)switch(label){
case 1:
var $1;
var $FR=sp;
var $LOC5=(sp)+(24);
$1=$c0;
var $2=(($FR+4)|0);
HEAP32[(($2)>>2)]=3088;
var $3=(($FR+12)|0);
HEAP32[(($3)>>2)]=4096;
var $4=(($FR+8)|0);
HEAP32[(($4)>>2)]=0;
var $5=(($FR+16)|0);
HEAP16[(($5)>>1)]=0;
_nimFrame316($FR);
var $6=(($FR+8)|0);
HEAP32[(($6)>>2)]=65;
var $7=(($FR+12)|0);
HEAP32[(($7)>>2)]=4096;
var $8=(($FR+8)|0);
HEAP32[(($8)>>2)]=278;
var $9=(($FR+12)|0);
HEAP32[(($9)>>2)]=2752;
var $10=HEAP8[(15696)];
var $11=($10&255);
var $12=($11|0)<=5;
if($12){label=3;break;}else{label=2;break;}
case 2:
label=4;break;
case 3:
var $15=(($FR+8)|0);
HEAP32[(($15)>>2)]=317;
var $16=(($FR+12)|0);
HEAP32[(($16)>>2)]=2752;
var $17=(($LOC5)|0);
var $18=$17;
HEAP8[($18)]=0; HEAP8[((($18)+(1))|0)]=0; HEAP8[((($18)+(2))|0)]=0; HEAP8[((($18)+(3))|0)]=0;
var $19=(($FR+8)|0);
HEAP32[(($19)>>2)]=65;
var $20=(($FR+12)|0);
HEAP32[(($20)>>2)]=4096;
var $21=$1;
var $22=_cstrToNimstr($21);
var $23=(($LOC5)|0);
HEAP32[(($23)>>2)]=$22;
var $24=(($LOC5)|0);
_logloop_Y1QvvdpC0FmKBCafruMWGQ(5,$24,1);
label=4;break;
case 4:
_popFrame318();
STACKTOP=sp;return;
default: assert(0, "bad label: " + label);
}
}
Module["_nimem_ee"] = _nimem_ee;
function _initembindenv_iy4MpOLUjtn62PRHs2Pu1Q(){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+24)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
var $LOC1;
var $FR=sp;
var $emintres;
var $tht_SEGuDpdW0f9c3dU5xKMHr8A;
var $1=(($FR+4)|0);
HEAP32[(($1)>>2)]=2432;
var $2=(($FR+12)|0);
HEAP32[(($2)>>2)]=4096;
var $3=(($FR+8)|0);
HEAP32[(($3)>>2)]=0;
var $4=(($FR+16)|0);
HEAP16[(($4)>>1)]=0;
_nimFrame316($FR);
var $5=(($FR+8)|0);
HEAP32[(($5)>>2)]=68;
var $6=(($FR+12)|0);
HEAP32[(($6)>>2)]=4096;
$LOC1=0;
var $7=(($FR+8)|0);
HEAP32[(($7)>>2)]=17;
var $8=(($FR+12)|0);
HEAP32[(($8)>>2)]=2040;
$tht_SEGuDpdW0f9c3dU5xKMHr8A=0;
$emintres=0;
var $9=(($FR+8)|0);
HEAP32[(($9)>>2)]=63;
var $10=(($FR+12)|0);
HEAP32[(($10)>>2)]=4096;
var $11=_emscripten_asm_const_int(1096);
$emintres=$11;
var $12=$emintres;
$LOC1=$12;
_popFrame318();
STACKTOP=sp;return;
}
function _nimem_new($p0){
var label=0;
var sp=STACKTOP; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
var $1;
var $result0;
$1=$p0;
$result0=0;
var $2=$1;
var $3=_newembindobject_GfklN1xHbxcC9cV6ZFzfOZgjsbind($2);
$result0=$3;
var $4=$result0;
STACKTOP=sp;return $4;
}
Module["_nimem_new"] = _nimem_new;
function _jsbind_jsbindInit000(){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+24)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
var $FR=sp;
var $1=(($FR+4)|0);
HEAP32[(($1)>>2)]=6560;
var $2=(($FR+12)|0);
HEAP32[(($2)>>2)]=4096;
var $3=(($FR+8)|0);
HEAP32[(($3)>>2)]=0;
var $4=(($FR+16)|0);
HEAP16[(($4)>>1)]=0;
_nimFrame316($FR);
var $5=(($FR+8)|0);
HEAP32[(($5)>>2)]=102;
var $6=(($FR+12)|0);
HEAP32[(($6)>>2)]=4096;
_initembindenv_iy4MpOLUjtn62PRHs2Pu1Q();
_popFrame318();
STACKTOP=sp;return;
}
function _jsbind_jsbindDatInit000(){
var label=0;
HEAP32[((20600)>>2)]=8;
HEAP8[(20604)]=17;
HEAP32[((20608)>>2)]=22328;
HEAP8[(20605)]=1;
HEAP8[(15704)]=1;
HEAP32[((15708)>>2)]=4;
HEAP32[((15712)>>2)]=20280;
HEAP32[((15716)>>2)]=6240;
HEAP32[((20612)>>2)]=15704;
HEAP32[((19928)>>2)]=4;
HEAP8[(19932)]=22;
HEAP32[((19936)>>2)]=20600;
HEAP32[((19944)>>2)]=(4);
return;
}
function _nimFrame316($s0){
var label=0;
var sp=STACKTOP; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
label = 1;
while(1)switch(label){
case 1:
var $1;
var $LOC1;
$1=$s0;
$LOC1=0;
var $2=HEAP32[((16016)>>2)];
var $3=($2|0)==0;
if($3){label=3;break;}else{label=2;break;}
case 2:
label=4;break;
case 3:
$LOC1=0;
label=5;break;
case 4:
var $7=HEAP32[((16016)>>2)];
var $8=(($7+18)|0);
var $9=HEAP16[(($8)>>1)];
var $10=(($9<<16)>>16);
var $11=((($10)+(1))|0);
var $12=(($11)&65535);
var $13=(($12<<16)>>16);
$LOC1=$13;
label=5;break;
case 5:
var $15=$LOC1;
var $16=(($15)&65535);
var $17=$1;
var $18=(($17+18)|0);
HEAP16[(($18)>>1)]=$16;
var $19=HEAP32[((16016)>>2)];
var $20=$1;
var $21=(($20)|0);
HEAP32[(($21)>>2)]=$19;
var $22=$1;
HEAP32[((16016)>>2)]=$22;
var $23=$1;
var $24=(($23+18)|0);
var $25=HEAP16[(($24)>>1)];
var $26=(($25<<16)>>16);
var $27=($26|0)==2000;
if($27){label=7;break;}else{label=6;break;}
case 6:
label=8;break;
case 7:
_stackoverflow_II46IjNZztN9bmbxUD8dt8g();
label=8;break;
case 8:
STACKTOP=sp;return;
default: assert(0, "bad label: " + label);
}
}
function _chckRange317($i0,$a0,$b0){
var label=0;
var sp=STACKTOP; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
label = 1;
while(1)switch(label){
case 1:
var $1;
var $2;
var $3;
var $result0;
var $LOC3;
$1=$i0;
$2=$a0;
$3=$b0;
$result0=0;
$LOC3=0;
var $4=$2;
var $5=$1;
var $6=($4|0)<=($5|0);
var $7=($6&1);
var $8=(($7)&255);
$LOC3=$8;
var $9=$LOC3;
var $10=(($9<<24)>>24)!=0;
if($10){label=3;break;}else{label=2;break;}
case 2:
label=4;break;
case 3:
var $13=$1;
var $14=$3;
var $15=($13|0)<=($14|0);
var $16=($15&1);
var $17=(($16)&255);
$LOC3=$17;
label=4;break;
case 4:
var $19=$LOC3;
var $20=(($19<<24)>>24)!=0;
if($20){label=6;break;}else{label=5;break;}
case 5:
label=7;break;
case 6:
var $23=$1;
$result0=$23;
label=9;break;
case 7:
var $25=$1;
var $26$0=$25;
var $26$1=((((($25|0)<0))|0)?-1:0);
_raiseRangeError($26$0,$26$1);
label=8;break;
case 8:
label=9;break;
case 9:
var $29=$result0;
STACKTOP=sp;return $29;
default: assert(0, "bad label: " + label);
}
}
function _popFrame318(){
var label=0;
var $1=HEAP32[((16016)>>2)];
var $2=(($1)|0);
var $3=HEAP32[(($2)>>2)];
HEAP32[((16016)>>2)]=$3;
return;
}
function _newembindobject_GfklN1xHbxcC9cV6ZFzfOZgjsbind($emref0){
var label=0;
var sp=STACKTOP; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
var $1;
var $result0;
$1=$emref0;
$result0=0;
var $2=_newObj(19928,8);
var $3=$2;
$result0=$3;
var $4=$result0;
var $5=(($4)|0);
var $6=(($5)|0);
HEAP32[(($6)>>2)]=20600;
var $7=$1;
var $8=$result0;
var $9=(($8+4)|0);
HEAP32[(($9)>>2)]=$7;
var $10=$result0;
STACKTOP=sp;return $10;
}
function _add_XyS0BXa1E5ylXzhvUQlY9cg($x0,$y0){
var label=0;
var sp=STACKTOP; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
label = 1;
while(1)switch(label){
case 1:
var $1;
var $2;
var $i0;
$1=$x0;
$2=$y0;
$i0=0;
label=2;break;
case 2:
var $4=$i0;
var $5=$2;
var $6=(($5+$4)|0);
var $7=HEAP8[($6)];
var $8=($7&255);
var $9=($8|0)==0;
if($9){label=3;break;}else{label=4;break;}
case 3:
label=5;break;
case 4:
var $12=$1;
var $13=HEAP32[(($12)>>2)];
var $14=$i0;
var $15=$2;
var $16=(($15+$14)|0);
var $17=HEAP8[($16)];
var $18=_addChar($13,$17);
var $19=$1;
HEAP32[(($19)>>2)]=$18;
var $20=$i0;
var $21=((($20)+(1))|0);
$i0=$21;
label=2;break;
case 5:
STACKTOP=sp;return;
default: assert(0, "bad label: " + label);
}
}
function _addChar($s0,$c0){
var label=0;
var sp=STACKTOP; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
label = 1;
while(1)switch(label){
case 1:
var $1;
var $2;
var $result0;
var $LOC5;
$1=$s0;
$2=$c0;
$result0=0;
var $3=$1;
$result0=$3;
var $4=$result0;
var $5=(($4)|0);
var $6=(($5+4)|0);
var $7=HEAP32[(($6)>>2)];
var $8=$7&2147483647;
var $9=$result0;
var $10=(($9)|0);
var $11=(($10)|0);
var $12=HEAP32[(($11)>>2)];
var $13=($8|0)<=($12|0);
if($13){label=3;break;}else{label=2;break;}
case 2:
label=4;break;
case 3:
var $16=$result0;
var $17=(($16)|0);
var $18=(($17+4)|0);
var $19=HEAP32[(($18)>>2)];
var $20=$19&2147483647;
var $21=_resize_bzF9a0JivP3Z4njqaxuLc5wsystem($20);
var $22=$result0;
var $23=(($22)|0);
var $24=(($23+4)|0);
HEAP32[(($24)>>2)]=$21;
$LOC5=0;
var $25=$result0;
var $26=$25;
var $27=$result0;
var $28=(($27)|0);
var $29=(($28+4)|0);
var $30=HEAP32[(($29)>>2)];
var $31=((($30)+(8))|0);
var $32=((($31)+(1))|0);
var $33=_growobj_AVYny8c0GTk28gxjmat1MA($26,$32);
$LOC5=$33;
var $34=$LOC5;
var $35=$34;
$result0=$35;
label=4;break;
case 4:
var $37=$2;
var $38=$result0;
var $39=(($38)|0);
var $40=(($39)|0);
var $41=HEAP32[(($40)>>2)];
var $42=(($41)|0);
var $43=$result0;
var $44=(($43+8)|0);
var $45=(($44+$42)|0);
HEAP8[($45)]=$37;
var $46=$result0;
var $47=(($46)|0);
var $48=(($47)|0);
var $49=HEAP32[(($48)>>2)];
var $50=((($49)+(1))|0);
var $51=(($50)|0);
var $52=$result0;
var $53=(($52+8)|0);
var $54=(($53+$51)|0);
HEAP8[($54)]=0;
var $55=$result0;
var $56=(($55)|0);
var $57=(($56)|0);
var $58=HEAP32[(($57)>>2)];
var $59=((($58)+(1))|0);
HEAP32[(($57)>>2)]=$59;
var $60=$result0;
STACKTOP=sp;return $60;
default: assert(0, "bad label: " + label);
}
}
function _alloc_4cubgSerkjpuLcj5MXjiLw_2($size0){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+24)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
var $1;
var $result0;
var $FR=sp;
$1=$size0;
var $2=(($FR+4)|0);
HEAP32[(($2)>>2)]=3544;
var $3=(($FR+12)|0);
HEAP32[(($3)>>2)]=5744;
var $4=(($FR+8)|0);
HEAP32[(($4)>>2)]=0;
var $5=(($FR+16)|0);
HEAP16[(($5)>>1)]=0;
_nimFrame612($FR);
$result0=0;
var $6=(($FR+8)|0);
HEAP32[(($6)>>2)]=734;
var $7=(($FR+12)|0);
HEAP32[(($7)>>2)]=5744;
var $8=$1;
var $9=_alloc_WDxgSWQ1mSIerfvC0kmUtg_2(16112,$8);
$result0=$9;
_popFrame613();
var $10=$result0;
STACKTOP=sp;return $10;
}
function _alloc_WDxgSWQ1mSIerfvC0kmUtg_2($allocator0,$size0){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+24)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
var $1;
var $2;
var $result0;
var $FR=sp;
$1=$allocator0;
$2=$size0;
var $3=(($FR+4)|0);
HEAP32[(($3)>>2)]=3544;
var $4=(($FR+12)|0);
HEAP32[(($4)>>2)]=5744;
var $5=(($FR+8)|0);
HEAP32[(($5)>>2)]=0;
var $6=(($FR+16)|0);
HEAP16[(($6)>>1)]=0;
_nimFrame612($FR);
$result0=0;
var $7=(($FR+8)|0);
HEAP32[(($7)>>2)]=669;
var $8=(($FR+12)|0);
HEAP32[(($8)>>2)]=5744;
var $9=$1;
var $10=$2;
var $11=((($10)+(8))|0);
var $12=_rawalloc_yn9c8RLaS8vgVBeMBfmkdUg($9,$11);
$result0=$12;
var $13=(($FR+8)|0);
HEAP32[(($13)>>2)]=670;
var $14=(($FR+12)|0);
HEAP32[(($14)>>2)]=5744;
var $15=$result0;
var $16=$15;
var $17=(($16+4)|0);
HEAP32[(($17)>>2)]=1;
var $18=(($FR+8)|0);
HEAP32[(($18)>>2)]=672;
var $19=(($FR+12)|0);
HEAP32[(($19)>>2)]=5744;
var $20=$result0;
var $21=$20;
var $22=((($21)+(8))|0);
var $23=$22;
$result0=$23;
_popFrame613();
var $24=$result0;
STACKTOP=sp;return $24;
}
function _newobjnoinit_yf59bxn9c9bbMeufU9cT6OLBIA($typ0,$size0){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+24)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
var $1;
var $2;
var $result0;
var $FR=sp;
$1=$typ0;
$2=$size0;
var $3=(($FR+4)|0);
HEAP32[(($3)>>2)]=4064;
var $4=(($FR+12)|0);
HEAP32[(($4)>>2)]=3448;
var $5=(($FR+8)|0);
HEAP32[(($5)>>2)]=0;
var $6=(($FR+16)|0);
HEAP16[(($6)>>1)]=0;
_nimFrame612($FR);
$result0=0;
var $7=(($FR+8)|0);
HEAP32[(($7)>>2)]=510;
var $8=(($FR+12)|0);
HEAP32[(($8)>>2)]=3448;
var $9=$2;
var $10=_alloc_4cubgSerkjpuLcj5MXjiLw_2($9);
$result0=$10;
_popFrame613();
var $11=$result0;
STACKTOP=sp;return $11;
}
function _rawNewStringNoInit($space0){
var label=0;
var sp=STACKTOP; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
label = 1;
while(1)switch(label){
case 1:
var $1;
var $result0;
var $s0;
var $LOC5;
$1=$space0;
$result0=0;
var $2=$1;
$s0=$2;
var $3=$s0;
var $4=($3|0)<7;
if($4){label=3;break;}else{label=2;break;}
case 2:
label=4;break;
case 3:
$s0=7;
label=4;break;
case 4:
$LOC5=0;
var $8=$s0;
var $9=((($8)+(8))|0);
var $10=((($9)+(1))|0);
var $11=_newobjnoinit_yf59bxn9c9bbMeufU9cT6OLBIA(9656,$10);
$LOC5=$11;
var $12=$LOC5;
var $13=$12;
$result0=$13;
var $14=$s0;
var $15=$result0;
var $16=(($15)|0);
var $17=(($16+4)|0);
HEAP32[(($17)>>2)]=$14;
var $18=$result0;
STACKTOP=sp;return $18;
default: assert(0, "bad label: " + label);
}
}
function _copyString($src0){
var label=0;
var sp=STACKTOP; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
label = 1;
while(1)switch(label){
case 1:
var $1;
var $result0;
$1=$src0;
$result0=0;
var $2=$1;
var $3=($2|0)==0;
if($3){label=2;break;}else{label=3;break;}
case 2:
label=8;break;
case 3:
var $6=$1;
var $7=(($6)|0);
var $8=(($7+4)|0);
var $9=HEAP32[(($8)>>2)];
var $10=$9&-2147483648;
var $11=($10|0)==0;
if($11){label=4;break;}else{label=5;break;}
case 4:
label=6;break;
case 5:
var $14=$1;
$result0=$14;
label=7;break;
case 6:
var $16=$1;
var $17=(($16)|0);
var $18=(($17)|0);
var $19=HEAP32[(($18)>>2)];
var $20=_rawNewStringNoInit($19);
$result0=$20;
var $21=$1;
var $22=(($21)|0);
var $23=(($22)|0);
var $24=HEAP32[(($23)>>2)];
var $25=$result0;
var $26=(($25)|0);
var $27=(($26)|0);
HEAP32[(($27)>>2)]=$24;
var $28=$result0;
var $29=(($28+8)|0);
var $30=(($29)|0);
var $31=$1;
var $32=(($31+8)|0);
var $33=(($32)|0);
var $34=$1;
var $35=(($34)|0);
var $36=(($35)|0);
var $37=HEAP32[(($36)>>2)];
var $38=((($37)+(1))|0);
_copymem_fPlwH3r9agN9aEHB6yCPMh0wsystem614($30,$33,$38);
label=7;break;
case 7:
label=8;break;
case 8:
var $41=$result0;
STACKTOP=sp;return $41;
default: assert(0, "bad label: " + label);
}
}
function _ptrsize_FVy3yH9cNo61BYTEPuP9awLA($p0){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+24)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
label = 1;
while(1)switch(label){
case 1:
var $1;
var $result0;
var $x0;
var $c0;
var $FR=sp;
var $LOC3;
$1=$p0;
var $2=(($FR+4)|0);
HEAP32[(($2)>>2)]=3080;
var $3=(($FR+12)|0);
HEAP32[(($3)>>2)]=5744;
var $4=(($FR+8)|0);
HEAP32[(($4)>>2)]=0;
var $5=(($FR+16)|0);
HEAP16[(($5)>>1)]=0;
_nimFrame612($FR);
$result0=0;
var $6=(($FR+8)|0);
HEAP32[(($6)>>2)]=661;
var $7=(($FR+12)|0);
HEAP32[(($7)>>2)]=5744;
var $8=$1;
var $9=$8;
var $10=((($9)-(8))|0);
var $11=$10;
$x0=$11;
var $12=(($FR+8)|0);
HEAP32[(($12)>>2)]=662;
var $13=(($FR+12)|0);
HEAP32[(($13)>>2)]=5744;
var $14=$1;
var $15=_pageaddr_4uti7hTxTUDxUPqFMgMvHAsystem($14);
$c0=$15;
var $16=(($FR+8)|0);
HEAP32[(($16)>>2)]=664;
var $17=(($FR+12)|0);
HEAP32[(($17)>>2)]=5744;
var $18=$c0;
var $19=(($18+4)|0);
var $20=HEAP32[(($19)>>2)];
var $21=((($20)-(8))|0);
$result0=$21;
var $22=(($FR+8)|0);
HEAP32[(($22)>>2)]=665;
var $23=(($FR+12)|0);
HEAP32[(($23)>>2)]=5744;
$LOC3=0;
var $24=$c0;
var $25=_issmallchunk_xxNWShoyEPMUVN7FvfpDjwsystem($24);
$LOC3=$25;
var $26=$LOC3;
var $27=(($26<<24)>>24)!=0;
if($27){label=2;break;}else{label=3;break;}
case 2:
label=4;break;
case 3:
var $30=(($FR+8)|0);
HEAP32[(($30)>>2)]=666;
var $31=(($FR+12)|0);
HEAP32[(($31)>>2)]=5744;
var $32=(($FR+8)|0);
HEAP32[(($32)>>2)]=72;
var $33=(($FR+12)|0);
HEAP32[(($33)>>2)]=5744;
var $34=$result0;
var $35=((($34)-(24))|0);
$result0=$35;
label=4;break;
case 4:
_popFrame613();
var $37=$result0;
STACKTOP=sp;return $37;
default: assert(0, "bad label: " + label);
}
}
function _intsetget_FhOZKj4Gih3qQ5OimZYOrg($t0,$key0){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+24)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
label = 1;
while(1)switch(label){
case 1:
var $1;
var $2;
var $result0;
var $it0;
var $FR=sp;
$1=$t0;
$2=$key0;
var $3=(($FR+4)|0);
HEAP32[(($3)>>2)]=2736;
var $4=(($FR+12)|0);
HEAP32[(($4)>>2)]=5744;
var $5=(($FR+8)|0);
HEAP32[(($5)>>2)]=0;
var $6=(($FR+16)|0);
HEAP16[(($6)>>1)]=0;
_nimFrame612($FR);
$result0=0;
var $7=(($FR+8)|0);
HEAP32[(($7)>>2)]=182;
var $8=(($FR+12)|0);
HEAP32[(($8)>>2)]=5744;
var $9=$2;
var $10=$9&255;
var $11=(($10)|0);
var $12=$1;
var $13=(($12)|0);
var $14=(($13+($11<<2))|0);
var $15=HEAP32[(($14)>>2)];
$it0=$15;
var $16=(($FR+8)|0);
HEAP32[(($16)>>2)]=183;
var $17=(($FR+12)|0);
HEAP32[(($17)>>2)]=5744;
label=2;break;
case 2:
var $19=(($FR+8)|0);
HEAP32[(($19)>>2)]=347;
var $20=(($FR+12)|0);
HEAP32[(($20)>>2)]=2416;
var $21=(($FR+8)|0);
HEAP32[(($21)>>2)]=183;
var $22=(($FR+12)|0);
HEAP32[(($22)>>2)]=5744;
var $23=$it0;
var $24=($23|0)==0;
if($24){label=3;break;}else{label=4;break;}
case 3:
label=8;break;
case 4:
var $27=(($FR+8)|0);
HEAP32[(($27)>>2)]=184;
var $28=(($FR+12)|0);
HEAP32[(($28)>>2)]=5744;
var $29=$it0;
var $30=(($29+4)|0);
var $31=HEAP32[(($30)>>2)];
var $32=$2;
var $33=($31|0)==($32|0);
if($33){label=6;break;}else{label=5;break;}
case 5:
label=7;break;
case 6:
var $36=$it0;
$result0=$36;
label=9;break;
case 7:
var $38=(($FR+8)|0);
HEAP32[(($38)>>2)]=185;
var $39=(($FR+12)|0);
HEAP32[(($39)>>2)]=5744;
var $40=$it0;
var $41=(($40)|0);
var $42=HEAP32[(($41)>>2)];
$it0=$42;
label=2;break;
case 8:
var $44=(($FR+8)|0);
HEAP32[(($44)>>2)]=186;
var $45=(($FR+12)|0);
HEAP32[(($45)>>2)]=5744;
$result0=0;
label=9;break;
case 9:
_popFrame613();
var $47=$result0;
STACKTOP=sp;return $47;
default: assert(0, "bad label: " + label);
}
}
function _contains_tGsWrN4DY41H9btt3FhjrNA($s0,$key0){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+24)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
label = 1;
while(1)switch(label){
case 1:
var $1;
var $2;
var $result0;
var $t0;
var $FR=sp;
var $u0;
$1=$s0;
$2=$key0;
var $3=(($FR+4)|0);
HEAP32[(($3)>>2)]=2024;
var $4=(($FR+12)|0);
HEAP32[(($4)>>2)]=5744;
var $5=(($FR+8)|0);
HEAP32[(($5)>>2)]=0;
var $6=(($FR+16)|0);
HEAP16[(($6)>>1)]=0;
_nimFrame612($FR);
$result0=0;
var $7=(($FR+8)|0);
HEAP32[(($7)>>2)]=197;
var $8=(($FR+12)|0);
HEAP32[(($8)>>2)]=5744;
var $9=$1;
var $10=$2;
var $11=$10>>>9;
var $12=_intsetget_FhOZKj4Gih3qQ5OimZYOrg($9,$11);
$t0=$12;
var $13=(($FR+8)|0);
HEAP32[(($13)>>2)]=198;
var $14=(($FR+12)|0);
HEAP32[(($14)>>2)]=5744;
var $15=(($FR+8)|0);
HEAP32[(($15)>>2)]=347;
var $16=(($FR+12)|0);
HEAP32[(($16)>>2)]=2416;
var $17=(($FR+8)|0);
HEAP32[(($17)>>2)]=198;
var $18=(($FR+12)|0);
HEAP32[(($18)>>2)]=5744;
var $19=$t0;
var $20=($19|0)==0;
if($20){label=2;break;}else{label=3;break;}
case 2:
label=4;break;
case 3:
var $23=(($FR+8)|0);
HEAP32[(($23)>>2)]=199;
var $24=(($FR+12)|0);
HEAP32[(($24)>>2)]=5744;
var $25=$2;
var $26=$25&511;
$u0=$26;
var $27=(($FR+8)|0);
HEAP32[(($27)>>2)]=200;
var $28=(($FR+12)|0);
HEAP32[(($28)>>2)]=5744;
var $29=(($FR+8)|0);
HEAP32[(($29)>>2)]=347;
var $30=(($FR+12)|0);
HEAP32[(($30)>>2)]=2416;
var $31=(($FR+8)|0);
HEAP32[(($31)>>2)]=200;
var $32=(($FR+12)|0);
HEAP32[(($32)>>2)]=5744;
var $33=$u0;
var $34=$33>>>5;
var $35=(($34)|0);
var $36=$t0;
var $37=(($36+8)|0);
var $38=(($37+($35<<2))|0);
var $39=HEAP32[(($38)>>2)];
var $40=$u0;
var $41=$40&31;
var $42=1<<$41;
var $43=$39&$42;
var $44=($43|0)==0;
var $45=$44^1;
var $46=($45&1);
var $47=(($46)&255);
$result0=$47;
label=5;break;
case 4:
var $49=(($FR+8)|0);
HEAP32[(($49)>>2)]=202;
var $50=(($FR+12)|0);
HEAP32[(($50)>>2)]=5744;
$result0=0;
label=5;break;
case 5:
_popFrame613();
var $52=$result0;
STACKTOP=sp;return $52;
default: assert(0, "bad label: " + label);
}
}
function _excl_Z9cZKmN1jjRFCzU0lgW9a1XA($s0,$key0){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+24)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
label = 1;
while(1)switch(label){
case 1:
var $1;
var $2;
var $t0;
var $FR=sp;
var $u0;
$1=$s0;
$2=$key0;
var $3=(($FR+4)|0);
HEAP32[(($3)>>2)]=1088;
var $4=(($FR+12)|0);
HEAP32[(($4)>>2)]=5744;
var $5=(($FR+8)|0);
HEAP32[(($5)>>2)]=0;
var $6=(($FR+16)|0);
HEAP16[(($6)>>1)]=0;
_nimFrame612($FR);
var $7=(($FR+8)|0);
HEAP32[(($7)>>2)]=210;
var $8=(($FR+12)|0);
HEAP32[(($8)>>2)]=5744;
var $9=$1;
var $10=$2;
var $11=$10>>>9;
var $12=_intsetget_FhOZKj4Gih3qQ5OimZYOrg($9,$11);
$t0=$12;
var $13=(($FR+8)|0);
HEAP32[(($13)>>2)]=211;
var $14=(($FR+12)|0);
HEAP32[(($14)>>2)]=5744;
var $15=(($FR+8)|0);
HEAP32[(($15)>>2)]=347;
var $16=(($FR+12)|0);
HEAP32[(($16)>>2)]=2416;
var $17=(($FR+8)|0);
HEAP32[(($17)>>2)]=211;
var $18=(($FR+12)|0);
HEAP32[(($18)>>2)]=5744;
var $19=$t0;
var $20=($19|0)==0;
if($20){label=2;break;}else{label=3;break;}
case 2:
label=4;break;
case 3:
var $23=(($FR+8)|0);
HEAP32[(($23)>>2)]=212;
var $24=(($FR+12)|0);
HEAP32[(($24)>>2)]=5744;
var $25=$2;
var $26=$25&511;
$u0=$26;
var $27=(($FR+8)|0);
HEAP32[(($27)>>2)]=213;
var $28=(($FR+12)|0);
HEAP32[(($28)>>2)]=5744;
var $29=(($FR+8)|0);
HEAP32[(($29)>>2)]=214;
var $30=(($FR+12)|0);
HEAP32[(($30)>>2)]=5744;
var $31=$u0;
var $32=$31>>>5;
var $33=(($32)|0);
var $34=$t0;
var $35=(($34+8)|0);
var $36=(($35+($33<<2))|0);
var $37=HEAP32[(($36)>>2)];
var $38=$u0;
var $39=$38&31;
var $40=1<<$39;
var $41=$40^-1;
var $42=$37&$41;
var $43=$u0;
var $44=$43>>>5;
var $45=(($44)|0);
var $46=$t0;
var $47=(($46+8)|0);
var $48=(($47+($45<<2))|0);
HEAP32[(($48)>>2)]=$42;
label=4;break;
case 4:
_popFrame613();
STACKTOP=sp;return;
default: assert(0, "bad label: " + label);
}
}
function _raiseoutofmem_II46IjNZztN9bmbxUD8dt8g_2(){
var label=0;
var tempVarArgs=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+24)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
label = 1;
while(1)switch(label){
case 1:
var $FR=sp;
var $1=(($FR+4)|0);
HEAP32[(($1)>>2)]=880;
var $2=(($FR+12)|0);
HEAP32[(($2)>>2)]=3448;
var $3=(($FR+8)|0);
HEAP32[(($3)>>2)]=0;
var $4=(($FR+16)|0);
HEAP16[(($4)>>1)]=0;
_nimFrame612($FR);
var $5=(($FR+8)|0);
HEAP32[(($5)>>2)]=64;
var $6=(($FR+12)|0);
HEAP32[(($6)>>2)]=3448;
var $7=(($FR+8)|0);
HEAP32[(($7)>>2)]=347;
var $8=(($FR+12)|0);
HEAP32[(($8)>>2)]=2416;
var $9=(($FR+8)|0);
HEAP32[(($9)>>2)]=64;
var $10=(($FR+12)|0);
HEAP32[(($10)>>2)]=3448;
var $11=HEAP32[((15624)>>2)];
var $12=($11|0)==0;
if($12){label=2;break;}else{label=3;break;}
case 2:
label=4;break;
case 3:
var $15=HEAP32[((15624)>>2)];
FUNCTION_TABLE[$15]();
label=4;break;
case 4:
var $17=(($FR+8)|0);
HEAP32[(($17)>>2)]=65;
var $18=(($FR+12)|0);
HEAP32[(($18)>>2)]=3448;
var $19=_printf(6552,(tempVarArgs=STACKTOP,STACKTOP = (STACKTOP + 8)|0,(assert((STACKTOP|0) < (STACK_MAX|0))|0),HEAP32[((tempVarArgs)>>2)]=7008,tempVarArgs)); STACKTOP=tempVarArgs;
var $20=HEAP32[((_stdout)>>2)];
var $21=_fflush($20);
var $22=(($FR+8)|0);
HEAP32[(($22)>>2)]=66;
var $23=(($FR+12)|0);
HEAP32[(($23)>>2)]=3448;
_exit(1);
throw "Reached an unreachable!";
STACKTOP=sp;return;
default: assert(0, "bad label: " + label);
}
}
function _llalloc_fTkVQ4Gj2glm9btLqR9bdQDQ($a0,$size0){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+24)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
label = 1;
while(1)switch(label){
case 1:
var $1;
var $2;
var $result0;
var $FR=sp;
var $LOC3;
var $old0;
var $LOC7;
$1=$a0;
$2=$size0;
var $3=(($FR+4)|0);
HEAP32[(($3)>>2)]=5944;
var $4=(($FR+12)|0);
HEAP32[(($4)>>2)]=5744;
var $5=(($FR+8)|0);
HEAP32[(($5)>>2)]=0;
var $6=(($FR+16)|0);
HEAP16[(($6)>>1)]=0;
_nimFrame612($FR);
$result0=0;
var $7=(($FR+8)|0);
HEAP32[(($7)>>2)]=136;
var $8=(($FR+12)|0);
HEAP32[(($8)>>2)]=5744;
$LOC3=0;
var $9=$1;
var $10=(($9+2056)|0);
var $11=HEAP32[(($10)>>2)];
var $12=($11|0)==0;
var $13=($12&1);
var $14=(($13)&255);
$LOC3=$14;
var $15=$LOC3;
var $16=(($15<<24)>>24)!=0;
if($16){label=2;break;}else{label=3;break;}
case 2:
label=4;break;
case 3:
var $19=$1;
var $20=(($19+2056)|0);
var $21=HEAP32[(($20)>>2)];
var $22=(($21)|0);
var $23=HEAP32[(($22)>>2)];
var $24=$2;
var $25=($23|0)<($24|0);
var $26=($25&1);
var $27=(($26)&255);
$LOC3=$27;
label=4;break;
case 4:
var $29=$LOC3;
var $30=(($29<<24)>>24)!=0;
if($30){label=6;break;}else{label=5;break;}
case 5:
label=7;break;
case 6:
var $33=(($FR+8)|0);
HEAP32[(($33)>>2)]=141;
var $34=(($FR+12)|0);
HEAP32[(($34)>>2)]=5744;
var $35=$1;
var $36=(($35+2056)|0);
var $37=HEAP32[(($36)>>2)];
$old0=$37;
var $38=(($FR+8)|0);
HEAP32[(($38)>>2)]=142;
var $39=(($FR+12)|0);
HEAP32[(($39)>>2)]=5744;
$LOC7=0;
var $40=_osallocpages_L9cOqCqK0vAcXBSP0u9c5VDgsystem(4096);
$LOC7=$40;
var $41=$LOC7;
var $42=$41;
var $43=$1;
var $44=(($43+2056)|0);
HEAP32[(($44)>>2)]=$42;
var $45=(($FR+8)|0);
HEAP32[(($45)>>2)]=143;
var $46=(($FR+12)|0);
HEAP32[(($46)>>2)]=5744;
var $47=$1;
_inccurrmem_rxjvSU4wRoPOjezLtDzm3Qsystem($47,4096);
var $48=(($FR+8)|0);
HEAP32[(($48)>>2)]=144;
var $49=(($FR+12)|0);
HEAP32[(($49)>>2)]=5744;
var $50=$1;
var $51=(($50+2056)|0);
var $52=HEAP32[(($51)>>2)];
var $53=(($52)|0);
HEAP32[(($53)>>2)]=4084;
var $54=(($FR+8)|0);
HEAP32[(($54)>>2)]=145;
var $55=(($FR+12)|0);
HEAP32[(($55)>>2)]=5744;
var $56=$1;
var $57=(($56+2056)|0);
var $58=HEAP32[(($57)>>2)];
var $59=(($58+4)|0);
HEAP32[(($59)>>2)]=12;
var $60=(($FR+8)|0);
HEAP32[(($60)>>2)]=146;
var $61=(($FR+12)|0);
HEAP32[(($61)>>2)]=5744;
var $62=$old0;
var $63=$1;
var $64=(($63+2056)|0);
var $65=HEAP32[(($64)>>2)];
var $66=(($65+8)|0);
HEAP32[(($66)>>2)]=$62;
label=7;break;
case 7:
var $68=(($FR+8)|0);
HEAP32[(($68)>>2)]=147;
var $69=(($FR+12)|0);
HEAP32[(($69)>>2)]=5744;
var $70=$1;
var $71=(($70+2056)|0);
var $72=HEAP32[(($71)>>2)];
var $73=$72;
var $74=$1;
var $75=(($74+2056)|0);
var $76=HEAP32[(($75)>>2)];
var $77=(($76+4)|0);
var $78=HEAP32[(($77)>>2)];
var $79=((($73)+($78))|0);
var $80=$79;
$result0=$80;
var $81=(($FR+8)|0);
HEAP32[(($81)>>2)]=148;
var $82=(($FR+12)|0);
HEAP32[(($82)>>2)]=5744;
var $83=$2;
var $84=$1;
var $85=(($84+2056)|0);
var $86=HEAP32[(($85)>>2)];
var $87=(($86)|0);
var $88=HEAP32[(($87)>>2)];
var $89=((($88)-($83))|0);
HEAP32[(($87)>>2)]=$89;
var $90=(($FR+8)|0);
HEAP32[(($90)>>2)]=149;
var $91=(($FR+12)|0);
HEAP32[(($91)>>2)]=5744;
var $92=$2;
var $93=$1;
var $94=(($93+2056)|0);
var $95=HEAP32[(($94)>>2)];
var $96=(($95+4)|0);
var $97=HEAP32[(($96)>>2)];
var $98=((($97)+($92))|0);
HEAP32[(($96)>>2)]=$98;
var $99=(($FR+8)|0);
HEAP32[(($99)>>2)]=150;
var $100=(($FR+12)|0);
HEAP32[(($100)>>2)]=5744;
var $101=$result0;
var $102=$2;
_zeromem_7EL8Zq3xF2ujDWgp3bAEogsystem($101,$102);
_popFrame613();
var $103=$result0;
STACKTOP=sp;return $103;
default: assert(0, "bad label: " + label);
}
}
function _intsetput_KWgRM9bUk6rwhAaHSiuK9aYA($a0,$t0,$key0){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+24)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
label = 1;
while(1)switch(label){
case 1:
var $1;
var $2;
var $3;
var $result0;
var $FR=sp;
var $LOC5;
$1=$a0;
$2=$t0;
$3=$key0;
var $4=(($FR+4)|0);
HEAP32[(($4)>>2)]=5680;
var $5=(($FR+12)|0);
HEAP32[(($5)>>2)]=5744;
var $6=(($FR+8)|0);
HEAP32[(($6)>>2)]=0;
var $7=(($FR+16)|0);
HEAP16[(($7)>>1)]=0;
_nimFrame612($FR);
$result0=0;
var $8=(($FR+8)|0);
HEAP32[(($8)>>2)]=189;
var $9=(($FR+12)|0);
HEAP32[(($9)>>2)]=5744;
var $10=$2;
var $11=$3;
var $12=_intsetget_FhOZKj4Gih3qQ5OimZYOrg($10,$11);
$result0=$12;
var $13=(($FR+8)|0);
HEAP32[(($13)>>2)]=190;
var $14=(($FR+12)|0);
HEAP32[(($14)>>2)]=5744;
var $15=$result0;
var $16=($15|0)==0;
if($16){label=3;break;}else{label=2;break;}
case 2:
label=4;break;
case 3:
var $19=(($FR+8)|0);
HEAP32[(($19)>>2)]=191;
var $20=(($FR+12)|0);
HEAP32[(($20)>>2)]=5744;
$LOC5=0;
var $21=$1;
var $22=_llalloc_fTkVQ4Gj2glm9btLqR9bdQDQ($21,72);
$LOC5=$22;
var $23=$LOC5;
var $24=$23;
$result0=$24;
var $25=(($FR+8)|0);
HEAP32[(($25)>>2)]=192;
var $26=(($FR+12)|0);
HEAP32[(($26)>>2)]=5744;
var $27=$3;
var $28=$27&255;
var $29=(($28)|0);
var $30=$2;
var $31=(($30)|0);
var $32=(($31+($29<<2))|0);
var $33=HEAP32[(($32)>>2)];
var $34=$result0;
var $35=(($34)|0);
HEAP32[(($35)>>2)]=$33;
var $36=(($FR+8)|0);
HEAP32[(($36)>>2)]=193;
var $37=(($FR+12)|0);
HEAP32[(($37)>>2)]=5744;
var $38=$result0;
var $39=$3;
var $40=$39&255;
var $41=(($40)|0);
var $42=$2;
var $43=(($42)|0);
var $44=(($43+($41<<2))|0);
HEAP32[(($44)>>2)]=$38;
var $45=(($FR+8)|0);
HEAP32[(($45)>>2)]=194;
var $46=(($FR+12)|0);
HEAP32[(($46)>>2)]=5744;
var $47=$3;
var $48=$result0;
var $49=(($48+4)|0);
HEAP32[(($49)>>2)]=$47;
label=4;break;
case 4:
_popFrame613();
var $51=$result0;
STACKTOP=sp;return $51;
default: assert(0, "bad label: " + label);
}
}
function _incl_Iz1GYiOVKwItgr5CdCm0dQ($a0,$s0,$key0){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+24)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
var $1;
var $2;
var $3;
var $t0;
var $u0;
var $FR=sp;
$1=$a0;
$2=$s0;
$3=$key0;
var $4=(($FR+4)|0);
HEAP32[(($4)>>2)]=5488;
var $5=(($FR+12)|0);
HEAP32[(($5)>>2)]=5744;
var $6=(($FR+8)|0);
HEAP32[(($6)>>2)]=0;
var $7=(($FR+16)|0);
HEAP16[(($7)>>1)]=0;
_nimFrame612($FR);
var $8=(($FR+8)|0);
HEAP32[(($8)>>2)]=205;
var $9=(($FR+12)|0);
HEAP32[(($9)>>2)]=5744;
var $10=$1;
var $11=$2;
var $12=$3;
var $13=$12>>>9;
var $14=_intsetput_KWgRM9bUk6rwhAaHSiuK9aYA($10,$11,$13);
$t0=$14;
var $15=(($FR+8)|0);
HEAP32[(($15)>>2)]=206;
var $16=(($FR+12)|0);
HEAP32[(($16)>>2)]=5744;
var $17=$3;
var $18=$17&511;
$u0=$18;
var $19=(($FR+8)|0);
HEAP32[(($19)>>2)]=207;
var $20=(($FR+12)|0);
HEAP32[(($20)>>2)]=5744;
var $21=$u0;
var $22=$21>>>5;
var $23=(($22)|0);
var $24=$t0;
var $25=(($24+8)|0);
var $26=(($25+($23<<2))|0);
var $27=HEAP32[(($26)>>2)];
var $28=$u0;
var $29=$28&31;
var $30=1<<$29;
var $31=$27|$30;
var $32=$u0;
var $33=$32>>>5;
var $34=(($33)|0);
var $35=$t0;
var $36=(($35+8)|0);
var $37=(($36+($34<<2))|0);
HEAP32[(($37)>>2)]=$31;
_popFrame613();
STACKTOP=sp;return;
}
function _freeoschunks_9bYkqlcspX9aiTE9a83Z3Ocjw($a0,$p0,$size0){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+24)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
label = 1;
while(1)switch(label){
case 1:
var $1;
var $2;
var $3;
var $c0;
var $nxt0;
var $next0;
var $LOC7;
var $FR=sp;
var $LOC3;
var $LOC4;
$1=$a0;
$2=$p0;
$3=$size0;
var $4=(($FR+4)|0);
HEAP32[(($4)>>2)]=5256;
var $5=(($FR+12)|0);
HEAP32[(($5)>>2)]=5744;
var $6=(($FR+8)|0);
HEAP32[(($6)>>2)]=0;
var $7=(($FR+16)|0);
HEAP16[(($7)>>1)]=0;
_nimFrame612($FR);
var $8=(($FR+8)|0);
HEAP32[(($8)>>2)]=326;
var $9=(($FR+12)|0);
HEAP32[(($9)>>2)]=5744;
var $10=$2;
var $11=$10;
$c0=$11;
var $12=(($FR+8)|0);
HEAP32[(($12)>>2)]=327;
var $13=(($FR+12)|0);
HEAP32[(($13)>>2)]=5744;
var $14=$2;
var $15=$14;
var $16=$c0;
var $17=(($16+4)|0);
var $18=HEAP32[(($17)>>2)];
var $19=((($15)+($18))|0);
$nxt0=$19;
var $20=(($FR+8)|0);
HEAP32[(($20)>>2)]=329;
var $21=(($FR+12)|0);
HEAP32[(($21)>>2)]=5744;
var $22=$nxt0;
var $23=$22;
$next0=$23;
var $24=(($FR+8)|0);
HEAP32[(($24)>>2)]=330;
var $25=(($FR+12)|0);
HEAP32[(($25)>>2)]=5744;
$LOC3=0;
var $26=$next0;
var $27=_pageindex_vFgXFo13iF61HsEG6epuwgsystem($26);
$LOC3=$27;
$LOC4=0;
var $28=$1;
var $29=(($28+2080)|0);
var $30=$LOC3;
var $31=_contains_tGsWrN4DY41H9btt3FhjrNA($29,$30);
$LOC4=$31;
var $32=$LOC4;
var $33=(($32<<24)>>24)!=0;
if($33){label=3;break;}else{label=2;break;}
case 2:
label=4;break;
case 3:
var $36=(($FR+8)|0);
HEAP32[(($36)>>2)]=331;
var $37=(($FR+12)|0);
HEAP32[(($37)>>2)]=5744;
var $38=$next0;
var $39=(($38)|0);
HEAP32[(($39)>>2)]=0;
label=4;break;
case 4:
var $41=(($FR+8)|0);
HEAP32[(($41)>>2)]=332;
var $42=(($FR+12)|0);
HEAP32[(($42)>>2)]=5744;
$LOC7=0;
var $43=$2;
var $44=_pageindex_bDTXHqSShXKux9bZH4tvkVgsystem($43);
$LOC7=$44;
var $45=$1;
var $46=(($45+2080)|0);
var $47=$LOC7;
_excl_Z9cZKmN1jjRFCzU0lgW9a1XA($46,$47);
var $48=(($FR+8)|0);
HEAP32[(($48)>>2)]=333;
var $49=(($FR+12)|0);
HEAP32[(($49)>>2)]=5744;
var $50=$2;
var $51=$3;
_osdeallocpages_I1brEDH0C8CP9a0HfGYsDvAsystem($50,$51);
var $52=(($FR+8)|0);
HEAP32[(($52)>>2)]=334;
var $53=(($FR+12)|0);
HEAP32[(($53)>>2)]=5744;
var $54=$1;
var $55=$3;
_deccurrmem_rxjvSU4wRoPOjezLtDzm3Q_2system($54,$55);
var $56=(($FR+8)|0);
HEAP32[(($56)>>2)]=335;
var $57=(($FR+12)|0);
HEAP32[(($57)>>2)]=5744;
var $58=$3;
var $59=$1;
var $60=(($59+2068)|0);
var $61=HEAP32[(($60)>>2)];
var $62=((($61)-($58))|0);
HEAP32[(($60)>>2)]=$62;
_popFrame613();
STACKTOP=sp;return;
default: assert(0, "bad label: " + label);
}
}
function _freebigchunk_CAqFS1jFL1RxG80t9bOGmAA($a0,$c_Dm5SSuXWIa9cuGiJqMKyKFA){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+24)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
label = 1;
while(1)switch(label){
case 1:
var $1;
var $2;
var $c0;
var $ri0;
var $FR=sp;
var $LOC3;
var $LOC9;
var $LOC12;
var $le0;
var $LOC19;
var $LOC25;
var $LOC28;
var $LOC29;
var $LOC32;
var $LOC33;
var $LOC38;
var $LOC39;
$1=$a0;
$2=$c_Dm5SSuXWIa9cuGiJqMKyKFA;
var $3=(($FR+4)|0);
HEAP32[(($3)>>2)]=5016;
var $4=(($FR+12)|0);
HEAP32[(($4)>>2)]=5744;
var $5=(($FR+8)|0);
HEAP32[(($5)>>2)]=0;
var $6=(($FR+16)|0);
HEAP16[(($6)>>1)]=0;
_nimFrame612($FR);
var $7=(($FR+8)|0);
HEAP32[(($7)>>2)]=386;
var $8=(($FR+12)|0);
HEAP32[(($8)>>2)]=5744;
var $9=$2;
$c0=$9;
var $10=(($FR+8)|0);
HEAP32[(($10)>>2)]=388;
var $11=(($FR+12)|0);
HEAP32[(($11)>>2)]=5744;
var $12=$c0;
var $13=(($12)|0);
var $14=(($13+4)|0);
var $15=HEAP32[(($14)>>2)];
var $16=$1;
var $17=(($16+2068)|0);
var $18=HEAP32[(($17)>>2)];
var $19=((($18)+($15))|0);
HEAP32[(($17)>>2)]=$19;
var $20=(($FR+8)|0);
HEAP32[(($20)>>2)]=390;
var $21=(($FR+12)|0);
HEAP32[(($21)>>2)]=5744;
var $22=$c0;
var $23=$22;
var $24=$c0;
var $25=(($24)|0);
var $26=(($25+4)|0);
var $27=HEAP32[(($26)>>2)];
var $28=((($23)+($27))|0);
var $29=$28;
$ri0=$29;
var $30=(($FR+8)|0);
HEAP32[(($30)>>2)]=392;
var $31=(($FR+12)|0);
HEAP32[(($31)>>2)]=5744;
$LOC3=0;
var $32=$1;
var $33=$ri0;
var $34=$33;
var $35=_isaccessible_5nqar3kL9acJcissrFLDdkwsystem($32,$34);
$LOC3=$35;
var $36=$LOC3;
var $37=(($36<<24)>>24)!=0;
if($37){label=3;break;}else{label=2;break;}
case 2:
label=4;break;
case 3:
var $40=$ri0;
var $41=_chunkunused_xxNWShoyEPMUVN7FvfpDjw_2system($40);
$LOC3=$41;
label=4;break;
case 4:
var $43=$LOC3;
var $44=(($43<<24)>>24)!=0;
if($44){label=6;break;}else{label=5;break;}
case 5:
label=10;break;
case 6:
var $47=(($FR+8)|0);
HEAP32[(($47)>>2)]=394;
var $48=(($FR+12)|0);
HEAP32[(($48)>>2)]=5744;
$LOC9=0;
var $49=$ri0;
var $50=_issmallchunk_xxNWShoyEPMUVN7FvfpDjwsystem($49);
$LOC9=$50;
var $51=$LOC9;
var $52=(($51<<24)>>24)!=0;
if($52){label=7;break;}else{label=8;break;}
case 7:
label=9;break;
case 8:
var $55=(($FR+8)|0);
HEAP32[(($55)>>2)]=395;
var $56=(($FR+12)|0);
HEAP32[(($56)>>2)]=5744;
var $57=$1;
var $58=(($57+2076)|0);
var $59=$ri0;
var $60=$59;
_listremove_ZRIe9cFnHOrfvS8VmLduoXQsystem($58,$60);
var $61=(($FR+8)|0);
HEAP32[(($61)>>2)]=396;
var $62=(($FR+12)|0);
HEAP32[(($62)>>2)]=5744;
var $63=$ri0;
var $64=(($63+4)|0);
var $65=HEAP32[(($64)>>2)];
var $66=$c0;
var $67=(($66)|0);
var $68=(($67+4)|0);
var $69=HEAP32[(($68)>>2)];
var $70=((($69)+($65))|0);
HEAP32[(($68)>>2)]=$70;
var $71=(($FR+8)|0);
HEAP32[(($71)>>2)]=397;
var $72=(($FR+12)|0);
HEAP32[(($72)>>2)]=5744;
$LOC12=0;
var $73=$ri0;
var $74=_pageindex_vFgXFo13iF61HsEG6epuwgsystem($73);
$LOC12=$74;
var $75=$1;
var $76=(($75+2080)|0);
var $77=$LOC12;
_excl_Z9cZKmN1jjRFCzU0lgW9a1XA($76,$77);
label=9;break;
case 9:
label=10;break;
case 10:
var $80=(($FR+8)|0);
HEAP32[(($80)>>2)]=399;
var $81=(($FR+12)|0);
HEAP32[(($81)>>2)]=5744;
var $82=(($FR+8)|0);
HEAP32[(($82)>>2)]=347;
var $83=(($FR+12)|0);
HEAP32[(($83)>>2)]=2416;
var $84=(($FR+8)|0);
HEAP32[(($84)>>2)]=399;
var $85=(($FR+12)|0);
HEAP32[(($85)>>2)]=5744;
var $86=$c0;
var $87=(($86)|0);
var $88=(($87)|0);
var $89=HEAP32[(($88)>>2)];
var $90=($89|0)==0;
if($90){label=11;break;}else{label=12;break;}
case 11:
label=22;break;
case 12:
var $93=(($FR+8)|0);
HEAP32[(($93)>>2)]=400;
var $94=(($FR+12)|0);
HEAP32[(($94)>>2)]=5744;
var $95=$c0;
var $96=$95;
var $97=$c0;
var $98=(($97)|0);
var $99=(($98)|0);
var $100=HEAP32[(($99)>>2)];
var $101=((($96)-($100))|0);
var $102=$101;
$le0=$102;
var $103=(($FR+8)|0);
HEAP32[(($103)>>2)]=402;
var $104=(($FR+12)|0);
HEAP32[(($104)>>2)]=5744;
$LOC19=0;
var $105=$1;
var $106=$le0;
var $107=$106;
var $108=_isaccessible_5nqar3kL9acJcissrFLDdkwsystem($105,$107);
$LOC19=$108;
var $109=$LOC19;
var $110=(($109<<24)>>24)!=0;
if($110){label=14;break;}else{label=13;break;}
case 13:
label=15;break;
case 14:
var $113=$le0;
var $114=_chunkunused_xxNWShoyEPMUVN7FvfpDjw_2system($113);
$LOC19=$114;
label=15;break;
case 15:
var $116=$LOC19;
var $117=(($116<<24)>>24)!=0;
if($117){label=17;break;}else{label=16;break;}
case 16:
label=21;break;
case 17:
var $120=(($FR+8)|0);
HEAP32[(($120)>>2)]=404;
var $121=(($FR+12)|0);
HEAP32[(($121)>>2)]=5744;
$LOC25=0;
var $122=$le0;
var $123=_issmallchunk_xxNWShoyEPMUVN7FvfpDjwsystem($122);
$LOC25=$123;
var $124=$LOC25;
var $125=(($124<<24)>>24)!=0;
if($125){label=18;break;}else{label=19;break;}
case 18:
label=20;break;
case 19:
var $128=(($FR+8)|0);
HEAP32[(($128)>>2)]=405;
var $129=(($FR+12)|0);
HEAP32[(($129)>>2)]=5744;
var $130=$1;
var $131=(($130+2076)|0);
var $132=$le0;
var $133=$132;
_listremove_ZRIe9cFnHOrfvS8VmLduoXQsystem($131,$133);
var $134=(($FR+8)|0);
HEAP32[(($134)>>2)]=406;
var $135=(($FR+12)|0);
HEAP32[(($135)>>2)]=5744;
var $136=$c0;
var $137=(($136)|0);
var $138=(($137+4)|0);
var $139=HEAP32[(($138)>>2)];
var $140=$le0;
var $141=(($140+4)|0);
var $142=HEAP32[(($141)>>2)];
var $143=((($142)+($139))|0);
HEAP32[(($141)>>2)]=$143;
var $144=(($FR+8)|0);
HEAP32[(($144)>>2)]=407;
var $145=(($FR+12)|0);
HEAP32[(($145)>>2)]=5744;
$LOC28=0;
var $146=$c0;
var $147=(($146)|0);
$LOC28=$147;
$LOC29=0;
var $148=$LOC28;
var $149=_pageindex_vFgXFo13iF61HsEG6epuwgsystem($148);
$LOC29=$149;
var $150=$1;
var $151=(($150+2080)|0);
var $152=$LOC29;
_excl_Z9cZKmN1jjRFCzU0lgW9a1XA($151,$152);
var $153=(($FR+8)|0);
HEAP32[(($153)>>2)]=408;
var $154=(($FR+12)|0);
HEAP32[(($154)>>2)]=5744;
var $155=$le0;
var $156=$155;
$c0=$156;
label=20;break;
case 20:
label=21;break;
case 21:
label=22;break;
case 22:
var $160=(($FR+8)|0);
HEAP32[(($160)>>2)]=410;
var $161=(($FR+12)|0);
HEAP32[(($161)>>2)]=5744;
$LOC32=0;
$LOC33=0;
var $162=$c0;
var $163=(($162)|0);
var $164=(($163+4)|0);
var $165=HEAP32[(($164)>>2)];
var $166=($165|0)<1048576;
var $167=($166&1);
var $168=(($167)&255);
$LOC33=$168;
var $169=$LOC33;
var $170=(($169<<24)>>24)!=0;
if($170){label=23;break;}else{label=24;break;}
case 23:
label=25;break;
case 24:
$LOC33=0;
label=25;break;
case 25:
var $174=$LOC33;
$LOC32=$174;
var $175=$LOC32;
var $176=(($175<<24)>>24)!=0;
if($176){label=26;break;}else{label=27;break;}
case 26:
label=28;break;
case 27:
var $179=$1;
var $180=(($179+3120)|0);
var $181=HEAP8[($180)];
$LOC32=$181;
label=28;break;
case 28:
var $183=$LOC32;
var $184=(($183<<24)>>24)!=0;
if($184){label=30;break;}else{label=29;break;}
case 29:
label=31;break;
case 30:
var $187=(($FR+8)|0);
HEAP32[(($187)>>2)]=411;
var $188=(($FR+12)|0);
HEAP32[(($188)>>2)]=5744;
$LOC38=0;
var $189=$c0;
var $190=(($189)|0);
$LOC38=$190;
$LOC39=0;
var $191=$LOC38;
var $192=_pageindex_vFgXFo13iF61HsEG6epuwgsystem($191);
$LOC39=$192;
var $193=$1;
var $194=$1;
var $195=(($194+2080)|0);
var $196=$LOC39;
_incl_Iz1GYiOVKwItgr5CdCm0dQ($193,$195,$196);
var $197=(($FR+8)|0);
HEAP32[(($197)>>2)]=412;
var $198=(($FR+12)|0);
HEAP32[(($198)>>2)]=5744;
var $199=$1;
var $200=$c0;
var $201=$c0;
var $202=(($201)|0);
var $203=(($202+4)|0);
var $204=HEAP32[(($203)>>2)];
_updateprevsize_3G5wKZdFZhblebPYdFnpxQsystem($199,$200,$204);
var $205=(($FR+8)|0);
HEAP32[(($205)>>2)]=413;
var $206=(($FR+12)|0);
HEAP32[(($206)>>2)]=5744;
var $207=$1;
var $208=(($207+2076)|0);
var $209=$c0;
_listadd_ZRIe9cFnHOrfvS8VmLduoXQ_2system($208,$209);
var $210=(($FR+8)|0);
HEAP32[(($210)>>2)]=414;
var $211=(($FR+12)|0);
HEAP32[(($211)>>2)]=5744;
var $212=$c0;
var $213=(($212)|0);
var $214=(($213+8)|0);
HEAP8[($214)]=0;
label=32;break;
case 31:
var $216=(($FR+8)|0);
HEAP32[(($216)>>2)]=416;
var $217=(($FR+12)|0);
HEAP32[(($217)>>2)]=5744;
var $218=$1;
var $219=$c0;
var $220=$219;
var $221=$c0;
var $222=(($221)|0);
var $223=(($222+4)|0);
var $224=HEAP32[(($223)>>2)];
_freeoschunks_9bYkqlcspX9aiTE9a83Z3Ocjw($218,$220,$224);
label=32;break;
case 32:
_popFrame613();
STACKTOP=sp;return;
default: assert(0, "bad label: " + label);
}
}
function _skew_Cfx7NvEVZIhBjBm7i89boSg($t0){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+24)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
label = 1;
while(1)switch(label){
case 1:
var $1;
var $FR=sp;
var $temp0;
$1=$t0;
var $2=(($FR+4)|0);
HEAP32[(($2)>>2)]=4864;
var $3=(($FR+12)|0);
HEAP32[(($3)>>2)]=4704;
var $4=(($FR+8)|0);
HEAP32[(($4)>>2)]=0;
var $5=(($FR+16)|0);
HEAP16[(($5)>>1)]=0;
_nimFrame612($FR);
var $6=(($FR+8)|0);
HEAP32[(($6)>>2)]=40;
var $7=(($FR+12)|0);
HEAP32[(($7)>>2)]=4704;
var $8=$1;
var $9=HEAP32[(($8)>>2)];
var $10=(($9)|0);
var $11=(($10)|0);
var $12=HEAP32[(($11)>>2)];
var $13=(($12+16)|0);
var $14=HEAP32[(($13)>>2)];
var $15=$1;
var $16=HEAP32[(($15)>>2)];
var $17=(($16+16)|0);
var $18=HEAP32[(($17)>>2)];
var $19=($14|0)==($18|0);
if($19){label=3;break;}else{label=2;break;}
case 2:
label=4;break;
case 3:
var $22=(($FR+8)|0);
HEAP32[(($22)>>2)]=41;
var $23=(($FR+12)|0);
HEAP32[(($23)>>2)]=4704;
var $24=$1;
var $25=HEAP32[(($24)>>2)];
$temp0=$25;
var $26=(($FR+8)|0);
HEAP32[(($26)>>2)]=42;
var $27=(($FR+12)|0);
HEAP32[(($27)>>2)]=4704;
var $28=$1;
var $29=HEAP32[(($28)>>2)];
var $30=(($29)|0);
var $31=(($30)|0);
var $32=HEAP32[(($31)>>2)];
var $33=$1;
HEAP32[(($33)>>2)]=$32;
var $34=(($FR+8)|0);
HEAP32[(($34)>>2)]=43;
var $35=(($FR+12)|0);
HEAP32[(($35)>>2)]=4704;
var $36=$1;
var $37=HEAP32[(($36)>>2)];
var $38=(($37)|0);
var $39=(($38+4)|0);
var $40=HEAP32[(($39)>>2)];
var $41=$temp0;
var $42=(($41)|0);
var $43=(($42)|0);
HEAP32[(($43)>>2)]=$40;
var $44=(($FR+8)|0);
HEAP32[(($44)>>2)]=44;
var $45=(($FR+12)|0);
HEAP32[(($45)>>2)]=4704;
var $46=$temp0;
var $47=$1;
var $48=HEAP32[(($47)>>2)];
var $49=(($48)|0);
var $50=(($49+4)|0);
HEAP32[(($50)>>2)]=$46;
label=4;break;
case 4:
_popFrame613();
STACKTOP=sp;return;
default: assert(0, "bad label: " + label);
}
}
function _split_Cfx7NvEVZIhBjBm7i89boSg_2($t0){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+24)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
label = 1;
while(1)switch(label){
case 1:
var $1;
var $FR=sp;
var $temp0;
$1=$t0;
var $2=(($FR+4)|0);
HEAP32[(($2)>>2)]=4544;
var $3=(($FR+12)|0);
HEAP32[(($3)>>2)]=4704;
var $4=(($FR+8)|0);
HEAP32[(($4)>>2)]=0;
var $5=(($FR+16)|0);
HEAP16[(($5)>>1)]=0;
_nimFrame612($FR);
var $6=(($FR+8)|0);
HEAP32[(($6)>>2)]=47;
var $7=(($FR+12)|0);
HEAP32[(($7)>>2)]=4704;
var $8=$1;
var $9=HEAP32[(($8)>>2)];
var $10=(($9)|0);
var $11=(($10+4)|0);
var $12=HEAP32[(($11)>>2)];
var $13=(($12)|0);
var $14=(($13+4)|0);
var $15=HEAP32[(($14)>>2)];
var $16=(($15+16)|0);
var $17=HEAP32[(($16)>>2)];
var $18=$1;
var $19=HEAP32[(($18)>>2)];
var $20=(($19+16)|0);
var $21=HEAP32[(($20)>>2)];
var $22=($17|0)==($21|0);
if($22){label=3;break;}else{label=2;break;}
case 2:
label=4;break;
case 3:
var $25=(($FR+8)|0);
HEAP32[(($25)>>2)]=48;
var $26=(($FR+12)|0);
HEAP32[(($26)>>2)]=4704;
var $27=$1;
var $28=HEAP32[(($27)>>2)];
$temp0=$28;
var $29=(($FR+8)|0);
HEAP32[(($29)>>2)]=49;
var $30=(($FR+12)|0);
HEAP32[(($30)>>2)]=4704;
var $31=$1;
var $32=HEAP32[(($31)>>2)];
var $33=(($32)|0);
var $34=(($33+4)|0);
var $35=HEAP32[(($34)>>2)];
var $36=$1;
HEAP32[(($36)>>2)]=$35;
var $37=(($FR+8)|0);
HEAP32[(($37)>>2)]=50;
var $38=(($FR+12)|0);
HEAP32[(($38)>>2)]=4704;
var $39=$1;
var $40=HEAP32[(($39)>>2)];
var $41=(($40)|0);
var $42=(($41)|0);
var $43=HEAP32[(($42)>>2)];
var $44=$temp0;
var $45=(($44)|0);
var $46=(($45+4)|0);
HEAP32[(($46)>>2)]=$43;
var $47=(($FR+8)|0);
HEAP32[(($47)>>2)]=51;
var $48=(($FR+12)|0);
HEAP32[(($48)>>2)]=4704;
var $49=$temp0;
var $50=$1;
var $51=HEAP32[(($50)>>2)];
var $52=(($51)|0);
var $53=(($52)|0);
HEAP32[(($53)>>2)]=$49;
var $54=(($FR+8)|0);
HEAP32[(($54)>>2)]=52;
var $55=(($FR+12)|0);
HEAP32[(($55)>>2)]=4704;
var $56=$1;
var $57=HEAP32[(($56)>>2)];
var $58=(($57+16)|0);
var $59=HEAP32[(($58)>>2)];
var $60=((($59)+(1))|0);
HEAP32[(($58)>>2)]=$60;
label=4;break;
case 4:
_popFrame613();
STACKTOP=sp;return;
default: assert(0, "bad label: " + label);
}
}
function _del_hPrZ9bxLZK5QpoftxoRaXvA($a0,$t0,$x0){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+24)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
label = 1;
while(1)switch(label){
case 1:
var $1;
var $2;
var $3;
var $FR=sp;
var $LOC12;
var $LOC13;
var $LOC19;
$1=$a0;
$2=$t0;
$3=$x0;
var $4=(($FR+4)|0);
HEAP32[(($4)>>2)]=4384;
var $5=(($FR+12)|0);
HEAP32[(($5)>>2)]=4704;
var $6=(($FR+8)|0);
HEAP32[(($6)>>2)]=0;
var $7=(($FR+16)|0);
HEAP16[(($7)>>1)]=0;
_nimFrame612($FR);
var $8=(($FR+8)|0);
HEAP32[(($8)>>2)]=68;
var $9=(($FR+12)|0);
HEAP32[(($9)>>2)]=4704;
var $10=(($FR+8)|0);
HEAP32[(($10)>>2)]=12;
var $11=(($FR+12)|0);
HEAP32[(($11)>>2)]=4704;
var $12=$2;
var $13=HEAP32[(($12)>>2)];
var $14=(($13)|0);
var $15=(($14)|0);
var $16=HEAP32[(($15)>>2)];
var $17=$2;
var $18=HEAP32[(($17)>>2)];
var $19=($16|0)==($18|0);
if($19){label=3;break;}else{label=2;break;}
case 2:
label=4;break;
case 3:
var $22=(($FR+8)|0);
HEAP32[(($22)>>2)]=68;
var $23=(($FR+12)|0);
HEAP32[(($23)>>2)]=4704;
label=28;break;
case 4:
var $25=(($FR+8)|0);
HEAP32[(($25)>>2)]=69;
var $26=(($FR+12)|0);
HEAP32[(($26)>>2)]=4704;
var $27=$2;
var $28=HEAP32[(($27)>>2)];
var $29=$1;
var $30=(($29+3112)|0);
HEAP32[(($30)>>2)]=$28;
var $31=(($FR+8)|0);
HEAP32[(($31)>>2)]=70;
var $32=(($FR+12)|0);
HEAP32[(($32)>>2)]=4704;
var $33=$3;
var $34=$2;
var $35=HEAP32[(($34)>>2)];
var $36=(($35+8)|0);
var $37=HEAP32[(($36)>>2)];
var $38=($33>>>0)<($37>>>0);
if($38){label=6;break;}else{label=5;break;}
case 5:
label=7;break;
case 6:
var $41=(($FR+8)|0);
HEAP32[(($41)>>2)]=71;
var $42=(($FR+12)|0);
HEAP32[(($42)>>2)]=4704;
var $43=$1;
var $44=$2;
var $45=HEAP32[(($44)>>2)];
var $46=(($45)|0);
var $47=(($46)|0);
var $48=$3;
_del_hPrZ9bxLZK5QpoftxoRaXvA($43,$47,$48);
label=8;break;
case 7:
var $50=(($FR+8)|0);
HEAP32[(($50)>>2)]=73;
var $51=(($FR+12)|0);
HEAP32[(($51)>>2)]=4704;
var $52=$2;
var $53=HEAP32[(($52)>>2)];
var $54=$1;
var $55=(($54+3108)|0);
HEAP32[(($55)>>2)]=$53;
var $56=(($FR+8)|0);
HEAP32[(($56)>>2)]=74;
var $57=(($FR+12)|0);
HEAP32[(($57)>>2)]=4704;
var $58=$1;
var $59=$2;
var $60=HEAP32[(($59)>>2)];
var $61=(($60)|0);
var $62=(($61+4)|0);
var $63=$3;
_del_hPrZ9bxLZK5QpoftxoRaXvA($58,$62,$63);
label=8;break;
case 8:
var $65=(($FR+8)|0);
HEAP32[(($65)>>2)]=75;
var $66=(($FR+12)|0);
HEAP32[(($66)>>2)]=4704;
$LOC12=0;
$LOC13=0;
var $67=$2;
var $68=HEAP32[(($67)>>2)];
var $69=$1;
var $70=(($69+3112)|0);
var $71=HEAP32[(($70)>>2)];
var $72=($68|0)==($71|0);
var $73=($72&1);
var $74=(($73)&255);
$LOC13=$74;
var $75=$LOC13;
var $76=(($75<<24)>>24)!=0;
if($76){label=10;break;}else{label=9;break;}
case 9:
label=11;break;
case 10:
var $79=(($FR+8)|0);
HEAP32[(($79)>>2)]=12;
var $80=(($FR+12)|0);
HEAP32[(($80)>>2)]=4704;
var $81=$1;
var $82=(($81+3108)|0);
var $83=HEAP32[(($82)>>2)];
var $84=(($83)|0);
var $85=(($84)|0);
var $86=HEAP32[(($85)>>2)];
var $87=$1;
var $88=(($87+3108)|0);
var $89=HEAP32[(($88)>>2)];
var $90=($86|0)==($89|0);
var $91=$90^1;
var $92=($91&1);
var $93=(($92)&255);
$LOC13=$93;
label=11;break;
case 11:
var $95=$LOC13;
$LOC12=$95;
var $96=$LOC12;
var $97=(($96<<24)>>24)!=0;
if($97){label=13;break;}else{label=12;break;}
case 12:
label=14;break;
case 13:
var $100=(($FR+8)|0);
HEAP32[(($100)>>2)]=75;
var $101=(($FR+12)|0);
HEAP32[(($101)>>2)]=4704;
var $102=$3;
var $103=$1;
var $104=(($103+3108)|0);
var $105=HEAP32[(($104)>>2)];
var $106=(($105+8)|0);
var $107=HEAP32[(($106)>>2)];
var $108=($102|0)==($107|0);
var $109=($108&1);
var $110=(($109)&255);
$LOC12=$110;
label=14;break;
case 14:
var $112=$LOC12;
var $113=(($112<<24)>>24)!=0;
if($113){label=16;break;}else{label=15;break;}
case 15:
label=17;break;
case 16:
var $116=(($FR+8)|0);
HEAP32[(($116)>>2)]=76;
var $117=(($FR+12)|0);
HEAP32[(($117)>>2)]=4704;
var $118=$2;
var $119=HEAP32[(($118)>>2)];
var $120=(($119+8)|0);
var $121=HEAP32[(($120)>>2)];
var $122=$1;
var $123=(($122+3108)|0);
var $124=HEAP32[(($123)>>2)];
var $125=(($124+8)|0);
HEAP32[(($125)>>2)]=$121;
var $126=(($FR+8)|0);
HEAP32[(($126)>>2)]=77;
var $127=(($FR+12)|0);
HEAP32[(($127)>>2)]=4704;
var $128=$2;
var $129=HEAP32[(($128)>>2)];
var $130=(($129+12)|0);
var $131=HEAP32[(($130)>>2)];
var $132=$1;
var $133=(($132+3108)|0);
var $134=HEAP32[(($133)>>2)];
var $135=(($134+12)|0);
HEAP32[(($135)>>2)]=$131;
var $136=(($FR+8)|0);
HEAP32[(($136)>>2)]=78;
var $137=(($FR+12)|0);
HEAP32[(($137)>>2)]=4704;
var $138=HEAP32[((16104)>>2)];
var $139=$1;
var $140=(($139+3108)|0);
HEAP32[(($140)>>2)]=$138;
var $141=(($FR+8)|0);
HEAP32[(($141)>>2)]=79;
var $142=(($FR+12)|0);
HEAP32[(($142)>>2)]=4704;
var $143=$2;
var $144=HEAP32[(($143)>>2)];
var $145=(($144)|0);
var $146=(($145+4)|0);
var $147=HEAP32[(($146)>>2)];
var $148=$2;
HEAP32[(($148)>>2)]=$147;
var $149=(($FR+8)|0);
HEAP32[(($149)>>2)]=80;
var $150=(($FR+12)|0);
HEAP32[(($150)>>2)]=4704;
var $151=$1;
var $152=$1;
var $153=(($152+3112)|0);
var $154=HEAP32[(($153)>>2)];
_deallocavlnode_E5Kui5a9artJoR6jEn007Vgsystem($151,$154);
label=27;break;
case 17:
var $156=(($FR+8)|0);
HEAP32[(($156)>>2)]=81;
var $157=(($FR+12)|0);
HEAP32[(($157)>>2)]=4704;
$LOC19=0;
var $158=$2;
var $159=HEAP32[(($158)>>2)];
var $160=(($159)|0);
var $161=(($160)|0);
var $162=HEAP32[(($161)>>2)];
var $163=(($162+16)|0);
var $164=HEAP32[(($163)>>2)];
var $165=$2;
var $166=HEAP32[(($165)>>2)];
var $167=(($166+16)|0);
var $168=HEAP32[(($167)>>2)];
var $169=((($168)-(1))|0);
var $170=($164|0)<($169|0);
var $171=($170&1);
var $172=(($171)&255);
$LOC19=$172;
var $173=$LOC19;
var $174=(($173<<24)>>24)!=0;
if($174){label=18;break;}else{label=19;break;}
case 18:
label=20;break;
case 19:
var $177=(($FR+8)|0);
HEAP32[(($177)>>2)]=82;
var $178=(($FR+12)|0);
HEAP32[(($178)>>2)]=4704;
var $179=$2;
var $180=HEAP32[(($179)>>2)];
var $181=(($180)|0);
var $182=(($181+4)|0);
var $183=HEAP32[(($182)>>2)];
var $184=(($183+16)|0);
var $185=HEAP32[(($184)>>2)];
var $186=$2;
var $187=HEAP32[(($186)>>2)];
var $188=(($187+16)|0);
var $189=HEAP32[(($188)>>2)];
var $190=((($189)-(1))|0);
var $191=($185|0)<($190|0);
var $192=($191&1);
var $193=(($192)&255);
$LOC19=$193;
label=20;break;
case 20:
var $195=$LOC19;
var $196=(($195<<24)>>24)!=0;
if($196){label=22;break;}else{label=21;break;}
case 21:
label=26;break;
case 22:
var $199=(($FR+8)|0);
HEAP32[(($199)>>2)]=83;
var $200=(($FR+12)|0);
HEAP32[(($200)>>2)]=4704;
var $201=$2;
var $202=HEAP32[(($201)>>2)];
var $203=(($202+16)|0);
var $204=HEAP32[(($203)>>2)];
var $205=((($204)-(1))|0);
HEAP32[(($203)>>2)]=$205;
var $206=(($FR+8)|0);
HEAP32[(($206)>>2)]=84;
var $207=(($FR+12)|0);
HEAP32[(($207)>>2)]=4704;
var $208=$2;
var $209=HEAP32[(($208)>>2)];
var $210=(($209+16)|0);
var $211=HEAP32[(($210)>>2)];
var $212=$2;
var $213=HEAP32[(($212)>>2)];
var $214=(($213)|0);
var $215=(($214+4)|0);
var $216=HEAP32[(($215)>>2)];
var $217=(($216+16)|0);
var $218=HEAP32[(($217)>>2)];
var $219=($211|0)<($218|0);
if($219){label=24;break;}else{label=23;break;}
case 23:
label=25;break;
case 24:
var $222=(($FR+8)|0);
HEAP32[(($222)>>2)]=85;
var $223=(($FR+12)|0);
HEAP32[(($223)>>2)]=4704;
var $224=$2;
var $225=HEAP32[(($224)>>2)];
var $226=(($225+16)|0);
var $227=HEAP32[(($226)>>2)];
var $228=$2;
var $229=HEAP32[(($228)>>2)];
var $230=(($229)|0);
var $231=(($230+4)|0);
var $232=HEAP32[(($231)>>2)];
var $233=(($232+16)|0);
HEAP32[(($233)>>2)]=$227;
label=25;break;
case 25:
var $235=(($FR+8)|0);
HEAP32[(($235)>>2)]=86;
var $236=(($FR+12)|0);
HEAP32[(($236)>>2)]=4704;
var $237=$2;
_skew_Cfx7NvEVZIhBjBm7i89boSg($237);
var $238=(($FR+8)|0);
HEAP32[(($238)>>2)]=87;
var $239=(($FR+12)|0);
HEAP32[(($239)>>2)]=4704;
var $240=$2;
var $241=HEAP32[(($240)>>2)];
var $242=(($241)|0);
var $243=(($242+4)|0);
_skew_Cfx7NvEVZIhBjBm7i89boSg($243);
var $244=(($FR+8)|0);
HEAP32[(($244)>>2)]=88;
var $245=(($FR+12)|0);
HEAP32[(($245)>>2)]=4704;
var $246=$2;
var $247=HEAP32[(($246)>>2)];
var $248=(($247)|0);
var $249=(($248+4)|0);
var $250=HEAP32[(($249)>>2)];
var $251=(($250)|0);
var $252=(($251+4)|0);
_skew_Cfx7NvEVZIhBjBm7i89boSg($252);
var $253=(($FR+8)|0);
HEAP32[(($253)>>2)]=89;
var $254=(($FR+12)|0);
HEAP32[(($254)>>2)]=4704;
var $255=$2;
_split_Cfx7NvEVZIhBjBm7i89boSg_2($255);
var $256=(($FR+8)|0);
HEAP32[(($256)>>2)]=90;
var $257=(($FR+12)|0);
HEAP32[(($257)>>2)]=4704;
var $258=$2;
var $259=HEAP32[(($258)>>2)];
var $260=(($259)|0);
var $261=(($260+4)|0);
_split_Cfx7NvEVZIhBjBm7i89boSg_2($261);
label=27;break;
case 26:
label=27;break;
case 27:
label=28;break;
case 28:
_popFrame613();
STACKTOP=sp;return;
default: assert(0, "bad label: " + label);
}
}
function _rawdealloc_DA62HrGC5sdfCED505KyyQ($a0,$p0){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+24)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
label = 1;
while(1)switch(label){
case 1:
var $1;
var $2;
var $c_GHaziSFFmqUZ7gFSv347RQ;
var $FR=sp;
var $LOC3;
var $c0;
var $s0;
var $f0;
var $c01;
$1=$a0;
$2=$p0;
var $3=(($FR+4)|0);
HEAP32[(($3)>>2)]=4192;
var $4=(($FR+12)|0);
HEAP32[(($4)>>2)]=5744;
var $5=(($FR+8)|0);
HEAP32[(($5)>>2)]=0;
var $6=(($FR+16)|0);
HEAP16[(($6)>>1)]=0;
_nimFrame612($FR);
var $7=(($FR+8)|0);
HEAP32[(($7)>>2)]=565;
var $8=(($FR+12)|0);
HEAP32[(($8)>>2)]=5744;
var $9=$2;
var $10=_pageaddr_4uti7hTxTUDxUPqFMgMvHAsystem($9);
$c_GHaziSFFmqUZ7gFSv347RQ=$10;
var $11=(($FR+8)|0);
HEAP32[(($11)>>2)]=566;
var $12=(($FR+12)|0);
HEAP32[(($12)>>2)]=5744;
$LOC3=0;
var $13=$c_GHaziSFFmqUZ7gFSv347RQ;
var $14=_issmallchunk_xxNWShoyEPMUVN7FvfpDjwsystem($13);
$LOC3=$14;
var $15=$LOC3;
var $16=(($15<<24)>>24)!=0;
if($16){label=3;break;}else{label=2;break;}
case 2:
label=11;break;
case 3:
var $19=(($FR+8)|0);
HEAP32[(($19)>>2)]=568;
var $20=(($FR+12)|0);
HEAP32[(($20)>>2)]=5744;
var $21=$c_GHaziSFFmqUZ7gFSv347RQ;
var $22=$21;
$c0=$22;
var $23=(($FR+8)|0);
HEAP32[(($23)>>2)]=569;
var $24=(($FR+12)|0);
HEAP32[(($24)>>2)]=5744;
var $25=$c0;
var $26=(($25)|0);
var $27=(($26+4)|0);
var $28=HEAP32[(($27)>>2)];
$s0=$28;
var $29=(($FR+8)|0);
HEAP32[(($29)>>2)]=572;
var $30=(($FR+12)|0);
HEAP32[(($30)>>2)]=5744;
var $31=$2;
var $32=$31;
$f0=$32;
var $33=(($FR+8)|0);
HEAP32[(($33)>>2)]=575;
var $34=(($FR+12)|0);
HEAP32[(($34)>>2)]=5744;
var $35=$f0;
var $36=(($35+4)|0);
HEAP32[(($36)>>2)]=0;
var $37=(($FR+8)|0);
HEAP32[(($37)>>2)]=576;
var $38=(($FR+12)|0);
HEAP32[(($38)>>2)]=5744;
var $39=$c0;
var $40=(($39+20)|0);
var $41=HEAP32[(($40)>>2)];
var $42=$f0;
var $43=(($42)|0);
HEAP32[(($43)>>2)]=$41;
var $44=(($FR+8)|0);
HEAP32[(($44)>>2)]=577;
var $45=(($FR+12)|0);
HEAP32[(($45)>>2)]=5744;
var $46=$f0;
var $47=$c0;
var $48=(($47+20)|0);
HEAP32[(($48)>>2)]=$46;
var $49=(($FR+8)|0);
HEAP32[(($49)>>2)]=583;
var $50=(($FR+12)|0);
HEAP32[(($50)>>2)]=5744;
var $51=$c0;
var $52=(($51+24)|0);
var $53=HEAP32[(($52)>>2)];
var $54=$s0;
var $55=($53|0)<($54|0);
if($55){label=5;break;}else{label=4;break;}
case 4:
label=6;break;
case 5:
var $58=(($FR+8)|0);
HEAP32[(($58)>>2)]=585;
var $59=(($FR+12)|0);
HEAP32[(($59)>>2)]=5744;
var $60=$s0;
var $61=(((($60|0))/(8))&-1);
var $62=(($61)|0);
var $63=$1;
var $64=(($63+8)|0);
var $65=(($64+($62<<2))|0);
var $66=$c0;
_listadd_DqXPtLsRUwQp3iwLtHEdIgsystem($65,$66);
var $67=(($FR+8)|0);
HEAP32[(($67)>>2)]=586;
var $68=(($FR+12)|0);
HEAP32[(($68)>>2)]=5744;
var $69=$s0;
var $70=$c0;
var $71=(($70+24)|0);
var $72=HEAP32[(($71)>>2)];
var $73=((($72)+($69))|0);
HEAP32[(($71)>>2)]=$73;
label=10;break;
case 6:
var $75=(($FR+8)|0);
HEAP32[(($75)>>2)]=588;
var $76=(($FR+12)|0);
HEAP32[(($76)>>2)]=5744;
var $77=$s0;
var $78=$c0;
var $79=(($78+24)|0);
var $80=HEAP32[(($79)>>2)];
var $81=((($80)+($77))|0);
HEAP32[(($79)>>2)]=$81;
var $82=(($FR+8)|0);
HEAP32[(($82)>>2)]=589;
var $83=(($FR+12)|0);
HEAP32[(($83)>>2)]=5744;
var $84=(($FR+8)|0);
HEAP32[(($84)>>2)]=71;
var $85=(($FR+12)|0);
HEAP32[(($85)>>2)]=5744;
var $86=$c0;
var $87=(($86+24)|0);
var $88=HEAP32[(($87)>>2)];
var $89=($88|0)==4064;
if($89){label=8;break;}else{label=7;break;}
case 7:
label=9;break;
case 8:
var $92=(($FR+8)|0);
HEAP32[(($92)>>2)]=590;
var $93=(($FR+12)|0);
HEAP32[(($93)>>2)]=5744;
var $94=$s0;
var $95=(((($94|0))/(8))&-1);
var $96=(($95)|0);
var $97=$1;
var $98=(($97+8)|0);
var $99=(($98+($96<<2))|0);
var $100=$c0;
_listremove_DqXPtLsRUwQp3iwLtHEdIg_2system($99,$100);
var $101=(($FR+8)|0);
HEAP32[(($101)>>2)]=591;
var $102=(($FR+12)|0);
HEAP32[(($102)>>2)]=5744;
var $103=$c0;
var $104=(($103)|0);
var $105=(($104+4)|0);
HEAP32[(($105)>>2)]=4096;
var $106=(($FR+8)|0);
HEAP32[(($106)>>2)]=592;
var $107=(($FR+12)|0);
HEAP32[(($107)>>2)]=5744;
var $108=$1;
var $109=$c0;
var $110=$109;
_freebigchunk_CAqFS1jFL1RxG80t9bOGmAA($108,$110);
label=9;break;
case 9:
label=10;break;
case 10:
label=12;break;
case 11:
var $114=(($FR+8)|0);
HEAP32[(($114)>>2)]=599;
var $115=(($FR+12)|0);
HEAP32[(($115)>>2)]=5744;
var $116=$c_GHaziSFFmqUZ7gFSv347RQ;
var $117=$116;
$c01=$117;
var $118=(($FR+8)|0);
HEAP32[(($118)>>2)]=600;
var $119=(($FR+12)|0);
HEAP32[(($119)>>2)]=5744;
var $120=HEAP32[((16104)>>2)];
var $121=$1;
var $122=(($121+3108)|0);
HEAP32[(($122)>>2)]=$120;
var $123=(($FR+8)|0);
HEAP32[(($123)>>2)]=601;
var $124=(($FR+12)|0);
HEAP32[(($124)>>2)]=5744;
var $125=$1;
var $126=$1;
var $127=(($126+3104)|0);
var $128=$c01;
var $129=(($128+24)|0);
var $130=$129;
_del_hPrZ9bxLZK5QpoftxoRaXvA($125,$127,$130);
var $131=(($FR+8)|0);
HEAP32[(($131)>>2)]=602;
var $132=(($FR+12)|0);
HEAP32[(($132)>>2)]=5744;
var $133=$1;
var $134=$c01;
_freebigchunk_CAqFS1jFL1RxG80t9bOGmAA($133,$134);
label=12;break;
case 12:
_popFrame613();
STACKTOP=sp;return;
default: assert(0, "bad label: " + label);
}
}
function _dealloc_jqYVOi4APb9cRx3G9a57AkRw($allocator0,$p0){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+24)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
var $1;
var $2;
var $x0;
var $FR=sp;
$1=$allocator0;
$2=$p0;
var $3=(($FR+4)|0);
HEAP32[(($3)>>2)]=4128;
var $4=(($FR+12)|0);
HEAP32[(($4)>>2)]=5744;
var $5=(($FR+8)|0);
HEAP32[(($5)>>2)]=0;
var $6=(($FR+16)|0);
HEAP16[(($6)>>1)]=0;
_nimFrame612($FR);
var $7=(($FR+8)|0);
HEAP32[(($7)>>2)]=681;
var $8=(($FR+12)|0);
HEAP32[(($8)>>2)]=5744;
var $9=$2;
var $10=$9;
var $11=((($10)-(8))|0);
var $12=$11;
$x0=$12;
var $13=(($FR+8)|0);
HEAP32[(($13)>>2)]=685;
var $14=(($FR+12)|0);
HEAP32[(($14)>>2)]=5744;
var $15=$1;
var $16=$x0;
_rawdealloc_DA62HrGC5sdfCED505KyyQ($15,$16);
_popFrame613();
STACKTOP=sp;return;
}
function _realloc_O21OiSxurjvup9cA55o9ae1A($allocator0,$p0,$newsize0){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+24)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
label = 1;
while(1)switch(label){
case 1:
var $1;
var $2;
var $3;
var $result0;
var $FR=sp;
var $LOC9;
$1=$allocator0;
$2=$p0;
$3=$newsize0;
var $4=(($FR+4)|0);
HEAP32[(($4)>>2)]=4040;
var $5=(($FR+12)|0);
HEAP32[(($5)>>2)]=5744;
var $6=(($FR+8)|0);
HEAP32[(($6)>>2)]=0;
var $7=(($FR+16)|0);
HEAP16[(($7)>>1)]=0;
_nimFrame612($FR);
$result0=0;
var $8=(($FR+8)|0);
HEAP32[(($8)>>2)]=690;
var $9=(($FR+12)|0);
HEAP32[(($9)>>2)]=5744;
var $10=$3;
var $11=0<($10|0);
if($11){label=3;break;}else{label=2;break;}
case 2:
label=7;break;
case 3:
var $14=(($FR+8)|0);
HEAP32[(($14)>>2)]=691;
var $15=(($FR+12)|0);
HEAP32[(($15)>>2)]=5744;
var $16=$1;
var $17=$3;
var $18=_alloc0_WDxgSWQ1mSIerfvC0kmUtg($16,$17);
$result0=$18;
var $19=(($FR+8)|0);
HEAP32[(($19)>>2)]=692;
var $20=(($FR+12)|0);
HEAP32[(($20)>>2)]=5744;
var $21=(($FR+8)|0);
HEAP32[(($21)>>2)]=347;
var $22=(($FR+12)|0);
HEAP32[(($22)>>2)]=2416;
var $23=(($FR+8)|0);
HEAP32[(($23)>>2)]=692;
var $24=(($FR+12)|0);
HEAP32[(($24)>>2)]=5744;
var $25=$2;
var $26=($25|0)==0;
if($26){label=4;break;}else{label=5;break;}
case 4:
label=6;break;
case 5:
var $29=(($FR+8)|0);
HEAP32[(($29)>>2)]=693;
var $30=(($FR+12)|0);
HEAP32[(($30)>>2)]=5744;
$LOC9=0;
var $31=$2;
var $32=_ptrsize_FVy3yH9cNo61BYTEPuP9awLA($31);
$LOC9=$32;
var $33=$result0;
var $34=$2;
var $35=$LOC9;
_copymem_fPlwH3r9agN9aEHB6yCPMh0wsystem614($33,$34,$35);
var $36=(($FR+8)|0);
HEAP32[(($36)>>2)]=694;
var $37=(($FR+12)|0);
HEAP32[(($37)>>2)]=5744;
var $38=$1;
var $39=$2;
_dealloc_jqYVOi4APb9cRx3G9a57AkRw($38,$39);
label=6;break;
case 6:
label=11;break;
case 7:
var $42=(($FR+8)|0);
HEAP32[(($42)>>2)]=347;
var $43=(($FR+12)|0);
HEAP32[(($43)>>2)]=2416;
var $44=(($FR+8)|0);
HEAP32[(($44)>>2)]=695;
var $45=(($FR+12)|0);
HEAP32[(($45)>>2)]=5744;
var $46=$2;
var $47=($46|0)==0;
if($47){label=8;break;}else{label=9;break;}
case 8:
label=10;break;
case 9:
var $50=(($FR+8)|0);
HEAP32[(($50)>>2)]=696;
var $51=(($FR+12)|0);
HEAP32[(($51)>>2)]=5744;
var $52=$1;
var $53=$2;
_dealloc_jqYVOi4APb9cRx3G9a57AkRw($52,$53);
label=11;break;
case 10:
label=11;break;
case 11:
_popFrame613();
var $56=$result0;
STACKTOP=sp;return $56;
default: assert(0, "bad label: " + label);
}
}
function _alloc0_WDxgSWQ1mSIerfvC0kmUtg($allocator0,$size0){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+24)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
var $1;
var $2;
var $result0;
var $FR=sp;
$1=$allocator0;
$2=$size0;
var $3=(($FR+4)|0);
HEAP32[(($3)>>2)]=3368;
var $4=(($FR+12)|0);
HEAP32[(($4)>>2)]=5744;
var $5=(($FR+8)|0);
HEAP32[(($5)>>2)]=0;
var $6=(($FR+16)|0);
HEAP16[(($6)>>1)]=0;
_nimFrame612($FR);
$result0=0;
var $7=(($FR+8)|0);
HEAP32[(($7)>>2)]=676;
var $8=(($FR+12)|0);
HEAP32[(($8)>>2)]=5744;
var $9=$1;
var $10=$2;
var $11=_alloc_WDxgSWQ1mSIerfvC0kmUtg_2($9,$10);
$result0=$11;
var $12=(($FR+8)|0);
HEAP32[(($12)>>2)]=677;
var $13=(($FR+12)|0);
HEAP32[(($13)>>2)]=5744;
var $14=$result0;
var $15=$2;
_zeromem_7EL8Zq3xF2ujDWgp3bAEogsystem($14,$15);
_popFrame613();
var $16=$result0;
STACKTOP=sp;return $16;
}
function _realloc_epWYXy7oruYtiNJhUF25Zg($p0,$newsize0){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+24)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
var $1;
var $2;
var $result0;
var $FR=sp;
$1=$p0;
$2=$newsize0;
var $3=(($FR+4)|0);
HEAP32[(($3)>>2)]=4040;
var $4=(($FR+12)|0);
HEAP32[(($4)>>2)]=5744;
var $5=(($FR+8)|0);
HEAP32[(($5)>>2)]=0;
var $6=(($FR+16)|0);
HEAP16[(($6)>>1)]=0;
_nimFrame612($FR);
$result0=0;
var $7=(($FR+8)|0);
HEAP32[(($7)>>2)]=743;
var $8=(($FR+12)|0);
HEAP32[(($8)>>2)]=5744;
var $9=$1;
var $10=$2;
var $11=_realloc_O21OiSxurjvup9cA55o9ae1A(16112,$9,$10);
$result0=$11;
_popFrame613();
var $12=$result0;
STACKTOP=sp;return $12;
}
function _growobj_AVYny8c0GTk28gxjmat1MA($old0,$newsize0){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+24)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
var $1;
var $2;
var $result0;
var $FR=sp;
$1=$old0;
$2=$newsize0;
var $3=(($FR+4)|0);
HEAP32[(($3)>>2)]=3992;
var $4=(($FR+12)|0);
HEAP32[(($4)>>2)]=3448;
var $5=(($FR+8)|0);
HEAP32[(($5)>>2)]=0;
var $6=(($FR+16)|0);
HEAP16[(($6)>>1)]=0;
_nimFrame612($FR);
$result0=0;
var $7=(($FR+8)|0);
HEAP32[(($7)>>2)]=518;
var $8=(($FR+12)|0);
HEAP32[(($8)>>2)]=3448;
var $9=$1;
var $10=$2;
var $11=_realloc_epWYXy7oruYtiNJhUF25Zg($9,$10);
$result0=$11;
_popFrame613();
var $12=$result0;
STACKTOP=sp;return $12;
}
function _resizeString($dest0,$addlen0){
var label=0;
var sp=STACKTOP; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
label = 1;
while(1)switch(label){
case 1:
var $1;
var $2;
var $result0;
var $sp0;
var $LOC6;
var $LOC7;
$1=$dest0;
$2=$addlen0;
$result0=0;
var $3=$1;
var $4=(($3)|0);
var $5=(($4)|0);
var $6=HEAP32[(($5)>>2)];
var $7=$2;
var $8=((($6)+($7))|0);
var $9=$1;
var $10=(($9)|0);
var $11=(($10+4)|0);
var $12=HEAP32[(($11)>>2)];
var $13=$12&2147483647;
var $14=($8|0)<=($13|0);
if($14){label=3;break;}else{label=2;break;}
case 2:
label=4;break;
case 3:
var $17=$1;
$result0=$17;
label=8;break;
case 4:
$LOC6=0;
var $19=$1;
var $20=(($19)|0);
var $21=(($20+4)|0);
var $22=HEAP32[(($21)>>2)];
var $23=$22&2147483647;
var $24=_resize_bzF9a0JivP3Z4njqaxuLc5wsystem($23);
$LOC6=$24;
var $25=$LOC6;
var $26=$1;
var $27=(($26)|0);
var $28=(($27)|0);
var $29=HEAP32[(($28)>>2)];
var $30=$2;
var $31=((($29)+($30))|0);
var $32=($25|0)>=($31|0);
if($32){label=5;break;}else{label=6;break;}
case 5:
var $34=$LOC6;
var $43=$34;label=7;break;
case 6:
var $36=$1;
var $37=(($36)|0);
var $38=(($37)|0);
var $39=HEAP32[(($38)>>2)];
var $40=$2;
var $41=((($39)+($40))|0);
var $43=$41;label=7;break;
case 7:
var $43;
$sp0=$43;
$LOC7=0;
var $44=$1;
var $45=$44;
var $46=$sp0;
var $47=((($46)+(8))|0);
var $48=((($47)+(1))|0);
var $49=_growobj_AVYny8c0GTk28gxjmat1MA($45,$48);
$LOC7=$49;
var $50=$LOC7;
var $51=$50;
$result0=$51;
var $52=$sp0;
var $53=$result0;
var $54=(($53)|0);
var $55=(($54+4)|0);
HEAP32[(($55)>>2)]=$52;
label=8;break;
case 8:
var $57=$result0;
STACKTOP=sp;return $57;
default: assert(0, "bad label: " + label);
}
}
function _rawNewString($space0){
var label=0;
var sp=STACKTOP; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
label = 1;
while(1)switch(label){
case 1:
var $1;
var $result0;
var $s0;
var $LOC5;
$1=$space0;
$result0=0;
var $2=$1;
$s0=$2;
var $3=$s0;
var $4=($3|0)<7;
if($4){label=3;break;}else{label=2;break;}
case 2:
label=4;break;
case 3:
$s0=7;
label=4;break;
case 4:
$LOC5=0;
var $8=$s0;
var $9=((($8)+(8))|0);
var $10=((($9)+(1))|0);
var $11=_newObj(9656,$10);
$LOC5=$11;
var $12=$LOC5;
var $13=$12;
$result0=$13;
var $14=$s0;
var $15=$result0;
var $16=(($15)|0);
var $17=(($16+4)|0);
HEAP32[(($17)>>2)]=$14;
var $18=$result0;
STACKTOP=sp;return $18;
default: assert(0, "bad label: " + label);
}
}
function _newObj($typ0,$size0){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+24)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
var $1;
var $2;
var $result0;
var $FR=sp;
$1=$typ0;
$2=$size0;
var $3=(($FR+4)|0);
HEAP32[(($3)>>2)]=3328;
var $4=(($FR+12)|0);
HEAP32[(($4)>>2)]=3448;
var $5=(($FR+8)|0);
HEAP32[(($5)>>2)]=0;
var $6=(($FR+16)|0);
HEAP16[(($6)>>1)]=0;
_nimFrame612($FR);
$result0=0;
var $7=(($FR+8)|0);
HEAP32[(($7)>>2)]=507;
var $8=(($FR+12)|0);
HEAP32[(($8)>>2)]=3448;
var $9=$2;
var $10=_alloc0_4cubgSerkjpuLcj5MXjiLw($9);
$result0=$10;
_popFrame613();
var $11=$result0;
STACKTOP=sp;return $11;
}
function _setLengthStr($s0,$newlen0){
var label=0;
var sp=STACKTOP; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
label = 1;
while(1)switch(label){
case 1:
var $1;
var $2;
var $result0;
var $n0;
$1=$s0;
$2=$newlen0;
$result0=0;
var $3=$2;
var $4=($3|0)>=0;
if($4){label=2;break;}else{label=3;break;}
case 2:
var $6=$2;
var $9=$6;label=4;break;
case 3:
var $9=0;label=4;break;
case 4:
var $9;
$n0=$9;
var $10=$n0;
var $11=$1;
var $12=(($11)|0);
var $13=(($12+4)|0);
var $14=HEAP32[(($13)>>2)];
var $15=$14&2147483647;
var $16=($10|0)<=($15|0);
if($16){label=6;break;}else{label=5;break;}
case 5:
label=7;break;
case 6:
var $19=$1;
$result0=$19;
label=8;break;
case 7:
var $21=$1;
var $22=$n0;
var $23=_resizeString($21,$22);
$result0=$23;
label=8;break;
case 8:
var $25=$n0;
var $26=$result0;
var $27=(($26)|0);
var $28=(($27)|0);
HEAP32[(($28)>>2)]=$25;
var $29=$n0;
var $30=(($29)|0);
var $31=$result0;
var $32=(($31+8)|0);
var $33=(($32+$30)|0);
HEAP8[($33)]=0;
var $34=$result0;
STACKTOP=sp;return $34;
default: assert(0, "bad label: " + label);
}
}
function _add_IbYQ9cTcoQ89aIwM2IEYGMng($result0,$x0$0,$x0$1){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+24)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
label = 1;
while(1)switch(label){
case 1:
var $1;
var $2=sp;
var $base0;
var $i0;
var $y0=(sp)+(8);
var $d0=(sp)+(16);
var $j_qnKx8FRbI9bfMKogtL77eNA;
var $HEX3Atmp_4rY0hesNymbjU0qUfyjfhA;
var $res_0E6r6o7EsL2WULx2c9b2Xaw;
var $LOC14;
$1=$result0;
var $st$0$0=(($2)|0);
HEAP32[(($st$0$0)>>2)]=$x0$0;
var $st$1$1=(($2+4)|0);
HEAP32[(($st$1$1)>>2)]=$x0$1;
var $3=$1;
var $4=HEAP32[(($3)>>2)];
var $5=($4|0)!=0;
if($5){label=2;break;}else{label=3;break;}
case 2:
var $7=$1;
var $8=HEAP32[(($7)>>2)];
var $9=(($8)|0);
var $10=(($9)|0);
var $11=HEAP32[(($10)>>2)];
var $14=$11;label=4;break;
case 3:
var $14=0;label=4;break;
case 4:
var $14;
$base0=$14;
var $15=$1;
var $16=HEAP32[(($15)>>2)];
var $17=$base0;
var $18=((($17)+(32))|0);
var $19=_setLengthStr($16,$18);
var $20=$1;
HEAP32[(($20)>>2)]=$19;
$i0=0;
var $ld$2$0=(($2)|0);
var $21$0=HEAP32[(($ld$2$0)>>2)];
var $ld$3$1=(($2+4)|0);
var $21$1=HEAP32[(($ld$3$1)>>2)];
var $st$4$0=(($y0)|0);
HEAP32[(($st$4$0)>>2)]=$21$0;
var $st$5$1=(($y0+4)|0);
HEAP32[(($st$5$1)>>2)]=$21$1;
label=5;break;
case 5:
var $ld$6$0=(($y0)|0);
var $23$0=HEAP32[(($ld$6$0)>>2)];
var $ld$7$1=(($y0+4)|0);
var $23$1=HEAP32[(($ld$7$1)>>2)];
var $$etemp$8$0=10;
var $$etemp$8$1=0;
var $24$0=___divdi3($23$0,$23$1,$$etemp$8$0,$$etemp$8$1);var $24$1=tempRet0;
var $st$9$0=(($d0)|0);
HEAP32[(($st$9$0)>>2)]=$24$0;
var $st$10$1=(($d0+4)|0);
HEAP32[(($st$10$1)>>2)]=$24$1;
var $ld$11$0=(($y0)|0);
var $25$0=HEAP32[(($ld$11$0)>>2)];
var $ld$12$1=(($y0+4)|0);
var $25$1=HEAP32[(($ld$12$1)>>2)];
var $ld$13$0=(($d0)|0);
var $26$0=HEAP32[(($ld$13$0)>>2)];
var $ld$14$1=(($d0+4)|0);
var $26$1=HEAP32[(($ld$14$1)>>2)];
var $$etemp$15$0=10;
var $$etemp$15$1=0;
var $27$0=___muldi3($26$0,$26$1,$$etemp$15$0,$$etemp$15$1);var $27$1=tempRet0;
var $28$0=_i64Subtract($25$0,$25$1,$27$0,$27$1);var $28$1=tempRet0;
var $29$0=$28$0;
var $29=$29$0;
var $30=($29|0)>0;
if($30){label=6;break;}else{label=7;break;}
case 6:
var $ld$16$0=(($y0)|0);
var $32$0=HEAP32[(($ld$16$0)>>2)];
var $ld$17$1=(($y0+4)|0);
var $32$1=HEAP32[(($ld$17$1)>>2)];
var $ld$18$0=(($d0)|0);
var $33$0=HEAP32[(($ld$18$0)>>2)];
var $ld$19$1=(($d0+4)|0);
var $33$1=HEAP32[(($ld$19$1)>>2)];
var $$etemp$20$0=10;
var $$etemp$20$1=0;
var $34$0=___muldi3($33$0,$33$1,$$etemp$20$0,$$etemp$20$1);var $34$1=tempRet0;
var $35$0=_i64Subtract($32$0,$32$1,$34$0,$34$1);var $35$1=tempRet0;
var $36$0=$35$0;
var $36=$36$0;
var $45=$36;label=8;break;
case 7:
var $ld$21$0=(($y0)|0);
var $38$0=HEAP32[(($ld$21$0)>>2)];
var $ld$22$1=(($y0+4)|0);
var $38$1=HEAP32[(($ld$22$1)>>2)];
var $ld$23$0=(($d0)|0);
var $39$0=HEAP32[(($ld$23$0)>>2)];
var $ld$24$1=(($d0+4)|0);
var $39$1=HEAP32[(($ld$24$1)>>2)];
var $$etemp$25$0=10;
var $$etemp$25$1=0;
var $40$0=___muldi3($39$0,$39$1,$$etemp$25$0,$$etemp$25$1);var $40$1=tempRet0;
var $41$0=_i64Subtract($38$0,$38$1,$40$0,$40$1);var $41$1=tempRet0;
var $42$0=$41$0;
var $42=$42$0;
var $43=(((-$42))|0);
var $45=$43;label=8;break;
case 8:
var $45;
var $46=((($45)+(48))|0);
var $47=(($46)&255);
var $48=$base0;
var $49=$i0;
var $50=((($48)+($49))|0);
var $51=$1;
var $52=HEAP32[(($51)>>2)];
var $53=(($52+8)|0);
var $54=(($53+$50)|0);
HEAP8[($54)]=$47;
var $55=$i0;
var $56=((($55)+(1))|0);
$i0=$56;
var $ld$26$0=(($d0)|0);
var $57$0=HEAP32[(($ld$26$0)>>2)];
var $ld$27$1=(($d0+4)|0);
var $57$1=HEAP32[(($ld$27$1)>>2)];
var $st$28$0=(($y0)|0);
HEAP32[(($st$28$0)>>2)]=$57$0;
var $st$29$1=(($y0+4)|0);
HEAP32[(($st$29$1)>>2)]=$57$1;
var $ld$30$0=(($y0)|0);
var $58$0=HEAP32[(($ld$30$0)>>2)];
var $ld$31$1=(($y0+4)|0);
var $58$1=HEAP32[(($ld$31$1)>>2)];
var $$etemp$32$0=0;
var $$etemp$32$1=0;
var $59=(($58$0|0) == ($$etemp$32$0|0)) & (($58$1|0) == ($$etemp$32$1|0));
if($59){label=10;break;}else{label=9;break;}
case 9:
label=11;break;
case 10:
label=12;break;
case 11:
label=5;break;
case 12:
var $ld$33$0=(($2)|0);
var $64$0=HEAP32[(($ld$33$0)>>2)];
var $ld$34$1=(($2+4)|0);
var $64$1=HEAP32[(($ld$34$1)>>2)];
var $$etemp$35$0=0;
var $$etemp$35$1=0;
var $65=(($64$1|0) < ($$etemp$35$1|0)) | (((($64$1|0) == ($$etemp$35$1|0) & ($64$0>>>0) < ($$etemp$35$0>>>0))));
if($65){label=14;break;}else{label=13;break;}
case 13:
label=15;break;
case 14:
var $68=$base0;
var $69=$i0;
var $70=((($68)+($69))|0);
var $71=$1;
var $72=HEAP32[(($71)>>2)];
var $73=(($72+8)|0);
var $74=(($73+$70)|0);
HEAP8[($74)]=45;
var $75=$i0;
var $76=((($75)+(1))|0);
$i0=$76;
label=15;break;
case 15:
var $78=$1;
var $79=HEAP32[(($78)>>2)];
var $80=$base0;
var $81=$i0;
var $82=((($80)+($81))|0);
var $83=_setLengthStr($79,$82);
var $84=$1;
HEAP32[(($84)>>2)]=$83;
$j_qnKx8FRbI9bfMKogtL77eNA=0;
$HEX3Atmp_4rY0hesNymbjU0qUfyjfhA=0;
var $85=$i0;
var $86=(((($85|0))/(2))&-1);
var $87=((($86)-(1))|0);
$HEX3Atmp_4rY0hesNymbjU0qUfyjfhA=$87;
$res_0E6r6o7EsL2WULx2c9b2Xaw=0;
label=16;break;
case 16:
var $89=$res_0E6r6o7EsL2WULx2c9b2Xaw;
var $90=$HEX3Atmp_4rY0hesNymbjU0qUfyjfhA;
var $91=($89|0)<=($90|0);
if($91){label=18;break;}else{label=17;break;}
case 17:
label=19;break;
case 18:
var $94=$res_0E6r6o7EsL2WULx2c9b2Xaw;
$j_qnKx8FRbI9bfMKogtL77eNA=$94;
$LOC14=0;
var $95=$base0;
var $96=$j_qnKx8FRbI9bfMKogtL77eNA;
var $97=((($95)+($96))|0);
var $98=$1;
var $99=HEAP32[(($98)>>2)];
var $100=(($99+8)|0);
var $101=(($100+$97)|0);
var $102=HEAP8[($101)];
$LOC14=$102;
var $103=$base0;
var $104=$i0;
var $105=((($103)+($104))|0);
var $106=$j_qnKx8FRbI9bfMKogtL77eNA;
var $107=((($105)-($106))|0);
var $108=((($107)-(1))|0);
var $109=$1;
var $110=HEAP32[(($109)>>2)];
var $111=(($110+8)|0);
var $112=(($111+$108)|0);
var $113=HEAP8[($112)];
var $114=$base0;
var $115=$j_qnKx8FRbI9bfMKogtL77eNA;
var $116=((($114)+($115))|0);
var $117=$1;
var $118=HEAP32[(($117)>>2)];
var $119=(($118+8)|0);
var $120=(($119+$116)|0);
HEAP8[($120)]=$113;
var $121=$LOC14;
var $122=$base0;
var $123=$i0;
var $124=((($122)+($123))|0);
var $125=$j_qnKx8FRbI9bfMKogtL77eNA;
var $126=((($124)-($125))|0);
var $127=((($126)-(1))|0);
var $128=$1;
var $129=HEAP32[(($128)>>2)];
var $130=(($129+8)|0);
var $131=(($130+$127)|0);
HEAP8[($131)]=$121;
var $132=$res_0E6r6o7EsL2WULx2c9b2Xaw;
var $133=((($132)+(1))|0);
$res_0E6r6o7EsL2WULx2c9b2Xaw=$133;
label=16;break;
case 19:
STACKTOP=sp;return;
default: assert(0, "bad label: " + label);
}
}
function _nimIntToStr($x0){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+8)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
var $1;
var $result0=sp;
$1=$x0;
HEAP32[(($result0)>>2)]=0;
var $2=_rawNewString(16);
HEAP32[(($result0)>>2)]=$2;
var $3=$1;
var $4$0=$3;
var $4$1=((((($3|0)<0))|0)?-1:0);
_add_IbYQ9cTcoQ89aIwM2IEYGMng($result0,$4$0,$4$1);
var $5=HEAP32[(($result0)>>2)];
STACKTOP=sp;return $5;
}
function _auxwritestacktrace_49cM9cZmwvT6mRtlvuYQ9bIaQ($f0,$s0){
var label=0;
var sp=STACKTOP; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
label = 1;
while(1)switch(label){
case 1:
var $1;
var $2;
var $it0;
var $i0;
var $total0;
var $b0;
var $skipped0;
var $LOC3;
var $j_XnlUl6AnhILYen1lz8nB7Q;
var $res_sfAUBkikucaa7MXJf61J0w;
var $LOC20;
var $j_XnlUl6AnhILYen1lz8nB7Q_2;
var $HEX3Atmp_y9cBh3mV23bc0CvDMugBhzw;
var $res_sfAUBkikucaa7MXJf61J0w_2;
var $LOC29;
var $oldlen0;
var $LOC35;
var $k_dMTpqz6tVIfZPTyrfES9bNA;
var $HEX3Atmp_y9cBh3mV23bc0CvDMugBhzw_2;
var $res_sfAUBkikucaa7MXJf61J0w_3;
$1=$f0;
$2=$s0;
var $3=$1;
$it0=$3;
$i0=0;
$total0=0;
label=2;break;
case 2:
$LOC3=0;
var $5=$it0;
var $6=($5|0)==0;
var $7=$6^1;
var $8=($7&1);
var $9=(($8)&255);
$LOC3=$9;
var $10=$LOC3;
var $11=(($10<<24)>>24)!=0;
if($11){label=4;break;}else{label=3;break;}
case 3:
label=5;break;
case 4:
var $14=$i0;
var $15=($14|0)<=95;
var $16=($15&1);
var $17=(($16)&255);
$LOC3=$17;
label=5;break;
case 5:
var $19=$LOC3;
var $20=(($19<<24)>>24)!=0;
if($20){label=7;break;}else{label=6;break;}
case 6:
label=8;break;
case 7:
var $23=$it0;
var $24=$i0;
var $25=(($24)|0);
var $26=((8336+($25<<2))|0);
HEAP32[(($26)>>2)]=$23;
var $27=$i0;
var $28=((($27)+(1))|0);
$i0=$28;
var $29=$total0;
var $30=((($29)+(1))|0);
$total0=$30;
var $31=$it0;
var $32=(($31)|0);
var $33=HEAP32[(($32)>>2)];
$it0=$33;
label=2;break;
case 8:
var $35=$it0;
$b0=$35;
label=9;break;
case 9:
var $37=$it0;
var $38=($37|0)==0;
if($38){label=10;break;}else{label=11;break;}
case 10:
label=12;break;
case 11:
var $41=$total0;
var $42=((($41)+(1))|0);
$total0=$42;
var $43=$it0;
var $44=(($43)|0);
var $45=HEAP32[(($44)>>2)];
$it0=$45;
label=9;break;
case 12:
$skipped0=0;
var $47=$total0;
var $48=128<($47|0);
if($48){label=14;break;}else{label=13;break;}
case 13:
label=22;break;
case 14:
var $51=$total0;
var $52=$i0;
var $53=((($51)-($52))|0);
var $54=((($53)-(32))|0);
var $55=((($54)+(1))|0);
$skipped0=$55;
$j_XnlUl6AnhILYen1lz8nB7Q=0;
$res_sfAUBkikucaa7MXJf61J0w=1;
label=15;break;
case 15:
var $57=$res_sfAUBkikucaa7MXJf61J0w;
var $58=$skipped0;
var $59=($57|0)<=($58|0);
if($59){label=17;break;}else{label=16;break;}
case 16:
label=21;break;
case 17:
var $62=$res_sfAUBkikucaa7MXJf61J0w;
$j_XnlUl6AnhILYen1lz8nB7Q=$62;
var $63=$b0;
var $64=($63|0)==0;
if($64){label=18;break;}else{label=19;break;}
case 18:
label=20;break;
case 19:
var $67=$b0;
var $68=(($67)|0);
var $69=HEAP32[(($68)>>2)];
$b0=$69;
label=20;break;
case 20:
var $71=$res_sfAUBkikucaa7MXJf61J0w;
var $72=((($71)+(1))|0);
$res_sfAUBkikucaa7MXJf61J0w=$72;
label=15;break;
case 21:
var $74=$i0;
var $75=(($74)|0);
var $76=((8336+($75<<2))|0);
HEAP32[(($76)>>2)]=0;
var $77=$i0;
var $78=((($77)+(1))|0);
$i0=$78;
label=22;break;
case 22:
label=23;break;
case 23:
$LOC20=0;
var $81=$b0;
var $82=($81|0)==0;
var $83=$82^1;
var $84=($83&1);
var $85=(($84)&255);
$LOC20=$85;
var $86=$LOC20;
var $87=(($86<<24)>>24)!=0;
if($87){label=25;break;}else{label=24;break;}
case 24:
label=26;break;
case 25:
var $90=$i0;
var $91=($90|0)<=127;
var $92=($91&1);
var $93=(($92)&255);
$LOC20=$93;
label=26;break;
case 26:
var $95=$LOC20;
var $96=(($95<<24)>>24)!=0;
if($96){label=28;break;}else{label=27;break;}
case 27:
label=29;break;
case 28:
var $99=$b0;
var $100=$i0;
var $101=(($100)|0);
var $102=((8336+($101<<2))|0);
HEAP32[(($102)>>2)]=$99;
var $103=$i0;
var $104=((($103)+(1))|0);
$i0=$104;
var $105=$b0;
var $106=(($105)|0);
var $107=HEAP32[(($106)>>2)];
$b0=$107;
label=23;break;
case 29:
$j_XnlUl6AnhILYen1lz8nB7Q_2=0;
$HEX3Atmp_y9cBh3mV23bc0CvDMugBhzw=0;
var $109=$i0;
var $110=((($109)-(1))|0);
$HEX3Atmp_y9cBh3mV23bc0CvDMugBhzw=$110;
var $111=$HEX3Atmp_y9cBh3mV23bc0CvDMugBhzw;
$res_sfAUBkikucaa7MXJf61J0w_2=$111;
label=30;break;
case 30:
var $113=$res_sfAUBkikucaa7MXJf61J0w_2;
var $114=0<=($113|0);
if($114){label=32;break;}else{label=31;break;}
case 31:
label=56;break;
case 32:
var $117=$res_sfAUBkikucaa7MXJf61J0w_2;
$j_XnlUl6AnhILYen1lz8nB7Q_2=$117;
var $118=$j_XnlUl6AnhILYen1lz8nB7Q_2;
var $119=(($118)|0);
var $120=((8336+($119<<2))|0);
var $121=HEAP32[(($120)>>2)];
var $122=($121|0)==0;
if($122){label=34;break;}else{label=33;break;}
case 33:
label=35;break;
case 34:
var $125=$2;
var $126=HEAP32[(($125)>>2)];
var $127=_resizeString($126,1);
var $128=$2;
HEAP32[(($128)>>2)]=$127;
var $129=$2;
var $130=HEAP32[(($129)>>2)];
_appendString615($130,6936);
$LOC29=0;
var $131=$skipped0;
var $132=_nimIntToStr($131);
$LOC29=$132;
var $133=$2;
var $134=HEAP32[(($133)>>2)];
var $135=$LOC29;
var $136=(($135)|0);
var $137=(($136)|0);
var $138=HEAP32[(($137)>>2)];
var $139=(($138)|0);
var $140=_resizeString($134,$139);
var $141=$2;
HEAP32[(($141)>>2)]=$140;
var $142=$2;
var $143=HEAP32[(($142)>>2)];
var $144=$LOC29;
_appendString615($143,$144);
var $145=$2;
var $146=HEAP32[(($145)>>2)];
var $147=_resizeString($146,19);
var $148=$2;
HEAP32[(($148)>>2)]=$147;
var $149=$2;
var $150=HEAP32[(($149)>>2)];
_appendString615($150,6904);
label=55;break;
case 35:
var $152=$2;
var $153=HEAP32[(($152)>>2)];
var $154=($153|0)!=0;
if($154){label=36;break;}else{label=37;break;}
case 36:
var $156=$2;
var $157=HEAP32[(($156)>>2)];
var $158=(($157)|0);
var $159=(($158)|0);
var $160=HEAP32[(($159)>>2)];
var $163=$160;label=38;break;
case 37:
var $163=0;label=38;break;
case 38:
var $163;
$oldlen0=$163;
var $164=$2;
var $165=$j_XnlUl6AnhILYen1lz8nB7Q_2;
var $166=(($165)|0);
var $167=((8336+($166<<2))|0);
var $168=HEAP32[(($167)>>2)];
var $169=(($168+12)|0);
var $170=HEAP32[(($169)>>2)];
_add_XyS0BXa1E5ylXzhvUQlY9cg($164,$170);
var $171=$j_XnlUl6AnhILYen1lz8nB7Q_2;
var $172=(($171)|0);
var $173=((8336+($172<<2))|0);
var $174=HEAP32[(($173)>>2)];
var $175=(($174+8)|0);
var $176=HEAP32[(($175)>>2)];
var $177=0<($176|0);
if($177){label=40;break;}else{label=39;break;}
case 39:
label=41;break;
case 40:
var $180=$2;
var $181=HEAP32[(($180)>>2)];
var $182=_addChar($181,40);
var $183=$2;
HEAP32[(($183)>>2)]=$182;
$LOC35=0;
var $184=$j_XnlUl6AnhILYen1lz8nB7Q_2;
var $185=(($184)|0);
var $186=((8336+($185<<2))|0);
var $187=HEAP32[(($186)>>2)];
var $188=(($187+8)|0);
var $189=HEAP32[(($188)>>2)];
var $190=_nimIntToStr($189);
$LOC35=$190;
var $191=$2;
var $192=HEAP32[(($191)>>2)];
var $193=$LOC35;
var $194=(($193)|0);
var $195=(($194)|0);
var $196=HEAP32[(($195)>>2)];
var $197=(($196)|0);
var $198=_resizeString($192,$197);
var $199=$2;
HEAP32[(($199)>>2)]=$198;
var $200=$2;
var $201=HEAP32[(($200)>>2)];
var $202=$LOC35;
_appendString615($201,$202);
var $203=$2;
var $204=HEAP32[(($203)>>2)];
var $205=_addChar($204,41);
var $206=$2;
HEAP32[(($206)>>2)]=$205;
label=41;break;
case 41:
$k_dMTpqz6tVIfZPTyrfES9bNA=0;
$HEX3Atmp_y9cBh3mV23bc0CvDMugBhzw_2=0;
var $208=$2;
var $209=HEAP32[(($208)>>2)];
var $210=($209|0)!=0;
if($210){label=42;break;}else{label=43;break;}
case 42:
var $212=$2;
var $213=HEAP32[(($212)>>2)];
var $214=(($213)|0);
var $215=(($214)|0);
var $216=HEAP32[(($215)>>2)];
var $219=$216;label=44;break;
case 43:
var $219=0;label=44;break;
case 44:
var $219;
var $220=$oldlen0;
var $221=((($219)-($220))|0);
var $222=(((25)-($221))|0);
var $223=1>=($222|0);
if($223){label=45;break;}else{label=46;break;}
case 45:
var $242=1;label=50;break;
case 46:
var $226=$2;
var $227=HEAP32[(($226)>>2)];
var $228=($227|0)!=0;
if($228){label=47;break;}else{label=48;break;}
case 47:
var $230=$2;
var $231=HEAP32[(($230)>>2)];
var $232=(($231)|0);
var $233=(($232)|0);
var $234=HEAP32[(($233)>>2)];
var $237=$234;label=49;break;
case 48:
var $237=0;label=49;break;
case 49:
var $237;
var $238=$oldlen0;
var $239=((($237)-($238))|0);
var $240=(((25)-($239))|0);
var $242=$240;label=50;break;
case 50:
var $242;
$HEX3Atmp_y9cBh3mV23bc0CvDMugBhzw_2=$242;
$res_sfAUBkikucaa7MXJf61J0w_3=1;
label=51;break;
case 51:
var $244=$res_sfAUBkikucaa7MXJf61J0w_3;
var $245=$HEX3Atmp_y9cBh3mV23bc0CvDMugBhzw_2;
var $246=($244|0)<=($245|0);
if($246){label=53;break;}else{label=52;break;}
case 52:
label=54;break;
case 53:
var $249=$res_sfAUBkikucaa7MXJf61J0w_3;
$k_dMTpqz6tVIfZPTyrfES9bNA=$249;
var $250=$2;
var $251=HEAP32[(($250)>>2)];
var $252=_addChar($251,32);
var $253=$2;
HEAP32[(($253)>>2)]=$252;
var $254=$res_sfAUBkikucaa7MXJf61J0w_3;
var $255=((($254)+(1))|0);
$res_sfAUBkikucaa7MXJf61J0w_3=$255;
label=51;break;
case 54:
var $257=$2;
var $258=$j_XnlUl6AnhILYen1lz8nB7Q_2;
var $259=(($258)|0);
var $260=((8336+($259<<2))|0);
var $261=HEAP32[(($260)>>2)];
var $262=(($261+4)|0);
var $263=HEAP32[(($262)>>2)];
_add_XyS0BXa1E5ylXzhvUQlY9cg($257,$263);
label=55;break;
case 55:
var $265=$2;
var $266=HEAP32[(($265)>>2)];
var $267=_resizeString($266,1);
var $268=$2;
HEAP32[(($268)>>2)]=$267;
var $269=$2;
var $270=HEAP32[(($269)>>2)];
_appendString615($270,6888);
var $271=$res_sfAUBkikucaa7MXJf61J0w_2;
var $272=((($271)-(1))|0);
$res_sfAUBkikucaa7MXJf61J0w_2=$272;
label=30;break;
case 56:
STACKTOP=sp;return;
default: assert(0, "bad label: " + label);
}
}
function _rawwritestacktrace_imNuOIqoJ9csXlrh58OtfXg($s0){
var label=0;
var sp=STACKTOP; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
label = 1;
while(1)switch(label){
case 1:
var $1;
$1=$s0;
var $2=HEAP32[((16016)>>2)];
var $3=($2|0)==0;
if($3){label=3;break;}else{label=2;break;}
case 2:
label=4;break;
case 3:
var $6=$1;
var $7=HEAP32[(($6)>>2)];
var $8=_resizeString($7,29);
var $9=$1;
HEAP32[(($9)>>2)]=$8;
var $10=$1;
var $11=HEAP32[(($10)>>2)];
_appendString615($11,7384);
label=5;break;
case 4:
var $13=$1;
var $14=HEAP32[(($13)>>2)];
var $15=_resizeString($14,34);
var $16=$1;
HEAP32[(($16)>>2)]=$15;
var $17=$1;
var $18=HEAP32[(($17)>>2)];
_appendString615($18,6952);
var $19=HEAP32[((16016)>>2)];
var $20=$1;
_auxwritestacktrace_49cM9cZmwvT6mRtlvuYQ9bIaQ($19,$20);
label=5;break;
case 5:
STACKTOP=sp;return;
default: assert(0, "bad label: " + label);
}
}
function _toNimStr($str0,$len0){
var label=0;
var sp=STACKTOP; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
var $1;
var $2;
var $result0;
$1=$str0;
$2=$len0;
$result0=0;
var $3=$2;
var $4=_rawNewStringNoInit($3);
$result0=$4;
var $5=$2;
var $6=$result0;
var $7=(($6)|0);
var $8=(($7)|0);
HEAP32[(($8)>>2)]=$5;
var $9=$result0;
var $10=(($9+8)|0);
var $11=(($10)|0);
var $12=$1;
var $13=$2;
var $14=((($13)+(1))|0);
_copymem_fPlwH3r9agN9aEHB6yCPMh0wsystem614($11,$12,$14);
var $15=$result0;
STACKTOP=sp;return $15;
}
function _cstrToNimstr($str0){
var label=0;
var sp=STACKTOP; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
label = 1;
while(1)switch(label){
case 1:
var $1;
var $result0;
$1=$str0;
$result0=0;
var $2=$1;
var $3=($2|0)==0;
if($3){label=3;break;}else{label=2;break;}
case 2:
label=4;break;
case 3:
$result0=0;
label=8;break;
case 4:
var $7=$1;
var $8=$1;
var $9=($8|0)!=0;
if($9){label=5;break;}else{label=6;break;}
case 5:
var $11=$1;
var $12=_strlen($11);
var $15=$12;label=7;break;
case 6:
var $15=0;label=7;break;
case 7:
var $15;
var $16=_toNimStr($7,$15);
$result0=$16;
label=8;break;
case 8:
var $18=$result0;
STACKTOP=sp;return $18;
default: assert(0, "bad label: " + label);
}
}
function _write_ADGLlEJAOtGNWWur8rrJfg($f0,$c0){
var label=0;
var sp=STACKTOP; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
var $1;
var $2;
var $LOC1;
$1=$f0;
$2=$c0;
$LOC1=0;
var $3=$2;
var $4=$1;
var $5=_fputs($3,$4);
$LOC1=$5;
STACKTOP=sp;return;
}
function _writetostderr_7HRVfGfZT2rSmBdcLxl8TA($msg0){
var label=0;
var sp=STACKTOP; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
var $1;
$1=$msg0;
var $2=HEAP32[((_stderr)>>2)];
var $3=$1;
_write_ADGLlEJAOtGNWWur8rrJfg($2,$3);
STACKTOP=sp;return;
}
function _showerrormessage_rsUJ87b89bH0GlWKYL9c8wUQ($data0){
var label=0;
var sp=STACKTOP; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
label = 1;
while(1)switch(label){
case 1:
var $1;
var $LOC5;
$1=$data0;
var $2=HEAP32[((16032)>>2)];
var $3=($2|0)==0;
if($3){label=2;break;}else{label=3;break;}
case 2:
label=4;break;
case 3:
$LOC5=0;
var $6=$1;
var $7=_cstrToNimstr($6);
$LOC5=$7;
var $8=HEAP32[((16032)>>2)];
var $9=$LOC5;
FUNCTION_TABLE[$8]($9);
label=5;break;
case 4:
var $11=$1;
_writetostderr_7HRVfGfZT2rSmBdcLxl8TA($11);
label=5;break;
case 5:
STACKTOP=sp;return;
default: assert(0, "bad label: " + label);
}
}
function _writestacktrace_njssp69aa7hvxte9bJ8uuDcg(){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+8)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
var $s0=sp;
var $1=_copyString(7608);
HEAP32[(($s0)>>2)]=$1;
_rawwritestacktrace_imNuOIqoJ9csXlrh58OtfXg($s0);
var $2=HEAP32[(($s0)>>2)];
var $3=(($2+8)|0);
var $4=(($3)|0);
_showerrormessage_rsUJ87b89bH0GlWKYL9c8wUQ($4);
STACKTOP=sp;return;
}
function _stackoverflow_II46IjNZztN9bmbxUD8dt8g(){
var label=0;
_writestacktrace_njssp69aa7hvxte9bJ8uuDcg();
_showerrormessage_rsUJ87b89bH0GlWKYL9c8wUQ(3952);
_quitordebug_IZ2oOmqdsYQ7vixQGKSDcAsystem();
return;
}
function _splitchunk_8QXhiy717OAl8WNA2X27EA($a0,$c0,$size0){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+24)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
var $1;
var $2;
var $3;
var $rest0;
var $LOC1;
var $LOC2;
var $FR=sp;
$1=$a0;
$2=$c0;
$3=$size0;
var $4=(($FR+4)|0);
HEAP32[(($4)>>2)]=3880;
var $5=(($FR+12)|0);
HEAP32[(($5)>>2)]=5744;
var $6=(($FR+8)|0);
HEAP32[(($6)>>2)]=0;
var $7=(($FR+16)|0);
HEAP16[(($7)>>1)]=0;
_nimFrame612($FR);
var $8=(($FR+8)|0);
HEAP32[(($8)>>2)]=419;
var $9=(($FR+12)|0);
HEAP32[(($9)>>2)]=5744;
var $10=$2;
var $11=$10;
var $12=$3;
var $13=((($11)+($12))|0);
var $14=$13;
$rest0=$14;
var $15=(($FR+8)|0);
HEAP32[(($15)>>2)]=421;
var $16=(($FR+12)|0);
HEAP32[(($16)>>2)]=5744;
var $17=$2;
var $18=(($17)|0);
var $19=(($18+4)|0);
var $20=HEAP32[(($19)>>2)];
var $21=$3;
var $22=((($20)-($21))|0);
var $23=$rest0;
var $24=(($23)|0);
var $25=(($24+4)|0);
HEAP32[(($25)>>2)]=$22;
var $26=(($FR+8)|0);
HEAP32[(($26)>>2)]=422;
var $27=(($FR+12)|0);
HEAP32[(($27)>>2)]=5744;
var $28=$rest0;
var $29=(($28)|0);
var $30=(($29+8)|0);
HEAP8[($30)]=0;
var $31=(($FR+8)|0);
HEAP32[(($31)>>2)]=423;
var $32=(($FR+12)|0);
HEAP32[(($32)>>2)]=5744;
var $33=$rest0;
var $34=(($33+12)|0);
HEAP32[(($34)>>2)]=0;
var $35=(($FR+8)|0);
HEAP32[(($35)>>2)]=424;
var $36=(($FR+12)|0);
HEAP32[(($36)>>2)]=5744;
var $37=$rest0;
var $38=(($37+16)|0);
HEAP32[(($38)>>2)]=0;
var $39=(($FR+8)|0);
HEAP32[(($39)>>2)]=425;
var $40=(($FR+12)|0);
HEAP32[(($40)>>2)]=5744;
var $41=$3;
var $42=$rest0;
var $43=(($42)|0);
var $44=(($43)|0);
HEAP32[(($44)>>2)]=$41;
var $45=(($FR+8)|0);
HEAP32[(($45)>>2)]=426;
var $46=(($FR+12)|0);
HEAP32[(($46)>>2)]=5744;
var $47=$1;
var $48=$2;
var $49=$rest0;
var $50=(($49)|0);
var $51=(($50+4)|0);
var $52=HEAP32[(($51)>>2)];
_updateprevsize_3G5wKZdFZhblebPYdFnpxQsystem($47,$48,$52);
var $53=(($FR+8)|0);
HEAP32[(($53)>>2)]=427;
var $54=(($FR+12)|0);
HEAP32[(($54)>>2)]=5744;
var $55=$3;
var $56=$2;
var $57=(($56)|0);
var $58=(($57+4)|0);
HEAP32[(($58)>>2)]=$55;
var $59=(($FR+8)|0);
HEAP32[(($59)>>2)]=428;
var $60=(($FR+12)|0);
HEAP32[(($60)>>2)]=5744;
$LOC1=0;
var $61=$rest0;
var $62=(($61)|0);
$LOC1=$62;
$LOC2=0;
var $63=$LOC1;
var $64=_pageindex_vFgXFo13iF61HsEG6epuwgsystem($63);
$LOC2=$64;
var $65=$1;
var $66=$1;
var $67=(($66+2080)|0);
var $68=$LOC2;
_incl_Iz1GYiOVKwItgr5CdCm0dQ($65,$67,$68);
var $69=(($FR+8)|0);
HEAP32[(($69)>>2)]=429;
var $70=(($FR+12)|0);
HEAP32[(($70)>>2)]=5744;
var $71=$1;
var $72=(($71+2076)|0);
var $73=$rest0;
_listadd_ZRIe9cFnHOrfvS8VmLduoXQ_2system($72,$73);
_popFrame613();
STACKTOP=sp;return;
}
function _ostryallocpages_cDtTHU70bHeB0uWmOHXLZQ($size0){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+24)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
var $1;
var $result0;
var $FR=sp;
$1=$size0;
var $2=(($FR+4)|0);
HEAP32[(($2)>>2)]=3832;
var $3=(($FR+12)|0);
HEAP32[(($3)>>2)]=3768;
var $4=(($FR+8)|0);
HEAP32[(($4)>>2)]=0;
var $5=(($FR+16)|0);
HEAP16[(($5)>>1)]=0;
_nimFrame612($FR);
$result0=0;
var $6=(($FR+8)|0);
HEAP32[(($6)>>2)]=73;
var $7=(($FR+12)|0);
HEAP32[(($7)>>2)]=3768;
var $8=$1;
var $9=_osallocpages_L9cOqCqK0vAcXBSP0u9c5VDgsystem($8);
$result0=$9;
_popFrame613();
var $10=$result0;
STACKTOP=sp;return $10;
}
function _requestoschunks_z9bCNjXTYllZ3pI24nEsw2g_2($a0,$size_nndn31exLE0X2ABcjUVOzQ){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+24)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
label = 1;
while(1)switch(label){
case 1:
var $1;
var $2;
var $result0;
var $size0;
var $nxt0;
var $next0;
var $lastsize0;
var $prv0;
var $prev0;
var $FR=sp;
var $LOC5;
var $LOC7;
var $LOC12;
var $LOC16;
var $LOC17;
var $LOC27;
var $LOC28;
$1=$a0;
$2=$size_nndn31exLE0X2ABcjUVOzQ;
var $3=(($FR+4)|0);
HEAP32[(($3)>>2)]=3688;
var $4=(($FR+12)|0);
HEAP32[(($4)>>2)]=5744;
var $5=(($FR+8)|0);
HEAP32[(($5)>>2)]=0;
var $6=(($FR+16)|0);
HEAP16[(($6)>>1)]=0;
_nimFrame612($FR);
$result0=0;
var $7=(($FR+8)|0);
HEAP32[(($7)>>2)]=284;
var $8=(($FR+12)|0);
HEAP32[(($8)>>2)]=5744;
var $9=$2;
$size0=$9;
var $10=(($FR+8)|0);
HEAP32[(($10)>>2)]=286;
var $11=(($FR+12)|0);
HEAP32[(($11)>>2)]=5744;
var $12=$1;
var $13=(($12+3124)|0);
var $14=HEAP32[(($13)>>2)];
var $15=$size0;
var $16=($14|0)<($15|0);
if($16){label=3;break;}else{label=2;break;}
case 2:
label=4;break;
case 3:
var $19=(($FR+8)|0);
HEAP32[(($19)>>2)]=287;
var $20=(($FR+12)|0);
HEAP32[(($20)>>2)]=5744;
$LOC5=0;
var $21=$size0;
var $22=_osallocpages_L9cOqCqK0vAcXBSP0u9c5VDgsystem($21);
$LOC5=$22;
var $23=$LOC5;
var $24=$23;
$result0=$24;
label=9;break;
case 4:
var $26=(($FR+8)|0);
HEAP32[(($26)>>2)]=289;
var $27=(($FR+12)|0);
HEAP32[(($27)>>2)]=5744;
$LOC7=0;
var $28=$1;
var $29=(($28+3124)|0);
var $30=HEAP32[(($29)>>2)];
var $31=_ostryallocpages_cDtTHU70bHeB0uWmOHXLZQ($30);
$LOC7=$31;
var $32=$LOC7;
var $33=$32;
$result0=$33;
var $34=(($FR+8)|0);
HEAP32[(($34)>>2)]=290;
var $35=(($FR+12)|0);
HEAP32[(($35)>>2)]=5744;
var $36=$result0;
var $37=($36|0)==0;
if($37){label=6;break;}else{label=5;break;}
case 5:
label=7;break;
case 6:
var $40=(($FR+8)|0);
HEAP32[(($40)>>2)]=291;
var $41=(($FR+12)|0);
HEAP32[(($41)>>2)]=5744;
$LOC12=0;
var $42=$size0;
var $43=_osallocpages_L9cOqCqK0vAcXBSP0u9c5VDgsystem($42);
$LOC12=$43;
var $44=$LOC12;
var $45=$44;
$result0=$45;
var $46=(($FR+8)|0);
HEAP32[(($46)>>2)]=292;
var $47=(($FR+12)|0);
HEAP32[(($47)>>2)]=5744;
var $48=$1;
var $49=(($48+3121)|0);
HEAP8[($49)]=1;
label=8;break;
case 7:
var $51=(($FR+8)|0);
HEAP32[(($51)>>2)]=294;
var $52=(($FR+12)|0);
HEAP32[(($52)>>2)]=5744;
var $53=$1;
var $54=(($53+3124)|0);
var $55=HEAP32[(($54)>>2)];
$size0=$55;
label=8;break;
case 8:
label=9;break;
case 9:
var $58=(($FR+8)|0);
HEAP32[(($58)>>2)]=296;
var $59=(($FR+12)|0);
HEAP32[(($59)>>2)]=5744;
var $60=$1;
var $61=$size0;
_inccurrmem_rxjvSU4wRoPOjezLtDzm3Qsystem($60,$61);
var $62=(($FR+8)|0);
HEAP32[(($62)>>2)]=297;
var $63=(($FR+12)|0);
HEAP32[(($63)>>2)]=5744;
var $64=$size0;
var $65=$1;
var $66=(($65+2068)|0);
var $67=HEAP32[(($66)>>2)];
var $68=((($67)+($64))|0);
HEAP32[(($66)>>2)]=$68;
var $69=(($FR+8)|0);
HEAP32[(($69)>>2)]=301;
var $70=(($FR+12)|0);
HEAP32[(($70)>>2)]=5744;
var $71=$result0;
var $72=(($71+12)|0);
HEAP32[(($72)>>2)]=0;
var $73=(($FR+8)|0);
HEAP32[(($73)>>2)]=302;
var $74=(($FR+12)|0);
HEAP32[(($74)>>2)]=5744;
var $75=$result0;
var $76=(($75+16)|0);
HEAP32[(($76)>>2)]=0;
var $77=(($FR+8)|0);
HEAP32[(($77)>>2)]=303;
var $78=(($FR+12)|0);
HEAP32[(($78)>>2)]=5744;
var $79=$result0;
var $80=(($79)|0);
var $81=(($80+8)|0);
HEAP8[($81)]=0;
var $82=(($FR+8)|0);
HEAP32[(($82)>>2)]=304;
var $83=(($FR+12)|0);
HEAP32[(($83)>>2)]=5744;
var $84=$size0;
var $85=$result0;
var $86=(($85)|0);
var $87=(($86+4)|0);
HEAP32[(($87)>>2)]=$84;
var $88=(($FR+8)|0);
HEAP32[(($88)>>2)]=306;
var $89=(($FR+12)|0);
HEAP32[(($89)>>2)]=5744;
var $90=$result0;
var $91=$90;
var $92=$size0;
var $93=((($91)+($92))|0);
$nxt0=$93;
var $94=(($FR+8)|0);
HEAP32[(($94)>>2)]=308;
var $95=(($FR+12)|0);
HEAP32[(($95)>>2)]=5744;
var $96=$nxt0;
var $97=$96;
$next0=$97;
var $98=(($FR+8)|0);
HEAP32[(($98)>>2)]=309;
var $99=(($FR+12)|0);
HEAP32[(($99)>>2)]=5744;
$LOC16=0;
var $100=$next0;
var $101=_pageindex_vFgXFo13iF61HsEG6epuwgsystem($100);
$LOC16=$101;
$LOC17=0;
var $102=$1;
var $103=(($102+2080)|0);
var $104=$LOC16;
var $105=_contains_tGsWrN4DY41H9btt3FhjrNA($103,$104);
$LOC17=$105;
var $106=$LOC17;
var $107=(($106<<24)>>24)!=0;
if($107){label=11;break;}else{label=10;break;}
case 10:
label=12;break;
case 11:
var $110=(($FR+8)|0);
HEAP32[(($110)>>2)]=311;
var $111=(($FR+12)|0);
HEAP32[(($111)>>2)]=5744;
var $112=$size0;
var $113=$next0;
var $114=(($113)|0);
HEAP32[(($114)>>2)]=$112;
label=12;break;
case 12:
var $116=(($FR+8)|0);
HEAP32[(($116)>>2)]=313;
var $117=(($FR+12)|0);
HEAP32[(($117)>>2)]=5744;
var $118=(($FR+8)|0);
HEAP32[(($118)>>2)]=347;
var $119=(($FR+12)|0);
HEAP32[(($119)>>2)]=2416;
var $120=(($FR+8)|0);
HEAP32[(($120)>>2)]=313;
var $121=(($FR+12)|0);
HEAP32[(($121)>>2)]=5744;
var $122=$1;
var $123=(($122+2072)|0);
var $124=HEAP32[(($123)>>2)];
var $125=($124|0)==0;
if($125){label=13;break;}else{label=14;break;}
case 13:
label=15;break;
case 14:
var $128=$1;
var $129=(($128+2072)|0);
var $130=HEAP32[(($129)>>2)];
$lastsize0=$130;
label=16;break;
case 15:
$lastsize0=4096;
label=16;break;
case 16:
var $133=(($FR+8)|0);
HEAP32[(($133)>>2)]=314;
var $134=(($FR+12)|0);
HEAP32[(($134)>>2)]=5744;
var $135=$result0;
var $136=$135;
var $137=$lastsize0;
var $138=((($136)-($137))|0);
$prv0=$138;
var $139=(($FR+8)|0);
HEAP32[(($139)>>2)]=316;
var $140=(($FR+12)|0);
HEAP32[(($140)>>2)]=5744;
var $141=$prv0;
var $142=$141;
$prev0=$142;
var $143=(($FR+8)|0);
HEAP32[(($143)>>2)]=317;
var $144=(($FR+12)|0);
HEAP32[(($144)>>2)]=5744;
$LOC27=0;
$LOC28=0;
var $145=$prev0;
var $146=_pageindex_vFgXFo13iF61HsEG6epuwgsystem($145);
$LOC28=$146;
var $147=$1;
var $148=(($147+2080)|0);
var $149=$LOC28;
var $150=_contains_tGsWrN4DY41H9btt3FhjrNA($148,$149);
$LOC27=$150;
var $151=$LOC27;
var $152=(($151<<24)>>24)!=0;
if($152){label=18;break;}else{label=17;break;}
case 17:
label=19;break;
case 18:
var $155=$prev0;
var $156=(($155+4)|0);
var $157=HEAP32[(($156)>>2)];
var $158=$lastsize0;
var $159=($157|0)==($158|0);
var $160=($159&1);
var $161=(($160)&255);
$LOC27=$161;
label=19;break;
case 19:
var $163=$LOC27;
var $164=(($163<<24)>>24)!=0;
if($164){label=21;break;}else{label=20;break;}
case 20:
label=22;break;
case 21:
var $167=(($FR+8)|0);
HEAP32[(($167)>>2)]=319;
var $168=(($FR+12)|0);
HEAP32[(($168)>>2)]=5744;
var $169=$lastsize0;
var $170=$result0;
var $171=(($170)|0);
var $172=(($171)|0);
HEAP32[(($172)>>2)]=$169;
label=23;break;
case 22:
var $174=(($FR+8)|0);
HEAP32[(($174)>>2)]=321;
var $175=(($FR+12)|0);
HEAP32[(($175)>>2)]=5744;
var $176=$result0;
var $177=(($176)|0);
var $178=(($177)|0);
HEAP32[(($178)>>2)]=0;
label=23;break;
case 23:
var $180=(($FR+8)|0);
HEAP32[(($180)>>2)]=322;
var $181=(($FR+12)|0);
HEAP32[(($181)>>2)]=5744;
var $182=$size0;
var $183=$1;
var $184=(($183+2072)|0);
HEAP32[(($184)>>2)]=$182;
_popFrame613();
var $185=$result0;
STACKTOP=sp;return $185;
default: assert(0, "bad label: " + label);
}
}
function _getbigchunk_z9bCNjXTYllZ3pI24nEsw2g($a0,$size0){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+24)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
label = 1;
while(1)switch(label){
case 1:
var $1;
var $2;
var $result0;
var $LOC20;
var $LOC21;
var $FR=sp;
$1=$a0;
$2=$size0;
var $3=(($FR+4)|0);
HEAP32[(($3)>>2)]=3624;
var $4=(($FR+12)|0);
HEAP32[(($4)>>2)]=5744;
var $5=(($FR+8)|0);
HEAP32[(($5)>>2)]=0;
var $6=(($FR+16)|0);
HEAP16[(($6)>>1)]=0;
_nimFrame612($FR);
$result0=0;
var $7=(($FR+8)|0);
HEAP32[(($7)>>2)]=435;
var $8=(($FR+12)|0);
HEAP32[(($8)>>2)]=5744;
var $9=$1;
var $10=(($9+2076)|0);
var $11=HEAP32[(($10)>>2)];
$result0=$11;
var $12=(($FR+8)|0);
HEAP32[(($12)>>2)]=437;
var $13=(($FR+12)|0);
HEAP32[(($13)>>2)]=5744;
label=2;break;
case 2:
var $15=(($FR+8)|0);
HEAP32[(($15)>>2)]=347;
var $16=(($FR+12)|0);
HEAP32[(($16)>>2)]=2416;
var $17=(($FR+8)|0);
HEAP32[(($17)>>2)]=437;
var $18=(($FR+12)|0);
HEAP32[(($18)>>2)]=5744;
var $19=$result0;
var $20=($19|0)==0;
if($20){label=3;break;}else{label=4;break;}
case 3:
label=12;break;
case 4:
var $23=(($FR+8)|0);
HEAP32[(($23)>>2)]=439;
var $24=(($FR+12)|0);
HEAP32[(($24)>>2)]=5744;
var $25=$result0;
var $26=(($25)|0);
var $27=(($26+4)|0);
var $28=HEAP32[(($27)>>2)];
var $29=$2;
var $30=($28|0)==($29|0);
if($30){label=6;break;}else{label=5;break;}
case 5:
label=7;break;
case 6:
var $33=(($FR+8)|0);
HEAP32[(($33)>>2)]=440;
var $34=(($FR+12)|0);
HEAP32[(($34)>>2)]=5744;
var $35=$1;
var $36=(($35+2076)|0);
var $37=$result0;
_listremove_ZRIe9cFnHOrfvS8VmLduoXQsystem($36,$37);
var $38=(($FR+8)|0);
HEAP32[(($38)>>2)]=441;
var $39=(($FR+12)|0);
HEAP32[(($39)>>2)]=5744;
label=20;break;
case 7:
var $41=(($FR+8)|0);
HEAP32[(($41)>>2)]=442;
var $42=(($FR+12)|0);
HEAP32[(($42)>>2)]=5744;
var $43=$2;
var $44=$result0;
var $45=(($44)|0);
var $46=(($45+4)|0);
var $47=HEAP32[(($46)>>2)];
var $48=($43|0)<($47|0);
if($48){label=9;break;}else{label=8;break;}
case 8:
label=10;break;
case 9:
var $51=(($FR+8)|0);
HEAP32[(($51)>>2)]=443;
var $52=(($FR+12)|0);
HEAP32[(($52)>>2)]=5744;
var $53=$1;
var $54=(($53+2076)|0);
var $55=$result0;
_listremove_ZRIe9cFnHOrfvS8VmLduoXQsystem($54,$55);
var $56=(($FR+8)|0);
HEAP32[(($56)>>2)]=444;
var $57=(($FR+12)|0);
HEAP32[(($57)>>2)]=5744;
var $58=$1;
var $59=$result0;
var $60=$2;
_splitchunk_8QXhiy717OAl8WNA2X27EA($58,$59,$60);
var $61=(($FR+8)|0);
HEAP32[(($61)>>2)]=445;
var $62=(($FR+12)|0);
HEAP32[(($62)>>2)]=5744;
label=20;break;
case 10:
label=11;break;
case 11:
var $65=(($FR+8)|0);
HEAP32[(($65)>>2)]=446;
var $66=(($FR+12)|0);
HEAP32[(($66)>>2)]=5744;
var $67=$result0;
var $68=(($67+12)|0);
var $69=HEAP32[(($68)>>2)];
$result0=$69;
label=2;break;
case 12:
var $71=(($FR+8)|0);
HEAP32[(($71)>>2)]=448;
var $72=(($FR+12)|0);
HEAP32[(($72)>>2)]=5744;
var $73=$2;
var $74=($73|0)<524288;
if($74){label=14;break;}else{label=13;break;}
case 13:
label=15;break;
case 14:
var $77=(($FR+8)|0);
HEAP32[(($77)>>2)]=449;
var $78=(($FR+12)|0);
HEAP32[(($78)>>2)]=5744;
var $79=$1;
var $80=_requestoschunks_z9bCNjXTYllZ3pI24nEsw2g_2($79,524288);
$result0=$80;
var $81=(($FR+8)|0);
HEAP32[(($81)>>2)]=450;
var $82=(($FR+12)|0);
HEAP32[(($82)>>2)]=5744;
var $83=$1;
var $84=$result0;
var $85=$2;
_splitchunk_8QXhiy717OAl8WNA2X27EA($83,$84,$85);
label=19;break;
case 15:
var $87=(($FR+8)|0);
HEAP32[(($87)>>2)]=452;
var $88=(($FR+12)|0);
HEAP32[(($88)>>2)]=5744;
var $89=$1;
var $90=$2;
var $91=_requestoschunks_z9bCNjXTYllZ3pI24nEsw2g_2($89,$90);
$result0=$91;
var $92=(($FR+8)|0);
HEAP32[(($92)>>2)]=454;
var $93=(($FR+12)|0);
HEAP32[(($93)>>2)]=5744;
var $94=$2;
var $95=$result0;
var $96=(($95)|0);
var $97=(($96+4)|0);
var $98=HEAP32[(($97)>>2)];
var $99=($94|0)<($98|0);
if($99){label=17;break;}else{label=16;break;}
case 16:
label=18;break;
case 17:
var $102=(($FR+8)|0);
HEAP32[(($102)>>2)]=455;
var $103=(($FR+12)|0);
HEAP32[(($103)>>2)]=5744;
var $104=$1;
var $105=$result0;
var $106=$2;
_splitchunk_8QXhiy717OAl8WNA2X27EA($104,$105,$106);
label=18;break;
case 18:
label=19;break;
case 19:
label=20;break;
case 20:
var $110=(($FR+8)|0);
HEAP32[(($110)>>2)]=456;
var $111=(($FR+12)|0);
HEAP32[(($111)>>2)]=5744;
var $112=$result0;
var $113=(($112)|0);
var $114=(($113)|0);
HEAP32[(($114)>>2)]=0;
var $115=(($FR+8)|0);
HEAP32[(($115)>>2)]=457;
var $116=(($FR+12)|0);
HEAP32[(($116)>>2)]=5744;
var $117=$result0;
var $118=(($117)|0);
var $119=(($118+8)|0);
HEAP8[($119)]=1;
var $120=(($FR+8)|0);
HEAP32[(($120)>>2)]=458;
var $121=(($FR+12)|0);
HEAP32[(($121)>>2)]=5744;
$LOC20=0;
var $122=$result0;
var $123=(($122)|0);
$LOC20=$123;
$LOC21=0;
var $124=$LOC20;
var $125=_pageindex_vFgXFo13iF61HsEG6epuwgsystem($124);
$LOC21=$125;
var $126=$1;
var $127=$1;
var $128=(($127+2080)|0);
var $129=$LOC21;
_incl_Iz1GYiOVKwItgr5CdCm0dQ($126,$128,$129);
var $130=(($FR+8)|0);
HEAP32[(($130)>>2)]=459;
var $131=(($FR+12)|0);
HEAP32[(($131)>>2)]=5744;
var $132=$2;
var $133=$1;
var $134=(($133+2068)|0);
var $135=HEAP32[(($134)>>2)];
var $136=((($135)-($132))|0);
HEAP32[(($134)>>2)]=$136;
_popFrame613();
var $137=$result0;
STACKTOP=sp;return $137;
default: assert(0, "bad label: " + label);
}
}
function _getsmallchunk_h6cvXbfQjxIdThM5GthosA($a0){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+24)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
var $1;
var $result0;
var $res0;
var $FR=sp;
$1=$a0;
var $2=(($FR+4)|0);
HEAP32[(($2)>>2)]=3568;
var $3=(($FR+12)|0);
HEAP32[(($3)>>2)]=5744;
var $4=(($FR+8)|0);
HEAP32[(($4)>>2)]=0;
var $5=(($FR+16)|0);
HEAP16[(($5)>>1)]=0;
_nimFrame612($FR);
$result0=0;
var $6=(($FR+8)|0);
HEAP32[(($6)>>2)]=462;
var $7=(($FR+12)|0);
HEAP32[(($7)>>2)]=5744;
var $8=$1;
var $9=_getbigchunk_z9bCNjXTYllZ3pI24nEsw2g($8,4096);
$res0=$9;
var $10=(($FR+8)|0);
HEAP32[(($10)>>2)]=465;
var $11=(($FR+12)|0);
HEAP32[(($11)>>2)]=5744;
var $12=$res0;
var $13=$12;
$result0=$13;
_popFrame613();
var $14=$result0;
STACKTOP=sp;return $14;
}
function _allocavlnode_neSuioWH6NDTp8E9cNgBmjg($a0,$key0,$upperbound0){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+24)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
label = 1;
while(1)switch(label){
case 1:
var $1;
var $2;
var $3;
var $result0;
var $FR=sp;
var $LOC6;
$1=$a0;
$2=$key0;
$3=$upperbound0;
var $4=(($FR+4)|0);
HEAP32[(($4)>>2)]=3496;
var $5=(($FR+12)|0);
HEAP32[(($5)>>2)]=5744;
var $6=(($FR+8)|0);
HEAP32[(($6)>>2)]=0;
var $7=(($FR+16)|0);
HEAP16[(($7)>>1)]=0;
_nimFrame612($FR);
$result0=0;
var $8=(($FR+8)|0);
HEAP32[(($8)>>2)]=153;
var $9=(($FR+12)|0);
HEAP32[(($9)>>2)]=5744;
var $10=(($FR+8)|0);
HEAP32[(($10)>>2)]=347;
var $11=(($FR+12)|0);
HEAP32[(($11)>>2)]=2416;
var $12=(($FR+8)|0);
HEAP32[(($12)>>2)]=153;
var $13=(($FR+12)|0);
HEAP32[(($13)>>2)]=5744;
var $14=$1;
var $15=(($14+3116)|0);
var $16=HEAP32[(($15)>>2)];
var $17=($16|0)==0;
if($17){label=2;break;}else{label=3;break;}
case 2:
label=4;break;
case 3:
var $20=(($FR+8)|0);
HEAP32[(($20)>>2)]=154;
var $21=(($FR+12)|0);
HEAP32[(($21)>>2)]=5744;
var $22=$1;
var $23=(($22+3116)|0);
var $24=HEAP32[(($23)>>2)];
$result0=$24;
var $25=(($FR+8)|0);
HEAP32[(($25)>>2)]=155;
var $26=(($FR+12)|0);
HEAP32[(($26)>>2)]=5744;
var $27=$1;
var $28=(($27+3116)|0);
var $29=HEAP32[(($28)>>2)];
var $30=(($29)|0);
var $31=(($30)|0);
var $32=HEAP32[(($31)>>2)];
var $33=$1;
var $34=(($33+3116)|0);
HEAP32[(($34)>>2)]=$32;
label=5;break;
case 4:
var $36=(($FR+8)|0);
HEAP32[(($36)>>2)]=157;
var $37=(($FR+12)|0);
HEAP32[(($37)>>2)]=5744;
$LOC6=0;
var $38=$1;
var $39=_llalloc_fTkVQ4Gj2glm9btLqR9bdQDQ($38,20);
$LOC6=$39;
var $40=$LOC6;
var $41=$40;
$result0=$41;
label=5;break;
case 5:
var $43=(($FR+8)|0);
HEAP32[(($43)>>2)]=158;
var $44=(($FR+12)|0);
HEAP32[(($44)>>2)]=5744;
var $45=$2;
var $46=$result0;
var $47=(($46+8)|0);
HEAP32[(($47)>>2)]=$45;
var $48=(($FR+8)|0);
HEAP32[(($48)>>2)]=159;
var $49=(($FR+12)|0);
HEAP32[(($49)>>2)]=5744;
var $50=$3;
var $51=$result0;
var $52=(($51+12)|0);
HEAP32[(($52)>>2)]=$50;
var $53=(($FR+8)|0);
HEAP32[(($53)>>2)]=160;
var $54=(($FR+12)|0);
HEAP32[(($54)>>2)]=5744;
var $55=HEAP32[((16104)>>2)];
var $56=$result0;
var $57=(($56)|0);
var $58=(($57)|0);
HEAP32[(($58)>>2)]=$55;
var $59=(($FR+8)|0);
HEAP32[(($59)>>2)]=161;
var $60=(($FR+12)|0);
HEAP32[(($60)>>2)]=5744;
var $61=HEAP32[((16104)>>2)];
var $62=$result0;
var $63=(($62)|0);
var $64=(($63+4)|0);
HEAP32[(($64)>>2)]=$61;
var $65=(($FR+8)|0);
HEAP32[(($65)>>2)]=162;
var $66=(($FR+12)|0);
HEAP32[(($66)>>2)]=5744;
var $67=$result0;
var $68=(($67+16)|0);
HEAP32[(($68)>>2)]=1;
_popFrame613();
var $69=$result0;
STACKTOP=sp;return $69;
default: assert(0, "bad label: " + label);
}
}
function _add_Xuf47u3imOz8BOk5HURLWQ($a0,$t0,$key0,$upperbound0){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+24)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
label = 1;
while(1)switch(label){
case 1:
var $1;
var $2;
var $3;
var $4;
var $FR=sp;
$1=$a0;
$2=$t0;
$3=$key0;
$4=$upperbound0;
var $5=(($FR+4)|0);
HEAP32[(($5)>>2)]=3432;
var $6=(($FR+12)|0);
HEAP32[(($6)>>2)]=4704;
var $7=(($FR+8)|0);
HEAP32[(($7)>>2)]=0;
var $8=(($FR+16)|0);
HEAP16[(($8)>>1)]=0;
_nimFrame612($FR);
var $9=(($FR+8)|0);
HEAP32[(($9)>>2)]=55;
var $10=(($FR+12)|0);
HEAP32[(($10)>>2)]=4704;
var $11=(($FR+8)|0);
HEAP32[(($11)>>2)]=12;
var $12=(($FR+12)|0);
HEAP32[(($12)>>2)]=4704;
var $13=$2;
var $14=HEAP32[(($13)>>2)];
var $15=(($14)|0);
var $16=(($15)|0);
var $17=HEAP32[(($16)>>2)];
var $18=$2;
var $19=HEAP32[(($18)>>2)];
var $20=($17|0)==($19|0);
if($20){label=3;break;}else{label=2;break;}
case 2:
label=4;break;
case 3:
var $23=(($FR+8)|0);
HEAP32[(($23)>>2)]=56;
var $24=(($FR+12)|0);
HEAP32[(($24)>>2)]=4704;
var $25=$1;
var $26=$3;
var $27=$4;
var $28=_allocavlnode_neSuioWH6NDTp8E9cNgBmjg($25,$26,$27);
var $29=$2;
HEAP32[(($29)>>2)]=$28;
label=12;break;
case 4:
var $31=(($FR+8)|0);
HEAP32[(($31)>>2)]=58;
var $32=(($FR+12)|0);
HEAP32[(($32)>>2)]=4704;
var $33=$3;
var $34=$2;
var $35=HEAP32[(($34)>>2)];
var $36=(($35+8)|0);
var $37=HEAP32[(($36)>>2)];
var $38=($33>>>0)<($37>>>0);
if($38){label=6;break;}else{label=5;break;}
case 5:
label=7;break;
case 6:
var $41=(($FR+8)|0);
HEAP32[(($41)>>2)]=59;
var $42=(($FR+12)|0);
HEAP32[(($42)>>2)]=4704;
var $43=$1;
var $44=$2;
var $45=HEAP32[(($44)>>2)];
var $46=(($45)|0);
var $47=(($46)|0);
var $48=$3;
var $49=$4;
_add_Xuf47u3imOz8BOk5HURLWQ($43,$47,$48,$49);
label=11;break;
case 7:
var $51=(($FR+8)|0);
HEAP32[(($51)>>2)]=60;
var $52=(($FR+12)|0);
HEAP32[(($52)>>2)]=4704;
var $53=$2;
var $54=HEAP32[(($53)>>2)];
var $55=(($54+8)|0);
var $56=HEAP32[(($55)>>2)];
var $57=$3;
var $58=($56>>>0)<($57>>>0);
if($58){label=9;break;}else{label=8;break;}
case 8:
label=10;break;
case 9:
var $61=(($FR+8)|0);
HEAP32[(($61)>>2)]=61;
var $62=(($FR+12)|0);
HEAP32[(($62)>>2)]=4704;
var $63=$1;
var $64=$2;
var $65=HEAP32[(($64)>>2)];
var $66=(($65)|0);
var $67=(($66+4)|0);
var $68=$3;
var $69=$4;
_add_Xuf47u3imOz8BOk5HURLWQ($63,$67,$68,$69);
label=11;break;
case 10:
label=11;break;
case 11:
var $72=(($FR+8)|0);
HEAP32[(($72)>>2)]=64;
var $73=(($FR+12)|0);
HEAP32[(($73)>>2)]=4704;
var $74=$2;
_skew_Cfx7NvEVZIhBjBm7i89boSg($74);
var $75=(($FR+8)|0);
HEAP32[(($75)>>2)]=65;
var $76=(($FR+12)|0);
HEAP32[(($76)>>2)]=4704;
var $77=$2;
_split_Cfx7NvEVZIhBjBm7i89boSg_2($77);
label=12;break;
case 12:
_popFrame613();
STACKTOP=sp;return;
default: assert(0, "bad label: " + label);
}
}
function _rawalloc_yn9c8RLaS8vgVBeMBfmkdUg($a0,$requestedsize0){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+24)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
label = 1;
while(1)switch(label){
case 1:
var $1;
var $2;
var $result0;
var $size0;
var $FR=sp;
var $s0;
var $c0;
var $c01;
$1=$a0;
$2=$requestedsize0;
var $3=(($FR+4)|0);
HEAP32[(($3)>>2)]=3392;
var $4=(($FR+12)|0);
HEAP32[(($4)>>2)]=5744;
var $5=(($FR+8)|0);
HEAP32[(($5)>>2)]=0;
var $6=(($FR+16)|0);
HEAP16[(($6)>>1)]=0;
_nimFrame612($FR);
$result0=0;
var $7=(($FR+8)|0);
HEAP32[(($7)>>2)]=498;
var $8=(($FR+12)|0);
HEAP32[(($8)>>2)]=5744;
var $9=$2;
var $10=_roundup_HS4HdHHFZPftyB49cpIyo7Asystem($9,8);
$size0=$10;
var $11=(($FR+8)|0);
HEAP32[(($11)>>2)]=501;
var $12=(($FR+12)|0);
HEAP32[(($12)>>2)]=5744;
var $13=(($FR+8)|0);
HEAP32[(($13)>>2)]=71;
var $14=(($FR+12)|0);
HEAP32[(($14)>>2)]=5744;
var $15=$size0;
var $16=($15|0)<=4064;
if($16){label=3;break;}else{label=2;break;}
case 2:
label=15;break;
case 3:
var $19=(($FR+8)|0);
HEAP32[(($19)>>2)]=503;
var $20=(($FR+12)|0);
HEAP32[(($20)>>2)]=5744;
var $21=$size0;
var $22=(((($21|0))/(8))&-1);
$s0=$22;
var $23=(($FR+8)|0);
HEAP32[(($23)>>2)]=504;
var $24=(($FR+12)|0);
HEAP32[(($24)>>2)]=5744;
var $25=$s0;
var $26=(($25)|0);
var $27=$1;
var $28=(($27+8)|0);
var $29=(($28+($26<<2))|0);
var $30=HEAP32[(($29)>>2)];
$c0=$30;
var $31=(($FR+8)|0);
HEAP32[(($31)>>2)]=505;
var $32=(($FR+12)|0);
HEAP32[(($32)>>2)]=5744;
var $33=$c0;
var $34=($33|0)==0;
if($34){label=5;break;}else{label=4;break;}
case 4:
label=6;break;
case 5:
var $37=(($FR+8)|0);
HEAP32[(($37)>>2)]=506;
var $38=(($FR+12)|0);
HEAP32[(($38)>>2)]=5744;
var $39=$1;
var $40=_getsmallchunk_h6cvXbfQjxIdThM5GthosA($39);
$c0=$40;
var $41=(($FR+8)|0);
HEAP32[(($41)>>2)]=507;
var $42=(($FR+12)|0);
HEAP32[(($42)>>2)]=5744;
var $43=$c0;
var $44=(($43+20)|0);
HEAP32[(($44)>>2)]=0;
var $45=(($FR+8)|0);
HEAP32[(($45)>>2)]=509;
var $46=(($FR+12)|0);
HEAP32[(($46)>>2)]=5744;
var $47=$size0;
var $48=$c0;
var $49=(($48)|0);
var $50=(($49+4)|0);
HEAP32[(($50)>>2)]=$47;
var $51=(($FR+8)|0);
HEAP32[(($51)>>2)]=510;
var $52=(($FR+12)|0);
HEAP32[(($52)>>2)]=5744;
var $53=$size0;
var $54=$c0;
var $55=(($54+28)|0);
HEAP32[(($55)>>2)]=$53;
var $56=(($FR+8)|0);
HEAP32[(($56)>>2)]=511;
var $57=(($FR+12)|0);
HEAP32[(($57)>>2)]=5744;
var $58=(($FR+8)|0);
HEAP32[(($58)>>2)]=71;
var $59=(($FR+12)|0);
HEAP32[(($59)>>2)]=5744;
var $60=$size0;
var $61=(((4064)-($60))|0);
var $62=$c0;
var $63=(($62+24)|0);
HEAP32[(($63)>>2)]=$61;
var $64=(($FR+8)|0);
HEAP32[(($64)>>2)]=512;
var $65=(($FR+12)|0);
HEAP32[(($65)>>2)]=5744;
var $66=$c0;
var $67=(($66+12)|0);
HEAP32[(($67)>>2)]=0;
var $68=(($FR+8)|0);
HEAP32[(($68)>>2)]=513;
var $69=(($FR+12)|0);
HEAP32[(($69)>>2)]=5744;
var $70=$c0;
var $71=(($70+16)|0);
HEAP32[(($71)>>2)]=0;
var $72=(($FR+8)|0);
HEAP32[(($72)>>2)]=514;
var $73=(($FR+12)|0);
HEAP32[(($73)>>2)]=5744;
var $74=$s0;
var $75=(($74)|0);
var $76=$1;
var $77=(($76+8)|0);
var $78=(($77+($75<<2))|0);
var $79=$c0;
_listadd_DqXPtLsRUwQp3iwLtHEdIgsystem($78,$79);
var $80=(($FR+8)|0);
HEAP32[(($80)>>2)]=515;
var $81=(($FR+12)|0);
HEAP32[(($81)>>2)]=5744;
var $82=$c0;
var $83=(($82+32)|0);
var $84=$83;
$result0=$84;
label=11;break;
case 6:
var $86=(($FR+8)|0);
HEAP32[(($86)>>2)]=523;
var $87=(($FR+12)|0);
HEAP32[(($87)>>2)]=5744;
var $88=$c0;
var $89=(($88+20)|0);
var $90=HEAP32[(($89)>>2)];
var $91=($90|0)==0;
if($91){label=8;break;}else{label=7;break;}
case 7:
label=9;break;
case 8:
var $94=(($FR+8)|0);
HEAP32[(($94)>>2)]=526;
var $95=(($FR+12)|0);
HEAP32[(($95)>>2)]=5744;
var $96=$c0;
var $97=(($96+32)|0);
var $98=$97;
var $99=$c0;
var $100=(($99+28)|0);
var $101=HEAP32[(($100)>>2)];
var $102=((($98)+($101))|0);
var $103=$102;
$result0=$103;
var $104=(($FR+8)|0);
HEAP32[(($104)>>2)]=527;
var $105=(($FR+12)|0);
HEAP32[(($105)>>2)]=5744;
var $106=$size0;
var $107=$c0;
var $108=(($107+28)|0);
var $109=HEAP32[(($108)>>2)];
var $110=((($109)+($106))|0);
HEAP32[(($108)>>2)]=$110;
label=10;break;
case 9:
var $112=(($FR+8)|0);
HEAP32[(($112)>>2)]=529;
var $113=(($FR+12)|0);
HEAP32[(($113)>>2)]=5744;
var $114=$c0;
var $115=(($114+20)|0);
var $116=HEAP32[(($115)>>2)];
var $117=$116;
$result0=$117;
var $118=(($FR+8)|0);
HEAP32[(($118)>>2)]=531;
var $119=(($FR+12)|0);
HEAP32[(($119)>>2)]=5744;
var $120=$c0;
var $121=(($120+20)|0);
var $122=HEAP32[(($121)>>2)];
var $123=(($122)|0);
var $124=HEAP32[(($123)>>2)];
var $125=$c0;
var $126=(($125+20)|0);
HEAP32[(($126)>>2)]=$124;
label=10;break;
case 10:
var $128=(($FR+8)|0);
HEAP32[(($128)>>2)]=532;
var $129=(($FR+12)|0);
HEAP32[(($129)>>2)]=5744;
var $130=$size0;
var $131=$c0;
var $132=(($131+24)|0);
var $133=HEAP32[(($132)>>2)];
var $134=((($133)-($130))|0);
HEAP32[(($132)>>2)]=$134;
label=11;break;
case 11:
var $136=(($FR+8)|0);
HEAP32[(($136)>>2)]=536;
var $137=(($FR+12)|0);
HEAP32[(($137)>>2)]=5744;
var $138=$c0;
var $139=(($138+24)|0);
var $140=HEAP32[(($139)>>2)];
var $141=$size0;
var $142=($140|0)<($141|0);
if($142){label=13;break;}else{label=12;break;}
case 12:
label=14;break;
case 13:
var $145=(($FR+8)|0);
HEAP32[(($145)>>2)]=538;
var $146=(($FR+12)|0);
HEAP32[(($146)>>2)]=5744;
var $147=$s0;
var $148=(($147)|0);
var $149=$1;
var $150=(($149+8)|0);
var $151=(($150+($148<<2))|0);
var $152=$c0;
_listremove_DqXPtLsRUwQp3iwLtHEdIg_2system($151,$152);
label=14;break;
case 14:
label=19;break;
case 15:
var $155=(($FR+8)|0);
HEAP32[(($155)>>2)]=544;
var $156=(($FR+12)|0);
HEAP32[(($156)>>2)]=5744;
var $157=(($FR+8)|0);
HEAP32[(($157)>>2)]=72;
var $158=(($FR+12)|0);
HEAP32[(($158)>>2)]=5744;
var $159=$2;
var $160=((($159)+(24))|0);
var $161=_roundup_HS4HdHHFZPftyB49cpIyo7Asystem($160,4096);
$size0=$161;
var $162=(($FR+8)|0);
HEAP32[(($162)>>2)]=546;
var $163=(($FR+12)|0);
HEAP32[(($163)>>2)]=5744;
var $164=$1;
var $165=$size0;
var $166=_getbigchunk_z9bCNjXTYllZ3pI24nEsw2g($164,$165);
$c01=$166;
var $167=(($FR+8)|0);
HEAP32[(($167)>>2)]=550;
var $168=(($FR+12)|0);
HEAP32[(($168)>>2)]=5744;
var $169=$c01;
var $170=(($169+24)|0);
var $171=$170;
$result0=$171;
var $172=(($FR+8)|0);
HEAP32[(($172)>>2)]=552;
var $173=(($FR+12)|0);
HEAP32[(($173)>>2)]=5744;
var $174=$1;
var $175=(($174+3104)|0);
var $176=HEAP32[(($175)>>2)];
var $177=($176|0)==0;
if($177){label=17;break;}else{label=16;break;}
case 16:
label=18;break;
case 17:
var $180=HEAP32[((16104)>>2)];
var $181=$1;
var $182=(($181+3104)|0);
HEAP32[(($182)>>2)]=$180;
label=18;break;
case 18:
var $184=(($FR+8)|0);
HEAP32[(($184)>>2)]=553;
var $185=(($FR+12)|0);
HEAP32[(($185)>>2)]=5744;
var $186=$1;
var $187=$1;
var $188=(($187+3104)|0);
var $189=$result0;
var $190=$189;
var $191=$result0;
var $192=$191;
var $193=$size0;
var $194=((($192)+($193))|0);
_add_Xuf47u3imOz8BOk5HURLWQ($186,$188,$190,$194);
label=19;break;
case 19:
_popFrame613();
var $196=$result0;
STACKTOP=sp;return $196;
default: assert(0, "bad label: " + label);
}
}
function _alloc0_4cubgSerkjpuLcj5MXjiLw($size0){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+24)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
var $1;
var $result0;
var $FR=sp;
$1=$size0;
var $2=(($FR+4)|0);
HEAP32[(($2)>>2)]=3368;
var $3=(($FR+12)|0);
HEAP32[(($3)>>2)]=5744;
var $4=(($FR+8)|0);
HEAP32[(($4)>>2)]=0;
var $5=(($FR+16)|0);
HEAP16[(($5)>>1)]=0;
_nimFrame612($FR);
$result0=0;
var $6=(($FR+8)|0);
HEAP32[(($6)>>2)]=737;
var $7=(($FR+12)|0);
HEAP32[(($7)>>2)]=5744;
var $8=$1;
var $9=_alloc0_WDxgSWQ1mSIerfvC0kmUtg(16112,$8);
$result0=$9;
_popFrame613();
var $10=$result0;
STACKTOP=sp;return $10;
}
function _isobjslowpath_k9bdq9bQE075AR7scLFt5wIg($obj0,$subclass0,$cache0){
var label=0;
var sp=STACKTOP; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
label = 1;
while(1)switch(label){
case 1:
var $1;
var $2;
var $3;
var $result0;
var $x0;
$1=$obj0;
$2=$subclass0;
$3=$cache0;
$result0=0;
var $4=$1;
var $5=(($4+8)|0);
var $6=HEAP32[(($5)>>2)];
$x0=$6;
label=2;break;
case 2:
var $8=$x0;
var $9=$2;
var $10=($8|0)==($9|0);
if($10){label=3;break;}else{label=4;break;}
case 3:
label=8;break;
case 4:
var $13=$x0;
var $14=($13|0)==0;
if($14){label=6;break;}else{label=5;break;}
case 5:
label=7;break;
case 6:
var $17=$1;
var $18=$3;
var $19=(($18)|0);
HEAP32[(($19)>>2)]=$17;
$result0=0;
label=9;break;
case 7:
var $21=$x0;
var $22=(($21+8)|0);
var $23=HEAP32[(($22)>>2)];
$x0=$23;
label=2;break;
case 8:
var $25=$1;
var $26=$3;
var $27=(($26+4)|0);
HEAP32[(($27)>>2)]=$25;
$result0=1;
label=9;break;
case 9:
var $29=$result0;
STACKTOP=sp;return $29;
default: assert(0, "bad label: " + label);
}
}
function _raiseexceptionaux_jP8mO9c3YubVoLarNIvGorQ($e0){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+8)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
label = 1;
while(1)switch(label){
case 1:
var $1;
var $LOC7;
var $LOC16;
var $LOC25;
var $buf0=sp;
var $LOC42;
$1=$e0;
var $2=HEAP32[((15672)>>2)];
var $3=($2|0)==0;
if($3){label=2;break;}else{label=3;break;}
case 2:
label=7;break;
case 3:
$LOC7=0;
var $6=HEAP32[((15672)>>2)];
var $7=$1;
var $8=FUNCTION_TABLE[$6]($7);
$LOC7=$8;
var $9=$LOC7;
var $10=(($9<<24)>>24)!=0;
if($10){label=4;break;}else{label=5;break;}
case 4:
label=6;break;
case 5:
label=37;break;
case 6:
label=7;break;
case 7:
var $15=HEAP32[((16000)>>2)];
var $16=($15|0)==0;
if($16){label=8;break;}else{label=9;break;}
case 8:
label=13;break;
case 9:
$LOC16=0;
var $19=HEAP32[((16000)>>2)];
var $20=$1;
var $21=FUNCTION_TABLE[$19]($20);
$LOC16=$21;
var $22=$LOC16;
var $23=(($22<<24)>>24)!=0;
if($23){label=10;break;}else{label=11;break;}
case 10:
label=12;break;
case 11:
label=37;break;
case 12:
label=13;break;
case 13:
var $28=HEAP32[((16024)>>2)];
var $29=($28|0)==0;
if($29){label=14;break;}else{label=15;break;}
case 14:
label=25;break;
case 15:
$LOC25=0;
var $32=HEAP32[((16024)>>2)];
var $33=(($32+164)|0);
var $34=HEAP8[($33)];
var $35=(($34<<24)>>24)!=0;
var $36=$35^1;
var $37=($36&1);
var $38=(($37)&255);
$LOC25=$38;
var $39=$LOC25;
var $40=(($39<<24)>>24)!=0;
if($40){label=16;break;}else{label=17;break;}
case 16:
label=21;break;
case 17:
var $43=HEAP32[((16024)>>2)];
var $44=(($43+168)|0);
var $45=(($44+4)|0);
var $46=HEAP32[(($45)>>2)];
var $47=($46|0)!=0;
if($47){label=18;break;}else{label=19;break;}
case 18:
var $49=HEAP32[((16024)>>2)];
var $50=(($49+168)|0);
var $51=(($50)|0);
var $52=HEAP32[(($51)>>2)];
var $53=$1;
var $54=HEAP32[((16024)>>2)];
var $55=(($54+168)|0);
var $56=(($55+4)|0);
var $57=HEAP32[(($56)>>2)];
var $58=FUNCTION_TABLE[$52]($53,$57);
var $59=($58&255);
var $70=$59;label=20;break;
case 19:
var $61=HEAP32[((16024)>>2)];
var $62=(($61+168)|0);
var $63=(($62)|0);
var $64=HEAP32[(($63)>>2)];
var $65=$64;
var $66=$1;
var $67=FUNCTION_TABLE[$65]($66);
var $68=($67&255);
var $70=$68;label=20;break;
case 20:
var $70;
var $71=(($70)&255);
$LOC25=$71;
label=21;break;
case 21:
var $73=$LOC25;
var $74=(($73<<24)>>24)!=0;
if($74){label=23;break;}else{label=22;break;}
case 22:
label=24;break;
case 23:
var $77=$1;
_pushCurrentException($77);
var $78=HEAP32[((16024)>>2)];
var $79=(($78+8)|0);
var $80=(($79)|0);
_longjmp($80,1);
throw "Reached an unreachable!";
case 24:
label=36;break;
case 25:
var $83=$1;
var $84=(($83)|0);
var $85=(($84)|0);
var $86=HEAP32[(($85)>>2)];
var $87=_isObjWithCache($86,21272,19728);
var $88=(($87<<24)>>24)!=0;
if($88){label=27;break;}else{label=26;break;}
case 26:
label=28;break;
case 27:
var $91=$1;
var $92=(($91+8)|0);
var $93=HEAP32[(($92)>>2)];
_showerrormessage_rsUJ87b89bH0GlWKYL9c8wUQ($93);
_quitordebug_IZ2oOmqdsYQ7vixQGKSDcAsystem();
label=36;break;
case 28:
var $95=_rawNewString(2000);
HEAP32[(($buf0)>>2)]=$95;
var $96=$1;
var $97=(($96+16)|0);
var $98=HEAP32[(($97)>>2)];
var $99=($98|0)==0;
if($99){label=30;break;}else{label=29;break;}
case 29:
label=31;break;
case 30:
_rawwritestacktrace_imNuOIqoJ9csXlrh58OtfXg($buf0);
label=32;break;
case 31:
var $103=HEAP32[(($buf0)>>2)];
var $104=$1;
var $105=(($104+16)|0);
var $106=HEAP32[(($105)>>2)];
var $107=(($106)|0);
var $108=(($107)|0);
var $109=HEAP32[(($108)>>2)];
var $110=(($109)|0);
var $111=_resizeString($103,$110);
HEAP32[(($buf0)>>2)]=$111;
var $112=HEAP32[(($buf0)>>2)];
var $113=$1;
var $114=(($113+16)|0);
var $115=HEAP32[(($114)>>2)];
_appendString615($112,$115);
label=32;break;
case 32:
var $117=HEAP32[(($buf0)>>2)];
var $118=_resizeString($117,28);
HEAP32[(($buf0)>>2)]=$118;
var $119=HEAP32[(($buf0)>>2)];
_appendString615($119,7800);
var $120=$1;
var $121=(($120+12)|0);
var $122=HEAP32[(($121)>>2)];
var $123=($122|0)==0;
if($123){label=33;break;}else{label=34;break;}
case 33:
label=35;break;
case 34:
var $126=HEAP32[(($buf0)>>2)];
var $127=$1;
var $128=(($127+12)|0);
var $129=HEAP32[(($128)>>2)];
var $130=(($129)|0);
var $131=(($130)|0);
var $132=HEAP32[(($131)>>2)];
var $133=(($132)|0);
var $134=_resizeString($126,$133);
HEAP32[(($buf0)>>2)]=$134;
var $135=HEAP32[(($buf0)>>2)];
var $136=$1;
var $137=(($136+12)|0);
var $138=HEAP32[(($137)>>2)];
_appendString615($135,$138);
label=35;break;
case 35:
var $140=HEAP32[(($buf0)>>2)];
var $141=_resizeString($140,2);
HEAP32[(($buf0)>>2)]=$141;
var $142=HEAP32[(($buf0)>>2)];
_appendString615($142,7784);
$LOC42=0;
var $143=$1;
var $144=(($143+8)|0);
var $145=HEAP32[(($144)>>2)];
var $146=_cstrToNimstr($145);
$LOC42=$146;
var $147=HEAP32[(($buf0)>>2)];
var $148=$LOC42;
var $149=(($148)|0);
var $150=(($149)|0);
var $151=HEAP32[(($150)>>2)];
var $152=(($151)|0);
var $153=_resizeString($147,$152);
HEAP32[(($buf0)>>2)]=$153;
var $154=HEAP32[(($buf0)>>2)];
var $155=$LOC42;
_appendString615($154,$155);
var $156=HEAP32[(($buf0)>>2)];
var $157=_resizeString($156,2);
HEAP32[(($buf0)>>2)]=$157;
var $158=HEAP32[(($buf0)>>2)];
_appendString615($158,7768);
var $159=HEAP32[(($buf0)>>2)];
var $160=(($159+8)|0);
var $161=(($160)|0);
_showerrormessage_rsUJ87b89bH0GlWKYL9c8wUQ($161);
_quitordebug_IZ2oOmqdsYQ7vixQGKSDcAsystem();
label=36;break;
case 36:
label=37;break;
case 37:
STACKTOP=sp;return;
default: assert(0, "bad label: " + label);
}
}
function _raiseException($e0,$ename0){
var label=0;
var sp=STACKTOP; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
var $1;
var $2;
$1=$e0;
$2=$ename0;
var $3=$2;
var $4=$1;
var $5=(($4+8)|0);
HEAP32[(($5)>>2)]=$3;
var $6=_copyString(7608);
var $7=$1;
var $8=(($7+16)|0);
HEAP32[(($8)>>2)]=$6;
var $9=$1;
var $10=(($9+16)|0);
_rawwritestacktrace_imNuOIqoJ9csXlrh58OtfXg($10);
var $11=$1;
_raiseexceptionaux_jP8mO9c3YubVoLarNIvGorQ($11);
STACKTOP=sp;return;
}
function _getfilehandle_bZ9c2yojtXoDTUpfyl8h8Rg($f0){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+24)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
var $1;
var $result0;
var $FR=sp;
$1=$f0;
var $2=(($FR+4)|0);
HEAP32[(($2)>>2)]=3240;
var $3=(($FR+12)|0);
HEAP32[(($3)>>2)]=3168;
var $4=(($FR+8)|0);
HEAP32[(($4)>>2)]=0;
var $5=(($FR+16)|0);
HEAP16[(($5)>>1)]=0;
_nimFrame612($FR);
$result0=0;
var $6=(($FR+8)|0);
HEAP32[(($6)>>2)]=103;
var $7=(($FR+12)|0);
HEAP32[(($7)>>2)]=3168;
var $8=$1;
var $9=_fileno($8);
$result0=$9;
_popFrame613();
var $10=$result0;
STACKTOP=sp;return $10;
}
function _close_BWnr8V7RERYno9bIdPmw8Hw($f0){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+24)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
var $1;
var $LOC1;
var $FR=sp;
$1=$f0;
var $2=(($FR+4)|0);
HEAP32[(($2)>>2)]=3144;
var $3=(($FR+12)|0);
HEAP32[(($3)>>2)]=3168;
var $4=(($FR+8)|0);
HEAP32[(($4)>>2)]=0;
var $5=(($FR+16)|0);
HEAP16[(($5)>>1)]=0;
_nimFrame612($FR);
var $6=(($FR+8)|0);
HEAP32[(($6)>>2)]=100;
var $7=(($FR+12)|0);
HEAP32[(($7)>>2)]=3168;
$LOC1=0;
var $8=$1;
var $9=_fclose($8);
$LOC1=$9;
_popFrame613();
STACKTOP=sp;return;
}
function _open_sEp0GH2306oGo9bqBpj5oTQ($f0,$filename0,$mode0,$bufsize0){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+104)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
label = 1;
while(1)switch(label){
case 1:
var $1;
var $2;
var $3;
var $4;
var $result0;
var $p0;
var $FR=sp;
var $f20;
var $res0=(sp)+(24);
var $LOC7;
var $LOC8;
var $LOC9;
var $LOC15;
var $LOC19;
var $LOC23;
$1=$f0;
$2=$filename0;
$3=$mode0;
$4=$bufsize0;
var $5=(($FR+4)|0);
HEAP32[(($5)>>2)]=3104;
var $6=(($FR+12)|0);
HEAP32[(($6)>>2)]=3168;
var $7=(($FR+8)|0);
HEAP32[(($7)>>2)]=0;
var $8=(($FR+16)|0);
HEAP16[(($8)>>1)]=0;
_nimFrame612($FR);
$result0=0;
var $9=(($FR+8)|0);
HEAP32[(($9)>>2)]=313;
var $10=(($FR+12)|0);
HEAP32[(($10)>>2)]=3168;
var $11=$2;
var $12=(($11+8)|0);
var $13=(($12)|0);
var $14=$3;
var $15=($14&255);
var $16=(($15)|0);
var $17=((8264+($16<<2))|0);
var $18=HEAP32[(($17)>>2)];
var $19=(($18+8)|0);
var $20=(($19)|0);
var $21=_fopen($13,$20);
var $22=$21;
$p0=$22;
var $23=(($FR+8)|0);
HEAP32[(($23)>>2)]=314;
var $24=(($FR+12)|0);
HEAP32[(($24)>>2)]=3168;
var $25=(($FR+8)|0);
HEAP32[(($25)>>2)]=347;
var $26=(($FR+12)|0);
HEAP32[(($26)>>2)]=2416;
var $27=(($FR+8)|0);
HEAP32[(($27)>>2)]=314;
var $28=(($FR+12)|0);
HEAP32[(($28)>>2)]=3168;
var $29=$p0;
var $30=($29|0)==0;
if($30){label=2;break;}else{label=3;break;}
case 2:
label=20;break;
case 3:
var $33=(($FR+8)|0);
HEAP32[(($33)>>2)]=319;
var $34=(($FR+12)|0);
HEAP32[(($34)>>2)]=3168;
var $35=$p0;
var $36=$35;
$f20=$36;
var $37=$res0;
_memset($37, 0, 76)|0;
var $38=(($FR+8)|0);
HEAP32[(($38)>>2)]=321;
var $39=(($FR+12)|0);
HEAP32[(($39)>>2)]=3168;
$LOC7=0;
$LOC8=0;
var $40=$f20;
var $41=_getfilehandle_bZ9c2yojtXoDTUpfyl8h8Rg($40);
$LOC8=$41;
$LOC9=0;
var $42=$LOC8;
var $43=_fstat($42,$res0);
$LOC9=$43;
var $44=$LOC9;
var $45=0<=($44|0);
var $46=($45&1);
var $47=(($46)&255);
$LOC7=$47;
var $48=$LOC7;
var $49=(($48<<24)>>24)!=0;
if($49){label=5;break;}else{label=4;break;}
case 4:
label=6;break;
case 5:
var $52=(($res0+12)|0);
var $53=HEAP32[(($52)>>2)];
var $54=$53&61440;
var $55=($54|0)==16384;
var $56=($55&1);
var $57=(($56)&255);
$LOC7=$57;
label=6;break;
case 6:
var $59=$LOC7;
var $60=(($59<<24)>>24)!=0;
if($60){label=8;break;}else{label=7;break;}
case 7:
label=9;break;
case 8:
var $63=(($FR+8)|0);
HEAP32[(($63)>>2)]=322;
var $64=(($FR+12)|0);
HEAP32[(($64)>>2)]=3168;
var $65=$f20;
_close_BWnr8V7RERYno9bIdPmw8Hw($65);
var $66=(($FR+8)|0);
HEAP32[(($66)>>2)]=323;
var $67=(($FR+12)|0);
HEAP32[(($67)>>2)]=3168;
$result0=0;
label=21;break;
case 9:
var $69=(($FR+8)|0);
HEAP32[(($69)>>2)]=324;
var $70=(($FR+12)|0);
HEAP32[(($70)>>2)]=3168;
$result0=1;
var $71=(($FR+8)|0);
HEAP32[(($71)>>2)]=325;
var $72=(($FR+12)|0);
HEAP32[(($72)>>2)]=3168;
var $73=$p0;
var $74=$73;
var $75=$1;
HEAP32[(($75)>>2)]=$74;
var $76=(($FR+8)|0);
HEAP32[(($76)>>2)]=326;
var $77=(($FR+12)|0);
HEAP32[(($77)>>2)]=3168;
$LOC15=0;
var $78=$4;
var $79=0<($78|0);
var $80=($79&1);
var $81=(($80)&255);
$LOC15=$81;
var $82=$LOC15;
var $83=(($82<<24)>>24)!=0;
if($83){label=11;break;}else{label=10;break;}
case 10:
label=12;break;
case 11:
var $86=$4;
var $87=($86|0)<=2147483647;
var $88=($87&1);
var $89=(($88)&255);
$LOC15=$89;
label=12;break;
case 12:
var $91=$LOC15;
var $92=(($91<<24)>>24)!=0;
if($92){label=14;break;}else{label=13;break;}
case 13:
label=15;break;
case 14:
var $95=(($FR+8)|0);
HEAP32[(($95)>>2)]=327;
var $96=(($FR+12)|0);
HEAP32[(($96)>>2)]=3168;
$LOC19=0;
var $97=$1;
var $98=HEAP32[(($97)>>2)];
var $99=$4;
var $100=_setvbuf($98,0,0,$99);
$LOC19=$100;
label=19;break;
case 15:
var $102=(($FR+8)|0);
HEAP32[(($102)>>2)]=328;
var $103=(($FR+12)|0);
HEAP32[(($103)>>2)]=3168;
var $104=$4;
var $105=($104|0)==0;
if($105){label=17;break;}else{label=16;break;}
case 16:
label=18;break;
case 17:
var $108=(($FR+8)|0);
HEAP32[(($108)>>2)]=329;
var $109=(($FR+12)|0);
HEAP32[(($109)>>2)]=3168;
$LOC23=0;
var $110=$1;
var $111=HEAP32[(($110)>>2)];
var $112=_setvbuf($111,0,2,0);
$LOC23=$112;
label=19;break;
case 18:
label=19;break;
case 19:
label=20;break;
case 20:
label=21;break;
case 21:
_popFrame613();
var $117=$result0;
STACKTOP=sp;return $117;
default: assert(0, "bad label: " + label);
}
}
function _open_hqzpWQbdA2B8l9a6wwNoP4g($filename0,$mode0,$bufsize0){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+8)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
label = 1;
while(1)switch(label){
case 1:
var $1;
var $2;
var $3;
var $result0=sp;
var $LOC3;
$1=$filename0;
$2=$mode0;
$3=$bufsize0;
HEAP32[(($result0)>>2)]=0;
$LOC3=0;
var $4=$1;
var $5=$2;
var $6=$3;
var $7=_open_sEp0GH2306oGo9bqBpj5oTQ($result0,$4,$5,$6);
$LOC3=$7;
var $8=$LOC3;
var $9=(($8<<24)>>24)!=0;
if($9){label=2;break;}else{label=3;break;}
case 2:
label=4;break;
case 3:
var $12=$1;
_sysfatal_p4l3kdztdOPD3nsQRAEDqwsystem(7664,$12);
throw "Reached an unreachable!";
case 4:
var $14=HEAP32[(($result0)>>2)];
STACKTOP=sp;return $14;
default: assert(0, "bad label: " + label);
}
}
function _flushfile_BWnr8V7RERYno9bIdPmw8Hw_2($f0){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+24)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
var $1;
var $LOC1;
var $FR=sp;
$1=$f0;
var $2=(($FR+4)|0);
HEAP32[(($2)>>2)]=2976;
var $3=(($FR+12)|0);
HEAP32[(($3)>>2)]=3168;
var $4=(($FR+8)|0);
HEAP32[(($4)>>2)]=0;
var $5=(($FR+16)|0);
HEAP16[(($5)>>1)]=0;
_nimFrame612($FR);
var $6=(($FR+8)|0);
HEAP32[(($6)>>2)]=102;
var $7=(($FR+12)|0);
HEAP32[(($7)>>2)]=3168;
$LOC1=0;
var $8=$1;
var $9=_fflush($8);
$LOC1=$9;
_popFrame613();
STACKTOP=sp;return;
}
function _mnewString($len0){
var label=0;
var sp=STACKTOP; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
var $1;
var $result0;
$1=$len0;
$result0=0;
var $2=$1;
var $3=_rawNewString($2);
$result0=$3;
var $4=$1;
var $5=$result0;
var $6=(($5)|0);
var $7=(($6)|0);
HEAP32[(($7)>>2)]=$4;
var $8=$result0;
STACKTOP=sp;return $8;
}
function _raiseeio_PpfSiTIeNpMAb9a5o6SglJw($msg0){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+24)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
var $1;
var $FR=sp;
$1=$msg0;
var $2=(($FR+4)|0);
HEAP32[(($2)>>2)]=2904;
var $3=(($FR+12)|0);
HEAP32[(($3)>>2)]=3168;
var $4=(($FR+8)|0);
HEAP32[(($4)>>2)]=0;
var $5=(($FR+16)|0);
HEAP16[(($5)>>1)]=0;
_nimFrame612($FR);
var $6=(($FR+8)|0);
HEAP32[(($6)>>2)]=51;
var $7=(($FR+12)|0);
HEAP32[(($7)>>2)]=3168;
var $8=$1;
_sysfatal_orK8PicRB9bj8BG69bF8HQbwsystem($8);
throw "Reached an unreachable!";
STACKTOP=sp;return;
}
function _writebuffer_nZ0pNe9cd9cXtoayexCiaDtA_2($f0,$buffer0,$len0){
var label=0;
var sp=STACKTOP; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
var $1;
var $2;
var $3;
var $result0;
var $LOC1;
$1=$f0;
$2=$buffer0;
$3=$len0;
$result0=0;
$LOC1=0;
var $4=$2;
var $5=$3;
var $6=$1;
var $7=_fwrite($4,1,$5,$6);
$LOC1=$7;
var $8=$LOC1;
$result0=$8;
var $9=$result0;
STACKTOP=sp;return $9;
}
function _write_c4mGyJBvK73pdM22jiweKQ($f0,$s0){
var label=0;
var sp=STACKTOP; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
label = 1;
while(1)switch(label){
case 1:
var $1;
var $2;
var $LOC3;
$1=$f0;
$2=$s0;
$LOC3=0;
var $3=$1;
var $4=$2;
var $5=(($4+8)|0);
var $6=(($5)|0);
var $7=$2;
var $8=($7|0)!=0;
if($8){label=2;break;}else{label=3;break;}
case 2:
var $10=$2;
var $11=(($10)|0);
var $12=(($11)|0);
var $13=HEAP32[(($12)>>2)];
var $16=$13;label=4;break;
case 3:
var $16=0;label=4;break;
case 4:
var $16;
var $17=_writebuffer_nZ0pNe9cd9cXtoayexCiaDtA_2($3,$6,$16);
$LOC3=$17;
var $18=$LOC3;
var $19=$2;
var $20=($19|0)!=0;
if($20){label=5;break;}else{label=6;break;}
case 5:
var $22=$2;
var $23=(($22)|0);
var $24=(($23)|0);
var $25=HEAP32[(($24)>>2)];
var $28=$25;label=7;break;
case 6:
var $28=0;label=7;break;
case 7:
var $28;
var $29=($18|0)==($28|0);
if($29){label=8;break;}else{label=9;break;}
case 8:
label=10;break;
case 9:
_raiseeio_PpfSiTIeNpMAb9a5o6SglJw(7624);
throw "Reached an unreachable!";
case 10:
STACKTOP=sp;return;
default: assert(0, "bad label: " + label);
}
}
function _raiseOverflow(){
var label=0;
_sysfatal_cjY6dGD4PiJNY9cmtw6Ay8Qsystem(7576);
throw "Reached an unreachable!";
return;
}
function _mulInt($a0,$b0){
var label=0;
var sp=STACKTOP; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
label = 1;
while(1)switch(label){
case 1:
var $1;
var $2;
var $result0;
var $resasfloat0;
var $floatprod0;
$1=$a0;
$2=$b0;
$result0=0;
$resasfloat0=0;
$floatprod0=0;
var $3=$1;
var $4=$2;
var $5=(Math_imul($3,$4)|0);
$result0=$5;
var $6=$1;
var $7=($6|0);
var $8=$2;
var $9=($8|0);
var $10=($7)*($9);
$floatprod0=$10;
var $11=$result0;
var $12=($11|0);
$resasfloat0=$12;
var $13=$resasfloat0;
var $14=$floatprod0;
var $15=$13==$14;
if($15){label=3;break;}else{label=2;break;}
case 2:
label=4;break;
case 3:
label=14;break;
case 4:
var $19=$resasfloat0;
var $20=$floatprod0;
var $21=($19)-($20);
var $22=$21>0;
if($22){label=5;break;}else{label=6;break;}
case 5:
var $24=$resasfloat0;
var $25=$floatprod0;
var $26=($24)-($25);
var $33=$26;label=7;break;
case 6:
var $28=$resasfloat0;
var $29=$floatprod0;
var $30=($28)-($29);
var $31=((-.0))-($30);
var $33=$31;label=7;break;
case 7:
var $33;
var $34=($33)*(32);
var $35=$floatprod0;
var $36=$35>0;
if($36){label=8;break;}else{label=9;break;}
case 8:
var $38=$floatprod0;
var $43=$38;label=10;break;
case 9:
var $40=$floatprod0;
var $41=((-.0))-($40);
var $43=$41;label=10;break;
case 10:
var $43;
var $44=$34<=$43;
if($44){label=12;break;}else{label=11;break;}
case 11:
label=13;break;
case 12:
label=14;break;
case 13:
_raiseOverflow();
label=14;break;
case 14:
var $49=$result0;
STACKTOP=sp;return $49;
default: assert(0, "bad label: " + label);
}
}
function _newSeq($typ0,$len0){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+24)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
var $1;
var $2;
var $result0;
var $LOC1;
var $LOC2;
var $FR=sp;
$1=$typ0;
$2=$len0;
var $3=(($FR+4)|0);
HEAP32[(($3)>>2)]=2384;
var $4=(($FR+12)|0);
HEAP32[(($4)>>2)]=3448;
var $5=(($FR+8)|0);
HEAP32[(($5)>>2)]=0;
var $6=(($FR+16)|0);
HEAP16[(($6)>>1)]=0;
_nimFrame612($FR);
$result0=0;
var $7=(($FR+8)|0);
HEAP32[(($7)>>2)]=513;
var $8=(($FR+12)|0);
HEAP32[(($8)>>2)]=3448;
$LOC1=0;
var $9=$2;
var $10=$1;
var $11=(($10+8)|0);
var $12=HEAP32[(($11)>>2)];
var $13=(($12)|0);
var $14=HEAP32[(($13)>>2)];
var $15=_mulInt($9,$14);
$LOC1=$15;
$LOC2=0;
var $16=$LOC1;
var $17=_addInt619($16,8);
$LOC2=$17;
var $18=$1;
var $19=$LOC2;
var $20=_newObj($18,$19);
$result0=$20;
var $21=(($FR+8)|0);
HEAP32[(($21)>>2)]=514;
var $22=(($FR+12)|0);
HEAP32[(($22)>>2)]=3448;
var $23=$2;
var $24=$result0;
var $25=$24;
var $26=(($25)|0);
HEAP32[(($26)>>2)]=$23;
var $27=(($FR+8)|0);
HEAP32[(($27)>>2)]=515;
var $28=(($FR+12)|0);
HEAP32[(($28)>>2)]=3448;
var $29=$2;
var $30=$result0;
var $31=$30;
var $32=(($31+4)|0);
HEAP32[(($32)>>2)]=$29;
_popFrame613();
var $33=$result0;
STACKTOP=sp;return $33;
}
function _raiseIndexError(){
var label=0;
_sysfatal_xS3KIecQr1nm9bJJvI4nGRwsystem(7544);
throw "Reached an unreachable!";
return;
}
function _nimInt64ToStr($x0$0,$x0$1){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+16)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
var $1=sp;
var $result0=(sp)+(8);
var $st$0$0=(($1)|0);
HEAP32[(($st$0$0)>>2)]=$x0$0;
var $st$1$1=(($1+4)|0);
HEAP32[(($st$1$1)>>2)]=$x0$1;
HEAP32[(($result0)>>2)]=0;
var $2=_rawNewString(32);
HEAP32[(($result0)>>2)]=$2;
var $ld$2$0=(($1)|0);
var $3$0=HEAP32[(($ld$2$0)>>2)];
var $ld$3$1=(($1+4)|0);
var $3$1=HEAP32[(($ld$3$1)>>2)];
_add_IbYQ9cTcoQ89aIwM2IEYGMng($result0,$3$0,$3$1);
var $4=HEAP32[(($result0)>>2)];
STACKTOP=sp;return $4;
}
function _raiseRangeError($val0$0,$val0$1){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+8)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
var $1=sp;
var $LOC1;
var $st$0$0=(($1)|0);
HEAP32[(($st$0$0)>>2)]=$val0$0;
var $st$1$1=(($1+4)|0);
HEAP32[(($st$1$1)>>2)]=$val0$1;
$LOC1=0;
var $ld$2$0=(($1)|0);
var $2$0=HEAP32[(($ld$2$0)>>2)];
var $ld$3$1=(($1+4)|0);
var $2$1=HEAP32[(($ld$3$1)>>2)];
var $3=_nimInt64ToStr($2$0,$2$1);
$LOC1=$3;
var $4=$LOC1;
_sysfatal_f2dKuymeed9cUs7OQBJ8Nxwsystem(7512,$4);
throw "Reached an unreachable!";
STACKTOP=sp;return;
}
function _chckNil($p0){
var label=0;
var sp=STACKTOP; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
label = 1;
while(1)switch(label){
case 1:
var $1;
$1=$p0;
var $2=$1;
var $3=($2|0)==0;
if($3){label=3;break;}else{label=2;break;}
case 2:
label=4;break;
case 3:
_sysfatal_i2L89a3lg6SlU5J9amD3c3ewsystem(7464);
throw "Reached an unreachable!";
case 4:
STACKTOP=sp;return;
default: assert(0, "bad label: " + label);
}
}
function _signalHandler($sign0){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+8)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
label = 1;
while(1)switch(label){
case 1:
var $1;
var $buf0=sp;
$1=$sign0;
_Gcdisable_IZ2oOmqdsYQ7vixQGKSDcA_3system();
var $2=_rawNewString(2000);
HEAP32[(($buf0)>>2)]=$2;
_rawwritestacktrace_imNuOIqoJ9csXlrh58OtfXg($buf0);
var $3=$1;
var $4=($3|0)==2;
if($4){label=3;break;}else{label=2;break;}
case 2:
label=4;break;
case 3:
var $7=HEAP32[(($buf0)>>2)];
var $8=_resizeString($7,31);
HEAP32[(($buf0)>>2)]=$8;
var $9=HEAP32[(($buf0)>>2)];
_appendString615($9,7424);
label=24;break;
case 4:
var $11=$1;
var $12=($11|0)==11;
if($12){label=6;break;}else{label=5;break;}
case 5:
label=7;break;
case 6:
var $15=HEAP32[(($buf0)>>2)];
var $16=_resizeString($15,61);
HEAP32[(($buf0)>>2)]=$16;
var $17=HEAP32[(($buf0)>>2)];
_appendString615($17,7312);
label=24;break;
case 7:
var $19=$1;
var $20=($19|0)==6;
if($20){label=9;break;}else{label=8;break;}
case 8:
label=10;break;
case 9:
var $23=HEAP32[(($buf0)>>2)];
var $24=_resizeString($23,31);
HEAP32[(($buf0)>>2)]=$24;
var $25=HEAP32[(($buf0)>>2)];
_appendString615($25,7272);
label=24;break;
case 10:
var $27=$1;
var $28=($27|0)==8;
if($28){label=12;break;}else{label=11;break;}
case 11:
label=13;break;
case 12:
var $31=HEAP32[(($buf0)>>2)];
var $32=_resizeString($31,26);
HEAP32[(($buf0)>>2)]=$32;
var $33=HEAP32[(($buf0)>>2)];
_appendString615($33,7232);
label=24;break;
case 13:
var $35=$1;
var $36=($35|0)==4;
if($36){label=15;break;}else{label=14;break;}
case 14:
label=16;break;
case 15:
var $39=HEAP32[(($buf0)>>2)];
var $40=_resizeString($39,27);
HEAP32[(($buf0)>>2)]=$40;
var $41=HEAP32[(($buf0)>>2)];
_appendString615($41,7192);
label=24;break;
case 16:
var $43=$1;
var $44=($43|0)==11;
if($44){label=18;break;}else{label=17;break;}
case 17:
label=19;break;
case 18:
var $47=HEAP32[(($buf0)>>2)];
var $48=_resizeString($47,60);
HEAP32[(($buf0)>>2)]=$48;
var $49=HEAP32[(($buf0)>>2)];
_appendString615($49,7120);
label=24;break;
case 19:
var $51=$1;
var $52=($51|0)==13;
if($52){label=21;break;}else{label=20;break;}
case 20:
label=22;break;
case 21:
var $55=HEAP32[(($buf0)>>2)];
var $56=_resizeString($55,22);
HEAP32[(($buf0)>>2)]=$56;
var $57=HEAP32[(($buf0)>>2)];
_appendString615($57,7088);
label=23;break;
case 22:
var $59=HEAP32[(($buf0)>>2)];
var $60=_resizeString($59,15);
HEAP32[(($buf0)>>2)]=$60;
var $61=HEAP32[(($buf0)>>2)];
_appendString615($61,7064);
label=23;break;
case 23:
label=24;break;
case 24:
var $64=HEAP32[(($buf0)>>2)];
var $65=(($64+8)|0);
var $66=(($65)|0);
_showerrormessage_rsUJ87b89bH0GlWKYL9c8wUQ($66);
_Gcenable_IZ2oOmqdsYQ7vixQGKSDcA_4system();
_exit(1);
throw "Reached an unreachable!";
STACKTOP=sp;return;
default: assert(0, "bad label: " + label);
}
}
function _registersignalhandler_njssp69aa7hvxte9bJ8uuDcg_3(){
var label=0;
var sp=STACKTOP; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
var $LOC1;
var $LOC2;
var $LOC3;
var $LOC4;
var $LOC5;
var $LOC6;
var $LOC7;
$LOC1=0;
var $1=_signal(2,2);
$LOC1=$1;
$LOC2=0;
var $2=_signal(11,2);
$LOC2=$2;
$LOC3=0;
var $3=_signal(6,2);
$LOC3=$3;
$LOC4=0;
var $4=_signal(8,2);
$LOC4=$4;
$LOC5=0;
var $5=_signal(4,2);
$LOC5=$5;
$LOC6=0;
var $6=_signal(11,2);
$LOC6=$6;
$LOC7=0;
var $7=_signal(13,2);
$LOC7=$7;
STACKTOP=sp;return;
}
function _chckObj($obj0,$subclass0){
var label=0;
var sp=STACKTOP; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
label = 1;
while(1)switch(label){
case 1:
var $1;
var $2;
var $x0;
$1=$obj0;
$2=$subclass0;
var $3=$1;
$x0=$3;
var $4=$x0;
var $5=$2;
var $6=($4|0)==($5|0);
if($6){label=3;break;}else{label=2;break;}
case 2:
label=4;break;
case 3:
label=13;break;
case 4:
label=5;break;
case 5:
var $11=$x0;
var $12=$2;
var $13=($11|0)==($12|0);
if($13){label=6;break;}else{label=7;break;}
case 6:
label=11;break;
case 7:
var $16=$x0;
var $17=($16|0)==0;
if($17){label=9;break;}else{label=8;break;}
case 8:
label=10;break;
case 9:
_sysfatal_Ejh7BI1VhaxnxluVeF9aLxgsystem(7024);
throw "Reached an unreachable!";
case 10:
var $21=$x0;
var $22=(($21+8)|0);
var $23=HEAP32[(($22)>>2)];
$x0=$23;
label=5;break;
case 11:
label=12;break;
case 12:
label=13;break;
case 13:
STACKTOP=sp;return;
default: assert(0, "bad label: " + label);
}
}
function _getdiscriminant_wq1GP7ZPZ7P1uZUypfc9ciA($aa0,$n0){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+24)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
label = 1;
while(1)switch(label){
case 1:
var $1;
var $2;
var $result0;
var $d0;
var $a0;
var $FR=sp;
$1=$aa0;
$2=$n0;
var $3=(($FR+4)|0);
HEAP32[(($3)>>2)]=2192;
var $4=(($FR+12)|0);
HEAP32[(($4)>>2)]=2416;
var $5=(($FR+8)|0);
HEAP32[(($5)>>2)]=0;
var $6=(($FR+16)|0);
HEAP16[(($6)>>1)]=0;
_nimFrame612($FR);
$result0=0;
$d0=0;
var $7=(($FR+8)|0);
HEAP32[(($7)>>2)]=3014;
var $8=(($FR+12)|0);
HEAP32[(($8)>>2)]=2416;
var $9=$1;
var $10=$9;
$a0=$10;
var $11=(($FR+8)|0);
HEAP32[(($11)>>2)]=3015;
var $12=(($FR+12)|0);
HEAP32[(($12)>>2)]=2416;
var $13=$2;
var $14=(($13+8)|0);
var $15=HEAP32[(($14)>>2)];
var $16=(($15)|0);
var $17=HEAP32[(($16)>>2)];
if(($17|0)==1){ label=2;break;}else if(($17|0)==2){ label=3;break;}else if(($17|0)==4){ label=4;break;}else{label=5;break;}
case 2:
var $19=(($FR+8)|0);
HEAP32[(($19)>>2)]=3016;
var $20=(($FR+12)|0);
HEAP32[(($20)>>2)]=2416;
var $21=$a0;
var $22=$2;
var $23=(($22+4)|0);
var $24=HEAP32[(($23)>>2)];
var $25=((($21)+($24))|0);
var $26=$25;
var $27=HEAP8[($26)];
var $28=($27&255);
$d0=$28;
label=6;break;
case 3:
var $30=(($FR+8)|0);
HEAP32[(($30)>>2)]=3017;
var $31=(($FR+12)|0);
HEAP32[(($31)>>2)]=2416;
var $32=$a0;
var $33=$2;
var $34=(($33+4)|0);
var $35=HEAP32[(($34)>>2)];
var $36=((($32)+($35))|0);
var $37=$36;
var $38=HEAP16[(($37)>>1)];
var $39=($38&65535);
$d0=$39;
label=6;break;
case 4:
var $41=(($FR+8)|0);
HEAP32[(($41)>>2)]=3018;
var $42=(($FR+12)|0);
HEAP32[(($42)>>2)]=2416;
var $43=$a0;
var $44=$2;
var $45=(($44+4)|0);
var $46=HEAP32[(($45)>>2)];
var $47=((($43)+($46))|0);
var $48=$47;
var $49=HEAP32[(($48)>>2)];
$d0=$49;
label=6;break;
case 5:
label=6;break;
case 6:
var $52=(($FR+8)|0);
HEAP32[(($52)>>2)]=3020;
var $53=(($FR+12)|0);
HEAP32[(($53)>>2)]=2416;
var $54=$d0;
$result0=$54;
label=7;break;
case 7:
_popFrame613();
var $56=$result0;
STACKTOP=sp;return $56;
default: assert(0, "bad label: " + label);
}
}
function _selectbranch_MvIsyjoRI1g7VY9cXrLB1dQ($aa0,$n0){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+24)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
label = 1;
while(1)switch(label){
case 1:
var $1;
var $2;
var $result0;
var $discr0;
var $FR=sp;
$1=$aa0;
$2=$n0;
var $3=(($FR+4)|0);
HEAP32[(($3)>>2)]=2136;
var $4=(($FR+12)|0);
HEAP32[(($4)>>2)]=2416;
var $5=(($FR+8)|0);
HEAP32[(($5)>>2)]=0;
var $6=(($FR+16)|0);
HEAP16[(($6)>>1)]=0;
_nimFrame612($FR);
$result0=0;
var $7=(($FR+8)|0);
HEAP32[(($7)>>2)]=3023;
var $8=(($FR+12)|0);
HEAP32[(($8)>>2)]=2416;
var $9=$1;
var $10=$2;
var $11=_getdiscriminant_wq1GP7ZPZ7P1uZUypfc9ciA($9,$10);
$discr0=$11;
var $12=(($FR+8)|0);
HEAP32[(($12)>>2)]=3024;
var $13=(($FR+12)|0);
HEAP32[(($13)>>2)]=2416;
var $14=$discr0;
var $15=$2;
var $16=(($15+16)|0);
var $17=HEAP32[(($16)>>2)];
var $18=($14>>>0)<($17>>>0);
if($18){label=3;break;}else{label=2;break;}
case 2:
label=7;break;
case 3:
var $21=(($FR+8)|0);
HEAP32[(($21)>>2)]=3025;
var $22=(($FR+12)|0);
HEAP32[(($22)>>2)]=2416;
var $23=$discr0;
var $24=(($23)|0);
var $25=$2;
var $26=(($25+20)|0);
var $27=HEAP32[(($26)>>2)];
var $28=(($27+($24<<2))|0);
var $29=HEAP32[(($28)>>2)];
$result0=$29;
var $30=(($FR+8)|0);
HEAP32[(($30)>>2)]=3026;
var $31=(($FR+12)|0);
HEAP32[(($31)>>2)]=2416;
var $32=$result0;
var $33=($32|0)==0;
if($33){label=5;break;}else{label=4;break;}
case 4:
label=6;break;
case 5:
var $36=$2;
var $37=(($36+16)|0);
var $38=HEAP32[(($37)>>2)];
var $39=(($38)|0);
var $40=$2;
var $41=(($40+20)|0);
var $42=HEAP32[(($41)>>2)];
var $43=(($42+($39<<2))|0);
var $44=HEAP32[(($43)>>2)];
$result0=$44;
label=6;break;
case 6:
label=8;break;
case 7:
var $47=(($FR+8)|0);
HEAP32[(($47)>>2)]=3029;
var $48=(($FR+12)|0);
HEAP32[(($48)>>2)]=2416;
var $49=$2;
var $50=(($49+16)|0);
var $51=HEAP32[(($50)>>2)];
var $52=(($51)|0);
var $53=$2;
var $54=(($53+20)|0);
var $55=HEAP32[(($54)>>2)];
var $56=(($55+($52<<2))|0);
var $57=HEAP32[(($56)>>2)];
$result0=$57;
label=8;break;
case 8:
_popFrame613();
var $59=$result0;
STACKTOP=sp;return $59;
default: assert(0, "bad label: " + label);
}
}
function _copyStrLast($s0,$start_WPWyPKk58Cr5a6XFFviMjg,$last0){
var label=0;
var sp=STACKTOP; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
label = 1;
while(1)switch(label){
case 1:
var $1;
var $2;
var $3;
var $result0;
var $start0;
var $len0;
$1=$s0;
$2=$start_WPWyPKk58Cr5a6XFFviMjg;
$3=$last0;
$result0=0;
var $4=$2;
var $5=($4|0)>=0;
if($5){label=2;break;}else{label=3;break;}
case 2:
var $7=$2;
var $10=$7;label=4;break;
case 3:
var $10=0;label=4;break;
case 4:
var $10;
$start0=$10;
var $11=$3;
var $12=$1;
var $13=(($12)|0);
var $14=(($13)|0);
var $15=HEAP32[(($14)>>2)];
var $16=((($15)-(1))|0);
var $17=($11|0)<=($16|0);
if($17){label=5;break;}else{label=6;break;}
case 5:
var $19=$3;
var $27=$19;label=7;break;
case 6:
var $21=$1;
var $22=(($21)|0);
var $23=(($22)|0);
var $24=HEAP32[(($23)>>2)];
var $25=((($24)-(1))|0);
var $27=$25;label=7;break;
case 7:
var $27;
var $28=$start0;
var $29=((($27)-($28))|0);
var $30=((($29)+(1))|0);
$len0=$30;
var $31=$len0;
var $32=0<($31|0);
if($32){label=9;break;}else{label=8;break;}
case 8:
label=10;break;
case 9:
var $35=$len0;
var $36=_rawNewStringNoInit($35);
$result0=$36;
var $37=$len0;
var $38=$result0;
var $39=(($38)|0);
var $40=(($39)|0);
HEAP32[(($40)>>2)]=$37;
var $41=$result0;
var $42=(($41+8)|0);
var $43=(($42)|0);
var $44=$start0;
var $45=(($44)|0);
var $46=$1;
var $47=(($46+8)|0);
var $48=(($47+$45)|0);
var $49=$len0;
_copymem_fPlwH3r9agN9aEHB6yCPMh0wsystem614($43,$48,$49);
var $50=$len0;
var $51=(($50)|0);
var $52=$result0;
var $53=(($52+8)|0);
var $54=(($53+$51)|0);
HEAP8[($54)]=0;
label=11;break;
case 10:
var $56=$len0;
var $57=_rawNewString($56);
$result0=$57;
label=11;break;
case 11:
var $59=$result0;
STACKTOP=sp;return $59;
default: assert(0, "bad label: " + label);
}
}
function _copyStr($s0,$start0){
var label=0;
var sp=STACKTOP; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
var $1;
var $2;
var $result0;
$1=$s0;
$2=$start0;
$result0=0;
var $3=$1;
var $4=$2;
var $5=$1;
var $6=(($5)|0);
var $7=(($6)|0);
var $8=HEAP32[(($7)>>2)];
var $9=((($8)-(1))|0);
var $10=_copyStrLast($3,$4,$9);
$result0=$10;
var $11=$result0;
STACKTOP=sp;return $11;
}
function _incrSeqV2($seq0,$elemsize0){
var label=0;
var sp=STACKTOP; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
label = 1;
while(1)switch(label){
case 1:
var $1;
var $2;
var $result0;
var $LOC5;
$1=$seq0;
$2=$elemsize0;
$result0=0;
var $3=$1;
$result0=$3;
var $4=$result0;
var $5=(($4+4)|0);
var $6=HEAP32[(($5)>>2)];
var $7=$6&2147483647;
var $8=$result0;
var $9=(($8)|0);
var $10=HEAP32[(($9)>>2)];
var $11=($7|0)<=($10|0);
if($11){label=3;break;}else{label=2;break;}
case 2:
label=4;break;
case 3:
var $14=$result0;
var $15=(($14+4)|0);
var $16=HEAP32[(($15)>>2)];
var $17=$16&2147483647;
var $18=_resize_bzF9a0JivP3Z4njqaxuLc5wsystem($17);
var $19=$result0;
var $20=(($19+4)|0);
HEAP32[(($20)>>2)]=$18;
$LOC5=0;
var $21=$result0;
var $22=$21;
var $23=$2;
var $24=$result0;
var $25=(($24+4)|0);
var $26=HEAP32[(($25)>>2)];
var $27=(Math_imul($23,$26)|0);
var $28=((($27)+(8))|0);
var $29=_growobj_AVYny8c0GTk28gxjmat1MA($22,$28);
$LOC5=$29;
var $30=$LOC5;
var $31=$30;
$result0=$31;
label=4;break;
case 4:
var $33=$result0;
STACKTOP=sp;return $33;
default: assert(0, "bad label: " + label);
}
}
function _genericReset($dest0,$mt0){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+24)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
label = 1;
while(1)switch(label){
case 1:
var $1;
var $2;
var $d0;
var $FR=sp;
var $pint0;
var $i_qaFcGopYeH9cOZpINBxnz5w;
var $HEX3Atmp_ORTUb9bkWXT9bMpgJ33i4w0w;
var $res_wgf77gg7tWlFJCoTaIGsYg;
$1=$dest0;
$2=$mt0;
var $3=(($FR+4)|0);
HEAP32[(($3)>>2)]=6440;
var $4=(($FR+12)|0);
HEAP32[(($4)>>2)]=6392;
var $5=(($FR+8)|0);
HEAP32[(($5)>>2)]=0;
var $6=(($FR+16)|0);
HEAP16[(($6)>>1)]=0;
_nimFrame612($FR);
var $7=(($FR+8)|0);
HEAP32[(($7)>>2)]=195;
var $8=(($FR+12)|0);
HEAP32[(($8)>>2)]=6392;
var $9=$1;
var $10=$9;
$d0=$10;
var $11=(($FR+8)|0);
HEAP32[(($11)>>2)]=197;
var $12=(($FR+12)|0);
HEAP32[(($12)>>2)]=6392;
var $13=$2;
var $14=(($13+4)|0);
var $15=HEAP8[($14)];
var $16=($15&255);
switch(($16|0)){case 28:case 22:case 24:{ label=2;break;}case 18:{ label=3;break;}case 17:{ label=4;break;}case 16:case 4:{ label=5;break;}default:{label=10;break;}}break;
case 2:
var $18=(($FR+8)|0);
HEAP32[(($18)>>2)]=199;
var $19=(($FR+12)|0);
HEAP32[(($19)>>2)]=6392;
var $20=$1;
var $21=$20;
_unsureAsgnRef($21,0);
label=11;break;
case 3:
var $23=(($FR+8)|0);
HEAP32[(($23)>>2)]=201;
var $24=(($FR+12)|0);
HEAP32[(($24)>>2)]=6392;
var $25=$1;
var $26=$2;
var $27=(($26+12)|0);
var $28=HEAP32[(($27)>>2)];
_genericresetaux_byg9cq1Sxxop7ZDN9b4I0riw($25,$28);
label=11;break;
case 4:
var $30=(($FR+8)|0);
HEAP32[(($30)>>2)]=203;
var $31=(($FR+12)|0);
HEAP32[(($31)>>2)]=6392;
var $32=$1;
var $33=$2;
var $34=(($33+12)|0);
var $35=HEAP32[(($34)>>2)];
_genericresetaux_byg9cq1Sxxop7ZDN9b4I0riw($32,$35);
var $36=(($FR+8)|0);
HEAP32[(($36)>>2)]=205;
var $37=(($FR+12)|0);
HEAP32[(($37)>>2)]=6392;
var $38=$1;
var $39=$38;
$pint0=$39;
var $40=(($FR+8)|0);
HEAP32[(($40)>>2)]=206;
var $41=(($FR+12)|0);
HEAP32[(($41)>>2)]=6392;
var $42=$pint0;
HEAP32[(($42)>>2)]=0;
label=11;break;
case 5:
$i_qaFcGopYeH9cOZpINBxnz5w=0;
$HEX3Atmp_ORTUb9bkWXT9bMpgJ33i4w0w=0;
var $44=(($FR+8)|0);
HEAP32[(($44)>>2)]=208;
var $45=(($FR+12)|0);
HEAP32[(($45)>>2)]=6392;
var $46=$2;
var $47=(($46)|0);
var $48=HEAP32[(($47)>>2)];
var $49=$2;
var $50=(($49+8)|0);
var $51=HEAP32[(($50)>>2)];
var $52=(($51)|0);
var $53=HEAP32[(($52)>>2)];
var $54=(((($48|0))/(($53|0)))&-1);
var $55=((($54)-(1))|0);
$HEX3Atmp_ORTUb9bkWXT9bMpgJ33i4w0w=$55;
var $56=(($FR+8)|0);
HEAP32[(($56)>>2)]=1908;
var $57=(($FR+12)|0);
HEAP32[(($57)>>2)]=2416;
$res_wgf77gg7tWlFJCoTaIGsYg=0;
var $58=(($FR+8)|0);
HEAP32[(($58)>>2)]=1909;
var $59=(($FR+12)|0);
HEAP32[(($59)>>2)]=2416;
label=6;break;
case 6:
var $61=(($FR+8)|0);
HEAP32[(($61)>>2)]=1908;
var $62=(($FR+12)|0);
HEAP32[(($62)>>2)]=2416;
var $63=$res_wgf77gg7tWlFJCoTaIGsYg;
var $64=$HEX3Atmp_ORTUb9bkWXT9bMpgJ33i4w0w;
var $65=($63|0)<=($64|0);
if($65){label=8;break;}else{label=7;break;}
case 7:
label=9;break;
case 8:
var $68=(($FR+8)|0);
HEAP32[(($68)>>2)]=1910;
var $69=(($FR+12)|0);
HEAP32[(($69)>>2)]=2416;
var $70=$res_wgf77gg7tWlFJCoTaIGsYg;
$i_qaFcGopYeH9cOZpINBxnz5w=$70;
var $71=(($FR+8)|0);
HEAP32[(($71)>>2)]=209;
var $72=(($FR+12)|0);
HEAP32[(($72)>>2)]=6392;
var $73=$d0;
var $74=$i_qaFcGopYeH9cOZpINBxnz5w;
var $75=$2;
var $76=(($75+8)|0);
var $77=HEAP32[(($76)>>2)];
var $78=(($77)|0);
var $79=HEAP32[(($78)>>2)];
var $80=(Math_imul($74,$79)|0);
var $81=((($73)+($80))|0);
var $82=$81;
var $83=$2;
var $84=(($83+8)|0);
var $85=HEAP32[(($84)>>2)];
_genericReset($82,$85);
var $86=(($FR+8)|0);
HEAP32[(($86)>>2)]=1908;
var $87=(($FR+12)|0);
HEAP32[(($87)>>2)]=2416;
var $88=$res_wgf77gg7tWlFJCoTaIGsYg;
var $89=((($88)+(1))|0);
$res_wgf77gg7tWlFJCoTaIGsYg=$89;
label=6;break;
case 9:
label=11;break;
case 10:
var $92=(($FR+8)|0);
HEAP32[(($92)>>2)]=211;
var $93=(($FR+12)|0);
HEAP32[(($93)>>2)]=6392;
var $94=$1;
var $95=$2;
var $96=(($95)|0);
var $97=HEAP32[(($96)>>2)];
_zeromem_7EL8Zq3xF2ujDWgp3bAEogsystem($94,$97);
label=11;break;
case 11:
_popFrame613();
STACKTOP=sp;return;
default: assert(0, "bad label: " + label);
}
}
function _genericresetaux_byg9cq1Sxxop7ZDN9b4I0riw($dest0,$n0){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+24)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
label = 1;
while(1)switch(label){
case 1:
var $1;
var $2;
var $d0;
var $FR=sp;
var $i_d3XJOFCd9ax9cVW2YQEUiJkw;
var $HEX3Atmp_B6sA0bGwW3Czaz9bYJ7Le3g;
var $res_9aPatT7RGnMzJ10mzIuQvSA;
var $m0;
$1=$dest0;
$2=$n0;
var $3=(($FR+4)|0);
HEAP32[(($3)>>2)]=6352;
var $4=(($FR+12)|0);
HEAP32[(($4)>>2)]=6392;
var $5=(($FR+8)|0);
HEAP32[(($5)>>2)]=0;
var $6=(($FR+16)|0);
HEAP16[(($6)>>1)]=0;
_nimFrame612($FR);
var $7=(($FR+8)|0);
HEAP32[(($7)>>2)]=183;
var $8=(($FR+12)|0);
HEAP32[(($8)>>2)]=6392;
var $9=$1;
var $10=$9;
$d0=$10;
var $11=(($FR+8)|0);
HEAP32[(($11)>>2)]=184;
var $12=(($FR+12)|0);
HEAP32[(($12)>>2)]=6392;
var $13=$2;
var $14=(($13)|0);
var $15=HEAP8[($14)];
var $16=($15&255);
if(($16|0)==0){ label=2;break;}else if(($16|0)==1){ label=3;break;}else if(($16|0)==2){ label=4;break;}else if(($16|0)==3){ label=9;break;}else{label=13;break;}
case 2:
label=13;break;
case 3:
var $19=(($FR+8)|0);
HEAP32[(($19)>>2)]=186;
var $20=(($FR+12)|0);
HEAP32[(($20)>>2)]=6392;
var $21=$d0;
var $22=$2;
var $23=(($22+4)|0);
var $24=HEAP32[(($23)>>2)];
var $25=((($21)+($24))|0);
var $26=$25;
var $27=$2;
var $28=(($27+8)|0);
var $29=HEAP32[(($28)>>2)];
_genericReset($26,$29);
label=13;break;
case 4:
$i_d3XJOFCd9ax9cVW2YQEUiJkw=0;
$HEX3Atmp_B6sA0bGwW3Czaz9bYJ7Le3g=0;
var $31=(($FR+8)|0);
HEAP32[(($31)>>2)]=188;
var $32=(($FR+12)|0);
HEAP32[(($32)>>2)]=6392;
var $33=$2;
var $34=(($33+16)|0);
var $35=HEAP32[(($34)>>2)];
var $36=((($35)-(1))|0);
$HEX3Atmp_B6sA0bGwW3Czaz9bYJ7Le3g=$36;
var $37=(($FR+8)|0);
HEAP32[(($37)>>2)]=1908;
var $38=(($FR+12)|0);
HEAP32[(($38)>>2)]=2416;
$res_9aPatT7RGnMzJ10mzIuQvSA=0;
var $39=(($FR+8)|0);
HEAP32[(($39)>>2)]=1909;
var $40=(($FR+12)|0);
HEAP32[(($40)>>2)]=2416;
label=5;break;
case 5:
var $42=(($FR+8)|0);
HEAP32[(($42)>>2)]=1908;
var $43=(($FR+12)|0);
HEAP32[(($43)>>2)]=2416;
var $44=$res_9aPatT7RGnMzJ10mzIuQvSA;
var $45=$HEX3Atmp_B6sA0bGwW3Czaz9bYJ7Le3g;
var $46=($44|0)<=($45|0);
if($46){label=7;break;}else{label=6;break;}
case 6:
label=8;break;
case 7:
var $49=(($FR+8)|0);
HEAP32[(($49)>>2)]=1910;
var $50=(($FR+12)|0);
HEAP32[(($50)>>2)]=2416;
var $51=$res_9aPatT7RGnMzJ10mzIuQvSA;
$i_d3XJOFCd9ax9cVW2YQEUiJkw=$51;
var $52=(($FR+8)|0);
HEAP32[(($52)>>2)]=188;
var $53=(($FR+12)|0);
HEAP32[(($53)>>2)]=6392;
var $54=$1;
var $55=$i_d3XJOFCd9ax9cVW2YQEUiJkw;
var $56=(($55)|0);
var $57=$2;
var $58=(($57+20)|0);
var $59=HEAP32[(($58)>>2)];
var $60=(($59+($56<<2))|0);
var $61=HEAP32[(($60)>>2)];
_genericresetaux_byg9cq1Sxxop7ZDN9b4I0riw($54,$61);
var $62=(($FR+8)|0);
HEAP32[(($62)>>2)]=1908;
var $63=(($FR+12)|0);
HEAP32[(($63)>>2)]=2416;
var $64=$res_9aPatT7RGnMzJ10mzIuQvSA;
var $65=((($64)+(1))|0);
$res_9aPatT7RGnMzJ10mzIuQvSA=$65;
label=5;break;
case 8:
label=13;break;
case 9:
var $68=(($FR+8)|0);
HEAP32[(($68)>>2)]=190;
var $69=(($FR+12)|0);
HEAP32[(($69)>>2)]=6392;
var $70=$1;
var $71=$2;
var $72=_selectbranch_MvIsyjoRI1g7VY9cXrLB1dQ($70,$71);
$m0=$72;
var $73=(($FR+8)|0);
HEAP32[(($73)>>2)]=191;
var $74=(($FR+12)|0);
HEAP32[(($74)>>2)]=6392;
var $75=(($FR+8)|0);
HEAP32[(($75)>>2)]=347;
var $76=(($FR+12)|0);
HEAP32[(($76)>>2)]=2416;
var $77=(($FR+8)|0);
HEAP32[(($77)>>2)]=191;
var $78=(($FR+12)|0);
HEAP32[(($78)>>2)]=6392;
var $79=$m0;
var $80=($79|0)==0;
if($80){label=10;break;}else{label=11;break;}
case 10:
label=12;break;
case 11:
var $83=$1;
var $84=$m0;
_genericresetaux_byg9cq1Sxxop7ZDN9b4I0riw($83,$84);
label=12;break;
case 12:
var $86=(($FR+8)|0);
HEAP32[(($86)>>2)]=192;
var $87=(($FR+12)|0);
HEAP32[(($87)>>2)]=6392;
var $88=$d0;
var $89=$2;
var $90=(($89+4)|0);
var $91=HEAP32[(($90)>>2)];
var $92=((($88)+($91))|0);
var $93=$92;
var $94=$2;
var $95=(($94+8)|0);
var $96=HEAP32[(($95)>>2)];
var $97=(($96)|0);
var $98=HEAP32[(($97)>>2)];
_zeromem_7EL8Zq3xF2ujDWgp3bAEogsystem($93,$98);
label=13;break;
case 13:
_popFrame613();
STACKTOP=sp;return;
default: assert(0, "bad label: " + label);
}
}
function _raiseassert_PpfSiTIeNpMAb9a5o6SglJw_2($msg0){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+24)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
var $1;
var $FR=sp;
$1=$msg0;
var $2=(($FR+4)|0);
HEAP32[(($2)>>2)]=5360;
var $3=(($FR+12)|0);
HEAP32[(($3)>>2)]=2416;
var $4=(($FR+8)|0);
HEAP32[(($4)>>2)]=0;
var $5=(($FR+16)|0);
HEAP16[(($5)>>1)]=0;
_nimFrame612($FR);
var $6=(($FR+8)|0);
HEAP32[(($6)>>2)]=3463;
var $7=(($FR+12)|0);
HEAP32[(($7)>>2)]=2416;
var $8=$1;
_sysfatal_mWrNPcJugise9aqN0yGByGwsystem($8);
throw "Reached an unreachable!";
STACKTOP=sp;return;
}
function _failedassertimpl_aDmpBTs9cPuXp0Mp9cfiNeyA($msg0){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+24)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
var $1;
var $FR=sp;
$1=$msg0;
var $2=(($FR+4)|0);
HEAP32[(($2)>>2)]=5320;
var $3=(($FR+12)|0);
HEAP32[(($3)>>2)]=2416;
var $4=(($FR+8)|0);
HEAP32[(($4)>>2)]=0;
var $5=(($FR+16)|0);
HEAP16[(($5)>>1)]=0;
_nimFrame612($FR);
var $6=(($FR+8)|0);
HEAP32[(($6)>>2)]=3471;
var $7=(($FR+12)|0);
HEAP32[(($7)>>2)]=2416;
var $8=$1;
_raiseassert_PpfSiTIeNpMAb9a5o6SglJw_2($8);
_popFrame613();
STACKTOP=sp;return;
}
function _systemInit000(){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+32)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
var $LOC1=sp;
HEAP8[(15632)]=0;
var $1=$LOC1;
_memset($1, 0, 28)|0;
var $2=(($LOC1)|0);
HEAP32[(($2)>>2)]=4;
var $3=(($LOC1+4)|0);
HEAP8[($3)]=28;
var $4=(($LOC1+5)|0);
HEAP8[($4)]=2;
var $5=$LOC1;
assert(28 % 1 === 0);HEAP32[((9656)>>2)]=HEAP32[(($5)>>2)];HEAP32[((9660)>>2)]=HEAP32[((($5)+(4))>>2)];HEAP32[((9664)>>2)]=HEAP32[((($5)+(8))>>2)];HEAP32[((9668)>>2)]=HEAP32[((($5)+(12))>>2)];HEAP32[((9672)>>2)]=HEAP32[((($5)+(16))>>2)];HEAP32[((9676)>>2)]=HEAP32[((($5)+(20))>>2)];HEAP32[((9680)>>2)]=HEAP32[((($5)+(24))>>2)];
_initallocator_neD9cJp4S9clvdaq5qqNFZAQsystem();
_registersignalhandler_njssp69aa7hvxte9bJ8uuDcg_3();
STACKTOP=sp;return;
}
function _systemDatInit000(){
var label=0;
var sp=STACKTOP; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
label = 1;
while(1)switch(label){
case 1:
var $T_Q5wkpxktOdTGvlSRo9bzt9aw_127;
HEAP32[((22328)>>2)]=4;
HEAP8[(22332)]=17;
HEAP32[((22336)>>2)]=0;
HEAP8[(22333)]=1;
HEAP32[((8904)>>2)]=0;
HEAP8[(8888)]=2;
HEAP32[((22340)>>2)]=8888;
HEAP32[((20696)>>2)]=20;
HEAP8[(20700)]=17;
HEAP32[((20704)>>2)]=22328;
HEAP32[((8848)>>2)]=8936;
HEAP32[((20248)>>2)]=4;
HEAP8[(20252)]=22;
HEAP32[((20256)>>2)]=20696;
HEAP8[(8936)]=1;
HEAP32[((8940)>>2)]=4;
HEAP32[((8944)>>2)]=20248;
HEAP32[((8948)>>2)]=4856;
HEAP32[((8852)>>2)]=8960;
HEAP32[((21080)>>2)]=4;
HEAP8[(21084)]=29;
HEAP32[((21088)>>2)]=0;
HEAP8[(21085)]=3;
HEAP8[(8960)]=1;
HEAP32[((8964)>>2)]=8;
HEAP32[((8968)>>2)]=21080;
HEAP32[((8972)>>2)]=4848;
HEAP32[((8856)>>2)]=8984;
HEAP32[((22200)>>2)]=4;
HEAP8[(22204)]=28;
HEAP32[((22208)>>2)]=0;
HEAP8[(22205)]=2;
HEAP8[(8984)]=1;
HEAP32[((8988)>>2)]=12;
HEAP32[((8992)>>2)]=22200;
HEAP32[((8996)>>2)]=4840;
HEAP32[((8860)>>2)]=9008;
HEAP8[(9008)]=1;
HEAP32[((9012)>>2)]=16;
HEAP32[((9016)>>2)]=22200;
HEAP32[((9020)>>2)]=4832;
HEAP32[((8928)>>2)]=4;
HEAP8[(8912)]=2;
HEAP32[((8932)>>2)]=8848;
HEAP32[((20708)>>2)]=8912;
HEAP32[((21784)>>2)]=20;
HEAP8[(21788)]=17;
HEAP32[((21792)>>2)]=20696;
HEAP32[((9048)>>2)]=0;
HEAP8[(9032)]=2;
HEAP32[((21796)>>2)]=9032;
HEAP32[((22008)>>2)]=20;
HEAP8[(22012)]=17;
HEAP32[((22016)>>2)]=21784;
HEAP32[((9072)>>2)]=0;
HEAP8[(9056)]=2;
HEAP32[((22020)>>2)]=9056;
HEAP32[((21528)>>2)]=4;
HEAP8[(21532)]=22;
HEAP32[((21536)>>2)]=22008;
HEAP32[((21272)>>2)]=20;
HEAP8[(21276)]=17;
HEAP32[((21280)>>2)]=21784;
HEAP32[((9096)>>2)]=0;
HEAP8[(9080)]=2;
HEAP32[((21284)>>2)]=9080;
HEAP32[((21688)>>2)]=20;
HEAP8[(21692)]=17;
HEAP32[((21696)>>2)]=20696;
HEAP32[((9120)>>2)]=0;
HEAP8[(9104)]=2;
HEAP32[((21700)>>2)]=9104;
HEAP32[((20664)>>2)]=4;
HEAP8[(20668)]=22;
HEAP32[((20672)>>2)]=21688;
HEAP32[((19832)>>2)]=20;
HEAP8[(19836)]=17;
HEAP32[((19840)>>2)]=20696;
HEAP32[((9144)>>2)]=0;
HEAP8[(9128)]=2;
HEAP32[((19844)>>2)]=9128;
HEAP32[((21560)>>2)]=4;
HEAP8[(21564)]=22;
HEAP32[((21568)>>2)]=19832;
HEAP32[((20728)>>2)]=20;
HEAP8[(20732)]=17;
HEAP32[((20736)>>2)]=20696;
HEAP32[((9168)>>2)]=0;
HEAP8[(9152)]=2;
HEAP32[((20740)>>2)]=9152;
HEAP32[((19736)>>2)]=4;
HEAP8[(19740)]=22;
HEAP32[((19744)>>2)]=20728;
HEAP32[((20632)>>2)]=20;
HEAP8[(20636)]=17;
HEAP32[((20640)>>2)]=20696;
HEAP32[((9192)>>2)]=0;
HEAP8[(9176)]=2;
HEAP32[((20644)>>2)]=9176;
HEAP32[((20920)>>2)]=4;
HEAP8[(20924)]=22;
HEAP32[((20928)>>2)]=20632;
HEAP32[((21656)>>2)]=20;
HEAP8[(21660)]=17;
HEAP32[((21664)>>2)]=20696;
HEAP32[((9216)>>2)]=0;
HEAP8[(9200)]=2;
HEAP32[((21668)>>2)]=9200;
HEAP32[((19800)>>2)]=4;
HEAP8[(19804)]=22;
HEAP32[((19808)>>2)]=21656;
HEAP32[((21368)>>2)]=20;
HEAP8[(21372)]=17;
HEAP32[((21376)>>2)]=20696;
HEAP32[((9240)>>2)]=0;
HEAP8[(9224)]=2;
HEAP32[((21380)>>2)]=9224;
HEAP32[((21048)>>2)]=4;
HEAP8[(21052)]=22;
HEAP32[((21056)>>2)]=21368;
HEAP32[((20792)>>2)]=20;
HEAP8[(20796)]=17;
HEAP32[((20800)>>2)]=20696;
HEAP32[((9264)>>2)]=0;
HEAP8[(9248)]=2;
HEAP32[((20804)>>2)]=9248;
HEAP32[((20344)>>2)]=4;
HEAP8[(20348)]=22;
HEAP32[((20352)>>2)]=20792;
HEAP32[((21144)>>2)]=20;
HEAP8[(21148)]=17;
HEAP32[((21152)>>2)]=20696;
HEAP32[((9288)>>2)]=0;
HEAP8[(9272)]=2;
HEAP32[((21156)>>2)]=9272;
HEAP32[((21496)>>2)]=20;
HEAP8[(21500)]=17;
HEAP32[((21504)>>2)]=21144;
HEAP32[((9312)>>2)]=0;
HEAP8[(9296)]=2;
HEAP32[((21508)>>2)]=9296;
HEAP32[((22232)>>2)]=4;
HEAP8[(22236)]=22;
HEAP32[((22240)>>2)]=21496;
HEAP32[((20216)>>2)]=20;
HEAP8[(20220)]=17;
HEAP32[((20224)>>2)]=21144;
HEAP32[((9336)>>2)]=0;
HEAP8[(9320)]=2;
HEAP32[((20228)>>2)]=9320;
HEAP32[((21944)>>2)]=4;
HEAP8[(21948)]=22;
HEAP32[((21952)>>2)]=20216;
HEAP32[((20568)>>2)]=20;
HEAP8[(20572)]=17;
HEAP32[((20576)>>2)]=20696;
HEAP32[((9360)>>2)]=0;
HEAP8[(9344)]=2;
HEAP32[((20580)>>2)]=9344;
HEAP32[((21912)>>2)]=20;
HEAP8[(21916)]=17;
HEAP32[((21920)>>2)]=20568;
HEAP32[((9384)>>2)]=0;
HEAP8[(9368)]=2;
HEAP32[((21924)>>2)]=9368;
HEAP32[((20824)>>2)]=4;
HEAP8[(20828)]=22;
HEAP32[((20832)>>2)]=21912;
HEAP32[((21880)>>2)]=20;
HEAP8[(21884)]=17;
HEAP32[((21888)>>2)]=20568;
HEAP32[((9408)>>2)]=0;
HEAP8[(9392)]=2;
HEAP32[((21892)>>2)]=9392;
HEAP32[((21208)>>2)]=4;
HEAP8[(21212)]=22;
HEAP32[((21216)>>2)]=21880;
HEAP32[((22104)>>2)]=20;
HEAP8[(22108)]=17;
HEAP32[((22112)>>2)]=20568;
HEAP32[((9432)>>2)]=0;
HEAP8[(9416)]=2;
HEAP32[((22116)>>2)]=9416;
HEAP32[((20760)>>2)]=4;
HEAP8[(20764)]=22;
HEAP32[((20768)>>2)]=22104;
HEAP32[((20024)>>2)]=4;
HEAP8[(20028)]=24;
HEAP32[((20032)>>2)]=22200;
HEAP8[(20029)]=2;
HEAP32[((20312)>>2)]=2;
HEAP8[(20316)]=33;
HEAP32[((20320)>>2)]=0;
HEAP8[(20317)]=3;
HEAP32[((21592)>>2)]=2000002;
HEAP8[(21596)]=16;
HEAP32[((21600)>>2)]=20312;
HEAP8[(21597)]=3;
HEAP32[((21752)>>2)]=4;
HEAP8[(21756)]=22;
HEAP32[((21760)>>2)]=21592;
HEAP8[(21757)]=2;
HEAP32[((22136)>>2)]=20;
HEAP8[(22140)]=17;
HEAP32[((22144)>>2)]=20696;
HEAP32[((9456)>>2)]=0;
HEAP8[(9440)]=2;
HEAP32[((22148)>>2)]=9440;
HEAP32[((20952)>>2)]=4;
HEAP8[(20956)]=22;
HEAP32[((20960)>>2)]=22136;
HEAP32[((20888)>>2)]=4;
HEAP8[(20892)]=31;
HEAP32[((20896)>>2)]=0;
HEAP8[(20893)]=3;
HEAP32[((21336)>>2)]=4;
HEAP8[(21340)]=31;
HEAP32[((21344)>>2)]=0;
HEAP8[(21341)]=3;
HEAP32[((21624)>>2)]=4;
HEAP8[(21628)]=31;
HEAP32[((21632)>>2)]=0;
HEAP8[(21629)]=3;
HEAP32[((21848)>>2)]=4;
HEAP8[(21852)]=31;
HEAP32[((21856)>>2)]=0;
HEAP8[(21853)]=3;
HEAP32[((20120)>>2)]=4;
HEAP8[(20124)]=31;
HEAP32[((20128)>>2)]=0;
HEAP8[(20125)]=3;
HEAP32[((20504)>>2)]=4;
HEAP8[(20508)]=31;
HEAP32[((20512)>>2)]=0;
HEAP8[(20509)]=3;
HEAP32[((20856)>>2)]=1;
HEAP8[(20860)]=1;
HEAP32[((20864)>>2)]=0;
HEAP8[(20861)]=3;
HEAP32[((22040)>>2)]=4;
HEAP8[(22044)]=18;
HEAP32[((22048)>>2)]=0;
HEAP8[(22045)]=3;
HEAP32[((9480)>>2)]=0;
HEAP8[(9464)]=2;
HEAP32[((22052)>>2)]=9464;
HEAP32[((22168)>>2)]=4;
HEAP8[(22172)]=21;
HEAP32[((22176)>>2)]=22040;
HEAP8[(22173)]=3;
HEAP32[((22296)>>2)]=24;
HEAP8[(22300)]=17;
HEAP32[((22304)>>2)]=21784;
HEAP32[((19992)>>2)]=4;
HEAP8[(19996)]=34;
HEAP32[((20000)>>2)]=0;
HEAP8[(19997)]=3;
HEAP8[(9488)]=1;
HEAP32[((9492)>>2)]=20;
HEAP32[((9496)>>2)]=19992;
HEAP32[((9500)>>2)]=4816;
HEAP32[((22308)>>2)]=9488;
HEAP32[((21112)>>2)]=4;
HEAP8[(21116)]=22;
HEAP32[((21120)>>2)]=22296;
HEAP32[((20536)>>2)]=1;
HEAP8[(20540)]=14;
HEAP32[((20544)>>2)]=0;
HEAP8[(20541)]=3;
$T_Q5wkpxktOdTGvlSRo9bzt9aw_127=0;
label=2;break;
case 2:
var $2=$T_Q5wkpxktOdTGvlSRo9bzt9aw_127;
var $3=($2|0)<5;
if($3){label=3;break;}else{label=5;break;}
case 3:
var $5=$T_Q5wkpxktOdTGvlSRo9bzt9aw_127;
var $6=((($5)+(26))|0);
var $7=((8888+((($6)*(24))&-1))|0);
var $8=(($7)|0);
HEAP8[($8)]=1;
var $9=$T_Q5wkpxktOdTGvlSRo9bzt9aw_127;
var $10=$T_Q5wkpxktOdTGvlSRo9bzt9aw_127;
var $11=((($10)+(26))|0);
var $12=((8888+((($11)*(24))&-1))|0);
var $13=(($12+4)|0);
HEAP32[(($13)>>2)]=$9;
var $14=$T_Q5wkpxktOdTGvlSRo9bzt9aw_127;
var $15=((16+($14<<2))|0);
var $16=HEAP32[(($15)>>2)];
var $17=$T_Q5wkpxktOdTGvlSRo9bzt9aw_127;
var $18=((($17)+(26))|0);
var $19=((8888+((($18)*(24))&-1))|0);
var $20=(($19+12)|0);
HEAP32[(($20)>>2)]=$16;
var $21=$T_Q5wkpxktOdTGvlSRo9bzt9aw_127;
var $22=((($21)+(26))|0);
var $23=((8888+((($22)*(24))&-1))|0);
var $24=$T_Q5wkpxktOdTGvlSRo9bzt9aw_127;
var $25=((8864+($24<<2))|0);
HEAP32[(($25)>>2)]=$23;
label=4;break;
case 4:
var $27=$T_Q5wkpxktOdTGvlSRo9bzt9aw_127;
var $28=((($27)+(1))|0);
$T_Q5wkpxktOdTGvlSRo9bzt9aw_127=$28;
label=2;break;
case 5:
HEAP32[((9648)>>2)]=5;
HEAP8[(9632)]=2;
HEAP32[((9652)>>2)]=8864;
HEAP32[((20548)>>2)]=9632;
HEAP32[((20280)>>2)]=4;
HEAP8[(20284)]=34;
HEAP32[((20288)>>2)]=0;
HEAP8[(20285)]=3;
STACKTOP=sp;return;
default: assert(0, "bad label: " + label);
}
}
function _resize_bzF9a0JivP3Z4njqaxuLc5wsystem($old0){
var label=0;
var sp=STACKTOP; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
label = 1;
while(1)switch(label){
case 1:
var $1;
var $result0;
$1=$old0;
$result0=0;
var $2=$1;
var $3=($2|0)<=0;
if($3){label=3;break;}else{label=2;break;}
case 2:
label=4;break;
case 3:
$result0=4;
label=8;break;
case 4:
var $7=$1;
var $8=($7|0)<65536;
if($8){label=6;break;}else{label=5;break;}
case 5:
label=7;break;
case 6:
var $11=$1;
var $12=($11<<1);
$result0=$12;
label=8;break;
case 7:
var $14=$1;
var $15=((($14)*(3))&-1);
var $16=(((($15|0))/(2))&-1);
$result0=$16;
label=8;break;
case 8:
var $18=$result0;
STACKTOP=sp;return $18;
default: assert(0, "bad label: " + label);
}
}
function _nimFrame612($s0){
var label=0;
var sp=STACKTOP; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
label = 1;
while(1)switch(label){
case 1:
var $1;
var $LOC1;
$1=$s0;
$LOC1=0;
var $2=HEAP32[((16016)>>2)];
var $3=($2|0)==0;
if($3){label=3;break;}else{label=2;break;}
case 2:
label=4;break;
case 3:
$LOC1=0;
label=5;break;
case 4:
var $7=HEAP32[((16016)>>2)];
var $8=(($7+18)|0);
var $9=HEAP16[(($8)>>1)];
var $10=(($9<<16)>>16);
var $11=((($10)+(1))|0);
var $12=(($11)&65535);
var $13=(($12<<16)>>16);
$LOC1=$13;
label=5;break;
case 5:
var $15=$LOC1;
var $16=(($15)&65535);
var $17=$1;
var $18=(($17+18)|0);
HEAP16[(($18)>>1)]=$16;
var $19=HEAP32[((16016)>>2)];
var $20=$1;
var $21=(($20)|0);
HEAP32[(($21)>>2)]=$19;
var $22=$1;
HEAP32[((16016)>>2)]=$22;
var $23=$1;
var $24=(($23+18)|0);
var $25=HEAP16[(($24)>>1)];
var $26=(($25<<16)>>16);
var $27=($26|0)==2000;
if($27){label=7;break;}else{label=6;break;}
case 6:
label=8;break;
case 7:
_stackoverflow_II46IjNZztN9bmbxUD8dt8g();
label=8;break;
case 8:
STACKTOP=sp;return;
default: assert(0, "bad label: " + label);
}
}
function _popFrame613(){
var label=0;
var $1=HEAP32[((16016)>>2)];
var $2=(($1)|0);
var $3=HEAP32[(($2)>>2)];
HEAP32[((16016)>>2)]=$3;
return;
}
function _copymem_fPlwH3r9agN9aEHB6yCPMh0wsystem614($dest0,$source0,$size0){
var label=0;
var sp=STACKTOP; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
var $1;
var $2;
var $3;
var $LOC1;
$1=$dest0;
$2=$source0;
$3=$size0;
$LOC1=0;
var $4=$1;
var $5=$2;
var $6=$3;
assert($6 % 1 === 0);(_memcpy($4, $5, $6)|0);
$LOC1=$4;
STACKTOP=sp;return;
}
function _pageaddr_4uti7hTxTUDxUPqFMgMvHAsystem($p0){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+24)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
var $1;
var $result0;
var $FR=sp;
$1=$p0;
var $2=(($FR+4)|0);
HEAP32[(($2)>>2)]=4256;
var $3=(($FR+12)|0);
HEAP32[(($3)>>2)]=5744;
var $4=(($FR+8)|0);
HEAP32[(($4)>>2)]=0;
var $5=(($FR+16)|0);
HEAP16[(($5)>>1)]=0;
_nimFrame612($FR);
$result0=0;
var $6=(($FR+8)|0);
HEAP32[(($6)>>2)]=275;
var $7=(($FR+12)|0);
HEAP32[(($7)>>2)]=5744;
var $8=$1;
var $9=$8;
var $10=$9&-4096;
var $11=$10;
$result0=$11;
_popFrame613();
var $12=$result0;
STACKTOP=sp;return $12;
}
function _issmallchunk_xxNWShoyEPMUVN7FvfpDjwsystem($c0){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+24)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
label = 1;
while(1)switch(label){
case 1:
var $1;
var $result0;
var $FR=sp;
$1=$c0;
var $2=(($FR+4)|0);
HEAP32[(($2)>>2)]=4272;
var $3=(($FR+12)|0);
HEAP32[(($3)>>2)]=5744;
var $4=(($FR+8)|0);
HEAP32[(($4)>>2)]=0;
var $5=(($FR+16)|0);
HEAP16[(($5)>>1)]=0;
_nimFrame612($FR);
$result0=0;
var $6=(($FR+8)|0);
HEAP32[(($6)>>2)]=235;
var $7=(($FR+12)|0);
HEAP32[(($7)>>2)]=5744;
var $8=(($FR+8)|0);
HEAP32[(($8)>>2)]=71;
var $9=(($FR+12)|0);
HEAP32[(($9)>>2)]=5744;
var $10=$1;
var $11=(($10+4)|0);
var $12=HEAP32[(($11)>>2)];
var $13=($12|0)<=4064;
var $14=($13&1);
var $15=(($14)&255);
$result0=$15;
label=2;break;
case 2:
_popFrame613();
var $17=$result0;
STACKTOP=sp;return $17;
default: assert(0, "bad label: " + label);
}
}
function _osallocpages_L9cOqCqK0vAcXBSP0u9c5VDgsystem($blocksize0){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+40)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
label = 1;
while(1)switch(label){
case 1:
var $1;
var $result0;
var $realsize0;
var $realpointer0;
var $pos0;
var $newpos0;
var $mmapdescrpos0;
var $mmapdescr0=sp;
var $LOC11=(sp)+(8);
var $FR=(sp)+(16);
var $LOC3;
$1=$blocksize0;
var $2=(($FR+4)|0);
HEAP32[(($2)>>2)]=4288;
var $3=(($FR+12)|0);
HEAP32[(($3)>>2)]=3768;
var $4=(($FR+8)|0);
HEAP32[(($4)>>2)]=0;
var $5=(($FR+16)|0);
HEAP16[(($5)>>1)]=0;
_nimFrame612($FR);
$result0=0;
var $6=(($FR+8)|0);
HEAP32[(($6)>>2)]=50;
var $7=(($FR+12)|0);
HEAP32[(($7)>>2)]=3768;
var $8=$1;
var $9=((($8)+(8))|0);
var $10=((($9)+(4096))|0);
var $11=((($10)+(1))|0);
$realsize0=$11;
var $12=(($FR+8)|0);
HEAP32[(($12)>>2)]=51;
var $13=(($FR+12)|0);
HEAP32[(($13)>>2)]=3768;
var $14=(($FR+8)|0);
HEAP32[(($14)>>2)]=52;
var $15=(($FR+12)|0);
HEAP32[(($15)>>2)]=3768;
var $16=$realsize0;
var $17=_mmap(0,$16,3,34,-1,0);
$result0=$17;
var $18=(($FR+8)|0);
HEAP32[(($18)>>2)]=53;
var $19=(($FR+12)|0);
HEAP32[(($19)>>2)]=3768;
$LOC3=0;
var $20=$result0;
var $21=($20|0)==0;
var $22=($21&1);
var $23=(($22)&255);
$LOC3=$23;
var $24=$LOC3;
var $25=(($24<<24)>>24)!=0;
if($25){label=2;break;}else{label=3;break;}
case 2:
label=4;break;
case 3:
var $28=$result0;
var $29=($28|0)==-1;
var $30=($29&1);
var $31=(($30)&255);
$LOC3=$31;
label=4;break;
case 4:
var $33=$LOC3;
var $34=(($33<<24)>>24)!=0;
if($34){label=6;break;}else{label=5;break;}
case 5:
label=7;break;
case 6:
var $37=(($FR+8)|0);
HEAP32[(($37)>>2)]=54;
var $38=(($FR+12)|0);
HEAP32[(($38)>>2)]=3768;
_raiseoutofmem_II46IjNZztN9bmbxUD8dt8g_2();
label=7;break;
case 7:
var $40=(($FR+8)|0);
HEAP32[(($40)>>2)]=56;
var $41=(($FR+12)|0);
HEAP32[(($41)>>2)]=3768;
var $42=$result0;
$realpointer0=$42;
var $43=(($FR+8)|0);
HEAP32[(($43)>>2)]=57;
var $44=(($FR+12)|0);
HEAP32[(($44)>>2)]=3768;
var $45=$result0;
var $46=$45;
$pos0=$46;
var $47=(($FR+8)|0);
HEAP32[(($47)>>2)]=60;
var $48=(($FR+12)|0);
HEAP32[(($48)>>2)]=3768;
var $49=$pos0;
var $50=$pos0;
var $51=(((($50>>>0))%(4096))&-1);
var $52=(((4096)-($51))|0);
var $53=((($49)+($52))|0);
$newpos0=$53;
var $54=(($FR+8)|0);
HEAP32[(($54)>>2)]=61;
var $55=(($FR+12)|0);
HEAP32[(($55)>>2)]=3768;
var $56=$newpos0;
var $57=$pos0;
var $58=((($56)-($57))|0);
var $59=($58|0)<8;
if($59){label=9;break;}else{label=8;break;}
case 8:
label=10;break;
case 9:
var $62=(($FR+8)|0);
HEAP32[(($62)>>2)]=62;
var $63=(($FR+12)|0);
HEAP32[(($63)>>2)]=3768;
var $64=$newpos0;
var $65=((($64)+(4096))|0);
$newpos0=$65;
label=10;break;
case 10:
var $67=(($FR+8)|0);
HEAP32[(($67)>>2)]=63;
var $68=(($FR+12)|0);
HEAP32[(($68)>>2)]=3768;
var $69=$newpos0;
var $70=$69;
$result0=$70;
var $71=(($FR+8)|0);
HEAP32[(($71)>>2)]=65;
var $72=(($FR+12)|0);
HEAP32[(($72)>>2)]=3768;
var $73=$result0;
var $74=$73;
var $75=((($74)-(8))|0);
$mmapdescrpos0=$75;
var $76=(($FR+8)|0);
HEAP32[(($76)>>2)]=67;
var $77=(($FR+12)|0);
HEAP32[(($77)>>2)]=3768;
var $78=$mmapdescrpos0;
var $79=$LOC11;
HEAP32[(($79)>>2)]=$78;
var $80=$LOC11;
var $81=$mmapdescr0;
var $82=$80;
assert(8 % 1 === 0);HEAP32[(($81)>>2)]=HEAP32[(($82)>>2)];HEAP32[((($81)+(4))>>2)]=HEAP32[((($82)+(4))>>2)];
var $83=(($FR+8)|0);
HEAP32[(($83)>>2)]=68;
var $84=(($FR+12)|0);
HEAP32[(($84)>>2)]=3768;
var $85=$realsize0;
var $86=(($mmapdescr0)|0);
HEAP32[(($86)>>2)]=$85;
var $87=(($FR+8)|0);
HEAP32[(($87)>>2)]=69;
var $88=(($FR+12)|0);
HEAP32[(($88)>>2)]=3768;
var $89=$realpointer0;
var $90=(($mmapdescr0+4)|0);
HEAP32[(($90)>>2)]=$89;
_popFrame613();
var $91=$result0;
STACKTOP=sp;return $91;
default: assert(0, "bad label: " + label);
}
}
function _inccurrmem_rxjvSU4wRoPOjezLtDzm3Qsystem($a0,$bytes0){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+24)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
var $1;
var $2;
var $FR=sp;
$1=$a0;
$2=$bytes0;
var $3=(($FR+4)|0);
HEAP32[(($3)>>2)]=4304;
var $4=(($FR+12)|0);
HEAP32[(($4)>>2)]=5744;
var $5=(($FR+8)|0);
HEAP32[(($5)>>2)]=0;
var $6=(($FR+16)|0);
HEAP16[(($6)>>1)]=0;
_nimFrame612($FR);
var $7=(($FR+8)|0);
HEAP32[(($7)>>2)]=121;
var $8=(($FR+12)|0);
HEAP32[(($8)>>2)]=5744;
var $9=$2;
var $10=$1;
var $11=(($10+2060)|0);
var $12=HEAP32[(($11)>>2)];
var $13=((($12)+($9))|0);
HEAP32[(($11)>>2)]=$13;
_popFrame613();
STACKTOP=sp;return;
}
function _zeromem_7EL8Zq3xF2ujDWgp3bAEogsystem($p0,$size0){
var label=0;
var sp=STACKTOP; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
var $1;
var $2;
var $LOC1;
$1=$p0;
$2=$size0;
$LOC1=0;
var $3=$1;
var $4=$2;
_memset($3, 0, $4)|0;
$LOC1=$3;
STACKTOP=sp;return;
}
function _pageindex_vFgXFo13iF61HsEG6epuwgsystem($c0){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+24)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
var $1;
var $result0;
var $FR=sp;
$1=$c0;
var $2=(($FR+4)|0);
HEAP32[(($2)>>2)]=4320;
var $3=(($FR+12)|0);
HEAP32[(($3)>>2)]=5744;
var $4=(($FR+8)|0);
HEAP32[(($4)>>2)]=0;
var $5=(($FR+16)|0);
HEAP16[(($5)>>1)]=0;
_nimFrame612($FR);
$result0=0;
var $6=(($FR+8)|0);
HEAP32[(($6)>>2)]=269;
var $7=(($FR+12)|0);
HEAP32[(($7)>>2)]=5744;
var $8=$1;
var $9=$8;
var $10=$9>>>12;
$result0=$10;
_popFrame613();
var $11=$result0;
STACKTOP=sp;return $11;
}
function _pageindex_bDTXHqSShXKux9bZH4tvkVgsystem($p0){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+24)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
var $1;
var $result0;
var $FR=sp;
$1=$p0;
var $2=(($FR+4)|0);
HEAP32[(($2)>>2)]=4320;
var $3=(($FR+12)|0);
HEAP32[(($3)>>2)]=5744;
var $4=(($FR+8)|0);
HEAP32[(($4)>>2)]=0;
var $5=(($FR+16)|0);
HEAP16[(($5)>>1)]=0;
_nimFrame612($FR);
$result0=0;
var $6=(($FR+8)|0);
HEAP32[(($6)>>2)]=272;
var $7=(($FR+12)|0);
HEAP32[(($7)>>2)]=5744;
var $8=$1;
var $9=$8;
var $10=$9>>>12;
$result0=$10;
_popFrame613();
var $11=$result0;
STACKTOP=sp;return $11;
}
function _osdeallocpages_I1brEDH0C8CP9a0HfGYsDvAsystem($p0,$size0){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+40)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
var $1;
var $2;
var $mmapdescrpos0;
var $mmapdescr0=sp;
var $LOC1=(sp)+(8);
var $FR=(sp)+(16);
$1=$p0;
$2=$size0;
var $3=(($FR+4)|0);
HEAP32[(($3)>>2)]=4352;
var $4=(($FR+12)|0);
HEAP32[(($4)>>2)]=3768;
var $5=(($FR+8)|0);
HEAP32[(($5)>>2)]=0;
var $6=(($FR+16)|0);
HEAP16[(($6)>>1)]=0;
_nimFrame612($FR);
var $7=(($FR+8)|0);
HEAP32[(($7)>>2)]=76;
var $8=(($FR+12)|0);
HEAP32[(($8)>>2)]=3768;
var $9=$1;
var $10=$9;
var $11=((($10)-(8))|0);
$mmapdescrpos0=$11;
var $12=(($FR+8)|0);
HEAP32[(($12)>>2)]=77;
var $13=(($FR+12)|0);
HEAP32[(($13)>>2)]=3768;
var $14=$mmapdescrpos0;
var $15=$LOC1;
HEAP32[(($15)>>2)]=$14;
var $16=$LOC1;
var $17=$mmapdescr0;
var $18=$16;
assert(8 % 1 === 0);HEAP32[(($17)>>2)]=HEAP32[(($18)>>2)];HEAP32[((($17)+(4))>>2)]=HEAP32[((($18)+(4))>>2)];
var $19=(($FR+8)|0);
HEAP32[(($19)>>2)]=78;
var $20=(($FR+12)|0);
HEAP32[(($20)>>2)]=3768;
var $21=(($mmapdescr0+4)|0);
var $22=HEAP32[(($21)>>2)];
var $23=(($mmapdescr0)|0);
var $24=HEAP32[(($23)>>2)];
var $25=_munmap($22,$24);
_popFrame613();
STACKTOP=sp;return;
}
function _deccurrmem_rxjvSU4wRoPOjezLtDzm3Q_2system($a0,$bytes0){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+24)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
label = 1;
while(1)switch(label){
case 1:
var $1;
var $2;
var $FR=sp;
$1=$a0;
$2=$bytes0;
var $3=(($FR+4)|0);
HEAP32[(($3)>>2)]=4368;
var $4=(($FR+12)|0);
HEAP32[(($4)>>2)]=5744;
var $5=(($FR+8)|0);
HEAP32[(($5)>>2)]=0;
var $6=(($FR+16)|0);
HEAP16[(($6)>>1)]=0;
_nimFrame612($FR);
var $7=(($FR+8)|0);
HEAP32[(($7)>>2)]=124;
var $8=(($FR+12)|0);
HEAP32[(($8)>>2)]=5744;
var $9=$1;
var $10=(($9+2064)|0);
var $11=HEAP32[(($10)>>2)];
var $12=$1;
var $13=(($12+2060)|0);
var $14=HEAP32[(($13)>>2)];
var $15=($11|0)>=($14|0);
if($15){label=2;break;}else{label=3;break;}
case 2:
var $17=$1;
var $18=(($17+2064)|0);
var $19=HEAP32[(($18)>>2)];
var $25=$19;label=4;break;
case 3:
var $21=$1;
var $22=(($21+2060)|0);
var $23=HEAP32[(($22)>>2)];
var $25=$23;label=4;break;
case 4:
var $25;
var $26=$1;
var $27=(($26+2064)|0);
HEAP32[(($27)>>2)]=$25;
var $28=(($FR+8)|0);
HEAP32[(($28)>>2)]=125;
var $29=(($FR+12)|0);
HEAP32[(($29)>>2)]=5744;
var $30=$2;
var $31=$1;
var $32=(($31+2060)|0);
var $33=HEAP32[(($32)>>2)];
var $34=((($33)-($30))|0);
HEAP32[(($32)>>2)]=$34;
_popFrame613();
STACKTOP=sp;return;
default: assert(0, "bad label: " + label);
}
}
function _isaccessible_5nqar3kL9acJcissrFLDdkwsystem($a0,$p0){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+24)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
var $1;
var $2;
var $result0;
var $LOC1;
var $FR=sp;
$1=$a0;
$2=$p0;
var $3=(($FR+4)|0);
HEAP32[(($3)>>2)]=4392;
var $4=(($FR+12)|0);
HEAP32[(($4)>>2)]=5744;
var $5=(($FR+8)|0);
HEAP32[(($5)>>2)]=0;
var $6=(($FR+16)|0);
HEAP16[(($6)>>1)]=0;
_nimFrame612($FR);
$result0=0;
var $7=(($FR+8)|0);
HEAP32[(($7)>>2)]=339;
var $8=(($FR+12)|0);
HEAP32[(($8)>>2)]=5744;
$LOC1=0;
var $9=$2;
var $10=_pageindex_bDTXHqSShXKux9bZH4tvkVgsystem($9);
$LOC1=$10;
var $11=$1;
var $12=(($11+2080)|0);
var $13=$LOC1;
var $14=_contains_tGsWrN4DY41H9btt3FhjrNA($12,$13);
$result0=$14;
_popFrame613();
var $15=$result0;
STACKTOP=sp;return $15;
}
function _chunkunused_xxNWShoyEPMUVN7FvfpDjw_2system($c0){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+24)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
var $1;
var $result0;
var $FR=sp;
$1=$c0;
var $2=(($FR+4)|0);
HEAP32[(($2)>>2)]=4424;
var $3=(($FR+12)|0);
HEAP32[(($3)>>2)]=5744;
var $4=(($FR+8)|0);
HEAP32[(($4)>>2)]=0;
var $5=(($FR+16)|0);
HEAP16[(($5)>>1)]=0;
_nimFrame612($FR);
$result0=0;
var $6=(($FR+8)|0);
HEAP32[(($6)>>2)]=238;
var $7=(($FR+12)|0);
HEAP32[(($7)>>2)]=5744;
var $8=$1;
var $9=(($8+8)|0);
var $10=HEAP8[($9)];
var $11=(($10<<24)>>24)!=0;
var $12=$11^1;
var $13=($12&1);
var $14=(($13)&255);
$result0=$14;
_popFrame613();
var $15=$result0;
STACKTOP=sp;return $15;
}
function _listremove_ZRIe9cFnHOrfvS8VmLduoXQsystem($head0,$c0){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+24)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
label = 1;
while(1)switch(label){
case 1:
var $1;
var $2;
var $FR=sp;
$1=$head0;
$2=$c0;
var $3=(($FR+4)|0);
HEAP32[(($3)>>2)]=4488;
var $4=(($FR+12)|0);
HEAP32[(($4)>>2)]=5744;
var $5=(($FR+8)|0);
HEAP32[(($5)>>2)]=0;
var $6=(($FR+16)|0);
HEAP16[(($6)>>1)]=0;
_nimFrame612($FR);
var $7=(($FR+8)|0);
HEAP32[(($7)>>2)]=367;
var $8=(($FR+12)|0);
HEAP32[(($8)>>2)]=5744;
var $9=$2;
var $10=$1;
var $11=HEAP32[(($10)>>2)];
var $12=($9|0)==($11|0);
if($12){label=3;break;}else{label=2;break;}
case 2:
label=7;break;
case 3:
var $15=(($FR+8)|0);
HEAP32[(($15)>>2)]=368;
var $16=(($FR+12)|0);
HEAP32[(($16)>>2)]=5744;
var $17=$2;
var $18=(($17+12)|0);
var $19=HEAP32[(($18)>>2)];
var $20=$1;
HEAP32[(($20)>>2)]=$19;
var $21=(($FR+8)|0);
HEAP32[(($21)>>2)]=370;
var $22=(($FR+12)|0);
HEAP32[(($22)>>2)]=5744;
var $23=(($FR+8)|0);
HEAP32[(($23)>>2)]=347;
var $24=(($FR+12)|0);
HEAP32[(($24)>>2)]=2416;
var $25=(($FR+8)|0);
HEAP32[(($25)>>2)]=370;
var $26=(($FR+12)|0);
HEAP32[(($26)>>2)]=5744;
var $27=$1;
var $28=HEAP32[(($27)>>2)];
var $29=($28|0)==0;
if($29){label=4;break;}else{label=5;break;}
case 4:
label=6;break;
case 5:
var $32=$1;
var $33=HEAP32[(($32)>>2)];
var $34=(($33+16)|0);
HEAP32[(($34)>>2)]=0;
label=6;break;
case 6:
label=11;break;
case 7:
var $37=(($FR+8)|0);
HEAP32[(($37)>>2)]=373;
var $38=(($FR+12)|0);
HEAP32[(($38)>>2)]=5744;
var $39=$2;
var $40=(($39+12)|0);
var $41=HEAP32[(($40)>>2)];
var $42=$2;
var $43=(($42+16)|0);
var $44=HEAP32[(($43)>>2)];
var $45=(($44+12)|0);
HEAP32[(($45)>>2)]=$41;
var $46=(($FR+8)|0);
HEAP32[(($46)>>2)]=374;
var $47=(($FR+12)|0);
HEAP32[(($47)>>2)]=5744;
var $48=(($FR+8)|0);
HEAP32[(($48)>>2)]=347;
var $49=(($FR+12)|0);
HEAP32[(($49)>>2)]=2416;
var $50=(($FR+8)|0);
HEAP32[(($50)>>2)]=374;
var $51=(($FR+12)|0);
HEAP32[(($51)>>2)]=5744;
var $52=$2;
var $53=(($52+12)|0);
var $54=HEAP32[(($53)>>2)];
var $55=($54|0)==0;
if($55){label=8;break;}else{label=9;break;}
case 8:
label=10;break;
case 9:
var $58=$2;
var $59=(($58+16)|0);
var $60=HEAP32[(($59)>>2)];
var $61=$2;
var $62=(($61+12)|0);
var $63=HEAP32[(($62)>>2)];
var $64=(($63+16)|0);
HEAP32[(($64)>>2)]=$60;
label=10;break;
case 10:
label=11;break;
case 11:
var $67=(($FR+8)|0);
HEAP32[(($67)>>2)]=375;
var $68=(($FR+12)|0);
HEAP32[(($68)>>2)]=5744;
var $69=$2;
var $70=(($69+12)|0);
HEAP32[(($70)>>2)]=0;
var $71=(($FR+8)|0);
HEAP32[(($71)>>2)]=376;
var $72=(($FR+12)|0);
HEAP32[(($72)>>2)]=5744;
var $73=$2;
var $74=(($73+16)|0);
HEAP32[(($74)>>2)]=0;
_popFrame613();
STACKTOP=sp;return;
default: assert(0, "bad label: " + label);
}
}
function _updateprevsize_3G5wKZdFZhblebPYdFnpxQsystem($a0,$c0,$prevsize0){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+24)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
label = 1;
while(1)switch(label){
case 1:
var $1;
var $2;
var $3;
var $ri0;
var $FR=sp;
var $LOC3;
$1=$a0;
$2=$c0;
$3=$prevsize0;
var $4=(($FR+4)|0);
HEAP32[(($4)>>2)]=4448;
var $5=(($FR+12)|0);
HEAP32[(($5)>>2)]=5744;
var $6=(($FR+8)|0);
HEAP32[(($6)>>2)]=0;
var $7=(($FR+16)|0);
HEAP16[(($7)>>1)]=0;
_nimFrame612($FR);
var $8=(($FR+8)|0);
HEAP32[(($8)>>2)]=380;
var $9=(($FR+12)|0);
HEAP32[(($9)>>2)]=5744;
var $10=$2;
var $11=$10;
var $12=$2;
var $13=(($12)|0);
var $14=(($13+4)|0);
var $15=HEAP32[(($14)>>2)];
var $16=((($11)+($15))|0);
var $17=$16;
$ri0=$17;
var $18=(($FR+8)|0);
HEAP32[(($18)>>2)]=382;
var $19=(($FR+12)|0);
HEAP32[(($19)>>2)]=5744;
$LOC3=0;
var $20=$1;
var $21=$ri0;
var $22=$21;
var $23=_isaccessible_5nqar3kL9acJcissrFLDdkwsystem($20,$22);
$LOC3=$23;
var $24=$LOC3;
var $25=(($24<<24)>>24)!=0;
if($25){label=3;break;}else{label=2;break;}
case 2:
label=4;break;
case 3:
var $28=(($FR+8)|0);
HEAP32[(($28)>>2)]=383;
var $29=(($FR+12)|0);
HEAP32[(($29)>>2)]=5744;
var $30=$3;
var $31=$ri0;
var $32=(($31)|0);
HEAP32[(($32)>>2)]=$30;
label=4;break;
case 4:
_popFrame613();
STACKTOP=sp;return;
default: assert(0, "bad label: " + label);
}
}
function _listadd_ZRIe9cFnHOrfvS8VmLduoXQ_2system($head0,$c0){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+24)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
label = 1;
while(1)switch(label){
case 1:
var $1;
var $2;
var $FR=sp;
$1=$head0;
$2=$c0;
var $3=(($FR+4)|0);
HEAP32[(($3)>>2)]=4480;
var $4=(($FR+12)|0);
HEAP32[(($4)>>2)]=5744;
var $5=(($FR+8)|0);
HEAP32[(($5)>>2)]=0;
var $6=(($FR+16)|0);
HEAP16[(($6)>>1)]=0;
_nimFrame612($FR);
var $7=(($FR+8)|0);
HEAP32[(($7)>>2)]=359;
var $8=(($FR+12)|0);
HEAP32[(($8)>>2)]=5744;
var $9=$1;
var $10=HEAP32[(($9)>>2)];
var $11=$2;
var $12=(($11+12)|0);
HEAP32[(($12)>>2)]=$10;
var $13=(($FR+8)|0);
HEAP32[(($13)>>2)]=360;
var $14=(($FR+12)|0);
HEAP32[(($14)>>2)]=5744;
var $15=(($FR+8)|0);
HEAP32[(($15)>>2)]=347;
var $16=(($FR+12)|0);
HEAP32[(($16)>>2)]=2416;
var $17=(($FR+8)|0);
HEAP32[(($17)>>2)]=360;
var $18=(($FR+12)|0);
HEAP32[(($18)>>2)]=5744;
var $19=$1;
var $20=HEAP32[(($19)>>2)];
var $21=($20|0)==0;
if($21){label=2;break;}else{label=3;break;}
case 2:
label=4;break;
case 3:
var $24=(($FR+8)|0);
HEAP32[(($24)>>2)]=362;
var $25=(($FR+12)|0);
HEAP32[(($25)>>2)]=5744;
var $26=$2;
var $27=$1;
var $28=HEAP32[(($27)>>2)];
var $29=(($28+16)|0);
HEAP32[(($29)>>2)]=$26;
label=4;break;
case 4:
var $31=(($FR+8)|0);
HEAP32[(($31)>>2)]=363;
var $32=(($FR+12)|0);
HEAP32[(($32)>>2)]=5744;
var $33=$2;
var $34=$1;
HEAP32[(($34)>>2)]=$33;
_popFrame613();
STACKTOP=sp;return;
default: assert(0, "bad label: " + label);
}
}
function _deallocavlnode_E5Kui5a9artJoR6jEn007Vgsystem($a0,$n0){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+24)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
var $1;
var $2;
var $FR=sp;
$1=$a0;
$2=$n0;
var $3=(($FR+4)|0);
HEAP32[(($3)>>2)]=4464;
var $4=(($FR+12)|0);
HEAP32[(($4)>>2)]=5744;
var $5=(($FR+8)|0);
HEAP32[(($5)>>2)]=0;
var $6=(($FR+16)|0);
HEAP16[(($6)>>1)]=0;
_nimFrame612($FR);
var $7=(($FR+8)|0);
HEAP32[(($7)>>2)]=168;
var $8=(($FR+12)|0);
HEAP32[(($8)>>2)]=5744;
var $9=$1;
var $10=(($9+3116)|0);
var $11=HEAP32[(($10)>>2)];
var $12=$2;
var $13=(($12)|0);
var $14=(($13)|0);
HEAP32[(($14)>>2)]=$11;
var $15=(($FR+8)|0);
HEAP32[(($15)>>2)]=169;
var $16=(($FR+12)|0);
HEAP32[(($16)>>2)]=5744;
var $17=$2;
var $18=$1;
var $19=(($18+3116)|0);
HEAP32[(($19)>>2)]=$17;
_popFrame613();
STACKTOP=sp;return;
}
function _listadd_DqXPtLsRUwQp3iwLtHEdIgsystem($head0,$c0){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+24)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
label = 1;
while(1)switch(label){
case 1:
var $1;
var $2;
var $FR=sp;
$1=$head0;
$2=$c0;
var $3=(($FR+4)|0);
HEAP32[(($3)>>2)]=4480;
var $4=(($FR+12)|0);
HEAP32[(($4)>>2)]=5744;
var $5=(($FR+8)|0);
HEAP32[(($5)>>2)]=0;
var $6=(($FR+16)|0);
HEAP16[(($6)>>1)]=0;
_nimFrame612($FR);
var $7=(($FR+8)|0);
HEAP32[(($7)>>2)]=359;
var $8=(($FR+12)|0);
HEAP32[(($8)>>2)]=5744;
var $9=$1;
var $10=HEAP32[(($9)>>2)];
var $11=$2;
var $12=(($11+12)|0);
HEAP32[(($12)>>2)]=$10;
var $13=(($FR+8)|0);
HEAP32[(($13)>>2)]=360;
var $14=(($FR+12)|0);
HEAP32[(($14)>>2)]=5744;
var $15=(($FR+8)|0);
HEAP32[(($15)>>2)]=347;
var $16=(($FR+12)|0);
HEAP32[(($16)>>2)]=2416;
var $17=(($FR+8)|0);
HEAP32[(($17)>>2)]=360;
var $18=(($FR+12)|0);
HEAP32[(($18)>>2)]=5744;
var $19=$1;
var $20=HEAP32[(($19)>>2)];
var $21=($20|0)==0;
if($21){label=2;break;}else{label=3;break;}
case 2:
label=4;break;
case 3:
var $24=(($FR+8)|0);
HEAP32[(($24)>>2)]=362;
var $25=(($FR+12)|0);
HEAP32[(($25)>>2)]=5744;
var $26=$2;
var $27=$1;
var $28=HEAP32[(($27)>>2)];
var $29=(($28+16)|0);
HEAP32[(($29)>>2)]=$26;
label=4;break;
case 4:
var $31=(($FR+8)|0);
HEAP32[(($31)>>2)]=363;
var $32=(($FR+12)|0);
HEAP32[(($32)>>2)]=5744;
var $33=$2;
var $34=$1;
HEAP32[(($34)>>2)]=$33;
_popFrame613();
STACKTOP=sp;return;
default: assert(0, "bad label: " + label);
}
}
function _listremove_DqXPtLsRUwQp3iwLtHEdIg_2system($head0,$c0){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+24)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
label = 1;
while(1)switch(label){
case 1:
var $1;
var $2;
var $FR=sp;
$1=$head0;
$2=$c0;
var $3=(($FR+4)|0);
HEAP32[(($3)>>2)]=4488;
var $4=(($FR+12)|0);
HEAP32[(($4)>>2)]=5744;
var $5=(($FR+8)|0);
HEAP32[(($5)>>2)]=0;
var $6=(($FR+16)|0);
HEAP16[(($6)>>1)]=0;
_nimFrame612($FR);
var $7=(($FR+8)|0);
HEAP32[(($7)>>2)]=367;
var $8=(($FR+12)|0);
HEAP32[(($8)>>2)]=5744;
var $9=$2;
var $10=$1;
var $11=HEAP32[(($10)>>2)];
var $12=($9|0)==($11|0);
if($12){label=3;break;}else{label=2;break;}
case 2:
label=7;break;
case 3:
var $15=(($FR+8)|0);
HEAP32[(($15)>>2)]=368;
var $16=(($FR+12)|0);
HEAP32[(($16)>>2)]=5744;
var $17=$2;
var $18=(($17+12)|0);
var $19=HEAP32[(($18)>>2)];
var $20=$1;
HEAP32[(($20)>>2)]=$19;
var $21=(($FR+8)|0);
HEAP32[(($21)>>2)]=370;
var $22=(($FR+12)|0);
HEAP32[(($22)>>2)]=5744;
var $23=(($FR+8)|0);
HEAP32[(($23)>>2)]=347;
var $24=(($FR+12)|0);
HEAP32[(($24)>>2)]=2416;
var $25=(($FR+8)|0);
HEAP32[(($25)>>2)]=370;
var $26=(($FR+12)|0);
HEAP32[(($26)>>2)]=5744;
var $27=$1;
var $28=HEAP32[(($27)>>2)];
var $29=($28|0)==0;
if($29){label=4;break;}else{label=5;break;}
case 4:
label=6;break;
case 5:
var $32=$1;
var $33=HEAP32[(($32)>>2)];
var $34=(($33+16)|0);
HEAP32[(($34)>>2)]=0;
label=6;break;
case 6:
label=11;break;
case 7:
var $37=(($FR+8)|0);
HEAP32[(($37)>>2)]=373;
var $38=(($FR+12)|0);
HEAP32[(($38)>>2)]=5744;
var $39=$2;
var $40=(($39+12)|0);
var $41=HEAP32[(($40)>>2)];
var $42=$2;
var $43=(($42+16)|0);
var $44=HEAP32[(($43)>>2)];
var $45=(($44+12)|0);
HEAP32[(($45)>>2)]=$41;
var $46=(($FR+8)|0);
HEAP32[(($46)>>2)]=374;
var $47=(($FR+12)|0);
HEAP32[(($47)>>2)]=5744;
var $48=(($FR+8)|0);
HEAP32[(($48)>>2)]=347;
var $49=(($FR+12)|0);
HEAP32[(($49)>>2)]=2416;
var $50=(($FR+8)|0);
HEAP32[(($50)>>2)]=374;
var $51=(($FR+12)|0);
HEAP32[(($51)>>2)]=5744;
var $52=$2;
var $53=(($52+12)|0);
var $54=HEAP32[(($53)>>2)];
var $55=($54|0)==0;
if($55){label=8;break;}else{label=9;break;}
case 8:
label=10;break;
case 9:
var $58=$2;
var $59=(($58+16)|0);
var $60=HEAP32[(($59)>>2)];
var $61=$2;
var $62=(($61+12)|0);
var $63=HEAP32[(($62)>>2)];
var $64=(($63+16)|0);
HEAP32[(($64)>>2)]=$60;
label=10;break;
case 10:
label=11;break;
case 11:
var $67=(($FR+8)|0);
HEAP32[(($67)>>2)]=375;
var $68=(($FR+12)|0);
HEAP32[(($68)>>2)]=5744;
var $69=$2;
var $70=(($69+12)|0);
HEAP32[(($70)>>2)]=0;
var $71=(($FR+8)|0);
HEAP32[(($71)>>2)]=376;
var $72=(($FR+12)|0);
HEAP32[(($72)>>2)]=5744;
var $73=$2;
var $74=(($73+16)|0);
HEAP32[(($74)>>2)]=0;
_popFrame613();
STACKTOP=sp;return;
default: assert(0, "bad label: " + label);
}
}
function _appendString615($dest0,$src0){
var label=0;
var sp=STACKTOP; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
var $1;
var $2;
$1=$dest0;
$2=$src0;
var $3=$1;
var $4=(($3)|0);
var $5=(($4)|0);
var $6=HEAP32[(($5)>>2)];
var $7=(($6)|0);
var $8=$1;
var $9=(($8+8)|0);
var $10=(($9+$7)|0);
var $11=$2;
var $12=(($11+8)|0);
var $13=(($12)|0);
var $14=$2;
var $15=(($14)|0);
var $16=(($15)|0);
var $17=HEAP32[(($16)>>2)];
var $18=((($17)+(1))|0);
_copymem_fPlwH3r9agN9aEHB6yCPMh0wsystem614($10,$13,$18);
var $19=$2;
var $20=(($19)|0);
var $21=(($20)|0);
var $22=HEAP32[(($21)>>2)];
var $23=$1;
var $24=(($23)|0);
var $25=(($24)|0);
var $26=HEAP32[(($25)>>2)];
var $27=((($26)+($22))|0);
HEAP32[(($25)>>2)]=$27;
STACKTOP=sp;return;
}
function _quitordebug_IZ2oOmqdsYQ7vixQGKSDcAsystem(){
var label=0;
_exit(1);
throw "Reached an unreachable!";
return;
}
function _roundup_HS4HdHHFZPftyB49cpIyo7Asystem($x0,$v0){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+24)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
var $1;
var $2;
var $result0;
var $FR=sp;
$1=$x0;
$2=$v0;
var $3=(($FR+4)|0);
HEAP32[(($3)>>2)]=4504;
var $4=(($FR+12)|0);
HEAP32[(($4)>>2)]=3768;
var $5=(($FR+8)|0);
HEAP32[(($5)>>2)]=0;
var $6=(($FR+16)|0);
HEAP16[(($6)>>1)]=0;
_nimFrame612($FR);
$result0=0;
var $7=(($FR+8)|0);
HEAP32[(($7)>>2)]=11;
var $8=(($FR+12)|0);
HEAP32[(($8)>>2)]=3768;
var $9=$1;
var $10=$2;
var $11=((($10)-(1))|0);
var $12=((($9)+($11))|0);
var $13=$2;
var $14=((($13)-(1))|0);
var $15=$14^-1;
var $16=$12&$15;
$result0=$16;
_popFrame613();
var $17=$result0;
STACKTOP=sp;return $17;
}
function _pushCurrentException($e0){
var label=0;
var sp=STACKTOP; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
var $1;
$1=$e0;
var $2=HEAP32[((16056)>>2)];
var $3=$1;
var $4=(($3+4)|0);
HEAP32[(($4)>>2)]=$2;
var $5=$1;
HEAP32[((16056)>>2)]=$5;
STACKTOP=sp;return;
}
function _isObjWithCache($obj0,$subclass0,$cache0){
var label=0;
var sp=STACKTOP; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
label = 1;
while(1)switch(label){
case 1:
var $1;
var $2;
var $3;
var $result0;
$1=$obj0;
$2=$subclass0;
$3=$cache0;
$result0=0;
var $4=$1;
var $5=$2;
var $6=($4|0)==($5|0);
if($6){label=3;break;}else{label=2;break;}
case 2:
label=4;break;
case 3:
$result0=1;
label=14;break;
case 4:
var $10=$1;
var $11=(($10+8)|0);
var $12=HEAP32[(($11)>>2)];
var $13=$2;
var $14=($12|0)==($13|0);
if($14){label=6;break;}else{label=5;break;}
case 5:
label=7;break;
case 6:
$result0=1;
label=14;break;
case 7:
var $18=$3;
var $19=(($18)|0);
var $20=HEAP32[(($19)>>2)];
var $21=$1;
var $22=($20|0)==($21|0);
if($22){label=9;break;}else{label=8;break;}
case 8:
label=10;break;
case 9:
$result0=0;
label=14;break;
case 10:
var $26=$3;
var $27=(($26+4)|0);
var $28=HEAP32[(($27)>>2)];
var $29=$1;
var $30=($28|0)==($29|0);
if($30){label=12;break;}else{label=11;break;}
case 11:
label=13;break;
case 12:
$result0=1;
label=14;break;
case 13:
var $34=$1;
var $35=$2;
var $36=$3;
var $37=_isobjslowpath_k9bdq9bQE075AR7scLFt5wIg($34,$35,$36);
$result0=$37;
label=14;break;
case 14:
var $39=$result0;
STACKTOP=sp;return $39;
default: assert(0, "bad label: " + label);
}
}
function _sysfatal_p4l3kdztdOPD3nsQRAEDqwsystem($message0,$arg0){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+24)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
var $1;
var $2;
var $e0;
var $LOC1;
var $FR=sp;
$1=$message0;
$2=$arg0;
var $3=(($FR+4)|0);
HEAP32[(($3)>>2)]=4800;
var $4=(($FR+12)|0);
HEAP32[(($4)>>2)]=2416;
var $5=(($FR+8)|0);
HEAP32[(($5)>>2)]=0;
var $6=(($FR+16)|0);
HEAP16[(($6)>>1)]=0;
_nimFrame612($FR);
$e0=0;
var $7=(($FR+8)|0);
HEAP32[(($7)>>2)]=2585;
var $8=(($FR+12)|0);
HEAP32[(($8)>>2)]=2416;
var $9=_newObj(21528,20);
var $10=$9;
$e0=$10;
var $11=$e0;
var $12=(($11)|0);
var $13=(($12)|0);
var $14=(($13)|0);
var $15=(($14)|0);
HEAP32[(($15)>>2)]=22008;
var $16=(($FR+8)|0);
HEAP32[(($16)>>2)]=2586;
var $17=(($FR+12)|0);
HEAP32[(($17)>>2)]=2416;
$LOC1=0;
var $18=$1;
var $19=(($18)|0);
var $20=(($19)|0);
var $21=HEAP32[(($20)>>2)];
var $22=$2;
var $23=(($22)|0);
var $24=(($23)|0);
var $25=HEAP32[(($24)>>2)];
var $26=((($21)+($25))|0);
var $27=(($26)|0);
var $28=_rawNewString($27);
$LOC1=$28;
var $29=$LOC1;
var $30=$1;
_appendString615($29,$30);
var $31=$LOC1;
var $32=$2;
_appendString615($31,$32);
var $33=$LOC1;
var $34=$e0;
var $35=(($34)|0);
var $36=(($35)|0);
var $37=(($36+12)|0);
HEAP32[(($37)>>2)]=$33;
var $38=(($FR+8)|0);
HEAP32[(($38)>>2)]=2587;
var $39=(($FR+12)|0);
HEAP32[(($39)>>2)]=2416;
var $40=$e0;
var $41=$40;
_raiseException($41,4512);
_popFrame613();
STACKTOP=sp;return;
}
function _sysfatal_orK8PicRB9bj8BG69bF8HQbwsystem($message0){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+24)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
var $1;
var $e0;
var $FR=sp;
$1=$message0;
var $2=(($FR+4)|0);
HEAP32[(($2)>>2)]=4800;
var $3=(($FR+12)|0);
HEAP32[(($3)>>2)]=2416;
var $4=(($FR+8)|0);
HEAP32[(($4)>>2)]=0;
var $5=(($FR+16)|0);
HEAP16[(($5)>>1)]=0;
_nimFrame612($FR);
$e0=0;
var $6=(($FR+8)|0);
HEAP32[(($6)>>2)]=2579;
var $7=(($FR+12)|0);
HEAP32[(($7)>>2)]=2416;
var $8=_newObj(21528,20);
var $9=$8;
$e0=$9;
var $10=$e0;
var $11=(($10)|0);
var $12=(($11)|0);
var $13=(($12)|0);
var $14=(($13)|0);
HEAP32[(($14)>>2)]=22008;
var $15=(($FR+8)|0);
HEAP32[(($15)>>2)]=2580;
var $16=(($FR+12)|0);
HEAP32[(($16)>>2)]=2416;
var $17=$1;
var $18=_copyString($17);
var $19=$e0;
var $20=(($19)|0);
var $21=(($20)|0);
var $22=(($21+12)|0);
HEAP32[(($22)>>2)]=$18;
var $23=(($FR+8)|0);
HEAP32[(($23)>>2)]=2581;
var $24=(($FR+12)|0);
HEAP32[(($24)>>2)]=2416;
var $25=$e0;
var $26=$25;
_raiseException($26,4512);
_popFrame613();
STACKTOP=sp;return;
}
function _sysfatal_cjY6dGD4PiJNY9cmtw6Ay8Qsystem($message0){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+24)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
var $1;
var $e0;
var $FR=sp;
$1=$message0;
var $2=(($FR+4)|0);
HEAP32[(($2)>>2)]=4800;
var $3=(($FR+12)|0);
HEAP32[(($3)>>2)]=2416;
var $4=(($FR+8)|0);
HEAP32[(($4)>>2)]=0;
var $5=(($FR+16)|0);
HEAP16[(($5)>>1)]=0;
_nimFrame612($FR);
$e0=0;
var $6=(($FR+8)|0);
HEAP32[(($6)>>2)]=2579;
var $7=(($FR+12)|0);
HEAP32[(($7)>>2)]=2416;
var $8=_newObj(22232,20);
var $9=$8;
$e0=$9;
var $10=$e0;
var $11=(($10)|0);
var $12=(($11)|0);
var $13=(($12)|0);
var $14=(($13)|0);
HEAP32[(($14)>>2)]=21496;
var $15=(($FR+8)|0);
HEAP32[(($15)>>2)]=2580;
var $16=(($FR+12)|0);
HEAP32[(($16)>>2)]=2416;
var $17=$1;
var $18=_copyString($17);
var $19=$e0;
var $20=(($19)|0);
var $21=(($20)|0);
var $22=(($21+12)|0);
HEAP32[(($22)>>2)]=$18;
var $23=(($FR+8)|0);
HEAP32[(($23)>>2)]=2581;
var $24=(($FR+12)|0);
HEAP32[(($24)>>2)]=2416;
var $25=$e0;
var $26=$25;
_raiseException($26,4528);
_popFrame613();
STACKTOP=sp;return;
}
function _addInt619($a0,$b0){
var label=0;
var sp=STACKTOP; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
label = 1;
while(1)switch(label){
case 1:
var $1;
var $2;
var $result0;
var $LOC3;
$1=$a0;
$2=$b0;
$result0=0;
var $3=$1;
var $4=$2;
var $5=((($3)+($4))|0);
$result0=$5;
$LOC3=0;
var $6=$result0;
var $7=$1;
var $8=$6^$7;
var $9=0<=($8|0);
var $10=($9&1);
var $11=(($10)&255);
$LOC3=$11;
var $12=$LOC3;
var $13=(($12<<24)>>24)!=0;
if($13){label=2;break;}else{label=3;break;}
case 2:
label=4;break;
case 3:
var $16=$result0;
var $17=$2;
var $18=$16^$17;
var $19=0<=($18|0);
var $20=($19&1);
var $21=(($20)&255);
$LOC3=$21;
label=4;break;
case 4:
var $23=$LOC3;
var $24=(($23<<24)>>24)!=0;
if($24){label=6;break;}else{label=5;break;}
case 5:
label=7;break;
case 6:
label=8;break;
case 7:
_raiseOverflow();
label=8;break;
case 8:
var $29=$result0;
STACKTOP=sp;return $29;
default: assert(0, "bad label: " + label);
}
}
function _sysfatal_xS3KIecQr1nm9bJJvI4nGRwsystem($message0){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+24)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
var $1;
var $e0;
var $FR=sp;
$1=$message0;
var $2=(($FR+4)|0);
HEAP32[(($2)>>2)]=4800;
var $3=(($FR+12)|0);
HEAP32[(($3)>>2)]=2416;
var $4=(($FR+8)|0);
HEAP32[(($4)>>2)]=0;
var $5=(($FR+16)|0);
HEAP16[(($5)>>1)]=0;
_nimFrame612($FR);
$e0=0;
var $6=(($FR+8)|0);
HEAP32[(($6)>>2)]=2579;
var $7=(($FR+12)|0);
HEAP32[(($7)>>2)]=2416;
var $8=_newObj(19736,20);
var $9=$8;
$e0=$9;
var $10=$e0;
var $11=(($10)|0);
var $12=(($11)|0);
var $13=(($12)|0);
HEAP32[(($13)>>2)]=20728;
var $14=(($FR+8)|0);
HEAP32[(($14)>>2)]=2580;
var $15=(($FR+12)|0);
HEAP32[(($15)>>2)]=2416;
var $16=$1;
var $17=_copyString($16);
var $18=$e0;
var $19=(($18)|0);
var $20=(($19+12)|0);
HEAP32[(($20)>>2)]=$17;
var $21=(($FR+8)|0);
HEAP32[(($21)>>2)]=2581;
var $22=(($FR+12)|0);
HEAP32[(($22)>>2)]=2416;
var $23=$e0;
var $24=$23;
_raiseException($24,4552);
_popFrame613();
STACKTOP=sp;return;
}
function _sysfatal_f2dKuymeed9cUs7OQBJ8Nxwsystem($message0,$arg0){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+24)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
var $1;
var $2;
var $e0;
var $LOC1;
var $FR=sp;
$1=$message0;
$2=$arg0;
var $3=(($FR+4)|0);
HEAP32[(($3)>>2)]=4800;
var $4=(($FR+12)|0);
HEAP32[(($4)>>2)]=2416;
var $5=(($FR+8)|0);
HEAP32[(($5)>>2)]=0;
var $6=(($FR+16)|0);
HEAP16[(($6)>>1)]=0;
_nimFrame612($FR);
$e0=0;
var $7=(($FR+8)|0);
HEAP32[(($7)>>2)]=2585;
var $8=(($FR+12)|0);
HEAP32[(($8)>>2)]=2416;
var $9=_newObj(21560,20);
var $10=$9;
$e0=$10;
var $11=$e0;
var $12=(($11)|0);
var $13=(($12)|0);
var $14=(($13)|0);
HEAP32[(($14)>>2)]=19832;
var $15=(($FR+8)|0);
HEAP32[(($15)>>2)]=2586;
var $16=(($FR+12)|0);
HEAP32[(($16)>>2)]=2416;
$LOC1=0;
var $17=$1;
var $18=(($17)|0);
var $19=(($18)|0);
var $20=HEAP32[(($19)>>2)];
var $21=$2;
var $22=(($21)|0);
var $23=(($22)|0);
var $24=HEAP32[(($23)>>2)];
var $25=((($20)+($24))|0);
var $26=(($25)|0);
var $27=_rawNewString($26);
$LOC1=$27;
var $28=$LOC1;
var $29=$1;
_appendString615($28,$29);
var $30=$LOC1;
var $31=$2;
_appendString615($30,$31);
var $32=$LOC1;
var $33=$e0;
var $34=(($33)|0);
var $35=(($34+12)|0);
HEAP32[(($35)>>2)]=$32;
var $36=(($FR+8)|0);
HEAP32[(($36)>>2)]=2587;
var $37=(($FR+12)|0);
HEAP32[(($37)>>2)]=2416;
var $38=$e0;
var $39=$38;
_raiseException($39,4584);
_popFrame613();
STACKTOP=sp;return;
}
function _sysfatal_i2L89a3lg6SlU5J9amD3c3ewsystem($message0){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+24)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
var $1;
var $e0;
var $FR=sp;
$1=$message0;
var $2=(($FR+4)|0);
HEAP32[(($2)>>2)]=4800;
var $3=(($FR+12)|0);
HEAP32[(($3)>>2)]=2416;
var $4=(($FR+8)|0);
HEAP32[(($4)>>2)]=0;
var $5=(($FR+16)|0);
HEAP16[(($5)>>1)]=0;
_nimFrame612($FR);
$e0=0;
var $6=(($FR+8)|0);
HEAP32[(($6)>>2)]=2579;
var $7=(($FR+12)|0);
HEAP32[(($7)>>2)]=2416;
var $8=_newObj(19800,20);
var $9=$8;
$e0=$9;
var $10=$e0;
var $11=(($10)|0);
var $12=(($11)|0);
var $13=(($12)|0);
HEAP32[(($13)>>2)]=21656;
var $14=(($FR+8)|0);
HEAP32[(($14)>>2)]=2580;
var $15=(($FR+12)|0);
HEAP32[(($15)>>2)]=2416;
var $16=$1;
var $17=_copyString($16);
var $18=$e0;
var $19=(($18)|0);
var $20=(($19+12)|0);
HEAP32[(($20)>>2)]=$17;
var $21=(($FR+8)|0);
HEAP32[(($21)>>2)]=2581;
var $22=(($FR+12)|0);
HEAP32[(($22)>>2)]=2416;
var $23=$e0;
var $24=$23;
_raiseException($24,4616);
_popFrame613();
STACKTOP=sp;return;
}
function _Gcdisable_IZ2oOmqdsYQ7vixQGKSDcA_3system(){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+24)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
var $FR=sp;
var $1=(($FR+4)|0);
HEAP32[(($1)>>2)]=4632;
var $2=(($FR+12)|0);
HEAP32[(($2)>>2)]=3448;
var $3=(($FR+8)|0);
HEAP32[(($3)>>2)]=0;
var $4=(($FR+16)|0);
HEAP16[(($4)>>1)]=0;
_nimFrame612($FR);
_popFrame613();
STACKTOP=sp;return;
}
function _Gcenable_IZ2oOmqdsYQ7vixQGKSDcA_4system(){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+24)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
var $FR=sp;
var $1=(($FR+4)|0);
HEAP32[(($1)>>2)]=4664;
var $2=(($FR+12)|0);
HEAP32[(($2)>>2)]=3448;
var $3=(($FR+8)|0);
HEAP32[(($3)>>2)]=0;
var $4=(($FR+16)|0);
HEAP16[(($4)>>1)]=0;
_nimFrame612($FR);
_popFrame613();
STACKTOP=sp;return;
}
function _sysfatal_Ejh7BI1VhaxnxluVeF9aLxgsystem($message0){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+24)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
var $1;
var $e0;
var $FR=sp;
$1=$message0;
var $2=(($FR+4)|0);
HEAP32[(($2)>>2)]=4800;
var $3=(($FR+12)|0);
HEAP32[(($3)>>2)]=2416;
var $4=(($FR+8)|0);
HEAP32[(($4)>>2)]=0;
var $5=(($FR+16)|0);
HEAP16[(($5)>>1)]=0;
_nimFrame612($FR);
$e0=0;
var $6=(($FR+8)|0);
HEAP32[(($6)>>2)]=2579;
var $7=(($FR+12)|0);
HEAP32[(($7)>>2)]=2416;
var $8=_newObj(21048,20);
var $9=$8;
$e0=$9;
var $10=$e0;
var $11=(($10)|0);
var $12=(($11)|0);
var $13=(($12)|0);
HEAP32[(($13)>>2)]=21368;
var $14=(($FR+8)|0);
HEAP32[(($14)>>2)]=2580;
var $15=(($FR+12)|0);
HEAP32[(($15)>>2)]=2416;
var $16=$1;
var $17=_copyString($16);
var $18=$e0;
var $19=(($18)|0);
var $20=(($19+12)|0);
HEAP32[(($20)>>2)]=$17;
var $21=(($FR+8)|0);
HEAP32[(($21)>>2)]=2581;
var $22=(($FR+12)|0);
HEAP32[(($22)>>2)]=2416;
var $23=$e0;
var $24=$23;
_raiseException($24,4680);
_popFrame613();
STACKTOP=sp;return;
}
function _unsureAsgnRef($dest0,$src0){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+24)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
var $1;
var $2;
var $FR=sp;
$1=$dest0;
$2=$src0;
var $3=(($FR+4)|0);
HEAP32[(($3)>>2)]=4720;
var $4=(($FR+12)|0);
HEAP32[(($4)>>2)]=3448;
var $5=(($FR+8)|0);
HEAP32[(($5)>>2)]=0;
var $6=(($FR+16)|0);
HEAP16[(($6)>>1)]=0;
_nimFrame612($FR);
var $7=(($FR+8)|0);
HEAP32[(($7)>>2)]=525;
var $8=(($FR+12)|0);
HEAP32[(($8)>>2)]=3448;
var $9=$2;
var $10=$1;
HEAP32[(($10)>>2)]=$9;
_popFrame613();
STACKTOP=sp;return;
}
function _sysfatal_mWrNPcJugise9aqN0yGByGwsystem($message0){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+24)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
var $1;
var $e0;
var $FR=sp;
$1=$message0;
var $2=(($FR+4)|0);
HEAP32[(($2)>>2)]=4800;
var $3=(($FR+12)|0);
HEAP32[(($3)>>2)]=2416;
var $4=(($FR+8)|0);
HEAP32[(($4)>>2)]=0;
var $5=(($FR+16)|0);
HEAP16[(($5)>>1)]=0;
_nimFrame612($FR);
$e0=0;
var $6=(($FR+8)|0);
HEAP32[(($6)>>2)]=2579;
var $7=(($FR+12)|0);
HEAP32[(($7)>>2)]=2416;
var $8=_newObj(20952,20);
var $9=$8;
$e0=$9;
var $10=$e0;
var $11=(($10)|0);
var $12=(($11)|0);
var $13=(($12)|0);
HEAP32[(($13)>>2)]=22136;
var $14=(($FR+8)|0);
HEAP32[(($14)>>2)]=2580;
var $15=(($FR+12)|0);
HEAP32[(($15)>>2)]=2416;
var $16=$1;
var $17=_copyString($16);
var $18=$e0;
var $19=(($18)|0);
var $20=(($19+12)|0);
HEAP32[(($20)>>2)]=$17;
var $21=(($FR+8)|0);
HEAP32[(($21)>>2)]=2581;
var $22=(($FR+12)|0);
HEAP32[(($22)>>2)]=2416;
var $23=$e0;
var $24=$23;
_raiseException($24,4776);
_popFrame613();
STACKTOP=sp;return;
}
function _initallocator_neD9cJp4S9clvdaq5qqNFZAQsystem(){
var label=0;
HEAP32[((16104)>>2)]=16080;
var $1=HEAP32[((16104)>>2)];
var $2=HEAP32[((16104)>>2)];
var $3=(($2)|0);
var $4=(($3)|0);
HEAP32[(($4)>>2)]=$1;
var $5=HEAP32[((16104)>>2)];
var $6=HEAP32[((16104)>>2)];
var $7=(($6)|0);
var $8=(($7+4)|0);
HEAP32[(($8)>>2)]=$5;
return;
}
function _log_BoknhXXZUS1bUdtvQ5RiNA($logger0,$level0,$args0,$args0Len0){
var label=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+24)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
label = 1;
while(1)switch(label){
case 1:
var $1;
var $2;
var $3;
var $4;
var $FR=sp;
$1=$logger0;
$2=$level0;
$3=$args0;
$4=$args0Len0;
var $5=(($FR+4)|0);
HEAP32[(($5)>>2)]=2456;
var $6=(($FR+12)|0);
HEAP32[(($6)>>2)]=5048;
var $7=(($FR+8)|0);
HEAP32[(($7)>>2)]=0;
var $8=(($FR+16)|0);
HEAP16[(($8)>>1)]=0;
_nimFrame639($FR);
var $9=(($FR+8)|0);
HEAP32[(($9)>>2)]=139;
var $10=(($FR+12)|0);
HEAP32[(($10)>>2)]=5048;
var $11=$1;
var $12=($11|0)!=0;
if($12){label=2;break;}else{label=3;break;}
case 2:
var $14=$1;
var $15=(($14)|0);
var $16=(($15)|0);
var $17=HEAP32[(($16)>>2)];
var $18=($17|0)==21240;
if($18){label=4;break;}else{label=3;break;}
case 3:
label=7;break;
case 4:
var $21=$1;
var $22=($21|0)!=0;
if($22){label=5;break;}else{label=6;break;}
case 5:
var $24=$1;
var $25=(($24)|0);
var $26=(($25)|0);
var $27=HEAP32[(($26)>>2)];
_chckObj($27,21240);
label=6;break;
case 6:
var $29=$1;
var $30=$29;
var $31=$2;
var $32=$3;
var $33=$4;
_log_Z1wwTzhV8hfwxjrAweVVZQ($30,$31,$32,$33);
label=24;break;
case 7:
var $35=$1;
var $36=($35|0)!=0;
if($36){label=8;break;}else{label=9;break;}
case 8:
var $38=$1;
var $39=(($38)|0);
var $40=(($39)|0);
var $41=HEAP32[(($40)>>2)];
var $42=_isObjWithCache640($41,21816,19720);
var $43=($42&255);
var $44=($43|0)!=0;
if($44){label=10;break;}else{label=9;break;}
case 9:
label=13;break;
case 10:
var $47=$1;
var $48=($47|0)!=0;
if($48){label=11;break;}else{label=12;break;}
case 11:
var $50=$1;
var $51=(($50)|0);
var $52=(($51)|0);
var $53=HEAP32[(($52)>>2)];
_chckObj($53,21816);
label=12;break;
case 12:
var $55=$1;
var $56=$55;
var $57=$2;
var $58=$3;
var $59=$4;
_log_ZlB8IWVc9cdlahbPdrAh0Og($56,$57,$58,$59);
label=24;break;
case 13:
var $61=$1;
var $62=($61|0)!=0;
if($62){label=14;break;}else{label=15;break;}
case 14:
var $64=$1;
var $65=(($64)|0);
var $66=(($65)|0);
var $67=HEAP32[(($66)>>2)];
var $68=($67|0)==21176;
if($68){label=16;break;}else{label=15;break;}
case 15:
label=19;break;
case 16:
var $71=$1;
var $72=($71|0)!=0;
if($72){label=17;break;}else{label=18;break;}
case 17:
var $74=$1;
var $75=(($74)|0);
var $76=(($75)|0);
var $77=HEAP32[(($76)>>2)];
_chckObj($77,21176);
label=18;break;
case 18:
var $79=$1;
var $80=$79;
var $81=$2;
var $82=$3;
var $83=$4;
_log_F2wVp9bYd9alkwSwovfO9aanw($80,$81,$82,$83);
label=24;break;
case 19:
var $85=$1;
var $86=($85|0)!=0;
if($86){label=20;break;}else{label=21;break;}
case 20:
var $88=$1;
var $89=(($88)|0);
var $90=(($89)|0);
var $91=HEAP32[(($90)>>2)];
var $92=_isObjWithCache640($91,20440,19712);
var $93=($92&255);
var $94=($93|0)!=0;
if($94){label=22;break;}else{label=21;break;}
case 21:
label=23;break;
case 22:
var $97=$1;
var $98=$2;
var $99=$3;
var $100=$4;
_log_ickm9bT0pWcynhn7oX83aTg($97,$98,$99,$100);
label=24;break;
case 23:
label=24;break;
case 24:
_popFrame641();
STACKTOP=sp;return;
default: assert(0, "bad label: " + label);
}
}
function _PreMainInner(){
var label=0;
_systemInit000();
_stdlib_macrosDatInit000();
_stdlib_parseutilsDatInit000();
_stdlib_mathDatInit000();
_stdlib_algorithmDatInit000();
_stdlib_strutilsDatInit000();
_stdlib_timesDatInit000();
_stdlib_posixDatInit000();
_stdlib_osDatInit000();
_stdlib_loggingDatInit000();
_jsbind_emscriptenDatInit000();
_jsbind_jsbindDatInit000();
_testDatInit000();
_stdlib_macrosInit000();
_stdlib_parseutilsInit000();
_stdlib_mathInit000();
_stdlib_algorithmInit000();
_stdlib_strutilsInit000();
_stdlib_timesInit000();
_stdlib_posixInit000();
_stdlib_osInit000();
_stdlib_loggingInit000();
_jsbind_emscriptenInit000();
_jsbind_jsbindInit000();
return;
}
function _testDatInit000(){
var label=0;
HEAP32[((21976)>>2)]=8;
HEAP8[(21980)]=17;
HEAP32[((21984)>>2)]=20600;
HEAP8[(21981)]=1;
HEAP32[((8304)>>2)]=0;
HEAP8[(8288)]=2;
HEAP32[((21988)>>2)]=8288;
HEAP32[((19864)>>2)]=4;
HEAP8[(19868)]=22;
HEAP32[((19872)>>2)]=21976;
HEAP32[((19880)>>2)]=(4);
HEAP32[((20088)>>2)]=8;
HEAP8[(20092)]=17;
HEAP32[((20096)>>2)]=20600;
HEAP8[(20093)]=1;
HEAP32[((8328)>>2)]=0;
HEAP8[(8312)]=2;
HEAP32[((20100)>>2)]=8312;
HEAP32[((21304)>>2)]=4;
HEAP8[(21308)]=22;
HEAP32[((21312)>>2)]=20088;
HEAP32[((21320)>>2)]=(4);
return;
}
function _PreMain(){
var label=0;
var sp=STACKTOP; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
var $inner;
_systemDatInit000();
$inner=(6);
var $1=$inner;
var $2=$1;
FUNCTION_TABLE[$2]();
STACKTOP=sp;return;
}
function _NimMainInner(){
var label=0;
_NimMainModule();
return;
}
function _NimMainModule(){
var label=0;
var tempVarArgs=0;
var sp=STACKTOP;STACKTOP=(STACKTOP+24)|0; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
var $LOC1;
var $FR=sp;
var $1=(($FR+4)|0);
HEAP32[(($1)>>2)]=3896;
var $2=(($FR+12)|0);
HEAP32[(($2)>>2)]=3336;
var $3=(($FR+8)|0);
HEAP32[(($3)>>2)]=0;
var $4=(($FR+16)|0);
HEAP16[(($4)>>1)]=0;
_nimFrame639($FR);
var $5=(($FR+8)|0);
HEAP32[(($5)>>2)]=13;
var $6=(($FR+12)|0);
HEAP32[(($6)>>2)]=3336;
var $7=_printf(3016,(tempVarArgs=STACKTOP,STACKTOP = (STACKTOP + 8)|0,(assert((STACKTOP|0) < (STACK_MAX|0))|0),HEAP32[((tempVarArgs)>>2)]=6872,tempVarArgs)); STACKTOP=tempVarArgs;
var $8=HEAP32[((_stdout)>>2)];
var $9=_fflush($8);
var $10=(($FR+8)|0);
HEAP32[(($10)>>2)]=14;
var $11=(($FR+12)|0);
HEAP32[(($11)>>2)]=3336;
$LOC1=0;
var $12=_getconsole_aPMtAhz1iHoUZZ4VwqRiYwtest();
$LOC1=$12;
var $13=$LOC1;
_log_4URQAhdfO7rE5Hgpgh8h9awtest($13,6848);
var $14=(($FR+8)|0);
HEAP32[(($14)>>2)]=15;
var $15=(($FR+12)|0);
HEAP32[(($15)>>2)]=3336;
var $16=_printf(3016,(tempVarArgs=STACKTOP,STACKTOP = (STACKTOP + 8)|0,(assert((STACKTOP|0) < (STACK_MAX|0))|0),HEAP32[((tempVarArgs)>>2)]=6832,tempVarArgs)); STACKTOP=tempVarArgs;
var $17=HEAP32[((_stdout)>>2)];
var $18=_fflush($17);
_popFrame641();
STACKTOP=sp;return;
}
function _NimMain(){
var label=0;
var sp=STACKTOP; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
var $inner;
_PreMain();
$inner=(8);
var $1=$inner;
var $2=$1;
FUNCTION_TABLE[$2]();
STACKTOP=sp;return;
}
function _main($argc,$args,$env){
var label=0;
var sp=STACKTOP; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
var $1;
var $2;
var $3;
var $4;
$1=0;
$2=$argc;
$3=$args;
$4=$env;
var $5=$3;
HEAP32[((16064)>>2)]=$5;
var $6=$2;
HEAP32[((16072)>>2)]=$6;
var $7=$4;
HEAP32[((16008)>>2)]=$7;
_NimMain();
var $8=HEAP32[((15640)>>2)];
STACKTOP=sp;return $8;
}
Module["_main"] = _main;
function _nimFrame639($s0){
var label=0;
var sp=STACKTOP; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
label = 1;
while(1)switch(label){
case 1:
var $1;
var $LOC1;
$1=$s0;
$LOC1=0;
var $2=HEAP32[((16016)>>2)];
var $3=($2|0)==0;
if($3){label=3;break;}else{label=2;break;}
case 2:
label=4;break;
case 3:
$LOC1=0;
label=5;break;
case 4:
var $7=HEAP32[((16016)>>2)];
var $8=(($7+18)|0);
var $9=HEAP16[(($8)>>1)];
var $10=(($9<<16)>>16);
var $11=((($10)+(1))|0);
var $12=(($11)&65535);
var $13=(($12<<16)>>16);
$LOC1=$13;
label=5;break;
case 5:
var $15=$LOC1;
var $16=(($15)&65535);
var $17=$1;
var $18=(($17+18)|0);
HEAP16[(($18)>>1)]=$16;
var $19=HEAP32[((16016)>>2)];
var $20=$1;
var $21=(($20)|0);
HEAP32[(($21)>>2)]=$19;
var $22=$1;
HEAP32[((16016)>>2)]=$22;
var $23=$1;
var $24=(($23+18)|0);
var $25=HEAP16[(($24)>>1)];
var $26=(($25<<16)>>16);
var $27=($26|0)==2000;
if($27){label=7;break;}else{label=6;break;}
case 6:
label=8;break;
case 7:
_stackoverflow_II46IjNZztN9bmbxUD8dt8g();
label=8;break;
case 8:
STACKTOP=sp;return;
default: assert(0, "bad label: " + label);
}
}
function _isObjWithCache640($obj0,$subclass0,$cache0){
var label=0;
var sp=STACKTOP; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
label = 1;
while(1)switch(label){
case 1:
var $1;
var $2;
var $3;
var $result0;
$1=$obj0;
$2=$subclass0;
$3=$cache0;
$result0=0;
var $4=$1;
var $5=$2;
var $6=($4|0)==($5|0);
if($6){label=3;break;}else{label=2;break;}
case 2:
label=4;break;
case 3:
$result0=1;
label=14;break;
case 4:
var $10=$1;
var $11=(($10+8)|0);
var $12=HEAP32[(($11)>>2)];
var $13=$2;
var $14=($12|0)==($13|0);
if($14){label=6;break;}else{label=5;break;}
case 5:
label=7;break;
case 6:
$result0=1;
label=14;break;
case 7:
var $18=$3;
var $19=(($18)|0);
var $20=HEAP32[(($19)>>2)];
var $21=$1;
var $22=($20|0)==($21|0);
if($22){label=9;break;}else{label=8;break;}
case 8:
label=10;break;
case 9:
$result0=0;
label=14;break;
case 10:
var $26=$3;
var $27=(($26+4)|0);
var $28=HEAP32[(($27)>>2)];
var $29=$1;
var $30=($28|0)==($29|0);
if($30){label=12;break;}else{label=11;break;}
case 11:
label=13;break;
case 12:
$result0=1;
label=14;break;
case 13:
var $34=$1;
var $35=$2;
var $36=$3;
var $37=_isobjslowpath_k9bdq9bQE075AR7scLFt5wIg($34,$35,$36);
$result0=$37;
label=14;break;
case 14:
var $39=$result0;
STACKTOP=sp;return $39;
default: assert(0, "bad label: " + label);
}
}
function _popFrame641(){
var label=0;
var $1=HEAP32[((16016)>>2)];
var $2=(($1)|0);
var $3=HEAP32[(($2)>>2)];
HEAP32[((16016)>>2)]=$3;
return;
}
function _getconsole_aPMtAhz1iHoUZZ4VwqRiYwtest(){
var label=0;
var sp=STACKTOP; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
label = 1;
while(1)switch(label){
case 1:
var $result0;
var $tmp_RmwqMaNdOQRCgWWNtyeDSg;
var $emintres;
var $tht_J7sZ9cfg9b6aPwlbtPXqxfSA;
$result0=0;
$tht_J7sZ9cfg9b6aPwlbtPXqxfSA=0;
$emintres=0;
var $1=_emscripten_asm_const_int(1872);
$emintres=$1;
var $2=$emintres;
$tmp_RmwqMaNdOQRCgWWNtyeDSg=$2;
var $3=$tmp_RmwqMaNdOQRCgWWNtyeDSg;
var $4=($3|0)==0;
if($4){label=2;break;}else{label=3;break;}
case 2:
label=4;break;
case 3:
var $7=$tmp_RmwqMaNdOQRCgWWNtyeDSg;
var $8=_newembindobject_xXO0yFbUE5NorNCaLdlToAtest($7);
$result0=$8;
label=4;break;
case 4:
var $10=$result0;
STACKTOP=sp;return $10;
default: assert(0, "bad label: " + label);
}
}
function _log_4URQAhdfO7rE5Hgpgh8h9awtest($c0,$a0){
var label=0;
var sp=STACKTOP; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
var $1;
var $2;
var $LOC1;
var $emintres;
var $emintarg0;
var $emintarg1;
var $tht_xq0dJ4E8iXXSXMuGPdtySw;
$1=$c0;
$2=$a0;
$LOC1=0;
$tht_xq0dJ4E8iXXSXMuGPdtySw=0;
$emintres=0;
var $3=$1;
var $4=(($3)|0);
var $5=(($4+4)|0);
var $6=HEAP32[(($5)>>2)];
$emintarg0=$6;
var $7=$2;
var $8=(($7+8)|0);
var $9=(($8)|0);
$emintarg1=$9;
var $10=$emintarg0;
var $11=$emintarg1;
var $12=_emscripten_asm_const_int(2264,$10,$11);
$emintres=$12;
var $13=$emintres;
$LOC1=$13;
STACKTOP=sp;return;
}
function _newembindobject_xXO0yFbUE5NorNCaLdlToAtest($emref0){
var label=0;
var sp=STACKTOP; (assert((STACKTOP|0) < (STACK_MAX|0))|0);
var $1;
var $result0;
$1=$emref0;
$result0=0;
var $2=_newObj(21304,8);
var $3=$2;
$result0=$3;
var $4=$result0;
var $5=(($4)|0);
var $6=(($5)|0);
var $7=(($6)|0);
HEAP32[(($7)>>2)]=20088;
var $8=$1;
var $9=$result0;
var $10=(($9)|0);
var $11=(($10+4)|0);
HEAP32[(($11)>>2)]=$8;
var $12=$result0;
STACKTOP=sp;return $12;
}
function _malloc($bytes){
var label=0;
label = 1;
while(1)switch(label){
case 1:
var $1=($bytes>>>0)<245;
if($1){label=2;break;}else{label=78;break;}
case 2:
var $3=($bytes>>>0)<11;
if($3){var $8=16;label=4;break;}else{label=3;break;}
case 3:
var $5=((($bytes)+(11))|0);
var $6=$5&-8;
var $8=$6;label=4;break;
case 4:
var $8;
var $9=$8>>>3;
var $10=HEAP32[((19240)>>2)];
var $11=$10>>>($9>>>0);
var $12=$11&3;
var $13=($12|0)==0;
if($13){label=12;break;}else{label=5;break;}
case 5:
var $15=$11&1;
var $16=$15^1;
var $17=((($16)+($9))|0);
var $18=$17<<1;
var $19=((19280+($18<<2))|0);
var $20=$19;
var $_sum11=((($18)+(2))|0);
var $21=((19280+($_sum11<<2))|0);
var $22=HEAP32[(($21)>>2)];
var $23=(($22+8)|0);
var $24=HEAP32[(($23)>>2)];
var $25=($20|0)==($24|0);
if($25){label=6;break;}else{label=7;break;}
case 6:
var $27=1<<$17;
var $28=$27^-1;
var $29=$10&$28;
HEAP32[((19240)>>2)]=$29;
label=11;break;
case 7:
var $31=$24;
var $32=HEAP32[((19256)>>2)];
var $33=($31>>>0)<($32>>>0);
if($33){label=10;break;}else{label=8;break;}
case 8:
var $35=(($24+12)|0);
var $36=HEAP32[(($35)>>2)];
var $37=($36|0)==($22|0);
if($37){label=9;break;}else{label=10;break;}
case 9:
HEAP32[(($35)>>2)]=$20;
HEAP32[(($21)>>2)]=$24;
label=11;break;
case 10:
_abort();
throw "Reached an unreachable!";
case 11:
var $40=$17<<3;
var $41=$40|3;
var $42=(($22+4)|0);
HEAP32[(($42)>>2)]=$41;
var $43=$22;
var $_sum1314=$40|4;
var $44=(($43+$_sum1314)|0);
var $45=$44;
var $46=HEAP32[(($45)>>2)];
var $47=$46|1;
HEAP32[(($45)>>2)]=$47;
var $48=$23;
var $mem_0=$48;label=341;break;
case 12:
var $50=HEAP32[((19248)>>2)];
var $51=($8>>>0)>($50>>>0);
if($51){label=13;break;}else{var $nb_0=$8;label=160;break;}
case 13:
var $53=($11|0)==0;
if($53){label=27;break;}else{label=14;break;}
case 14:
var $55=$11<<$9;
var $56=2<<$9;
var $57=(((-$56))|0);
var $58=$56|$57;
var $59=$55&$58;
var $60=(((-$59))|0);
var $61=$59&$60;
var $62=((($61)-(1))|0);
var $63=$62>>>12;
var $64=$63&16;
var $65=$62>>>($64>>>0);
var $66=$65>>>5;
var $67=$66&8;
var $68=$67|$64;
var $69=$65>>>($67>>>0);
var $70=$69>>>2;
var $71=$70&4;
var $72=$68|$71;
var $73=$69>>>($71>>>0);
var $74=$73>>>1;
var $75=$74&2;
var $76=$72|$75;
var $77=$73>>>($75>>>0);
var $78=$77>>>1;
var $79=$78&1;
var $80=$76|$79;
var $81=$77>>>($79>>>0);
var $82=((($80)+($81))|0);
var $83=$82<<1;
var $84=((19280+($83<<2))|0);
var $85=$84;
var $_sum4=((($83)+(2))|0);
var $86=((19280+($_sum4<<2))|0);
var $87=HEAP32[(($86)>>2)];
var $88=(($87+8)|0);
var $89=HEAP32[(($88)>>2)];
var $90=($85|0)==($89|0);
if($90){label=15;break;}else{label=16;break;}
case 15:
var $92=1<<$82;
var $93=$92^-1;
var $94=$10&$93;
HEAP32[((19240)>>2)]=$94;
label=20;break;
case 16:
var $96=$89;
var $97=HEAP32[((19256)>>2)];
var $98=($96>>>0)<($97>>>0);
if($98){label=19;break;}else{label=17;break;}
case 17:
var $100=(($89+12)|0);
var $101=HEAP32[(($100)>>2)];
var $102=($101|0)==($87|0);
if($102){label=18;break;}else{label=19;break;}
case 18:
HEAP32[(($100)>>2)]=$85;
HEAP32[(($86)>>2)]=$89;
label=20;break;
case 19:
_abort();
throw "Reached an unreachable!";
case 20:
var $105=$82<<3;
var $106=((($105)-($8))|0);
var $107=$8|3;
var $108=(($87+4)|0);
HEAP32[(($108)>>2)]=$107;
var $109=$87;
var $110=(($109+$8)|0);
var $111=$110;
var $112=$106|1;
var $_sum67=$8|4;
var $113=(($109+$_sum67)|0);
var $114=$113;
HEAP32[(($114)>>2)]=$112;
var $115=(($109+$105)|0);
var $116=$115;
HEAP32[(($116)>>2)]=$106;
var $117=HEAP32[((19248)>>2)];
var $118=($117|0)==0;
if($118){label=26;break;}else{label=21;break;}
case 21:
var $120=HEAP32[((19260)>>2)];
var $121=$117>>>3;
var $122=$121<<1;
var $123=((19280+($122<<2))|0);
var $124=$123;
var $125=HEAP32[((19240)>>2)];
var $126=1<<$121;
var $127=$125&$126;
var $128=($127|0)==0;
if($128){label=22;break;}else{label=23;break;}
case 22:
var $130=$125|$126;
HEAP32[((19240)>>2)]=$130;
var $_sum9_pre=((($122)+(2))|0);
var $_pre=((19280+($_sum9_pre<<2))|0);
var $F4_0=$124;var $_pre_phi=$_pre;label=25;break;
case 23:
var $_sum10=((($122)+(2))|0);
var $132=((19280+($_sum10<<2))|0);
var $133=HEAP32[(($132)>>2)];
var $134=$133;
var $135=HEAP32[((19256)>>2)];
var $136=($134>>>0)<($135>>>0);
if($136){label=24;break;}else{var $F4_0=$133;var $_pre_phi=$132;label=25;break;}
case 24:
_abort();
throw "Reached an unreachable!";
case 25:
var $_pre_phi;
var $F4_0;
HEAP32[(($_pre_phi)>>2)]=$120;
var $139=(($F4_0+12)|0);
HEAP32[(($139)>>2)]=$120;
var $140=(($120+8)|0);
HEAP32[(($140)>>2)]=$F4_0;
var $141=(($120+12)|0);
HEAP32[(($141)>>2)]=$124;
label=26;break;
case 26:
HEAP32[((19248)>>2)]=$106;
HEAP32[((19260)>>2)]=$111;
var $143=$88;
var $mem_0=$143;label=341;break;
case 27:
var $145=HEAP32[((19244)>>2)];
var $146=($145|0)==0;
if($146){var $nb_0=$8;label=160;break;}else{label=28;break;}
case 28:
var $148=(((-$145))|0);
var $149=$145&$148;
var $150=((($149)-(1))|0);
var $151=$150>>>12;
var $152=$151&16;
var $153=$150>>>($152>>>0);
var $154=$153>>>5;
var $155=$154&8;
var $156=$155|$152;
var $157=$153>>>($155>>>0);
var $158=$157>>>2;
var $159=$158&4;
var $160=$156|$159;
var $161=$157>>>($159>>>0);
var $162=$161>>>1;
var $163=$162&2;
var $164=$160|$163;
var $165=$161>>>($163>>>0);
var $166=$165>>>1;
var $167=$166&1;
var $168=$164|$167;
var $169=$165>>>($167>>>0);
var $170=((($168)+($169))|0);
var $171=((19544+($170<<2))|0);
var $172=HEAP32[(($171)>>2)];
var $173=(($172+4)|0);
var $174=HEAP32[(($173)>>2)];
var $175=$174&-8;
var $176=((($175)-($8))|0);
var $t_0_i=$172;var $v_0_i=$172;var $rsize_0_i=$176;label=29;break;
case 29:
var $rsize_0_i;
var $v_0_i;
var $t_0_i;
var $178=(($t_0_i+16)|0);
var $179=HEAP32[(($178)>>2)];
var $180=($179|0)==0;
if($180){label=30;break;}else{var $185=$179;label=31;break;}
case 30:
var $182=(($t_0_i+20)|0);
var $183=HEAP32[(($182)>>2)];
var $184=($183|0)==0;
if($184){label=32;break;}else{var $185=$183;label=31;break;}
case 31:
var $185;
var $186=(($185+4)|0);
var $187=HEAP32[(($186)>>2)];
var $188=$187&-8;
var $189=((($188)-($8))|0);
var $190=($189>>>0)<($rsize_0_i>>>0);
var $_rsize_0_i=($190?$189:$rsize_0_i);
var $_v_0_i=($190?$185:$v_0_i);
var $t_0_i=$185;var $v_0_i=$_v_0_i;var $rsize_0_i=$_rsize_0_i;label=29;break;
case 32:
var $192=$v_0_i;
var $193=HEAP32[((19256)>>2)];
var $194=($192>>>0)<($193>>>0);
if($194){label=76;break;}else{label=33;break;}
case 33:
var $196=(($192+$8)|0);
var $197=$196;
var $198=($192>>>0)<($196>>>0);
if($198){label=34;break;}else{label=76;break;}
case 34:
var $200=(($v_0_i+24)|0);
var $201=HEAP32[(($200)>>2)];
var $202=(($v_0_i+12)|0);
var $203=HEAP32[(($202)>>2)];
var $204=($203|0)==($v_0_i|0);
if($204){label=40;break;}else{label=35;break;}
case 35:
var $206=(($v_0_i+8)|0);
var $207=HEAP32[(($206)>>2)];
var $208=$207;
var $209=($208>>>0)<($193>>>0);
if($209){label=39;break;}else{label=36;break;}
case 36:
var $211=(($207+12)|0);
var $212=HEAP32[(($211)>>2)];
var $213=($212|0)==($v_0_i|0);
if($213){label=37;break;}else{label=39;break;}
case 37:
var $215=(($203+8)|0);
var $216=HEAP32[(($215)>>2)];
var $217=($216|0)==($v_0_i|0);
if($217){label=38;break;}else{label=39;break;}
case 38:
HEAP32[(($211)>>2)]=$203;
HEAP32[(($215)>>2)]=$207;
var $R_1_i=$203;label=47;break;
case 39:
_abort();
throw "Reached an unreachable!";
case 40:
var $220=(($v_0_i+20)|0);
var $221=HEAP32[(($220)>>2)];
var $222=($221|0)==0;
if($222){label=41;break;}else{var $R_0_i=$221;var $RP_0_i=$220;label=42;break;}
case 41:
var $224=(($v_0_i+16)|0);
var $225=HEAP32[(($224)>>2)];
var $226=($225|0)==0;
if($226){var $R_1_i=0;label=47;break;}else{var $R_0_i=$225;var $RP_0_i=$224;label=42;break;}
case 42:
var $RP_0_i;
var $R_0_i;
var $227=(($R_0_i+20)|0);
var $228=HEAP32[(($227)>>2)];
var $229=($228|0)==0;
if($229){label=43;break;}else{var $R_0_i=$228;var $RP_0_i=$227;label=42;break;}
case 43:
var $231=(($R_0_i+16)|0);
var $232=HEAP32[(($231)>>2)];
var $233=($232|0)==0;
if($233){label=44;break;}else{var $R_0_i=$232;var $RP_0_i=$231;label=42;break;}
case 44:
var $235=$RP_0_i;
var $236=($235>>>0)<($193>>>0);
if($236){label=46;break;}else{label=45;break;}
case 45:
HEAP32[(($RP_0_i)>>2)]=0;
var $R_1_i=$R_0_i;label=47;break;
case 46:
_abort();
throw "Reached an unreachable!";
case 47:
var $R_1_i;
var $240=($201|0)==0;
if($240){label=67;break;}else{label=48;break;}
case 48:
var $242=(($v_0_i+28)|0);
var $243=HEAP32[(($242)>>2)];
var $244=((19544+($243<<2))|0);
var $245=HEAP32[(($244)>>2)];
var $246=($v_0_i|0)==($245|0);
if($246){label=49;break;}else{label=51;break;}
case 49:
HEAP32[(($244)>>2)]=$R_1_i;
var $cond_i=($R_1_i|0)==0;
if($cond_i){label=50;break;}else{label=57;break;}
case 50:
var $248=HEAP32[(($242)>>2)];
var $249=1<<$248;
var $250=$249^-1;
var $251=HEAP32[((19244)>>2)];
var $252=$251&$250;
HEAP32[((19244)>>2)]=$252;
label=67;break;
case 51:
var $254=$201;
var $255=HEAP32[((19256)>>2)];
var $256=($254>>>0)<($255>>>0);
if($256){label=55;break;}else{label=52;break;}
case 52:
var $258=(($201+16)|0);
var $259=HEAP32[(($258)>>2)];
var $260=($259|0)==($v_0_i|0);
if($260){label=53;break;}else{label=54;break;}
case 53:
HEAP32[(($258)>>2)]=$R_1_i;
label=56;break;
case 54:
var $263=(($201+20)|0);
HEAP32[(($263)>>2)]=$R_1_i;
label=56;break;
case 55:
_abort();
throw "Reached an unreachable!";
case 56:
var $266=($R_1_i|0)==0;
if($266){label=67;break;}else{label=57;break;}
case 57:
var $268=$R_1_i;
var $269=HEAP32[((19256)>>2)];
var $270=($268>>>0)<($269>>>0);
if($270){label=66;break;}else{label=58;break;}
case 58:
var $272=(($R_1_i+24)|0);
HEAP32[(($272)>>2)]=$201;
var $273=(($v_0_i+16)|0);
var $274=HEAP32[(($273)>>2)];
var $275=($274|0)==0;
if($275){label=62;break;}else{label=59;break;}
case 59:
var $277=$274;
var $278=HEAP32[((19256)>>2)];
var $279=($277>>>0)<($278>>>0);
if($279){label=61;break;}else{label=60;break;}
case 60:
var $281=(($R_1_i+16)|0);
HEAP32[(($281)>>2)]=$274;
var $282=(($274+24)|0);
HEAP32[(($282)>>2)]=$R_1_i;
label=62;break;
case 61:
_abort();
throw "Reached an unreachable!";
case 62:
var $285=(($v_0_i+20)|0);
var $286=HEAP32[(($285)>>2)];
var $287=($286|0)==0;
if($287){label=67;break;}else{label=63;break;}
case 63:
var $289=$286;
var $290=HEAP32[((19256)>>2)];
var $291=($289>>>0)<($290>>>0);
if($291){label=65;break;}else{label=64;break;}
case 64:
var $293=(($R_1_i+20)|0);
HEAP32[(($293)>>2)]=$286;
var $294=(($286+24)|0);
HEAP32[(($294)>>2)]=$R_1_i;
label=67;break;
case 65:
_abort();
throw "Reached an unreachable!";
case 66:
_abort();
throw "Reached an unreachable!";
case 67:
var $298=($rsize_0_i>>>0)<16;
if($298){label=68;break;}else{label=69;break;}
case 68:
var $300=((($rsize_0_i)+($8))|0);
var $301=$300|3;
var $302=(($v_0_i+4)|0);
HEAP32[(($302)>>2)]=$301;
var $_sum4_i=((($300)+(4))|0);
var $303=(($192+$_sum4_i)|0);
var $304=$303;
var $305=HEAP32[(($304)>>2)];
var $306=$305|1;
HEAP32[(($304)>>2)]=$306;
label=77;break;
case 69:
var $308=$8|3;
var $309=(($v_0_i+4)|0);
HEAP32[(($309)>>2)]=$308;
var $310=$rsize_0_i|1;
var $_sum_i41=$8|4;
var $311=(($192+$_sum_i41)|0);
var $312=$311;
HEAP32[(($312)>>2)]=$310;
var $_sum1_i=((($rsize_0_i)+($8))|0);
var $313=(($192+$_sum1_i)|0);
var $314=$313;
HEAP32[(($314)>>2)]=$rsize_0_i;
var $315=HEAP32[((19248)>>2)];
var $316=($315|0)==0;
if($316){label=75;break;}else{label=70;break;}
case 70:
var $318=HEAP32[((19260)>>2)];
var $319=$315>>>3;
var $320=$319<<1;
var $321=((19280+($320<<2))|0);
var $322=$321;
var $323=HEAP32[((19240)>>2)];
var $324=1<<$319;
var $325=$323&$324;
var $326=($325|0)==0;
if($326){label=71;break;}else{label=72;break;}
case 71:
var $328=$323|$324;
HEAP32[((19240)>>2)]=$328;
var $_sum2_pre_i=((($320)+(2))|0);
var $_pre_i=((19280+($_sum2_pre_i<<2))|0);
var $F1_0_i=$322;var $_pre_phi_i=$_pre_i;label=74;break;
case 72:
var $_sum3_i=((($320)+(2))|0);
var $330=((19280+($_sum3_i<<2))|0);
var $331=HEAP32[(($330)>>2)];
var $332=$331;
var $333=HEAP32[((19256)>>2)];
var $334=($332>>>0)<($333>>>0);
if($334){label=73;break;}else{var $F1_0_i=$331;var $_pre_phi_i=$330;label=74;break;}
case 73:
_abort();
throw "Reached an unreachable!";
case 74:
var $_pre_phi_i;
var $F1_0_i;
HEAP32[(($_pre_phi_i)>>2)]=$318;
var $337=(($F1_0_i+12)|0);
HEAP32[(($337)>>2)]=$318;
var $338=(($318+8)|0);
HEAP32[(($338)>>2)]=$F1_0_i;
var $339=(($318+12)|0);
HEAP32[(($339)>>2)]=$322;
label=75;break;
case 75:
HEAP32[((19248)>>2)]=$rsize_0_i;
HEAP32[((19260)>>2)]=$197;
label=77;break;
case 76:
_abort();
throw "Reached an unreachable!";
case 77:
var $342=(($v_0_i+8)|0);
var $343=$342;
var $mem_0=$343;label=341;break;
case 78:
var $345=($bytes>>>0)>4294967231;
if($345){var $nb_0=-1;label=160;break;}else{label=79;break;}
case 79:
var $347=((($bytes)+(11))|0);
var $348=$347&-8;
var $349=HEAP32[((19244)>>2)];
var $350=($349|0)==0;
if($350){var $nb_0=$348;label=160;break;}else{label=80;break;}
case 80:
var $352=(((-$348))|0);
var $353=$347>>>8;
var $354=($353|0)==0;
if($354){var $idx_0_i=0;label=83;break;}else{label=81;break;}
case 81:
var $356=($348>>>0)>16777215;
if($356){var $idx_0_i=31;label=83;break;}else{label=82;break;}
case 82:
var $358=((($353)+(1048320))|0);
var $359=$358>>>16;
var $360=$359&8;
var $361=$353<<$360;
var $362=((($361)+(520192))|0);
var $363=$362>>>16;
var $364=$363&4;
var $365=$364|$360;
var $366=$361<<$364;
var $367=((($366)+(245760))|0);
var $368=$367>>>16;
var $369=$368&2;
var $370=$365|$369;
var $371=(((14)-($370))|0);
var $372=$366<<$369;
var $373=$372>>>15;
var $374=((($371)+($373))|0);
var $375=$374<<1;
var $376=((($374)+(7))|0);
var $377=$348>>>($376>>>0);
var $378=$377&1;
var $379=$378|$375;
var $idx_0_i=$379;label=83;break;
case 83:
var $idx_0_i;
var $381=((19544+($idx_0_i<<2))|0);
var $382=HEAP32[(($381)>>2)];
var $383=($382|0)==0;
if($383){var $v_2_i=0;var $rsize_2_i=$352;var $t_1_i=0;label=90;break;}else{label=84;break;}
case 84:
var $385=($idx_0_i|0)==31;
if($385){var $390=0;label=86;break;}else{label=85;break;}
case 85:
var $387=$idx_0_i>>>1;
var $388=(((25)-($387))|0);
var $390=$388;label=86;break;
case 86:
var $390;
var $391=$348<<$390;
var $v_0_i18=0;var $rsize_0_i17=$352;var $t_0_i16=$382;var $sizebits_0_i=$391;var $rst_0_i=0;label=87;break;
case 87:
var $rst_0_i;
var $sizebits_0_i;
var $t_0_i16;
var $rsize_0_i17;
var $v_0_i18;
var $393=(($t_0_i16+4)|0);
var $394=HEAP32[(($393)>>2)];
var $395=$394&-8;
var $396=((($395)-($348))|0);
var $397=($396>>>0)<($rsize_0_i17>>>0);
if($397){label=88;break;}else{var $v_1_i=$v_0_i18;var $rsize_1_i=$rsize_0_i17;label=89;break;}
case 88:
var $399=($395|0)==($348|0);
if($399){var $v_2_i=$t_0_i16;var $rsize_2_i=$396;var $t_1_i=$t_0_i16;label=90;break;}else{var $v_1_i=$t_0_i16;var $rsize_1_i=$396;label=89;break;}
case 89:
var $rsize_1_i;
var $v_1_i;
var $401=(($t_0_i16+20)|0);
var $402=HEAP32[(($401)>>2)];
var $403=$sizebits_0_i>>>31;
var $404=(($t_0_i16+16+($403<<2))|0);
var $405=HEAP32[(($404)>>2)];
var $406=($402|0)==0;
var $407=($402|0)==($405|0);
var $or_cond21_i=$406|$407;
var $rst_1_i=($or_cond21_i?$rst_0_i:$402);
var $408=($405|0)==0;
var $409=$sizebits_0_i<<1;
if($408){var $v_2_i=$v_1_i;var $rsize_2_i=$rsize_1_i;var $t_1_i=$rst_1_i;label=90;break;}else{var $v_0_i18=$v_1_i;var $rsize_0_i17=$rsize_1_i;var $t_0_i16=$405;var $sizebits_0_i=$409;var $rst_0_i=$rst_1_i;label=87;break;}
case 90:
var $t_1_i;
var $rsize_2_i;
var $v_2_i;
var $410=($t_1_i|0)==0;
var $411=($v_2_i|0)==0;
var $or_cond_i=$410&$411;
if($or_cond_i){label=91;break;}else{var $t_2_ph_i=$t_1_i;label=93;break;}
case 91:
var $413=2<<$idx_0_i;
var $414=(((-$413))|0);
var $415=$413|$414;
var $416=$349&$415;
var $417=($416|0)==0;
if($417){var $nb_0=$348;label=160;break;}else{label=92;break;}
case 92:
var $419=(((-$416))|0);
var $420=$416&$419;
var $421=((($420)-(1))|0);
var $422=$421>>>12;
var $423=$422&16;
var $424=$421>>>($423>>>0);
var $425=$424>>>5;
var $426=$425&8;
var $427=$426|$423;
var $428=$424>>>($426>>>0);
var $429=$428>>>2;
var $430=$429&4;
var $431=$427|$430;
var $432=$428>>>($430>>>0);
var $433=$432>>>1;
var $434=$433&2;
var $435=$431|$434;
var $436=$432>>>($434>>>0);
var $437=$436>>>1;
var $438=$437&1;
var $439=$435|$438;
var $440=$436>>>($438>>>0);
var $441=((($439)+($440))|0);
var $442=((19544+($441<<2))|0);
var $443=HEAP32[(($442)>>2)];
var $t_2_ph_i=$443;label=93;break;
case 93:
var $t_2_ph_i;
var $444=($t_2_ph_i|0)==0;
if($444){var $rsize_3_lcssa_i=$rsize_2_i;var $v_3_lcssa_i=$v_2_i;label=96;break;}else{var $t_232_i=$t_2_ph_i;var $rsize_333_i=$rsize_2_i;var $v_334_i=$v_2_i;label=94;break;}
case 94:
var $v_334_i;
var $rsize_333_i;
var $t_232_i;
var $445=(($t_232_i+4)|0);
var $446=HEAP32[(($445)>>2)];
var $447=$446&-8;
var $448=((($447)-($348))|0);
var $449=($448>>>0)<($rsize_333_i>>>0);
var $_rsize_3_i=($449?$448:$rsize_333_i);
var $t_2_v_3_i=($449?$t_232_i:$v_334_i);
var $450=(($t_232_i+16)|0);
var $451=HEAP32[(($450)>>2)];
var $452=($451|0)==0;
if($452){label=95;break;}else{var $t_232_i=$451;var $rsize_333_i=$_rsize_3_i;var $v_334_i=$t_2_v_3_i;label=94;break;}
case 95:
var $453=(($t_232_i+20)|0);
var $454=HEAP32[(($453)>>2)];
var $455=($454|0)==0;
if($455){var $rsize_3_lcssa_i=$_rsize_3_i;var $v_3_lcssa_i=$t_2_v_3_i;label=96;break;}else{var $t_232_i=$454;var $rsize_333_i=$_rsize_3_i;var $v_334_i=$t_2_v_3_i;label=94;break;}
case 96:
var $v_3_lcssa_i;
var $rsize_3_lcssa_i;
var $456=($v_3_lcssa_i|0)==0;
if($456){var $nb_0=$348;label=160;break;}else{label=97;break;}
case 97:
var $458=HEAP32[((19248)>>2)];
var $459=((($458)-($348))|0);
var $460=($rsize_3_lcssa_i>>>0)<($459>>>0);
if($460){label=98;break;}else{var $nb_0=$348;label=160;break;}
case 98:
var $462=$v_3_lcssa_i;
var $463=HEAP32[((19256)>>2)];
var $464=($462>>>0)<($463>>>0);
if($464){label=158;break;}else{label=99;break;}
case 99:
var $466=(($462+$348)|0);
var $467=$466;
var $468=($462>>>0)<($466>>>0);
if($468){label=100;break;}else{label=158;break;}
case 100:
var $470=(($v_3_lcssa_i+24)|0);
var $471=HEAP32[(($470)>>2)];
var $472=(($v_3_lcssa_i+12)|0);
var $473=HEAP32[(($472)>>2)];
var $474=($473|0)==($v_3_lcssa_i|0);
if($474){label=106;break;}else{label=101;break;}
case 101:
var $476=(($v_3_lcssa_i+8)|0);
var $477=HEAP32[(($476)>>2)];
var $478=$477;
var $479=($478>>>0)<($463>>>0);
if($479){label=105;break;}else{label=102;break;}
case 102:
var $481=(($477+12)|0);
var $482=HEAP32[(($481)>>2)];
var $483=($482|0)==($v_3_lcssa_i|0);
if($483){label=103;break;}else{label=105;break;}
case 103:
var $485=(($473+8)|0);
var $486=HEAP32[(($485)>>2)];
var $487=($486|0)==($v_3_lcssa_i|0);
if($487){label=104;break;}else{label=105;break;}
case 104:
HEAP32[(($481)>>2)]=$473;
HEAP32[(($485)>>2)]=$477;
var $R_1_i22=$473;label=113;break;
case 105:
_abort();
throw "Reached an unreachable!";
case 106:
var $490=(($v_3_lcssa_i+20)|0);
var $491=HEAP32[(($490)>>2)];
var $492=($491|0)==0;
if($492){label=107;break;}else{var $R_0_i20=$491;var $RP_0_i19=$490;label=108;break;}
case 107:
var $494=(($v_3_lcssa_i+16)|0);
var $495=HEAP32[(($494)>>2)];
var $496=($495|0)==0;
if($496){var $R_1_i22=0;label=113;break;}else{var $R_0_i20=$495;var $RP_0_i19=$494;label=108;break;}
case 108:
var $RP_0_i19;
var $R_0_i20;
var $497=(($R_0_i20+20)|0);
var $498=HEAP32[(($497)>>2)];
var $499=($498|0)==0;
if($499){label=109;break;}else{var $R_0_i20=$498;var $RP_0_i19=$497;label=108;break;}
case 109:
var $501=(($R_0_i20+16)|0);
var $502=HEAP32[(($501)>>2)];
var $503=($502|0)==0;
if($503){label=110;break;}else{var $R_0_i20=$502;var $RP_0_i19=$501;label=108;break;}
case 110:
var $505=$RP_0_i19;
var $506=($505>>>0)<($463>>>0);
if($506){label=112;break;}else{label=111;break;}
case 111:
HEAP32[(($RP_0_i19)>>2)]=0;
var $R_1_i22=$R_0_i20;label=113;break;
case 112:
_abort();
throw "Reached an unreachable!";
case 113:
var $R_1_i22;
var $510=($471|0)==0;
if($510){label=133;break;}else{label=114;break;}
case 114:
var $512=(($v_3_lcssa_i+28)|0);
var $513=HEAP32[(($512)>>2)];
var $514=((19544+($513<<2))|0);
var $515=HEAP32[(($514)>>2)];
var $516=($v_3_lcssa_i|0)==($515|0);
if($516){label=115;break;}else{label=117;break;}
case 115:
HEAP32[(($514)>>2)]=$R_1_i22;
var $cond_i23=($R_1_i22|0)==0;
if($cond_i23){label=116;break;}else{label=123;break;}
case 116:
var $518=HEAP32[(($512)>>2)];
var $519=1<<$518;
var $520=$519^-1;
var $521=HEAP32[((19244)>>2)];
var $522=$521&$520;
HEAP32[((19244)>>2)]=$522;
label=133;break;
case 117:
var $524=$471;
var $525=HEAP32[((19256)>>2)];
var $526=($524>>>0)<($525>>>0);
if($526){label=121;break;}else{label=118;break;}
case 118:
var $528=(($471+16)|0);
var $529=HEAP32[(($528)>>2)];
var $530=($529|0)==($v_3_lcssa_i|0);
if($530){label=119;break;}else{label=120;break;}
case 119:
HEAP32[(($528)>>2)]=$R_1_i22;
label=122;break;
case 120:
var $533=(($471+20)|0);
HEAP32[(($533)>>2)]=$R_1_i22;
label=122;break;
case 121:
_abort();
throw "Reached an unreachable!";
case 122:
var $536=($R_1_i22|0)==0;
if($536){label=133;break;}else{label=123;break;}
case 123:
var $538=$R_1_i22;
var $539=HEAP32[((19256)>>2)];
var $540=($538>>>0)<($539>>>0);
if($540){label=132;break;}else{label=124;break;}
case 124:
var $542=(($R_1_i22+24)|0);
HEAP32[(($542)>>2)]=$471;
var $543=(($v_3_lcssa_i+16)|0);
var $544=HEAP32[(($543)>>2)];
var $545=($544|0)==0;
if($545){label=128;break;}else{label=125;break;}
case 125:
var $547=$544;
var $548=HEAP32[((19256)>>2)];
var $549=($547>>>0)<($548>>>0);
if($549){label=127;break;}else{label=126;break;}
case 126:
var $551=(($R_1_i22+16)|0);
HEAP32[(($551)>>2)]=$544;
var $552=(($544+24)|0);
HEAP32[(($552)>>2)]=$R_1_i22;
label=128;break;
case 127:
_abort();
throw "Reached an unreachable!";
case 128:
var $555=(($v_3_lcssa_i+20)|0);
var $556=HEAP32[(($555)>>2)];
var $557=($556|0)==0;
if($557){label=133;break;}else{label=129;break;}
case 129:
var $559=$556;
var $560=HEAP32[((19256)>>2)];
var $561=($559>>>0)<($560>>>0);
if($561){label=131;break;}else{label=130;break;}
case 130:
var $563=(($R_1_i22+20)|0);
HEAP32[(($563)>>2)]=$556;
var $564=(($556+24)|0);
HEAP32[(($564)>>2)]=$R_1_i22;
label=133;break;
case 131:
_abort();
throw "Reached an unreachable!";
case 132:
_abort();
throw "Reached an unreachable!";
case 133:
var $568=($rsize_3_lcssa_i>>>0)<16;
if($568){label=134;break;}else{label=135;break;}
case 134:
var $570=((($rsize_3_lcssa_i)+($348))|0);
var $571=$570|3;
var $572=(($v_3_lcssa_i+4)|0);
HEAP32[(($572)>>2)]=$571;
var $_sum19_i=((($570)+(4))|0);
var $573=(($462+$_sum19_i)|0);
var $574=$573;
var $575=HEAP32[(($574)>>2)];
var $576=$575|1;
HEAP32[(($574)>>2)]=$576;
label=159;break;
case 135:
var $578=$348|3;
var $579=(($v_3_lcssa_i+4)|0);
HEAP32[(($579)>>2)]=$578;
var $580=$rsize_3_lcssa_i|1;
var $_sum_i2540=$348|4;
var $581=(($462+$_sum_i2540)|0);
var $582=$581;
HEAP32[(($582)>>2)]=$580;
var $_sum1_i26=((($rsize_3_lcssa_i)+($348))|0);
var $583=(($462+$_sum1_i26)|0);
var $584=$583;
HEAP32[(($584)>>2)]=$rsize_3_lcssa_i;
var $585=$rsize_3_lcssa_i>>>3;
var $586=($rsize_3_lcssa_i>>>0)<256;
if($586){label=136;break;}else{label=141;break;}
case 136:
var $588=$585<<1;
var $589=((19280+($588<<2))|0);
var $590=$589;
var $591=HEAP32[((19240)>>2)];
var $592=1<<$585;
var $593=$591&$592;
var $594=($593|0)==0;
if($594){label=137;break;}else{label=138;break;}
case 137:
var $596=$591|$592;
HEAP32[((19240)>>2)]=$596;
var $_sum15_pre_i=((($588)+(2))|0);
var $_pre_i27=((19280+($_sum15_pre_i<<2))|0);
var $F5_0_i=$590;var $_pre_phi_i28=$_pre_i27;label=140;break;
case 138:
var $_sum18_i=((($588)+(2))|0);
var $598=((19280+($_sum18_i<<2))|0);
var $599=HEAP32[(($598)>>2)];
var $600=$599;
var $601=HEAP32[((19256)>>2)];
var $602=($600>>>0)<($601>>>0);
if($602){label=139;break;}else{var $F5_0_i=$599;var $_pre_phi_i28=$598;label=140;break;}
case 139:
_abort();
throw "Reached an unreachable!";
case 140:
var $_pre_phi_i28;
var $F5_0_i;
HEAP32[(($_pre_phi_i28)>>2)]=$467;
var $605=(($F5_0_i+12)|0);
HEAP32[(($605)>>2)]=$467;
var $_sum16_i=((($348)+(8))|0);
var $606=(($462+$_sum16_i)|0);
var $607=$606;
HEAP32[(($607)>>2)]=$F5_0_i;
var $_sum17_i=((($348)+(12))|0);
var $608=(($462+$_sum17_i)|0);
var $609=$608;
HEAP32[(($609)>>2)]=$590;
label=159;break;
case 141:
var $611=$466;
var $612=$rsize_3_lcssa_i>>>8;
var $613=($612|0)==0;
if($613){var $I7_0_i=0;label=144;break;}else{label=142;break;}
case 142:
var $615=($rsize_3_lcssa_i>>>0)>16777215;
if($615){var $I7_0_i=31;label=144;break;}else{label=143;break;}
case 143:
var $617=((($612)+(1048320))|0);
var $618=$617>>>16;
var $619=$618&8;
var $620=$612<<$619;
var $621=((($620)+(520192))|0);
var $622=$621>>>16;
var $623=$622&4;
var $624=$623|$619;
var $625=$620<<$623;
var $626=((($625)+(245760))|0);
var $627=$626>>>16;
var $628=$627&2;
var $629=$624|$628;
var $630=(((14)-($629))|0);
var $631=$625<<$628;
var $632=$631>>>15;
var $633=((($630)+($632))|0);
var $634=$633<<1;
var $635=((($633)+(7))|0);
var $636=$rsize_3_lcssa_i>>>($635>>>0);
var $637=$636&1;
var $638=$637|$634;
var $I7_0_i=$638;label=144;break;
case 144:
var $I7_0_i;
var $640=((19544+($I7_0_i<<2))|0);
var $_sum2_i=((($348)+(28))|0);
var $641=(($462+$_sum2_i)|0);
var $642=$641;
HEAP32[(($642)>>2)]=$I7_0_i;
var $_sum3_i29=((($348)+(16))|0);
var $643=(($462+$_sum3_i29)|0);
var $_sum4_i30=((($348)+(20))|0);
var $644=(($462+$_sum4_i30)|0);
var $645=$644;
HEAP32[(($645)>>2)]=0;
var $646=$643;
HEAP32[(($646)>>2)]=0;
var $647=HEAP32[((19244)>>2)];
var $648=1<<$I7_0_i;
var $649=$647&$648;
var $650=($649|0)==0;
if($650){label=145;break;}else{label=146;break;}
case 145:
var $652=$647|$648;
HEAP32[((19244)>>2)]=$652;
HEAP32[(($640)>>2)]=$611;
var $653=$640;
var $_sum5_i=((($348)+(24))|0);
var $654=(($462+$_sum5_i)|0);
var $655=$654;
HEAP32[(($655)>>2)]=$653;
var $_sum6_i=((($348)+(12))|0);
var $656=(($462+$_sum6_i)|0);
var $657=$656;
HEAP32[(($657)>>2)]=$611;
var $_sum7_i=((($348)+(8))|0);
var $658=(($462+$_sum7_i)|0);
var $659=$658;
HEAP32[(($659)>>2)]=$611;
label=159;break;
case 146:
var $661=HEAP32[(($640)>>2)];
var $662=($I7_0_i|0)==31;
if($662){var $667=0;label=148;break;}else{label=147;break;}
case 147:
var $664=$I7_0_i>>>1;
var $665=(((25)-($664))|0);
var $667=$665;label=148;break;
case 148:
var $667;
var $668=(($661+4)|0);
var $669=HEAP32[(($668)>>2)];
var $670=$669&-8;
var $671=($670|0)==($rsize_3_lcssa_i|0);
if($671){var $T_0_lcssa_i=$661;label=155;break;}else{label=149;break;}
case 149:
var $672=$rsize_3_lcssa_i<<$667;
var $T_028_i=$661;var $K12_029_i=$672;label=151;break;
case 150:
var $674=$K12_029_i<<1;
var $675=(($682+4)|0);
var $676=HEAP32[(($675)>>2)];
var $677=$676&-8;
var $678=($677|0)==($rsize_3_lcssa_i|0);
if($678){var $T_0_lcssa_i=$682;label=155;break;}else{var $T_028_i=$682;var $K12_029_i=$674;label=151;break;}
case 151:
var $K12_029_i;
var $T_028_i;
var $680=$K12_029_i>>>31;
var $681=(($T_028_i+16+($680<<2))|0);
var $682=HEAP32[(($681)>>2)];
var $683=($682|0)==0;
if($683){label=152;break;}else{label=150;break;}
case 152:
var $685=$681;
var $686=HEAP32[((19256)>>2)];
var $687=($685>>>0)<($686>>>0);
if($687){label=154;break;}else{label=153;break;}
case 153:
HEAP32[(($681)>>2)]=$611;
var $_sum12_i=((($348)+(24))|0);
var $689=(($462+$_sum12_i)|0);
var $690=$689;
HEAP32[(($690)>>2)]=$T_028_i;
var $_sum13_i=((($348)+(12))|0);
var $691=(($462+$_sum13_i)|0);
var $692=$691;
HEAP32[(($692)>>2)]=$611;
var $_sum14_i=((($348)+(8))|0);
var $693=(($462+$_sum14_i)|0);
var $694=$693;
HEAP32[(($694)>>2)]=$611;
label=159;break;
case 154:
_abort();
throw "Reached an unreachable!";
case 155:
var $T_0_lcssa_i;
var $696=(($T_0_lcssa_i+8)|0);
var $697=HEAP32[(($696)>>2)];
var $698=$T_0_lcssa_i;
var $699=HEAP32[((19256)>>2)];
var $700=($698>>>0)>=($699>>>0);
var $701=$697;
var $702=($701>>>0)>=($699>>>0);
var $or_cond26_i=$700&$702;
if($or_cond26_i){label=156;break;}else{label=157;break;}
case 156:
var $704=(($697+12)|0);
HEAP32[(($704)>>2)]=$611;
HEAP32[(($696)>>2)]=$611;
var $_sum9_i=((($348)+(8))|0);
var $705=(($462+$_sum9_i)|0);
var $706=$705;
HEAP32[(($706)>>2)]=$697;
var $_sum10_i=((($348)+(12))|0);
var $707=(($462+$_sum10_i)|0);
var $708=$707;
HEAP32[(($708)>>2)]=$T_0_lcssa_i;
var $_sum11_i=((($348)+(24))|0);
var $709=(($462+$_sum11_i)|0);
var $710=$709;
HEAP32[(($710)>>2)]=0;
label=159;break;
case 157:
_abort();
throw "Reached an unreachable!";
case 158:
_abort();
throw "Reached an unreachable!";
case 159:
var $712=(($v_3_lcssa_i+8)|0);
var $713=$712;
var $mem_0=$713;label=341;break;
case 160:
var $nb_0;
var $714=HEAP32[((19248)>>2)];
var $715=($714>>>0)<($nb_0>>>0);
if($715){label=165;break;}else{label=161;break;}
case 161:
var $717=((($714)-($nb_0))|0);
var $718=HEAP32[((19260)>>2)];
var $719=($717>>>0)>15;
if($719){label=162;break;}else{label=163;break;}
case 162:
var $721=$718;
var $722=(($721+$nb_0)|0);
var $723=$722;
HEAP32[((19260)>>2)]=$723;
HEAP32[((19248)>>2)]=$717;
var $724=$717|1;
var $_sum2=((($nb_0)+(4))|0);
var $725=(($721+$_sum2)|0);
var $726=$725;
HEAP32[(($726)>>2)]=$724;
var $727=(($721+$714)|0);
var $728=$727;
HEAP32[(($728)>>2)]=$717;
var $729=$nb_0|3;
var $730=(($718+4)|0);
HEAP32[(($730)>>2)]=$729;
label=164;break;
case 163:
HEAP32[((19248)>>2)]=0;
HEAP32[((19260)>>2)]=0;
var $732=$714|3;
var $733=(($718+4)|0);
HEAP32[(($733)>>2)]=$732;
var $734=$718;
var $_sum1=((($714)+(4))|0);
var $735=(($734+$_sum1)|0);
var $736=$735;
var $737=HEAP32[(($736)>>2)];
var $738=$737|1;
HEAP32[(($736)>>2)]=$738;
label=164;break;
case 164:
var $740=(($718+8)|0);
var $741=$740;
var $mem_0=$741;label=341;break;
case 165:
var $743=HEAP32[((19252)>>2)];
var $744=($743>>>0)>($nb_0>>>0);
if($744){label=166;break;}else{label=167;break;}
case 166:
var $746=((($743)-($nb_0))|0);
HEAP32[((19252)>>2)]=$746;
var $747=HEAP32[((19264)>>2)];
var $748=$747;
var $749=(($748+$nb_0)|0);
var $750=$749;
HEAP32[((19264)>>2)]=$750;
var $751=$746|1;
var $_sum=((($nb_0)+(4))|0);
var $752=(($748+$_sum)|0);
var $753=$752;
HEAP32[(($753)>>2)]=$751;
var $754=$nb_0|3;
var $755=(($747+4)|0);
HEAP32[(($755)>>2)]=$754;
var $756=(($747+8)|0);
var $757=$756;
var $mem_0=$757;label=341;break;
case 167:
var $759=HEAP32[((15648)>>2)];
var $760=($759|0)==0;
if($760){label=168;break;}else{label=171;break;}
case 168:
var $762=_sysconf(30);
var $763=((($762)-(1))|0);
var $764=$763&$762;
var $765=($764|0)==0;
if($765){label=170;break;}else{label=169;break;}
case 169:
_abort();
throw "Reached an unreachable!";
case 170:
HEAP32[((15656)>>2)]=$762;
HEAP32[((15652)>>2)]=$762;
HEAP32[((15660)>>2)]=-1;
HEAP32[((15664)>>2)]=-1;
HEAP32[((15668)>>2)]=0;
HEAP32[((19684)>>2)]=0;
var $767=_time(0);
var $768=$767&-16;
var $769=$768^1431655768;
HEAP32[((15648)>>2)]=$769;
label=171;break;
case 171:
var $771=((($nb_0)+(48))|0);
var $772=HEAP32[((15656)>>2)];
var $773=((($nb_0)+(47))|0);
var $774=((($772)+($773))|0);
var $775=(((-$772))|0);
var $776=$774&$775;
var $777=($776>>>0)>($nb_0>>>0);
if($777){label=172;break;}else{var $mem_0=0;label=341;break;}
case 172:
var $779=HEAP32[((19680)>>2)];
var $780=($779|0)==0;
if($780){label=174;break;}else{label=173;break;}
case 173:
var $782=HEAP32[((19672)>>2)];
var $783=((($782)+($776))|0);
var $784=($783>>>0)<=($782>>>0);
var $785=($783>>>0)>($779>>>0);
var $or_cond1_i=$784|$785;
if($or_cond1_i){var $mem_0=0;label=341;break;}else{label=174;break;}
case 174:
var $787=HEAP32[((19684)>>2)];
var $788=$787&4;
var $789=($788|0)==0;
if($789){label=175;break;}else{var $tsize_1_i=0;label=198;break;}
case 175:
var $791=HEAP32[((19264)>>2)];
var $792=($791|0)==0;
if($792){label=181;break;}else{label=176;break;}
case 176:
var $794=$791;
var $sp_0_i_i=19688;label=177;break;
case 177:
var $sp_0_i_i;
var $796=(($sp_0_i_i)|0);
var $797=HEAP32[(($796)>>2)];
var $798=($797>>>0)>($794>>>0);
if($798){label=179;break;}else{label=178;break;}
case 178:
var $800=(($sp_0_i_i+4)|0);
var $801=HEAP32[(($800)>>2)];
var $802=(($797+$801)|0);
var $803=($802>>>0)>($794>>>0);
if($803){label=180;break;}else{label=179;break;}
case 179:
var $805=(($sp_0_i_i+8)|0);
var $806=HEAP32[(($805)>>2)];
var $807=($806|0)==0;
if($807){label=181;break;}else{var $sp_0_i_i=$806;label=177;break;}
case 180:
var $808=($sp_0_i_i|0)==0;
if($808){label=181;break;}else{label=188;break;}
case 181:
var $809=_sbrk(0);
var $810=($809|0)==-1;
if($810){var $tsize_03141_i=0;label=197;break;}else{label=182;break;}
case 182:
var $812=$809;
var $813=HEAP32[((15652)>>2)];
var $814=((($813)-(1))|0);
var $815=$814&$812;
var $816=($815|0)==0;
if($816){var $ssize_0_i=$776;label=184;break;}else{label=183;break;}
case 183:
var $818=((($814)+($812))|0);
var $819=(((-$813))|0);
var $820=$818&$819;
var $821=((($776)-($812))|0);
var $822=((($821)+($820))|0);
var $ssize_0_i=$822;label=184;break;
case 184:
var $ssize_0_i;
var $824=HEAP32[((19672)>>2)];
var $825=((($824)+($ssize_0_i))|0);
var $826=($ssize_0_i>>>0)>($nb_0>>>0);
var $827=($ssize_0_i>>>0)<2147483647;
var $or_cond_i31=$826&$827;
if($or_cond_i31){label=185;break;}else{var $tsize_03141_i=0;label=197;break;}
case 185:
var $829=HEAP32[((19680)>>2)];
var $830=($829|0)==0;
if($830){label=187;break;}else{label=186;break;}
case 186:
var $832=($825>>>0)<=($824>>>0);
var $833=($825>>>0)>($829>>>0);
var $or_cond2_i=$832|$833;
if($or_cond2_i){var $tsize_03141_i=0;label=197;break;}else{label=187;break;}
case 187:
var $835=_sbrk($ssize_0_i);
var $836=($835|0)==($809|0);
if($836){var $br_0_i=$809;var $ssize_1_i=$ssize_0_i;label=190;break;}else{var $ssize_129_i=$ssize_0_i;var $br_030_i=$835;label=191;break;}
case 188:
var $838=HEAP32[((19252)>>2)];
var $839=((($774)-($838))|0);
var $840=$839&$775;
var $841=($840>>>0)<2147483647;
if($841){label=189;break;}else{var $tsize_03141_i=0;label=197;break;}
case 189:
var $843=_sbrk($840);
var $844=HEAP32[(($796)>>2)];
var $845=HEAP32[(($800)>>2)];
var $846=(($844+$845)|0);
var $847=($843|0)==($846|0);
if($847){var $br_0_i=$843;var $ssize_1_i=$840;label=190;break;}else{var $ssize_129_i=$840;var $br_030_i=$843;label=191;break;}
case 190:
var $ssize_1_i;
var $br_0_i;
var $849=($br_0_i|0)==-1;
if($849){var $tsize_03141_i=$ssize_1_i;label=197;break;}else{var $tsize_244_i=$ssize_1_i;var $tbase_245_i=$br_0_i;label=201;break;}
case 191:
var $br_030_i;
var $ssize_129_i;
var $850=(((-$ssize_129_i))|0);
var $851=($br_030_i|0)!=-1;
var $852=($ssize_129_i>>>0)<2147483647;
var $or_cond5_i=$851&$852;
var $853=($771>>>0)>($ssize_129_i>>>0);
var $or_cond4_i=$or_cond5_i&$853;
if($or_cond4_i){label=192;break;}else{var $ssize_2_i=$ssize_129_i;label=196;break;}
case 192:
var $855=HEAP32[((15656)>>2)];
var $856=((($773)-($ssize_129_i))|0);
var $857=((($856)+($855))|0);
var $858=(((-$855))|0);
var $859=$857&$858;
var $860=($859>>>0)<2147483647;
if($860){label=193;break;}else{var $ssize_2_i=$ssize_129_i;label=196;break;}
case 193:
var $862=_sbrk($859);
var $863=($862|0)==-1;
if($863){label=195;break;}else{label=194;break;}
case 194:
var $865=((($859)+($ssize_129_i))|0);
var $ssize_2_i=$865;label=196;break;
case 195:
var $866=_sbrk($850);
var $tsize_03141_i=0;label=197;break;
case 196:
var $ssize_2_i;
var $868=($br_030_i|0)==-1;
if($868){var $tsize_03141_i=0;label=197;break;}else{var $tsize_244_i=$ssize_2_i;var $tbase_245_i=$br_030_i;label=201;break;}
case 197:
var $tsize_03141_i;
var $869=HEAP32[((19684)>>2)];
var $870=$869|4;
HEAP32[((19684)>>2)]=$870;
var $tsize_1_i=$tsize_03141_i;label=198;break;
case 198:
var $tsize_1_i;
var $872=($776>>>0)<2147483647;
if($872){label=199;break;}else{label=340;break;}
case 199:
var $874=_sbrk($776);
var $875=_sbrk(0);
var $876=($874|0)!=-1;
var $877=($875|0)!=-1;
var $or_cond3_i=$876&$877;
var $878=($874>>>0)<($875>>>0);
var $or_cond6_i=$or_cond3_i&$878;
if($or_cond6_i){label=200;break;}else{label=340;break;}
case 200:
var $880=$875;
var $881=$874;
var $882=((($880)-($881))|0);
var $883=((($nb_0)+(40))|0);
var $884=($882>>>0)>($883>>>0);
var $_tsize_1_i=($884?$882:$tsize_1_i);
if($884){var $tsize_244_i=$_tsize_1_i;var $tbase_245_i=$874;label=201;break;}else{label=340;break;}
case 201:
var $tbase_245_i;
var $tsize_244_i;
var $885=HEAP32[((19672)>>2)];
var $886=((($885)+($tsize_244_i))|0);
HEAP32[((19672)>>2)]=$886;
var $887=HEAP32[((19676)>>2)];
var $888=($886>>>0)>($887>>>0);
if($888){label=202;break;}else{label=203;break;}
case 202:
HEAP32[((19676)>>2)]=$886;
label=203;break;
case 203:
var $891=HEAP32[((19264)>>2)];
var $892=($891|0)==0;
if($892){label=204;break;}else{var $sp_073_i=19688;label=211;break;}
case 204:
var $894=HEAP32[((19256)>>2)];
var $895=($894|0)==0;
var $896=($tbase_245_i>>>0)<($894>>>0);
var $or_cond8_i=$895|$896;
if($or_cond8_i){label=205;break;}else{label=206;break;}
case 205:
HEAP32[((19256)>>2)]=$tbase_245_i;
label=206;break;
case 206:
HEAP32[((19688)>>2)]=$tbase_245_i;
HEAP32[((19692)>>2)]=$tsize_244_i;
HEAP32[((19700)>>2)]=0;
var $899=HEAP32[((15648)>>2)];
HEAP32[((19276)>>2)]=$899;
HEAP32[((19272)>>2)]=-1;
var $i_02_i_i=0;label=207;break;
case 207:
var $i_02_i_i;
var $901=$i_02_i_i<<1;
var $902=((19280+($901<<2))|0);
var $903=$902;
var $_sum_i_i=((($901)+(3))|0);
var $904=((19280+($_sum_i_i<<2))|0);
HEAP32[(($904)>>2)]=$903;
var $_sum1_i_i=((($901)+(2))|0);
var $905=((19280+($_sum1_i_i<<2))|0);
HEAP32[(($905)>>2)]=$903;
var $906=((($i_02_i_i)+(1))|0);
var $907=($906>>>0)<32;
if($907){var $i_02_i_i=$906;label=207;break;}else{label=208;break;}
case 208:
var $908=((($tsize_244_i)-(40))|0);
var $909=(($tbase_245_i+8)|0);
var $910=$909;
var $911=$910&7;
var $912=($911|0)==0;
if($912){var $916=0;label=210;break;}else{label=209;break;}
case 209:
var $914=(((-$910))|0);
var $915=$914&7;
var $916=$915;label=210;break;
case 210:
var $916;
var $917=(($tbase_245_i+$916)|0);
var $918=$917;
var $919=((($908)-($916))|0);
HEAP32[((19264)>>2)]=$918;
HEAP32[((19252)>>2)]=$919;
var $920=$919|1;
var $_sum_i12_i=((($916)+(4))|0);
var $921=(($tbase_245_i+$_sum_i12_i)|0);
var $922=$921;
HEAP32[(($922)>>2)]=$920;
var $_sum2_i_i=((($tsize_244_i)-(36))|0);
var $923=(($tbase_245_i+$_sum2_i_i)|0);
var $924=$923;
HEAP32[(($924)>>2)]=40;
var $925=HEAP32[((15664)>>2)];
HEAP32[((19268)>>2)]=$925;
label=338;break;
case 211:
var $sp_073_i;
var $926=(($sp_073_i)|0);
var $927=HEAP32[(($926)>>2)];
var $928=(($sp_073_i+4)|0);
var $929=HEAP32[(($928)>>2)];
var $930=(($927+$929)|0);
var $931=($tbase_245_i|0)==($930|0);
if($931){label=213;break;}else{label=212;break;}
case 212:
var $933=(($sp_073_i+8)|0);
var $934=HEAP32[(($933)>>2)];
var $935=($934|0)==0;
if($935){label=218;break;}else{var $sp_073_i=$934;label=211;break;}
case 213:
var $936=(($sp_073_i+12)|0);
var $937=HEAP32[(($936)>>2)];
var $938=$937&8;
var $939=($938|0)==0;
if($939){label=214;break;}else{label=218;break;}
case 214:
var $941=$891;
var $942=($941>>>0)>=($927>>>0);
var $943=($941>>>0)<($tbase_245_i>>>0);
var $or_cond47_i=$942&$943;
if($or_cond47_i){label=215;break;}else{label=218;break;}
case 215:
var $945=((($929)+($tsize_244_i))|0);
HEAP32[(($928)>>2)]=$945;
var $946=HEAP32[((19264)>>2)];
var $947=HEAP32[((19252)>>2)];
var $948=((($947)+($tsize_244_i))|0);
var $949=$946;
var $950=(($946+8)|0);
var $951=$950;
var $952=$951&7;
var $953=($952|0)==0;
if($953){var $957=0;label=217;break;}else{label=216;break;}
case 216:
var $955=(((-$951))|0);
var $956=$955&7;
var $957=$956;label=217;break;
case 217:
var $957;
var $958=(($949+$957)|0);
var $959=$958;
var $960=((($948)-($957))|0);
HEAP32[((19264)>>2)]=$959;
HEAP32[((19252)>>2)]=$960;
var $961=$960|1;
var $_sum_i16_i=((($957)+(4))|0);
var $962=(($949+$_sum_i16_i)|0);
var $963=$962;
HEAP32[(($963)>>2)]=$961;
var $_sum2_i17_i=((($948)+(4))|0);
var $964=(($949+$_sum2_i17_i)|0);
var $965=$964;
HEAP32[(($965)>>2)]=40;
var $966=HEAP32[((15664)>>2)];
HEAP32[((19268)>>2)]=$966;
label=338;break;
case 218:
var $967=HEAP32[((19256)>>2)];
var $968=($tbase_245_i>>>0)<($967>>>0);
if($968){label=219;break;}else{label=220;break;}
case 219:
HEAP32[((19256)>>2)]=$tbase_245_i;
label=220;break;
case 220:
var $970=(($tbase_245_i+$tsize_244_i)|0);
var $sp_166_i=19688;label=221;break;
case 221:
var $sp_166_i;
var $972=(($sp_166_i)|0);
var $973=HEAP32[(($972)>>2)];
var $974=($973|0)==($970|0);
if($974){label=223;break;}else{label=222;break;}
case 222:
var $976=(($sp_166_i+8)|0);
var $977=HEAP32[(($976)>>2)];
var $978=($977|0)==0;
if($978){label=304;break;}else{var $sp_166_i=$977;label=221;break;}
case 223:
var $979=(($sp_166_i+12)|0);
var $980=HEAP32[(($979)>>2)];
var $981=$980&8;
var $982=($981|0)==0;
if($982){label=224;break;}else{label=304;break;}
case 224:
HEAP32[(($972)>>2)]=$tbase_245_i;
var $984=(($sp_166_i+4)|0);
var $985=HEAP32[(($984)>>2)];
var $986=((($985)+($tsize_244_i))|0);
HEAP32[(($984)>>2)]=$986;
var $987=(($tbase_245_i+8)|0);
var $988=$987;
var $989=$988&7;
var $990=($989|0)==0;
if($990){var $995=0;label=226;break;}else{label=225;break;}
case 225:
var $992=(((-$988))|0);
var $993=$992&7;
var $995=$993;label=226;break;
case 226:
var $995;
var $996=(($tbase_245_i+$995)|0);
var $_sum102_i=((($tsize_244_i)+(8))|0);
var $997=(($tbase_245_i+$_sum102_i)|0);
var $998=$997;
var $999=$998&7;
var $1000=($999|0)==0;
if($1000){var $1005=0;label=228;break;}else{label=227;break;}
case 227:
var $1002=(((-$998))|0);
var $1003=$1002&7;
var $1005=$1003;label=228;break;
case 228:
var $1005;
var $_sum103_i=((($1005)+($tsize_244_i))|0);
var $1006=(($tbase_245_i+$_sum103_i)|0);
var $1007=$1006;
var $1008=$1006;
var $1009=$996;
var $1010=((($1008)-($1009))|0);
var $_sum_i19_i=((($995)+($nb_0))|0);
var $1011=(($tbase_245_i+$_sum_i19_i)|0);
var $1012=$1011;
var $1013=((($1010)-($nb_0))|0);
var $1014=$nb_0|3;
var $_sum1_i20_i=((($995)+(4))|0);
var $1015=(($tbase_245_i+$_sum1_i20_i)|0);
var $1016=$1015;
HEAP32[(($1016)>>2)]=$1014;
var $1017=HEAP32[((19264)>>2)];
var $1018=($1007|0)==($1017|0);
if($1018){label=229;break;}else{label=230;break;}
case 229:
var $1020=HEAP32[((19252)>>2)];
var $1021=((($1020)+($1013))|0);
HEAP32[((19252)>>2)]=$1021;
HEAP32[((19264)>>2)]=$1012;
var $1022=$1021|1;
var $_sum46_i_i=((($_sum_i19_i)+(4))|0);
var $1023=(($tbase_245_i+$_sum46_i_i)|0);
var $1024=$1023;
HEAP32[(($1024)>>2)]=$1022;
label=303;break;
case 230:
var $1026=HEAP32[((19260)>>2)];
var $1027=($1007|0)==($1026|0);
if($1027){label=231;break;}else{label=232;break;}
case 231:
var $1029=HEAP32[((19248)>>2)];
var $1030=((($1029)+($1013))|0);
HEAP32[((19248)>>2)]=$1030;
HEAP32[((19260)>>2)]=$1012;
var $1031=$1030|1;
var $_sum44_i_i=((($_sum_i19_i)+(4))|0);
var $1032=(($tbase_245_i+$_sum44_i_i)|0);
var $1033=$1032;
HEAP32[(($1033)>>2)]=$1031;
var $_sum45_i_i=((($1030)+($_sum_i19_i))|0);
var $1034=(($tbase_245_i+$_sum45_i_i)|0);
var $1035=$1034;
HEAP32[(($1035)>>2)]=$1030;
label=303;break;
case 232:
var $_sum2_i21_i=((($tsize_244_i)+(4))|0);
var $_sum104_i=((($_sum2_i21_i)+($1005))|0);
var $1037=(($tbase_245_i+$_sum104_i)|0);
var $1038=$1037;
var $1039=HEAP32[(($1038)>>2)];
var $1040=$1039&3;
var $1041=($1040|0)==1;
if($1041){label=233;break;}else{var $oldfirst_0_i_i=$1007;var $qsize_0_i_i=$1013;label=280;break;}
case 233:
var $1043=$1039&-8;
var $1044=$1039>>>3;
var $1045=($1039>>>0)<256;
if($1045){label=234;break;}else{label=246;break;}
case 234:
var $_sum3940_i_i=$1005|8;
var $_sum114_i=((($_sum3940_i_i)+($tsize_244_i))|0);
var $1047=(($tbase_245_i+$_sum114_i)|0);
var $1048=$1047;
var $1049=HEAP32[(($1048)>>2)];
var $_sum41_i_i=((($tsize_244_i)+(12))|0);
var $_sum115_i=((($_sum41_i_i)+($1005))|0);
var $1050=(($tbase_245_i+$_sum115_i)|0);
var $1051=$1050;
var $1052=HEAP32[(($1051)>>2)];
var $1053=$1044<<1;
var $1054=((19280+($1053<<2))|0);
var $1055=$1054;
var $1056=($1049|0)==($1055|0);
if($1056){label=237;break;}else{label=235;break;}
case 235:
var $1058=$1049;
var $1059=HEAP32[((19256)>>2)];
var $1060=($1058>>>0)<($1059>>>0);
if($1060){label=245;break;}else{label=236;break;}
case 236:
var $1062=(($1049+12)|0);
var $1063=HEAP32[(($1062)>>2)];
var $1064=($1063|0)==($1007|0);
if($1064){label=237;break;}else{label=245;break;}
case 237:
var $1065=($1052|0)==($1049|0);
if($1065){label=238;break;}else{label=239;break;}
case 238:
var $1067=1<<$1044;
var $1068=$1067^-1;
var $1069=HEAP32[((19240)>>2)];
var $1070=$1069&$1068;
HEAP32[((19240)>>2)]=$1070;
label=279;break;
case 239:
var $1072=($1052|0)==($1055|0);
if($1072){label=240;break;}else{label=241;break;}
case 240:
var $_pre62_i_i=(($1052+8)|0);
var $_pre_phi63_i_i=$_pre62_i_i;label=243;break;
case 241:
var $1074=$1052;
var $1075=HEAP32[((19256)>>2)];
var $1076=($1074>>>0)<($1075>>>0);
if($1076){label=244;break;}else{label=242;break;}
case 242:
var $1078=(($1052+8)|0);
var $1079=HEAP32[(($1078)>>2)];
var $1080=($1079|0)==($1007|0);
if($1080){var $_pre_phi63_i_i=$1078;label=243;break;}else{label=244;break;}
case 243:
var $_pre_phi63_i_i;
var $1081=(($1049+12)|0);
HEAP32[(($1081)>>2)]=$1052;
HEAP32[(($_pre_phi63_i_i)>>2)]=$1049;
label=279;break;
case 244:
_abort();
throw "Reached an unreachable!";
case 245:
_abort();
throw "Reached an unreachable!";
case 246:
var $1083=$1006;
var $_sum34_i_i=$1005|24;
var $_sum105_i=((($_sum34_i_i)+($tsize_244_i))|0);
var $1084=(($tbase_245_i+$_sum105_i)|0);
var $1085=$1084;
var $1086=HEAP32[(($1085)>>2)];
var $_sum5_i_i=((($tsize_244_i)+(12))|0);
var $_sum106_i=((($_sum5_i_i)+($1005))|0);
var $1087=(($tbase_245_i+$_sum106_i)|0);
var $1088=$1087;
var $1089=HEAP32[(($1088)>>2)];
var $1090=($1089|0)==($1083|0);
if($1090){label=252;break;}else{label=247;break;}
case 247:
var $_sum3637_i_i=$1005|8;
var $_sum107_i=((($_sum3637_i_i)+($tsize_244_i))|0);
var $1092=(($tbase_245_i+$_sum107_i)|0);
var $1093=$1092;
var $1094=HEAP32[(($1093)>>2)];
var $1095=$1094;
var $1096=HEAP32[((19256)>>2)];
var $1097=($1095>>>0)<($1096>>>0);
if($1097){label=251;break;}else{label=248;break;}
case 248:
var $1099=(($1094+12)|0);
var $1100=HEAP32[(($1099)>>2)];
var $1101=($1100|0)==($1083|0);
if($1101){label=249;break;}else{label=251;break;}
case 249:
var $1103=(($1089+8)|0);
var $1104=HEAP32[(($1103)>>2)];
var $1105=($1104|0)==($1083|0);
if($1105){label=250;break;}else{label=251;break;}
case 250:
HEAP32[(($1099)>>2)]=$1089;
HEAP32[(($1103)>>2)]=$1094;
var $R_1_i_i=$1089;label=259;break;
case 251:
_abort();
throw "Reached an unreachable!";
case 252:
var $_sum67_i_i=$1005|16;
var $_sum112_i=((($_sum2_i21_i)+($_sum67_i_i))|0);
var $1108=(($tbase_245_i+$_sum112_i)|0);
var $1109=$1108;
var $1110=HEAP32[(($1109)>>2)];
var $1111=($1110|0)==0;
if($1111){label=253;break;}else{var $R_0_i_i=$1110;var $RP_0_i_i=$1109;label=254;break;}
case 253:
var $_sum113_i=((($_sum67_i_i)+($tsize_244_i))|0);
var $1113=(($tbase_245_i+$_sum113_i)|0);
var $1114=$1113;
var $1115=HEAP32[(($1114)>>2)];
var $1116=($1115|0)==0;
if($1116){var $R_1_i_i=0;label=259;break;}else{var $R_0_i_i=$1115;var $RP_0_i_i=$1114;label=254;break;}
case 254:
var $RP_0_i_i;
var $R_0_i_i;
var $1117=(($R_0_i_i+20)|0);
var $1118=HEAP32[(($1117)>>2)];
var $1119=($1118|0)==0;
if($1119){label=255;break;}else{var $R_0_i_i=$1118;var $RP_0_i_i=$1117;label=254;break;}
case 255:
var $1121=(($R_0_i_i+16)|0);
var $1122=HEAP32[(($1121)>>2)];
var $1123=($1122|0)==0;
if($1123){label=256;break;}else{var $R_0_i_i=$1122;var $RP_0_i_i=$1121;label=254;break;}
case 256:
var $1125=$RP_0_i_i;
var $1126=HEAP32[((19256)>>2)];
var $1127=($1125>>>0)<($1126>>>0);
if($1127){label=258;break;}else{label=257;break;}
case 257:
HEAP32[(($RP_0_i_i)>>2)]=0;
var $R_1_i_i=$R_0_i_i;label=259;break;
case 258:
_abort();
throw "Reached an unreachable!";
case 259:
var $R_1_i_i;
var $1131=($1086|0)==0;
if($1131){label=279;break;}else{label=260;break;}
case 260:
var $_sum31_i_i=((($tsize_244_i)+(28))|0);
var $_sum108_i=((($_sum31_i_i)+($1005))|0);
var $1133=(($tbase_245_i+$_sum108_i)|0);
var $1134=$1133;
var $1135=HEAP32[(($1134)>>2)];
var $1136=((19544+($1135<<2))|0);
var $1137=HEAP32[(($1136)>>2)];
var $1138=($1083|0)==($1137|0);
if($1138){label=261;break;}else{label=263;break;}
case 261:
HEAP32[(($1136)>>2)]=$R_1_i_i;
var $cond_i_i=($R_1_i_i|0)==0;
if($cond_i_i){label=262;break;}else{label=269;break;}
case 262:
var $1140=HEAP32[(($1134)>>2)];
var $1141=1<<$1140;
var $1142=$1141^-1;
var $1143=HEAP32[((19244)>>2)];
var $1144=$1143&$1142;
HEAP32[((19244)>>2)]=$1144;
label=279;break;
case 263:
var $1146=$1086;
var $1147=HEAP32[((19256)>>2)];
var $1148=($1146>>>0)<($1147>>>0);
if($1148){label=267;break;}else{label=264;break;}
case 264:
var $1150=(($1086+16)|0);
var $1151=HEAP32[(($1150)>>2)];
var $1152=($1151|0)==($1083|0);
if($1152){label=265;break;}else{label=266;break;}
case 265:
HEAP32[(($1150)>>2)]=$R_1_i_i;
label=268;break;
case 266:
var $1155=(($1086+20)|0);
HEAP32[(($1155)>>2)]=$R_1_i_i;
label=268;break;
case 267:
_abort();
throw "Reached an unreachable!";
case 268:
var $1158=($R_1_i_i|0)==0;
if($1158){label=279;break;}else{label=269;break;}
case 269:
var $1160=$R_1_i_i;
var $1161=HEAP32[((19256)>>2)];
var $1162=($1160>>>0)<($1161>>>0);
if($1162){label=278;break;}else{label=270;break;}
case 270:
var $1164=(($R_1_i_i+24)|0);
HEAP32[(($1164)>>2)]=$1086;
var $_sum3233_i_i=$1005|16;
var $_sum109_i=((($_sum3233_i_i)+($tsize_244_i))|0);
var $1165=(($tbase_245_i+$_sum109_i)|0);
var $1166=$1165;
var $1167=HEAP32[(($1166)>>2)];
var $1168=($1167|0)==0;
if($1168){label=274;break;}else{label=271;break;}
case 271:
var $1170=$1167;
var $1171=HEAP32[((19256)>>2)];
var $1172=($1170>>>0)<($1171>>>0);
if($1172){label=273;break;}else{label=272;break;}
case 272:
var $1174=(($R_1_i_i+16)|0);
HEAP32[(($1174)>>2)]=$1167;
var $1175=(($1167+24)|0);
HEAP32[(($1175)>>2)]=$R_1_i_i;
label=274;break;
case 273:
_abort();
throw "Reached an unreachable!";
case 274:
var $_sum110_i=((($_sum2_i21_i)+($_sum3233_i_i))|0);
var $1178=(($tbase_245_i+$_sum110_i)|0);
var $1179=$1178;
var $1180=HEAP32[(($1179)>>2)];
var $1181=($1180|0)==0;
if($1181){label=279;break;}else{label=275;break;}
case 275:
var $1183=$1180;
var $1184=HEAP32[((19256)>>2)];
var $1185=($1183>>>0)<($1184>>>0);
if($1185){label=277;break;}else{label=276;break;}
case 276:
var $1187=(($R_1_i_i+20)|0);
HEAP32[(($1187)>>2)]=$1180;
var $1188=(($1180+24)|0);
HEAP32[(($1188)>>2)]=$R_1_i_i;
label=279;break;
case 277:
_abort();
throw "Reached an unreachable!";
case 278:
_abort();
throw "Reached an unreachable!";
case 279:
var $_sum9_i_i=$1043|$1005;
var $_sum111_i=((($_sum9_i_i)+($tsize_244_i))|0);
var $1192=(($tbase_245_i+$_sum111_i)|0);
var $1193=$1192;
var $1194=((($1043)+($1013))|0);
var $oldfirst_0_i_i=$1193;var $qsize_0_i_i=$1194;label=280;break;
case 280:
var $qsize_0_i_i;
var $oldfirst_0_i_i;
var $1196=(($oldfirst_0_i_i+4)|0);
var $1197=HEAP32[(($1196)>>2)];
var $1198=$1197&-2;
HEAP32[(($1196)>>2)]=$1198;
var $1199=$qsize_0_i_i|1;
var $_sum10_i_i=((($_sum_i19_i)+(4))|0);
var $1200=(($tbase_245_i+$_sum10_i_i)|0);
var $1201=$1200;
HEAP32[(($1201)>>2)]=$1199;
var $_sum11_i_i=((($qsize_0_i_i)+($_sum_i19_i))|0);
var $1202=(($tbase_245_i+$_sum11_i_i)|0);
var $1203=$1202;
HEAP32[(($1203)>>2)]=$qsize_0_i_i;
var $1204=$qsize_0_i_i>>>3;
var $1205=($qsize_0_i_i>>>0)<256;
if($1205){label=281;break;}else{label=286;break;}
case 281:
var $1207=$1204<<1;
var $1208=((19280+($1207<<2))|0);
var $1209=$1208;
var $1210=HEAP32[((19240)>>2)];
var $1211=1<<$1204;
var $1212=$1210&$1211;
var $1213=($1212|0)==0;
if($1213){label=282;break;}else{label=283;break;}
case 282:
var $1215=$1210|$1211;
HEAP32[((19240)>>2)]=$1215;
var $_sum27_pre_i_i=((($1207)+(2))|0);
var $_pre_i22_i=((19280+($_sum27_pre_i_i<<2))|0);
var $F4_0_i_i=$1209;var $_pre_phi_i23_i=$_pre_i22_i;label=285;break;
case 283:
var $_sum30_i_i=((($1207)+(2))|0);
var $1217=((19280+($_sum30_i_i<<2))|0);
var $1218=HEAP32[(($1217)>>2)];
var $1219=$1218;
var $1220=HEAP32[((19256)>>2)];
var $1221=($1219>>>0)<($1220>>>0);
if($1221){label=284;break;}else{var $F4_0_i_i=$1218;var $_pre_phi_i23_i=$1217;label=285;break;}
case 284:
_abort();
throw "Reached an unreachable!";
case 285:
var $_pre_phi_i23_i;
var $F4_0_i_i;
HEAP32[(($_pre_phi_i23_i)>>2)]=$1012;
var $1224=(($F4_0_i_i+12)|0);
HEAP32[(($1224)>>2)]=$1012;
var $_sum28_i_i=((($_sum_i19_i)+(8))|0);
var $1225=(($tbase_245_i+$_sum28_i_i)|0);
var $1226=$1225;
HEAP32[(($1226)>>2)]=$F4_0_i_i;
var $_sum29_i_i=((($_sum_i19_i)+(12))|0);
var $1227=(($tbase_245_i+$_sum29_i_i)|0);
var $1228=$1227;
HEAP32[(($1228)>>2)]=$1209;
label=303;break;
case 286:
var $1230=$1011;
var $1231=$qsize_0_i_i>>>8;
var $1232=($1231|0)==0;
if($1232){var $I7_0_i_i=0;label=289;break;}else{label=287;break;}
case 287:
var $1234=($qsize_0_i_i>>>0)>16777215;
if($1234){var $I7_0_i_i=31;label=289;break;}else{label=288;break;}
case 288:
var $1236=((($1231)+(1048320))|0);
var $1237=$1236>>>16;
var $1238=$1237&8;
var $1239=$1231<<$1238;
var $1240=((($1239)+(520192))|0);
var $1241=$1240>>>16;
var $1242=$1241&4;
var $1243=$1242|$1238;
var $1244=$1239<<$1242;
var $1245=((($1244)+(245760))|0);
var $1246=$1245>>>16;
var $1247=$1246&2;
var $1248=$1243|$1247;
var $1249=(((14)-($1248))|0);
var $1250=$1244<<$1247;
var $1251=$1250>>>15;
var $1252=((($1249)+($1251))|0);
var $1253=$1252<<1;
var $1254=((($1252)+(7))|0);
var $1255=$qsize_0_i_i>>>($1254>>>0);
var $1256=$1255&1;
var $1257=$1256|$1253;
var $I7_0_i_i=$1257;label=289;break;
case 289:
var $I7_0_i_i;
var $1259=((19544+($I7_0_i_i<<2))|0);
var $_sum12_i24_i=((($_sum_i19_i)+(28))|0);
var $1260=(($tbase_245_i+$_sum12_i24_i)|0);
var $1261=$1260;
HEAP32[(($1261)>>2)]=$I7_0_i_i;
var $_sum13_i_i=((($_sum_i19_i)+(16))|0);
var $1262=(($tbase_245_i+$_sum13_i_i)|0);
var $_sum14_i_i=((($_sum_i19_i)+(20))|0);
var $1263=(($tbase_245_i+$_sum14_i_i)|0);
var $1264=$1263;
HEAP32[(($1264)>>2)]=0;
var $1265=$1262;
HEAP32[(($1265)>>2)]=0;
var $1266=HEAP32[((19244)>>2)];
var $1267=1<<$I7_0_i_i;
var $1268=$1266&$1267;
var $1269=($1268|0)==0;
if($1269){label=290;break;}else{label=291;break;}
case 290:
var $1271=$1266|$1267;
HEAP32[((19244)>>2)]=$1271;
HEAP32[(($1259)>>2)]=$1230;
var $1272=$1259;
var $_sum15_i_i=((($_sum_i19_i)+(24))|0);
var $1273=(($tbase_245_i+$_sum15_i_i)|0);
var $1274=$1273;
HEAP32[(($1274)>>2)]=$1272;
var $_sum16_i_i=((($_sum_i19_i)+(12))|0);
var $1275=(($tbase_245_i+$_sum16_i_i)|0);
var $1276=$1275;
HEAP32[(($1276)>>2)]=$1230;
var $_sum17_i_i=((($_sum_i19_i)+(8))|0);
var $1277=(($tbase_245_i+$_sum17_i_i)|0);
var $1278=$1277;
HEAP32[(($1278)>>2)]=$1230;
label=303;break;
case 291:
var $1280=HEAP32[(($1259)>>2)];
var $1281=($I7_0_i_i|0)==31;
if($1281){var $1286=0;label=293;break;}else{label=292;break;}
case 292:
var $1283=$I7_0_i_i>>>1;
var $1284=(((25)-($1283))|0);
var $1286=$1284;label=293;break;
case 293:
var $1286;
var $1287=(($1280+4)|0);
var $1288=HEAP32[(($1287)>>2)];
var $1289=$1288&-8;
var $1290=($1289|0)==($qsize_0_i_i|0);
if($1290){var $T_0_lcssa_i26_i=$1280;label=300;break;}else{label=294;break;}
case 294:
var $1291=$qsize_0_i_i<<$1286;
var $T_056_i_i=$1280;var $K8_057_i_i=$1291;label=296;break;
case 295:
var $1293=$K8_057_i_i<<1;
var $1294=(($1301+4)|0);
var $1295=HEAP32[(($1294)>>2)];
var $1296=$1295&-8;
var $1297=($1296|0)==($qsize_0_i_i|0);
if($1297){var $T_0_lcssa_i26_i=$1301;label=300;break;}else{var $T_056_i_i=$1301;var $K8_057_i_i=$1293;label=296;break;}
case 296:
var $K8_057_i_i;
var $T_056_i_i;
var $1299=$K8_057_i_i>>>31;
var $1300=(($T_056_i_i+16+($1299<<2))|0);
var $1301=HEAP32[(($1300)>>2)];
var $1302=($1301|0)==0;
if($1302){label=297;break;}else{label=295;break;}
case 297:
var $1304=$1300;
var $1305=HEAP32[((19256)>>2)];
var $1306=($1304>>>0)<($1305>>>0);
if($1306){label=299;break;}else{label=298;break;}
case 298:
HEAP32[(($1300)>>2)]=$1230;
var $_sum24_i_i=((($_sum_i19_i)+(24))|0);
var $1308=(($tbase_245_i+$_sum24_i_i)|0);
var $1309=$1308;
HEAP32[(($1309)>>2)]=$T_056_i_i;
var $_sum25_i_i=((($_sum_i19_i)+(12))|0);
var $1310=(($tbase_245_i+$_sum25_i_i)|0);
var $1311=$1310;
HEAP32[(($1311)>>2)]=$1230;
var $_sum26_i_i=((($_sum_i19_i)+(8))|0);
var $1312=(($tbase_245_i+$_sum26_i_i)|0);
var $1313=$1312;
HEAP32[(($1313)>>2)]=$1230;
label=303;break;
case 299:
_abort();
throw "Reached an unreachable!";
case 300:
var $T_0_lcssa_i26_i;
var $1315=(($T_0_lcssa_i26_i+8)|0);
var $1316=HEAP32[(($1315)>>2)];
var $1317=$T_0_lcssa_i26_i;
var $1318=HEAP32[((19256)>>2)];
var $1319=($1317>>>0)>=($1318>>>0);
var $1320=$1316;
var $1321=($1320>>>0)>=($1318>>>0);
var $or_cond_i27_i=$1319&$1321;
if($or_cond_i27_i){label=301;break;}else{label=302;break;}
case 301:
var $1323=(($1316+12)|0);
HEAP32[(($1323)>>2)]=$1230;
HEAP32[(($1315)>>2)]=$1230;
var $_sum21_i_i=((($_sum_i19_i)+(8))|0);
var $1324=(($tbase_245_i+$_sum21_i_i)|0);
var $1325=$1324;
HEAP32[(($1325)>>2)]=$1316;
var $_sum22_i_i=((($_sum_i19_i)+(12))|0);
var $1326=(($tbase_245_i+$_sum22_i_i)|0);
var $1327=$1326;
HEAP32[(($1327)>>2)]=$T_0_lcssa_i26_i;
var $_sum23_i_i=((($_sum_i19_i)+(24))|0);
var $1328=(($tbase_245_i+$_sum23_i_i)|0);
var $1329=$1328;
HEAP32[(($1329)>>2)]=0;
label=303;break;
case 302:
_abort();
throw "Reached an unreachable!";
case 303:
var $_sum1819_i_i=$995|8;
var $1330=(($tbase_245_i+$_sum1819_i_i)|0);
var $mem_0=$1330;label=341;break;
case 304:
var $1331=$891;
var $sp_0_i_i_i=19688;label=305;break;
case 305:
var $sp_0_i_i_i;
var $1333=(($sp_0_i_i_i)|0);
var $1334=HEAP32[(($1333)>>2)];
var $1335=($1334>>>0)>($1331>>>0);
if($1335){label=307;break;}else{label=306;break;}
case 306:
var $1337=(($sp_0_i_i_i+4)|0);
var $1338=HEAP32[(($1337)>>2)];
var $1339=(($1334+$1338)|0);
var $1340=($1339>>>0)>($1331>>>0);
if($1340){label=308;break;}else{label=307;break;}
case 307:
var $1342=(($sp_0_i_i_i+8)|0);
var $1343=HEAP32[(($1342)>>2)];
var $sp_0_i_i_i=$1343;label=305;break;
case 308:
var $_sum_i13_i=((($1338)-(47))|0);
var $_sum1_i14_i=((($1338)-(39))|0);
var $1344=(($1334+$_sum1_i14_i)|0);
var $1345=$1344;
var $1346=$1345&7;
var $1347=($1346|0)==0;
if($1347){var $1352=0;label=310;break;}else{label=309;break;}
case 309:
var $1349=(((-$1345))|0);
var $1350=$1349&7;
var $1352=$1350;label=310;break;
case 310:
var $1352;
var $_sum2_i15_i=((($_sum_i13_i)+($1352))|0);
var $1353=(($1334+$_sum2_i15_i)|0);
var $1354=(($891+16)|0);
var $1355=$1354;
var $1356=($1353>>>0)<($1355>>>0);
var $1357=($1356?$1331:$1353);
var $1358=(($1357+8)|0);
var $1359=$1358;
var $1360=((($tsize_244_i)-(40))|0);
var $1361=(($tbase_245_i+8)|0);
var $1362=$1361;
var $1363=$1362&7;
var $1364=($1363|0)==0;
if($1364){var $1368=0;label=312;break;}else{label=311;break;}
case 311:
var $1366=(((-$1362))|0);
var $1367=$1366&7;
var $1368=$1367;label=312;break;
case 312:
var $1368;
var $1369=(($tbase_245_i+$1368)|0);
var $1370=$1369;
var $1371=((($1360)-($1368))|0);
HEAP32[((19264)>>2)]=$1370;
HEAP32[((19252)>>2)]=$1371;
var $1372=$1371|1;
var $_sum_i_i_i=((($1368)+(4))|0);
var $1373=(($tbase_245_i+$_sum_i_i_i)|0);
var $1374=$1373;
HEAP32[(($1374)>>2)]=$1372;
var $_sum2_i_i_i=((($tsize_244_i)-(36))|0);
var $1375=(($tbase_245_i+$_sum2_i_i_i)|0);
var $1376=$1375;
HEAP32[(($1376)>>2)]=40;
var $1377=HEAP32[((15664)>>2)];
HEAP32[((19268)>>2)]=$1377;
var $1378=(($1357+4)|0);
var $1379=$1378;
HEAP32[(($1379)>>2)]=27;
assert(16 % 1 === 0);HEAP32[(($1358)>>2)]=HEAP32[((19688)>>2)];HEAP32[((($1358)+(4))>>2)]=HEAP32[((19692)>>2)];HEAP32[((($1358)+(8))>>2)]=HEAP32[((19696)>>2)];HEAP32[((($1358)+(12))>>2)]=HEAP32[((19700)>>2)];
HEAP32[((19688)>>2)]=$tbase_245_i;
HEAP32[((19692)>>2)]=$tsize_244_i;
HEAP32[((19700)>>2)]=0;
HEAP32[((19696)>>2)]=$1359;
var $1380=(($1357+28)|0);
var $1381=$1380;
HEAP32[(($1381)>>2)]=7;
var $1382=(($1357+32)|0);
var $1383=($1382>>>0)<($1339>>>0);
if($1383){var $1384=$1381;label=313;break;}else{label=314;break;}
case 313:
var $1384;
var $1385=(($1384+4)|0);
HEAP32[(($1385)>>2)]=7;
var $1386=(($1384+8)|0);
var $1387=$1386;
var $1388=($1387>>>0)<($1339>>>0);
if($1388){var $1384=$1385;label=313;break;}else{label=314;break;}
case 314:
var $1389=($1357|0)==($1331|0);
if($1389){label=338;break;}else{label=315;break;}
case 315:
var $1391=$1357;
var $1392=$891;
var $1393=((($1391)-($1392))|0);
var $1394=(($1331+$1393)|0);
var $_sum3_i_i=((($1393)+(4))|0);
var $1395=(($1331+$_sum3_i_i)|0);
var $1396=$1395;
var $1397=HEAP32[(($1396)>>2)];
var $1398=$1397&-2;
HEAP32[(($1396)>>2)]=$1398;
var $1399=$1393|1;
var $1400=(($891+4)|0);
HEAP32[(($1400)>>2)]=$1399;
var $1401=$1394;
HEAP32[(($1401)>>2)]=$1393;
var $1402=$1393>>>3;
var $1403=($1393>>>0)<256;
if($1403){label=316;break;}else{label=321;break;}
case 316:
var $1405=$1402<<1;
var $1406=((19280+($1405<<2))|0);
var $1407=$1406;
var $1408=HEAP32[((19240)>>2)];
var $1409=1<<$1402;
var $1410=$1408&$1409;
var $1411=($1410|0)==0;
if($1411){label=317;break;}else{label=318;break;}
case 317:
var $1413=$1408|$1409;
HEAP32[((19240)>>2)]=$1413;
var $_sum11_pre_i_i=((($1405)+(2))|0);
var $_pre_i_i=((19280+($_sum11_pre_i_i<<2))|0);
var $F_0_i_i=$1407;var $_pre_phi_i_i=$_pre_i_i;label=320;break;
case 318:
var $_sum12_i_i=((($1405)+(2))|0);
var $1415=((19280+($_sum12_i_i<<2))|0);
var $1416=HEAP32[(($1415)>>2)];
var $1417=$1416;
var $1418=HEAP32[((19256)>>2)];
var $1419=($1417>>>0)<($1418>>>0);
if($1419){label=319;break;}else{var $F_0_i_i=$1416;var $_pre_phi_i_i=$1415;label=320;break;}
case 319:
_abort();
throw "Reached an unreachable!";
case 320:
var $_pre_phi_i_i;
var $F_0_i_i;
HEAP32[(($_pre_phi_i_i)>>2)]=$891;
var $1422=(($F_0_i_i+12)|0);
HEAP32[(($1422)>>2)]=$891;
var $1423=(($891+8)|0);
HEAP32[(($1423)>>2)]=$F_0_i_i;
var $1424=(($891+12)|0);
HEAP32[(($1424)>>2)]=$1407;
label=338;break;
case 321:
var $1426=$891;
var $1427=$1393>>>8;
var $1428=($1427|0)==0;
if($1428){var $I1_0_i_i=0;label=324;break;}else{label=322;break;}
case 322:
var $1430=($1393>>>0)>16777215;
if($1430){var $I1_0_i_i=31;label=324;break;}else{label=323;break;}
case 323:
var $1432=((($1427)+(1048320))|0);
var $1433=$1432>>>16;
var $1434=$1433&8;
var $1435=$1427<<$1434;
var $1436=((($1435)+(520192))|0);
var $1437=$1436>>>16;
var $1438=$1437&4;
var $1439=$1438|$1434;
var $1440=$1435<<$1438;
var $1441=((($1440)+(245760))|0);
var $1442=$1441>>>16;
var $1443=$1442&2;
var $1444=$1439|$1443;
var $1445=(((14)-($1444))|0);
var $1446=$1440<<$1443;
var $1447=$1446>>>15;
var $1448=((($1445)+($1447))|0);
var $1449=$1448<<1;
var $1450=((($1448)+(7))|0);
var $1451=$1393>>>($1450>>>0);
var $1452=$1451&1;
var $1453=$1452|$1449;
var $I1_0_i_i=$1453;label=324;break;
case 324:
var $I1_0_i_i;
var $1455=((19544+($I1_0_i_i<<2))|0);
var $1456=(($891+28)|0);
var $I1_0_c_i_i=$I1_0_i_i;
HEAP32[(($1456)>>2)]=$I1_0_c_i_i;
var $1457=(($891+20)|0);
HEAP32[(($1457)>>2)]=0;
var $1458=(($891+16)|0);
HEAP32[(($1458)>>2)]=0;
var $1459=HEAP32[((19244)>>2)];
var $1460=1<<$I1_0_i_i;
var $1461=$1459&$1460;
var $1462=($1461|0)==0;
if($1462){label=325;break;}else{label=326;break;}
case 325:
var $1464=$1459|$1460;
HEAP32[((19244)>>2)]=$1464;
HEAP32[(($1455)>>2)]=$1426;
var $1465=(($891+24)|0);
var $_c_i_i=$1455;
HEAP32[(($1465)>>2)]=$_c_i_i;
var $1466=(($891+12)|0);
HEAP32[(($1466)>>2)]=$891;
var $1467=(($891+8)|0);
HEAP32[(($1467)>>2)]=$891;
label=338;break;
case 326:
var $1469=HEAP32[(($1455)>>2)];
var $1470=($I1_0_i_i|0)==31;
if($1470){var $1475=0;label=328;break;}else{label=327;break;}
case 327:
var $1472=$I1_0_i_i>>>1;
var $1473=(((25)-($1472))|0);
var $1475=$1473;label=328;break;
case 328:
var $1475;
var $1476=(($1469+4)|0);
var $1477=HEAP32[(($1476)>>2)];
var $1478=$1477&-8;
var $1479=($1478|0)==($1393|0);
if($1479){var $T_0_lcssa_i_i=$1469;label=335;break;}else{label=329;break;}
case 329:
var $1480=$1393<<$1475;
var $T_015_i_i=$1469;var $K2_016_i_i=$1480;label=331;break;
case 330:
var $1482=$K2_016_i_i<<1;
var $1483=(($1490+4)|0);
var $1484=HEAP32[(($1483)>>2)];
var $1485=$1484&-8;
var $1486=($1485|0)==($1393|0);
if($1486){var $T_0_lcssa_i_i=$1490;label=335;break;}else{var $T_015_i_i=$1490;var $K2_016_i_i=$1482;label=331;break;}
case 331:
var $K2_016_i_i;
var $T_015_i_i;
var $1488=$K2_016_i_i>>>31;
var $1489=(($T_015_i_i+16+($1488<<2))|0);
var $1490=HEAP32[(($1489)>>2)];
var $1491=($1490|0)==0;
if($1491){label=332;break;}else{label=330;break;}
case 332:
var $1493=$1489;
var $1494=HEAP32[((19256)>>2)];
var $1495=($1493>>>0)<($1494>>>0);
if($1495){label=334;break;}else{label=333;break;}
case 333:
HEAP32[(($1489)>>2)]=$1426;
var $1497=(($891+24)|0);
var $T_0_c8_i_i=$T_015_i_i;
HEAP32[(($1497)>>2)]=$T_0_c8_i_i;
var $1498=(($891+12)|0);
HEAP32[(($1498)>>2)]=$891;
var $1499=(($891+8)|0);
HEAP32[(($1499)>>2)]=$891;
label=338;break;
case 334:
_abort();
throw "Reached an unreachable!";
case 335:
var $T_0_lcssa_i_i;
var $1501=(($T_0_lcssa_i_i+8)|0);
var $1502=HEAP32[(($1501)>>2)];
var $1503=$T_0_lcssa_i_i;
var $1504=HEAP32[((19256)>>2)];
var $1505=($1503>>>0)>=($1504>>>0);
var $1506=$1502;
var $1507=($1506>>>0)>=($1504>>>0);
var $or_cond_i_i=$1505&$1507;
if($or_cond_i_i){label=336;break;}else{label=337;break;}
case 336:
var $1509=(($1502+12)|0);
HEAP32[(($1509)>>2)]=$1426;
HEAP32[(($1501)>>2)]=$1426;
var $1510=(($891+8)|0);
var $_c7_i_i=$1502;
HEAP32[(($1510)>>2)]=$_c7_i_i;
var $1511=(($891+12)|0);
var $T_0_c_i_i=$T_0_lcssa_i_i;
HEAP32[(($1511)>>2)]=$T_0_c_i_i;
var $1512=(($891+24)|0);
HEAP32[(($1512)>>2)]=0;
label=338;break;
case 337:
_abort();
throw "Reached an unreachable!";
case 338:
var $1513=HEAP32[((19252)>>2)];
var $1514=($1513>>>0)>($nb_0>>>0);
if($1514){label=339;break;}else{label=340;break;}
case 339:
var $1516=((($1513)-($nb_0))|0);
HEAP32[((19252)>>2)]=$1516;
var $1517=HEAP32[((19264)>>2)];
var $1518=$1517;
var $1519=(($1518+$nb_0)|0);
var $1520=$1519;
HEAP32[((19264)>>2)]=$1520;
var $1521=$1516|1;
var $_sum_i34=((($nb_0)+(4))|0);
var $1522=(($1518+$_sum_i34)|0);
var $1523=$1522;
HEAP32[(($1523)>>2)]=$1521;
var $1524=$nb_0|3;
var $1525=(($1517+4)|0);
HEAP32[(($1525)>>2)]=$1524;
var $1526=(($1517+8)|0);
var $1527=$1526;
var $mem_0=$1527;label=341;break;
case 340:
var $1528=___errno_location();
HEAP32[(($1528)>>2)]=12;
var $mem_0=0;label=341;break;
case 341:
var $mem_0;
return $mem_0;
default: assert(0, "bad label: " + label);
}
}
Module["_malloc"] = _malloc;
function _free($mem){
var label=0;
label = 1;
while(1)switch(label){
case 1:
var $1=($mem|0)==0;
if($1){label=140;break;}else{label=2;break;}
case 2:
var $3=((($mem)-(8))|0);
var $4=$3;
var $5=HEAP32[((19256)>>2)];
var $6=($3>>>0)<($5>>>0);
if($6){label=139;break;}else{label=3;break;}
case 3:
var $8=((($mem)-(4))|0);
var $9=$8;
var $10=HEAP32[(($9)>>2)];
var $11=$10&3;
var $12=($11|0)==1;
if($12){label=139;break;}else{label=4;break;}
case 4:
var $14=$10&-8;
var $_sum=((($14)-(8))|0);
var $15=(($mem+$_sum)|0);
var $16=$15;
var $17=$10&1;
var $18=($17|0)==0;
if($18){label=5;break;}else{var $p_0=$4;var $psize_0=$14;label=56;break;}
case 5:
var $20=$3;
var $21=HEAP32[(($20)>>2)];
var $22=($11|0)==0;
if($22){label=140;break;}else{label=6;break;}
case 6:
var $_sum3=(((-8)-($21))|0);
var $24=(($mem+$_sum3)|0);
var $25=$24;
var $26=((($21)+($14))|0);
var $27=($24>>>0)<($5>>>0);
if($27){label=139;break;}else{label=7;break;}
case 7:
var $29=HEAP32[((19260)>>2)];
var $30=($25|0)==($29|0);
if($30){label=54;break;}else{label=8;break;}
case 8:
var $32=$21>>>3;
var $33=($21>>>0)<256;
if($33){label=9;break;}else{label=21;break;}
case 9:
var $_sum47=((($_sum3)+(8))|0);
var $35=(($mem+$_sum47)|0);
var $36=$35;
var $37=HEAP32[(($36)>>2)];
var $_sum48=((($_sum3)+(12))|0);
var $38=(($mem+$_sum48)|0);
var $39=$38;
var $40=HEAP32[(($39)>>2)];
var $41=$32<<1;
var $42=((19280+($41<<2))|0);
var $43=$42;
var $44=($37|0)==($43|0);
if($44){label=12;break;}else{label=10;break;}
case 10:
var $46=$37;
var $47=($46>>>0)<($5>>>0);
if($47){label=20;break;}else{label=11;break;}
case 11:
var $49=(($37+12)|0);
var $50=HEAP32[(($49)>>2)];
var $51=($50|0)==($25|0);
if($51){label=12;break;}else{label=20;break;}
case 12:
var $52=($40|0)==($37|0);
if($52){label=13;break;}else{label=14;break;}
case 13:
var $54=1<<$32;
var $55=$54^-1;
var $56=HEAP32[((19240)>>2)];
var $57=$56&$55;
HEAP32[((19240)>>2)]=$57;
var $p_0=$25;var $psize_0=$26;label=56;break;
case 14:
var $59=($40|0)==($43|0);
if($59){label=15;break;}else{label=16;break;}
case 15:
var $_pre82=(($40+8)|0);
var $_pre_phi83=$_pre82;label=18;break;
case 16:
var $61=$40;
var $62=($61>>>0)<($5>>>0);
if($62){label=19;break;}else{label=17;break;}
case 17:
var $64=(($40+8)|0);
var $65=HEAP32[(($64)>>2)];
var $66=($65|0)==($25|0);
if($66){var $_pre_phi83=$64;label=18;break;}else{label=19;break;}
case 18:
var $_pre_phi83;
var $67=(($37+12)|0);
HEAP32[(($67)>>2)]=$40;
HEAP32[(($_pre_phi83)>>2)]=$37;
var $p_0=$25;var $psize_0=$26;label=56;break;
case 19:
_abort();
throw "Reached an unreachable!";
case 20:
_abort();
throw "Reached an unreachable!";
case 21:
var $69=$24;
var $_sum37=((($_sum3)+(24))|0);
var $70=(($mem+$_sum37)|0);
var $71=$70;
var $72=HEAP32[(($71)>>2)];
var $_sum38=((($_sum3)+(12))|0);
var $73=(($mem+$_sum38)|0);
var $74=$73;
var $75=HEAP32[(($74)>>2)];
var $76=($75|0)==($69|0);
if($76){label=27;break;}else{label=22;break;}
case 22:
var $_sum44=((($_sum3)+(8))|0);
var $78=(($mem+$_sum44)|0);
var $79=$78;
var $80=HEAP32[(($79)>>2)];
var $81=$80;
var $82=($81>>>0)<($5>>>0);
if($82){label=26;break;}else{label=23;break;}
case 23:
var $84=(($80+12)|0);
var $85=HEAP32[(($84)>>2)];
var $86=($85|0)==($69|0);
if($86){label=24;break;}else{label=26;break;}
case 24:
var $88=(($75+8)|0);
var $89=HEAP32[(($88)>>2)];
var $90=($89|0)==($69|0);
if($90){label=25;break;}else{label=26;break;}
case 25:
HEAP32[(($84)>>2)]=$75;
HEAP32[(($88)>>2)]=$80;
var $R_1=$75;label=34;break;
case 26:
_abort();
throw "Reached an unreachable!";
case 27:
var $_sum40=((($_sum3)+(20))|0);
var $93=(($mem+$_sum40)|0);
var $94=$93;
var $95=HEAP32[(($94)>>2)];
var $96=($95|0)==0;
if($96){label=28;break;}else{var $R_0=$95;var $RP_0=$94;label=29;break;}
case 28:
var $_sum39=((($_sum3)+(16))|0);
var $98=(($mem+$_sum39)|0);
var $99=$98;
var $100=HEAP32[(($99)>>2)];
var $101=($100|0)==0;
if($101){var $R_1=0;label=34;break;}else{var $R_0=$100;var $RP_0=$99;label=29;break;}
case 29:
var $RP_0;
var $R_0;
var $102=(($R_0+20)|0);
var $103=HEAP32[(($102)>>2)];
var $104=($103|0)==0;
if($104){label=30;break;}else{var $R_0=$103;var $RP_0=$102;label=29;break;}
case 30:
var $106=(($R_0+16)|0);
var $107=HEAP32[(($106)>>2)];
var $108=($107|0)==0;
if($108){label=31;break;}else{var $R_0=$107;var $RP_0=$106;label=29;break;}
case 31:
var $110=$RP_0;
var $111=($110>>>0)<($5>>>0);
if($111){label=33;break;}else{label=32;break;}
case 32:
HEAP32[(($RP_0)>>2)]=0;
var $R_1=$R_0;label=34;break;
case 33:
_abort();
throw "Reached an unreachable!";
case 34:
var $R_1;
var $115=($72|0)==0;
if($115){var $p_0=$25;var $psize_0=$26;label=56;break;}else{label=35;break;}
case 35:
var $_sum41=((($_sum3)+(28))|0);
var $117=(($mem+$_sum41)|0);
var $118=$117;
var $119=HEAP32[(($118)>>2)];
var $120=((19544+($119<<2))|0);
var $121=HEAP32[(($120)>>2)];
var $122=($69|0)==($121|0);
if($122){label=36;break;}else{label=38;break;}
case 36:
HEAP32[(($120)>>2)]=$R_1;
var $cond=($R_1|0)==0;
if($cond){label=37;break;}else{label=44;break;}
case 37:
var $124=HEAP32[(($118)>>2)];
var $125=1<<$124;
var $126=$125^-1;
var $127=HEAP32[((19244)>>2)];
var $128=$127&$126;
HEAP32[((19244)>>2)]=$128;
var $p_0=$25;var $psize_0=$26;label=56;break;
case 38:
var $130=$72;
var $131=HEAP32[((19256)>>2)];
var $132=($130>>>0)<($131>>>0);
if($132){label=42;break;}else{label=39;break;}
case 39:
var $134=(($72+16)|0);
var $135=HEAP32[(($134)>>2)];
var $136=($135|0)==($69|0);
if($136){label=40;break;}else{label=41;break;}
case 40:
HEAP32[(($134)>>2)]=$R_1;
label=43;break;
case 41:
var $139=(($72+20)|0);
HEAP32[(($139)>>2)]=$R_1;
label=43;break;
case 42:
_abort();
throw "Reached an unreachable!";
case 43:
var $142=($R_1|0)==0;
if($142){var $p_0=$25;var $psize_0=$26;label=56;break;}else{label=44;break;}
case 44:
var $144=$R_1;
var $145=HEAP32[((19256)>>2)];
var $146=($144>>>0)<($145>>>0);
if($146){label=53;break;}else{label=45;break;}
case 45:
var $148=(($R_1+24)|0);
HEAP32[(($148)>>2)]=$72;
var $_sum42=((($_sum3)+(16))|0);
var $149=(($mem+$_sum42)|0);
var $150=$149;
var $151=HEAP32[(($150)>>2)];
var $152=($151|0)==0;
if($152){label=49;break;}else{label=46;break;}
case 46:
var $154=$151;
var $155=HEAP32[((19256)>>2)];
var $156=($154>>>0)<($155>>>0);
if($156){label=48;break;}else{label=47;break;}
case 47:
var $158=(($R_1+16)|0);
HEAP32[(($158)>>2)]=$151;
var $159=(($151+24)|0);
HEAP32[(($159)>>2)]=$R_1;
label=49;break;
case 48:
_abort();
throw "Reached an unreachable!";
case 49:
var $_sum43=((($_sum3)+(20))|0);
var $162=(($mem+$_sum43)|0);
var $163=$162;
var $164=HEAP32[(($163)>>2)];
var $165=($164|0)==0;
if($165){var $p_0=$25;var $psize_0=$26;label=56;break;}else{label=50;break;}
case 50:
var $167=$164;
var $168=HEAP32[((19256)>>2)];
var $169=($167>>>0)<($168>>>0);
if($169){label=52;break;}else{label=51;break;}
case 51:
var $171=(($R_1+20)|0);
HEAP32[(($171)>>2)]=$164;
var $172=(($164+24)|0);
HEAP32[(($172)>>2)]=$R_1;
var $p_0=$25;var $psize_0=$26;label=56;break;
case 52:
_abort();
throw "Reached an unreachable!";
case 53:
_abort();
throw "Reached an unreachable!";
case 54:
var $_sum4=((($14)-(4))|0);
var $176=(($mem+$_sum4)|0);
var $177=$176;
var $178=HEAP32[(($177)>>2)];
var $179=$178&3;
var $180=($179|0)==3;
if($180){label=55;break;}else{var $p_0=$25;var $psize_0=$26;label=56;break;}
case 55:
HEAP32[((19248)>>2)]=$26;
var $182=HEAP32[(($177)>>2)];
var $183=$182&-2;
HEAP32[(($177)>>2)]=$183;
var $184=$26|1;
var $_sum35=((($_sum3)+(4))|0);
var $185=(($mem+$_sum35)|0);
var $186=$185;
HEAP32[(($186)>>2)]=$184;
var $187=$15;
HEAP32[(($187)>>2)]=$26;
label=140;break;
case 56:
var $psize_0;
var $p_0;
var $189=$p_0;
var $190=($189>>>0)<($15>>>0);
if($190){label=57;break;}else{label=139;break;}
case 57:
var $_sum34=((($14)-(4))|0);
var $192=(($mem+$_sum34)|0);
var $193=$192;
var $194=HEAP32[(($193)>>2)];
var $195=$194&1;
var $phitmp=($195|0)==0;
if($phitmp){label=139;break;}else{label=58;break;}
case 58:
var $197=$194&2;
var $198=($197|0)==0;
if($198){label=59;break;}else{label=112;break;}
case 59:
var $200=HEAP32[((19264)>>2)];
var $201=($16|0)==($200|0);
if($201){label=60;break;}else{label=62;break;}
case 60:
var $203=HEAP32[((19252)>>2)];
var $204=((($203)+($psize_0))|0);
HEAP32[((19252)>>2)]=$204;
HEAP32[((19264)>>2)]=$p_0;
var $205=$204|1;
var $206=(($p_0+4)|0);
HEAP32[(($206)>>2)]=$205;
var $207=HEAP32[((19260)>>2)];
var $208=($p_0|0)==($207|0);
if($208){label=61;break;}else{label=140;break;}
case 61:
HEAP32[((19260)>>2)]=0;
HEAP32[((19248)>>2)]=0;
label=140;break;
case 62:
var $211=HEAP32[((19260)>>2)];
var $212=($16|0)==($211|0);
if($212){label=63;break;}else{label=64;break;}
case 63:
var $214=HEAP32[((19248)>>2)];
var $215=((($214)+($psize_0))|0);
HEAP32[((19248)>>2)]=$215;
HEAP32[((19260)>>2)]=$p_0;
var $216=$215|1;
var $217=(($p_0+4)|0);
HEAP32[(($217)>>2)]=$216;
var $218=(($189+$215)|0);
var $219=$218;
HEAP32[(($219)>>2)]=$215;
label=140;break;
case 64:
var $221=$194&-8;
var $222=((($221)+($psize_0))|0);
var $223=$194>>>3;
var $224=($194>>>0)<256;
if($224){label=65;break;}else{label=77;break;}
case 65:
var $226=(($mem+$14)|0);
var $227=$226;
var $228=HEAP32[(($227)>>2)];
var $_sum2829=$14|4;
var $229=(($mem+$_sum2829)|0);
var $230=$229;
var $231=HEAP32[(($230)>>2)];
var $232=$223<<1;
var $233=((19280+($232<<2))|0);
var $234=$233;
var $235=($228|0)==($234|0);
if($235){label=68;break;}else{label=66;break;}
case 66:
var $237=$228;
var $238=HEAP32[((19256)>>2)];
var $239=($237>>>0)<($238>>>0);
if($239){label=76;break;}else{label=67;break;}
case 67:
var $241=(($228+12)|0);
var $242=HEAP32[(($241)>>2)];
var $243=($242|0)==($16|0);
if($243){label=68;break;}else{label=76;break;}
case 68:
var $244=($231|0)==($228|0);
if($244){label=69;break;}else{label=70;break;}
case 69:
var $246=1<<$223;
var $247=$246^-1;
var $248=HEAP32[((19240)>>2)];
var $249=$248&$247;
HEAP32[((19240)>>2)]=$249;
label=110;break;
case 70:
var $251=($231|0)==($234|0);
if($251){label=71;break;}else{label=72;break;}
case 71:
var $_pre80=(($231+8)|0);
var $_pre_phi81=$_pre80;label=74;break;
case 72:
var $253=$231;
var $254=HEAP32[((19256)>>2)];
var $255=($253>>>0)<($254>>>0);
if($255){label=75;break;}else{label=73;break;}
case 73:
var $257=(($231+8)|0);
var $258=HEAP32[(($257)>>2)];
var $259=($258|0)==($16|0);
if($259){var $_pre_phi81=$257;label=74;break;}else{label=75;break;}
case 74:
var $_pre_phi81;
var $260=(($228+12)|0);
HEAP32[(($260)>>2)]=$231;
HEAP32[(($_pre_phi81)>>2)]=$228;
label=110;break;
case 75:
_abort();
throw "Reached an unreachable!";
case 76:
_abort();
throw "Reached an unreachable!";
case 77:
var $262=$15;
var $_sum6=((($14)+(16))|0);
var $263=(($mem+$_sum6)|0);
var $264=$263;
var $265=HEAP32[(($264)>>2)];
var $_sum78=$14|4;
var $266=(($mem+$_sum78)|0);
var $267=$266;
var $268=HEAP32[(($267)>>2)];
var $269=($268|0)==($262|0);
if($269){label=83;break;}else{label=78;break;}
case 78:
var $271=(($mem+$14)|0);
var $272=$271;
var $273=HEAP32[(($272)>>2)];
var $274=$273;
var $275=HEAP32[((19256)>>2)];
var $276=($274>>>0)<($275>>>0);
if($276){label=82;break;}else{label=79;break;}
case 79:
var $278=(($273+12)|0);
var $279=HEAP32[(($278)>>2)];
var $280=($279|0)==($262|0);
if($280){label=80;break;}else{label=82;break;}
case 80:
var $282=(($268+8)|0);
var $283=HEAP32[(($282)>>2)];
var $284=($283|0)==($262|0);
if($284){label=81;break;}else{label=82;break;}
case 81:
HEAP32[(($278)>>2)]=$268;
HEAP32[(($282)>>2)]=$273;
var $R7_1=$268;label=90;break;
case 82:
_abort();
throw "Reached an unreachable!";
case 83:
var $_sum10=((($14)+(12))|0);
var $287=(($mem+$_sum10)|0);
var $288=$287;
var $289=HEAP32[(($288)>>2)];
var $290=($289|0)==0;
if($290){label=84;break;}else{var $R7_0=$289;var $RP9_0=$288;label=85;break;}
case 84:
var $_sum9=((($14)+(8))|0);
var $292=(($mem+$_sum9)|0);
var $293=$292;
var $294=HEAP32[(($293)>>2)];
var $295=($294|0)==0;
if($295){var $R7_1=0;label=90;break;}else{var $R7_0=$294;var $RP9_0=$293;label=85;break;}
case 85:
var $RP9_0;
var $R7_0;
var $296=(($R7_0+20)|0);
var $297=HEAP32[(($296)>>2)];
var $298=($297|0)==0;
if($298){label=86;break;}else{var $R7_0=$297;var $RP9_0=$296;label=85;break;}
case 86:
var $300=(($R7_0+16)|0);
var $301=HEAP32[(($300)>>2)];
var $302=($301|0)==0;
if($302){label=87;break;}else{var $R7_0=$301;var $RP9_0=$300;label=85;break;}
case 87:
var $304=$RP9_0;
var $305=HEAP32[((19256)>>2)];
var $306=($304>>>0)<($305>>>0);
if($306){label=89;break;}else{label=88;break;}
case 88:
HEAP32[(($RP9_0)>>2)]=0;
var $R7_1=$R7_0;label=90;break;
case 89:
_abort();
throw "Reached an unreachable!";
case 90:
var $R7_1;
var $310=($265|0)==0;
if($310){label=110;break;}else{label=91;break;}
case 91:
var $_sum21=((($14)+(20))|0);
var $312=(($mem+$_sum21)|0);
var $313=$312;
var $314=HEAP32[(($313)>>2)];
var $315=((19544+($314<<2))|0);
var $316=HEAP32[(($315)>>2)];
var $317=($262|0)==($316|0);
if($317){label=92;break;}else{label=94;break;}
case 92:
HEAP32[(($315)>>2)]=$R7_1;
var $cond69=($R7_1|0)==0;
if($cond69){label=93;break;}else{label=100;break;}
case 93:
var $319=HEAP32[(($313)>>2)];
var $320=1<<$319;
var $321=$320^-1;
var $322=HEAP32[((19244)>>2)];
var $323=$322&$321;
HEAP32[((19244)>>2)]=$323;
label=110;break;
case 94:
var $325=$265;
var $326=HEAP32[((19256)>>2)];
var $327=($325>>>0)<($326>>>0);
if($327){label=98;break;}else{label=95;break;}
case 95:
var $329=(($265+16)|0);
var $330=HEAP32[(($329)>>2)];
var $331=($330|0)==($262|0);
if($331){label=96;break;}else{label=97;break;}
case 96:
HEAP32[(($329)>>2)]=$R7_1;
label=99;break;
case 97:
var $334=(($265+20)|0);
HEAP32[(($334)>>2)]=$R7_1;
label=99;break;
case 98:
_abort();
throw "Reached an unreachable!";
case 99:
var $337=($R7_1|0)==0;
if($337){label=110;break;}else{label=100;break;}
case 100:
var $339=$R7_1;
var $340=HEAP32[((19256)>>2)];
var $341=($339>>>0)<($340>>>0);
if($341){label=109;break;}else{label=101;break;}
case 101:
var $343=(($R7_1+24)|0);
HEAP32[(($343)>>2)]=$265;
var $_sum22=((($14)+(8))|0);
var $344=(($mem+$_sum22)|0);
var $345=$344;
var $346=HEAP32[(($345)>>2)];
var $347=($346|0)==0;
if($347){label=105;break;}else{label=102;break;}
case 102:
var $349=$346;
var $350=HEAP32[((19256)>>2)];
var $351=($349>>>0)<($350>>>0);
if($351){label=104;break;}else{label=103;break;}
case 103:
var $353=(($R7_1+16)|0);
HEAP32[(($353)>>2)]=$346;
var $354=(($346+24)|0);
HEAP32[(($354)>>2)]=$R7_1;
label=105;break;
case 104:
_abort();
throw "Reached an unreachable!";
case 105:
var $_sum23=((($14)+(12))|0);
var $357=(($mem+$_sum23)|0);
var $358=$357;
var $359=HEAP32[(($358)>>2)];
var $360=($359|0)==0;
if($360){label=110;break;}else{label=106;break;}
case 106:
var $362=$359;
var $363=HEAP32[((19256)>>2)];
var $364=($362>>>0)<($363>>>0);
if($364){label=108;break;}else{label=107;break;}
case 107:
var $366=(($R7_1+20)|0);
HEAP32[(($366)>>2)]=$359;
var $367=(($359+24)|0);
HEAP32[(($367)>>2)]=$R7_1;
label=110;break;
case 108:
_abort();
throw "Reached an unreachable!";
case 109:
_abort();
throw "Reached an unreachable!";
case 110:
var $371=$222|1;
var $372=(($p_0+4)|0);
HEAP32[(($372)>>2)]=$371;
var $373=(($189+$222)|0);
var $374=$373;
HEAP32[(($374)>>2)]=$222;
var $375=HEAP32[((19260)>>2)];
var $376=($p_0|0)==($375|0);
if($376){label=111;break;}else{var $psize_1=$222;label=113;break;}
case 111:
HEAP32[((19248)>>2)]=$222;
label=140;break;
case 112:
var $379=$194&-2;
HEAP32[(($193)>>2)]=$379;
var $380=$psize_0|1;
var $381=(($p_0+4)|0);
HEAP32[(($381)>>2)]=$380;
var $382=(($189+$psize_0)|0);
var $383=$382;
HEAP32[(($383)>>2)]=$psize_0;
var $psize_1=$psize_0;label=113;break;
case 113:
var $psize_1;
var $385=$psize_1>>>3;
var $386=($psize_1>>>0)<256;
if($386){label=114;break;}else{label=119;break;}
case 114:
var $388=$385<<1;
var $389=((19280+($388<<2))|0);
var $390=$389;
var $391=HEAP32[((19240)>>2)];
var $392=1<<$385;
var $393=$391&$392;
var $394=($393|0)==0;
if($394){label=115;break;}else{label=116;break;}
case 115:
var $396=$391|$392;
HEAP32[((19240)>>2)]=$396;
var $_sum19_pre=((($388)+(2))|0);
var $_pre=((19280+($_sum19_pre<<2))|0);
var $F16_0=$390;var $_pre_phi=$_pre;label=118;break;
case 116:
var $_sum20=((($388)+(2))|0);
var $398=((19280+($_sum20<<2))|0);
var $399=HEAP32[(($398)>>2)];
var $400=$399;
var $401=HEAP32[((19256)>>2)];
var $402=($400>>>0)<($401>>>0);
if($402){label=117;break;}else{var $F16_0=$399;var $_pre_phi=$398;label=118;break;}
case 117:
_abort();
throw "Reached an unreachable!";
case 118:
var $_pre_phi;
var $F16_0;
HEAP32[(($_pre_phi)>>2)]=$p_0;
var $405=(($F16_0+12)|0);
HEAP32[(($405)>>2)]=$p_0;
var $406=(($p_0+8)|0);
HEAP32[(($406)>>2)]=$F16_0;
var $407=(($p_0+12)|0);
HEAP32[(($407)>>2)]=$390;
label=140;break;
case 119:
var $409=$p_0;
var $410=$psize_1>>>8;
var $411=($410|0)==0;
if($411){var $I18_0=0;label=122;break;}else{label=120;break;}
case 120:
var $413=($psize_1>>>0)>16777215;
if($413){var $I18_0=31;label=122;break;}else{label=121;break;}
case 121:
var $415=((($410)+(1048320))|0);
var $416=$415>>>16;
var $417=$416&8;
var $418=$410<<$417;
var $419=((($418)+(520192))|0);
var $420=$419>>>16;
var $421=$420&4;
var $422=$421|$417;
var $423=$418<<$421;
var $424=((($423)+(245760))|0);
var $425=$424>>>16;
var $426=$425&2;
var $427=$422|$426;
var $428=(((14)-($427))|0);
var $429=$423<<$426;
var $430=$429>>>15;
var $431=((($428)+($430))|0);
var $432=$431<<1;
var $433=((($431)+(7))|0);
var $434=$psize_1>>>($433>>>0);
var $435=$434&1;
var $436=$435|$432;
var $I18_0=$436;label=122;break;
case 122:
var $I18_0;
var $438=((19544+($I18_0<<2))|0);
var $439=(($p_0+28)|0);
var $I18_0_c=$I18_0;
HEAP32[(($439)>>2)]=$I18_0_c;
var $440=(($p_0+20)|0);
HEAP32[(($440)>>2)]=0;
var $441=(($p_0+16)|0);
HEAP32[(($441)>>2)]=0;
var $442=HEAP32[((19244)>>2)];
var $443=1<<$I18_0;
var $444=$442&$443;
var $445=($444|0)==0;
if($445){label=123;break;}else{label=124;break;}
case 123:
var $447=$442|$443;
HEAP32[((19244)>>2)]=$447;
HEAP32[(($438)>>2)]=$409;
var $448=(($p_0+24)|0);
var $_c=$438;
HEAP32[(($448)>>2)]=$_c;
var $449=(($p_0+12)|0);
HEAP32[(($449)>>2)]=$p_0;
var $450=(($p_0+8)|0);
HEAP32[(($450)>>2)]=$p_0;
label=136;break;
case 124:
var $452=HEAP32[(($438)>>2)];
var $453=($I18_0|0)==31;
if($453){var $458=0;label=126;break;}else{label=125;break;}
case 125:
var $455=$I18_0>>>1;
var $456=(((25)-($455))|0);
var $458=$456;label=126;break;
case 126:
var $458;
var $459=(($452+4)|0);
var $460=HEAP32[(($459)>>2)];
var $461=$460&-8;
var $462=($461|0)==($psize_1|0);
if($462){var $T_0_lcssa=$452;label=133;break;}else{label=127;break;}
case 127:
var $463=$psize_1<<$458;
var $T_072=$452;var $K19_073=$463;label=129;break;
case 128:
var $465=$K19_073<<1;
var $466=(($473+4)|0);
var $467=HEAP32[(($466)>>2)];
var $468=$467&-8;
var $469=($468|0)==($psize_1|0);
if($469){var $T_0_lcssa=$473;label=133;break;}else{var $T_072=$473;var $K19_073=$465;label=129;break;}
case 129:
var $K19_073;
var $T_072;
var $471=$K19_073>>>31;
var $472=(($T_072+16+($471<<2))|0);
var $473=HEAP32[(($472)>>2)];
var $474=($473|0)==0;
if($474){label=130;break;}else{label=128;break;}
case 130:
var $476=$472;
var $477=HEAP32[((19256)>>2)];
var $478=($476>>>0)<($477>>>0);
if($478){label=132;break;}else{label=131;break;}
case 131:
HEAP32[(($472)>>2)]=$409;
var $480=(($p_0+24)|0);
var $T_0_c16=$T_072;
HEAP32[(($480)>>2)]=$T_0_c16;
var $481=(($p_0+12)|0);
HEAP32[(($481)>>2)]=$p_0;
var $482=(($p_0+8)|0);
HEAP32[(($482)>>2)]=$p_0;
label=136;break;
case 132:
_abort();
throw "Reached an unreachable!";
case 133:
var $T_0_lcssa;
var $484=(($T_0_lcssa+8)|0);
var $485=HEAP32[(($484)>>2)];
var $486=$T_0_lcssa;
var $487=HEAP32[((19256)>>2)];
var $488=($486>>>0)>=($487>>>0);
var $489=$485;
var $490=($489>>>0)>=($487>>>0);
var $or_cond=$488&$490;
if($or_cond){label=134;break;}else{label=135;break;}
case 134:
var $492=(($485+12)|0);
HEAP32[(($492)>>2)]=$409;
HEAP32[(($484)>>2)]=$409;
var $493=(($p_0+8)|0);
var $_c15=$485;
HEAP32[(($493)>>2)]=$_c15;
var $494=(($p_0+12)|0);
var $T_0_c=$T_0_lcssa;
HEAP32[(($494)>>2)]=$T_0_c;
var $495=(($p_0+24)|0);
HEAP32[(($495)>>2)]=0;
label=136;break;
case 135:
_abort();
throw "Reached an unreachable!";
case 136:
var $497=HEAP32[((19272)>>2)];
var $498=((($497)-(1))|0);
HEAP32[((19272)>>2)]=$498;
var $499=($498|0)==0;
if($499){var $sp_0_in_i=19696;label=137;break;}else{label=140;break;}
case 137:
var $sp_0_in_i;
var $sp_0_i=HEAP32[(($sp_0_in_i)>>2)];
var $500=($sp_0_i|0)==0;
var $501=(($sp_0_i+8)|0);
if($500){label=138;break;}else{var $sp_0_in_i=$501;label=137;break;}
case 138:
HEAP32[((19272)>>2)]=-1;
label=140;break;
case 139:
_abort();
throw "Reached an unreachable!";
case 140:
return;
default: assert(0, "bad label: " + label);
}
}
Module["_free"] = _free;
// EMSCRIPTEN_END_FUNCS
function _i64Add(a, b, c, d) {
/*
x = a + b*2^32
y = c + d*2^32
result = l + h*2^32
*/
a = a|0; b = b|0; c = c|0; d = d|0;
var l = 0, h = 0;
l = (a + c)>>>0;
h = (b + d + (((l>>>0) < (a>>>0))|0))>>>0; // Add carry from low word to high word on overflow.
return tempRet0 = h,l|0;
}
function _i64Subtract(a, b, c, d) {
a = a|0; b = b|0; c = c|0; d = d|0;
var l = 0, h = 0;
l = (a - c)>>>0;
h = (b - d)>>>0;
h = (b - d - (((c>>>0) > (a>>>0))|0))>>>0; // Borrow one from high word to low word on underflow.
return tempRet0 = h,l|0;
}
function _bitshift64Shl(low, high, bits) {
low = low|0; high = high|0; bits = bits|0;
var ander = 0;
if ((bits|0) < 32) {
ander = ((1 << bits) - 1)|0;
tempRet0 = (high << bits) | ((low&(ander << (32 - bits))) >>> (32 - bits));
return low << bits;
}
tempRet0 = low << (bits - 32);
return 0;
}
function _bitshift64Lshr(low, high, bits) {
low = low|0; high = high|0; bits = bits|0;
var ander = 0;
if ((bits|0) < 32) {
ander = ((1 << bits) - 1)|0;
tempRet0 = high >>> bits;
return (low >>> bits) | ((high&ander) << (32 - bits));
}
tempRet0 = 0;
return (high >>> (bits - 32))|0;
}
function _bitshift64Ashr(low, high, bits) {
low = low|0; high = high|0; bits = bits|0;
var ander = 0;
if ((bits|0) < 32) {
ander = ((1 << bits) - 1)|0;
tempRet0 = high >> bits;
return (low >>> bits) | ((high&ander) << (32 - bits));
}
tempRet0 = (high|0) < 0 ? -1 : 0;
return (high >> (bits - 32))|0;
}
function _llvm_ctlz_i32(x) {
x = x|0;
var ret = 0;
ret = HEAP8[(((ctlz_i8)+(x >>> 24))|0)];
if ((ret|0) < 8) return ret|0;
ret = HEAP8[(((ctlz_i8)+((x >> 16)&0xff))|0)];
if ((ret|0) < 8) return (ret + 8)|0;
ret = HEAP8[(((ctlz_i8)+((x >> 8)&0xff))|0)];
if ((ret|0) < 8) return (ret + 16)|0;
return (HEAP8[(((ctlz_i8)+(x&0xff))|0)] + 24)|0;
}
/* PRE_ASM */ var ctlz_i8 = allocate([8,7,6,6,5,5,5,5,4,4,4,4,4,4,4,4,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], "i8", ALLOC_DYNAMIC);
function _llvm_cttz_i32(x) {
x = x|0;
var ret = 0;
ret = HEAP8[(((cttz_i8)+(x & 0xff))|0)];
if ((ret|0) < 8) return ret|0;
ret = HEAP8[(((cttz_i8)+((x >> 8)&0xff))|0)];
if ((ret|0) < 8) return (ret + 8)|0;
ret = HEAP8[(((cttz_i8)+((x >> 16)&0xff))|0)];
if ((ret|0) < 8) return (ret + 16)|0;
return (HEAP8[(((cttz_i8)+(x >>> 24))|0)] + 24)|0;
}
/* PRE_ASM */ var cttz_i8 = allocate([8,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,7,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0], "i8", ALLOC_DYNAMIC);
// ======== compiled code from system/lib/compiler-rt , see readme therein
function ___muldsi3($a, $b) {
$a = $a | 0;
$b = $b | 0;
var $1 = 0, $2 = 0, $3 = 0, $6 = 0, $8 = 0, $11 = 0, $12 = 0;
$1 = $a & 65535;
$2 = $b & 65535;
$3 = Math_imul($2, $1) | 0;
$6 = $a >>> 16;
$8 = ($3 >>> 16) + (Math_imul($2, $6) | 0) | 0;
$11 = $b >>> 16;
$12 = Math_imul($11, $1) | 0;
return (tempRet0 = (($8 >>> 16) + (Math_imul($11, $6) | 0) | 0) + ((($8 & 65535) + $12 | 0) >>> 16) | 0, 0 | ($8 + $12 << 16 | $3 & 65535)) | 0;
}
function ___divdi3($a$0, $a$1, $b$0, $b$1) {
$a$0 = $a$0 | 0;
$a$1 = $a$1 | 0;
$b$0 = $b$0 | 0;
$b$1 = $b$1 | 0;
var $1$0 = 0, $1$1 = 0, $2$0 = 0, $2$1 = 0, $4$0 = 0, $4$1 = 0, $6$0 = 0, $7$0 = 0, $7$1 = 0, $8$0 = 0, $10$0 = 0;
$1$0 = $a$1 >> 31 | (($a$1 | 0) < 0 ? -1 : 0) << 1;
$1$1 = (($a$1 | 0) < 0 ? -1 : 0) >> 31 | (($a$1 | 0) < 0 ? -1 : 0) << 1;
$2$0 = $b$1 >> 31 | (($b$1 | 0) < 0 ? -1 : 0) << 1;
$2$1 = (($b$1 | 0) < 0 ? -1 : 0) >> 31 | (($b$1 | 0) < 0 ? -1 : 0) << 1;
$4$0 = _i64Subtract($1$0 ^ $a$0, $1$1 ^ $a$1, $1$0, $1$1) | 0;
$4$1 = tempRet0;
$6$0 = _i64Subtract($2$0 ^ $b$0, $2$1 ^ $b$1, $2$0, $2$1) | 0;
$7$0 = $2$0 ^ $1$0;
$7$1 = $2$1 ^ $1$1;
$8$0 = ___udivmoddi4($4$0, $4$1, $6$0, tempRet0, 0) | 0;
$10$0 = _i64Subtract($8$0 ^ $7$0, tempRet0 ^ $7$1, $7$0, $7$1) | 0;
return (tempRet0 = tempRet0, $10$0) | 0;
}
function ___remdi3($a$0, $a$1, $b$0, $b$1) {
$a$0 = $a$0 | 0;
$a$1 = $a$1 | 0;
$b$0 = $b$0 | 0;
$b$1 = $b$1 | 0;
var $rem = 0, $1$0 = 0, $1$1 = 0, $2$0 = 0, $2$1 = 0, $4$0 = 0, $4$1 = 0, $6$0 = 0, $10$0 = 0, $10$1 = 0, __stackBase__ = 0;
__stackBase__ = STACKTOP;
STACKTOP = STACKTOP + 8 | 0;
$rem = __stackBase__ | 0;
$1$0 = $a$1 >> 31 | (($a$1 | 0) < 0 ? -1 : 0) << 1;
$1$1 = (($a$1 | 0) < 0 ? -1 : 0) >> 31 | (($a$1 | 0) < 0 ? -1 : 0) << 1;
$2$0 = $b$1 >> 31 | (($b$1 | 0) < 0 ? -1 : 0) << 1;
$2$1 = (($b$1 | 0) < 0 ? -1 : 0) >> 31 | (($b$1 | 0) < 0 ? -1 : 0) << 1;
$4$0 = _i64Subtract($1$0 ^ $a$0, $1$1 ^ $a$1, $1$0, $1$1) | 0;
$4$1 = tempRet0;
$6$0 = _i64Subtract($2$0 ^ $b$0, $2$1 ^ $b$1, $2$0, $2$1) | 0;
___udivmoddi4($4$0, $4$1, $6$0, tempRet0, $rem) | 0;
$10$0 = _i64Subtract(HEAP32[$rem >> 2] ^ $1$0, HEAP32[$rem + 4 >> 2] ^ $1$1, $1$0, $1$1) | 0;
$10$1 = tempRet0;
STACKTOP = __stackBase__;
return (tempRet0 = $10$1, $10$0) | 0;
}
function ___muldi3($a$0, $a$1, $b$0, $b$1) {
$a$0 = $a$0 | 0;
$a$1 = $a$1 | 0;
$b$0 = $b$0 | 0;
$b$1 = $b$1 | 0;
var $x_sroa_0_0_extract_trunc = 0, $y_sroa_0_0_extract_trunc = 0, $1$0 = 0, $1$1 = 0, $2 = 0;
$x_sroa_0_0_extract_trunc = $a$0;
$y_sroa_0_0_extract_trunc = $b$0;
$1$0 = ___muldsi3($x_sroa_0_0_extract_trunc, $y_sroa_0_0_extract_trunc) | 0;
$1$1 = tempRet0;
$2 = Math_imul($a$1, $y_sroa_0_0_extract_trunc) | 0;
return (tempRet0 = ((Math_imul($b$1, $x_sroa_0_0_extract_trunc) | 0) + $2 | 0) + $1$1 | $1$1 & 0, 0 | $1$0 & -1) | 0;
}
function ___udivdi3($a$0, $a$1, $b$0, $b$1) {
$a$0 = $a$0 | 0;
$a$1 = $a$1 | 0;
$b$0 = $b$0 | 0;
$b$1 = $b$1 | 0;
var $1$0 = 0;
$1$0 = ___udivmoddi4($a$0, $a$1, $b$0, $b$1, 0) | 0;
return (tempRet0 = tempRet0, $1$0) | 0;
}
function ___uremdi3($a$0, $a$1, $b$0, $b$1) {
$a$0 = $a$0 | 0;
$a$1 = $a$1 | 0;
$b$0 = $b$0 | 0;
$b$1 = $b$1 | 0;
var $rem = 0, __stackBase__ = 0;
__stackBase__ = STACKTOP;
STACKTOP = STACKTOP + 8 | 0;
$rem = __stackBase__ | 0;
___udivmoddi4($a$0, $a$1, $b$0, $b$1, $rem) | 0;
STACKTOP = __stackBase__;
return (tempRet0 = HEAP32[$rem + 4 >> 2] | 0, HEAP32[$rem >> 2] | 0) | 0;
}
function ___udivmoddi4($a$0, $a$1, $b$0, $b$1, $rem) {
$a$0 = $a$0 | 0;
$a$1 = $a$1 | 0;
$b$0 = $b$0 | 0;
$b$1 = $b$1 | 0;
$rem = $rem | 0;
var $n_sroa_0_0_extract_trunc = 0, $n_sroa_1_4_extract_shift$0 = 0, $n_sroa_1_4_extract_trunc = 0, $d_sroa_0_0_extract_trunc = 0, $d_sroa_1_4_extract_shift$0 = 0, $d_sroa_1_4_extract_trunc = 0, $4 = 0, $17 = 0, $37 = 0, $49 = 0, $51 = 0, $57 = 0, $58 = 0, $66 = 0, $78 = 0, $86 = 0, $88 = 0, $89 = 0, $91 = 0, $92 = 0, $95 = 0, $105 = 0, $117 = 0, $119 = 0, $125 = 0, $126 = 0, $130 = 0, $q_sroa_1_1_ph = 0, $q_sroa_0_1_ph = 0, $r_sroa_1_1_ph = 0, $r_sroa_0_1_ph = 0, $sr_1_ph = 0, $d_sroa_0_0_insert_insert99$0 = 0, $d_sroa_0_0_insert_insert99$1 = 0, $137$0 = 0, $137$1 = 0, $carry_0203 = 0, $sr_1202 = 0, $r_sroa_0_1201 = 0, $r_sroa_1_1200 = 0, $q_sroa_0_1199 = 0, $q_sroa_1_1198 = 0, $147 = 0, $149 = 0, $r_sroa_0_0_insert_insert42$0 = 0, $r_sroa_0_0_insert_insert42$1 = 0, $150$1 = 0, $151$0 = 0, $152 = 0, $154$0 = 0, $r_sroa_0_0_extract_trunc = 0, $r_sroa_1_4_extract_trunc = 0, $155 = 0, $carry_0_lcssa$0 = 0, $carry_0_lcssa$1 = 0, $r_sroa_0_1_lcssa = 0, $r_sroa_1_1_lcssa = 0, $q_sroa_0_1_lcssa = 0, $q_sroa_1_1_lcssa = 0, $q_sroa_0_0_insert_ext75$0 = 0, $q_sroa_0_0_insert_ext75$1 = 0, $q_sroa_0_0_insert_insert77$1 = 0, $_0$0 = 0, $_0$1 = 0;
$n_sroa_0_0_extract_trunc = $a$0;
$n_sroa_1_4_extract_shift$0 = $a$1;
$n_sroa_1_4_extract_trunc = $n_sroa_1_4_extract_shift$0;
$d_sroa_0_0_extract_trunc = $b$0;
$d_sroa_1_4_extract_shift$0 = $b$1;
$d_sroa_1_4_extract_trunc = $d_sroa_1_4_extract_shift$0;
if (($n_sroa_1_4_extract_trunc | 0) == 0) {
$4 = ($rem | 0) != 0;
if (($d_sroa_1_4_extract_trunc | 0) == 0) {
if ($4) {
HEAP32[$rem >> 2] = ($n_sroa_0_0_extract_trunc >>> 0) % ($d_sroa_0_0_extract_trunc >>> 0);
HEAP32[$rem + 4 >> 2] = 0;
}
$_0$1 = 0;
$_0$0 = ($n_sroa_0_0_extract_trunc >>> 0) / ($d_sroa_0_0_extract_trunc >>> 0) >>> 0;
return (tempRet0 = $_0$1, $_0$0) | 0;
} else {
if (!$4) {
$_0$1 = 0;
$_0$0 = 0;
return (tempRet0 = $_0$1, $_0$0) | 0;
}
HEAP32[$rem >> 2] = $a$0 & -1;
HEAP32[$rem + 4 >> 2] = $a$1 & 0;
$_0$1 = 0;
$_0$0 = 0;
return (tempRet0 = $_0$1, $_0$0) | 0;
}
}
$17 = ($d_sroa_1_4_extract_trunc | 0) == 0;
do {
if (($d_sroa_0_0_extract_trunc | 0) == 0) {
if ($17) {
if (($rem | 0) != 0) {
HEAP32[$rem >> 2] = ($n_sroa_1_4_extract_trunc >>> 0) % ($d_sroa_0_0_extract_trunc >>> 0);
HEAP32[$rem + 4 >> 2] = 0;
}
$_0$1 = 0;
$_0$0 = ($n_sroa_1_4_extract_trunc >>> 0) / ($d_sroa_0_0_extract_trunc >>> 0) >>> 0;
return (tempRet0 = $_0$1, $_0$0) | 0;
}
if (($n_sroa_0_0_extract_trunc | 0) == 0) {
if (($rem | 0) != 0) {
HEAP32[$rem >> 2] = 0;
HEAP32[$rem + 4 >> 2] = ($n_sroa_1_4_extract_trunc >>> 0) % ($d_sroa_1_4_extract_trunc >>> 0);
}
$_0$1 = 0;
$_0$0 = ($n_sroa_1_4_extract_trunc >>> 0) / ($d_sroa_1_4_extract_trunc >>> 0) >>> 0;
return (tempRet0 = $_0$1, $_0$0) | 0;
}
$37 = $d_sroa_1_4_extract_trunc - 1 | 0;
if (($37 & $d_sroa_1_4_extract_trunc | 0) == 0) {
if (($rem | 0) != 0) {
HEAP32[$rem >> 2] = 0 | $a$0 & -1;
HEAP32[$rem + 4 >> 2] = $37 & $n_sroa_1_4_extract_trunc | $a$1 & 0;
}
$_0$1 = 0;
$_0$0 = $n_sroa_1_4_extract_trunc >>> ((_llvm_cttz_i32($d_sroa_1_4_extract_trunc | 0) | 0) >>> 0);
return (tempRet0 = $_0$1, $_0$0) | 0;
}
$49 = _llvm_ctlz_i32($d_sroa_1_4_extract_trunc | 0) | 0;
$51 = $49 - (_llvm_ctlz_i32($n_sroa_1_4_extract_trunc | 0) | 0) | 0;
if ($51 >>> 0 <= 30) {
$57 = $51 + 1 | 0;
$58 = 31 - $51 | 0;
$sr_1_ph = $57;
$r_sroa_0_1_ph = $n_sroa_1_4_extract_trunc << $58 | $n_sroa_0_0_extract_trunc >>> ($57 >>> 0);
$r_sroa_1_1_ph = $n_sroa_1_4_extract_trunc >>> ($57 >>> 0);
$q_sroa_0_1_ph = 0;
$q_sroa_1_1_ph = $n_sroa_0_0_extract_trunc << $58;
break;
}
if (($rem | 0) == 0) {
$_0$1 = 0;
$_0$0 = 0;
return (tempRet0 = $_0$1, $_0$0) | 0;
}
HEAP32[$rem >> 2] = 0 | $a$0 & -1;
HEAP32[$rem + 4 >> 2] = $n_sroa_1_4_extract_shift$0 | $a$1 & 0;
$_0$1 = 0;
$_0$0 = 0;
return (tempRet0 = $_0$1, $_0$0) | 0;
} else {
if (!$17) {
$117 = _llvm_ctlz_i32($d_sroa_1_4_extract_trunc | 0) | 0;
$119 = $117 - (_llvm_ctlz_i32($n_sroa_1_4_extract_trunc | 0) | 0) | 0;
if ($119 >>> 0 <= 31) {
$125 = $119 + 1 | 0;
$126 = 31 - $119 | 0;
$130 = $119 - 31 >> 31;
$sr_1_ph = $125;
$r_sroa_0_1_ph = $n_sroa_0_0_extract_trunc >>> ($125 >>> 0) & $130 | $n_sroa_1_4_extract_trunc << $126;
$r_sroa_1_1_ph = $n_sroa_1_4_extract_trunc >>> ($125 >>> 0) & $130;
$q_sroa_0_1_ph = 0;
$q_sroa_1_1_ph = $n_sroa_0_0_extract_trunc << $126;
break;
}
if (($rem | 0) == 0) {
$_0$1 = 0;
$_0$0 = 0;
return (tempRet0 = $_0$1, $_0$0) | 0;
}
HEAP32[$rem >> 2] = 0 | $a$0 & -1;
HEAP32[$rem + 4 >> 2] = $n_sroa_1_4_extract_shift$0 | $a$1 & 0;
$_0$1 = 0;
$_0$0 = 0;
return (tempRet0 = $_0$1, $_0$0) | 0;
}
$66 = $d_sroa_0_0_extract_trunc - 1 | 0;
if (($66 & $d_sroa_0_0_extract_trunc | 0) != 0) {
$86 = (_llvm_ctlz_i32($d_sroa_0_0_extract_trunc | 0) | 0) + 33 | 0;
$88 = $86 - (_llvm_ctlz_i32($n_sroa_1_4_extract_trunc | 0) | 0) | 0;
$89 = 64 - $88 | 0;
$91 = 32 - $88 | 0;
$92 = $91 >> 31;
$95 = $88 - 32 | 0;
$105 = $95 >> 31;
$sr_1_ph = $88;
$r_sroa_0_1_ph = $91 - 1 >> 31 & $n_sroa_1_4_extract_trunc >>> ($95 >>> 0) | ($n_sroa_1_4_extract_trunc << $91 | $n_sroa_0_0_extract_trunc >>> ($88 >>> 0)) & $105;
$r_sroa_1_1_ph = $105 & $n_sroa_1_4_extract_trunc >>> ($88 >>> 0);
$q_sroa_0_1_ph = $n_sroa_0_0_extract_trunc << $89 & $92;
$q_sroa_1_1_ph = ($n_sroa_1_4_extract_trunc << $89 | $n_sroa_0_0_extract_trunc >>> ($95 >>> 0)) & $92 | $n_sroa_0_0_extract_trunc << $91 & $88 - 33 >> 31;
break;
}
if (($rem | 0) != 0) {
HEAP32[$rem >> 2] = $66 & $n_sroa_0_0_extract_trunc;
HEAP32[$rem + 4 >> 2] = 0;
}
if (($d_sroa_0_0_extract_trunc | 0) == 1) {
$_0$1 = $n_sroa_1_4_extract_shift$0 | $a$1 & 0;
$_0$0 = 0 | $a$0 & -1;
return (tempRet0 = $_0$1, $_0$0) | 0;
} else {
$78 = _llvm_cttz_i32($d_sroa_0_0_extract_trunc | 0) | 0;
$_0$1 = 0 | $n_sroa_1_4_extract_trunc >>> ($78 >>> 0);
$_0$0 = $n_sroa_1_4_extract_trunc << 32 - $78 | $n_sroa_0_0_extract_trunc >>> ($78 >>> 0) | 0;
return (tempRet0 = $_0$1, $_0$0) | 0;
}
}
} while (0);
if (($sr_1_ph | 0) == 0) {
$q_sroa_1_1_lcssa = $q_sroa_1_1_ph;
$q_sroa_0_1_lcssa = $q_sroa_0_1_ph;
$r_sroa_1_1_lcssa = $r_sroa_1_1_ph;
$r_sroa_0_1_lcssa = $r_sroa_0_1_ph;
$carry_0_lcssa$1 = 0;
$carry_0_lcssa$0 = 0;
} else {
$d_sroa_0_0_insert_insert99$0 = 0 | $b$0 & -1;
$d_sroa_0_0_insert_insert99$1 = $d_sroa_1_4_extract_shift$0 | $b$1 & 0;
$137$0 = _i64Add($d_sroa_0_0_insert_insert99$0, $d_sroa_0_0_insert_insert99$1, -1, -1) | 0;
$137$1 = tempRet0;
$q_sroa_1_1198 = $q_sroa_1_1_ph;
$q_sroa_0_1199 = $q_sroa_0_1_ph;
$r_sroa_1_1200 = $r_sroa_1_1_ph;
$r_sroa_0_1201 = $r_sroa_0_1_ph;
$sr_1202 = $sr_1_ph;
$carry_0203 = 0;
while (1) {
$147 = $q_sroa_0_1199 >>> 31 | $q_sroa_1_1198 << 1;
$149 = $carry_0203 | $q_sroa_0_1199 << 1;
$r_sroa_0_0_insert_insert42$0 = 0 | ($r_sroa_0_1201 << 1 | $q_sroa_1_1198 >>> 31);
$r_sroa_0_0_insert_insert42$1 = $r_sroa_0_1201 >>> 31 | $r_sroa_1_1200 << 1 | 0;
_i64Subtract($137$0, $137$1, $r_sroa_0_0_insert_insert42$0, $r_sroa_0_0_insert_insert42$1) | 0;
$150$1 = tempRet0;
$151$0 = $150$1 >> 31 | (($150$1 | 0) < 0 ? -1 : 0) << 1;
$152 = $151$0 & 1;
$154$0 = _i64Subtract($r_sroa_0_0_insert_insert42$0, $r_sroa_0_0_insert_insert42$1, $151$0 & $d_sroa_0_0_insert_insert99$0, ((($150$1 | 0) < 0 ? -1 : 0) >> 31 | (($150$1 | 0) < 0 ? -1 : 0) << 1) & $d_sroa_0_0_insert_insert99$1) | 0;
$r_sroa_0_0_extract_trunc = $154$0;
$r_sroa_1_4_extract_trunc = tempRet0;
$155 = $sr_1202 - 1 | 0;
if (($155 | 0) == 0) {
break;
} else {
$q_sroa_1_1198 = $147;
$q_sroa_0_1199 = $149;
$r_sroa_1_1200 = $r_sroa_1_4_extract_trunc;
$r_sroa_0_1201 = $r_sroa_0_0_extract_trunc;
$sr_1202 = $155;
$carry_0203 = $152;
}
}
$q_sroa_1_1_lcssa = $147;
$q_sroa_0_1_lcssa = $149;
$r_sroa_1_1_lcssa = $r_sroa_1_4_extract_trunc;
$r_sroa_0_1_lcssa = $r_sroa_0_0_extract_trunc;
$carry_0_lcssa$1 = 0;
$carry_0_lcssa$0 = $152;
}
$q_sroa_0_0_insert_ext75$0 = $q_sroa_0_1_lcssa;
$q_sroa_0_0_insert_ext75$1 = 0;
$q_sroa_0_0_insert_insert77$1 = $q_sroa_1_1_lcssa | $q_sroa_0_0_insert_ext75$1;
if (($rem | 0) != 0) {
HEAP32[$rem >> 2] = 0 | $r_sroa_0_1_lcssa;
HEAP32[$rem + 4 >> 2] = $r_sroa_1_1_lcssa | 0;
}
$_0$1 = (0 | $q_sroa_0_0_insert_ext75$0) >>> 31 | $q_sroa_0_0_insert_insert77$1 << 1 | ($q_sroa_0_0_insert_ext75$1 << 1 | $q_sroa_0_0_insert_ext75$0 >>> 31) & 0 | $carry_0_lcssa$1;
$_0$0 = ($q_sroa_0_0_insert_ext75$0 << 1 | 0 >>> 31) & -2 | $carry_0_lcssa$0;
return (tempRet0 = $_0$1, $_0$0) | 0;
}
// =======================================================================
// EMSCRIPTEN_END_FUNCS
// TODO: strip out parts of this we do not need
//======= begin closure i64 code =======
// Copyright 2009 The Closure Library Authors. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS-IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
/**
* @fileoverview Defines a Long class for representing a 64-bit two's-complement
* integer value, which faithfully simulates the behavior of a Java "long". This
* implementation is derived from LongLib in GWT.
*
*/
var i64Math = (function() { // Emscripten wrapper
var goog = { math: {} };
/**
* Constructs a 64-bit two's-complement integer, given its low and high 32-bit
* values as *signed* integers. See the from* functions below for more
* convenient ways of constructing Longs.
*
* The internal representation of a long is the two given signed, 32-bit values.
* We use 32-bit pieces because these are the size of integers on which
* Javascript performs bit-operations. For operations like addition and
* multiplication, we split each number into 16-bit pieces, which can easily be
* multiplied within Javascript's floating-point representation without overflow
* or change in sign.
*
* In the algorithms below, we frequently reduce the negative case to the
* positive case by negating the input(s) and then post-processing the result.
* Note that we must ALWAYS check specially whether those values are MIN_VALUE
* (-2^63) because -MIN_VALUE == MIN_VALUE (since 2^63 cannot be represented as
* a positive number, it overflows back into a negative). Not handling this
* case would often result in infinite recursion.
*
* @param {number} low The low (signed) 32 bits of the long.
* @param {number} high The high (signed) 32 bits of the long.
* @constructor
*/
goog.math.Long = function(low, high) {
/**
* @type {number}
* @private
*/
this.low_ = low | 0; // force into 32 signed bits.
/**
* @type {number}
* @private
*/
this.high_ = high | 0; // force into 32 signed bits.
};
// NOTE: Common constant values ZERO, ONE, NEG_ONE, etc. are defined below the
// from* methods on which they depend.
/**
* A cache of the Long representations of small integer values.
* @type {!Object}
* @private
*/
goog.math.Long.IntCache_ = {};
/**
* Returns a Long representing the given (32-bit) integer value.
* @param {number} value The 32-bit integer in question.
* @return {!goog.math.Long} The corresponding Long value.
*/
goog.math.Long.fromInt = function(value) {
if (-128 <= value && value < 128) {
var cachedObj = goog.math.Long.IntCache_[value];
if (cachedObj) {
return cachedObj;
}
}
var obj = new goog.math.Long(value | 0, value < 0 ? -1 : 0);
if (-128 <= value && value < 128) {
goog.math.Long.IntCache_[value] = obj;
}
return obj;
};
/**
* Returns a Long representing the given value, provided that it is a finite
* number. Otherwise, zero is returned.
* @param {number} value The number in question.
* @return {!goog.math.Long} The corresponding Long value.
*/
goog.math.Long.fromNumber = function(value) {
if (isNaN(value) || !isFinite(value)) {
return goog.math.Long.ZERO;
} else if (value <= -goog.math.Long.TWO_PWR_63_DBL_) {
return goog.math.Long.MIN_VALUE;
} else if (value + 1 >= goog.math.Long.TWO_PWR_63_DBL_) {
return goog.math.Long.MAX_VALUE;
} else if (value < 0) {
return goog.math.Long.fromNumber(-value).negate();
} else {
return new goog.math.Long(
(value % goog.math.Long.TWO_PWR_32_DBL_) | 0,
(value / goog.math.Long.TWO_PWR_32_DBL_) | 0);
}
};
/**
* Returns a Long representing the 64-bit integer that comes by concatenating
* the given high and low bits. Each is assumed to use 32 bits.
* @param {number} lowBits The low 32-bits.
* @param {number} highBits The high 32-bits.
* @return {!goog.math.Long} The corresponding Long value.
*/
goog.math.Long.fromBits = function(lowBits, highBits) {
return new goog.math.Long(lowBits, highBits);
};
/**
* Returns a Long representation of the given string, written using the given
* radix.
* @param {string} str The textual representation of the Long.
* @param {number=} opt_radix The radix in which the text is written.
* @return {!goog.math.Long} The corresponding Long value.
*/
goog.math.Long.fromString = function(str, opt_radix) {
if (str.length == 0) {
throw Error('number format error: empty string');
}
var radix = opt_radix || 10;
if (radix < 2 || 36 < radix) {
throw Error('radix out of range: ' + radix);
}
if (str.charAt(0) == '-') {
return goog.math.Long.fromString(str.substring(1), radix).negate();
} else if (str.indexOf('-') >= 0) {
throw Error('number format error: interior "-" character: ' + str);
}
// Do several (8) digits each time through the loop, so as to
// minimize the calls to the very expensive emulated div.
var radixToPower = goog.math.Long.fromNumber(Math.pow(radix, 8));
var result = goog.math.Long.ZERO;
for (var i = 0; i < str.length; i += 8) {
var size = Math.min(8, str.length - i);
var value = parseInt(str.substring(i, i + size), radix);
if (size < 8) {
var power = goog.math.Long.fromNumber(Math.pow(radix, size));
result = result.multiply(power).add(goog.math.Long.fromNumber(value));
} else {
result = result.multiply(radixToPower);
result = result.add(goog.math.Long.fromNumber(value));
}
}
return result;
};
// NOTE: the compiler should inline these constant values below and then remove
// these variables, so there should be no runtime penalty for these.
/**
* Number used repeated below in calculations. This must appear before the
* first call to any from* function below.
* @type {number}
* @private
*/
goog.math.Long.TWO_PWR_16_DBL_ = 1 << 16;
/**
* @type {number}
* @private
*/
goog.math.Long.TWO_PWR_24_DBL_ = 1 << 24;
/**
* @type {number}
* @private
*/
goog.math.Long.TWO_PWR_32_DBL_ =
goog.math.Long.TWO_PWR_16_DBL_ * goog.math.Long.TWO_PWR_16_DBL_;
/**
* @type {number}
* @private
*/
goog.math.Long.TWO_PWR_31_DBL_ =
goog.math.Long.TWO_PWR_32_DBL_ / 2;
/**
* @type {number}
* @private
*/
goog.math.Long.TWO_PWR_48_DBL_ =
goog.math.Long.TWO_PWR_32_DBL_ * goog.math.Long.TWO_PWR_16_DBL_;
/**
* @type {number}
* @private
*/
goog.math.Long.TWO_PWR_64_DBL_ =
goog.math.Long.TWO_PWR_32_DBL_ * goog.math.Long.TWO_PWR_32_DBL_;
/**
* @type {number}
* @private
*/
goog.math.Long.TWO_PWR_63_DBL_ =
goog.math.Long.TWO_PWR_64_DBL_ / 2;
/** @type {!goog.math.Long} */
goog.math.Long.ZERO = goog.math.Long.fromInt(0);
/** @type {!goog.math.Long} */
goog.math.Long.ONE = goog.math.Long.fromInt(1);
/** @type {!goog.math.Long} */
goog.math.Long.NEG_ONE = goog.math.Long.fromInt(-1);
/** @type {!goog.math.Long} */
goog.math.Long.MAX_VALUE =
goog.math.Long.fromBits(0xFFFFFFFF | 0, 0x7FFFFFFF | 0);
/** @type {!goog.math.Long} */
goog.math.Long.MIN_VALUE = goog.math.Long.fromBits(0, 0x80000000 | 0);
/**
* @type {!goog.math.Long}
* @private
*/
goog.math.Long.TWO_PWR_24_ = goog.math.Long.fromInt(1 << 24);
/** @return {number} The value, assuming it is a 32-bit integer. */
goog.math.Long.prototype.toInt = function() {
return this.low_;
};
/** @return {number} The closest floating-point representation to this value. */
goog.math.Long.prototype.toNumber = function() {
return this.high_ * goog.math.Long.TWO_PWR_32_DBL_ +
this.getLowBitsUnsigned();
};
/**
* @param {number=} opt_radix The radix in which the text should be written.
* @return {string} The textual representation of this value.
*/
goog.math.Long.prototype.toString = function(opt_radix) {
var radix = opt_radix || 10;
if (radix < 2 || 36 < radix) {
throw Error('radix out of range: ' + radix);
}
if (this.isZero()) {
return '0';
}
if (this.isNegative()) {
if (this.equals(goog.math.Long.MIN_VALUE)) {
// We need to change the Long value before it can be negated, so we remove
// the bottom-most digit in this base and then recurse to do the rest.
var radixLong = goog.math.Long.fromNumber(radix);
var div = this.div(radixLong);
var rem = div.multiply(radixLong).subtract(this);
return div.toString(radix) + rem.toInt().toString(radix);
} else {
return '-' + this.negate().toString(radix);
}
}
// Do several (6) digits each time through the loop, so as to
// minimize the calls to the very expensive emulated div.
var radixToPower = goog.math.Long.fromNumber(Math.pow(radix, 6));
var rem = this;
var result = '';
while (true) {
var remDiv = rem.div(radixToPower);
var intval = rem.subtract(remDiv.multiply(radixToPower)).toInt();
var digits = intval.toString(radix);
rem = remDiv;
if (rem.isZero()) {
return digits + result;
} else {
while (digits.length < 6) {
digits = '0' + digits;
}
result = '' + digits + result;
}
}
};
/** @return {number} The high 32-bits as a signed value. */
goog.math.Long.prototype.getHighBits = function() {
return this.high_;
};
/** @return {number} The low 32-bits as a signed value. */
goog.math.Long.prototype.getLowBits = function() {
return this.low_;
};
/** @return {number} The low 32-bits as an unsigned value. */
goog.math.Long.prototype.getLowBitsUnsigned = function() {
return (this.low_ >= 0) ?
this.low_ : goog.math.Long.TWO_PWR_32_DBL_ + this.low_;
};
/**
* @return {number} Returns the number of bits needed to represent the absolute
* value of this Long.
*/
goog.math.Long.prototype.getNumBitsAbs = function() {
if (this.isNegative()) {
if (this.equals(goog.math.Long.MIN_VALUE)) {
return 64;
} else {
return this.negate().getNumBitsAbs();
}
} else {
var val = this.high_ != 0 ? this.high_ : this.low_;
for (var bit = 31; bit > 0; bit--) {
if ((val & (1 << bit)) != 0) {
break;
}
}
return this.high_ != 0 ? bit + 33 : bit + 1;
}
};
/** @return {boolean} Whether this value is zero. */
goog.math.Long.prototype.isZero = function() {
return this.high_ == 0 && this.low_ == 0;
};
/** @return {boolean} Whether this value is negative. */
goog.math.Long.prototype.isNegative = function() {
return this.high_ < 0;
};
/** @return {boolean} Whether this value is odd. */
goog.math.Long.prototype.isOdd = function() {
return (this.low_ & 1) == 1;
};
/**
* @param {goog.math.Long} other Long to compare against.
* @return {boolean} Whether this Long equals the other.
*/
goog.math.Long.prototype.equals = function(other) {
return (this.high_ == other.high_) && (this.low_ == other.low_);
};
/**
* @param {goog.math.Long} other Long to compare against.
* @return {boolean} Whether this Long does not equal the other.
*/
goog.math.Long.prototype.notEquals = function(other) {
return (this.high_ != other.high_) || (this.low_ != other.low_);
};
/**
* @param {goog.math.Long} other Long to compare against.
* @return {boolean} Whether this Long is less than the other.
*/
goog.math.Long.prototype.lessThan = function(other) {
return this.compare(other) < 0;
};
/**
* @param {goog.math.Long} other Long to compare against.
* @return {boolean} Whether this Long is less than or equal to the other.
*/
goog.math.Long.prototype.lessThanOrEqual = function(other) {
return this.compare(other) <= 0;
};
/**
* @param {goog.math.Long} other Long to compare against.
* @return {boolean} Whether this Long is greater than the other.
*/
goog.math.Long.prototype.greaterThan = function(other) {
return this.compare(other) > 0;
};
/**
* @param {goog.math.Long} other Long to compare against.
* @return {boolean} Whether this Long is greater than or equal to the other.
*/
goog.math.Long.prototype.greaterThanOrEqual = function(other) {
return this.compare(other) >= 0;
};
/**
* Compares this Long with the given one.
* @param {goog.math.Long} other Long to compare against.
* @return {number} 0 if they are the same, 1 if the this is greater, and -1
* if the given one is greater.
*/
goog.math.Long.prototype.compare = function(other) {
if (this.equals(other)) {
return 0;
}
var thisNeg = this.isNegative();
var otherNeg = other.isNegative();
if (thisNeg && !otherNeg) {
return -1;
}
if (!thisNeg && otherNeg) {
return 1;
}
// at this point, the signs are the same, so subtraction will not overflow
if (this.subtract(other).isNegative()) {
return -1;
} else {
return 1;
}
};
/** @return {!goog.math.Long} The negation of this value. */
goog.math.Long.prototype.negate = function() {
if (this.equals(goog.math.Long.MIN_VALUE)) {
return goog.math.Long.MIN_VALUE;
} else {
return this.not().add(goog.math.Long.ONE);
}
};
/**
* Returns the sum of this and the given Long.
* @param {goog.math.Long} other Long to add to this one.
* @return {!goog.math.Long} The sum of this and the given Long.
*/
goog.math.Long.prototype.add = function(other) {
// Divide each number into 4 chunks of 16 bits, and then sum the chunks.
var a48 = this.high_ >>> 16;
var a32 = this.high_ & 0xFFFF;
var a16 = this.low_ >>> 16;
var a00 = this.low_ & 0xFFFF;
var b48 = other.high_ >>> 16;
var b32 = other.high_ & 0xFFFF;
var b16 = other.low_ >>> 16;
var b00 = other.low_ & 0xFFFF;
var c48 = 0, c32 = 0, c16 = 0, c00 = 0;
c00 += a00 + b00;
c16 += c00 >>> 16;
c00 &= 0xFFFF;
c16 += a16 + b16;
c32 += c16 >>> 16;
c16 &= 0xFFFF;
c32 += a32 + b32;
c48 += c32 >>> 16;
c32 &= 0xFFFF;
c48 += a48 + b48;
c48 &= 0xFFFF;
return goog.math.Long.fromBits((c16 << 16) | c00, (c48 << 16) | c32);
};
/**
* Returns the difference of this and the given Long.
* @param {goog.math.Long} other Long to subtract from this.
* @return {!goog.math.Long} The difference of this and the given Long.
*/
goog.math.Long.prototype.subtract = function(other) {
return this.add(other.negate());
};
/**
* Returns the product of this and the given long.
* @param {goog.math.Long} other Long to multiply with this.
* @return {!goog.math.Long} The product of this and the other.
*/
goog.math.Long.prototype.multiply = function(other) {
if (this.isZero()) {
return goog.math.Long.ZERO;
} else if (other.isZero()) {
return goog.math.Long.ZERO;
}
if (this.equals(goog.math.Long.MIN_VALUE)) {
return other.isOdd() ? goog.math.Long.MIN_VALUE : goog.math.Long.ZERO;
} else if (other.equals(goog.math.Long.MIN_VALUE)) {
return this.isOdd() ? goog.math.Long.MIN_VALUE : goog.math.Long.ZERO;
}
if (this.isNegative()) {
if (other.isNegative()) {
return this.negate().multiply(other.negate());
} else {
return this.negate().multiply(other).negate();
}
} else if (other.isNegative()) {
return this.multiply(other.negate()).negate();
}
// If both longs are small, use float multiplication
if (this.lessThan(goog.math.Long.TWO_PWR_24_) &&
other.lessThan(goog.math.Long.TWO_PWR_24_)) {
return goog.math.Long.fromNumber(this.toNumber() * other.toNumber());
}
// Divide each long into 4 chunks of 16 bits, and then add up 4x4 products.
// We can skip products that would overflow.
var a48 = this.high_ >>> 16;
var a32 = this.high_ & 0xFFFF;
var a16 = this.low_ >>> 16;
var a00 = this.low_ & 0xFFFF;
var b48 = other.high_ >>> 16;
var b32 = other.high_ & 0xFFFF;
var b16 = other.low_ >>> 16;
var b00 = other.low_ & 0xFFFF;
var c48 = 0, c32 = 0, c16 = 0, c00 = 0;
c00 += a00 * b00;
c16 += c00 >>> 16;
c00 &= 0xFFFF;
c16 += a16 * b00;
c32 += c16 >>> 16;
c16 &= 0xFFFF;
c16 += a00 * b16;
c32 += c16 >>> 16;
c16 &= 0xFFFF;
c32 += a32 * b00;
c48 += c32 >>> 16;
c32 &= 0xFFFF;
c32 += a16 * b16;
c48 += c32 >>> 16;
c32 &= 0xFFFF;
c32 += a00 * b32;
c48 += c32 >>> 16;
c32 &= 0xFFFF;
c48 += a48 * b00 + a32 * b16 + a16 * b32 + a00 * b48;
c48 &= 0xFFFF;
return goog.math.Long.fromBits((c16 << 16) | c00, (c48 << 16) | c32);
};
/**
* Returns this Long divided by the given one.
* @param {goog.math.Long} other Long by which to divide.
* @return {!goog.math.Long} This Long divided by the given one.
*/
goog.math.Long.prototype.div = function(other) {
if (other.isZero()) {
throw Error('division by zero');
} else if (this.isZero()) {
return goog.math.Long.ZERO;
}
if (this.equals(goog.math.Long.MIN_VALUE)) {
if (other.equals(goog.math.Long.ONE) ||
other.equals(goog.math.Long.NEG_ONE)) {
return goog.math.Long.MIN_VALUE; // recall that -MIN_VALUE == MIN_VALUE
} else if (other.equals(goog.math.Long.MIN_VALUE)) {
return goog.math.Long.ONE;
} else {
// At this point, we have |other| >= 2, so |this/other| < |MIN_VALUE|.
var halfThis = this.shiftRight(1);
var approx = halfThis.div(other).shiftLeft(1);
if (approx.equals(goog.math.Long.ZERO)) {
return other.isNegative() ? goog.math.Long.ONE : goog.math.Long.NEG_ONE;
} else {
var rem = this.subtract(other.multiply(approx));
var result = approx.add(rem.div(other));
return result;
}
}
} else if (other.equals(goog.math.Long.MIN_VALUE)) {
return goog.math.Long.ZERO;
}
if (this.isNegative()) {
if (other.isNegative()) {
return this.negate().div(other.negate());
} else {
return this.negate().div(other).negate();
}
} else if (other.isNegative()) {
return this.div(other.negate()).negate();
}
// Repeat the following until the remainder is less than other: find a
// floating-point that approximates remainder / other *from below*, add this
// into the result, and subtract it from the remainder. It is critical that
// the approximate value is less than or equal to the real value so that the
// remainder never becomes negative.
var res = goog.math.Long.ZERO;
var rem = this;
while (rem.greaterThanOrEqual(other)) {
// Approximate the result of division. This may be a little greater or
// smaller than the actual value.
var approx = Math.max(1, Math.floor(rem.toNumber() / other.toNumber()));
// We will tweak the approximate result by changing it in the 48-th digit or
// the smallest non-fractional digit, whichever is larger.
var log2 = Math.ceil(Math.log(approx) / Math.LN2);
var delta = (log2 <= 48) ? 1 : Math.pow(2, log2 - 48);
// Decrease the approximation until it is smaller than the remainder. Note
// that if it is too large, the product overflows and is negative.
var approxRes = goog.math.Long.fromNumber(approx);
var approxRem = approxRes.multiply(other);
while (approxRem.isNegative() || approxRem.greaterThan(rem)) {
approx -= delta;
approxRes = goog.math.Long.fromNumber(approx);
approxRem = approxRes.multiply(other);
}
// We know the answer can't be zero... and actually, zero would cause
// infinite recursion since we would make no progress.
if (approxRes.isZero()) {
approxRes = goog.math.Long.ONE;
}
res = res.add(approxRes);
rem = rem.subtract(approxRem);
}
return res;
};
/**
* Returns this Long modulo the given one.
* @param {goog.math.Long} other Long by which to mod.
* @return {!goog.math.Long} This Long modulo the given one.
*/
goog.math.Long.prototype.modulo = function(other) {
return this.subtract(this.div(other).multiply(other));
};
/** @return {!goog.math.Long} The bitwise-NOT of this value. */
goog.math.Long.prototype.not = function() {
return goog.math.Long.fromBits(~this.low_, ~this.high_);
};
/**
* Returns the bitwise-AND of this Long and the given one.
* @param {goog.math.Long} other The Long with which to AND.
* @return {!goog.math.Long} The bitwise-AND of this and the other.
*/
goog.math.Long.prototype.and = function(other) {
return goog.math.Long.fromBits(this.low_ & other.low_,
this.high_ & other.high_);
};
/**
* Returns the bitwise-OR of this Long and the given one.
* @param {goog.math.Long} other The Long with which to OR.
* @return {!goog.math.Long} The bitwise-OR of this and the other.
*/
goog.math.Long.prototype.or = function(other) {
return goog.math.Long.fromBits(this.low_ | other.low_,
this.high_ | other.high_);
};
/**
* Returns the bitwise-XOR of this Long and the given one.
* @param {goog.math.Long} other The Long with which to XOR.
* @return {!goog.math.Long} The bitwise-XOR of this and the other.
*/
goog.math.Long.prototype.xor = function(other) {
return goog.math.Long.fromBits(this.low_ ^ other.low_,
this.high_ ^ other.high_);
};
/**
* Returns this Long with bits shifted to the left by the given amount.
* @param {number} numBits The number of bits by which to shift.
* @return {!goog.math.Long} This shifted to the left by the given amount.
*/
goog.math.Long.prototype.shiftLeft = function(numBits) {
numBits &= 63;
if (numBits == 0) {
return this;
} else {
var low = this.low_;
if (numBits < 32) {
var high = this.high_;
return goog.math.Long.fromBits(
low << numBits,
(high << numBits) | (low >>> (32 - numBits)));
} else {
return goog.math.Long.fromBits(0, low << (numBits - 32));
}
}
};
/**
* Returns this Long with bits shifted to the right by the given amount.
* @param {number} numBits The number of bits by which to shift.
* @return {!goog.math.Long} This shifted to the right by the given amount.
*/
goog.math.Long.prototype.shiftRight = function(numBits) {
numBits &= 63;
if (numBits == 0) {
return this;
} else {
var high = this.high_;
if (numBits < 32) {
var low = this.low_;
return goog.math.Long.fromBits(
(low >>> numBits) | (high << (32 - numBits)),
high >> numBits);
} else {
return goog.math.Long.fromBits(
high >> (numBits - 32),
high >= 0 ? 0 : -1);
}
}
};
/**
* Returns this Long with bits shifted to the right by the given amount, with
* the new top bits matching the current sign bit.
* @param {number} numBits The number of bits by which to shift.
* @return {!goog.math.Long} This shifted to the right by the given amount, with
* zeros placed into the new leading bits.
*/
goog.math.Long.prototype.shiftRightUnsigned = function(numBits) {
numBits &= 63;
if (numBits == 0) {
return this;
} else {
var high = this.high_;
if (numBits < 32) {
var low = this.low_;
return goog.math.Long.fromBits(
(low >>> numBits) | (high << (32 - numBits)),
high >>> numBits);
} else if (numBits == 32) {
return goog.math.Long.fromBits(high, 0);
} else {
return goog.math.Long.fromBits(high >>> (numBits - 32), 0);
}
}
};
//======= begin jsbn =======
var navigator = { appName: 'Modern Browser' }; // polyfill a little
// Copyright (c) 2005 Tom Wu
// All Rights Reserved.
// http://www-cs-students.stanford.edu/~tjw/jsbn/
/*
* Copyright (c) 2003-2005 Tom Wu
* All Rights Reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sublicense, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject to
* the following conditions:
*
* The above copyright notice and this permission notice shall be
* included in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
* EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
* WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
*
* IN NO EVENT SHALL TOM WU BE LIABLE FOR ANY SPECIAL, INCIDENTAL,
* INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, OR ANY DAMAGES WHATSOEVER
* RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER OR NOT ADVISED OF
* THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF LIABILITY, ARISING OUT
* OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*
* In addition, the following condition applies:
*
* All redistributions must retain an intact copy of this copyright notice
* and disclaimer.
*/
// Basic JavaScript BN library - subset useful for RSA encryption.
// Bits per digit
var dbits;
// JavaScript engine analysis
var canary = 0xdeadbeefcafe;
var j_lm = ((canary&0xffffff)==0xefcafe);
// (public) Constructor
function BigInteger(a,b,c) {
if(a != null)
if("number" == typeof a) this.fromNumber(a,b,c);
else if(b == null && "string" != typeof a) this.fromString(a,256);
else this.fromString(a,b);
}
// return new, unset BigInteger
function nbi() { return new BigInteger(null); }
// am: Compute w_j += (x*this_i), propagate carries,
// c is initial carry, returns final carry.
// c < 3*dvalue, x < 2*dvalue, this_i < dvalue
// We need to select the fastest one that works in this environment.
// am1: use a single mult and divide to get the high bits,
// max digit bits should be 26 because
// max internal value = 2*dvalue^2-2*dvalue (< 2^53)
function am1(i,x,w,j,c,n) {
while(--n >= 0) {
var v = x*this[i++]+w[j]+c;
c = Math.floor(v/0x4000000);
w[j++] = v&0x3ffffff;
}
return c;
}
// am2 avoids a big mult-and-extract completely.
// Max digit bits should be <= 30 because we do bitwise ops
// on values up to 2*hdvalue^2-hdvalue-1 (< 2^31)
function am2(i,x,w,j,c,n) {
var xl = x&0x7fff, xh = x>>15;
while(--n >= 0) {
var l = this[i]&0x7fff;
var h = this[i++]>>15;
var m = xh*l+h*xl;
l = xl*l+((m&0x7fff)<<15)+w[j]+(c&0x3fffffff);
c = (l>>>30)+(m>>>15)+xh*h+(c>>>30);
w[j++] = l&0x3fffffff;
}
return c;
}
// Alternately, set max digit bits to 28 since some
// browsers slow down when dealing with 32-bit numbers.
function am3(i,x,w,j,c,n) {
var xl = x&0x3fff, xh = x>>14;
while(--n >= 0) {
var l = this[i]&0x3fff;
var h = this[i++]>>14;
var m = xh*l+h*xl;
l = xl*l+((m&0x3fff)<<14)+w[j]+c;
c = (l>>28)+(m>>14)+xh*h;
w[j++] = l&0xfffffff;
}
return c;
}
if(j_lm && (navigator.appName == "Microsoft Internet Explorer")) {
BigInteger.prototype.am = am2;
dbits = 30;
}
else if(j_lm && (navigator.appName != "Netscape")) {
BigInteger.prototype.am = am1;
dbits = 26;
}
else { // Mozilla/Netscape seems to prefer am3
BigInteger.prototype.am = am3;
dbits = 28;
}
BigInteger.prototype.DB = dbits;
BigInteger.prototype.DM = ((1<<dbits)-1);
BigInteger.prototype.DV = (1<<dbits);
var BI_FP = 52;
BigInteger.prototype.FV = Math.pow(2,BI_FP);
BigInteger.prototype.F1 = BI_FP-dbits;
BigInteger.prototype.F2 = 2*dbits-BI_FP;
// Digit conversions
var BI_RM = "0123456789abcdefghijklmnopqrstuvwxyz";
var BI_RC = new Array();
var rr,vv;
rr = "0".charCodeAt(0);
for(vv = 0; vv <= 9; ++vv) BI_RC[rr++] = vv;
rr = "a".charCodeAt(0);
for(vv = 10; vv < 36; ++vv) BI_RC[rr++] = vv;
rr = "A".charCodeAt(0);
for(vv = 10; vv < 36; ++vv) BI_RC[rr++] = vv;
function int2char(n) { return BI_RM.charAt(n); }
function intAt(s,i) {
var c = BI_RC[s.charCodeAt(i)];
return (c==null)?-1:c;
}
// (protected) copy this to r
function bnpCopyTo(r) {
for(var i = this.t-1; i >= 0; --i) r[i] = this[i];
r.t = this.t;
r.s = this.s;
}
// (protected) set from integer value x, -DV <= x < DV
function bnpFromInt(x) {
this.t = 1;
this.s = (x<0)?-1:0;
if(x > 0) this[0] = x;
else if(x < -1) this[0] = x+DV;
else this.t = 0;
}
// return bigint initialized to value
function nbv(i) { var r = nbi(); r.fromInt(i); return r; }
// (protected) set from string and radix
function bnpFromString(s,b) {
var k;
if(b == 16) k = 4;
else if(b == 8) k = 3;
else if(b == 256) k = 8; // byte array
else if(b == 2) k = 1;
else if(b == 32) k = 5;
else if(b == 4) k = 2;
else { this.fromRadix(s,b); return; }
this.t = 0;
this.s = 0;
var i = s.length, mi = false, sh = 0;
while(--i >= 0) {
var x = (k==8)?s[i]&0xff:intAt(s,i);
if(x < 0) {
if(s.charAt(i) == "-") mi = true;
continue;
}
mi = false;
if(sh == 0)
this[this.t++] = x;
else if(sh+k > this.DB) {
this[this.t-1] |= (x&((1<<(this.DB-sh))-1))<<sh;
this[this.t++] = (x>>(this.DB-sh));
}
else
this[this.t-1] |= x<<sh;
sh += k;
if(sh >= this.DB) sh -= this.DB;
}
if(k == 8 && (s[0]&0x80) != 0) {
this.s = -1;
if(sh > 0) this[this.t-1] |= ((1<<(this.DB-sh))-1)<<sh;
}
this.clamp();
if(mi) BigInteger.ZERO.subTo(this,this);
}
// (protected) clamp off excess high words
function bnpClamp() {
var c = this.s&this.DM;
while(this.t > 0 && this[this.t-1] == c) --this.t;
}
// (public) return string representation in given radix
function bnToString(b) {
if(this.s < 0) return "-"+this.negate().toString(b);
var k;
if(b == 16) k = 4;
else if(b == 8) k = 3;
else if(b == 2) k = 1;
else if(b == 32) k = 5;
else if(b == 4) k = 2;
else return this.toRadix(b);
var km = (1<<k)-1, d, m = false, r = "", i = this.t;
var p = this.DB-(i*this.DB)%k;
if(i-- > 0) {
if(p < this.DB && (d = this[i]>>p) > 0) { m = true; r = int2char(d); }
while(i >= 0) {
if(p < k) {
d = (this[i]&((1<<p)-1))<<(k-p);
d |= this[--i]>>(p+=this.DB-k);
}
else {
d = (this[i]>>(p-=k))&km;
if(p <= 0) { p += this.DB; --i; }
}
if(d > 0) m = true;
if(m) r += int2char(d);
}
}
return m?r:"0";
}
// (public) -this
function bnNegate() { var r = nbi(); BigInteger.ZERO.subTo(this,r); return r; }
// (public) |this|
function bnAbs() { return (this.s<0)?this.negate():this; }
// (public) return + if this > a, - if this < a, 0 if equal
function bnCompareTo(a) {
var r = this.s-a.s;
if(r != 0) return r;
var i = this.t;
r = i-a.t;
if(r != 0) return (this.s<0)?-r:r;
while(--i >= 0) if((r=this[i]-a[i]) != 0) return r;
return 0;
}
// returns bit length of the integer x
function nbits(x) {
var r = 1, t;
if((t=x>>>16) != 0) { x = t; r += 16; }
if((t=x>>8) != 0) { x = t; r += 8; }
if((t=x>>4) != 0) { x = t; r += 4; }
if((t=x>>2) != 0) { x = t; r += 2; }
if((t=x>>1) != 0) { x = t; r += 1; }
return r;
}
// (public) return the number of bits in "this"
function bnBitLength() {
if(this.t <= 0) return 0;
return this.DB*(this.t-1)+nbits(this[this.t-1]^(this.s&this.DM));
}
// (protected) r = this << n*DB
function bnpDLShiftTo(n,r) {
var i;
for(i = this.t-1; i >= 0; --i) r[i+n] = this[i];
for(i = n-1; i >= 0; --i) r[i] = 0;
r.t = this.t+n;
r.s = this.s;
}
// (protected) r = this >> n*DB
function bnpDRShiftTo(n,r) {
for(var i = n; i < this.t; ++i) r[i-n] = this[i];
r.t = Math.max(this.t-n,0);
r.s = this.s;
}
// (protected) r = this << n
function bnpLShiftTo(n,r) {
var bs = n%this.DB;
var cbs = this.DB-bs;
var bm = (1<<cbs)-1;
var ds = Math.floor(n/this.DB), c = (this.s<<bs)&this.DM, i;
for(i = this.t-1; i >= 0; --i) {
r[i+ds+1] = (this[i]>>cbs)|c;
c = (this[i]&bm)<<bs;
}
for(i = ds-1; i >= 0; --i) r[i] = 0;
r[ds] = c;
r.t = this.t+ds+1;
r.s = this.s;
r.clamp();
}
// (protected) r = this >> n
function bnpRShiftTo(n,r) {
r.s = this.s;
var ds = Math.floor(n/this.DB);
if(ds >= this.t) { r.t = 0; return; }
var bs = n%this.DB;
var cbs = this.DB-bs;
var bm = (1<<bs)-1;
r[0] = this[ds]>>bs;
for(var i = ds+1; i < this.t; ++i) {
r[i-ds-1] |= (this[i]&bm)<<cbs;
r[i-ds] = this[i]>>bs;
}
if(bs > 0) r[this.t-ds-1] |= (this.s&bm)<<cbs;
r.t = this.t-ds;
r.clamp();
}
// (protected) r = this - a
function bnpSubTo(a,r) {
var i = 0, c = 0, m = Math.min(a.t,this.t);
while(i < m) {
c += this[i]-a[i];
r[i++] = c&this.DM;
c >>= this.DB;
}
if(a.t < this.t) {
c -= a.s;
while(i < this.t) {
c += this[i];
r[i++] = c&this.DM;
c >>= this.DB;
}
c += this.s;
}
else {
c += this.s;
while(i < a.t) {
c -= a[i];
r[i++] = c&this.DM;
c >>= this.DB;
}
c -= a.s;
}
r.s = (c<0)?-1:0;
if(c < -1) r[i++] = this.DV+c;
else if(c > 0) r[i++] = c;
r.t = i;
r.clamp();
}
// (protected) r = this * a, r != this,a (HAC 14.12)
// "this" should be the larger one if appropriate.
function bnpMultiplyTo(a,r) {
var x = this.abs(), y = a.abs();
var i = x.t;
r.t = i+y.t;
while(--i >= 0) r[i] = 0;
for(i = 0; i < y.t; ++i) r[i+x.t] = x.am(0,y[i],r,i,0,x.t);
r.s = 0;
r.clamp();
if(this.s != a.s) BigInteger.ZERO.subTo(r,r);
}
// (protected) r = this^2, r != this (HAC 14.16)
function bnpSquareTo(r) {
var x = this.abs();
var i = r.t = 2*x.t;
while(--i >= 0) r[i] = 0;
for(i = 0; i < x.t-1; ++i) {
var c = x.am(i,x[i],r,2*i,0,1);
if((r[i+x.t]+=x.am(i+1,2*x[i],r,2*i+1,c,x.t-i-1)) >= x.DV) {
r[i+x.t] -= x.DV;
r[i+x.t+1] = 1;
}
}
if(r.t > 0) r[r.t-1] += x.am(i,x[i],r,2*i,0,1);
r.s = 0;
r.clamp();
}
// (protected) divide this by m, quotient and remainder to q, r (HAC 14.20)
// r != q, this != m. q or r may be null.
function bnpDivRemTo(m,q,r) {
var pm = m.abs();
if(pm.t <= 0) return;
var pt = this.abs();
if(pt.t < pm.t) {
if(q != null) q.fromInt(0);
if(r != null) this.copyTo(r);
return;
}
if(r == null) r = nbi();
var y = nbi(), ts = this.s, ms = m.s;
var nsh = this.DB-nbits(pm[pm.t-1]); // normalize modulus
if(nsh > 0) { pm.lShiftTo(nsh,y); pt.lShiftTo(nsh,r); }
else { pm.copyTo(y); pt.copyTo(r); }
var ys = y.t;
var y0 = y[ys-1];
if(y0 == 0) return;
var yt = y0*(1<<this.F1)+((ys>1)?y[ys-2]>>this.F2:0);
var d1 = this.FV/yt, d2 = (1<<this.F1)/yt, e = 1<<this.F2;
var i = r.t, j = i-ys, t = (q==null)?nbi():q;
y.dlShiftTo(j,t);
if(r.compareTo(t) >= 0) {
r[r.t++] = 1;
r.subTo(t,r);
}
BigInteger.ONE.dlShiftTo(ys,t);
t.subTo(y,y); // "negative" y so we can replace sub with am later
while(y.t < ys) y[y.t++] = 0;
while(--j >= 0) {
// Estimate quotient digit
var qd = (r[--i]==y0)?this.DM:Math.floor(r[i]*d1+(r[i-1]+e)*d2);
if((r[i]+=y.am(0,qd,r,j,0,ys)) < qd) { // Try it out
y.dlShiftTo(j,t);
r.subTo(t,r);
while(r[i] < --qd) r.subTo(t,r);
}
}
if(q != null) {
r.drShiftTo(ys,q);
if(ts != ms) BigInteger.ZERO.subTo(q,q);
}
r.t = ys;
r.clamp();
if(nsh > 0) r.rShiftTo(nsh,r); // Denormalize remainder
if(ts < 0) BigInteger.ZERO.subTo(r,r);
}
// (public) this mod a
function bnMod(a) {
var r = nbi();
this.abs().divRemTo(a,null,r);
if(this.s < 0 && r.compareTo(BigInteger.ZERO) > 0) a.subTo(r,r);
return r;
}
// Modular reduction using "classic" algorithm
function Classic(m) { this.m = m; }
function cConvert(x) {
if(x.s < 0 || x.compareTo(this.m) >= 0) return x.mod(this.m);
else return x;
}
function cRevert(x) { return x; }
function cReduce(x) { x.divRemTo(this.m,null,x); }
function cMulTo(x,y,r) { x.multiplyTo(y,r); this.reduce(r); }
function cSqrTo(x,r) { x.squareTo(r); this.reduce(r); }
Classic.prototype.convert = cConvert;
Classic.prototype.revert = cRevert;
Classic.prototype.reduce = cReduce;
Classic.prototype.mulTo = cMulTo;
Classic.prototype.sqrTo = cSqrTo;
// (protected) return "-1/this % 2^DB"; useful for Mont. reduction
// justification:
// xy == 1 (mod m)
// xy = 1+km
// xy(2-xy) = (1+km)(1-km)
// x[y(2-xy)] = 1-k^2m^2
// x[y(2-xy)] == 1 (mod m^2)
// if y is 1/x mod m, then y(2-xy) is 1/x mod m^2
// should reduce x and y(2-xy) by m^2 at each step to keep size bounded.
// JS multiply "overflows" differently from C/C++, so care is needed here.
function bnpInvDigit() {
if(this.t < 1) return 0;
var x = this[0];
if((x&1) == 0) return 0;
var y = x&3; // y == 1/x mod 2^2
y = (y*(2-(x&0xf)*y))&0xf; // y == 1/x mod 2^4
y = (y*(2-(x&0xff)*y))&0xff; // y == 1/x mod 2^8
y = (y*(2-(((x&0xffff)*y)&0xffff)))&0xffff; // y == 1/x mod 2^16
// last step - calculate inverse mod DV directly;
// assumes 16 < DB <= 32 and assumes ability to handle 48-bit ints
y = (y*(2-x*y%this.DV))%this.DV; // y == 1/x mod 2^dbits
// we really want the negative inverse, and -DV < y < DV
return (y>0)?this.DV-y:-y;
}
// Montgomery reduction
function Montgomery(m) {
this.m = m;
this.mp = m.invDigit();
this.mpl = this.mp&0x7fff;
this.mph = this.mp>>15;
this.um = (1<<(m.DB-15))-1;
this.mt2 = 2*m.t;
}
// xR mod m
function montConvert(x) {
var r = nbi();
x.abs().dlShiftTo(this.m.t,r);
r.divRemTo(this.m,null,r);
if(x.s < 0 && r.compareTo(BigInteger.ZERO) > 0) this.m.subTo(r,r);
return r;
}
// x/R mod m
function montRevert(x) {
var r = nbi();
x.copyTo(r);
this.reduce(r);
return r;
}
// x = x/R mod m (HAC 14.32)
function montReduce(x) {
while(x.t <= this.mt2) // pad x so am has enough room later
x[x.t++] = 0;
for(var i = 0; i < this.m.t; ++i) {
// faster way of calculating u0 = x[i]*mp mod DV
var j = x[i]&0x7fff;
var u0 = (j*this.mpl+(((j*this.mph+(x[i]>>15)*this.mpl)&this.um)<<15))&x.DM;
// use am to combine the multiply-shift-add into one call
j = i+this.m.t;
x[j] += this.m.am(0,u0,x,i,0,this.m.t);
// propagate carry
while(x[j] >= x.DV) { x[j] -= x.DV; x[++j]++; }
}
x.clamp();
x.drShiftTo(this.m.t,x);
if(x.compareTo(this.m) >= 0) x.subTo(this.m,x);
}
// r = "x^2/R mod m"; x != r
function montSqrTo(x,r) { x.squareTo(r); this.reduce(r); }
// r = "xy/R mod m"; x,y != r
function montMulTo(x,y,r) { x.multiplyTo(y,r); this.reduce(r); }
Montgomery.prototype.convert = montConvert;
Montgomery.prototype.revert = montRevert;
Montgomery.prototype.reduce = montReduce;
Montgomery.prototype.mulTo = montMulTo;
Montgomery.prototype.sqrTo = montSqrTo;
// (protected) true iff this is even
function bnpIsEven() { return ((this.t>0)?(this[0]&1):this.s) == 0; }
// (protected) this^e, e < 2^32, doing sqr and mul with "r" (HAC 14.79)
function bnpExp(e,z) {
if(e > 0xffffffff || e < 1) return BigInteger.ONE;
var r = nbi(), r2 = nbi(), g = z.convert(this), i = nbits(e)-1;
g.copyTo(r);
while(--i >= 0) {
z.sqrTo(r,r2);
if((e&(1<<i)) > 0) z.mulTo(r2,g,r);
else { var t = r; r = r2; r2 = t; }
}
return z.revert(r);
}
// (public) this^e % m, 0 <= e < 2^32
function bnModPowInt(e,m) {
var z;
if(e < 256 || m.isEven()) z = new Classic(m); else z = new Montgomery(m);
return this.exp(e,z);
}
// protected
BigInteger.prototype.copyTo = bnpCopyTo;
BigInteger.prototype.fromInt = bnpFromInt;
BigInteger.prototype.fromString = bnpFromString;
BigInteger.prototype.clamp = bnpClamp;
BigInteger.prototype.dlShiftTo = bnpDLShiftTo;
BigInteger.prototype.drShiftTo = bnpDRShiftTo;
BigInteger.prototype.lShiftTo = bnpLShiftTo;
BigInteger.prototype.rShiftTo = bnpRShiftTo;
BigInteger.prototype.subTo = bnpSubTo;
BigInteger.prototype.multiplyTo = bnpMultiplyTo;
BigInteger.prototype.squareTo = bnpSquareTo;
BigInteger.prototype.divRemTo = bnpDivRemTo;
BigInteger.prototype.invDigit = bnpInvDigit;
BigInteger.prototype.isEven = bnpIsEven;
BigInteger.prototype.exp = bnpExp;
// public
BigInteger.prototype.toString = bnToString;
BigInteger.prototype.negate = bnNegate;
BigInteger.prototype.abs = bnAbs;
BigInteger.prototype.compareTo = bnCompareTo;
BigInteger.prototype.bitLength = bnBitLength;
BigInteger.prototype.mod = bnMod;
BigInteger.prototype.modPowInt = bnModPowInt;
// "constants"
BigInteger.ZERO = nbv(0);
BigInteger.ONE = nbv(1);
// jsbn2 stuff
// (protected) convert from radix string
function bnpFromRadix(s,b) {
this.fromInt(0);
if(b == null) b = 10;
var cs = this.chunkSize(b);
var d = Math.pow(b,cs), mi = false, j = 0, w = 0;
for(var i = 0; i < s.length; ++i) {
var x = intAt(s,i);
if(x < 0) {
if(s.charAt(i) == "-" && this.signum() == 0) mi = true;
continue;
}
w = b*w+x;
if(++j >= cs) {
this.dMultiply(d);
this.dAddOffset(w,0);
j = 0;
w = 0;
}
}
if(j > 0) {
this.dMultiply(Math.pow(b,j));
this.dAddOffset(w,0);
}
if(mi) BigInteger.ZERO.subTo(this,this);
}
// (protected) return x s.t. r^x < DV
function bnpChunkSize(r) { return Math.floor(Math.LN2*this.DB/Math.log(r)); }
// (public) 0 if this == 0, 1 if this > 0
function bnSigNum() {
if(this.s < 0) return -1;
else if(this.t <= 0 || (this.t == 1 && this[0] <= 0)) return 0;
else return 1;
}
// (protected) this *= n, this >= 0, 1 < n < DV
function bnpDMultiply(n) {
this[this.t] = this.am(0,n-1,this,0,0,this.t);
++this.t;
this.clamp();
}
// (protected) this += n << w words, this >= 0
function bnpDAddOffset(n,w) {
if(n == 0) return;
while(this.t <= w) this[this.t++] = 0;
this[w] += n;
while(this[w] >= this.DV) {
this[w] -= this.DV;
if(++w >= this.t) this[this.t++] = 0;
++this[w];
}
}
// (protected) convert to radix string
function bnpToRadix(b) {
if(b == null) b = 10;
if(this.signum() == 0 || b < 2 || b > 36) return "0";
var cs = this.chunkSize(b);
var a = Math.pow(b,cs);
var d = nbv(a), y = nbi(), z = nbi(), r = "";
this.divRemTo(d,y,z);
while(y.signum() > 0) {
r = (a+z.intValue()).toString(b).substr(1) + r;
y.divRemTo(d,y,z);
}
return z.intValue().toString(b) + r;
}
// (public) return value as integer
function bnIntValue() {
if(this.s < 0) {
if(this.t == 1) return this[0]-this.DV;
else if(this.t == 0) return -1;
}
else if(this.t == 1) return this[0];
else if(this.t == 0) return 0;
// assumes 16 < DB < 32
return ((this[1]&((1<<(32-this.DB))-1))<<this.DB)|this[0];
}
// (protected) r = this + a
function bnpAddTo(a,r) {
var i = 0, c = 0, m = Math.min(a.t,this.t);
while(i < m) {
c += this[i]+a[i];
r[i++] = c&this.DM;
c >>= this.DB;
}
if(a.t < this.t) {
c += a.s;
while(i < this.t) {
c += this[i];
r[i++] = c&this.DM;
c >>= this.DB;
}
c += this.s;
}
else {
c += this.s;
while(i < a.t) {
c += a[i];
r[i++] = c&this.DM;
c >>= this.DB;
}
c += a.s;
}
r.s = (c<0)?-1:0;
if(c > 0) r[i++] = c;
else if(c < -1) r[i++] = this.DV+c;
r.t = i;
r.clamp();
}
BigInteger.prototype.fromRadix = bnpFromRadix;
BigInteger.prototype.chunkSize = bnpChunkSize;
BigInteger.prototype.signum = bnSigNum;
BigInteger.prototype.dMultiply = bnpDMultiply;
BigInteger.prototype.dAddOffset = bnpDAddOffset;
BigInteger.prototype.toRadix = bnpToRadix;
BigInteger.prototype.intValue = bnIntValue;
BigInteger.prototype.addTo = bnpAddTo;
//======= end jsbn =======
// Emscripten wrapper
var Wrapper = {
abs: function(l, h) {
var x = new goog.math.Long(l, h);
var ret;
if (x.isNegative()) {
ret = x.negate();
} else {
ret = x;
}
HEAP32[tempDoublePtr>>2] = ret.low_;
HEAP32[tempDoublePtr+4>>2] = ret.high_;
},
ensureTemps: function() {
if (Wrapper.ensuredTemps) return;
Wrapper.ensuredTemps = true;
Wrapper.two32 = new BigInteger();
Wrapper.two32.fromString('4294967296', 10);
Wrapper.two64 = new BigInteger();
Wrapper.two64.fromString('18446744073709551616', 10);
Wrapper.temp1 = new BigInteger();
Wrapper.temp2 = new BigInteger();
},
lh2bignum: function(l, h) {
var a = new BigInteger();
a.fromString(h.toString(), 10);
var b = new BigInteger();
a.multiplyTo(Wrapper.two32, b);
var c = new BigInteger();
c.fromString(l.toString(), 10);
var d = new BigInteger();
c.addTo(b, d);
return d;
},
stringify: function(l, h, unsigned) {
var ret = new goog.math.Long(l, h).toString();
if (unsigned && ret[0] == '-') {
// unsign slowly using jsbn bignums
Wrapper.ensureTemps();
var bignum = new BigInteger();
bignum.fromString(ret, 10);
ret = new BigInteger();
Wrapper.two64.addTo(bignum, ret);
ret = ret.toString(10);
}
return ret;
},
fromString: function(str, base, min, max, unsigned) {
Wrapper.ensureTemps();
var bignum = new BigInteger();
bignum.fromString(str, base);
var bigmin = new BigInteger();
bigmin.fromString(min, 10);
var bigmax = new BigInteger();
bigmax.fromString(max, 10);
if (unsigned && bignum.compareTo(BigInteger.ZERO) < 0) {
var temp = new BigInteger();
bignum.addTo(Wrapper.two64, temp);
bignum = temp;
}
var error = false;
if (bignum.compareTo(bigmin) < 0) {
bignum = bigmin;
error = true;
} else if (bignum.compareTo(bigmax) > 0) {
bignum = bigmax;
error = true;
}
var ret = goog.math.Long.fromString(bignum.toString()); // min-max checks should have clamped this to a range goog.math.Long can handle well
HEAP32[tempDoublePtr>>2] = ret.low_;
HEAP32[tempDoublePtr+4>>2] = ret.high_;
if (error) throw 'range error';
}
};
return Wrapper;
})();
//======= end closure i64 code =======
// === Auto-generated postamble setup entry stuff ===
if (memoryInitializer) {
function applyData(data) {
HEAPU8.set(data, STATIC_BASE);
}
if (ENVIRONMENT_IS_NODE || ENVIRONMENT_IS_SHELL) {
applyData(Module['readBinary'](memoryInitializer));
} else {
addRunDependency('memory initializer');
Browser.asyncLoad(memoryInitializer, function(data) {
applyData(data);
removeRunDependency('memory initializer');
}, function(data) {
throw 'could not load memory initializer ' + memoryInitializer;
});
}
}
function ExitStatus(status) {
this.name = "ExitStatus";
this.message = "Program terminated with exit(" + status + ")";
this.status = status;
};
ExitStatus.prototype = new Error();
ExitStatus.prototype.constructor = ExitStatus;
var initialStackTop;
var preloadStartTime = null;
var calledMain = false;
dependenciesFulfilled = function runCaller() {
// If run has never been called, and we should call run (INVOKE_RUN is true, and Module.noInitialRun is not false)
if (!Module['calledRun'] && shouldRunNow) run();
if (!Module['calledRun']) dependenciesFulfilled = runCaller; // try this again later, after new deps are fulfilled
}
Module['callMain'] = Module.callMain = function callMain(args) {
assert(runDependencies == 0, 'cannot call main when async dependencies remain! (listen on __ATMAIN__)');
assert(__ATPRERUN__.length == 0, 'cannot call main when preRun functions remain to be called');
args = args || [];
if (ENVIRONMENT_IS_WEB && preloadStartTime !== null) {
Module.printErr('preload time: ' + (Date.now() - preloadStartTime) + ' ms');
}
ensureInitRuntime();
var argc = args.length+1;
function pad() {
for (var i = 0; i < 4-1; i++) {
argv.push(0);
}
}
var argv = [allocate(intArrayFromString("/bin/this.program"), 'i8', ALLOC_NORMAL) ];
pad();
for (var i = 0; i < argc-1; i = i + 1) {
argv.push(allocate(intArrayFromString(args[i]), 'i8', ALLOC_NORMAL));
pad();
}
argv.push(0);
argv = allocate(argv, 'i32', ALLOC_NORMAL);
initialStackTop = STACKTOP;
try {
var ret = Module['_main'](argc, argv, 0);
// if we're not running an evented main loop, it's time to exit
if (!Module['noExitRuntime']) {
exit(ret);
}
}
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 == 'SimulateInfiniteLoop') {
// running an evented main loop, don't immediately exit
Module['noExitRuntime'] = true;
return;
} else {
if (e && typeof e === 'object' && e.stack) Module.printErr('exception thrown: ' + [e, e.stack]);
throw e;
}
} finally {
calledMain = true;
}
}
function run(args) {
args = args || Module['arguments'];
if (preloadStartTime === null) preloadStartTime = Date.now();
if (runDependencies > 0) {
Module.printErr('run() called, but dependencies remain, so not running');
return;
}
preRun();
if (runDependencies > 0) return; // a preRun added a dependency, run will be called later
if (Module['calledRun']) return; // run may have just been called through dependencies being fulfilled just in this very frame
function doRun() {
if (Module['calledRun']) return; // run may have just been called while the async setStatus time below was happening
Module['calledRun'] = true;
ensureInitRuntime();
preMain();
if (Module['_main'] && shouldRunNow) {
Module['callMain'](args);
}
postRun();
}
if (Module['setStatus']) {
Module['setStatus']('Running...');
setTimeout(function() {
setTimeout(function() {
Module['setStatus']('');
}, 1);
if (!ABORT) doRun();
}, 1);
} else {
doRun();
}
}
Module['run'] = Module.run = run;
function exit(status) {
ABORT = true;
EXITSTATUS = status;
STACKTOP = initialStackTop;
// exit the runtime
exitRuntime();
// TODO We should handle this differently based on environment.
// In the browser, the best we can do is throw an exception
// to halt execution, but in node we could process.exit and
// I'd imagine SM shell would have something equivalent.
// This would let us set a proper exit status (which
// would be great for checking test exit statuses).
// https://github.com/kripken/emscripten/issues/1371
// throw an exception to halt the current execution
throw new ExitStatus(status);
}
Module['exit'] = Module.exit = exit;
function abort(text) {
if (text) {
Module.print(text);
Module.printErr(text);
}
ABORT = true;
EXITSTATUS = 1;
throw 'abort() at ' + stackTrace();
}
Module['abort'] = Module.abort = abort;
// {{PRE_RUN_ADDITIONS}}
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;
}
run();
// {{POST_RUN_ADDITIONS}}
// {{MODULE_ADDITIONS}}
//@ sourceMappingURL=index.html.map
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment