signal-desktop/js/curve/curve25519_compiled.js

73849 lines
1.3 MiB

// 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 = (typeof Module !== 'undefined' ? Module : null) || {};
// 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));
};
if (process['argv'].length > 1) {
Module['thisProgram'] = process['argv'][1].replace(/\\/g, '/');
} else {
Module['thisProgram'] = 'unknown-program';
}
Module['arguments'] = process['argv'].slice(2);
if (typeof module !== 'undefined') {
module['exports'] = Module;
}
process['on']('uncaughtException', function(ex) {
// suppress ExitStatus exceptions from showing an error
if (!(ex instanceof ExitStatus)) {
throw ex;
}
});
} 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) {
if (typeof readbuffer === 'function') {
return new Uint8Array(readbuffer(f));
}
var data = read(f, 'binary');
assert(typeof data === 'object');
return data;
};
if (typeof scriptArgs != 'undefined') {
Module['arguments'] = scriptArgs;
} else if (typeof arguments != 'undefined') {
Module['arguments'] = arguments;
}
this['Module'] = Module;
} 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) {
window['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'] && Module['read']) {
Module['load'] = function load(f) {
globalEval(Module['read'](f));
};
}
if (!Module['print']) {
Module['print'] = function() {};
}
if (!Module['printErr']) {
Module['printErr'] = Module['print'];
}
if (!Module['arguments']) {
Module['arguments'] = [];
}
if (!Module['thisProgram']) {
Module['thisProgram'] = './this.program';
}
// *** 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];
}
}
// === Preamble library stuff ===
// Documentation for the public APIs defined in this file must be updated in:
// site/source/docs/api_reference/preamble.js.rst
// A prebuilt local version of the documentation is available at:
// site/build/text/docs/api_reference/preamble.js.txt
// You can also build docs locally as HTML or other formats in site/
// An online HTML version (which may be of a different version of Emscripten)
// is up at http://kripken.github.io/emscripten-site/docs/api_reference/preamble.js.html
//========================================
// Runtime code shared with compiler
//========================================
var Runtime = {
setTempRet0: function(value) {
tempRet0 = value;
},
getTempRet0: function() {
return tempRet0;
},
stackSave: function() {
return STACKTOP;
},
stackRestore: function(stackTop) {
STACKTOP = stackTop;
},
getNativeTypeSize: function(type) {
switch (type) {
case 'i1':
case 'i8':
return 1;
case 'i16':
return 2;
case 'i32':
return 4;
case 'i64':
return 8;
case 'float':
return 4;
case 'double':
return 8;
default: {
if (type[type.length - 1] === '*') {
return Runtime.QUANTUM_SIZE; // 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);
},
STACK_ALIGN: 16,
getAlignSize: function(type, size, vararg) {
// we align i64s and doubles on 64-bit boundaries, unlike x86
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
);
},
dynCall: function(sig, ptr, args) {
if (args && args.length) {
if (!args.splice) args = Array.prototype.slice.call(args);
args.splice(0, 0, ptr);
return Module['dynCall_' + sig].apply(null, args);
} else {
return Module['dynCall_' + sig].call(null, ptr);
}
},
functionPointers: [],
addFunction: function(func) {
for (var i = 0; i < Runtime.functionPointers.length; i++) {
if (!Runtime.functionPointers[i]) {
Runtime.functionPointers[i] = func;
return 2 * (1 + i);
}
}
throw 'Finished up all reserved function pointers. Use a higher value for RESERVED_FUNCTION_POINTERS.';
},
removeFunction: function(index) {
Runtime.functionPointers[(index - 2) / 2] = null;
},
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
}
var source = Pointer_stringify(code);
if (source[0] === '"') {
// tolerate EM_ASM("..code..") even though EM_ASM(..code..) is correct
if (source.indexOf('"', 1) === source.length - 1) {
source = source.substr(1, source.length - 2);
} else {
// something invalid happened, e.g. EM_ASM("..code($0)..", input)
abort(
'invalid EM_ASM input |' +
source +
'|. Please use EM_ASM(..code..) (no quotes) or EM_ASM({ ..code($0).. }, input) (to input values)'
);
}
}
try {
// Module is the only 'upvar', which we provide directly. We also provide FS for legacy support.
var evalled = eval(
'(function(Module, FS) { return function(' +
args.join(',') +
'){ ' +
source +
' } })'
)(Module, typeof FS !== 'undefined' ? FS : null);
} catch (e) {
Module.printErr(
'error in executing inline EM_ASM code: ' +
e +
' on: \n\n' +
source +
'\n\nwith args |' +
args +
'| (make sure to use the right one out of EM_ASM, EM_ASM_ARGS, etc.)'
);
throw e;
}
return (Runtime.asmConstCache[code] = evalled);
},
warnOnce: function(text) {
if (!Runtime.warnOnce.shown) Runtime.warnOnce.shown = {};
if (!Runtime.warnOnce.shown[text]) {
Runtime.warnOnce.shown[text] = 1;
Module.printErr(text);
}
},
funcWrappers: {},
getFuncWrapper: function(func, sig) {
assert(sig);
if (!Runtime.funcWrappers[sig]) {
Runtime.funcWrappers[sig] = {};
}
var sigCache = Runtime.funcWrappers[sig];
if (!sigCache[func]) {
sigCache[func] = function dynCall_wrapper() {
return Runtime.dynCall(sig, func, arguments);
};
}
return sigCache[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(
(((codePoint - 0x10000) / 0x400) | 0) + 0xd800,
(codePoint - 0x10000) % 0x400 + 0xdc00
);
}
buffer.length = 0;
return ret;
};
this.processJSString = function processJSString(string) {
/* TODO: use TextEncoder when present,
var encoder = new TextEncoder();
encoder['encoding'] = "utf-8";
var utf8Array = encoder['encode'](aMsg.data);
*/
string = unescape(encodeURIComponent(string));
var ret = [];
for (var i = 0; i < string.length; i++) {
ret.push(string.charCodeAt(i));
}
return ret;
};
},
getCompilerSetting: function(name) {
throw 'You must build with -s RETAIN_COMPILER_SETTINGS=1 for Runtime.getCompilerSetting or emscripten_get_compiler_setting to work';
},
stackAlloc: function(size) {
var ret = STACKTOP;
STACKTOP = (STACKTOP + size) | 0;
STACKTOP = (STACKTOP + 15) & -16;
return ret;
},
staticAlloc: function(size) {
var ret = STATICTOP;
STATICTOP = (STATICTOP + size) | 0;
STATICTOP = (STATICTOP + 15) & -16;
return ret;
},
dynamicAlloc: function(size) {
var ret = DYNAMICTOP;
DYNAMICTOP = (DYNAMICTOP + size) | 0;
DYNAMICTOP = (DYNAMICTOP + 15) & -16;
if (DYNAMICTOP >= TOTAL_MEMORY) enlargeMemory();
return ret;
},
alignMemory: function(size, quantum) {
var ret = (size =
Math.ceil(size / (quantum ? quantum : 16)) * (quantum ? quantum : 16));
return ret;
},
makeBigInt: function(low, high, unsigned) {
var ret = unsigned
? +(low >>> 0) + +(high >>> 0) * 4294967296.0
: +(low >>> 0) + +(high | 0) * 4294967296.0;
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 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;
// Returns the C function with a specified identifier (for C++, you need to do manual name mangling)
function getCFunc(ident) {
var func = Module['_' + ident]; // closure exported function
if (!func) {
try {
func = eval('_' + ident); // explicit lookup
} catch (e) {}
}
assert(
func,
'Cannot call unknown function ' +
ident +
' (perhaps LLVM optimizations or closure removed it?)'
);
return func;
}
var cwrap, ccall;
(function() {
var JSfuncs = {
// Helpers for cwrap -- it can't refer to Runtime directly because it might
// be renamed by closure, instead it calls JSfuncs['stackSave'].body to find
// out what the minified function name is.
stackSave: function() {
Runtime.stackSave();
},
stackRestore: function() {
Runtime.stackRestore();
},
// type conversion from js to c
arrayToC: function(arr) {
var ret = Runtime.stackAlloc(arr.length);
writeArrayToMemory(arr, ret);
return ret;
},
stringToC: function(str) {
var ret = 0;
if (str !== null && str !== undefined && str !== 0) {
// null string
// at most 4 bytes per UTF-8 code point, +1 for the trailing '\0'
ret = Runtime.stackAlloc((str.length << 2) + 1);
writeStringToMemory(str, ret);
}
return ret;
},
};
// For fast lookup of conversion functions
var toC = { string: JSfuncs['stringToC'], array: JSfuncs['arrayToC'] };
// C calling interface.
ccall = function ccallFunc(ident, returnType, argTypes, args) {
var func = getCFunc(ident);
var cArgs = [];
var stack = 0;
if (args) {
for (var i = 0; i < args.length; i++) {
var converter = toC[argTypes[i]];
if (converter) {
if (stack === 0) stack = Runtime.stackSave();
cArgs[i] = converter(args[i]);
} else {
cArgs[i] = args[i];
}
}
}
var ret = func.apply(null, cArgs);
if (returnType === 'string') ret = Pointer_stringify(ret);
if (stack !== 0) Runtime.stackRestore(stack);
return ret;
};
var sourceRegex = /^function\s*\(([^)]*)\)\s*{\s*([^*]*?)[\s;]*(?:return\s*(.*?)[;\s]*)?}$/;
function parseJSFunc(jsfunc) {
// Match the body and the return value of a javascript function source
var parsed = jsfunc
.toString()
.match(sourceRegex)
.slice(1);
return { arguments: parsed[0], body: parsed[1], returnValue: parsed[2] };
}
var JSsource = {};
for (var fun in JSfuncs) {
if (JSfuncs.hasOwnProperty(fun)) {
// Elements of toCsource are arrays of three items:
// the code, and the return value
JSsource[fun] = parseJSFunc(JSfuncs[fun]);
}
}
cwrap = function cwrap(ident, returnType, argTypes) {
argTypes = argTypes || [];
var cfunc = getCFunc(ident);
// When the function takes numbers and returns a number, we can just return
// the original function
var numericArgs = argTypes.every(function(type) {
return type === 'number';
});
var numericRet = returnType !== 'string';
if (numericRet && numericArgs) {
return cfunc;
}
// Creation of the arguments list (["$1","$2",...,"$nargs"])
var argNames = argTypes.map(function(x, i) {
return '$' + i;
});
var funcstr = '(function(' + argNames.join(',') + ') {';
var nargs = argTypes.length;
if (!numericArgs) {
// Generate the code needed to convert the arguments from javascript
// values to pointers
funcstr += 'var stack = ' + JSsource['stackSave'].body + ';';
for (var i = 0; i < nargs; i++) {
var arg = argNames[i],
type = argTypes[i];
if (type === 'number') continue;
var convertCode = JSsource[type + 'ToC']; // [code, return]
funcstr += 'var ' + convertCode.arguments + ' = ' + arg + ';';
funcstr += convertCode.body + ';';
funcstr += arg + '=' + convertCode.returnValue + ';';
}
}
// When the code is compressed, the name of cfunc is not literally 'cfunc' anymore
var cfuncname = parseJSFunc(function() {
return cfunc;
}).returnValue;
// Call the function
funcstr += 'var ret = ' + cfuncname + '(' + argNames.join(',') + ');';
if (!numericRet) {
// Return type can only by 'string' or 'number'
// Convert the result to a string
var strgfy = parseJSFunc(function() {
return Pointer_stringify;
}).returnValue;
funcstr += 'ret = ' + strgfy + '(ret);';
}
if (!numericArgs) {
// If we had a stack, restore it
funcstr += JSsource['stackRestore'].body.replace('()', '(stack)') + ';';
}
funcstr += 'return ret})';
return eval(funcstr);
};
})();
Module['cwrap'] = cwrap;
Module['ccall'] = ccall;
function setValue(ptr, value, type, noSafe) {
type = type || 'i8';
if (type.charAt(type.length - 1) === '*') type = 'i32'; // pointers are 32-bit
switch (type) {
case 'i1':
HEAP8[ptr >> 0] = value;
break;
case 'i8':
HEAP8[ptr >> 0] = value;
break;
case 'i16':
HEAP16[ptr >> 1] = value;
break;
case 'i32':
HEAP32[ptr >> 2] = value;
break;
case 'i64':
(tempI64 = [
value >>> 0,
((tempDouble = value),
+Math_abs(tempDouble) >= 1.0
? tempDouble > 0.0
? (Math_min(+Math_floor(tempDouble / 4294967296.0), 4294967295.0) |
0) >>>
0
: ~~+Math_ceil(
(tempDouble - +(~~tempDouble >>> 0)) / 4294967296.0
) >>> 0
: 0),
]),
(HEAP32[ptr >> 2] = tempI64[0]),
(HEAP32[(ptr + 4) >> 2] = tempI64[1]);
break;
case 'float':
HEAPF32[ptr >> 2] = value;
break;
case 'double':
HEAPF64[ptr >> 3] = value;
break;
default:
abort('invalid type for setValue: ' + type);
}
}
Module['setValue'] = 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 >> 0];
case 'i8':
return HEAP8[ptr >> 0];
case 'i16':
return HEAP16[ptr >> 1];
case 'i32':
return HEAP32[ptr >> 2];
case 'i64':
return HEAP32[ptr >> 2];
case 'float':
return HEAPF32[ptr >> 2];
case 'double':
return HEAPF64[ptr >> 3];
default:
abort('invalid type for setValue: ' + type);
}
return null;
}
Module['getValue'] = getValue;
var ALLOC_NORMAL = 0; // 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;
}
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) {
if (length === 0 || !ptr) return '';
// TODO: use TextDecoder
// Find the length, and check for UTF while doing so
var hasUtf = false;
var t;
var i = 0;
while (1) {
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++) {
t = HEAPU8[(ptr + i) >> 0];
ret += utf8.processCChar(t);
}
return ret;
}
Module['Pointer_stringify'] = Pointer_stringify;
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;
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;
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;
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) {
var hasLibcxxabi = !!Module['___cxa_demangle'];
if (hasLibcxxabi) {
try {
var buf = _malloc(func.length);
writeStringToMemory(func.substr(1), buf);
var status = _malloc(4);
var ret = Module['___cxa_demangle'](buf, 0, 0, status);
if (getValue(status, 'i32') === 0 && ret) {
return Pointer_stringify(ret);
}
// otherwise, libcxxabi failed, we can try ours which may return a partial result
} catch (e) {
// failure when using libcxxabi, we can try ours which may return a partial result
} finally {
if (buf) _free(buf);
if (status) _free(status);
if (ret) _free(ret);
}
}
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: '...',
};
var subs = [];
var first = true;
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 + '^');
}
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;
}
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)
if (rawList) {
if (ret) {
list.push(ret + '?');
}
return list;
} else {
return ret + flushList();
}
}
var parsed = 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()';
}
parsed = parse();
} catch (e) {
parsed += '?';
}
if (parsed.indexOf('?') >= 0 && !hasLibcxxabi) {
Runtime.warnOnce(
'warning: a problem occurred in builtin C++ name demangling; build with -s DEMANGLE_SUPPORT=1 to link in libcxxabi demangling'
);
}
return parsed;
}
function demangleAll(text) {
return text.replace(/__Z[\w\d_]+/g, function(x) {
var y = demangle(x);
return x === y ? x : x + ' [' + y + ']';
});
}
function jsStackTrace() {
var err = new Error();
if (!err.stack) {
// IE10+ special cases: It does have callstack info, but it is only populated if an Error object is thrown,
// so try that as a special-case.
try {
throw new Error(0);
} catch (e) {
err = e;
}
if (!err.stack) {
return '(no stack trace available)';
}
}
return err.stack.toString();
}
function stackTrace() {
return demangleAll(jsStackTrace());
}
Module['stackTrace'] = stackTrace;
// 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'] || 16777216;
var FAST_MEMORY = Module['FAST_MEMORY'] || 2097152;
var totalMemory = 64 * 1024;
while (totalMemory < TOTAL_MEMORY || totalMemory < 2 * TOTAL_STACK) {
if (totalMemory < 16 * 1024 * 1024) {
totalMemory *= 2;
} else {
totalMemory += 16 * 1024 * 1024;
}
}
if (totalMemory !== TOTAL_MEMORY) {
Module.printErr(
'increasing TOTAL_MEMORY to ' +
totalMemory +
' to be compliant with the asm.js spec'
);
TOTAL_MEMORY = totalMemory;
}
// 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'],
'JS engine does not provide full typed array support'
);
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['buffer'] = buffer;
Module['HEAP8'] = HEAP8;
Module['HEAP16'] = HEAP16;
Module['HEAP32'] = HEAP32;
Module['HEAPU8'] = HEAPU8;
Module['HEAPU16'] = HEAPU16;
Module['HEAPU32'] = HEAPU32;
Module['HEAPF32'] = HEAPF32;
Module['HEAPF64'] = HEAPF64;
function callRuntimeCallbacks(callbacks) {
while (callbacks.length > 0) {
var callback = callbacks.shift();
if (typeof callback == 'function') {
callback();
continue;
}
var func = callback.func;
if (typeof func === 'number') {
if (callback.arg === undefined) {
Runtime.dynCall('v', func);
} else {
Runtime.dynCall('vi', func, [callback.arg]);
}
} else {
func(callback.arg === undefined ? null : callback.arg);
}
}
}
var __ATPRERUN__ = []; // 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;
var runtimeExited = 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__);
runtimeExited = true;
}
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
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) {
chr &= 0xff;
}
ret.push(String.fromCharCode(chr));
}
return ret.join('');
}
Module['intArrayToString'] = intArrayToString;
function writeStringToMemory(string, buffer, dontAddNull) {
var array = intArrayFromString(string, dontAddNull);
var i = 0;
while (i < array.length) {
var chr = array[i];
HEAP8[(buffer + i) >> 0] = chr;
i = i + 1;
}
}
Module['writeStringToMemory'] = writeStringToMemory;
function writeArrayToMemory(array, buffer) {
for (var i = 0; i < array.length; i++) {
HEAP8[(buffer + i) >> 0] = array[i];
}
}
Module['writeArrayToMemory'] = writeArrayToMemory;
function writeAsciiToMemory(str, buffer, dontAddNull) {
for (var i = 0; i < str.length; i++) {
HEAP8[(buffer + i) >> 0] = str.charCodeAt(i);
}
if (!dontAddNull) HEAP8[(buffer + str.length) >> 0] = 0;
}
Module['writeAsciiToMemory'] = writeAsciiToMemory;
function unSign(value, bits, ignore) {
if (value >= 0) {
return value;
}
return bits <= 32
? 2 * Math.abs(1 << (bits - 1)) + value // Need some trickery, since if bits == 32, we are right at the limit of the bits JS uses in bitshifts
: Math.pow(2, bits) + value;
}
function reSign(value, bits, ignore) {
if (value <= 0) {
return value;
}
var half =
bits <= 32
? Math.abs(1 << (bits - 1)) // abs is needed if bits == 32
: Math.pow(2, bits - 1);
if (value >= half && (bits <= 32 || value > half)) {
// for huge values, we can hit the precision limit and always get true here. so don't do that
// but, in general there is no perfect solution here. With 64-bit ints, we get rounding and errors
// TODO: In i64 mode 1, resign the two parts separately and safely
value = -2 * half + value; // Cannot bitshift half, as it may be at the limit of the bits JS uses in bitshifts
}
return value;
}
// 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
function addRunDependency(id) {
runDependencies++;
if (Module['monitorRunDependencies']) {
Module['monitorRunDependencies'](runDependencies);
}
}
Module['addRunDependency'] = addRunDependency;
function removeRunDependency(id) {
runDependencies--;
if (Module['monitorRunDependencies']) {
Module['monitorRunDependencies'](runDependencies);
}
if (runDependencies == 0) {
if (runDependencyWatcher !== null) {
clearInterval(runDependencyWatcher);
runDependencyWatcher = null;
}
if (dependenciesFulfilled) {
var callback = dependenciesFulfilled;
dependenciesFulfilled = null;
callback(); // 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 + 33040;
/* global initializers */ __ATINIT__.push();
/* memory initializer */ allocate(
[
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
133,
59,
140,
1,
189,
241,
36,
255,
248,
37,
195,
1,
96,
220,
55,
0,
183,
76,
62,
255,
195,
66,
61,
0,
50,
76,
164,
1,
225,
164,
76,
255,
76,
61,
163,
255,
117,
62,
31,
0,
81,
145,
64,
255,
118,
65,
14,
0,
162,
115,
214,
255,
6,
138,
46,
0,
124,
230,
244,
255,
10,
138,
143,
0,
52,
26,
194,
0,
184,
244,
76,
0,
129,
143,
41,
1,
190,
244,
19,
255,
123,
170,
122,
255,
98,
129,
68,
0,
121,
213,
147,
0,
86,
101,
30,
255,
161,
103,
155,
0,
140,
89,
67,
255,
239,
229,
190,
1,
67,
11,
181,
0,
198,
240,
137,
254,
238,
69,
188,
255,
67,
151,
238,
0,
19,
42,
108,
255,
229,
85,
113,
1,
50,
68,
135,
255,
17,
106,
9,
0,
50,
103,
1,
255,
80,
1,
168,
1,
35,
152,
30,
255,
16,
168,
185,
1,
56,
89,
232,
255,
101,
210,
252,
0,
41,
250,
71,
0,
204,
170,
79,
255,
14,
46,
239,
255,
80,
77,
239,
0,
189,
214,
75,
255,
17,
141,
249,
0,
38,
80,
76,
255,
190,
85,
117,
0,
86,
228,
170,
0,
156,
216,
208,
1,
195,
207,
164,
255,
150,
66,
76,
255,
175,
225,
16,
255,
141,
80,
98,
1,
76,
219,
242,
0,
198,
162,
114,
0,
46,
218,
152,
0,
155,
43,
241,
254,
155,
160,
104,
255,
51,
187,
165,
0,
2,
17,
175,
0,
66,
84,
160,
1,
247,
58,
30,
0,
35,
65,
53,
254,
69,
236,
191,
0,
45,
134,
245,
1,
163,
123,
221,
0,
32,
110,
20,
255,
52,
23,
165,
0,
186,
214,
71,
0,
233,
176,
96,
0,
242,
239,
54,
1,
57,
89,
138,
0,
83,
0,
84,
255,
136,
160,
100,
0,
92,
142,
120,
254,
104,
124,
190,
0,
181,
177,
62,
255,
250,
41,
85,
0,
152,
130,
42,
1,
96,
252,
246,
0,
151,
151,
63,
254,
239,
133,
62,
0,
32,
56,
156,
0,
45,
167,
189,
255,
142,
133,
179,
1,
131,
86,
211,
0,
187,
179,
150,
254,
250,
170,
14,
255,
210,
163,
78,
0,
37,
52,
151,
0,
99,
77,
26,
0,
238,
156,
213,
255,
213,
192,
209,
1,
73,
46,
84,
0,
20,
65,
41,
1,
54,
206,
79,
0,
201,
131,
146,
254,
170,
111,
24,
255,
177,
33,
50,
254,
171,
38,
203,
255,
78,
247,
116,
0,
209,
221,
153,
0,
133,
128,
178,
1,
58,
44,
25,
0,
201,
39,
59,
1,
189,
19,
252,
0,
49,
229,
210,
1,
117,
187,
117,
0,
181,
179,
184,
1,
0,
114,
219,
0,
48,
94,
147,
0,
245,
41,
56,
0,
125,
13,
204,
254,
244,
173,
119,
0,
44,
221,
32,
254,
84,
234,
20,
0,
249,
160,
198,
1,
236,
126,
234,
255,
47,
99,
168,
254,
170,
226,
153,
255,
102,
179,
216,
0,
226,
141,
122,
255,
122,
66,
153,
254,
182,
245,
134,
0,
227,
228,
25,
1,
214,
57,
235,
255,
216,
173,
56,
255,
181,
231,
210,
0,
119,
128,
157,
255,
129,
95,
136,
255,
110,
126,
51,
0,
2,
169,
183,
255,
7,
130,
98,
254,
69,
176,
94,
255,
116,
4,
227,
1,
217,
242,
145,
255,
202,
173,
31,
1,
105,
1,
39,
255,
46,
175,
69,
0,
228,
47,
58,
255,
215,
224,
69,
254,
207,
56,
69,
255,
16,
254,
139,
255,
23,
207,
212,
255,
202,
20,
126,
255,
95,
213,
96,
255,
9,
176,
33,
0,
200,
5,
207,
255,
241,
42,
128,
254,
35,
33,
192,
255,
248,
229,
196,
1,
129,
17,
120,
0,
251,
103,
151,
255,
7,
52,
112,
255,
140,
56,
66,
255,
40,
226,
245,
255,
217,
70,
37,
254,
172,
214,
9,
255,
72,
67,
134,
1,
146,
192,
214,
255,
44,
38,
112,
0,
68,
184,
75,
255,
206,
90,
251,
0,
149,
235,
141,
0,
181,
170,
58,
0,
116,
244,
239,
0,
92,
157,
2,
0,
102,
173,
98,
0,
233,
137,
96,
1,
127,
49,
203,
0,
5,
155,
148,
0,
23,
148,
9,
255,
211,
122,
12,
0,
34,
134,
26,
255,
219,
204,
136,
0,
134,
8,
41,
255,
224,
83,
43,
254,
85,
25,
247,
0,
109,
127,
0,
254,
169,
136,
48,
0,
238,
119,
219,
255,
231,
173,
213,
0,
206,
18,
254,
254,
8,
186,
7,
255,
126,
9,
7,
1,
111,
42,
72,
0,
111,
52,
236,
254,
96,
63,
141,
0,
147,
191,
127,
254,
205,
78,
192,
255,
14,
106,
237,
1,
187,
219,
76,
0,
175,
243,
187,
254,
105,
89,
173,
0,
85,
25,
89,
1,
162,
243,
148,
0,
2,
118,
209,
254,
33,
158,
9,
0,
139,
163,
46,
255,
93,
70,
40,
0,
108,
42,
142,
254,
111,
252,
142,
255,
155,
223,
144,
0,
51,
229,
167,
255,
73,
252,
155,
255,
94,
116,
12,
255,
152,
160,
218,
255,
156,
238,
37,
255,
179,
234,
207,
255,
197,
0,
179,
255,
154,
164,
141,
0,
225,
196,
104,
0,
10,
35,
25,
254,
209,
212,
242,
255,
97,
253,
222,
254,
184,
101,
229,
0,
222,
18,
127,
1,
164,
136,
135,
255,
30,
207,
140,
254,
146,
97,
243,
0,
129,
192,
26,
254,
201,
84,
33,
255,
111,
10,
78,
255,
147,
81,
178,
255,
4,
4,
24,
0,
161,
238,
215,
255,
6,
141,
33,
0,
53,
215,
14,
255,
41,
181,
208,
255,
231,
139,
157,
0,
179,
203,
221,
255,
255,
185,
113,
0,
189,
226,
172,
255,
113,
66,
214,
255,
202,
62,
45,
255,
102,
64,
8,
255,
78,
174,
16,
254,
133,
117,
68,
255,
182,
120,
89,
255,
133,
114,
211,
0,
189,
110,
21,
255,
15,
10,
106,
0,
41,
192,
1,
0,
152,
232,
121,
255,
188,
60,
160,
255,
153,
113,
206,
255,
0,
183,
226,
254,
180,
13,
72,
255,
176,
160,
14,
254,
211,
201,
134,
255,
158,
24,
143,
0,
127,
105,
53,
0,
96,
12,
189,
0,
167,
215,
251,
255,
159,
76,
128,
254,
106,
101,
225,
255,
30,
252,
4,
0,
146,
12,
174,
0,
89,
241,
178,
254,
10,
229,
166,
255,
123,
221,
42,
254,
30,
20,
212,
0,
82,
128,
3,
0,
48,
209,
243,
0,
119,
121,
64,
255,
50,
227,
156,
255,
0,
110,
197,
1,
103,
27,
144,
0,
133,
59,
140,
1,
189,
241,
36,
255,
248,
37,
195,
1,
96,
220,
55,
0,
183,
76,
62,
255,
195,
66,
61,
0,
50,
76,
164,
1,
225,
164,
76,
255,
76,
61,
163,
255,
117,
62,
31,
0,
81,
145,
64,
255,
118,
65,
14,
0,
162,
115,
214,
255,
6,
138,
46,
0,
124,
230,
244,
255,
10,
138,
143,
0,
52,
26,
194,
0,
184,
244,
76,
0,
129,
143,
41,
1,
190,
244,
19,
255,
123,
170,
122,
255,
98,
129,
68,
0,
121,
213,
147,
0,
86,
101,
30,
255,
161,
103,
155,
0,
140,
89,
67,
255,
239,
229,
190,
1,
67,
11,
181,
0,
198,
240,
137,
254,
238,
69,
188,
255,
234,
113,
60,
255,
37,
255,
57,
255,
69,
178,
182,
254,
128,
208,
179,
0,
118,
26,
125,
254,
3,
7,
214,
255,
241,
50,
77,
255,
85,
203,
197,
255,
211,
135,
250,
255,
25,
48,
100,
255,
187,
213,
180,
254,
17,
88,
105,
0,
83,
209,
158,
1,
5,
115,
98,
0,
4,
174,
60,
254,
171,
55,
110,
255,
217,
181,
17,
255,
20,
188,
170,
0,
146,
156,
102,
254,
87,
214,
174,
255,
114,
122,
155,
1,
233,
44,
170,
0,
127,
8,
239,
1,
214,
236,
234,
0,
175,
5,
219,
0,
49,
106,
61,
255,
6,
66,
208,
255,
2,
106,
110,
255,
81,
234,
19,
255,
215,
107,
192,
255,
67,
151,
238,
0,
19,
42,
108,
255,
229,
85,
113,
1,
50,
68,
135,
255,
17,
106,
9,
0,
50,
103,
1,
255,
80,
1,
168,
1,
35,
152,
30,
255,
16,
168,
185,
1,
56,
89,
232,
255,
101,
210,
252,
0,
41,
250,
71,
0,
204,
170,
79,
255,
14,
46,
239,
255,
80,
77,
239,
0,
189,
214,
75,
255,
17,
141,
249,
0,
38,
80,
76,
255,
190,
85,
117,
0,
86,
228,
170,
0,
156,
216,
208,
1,
195,
207,
164,
255,
150,
66,
76,
255,
175,
225,
16,
255,
141,
80,
98,
1,
76,
219,
242,
0,
198,
162,
114,
0,
46,
218,
152,
0,
155,
43,
241,
254,
155,
160,
104,
255,
178,
9,
252,
254,
100,
110,
212,
0,
14,
5,
167,
0,
233,
239,
163,
255,
28,
151,
157,
1,
101,
146,
10,
255,
254,
158,
70,
254,
71,
249,
228,
0,
88,
30,
50,
0,
68,
58,
160,
255,
191,
24,
104,
1,
129,
66,
129,
255,
192,
50,
85,
255,
8,
179,
138,
255,
38,
250,
201,
0,
115,
80,
160,
0,
131,
230,
113,
0,
125,
88,
147,
0,
90,
68,
199,
0,
253,
76,
158,
0,
28,
255,
118,
0,
113,
250,
254,
0,
66,
75,
46,
0,
230,
218,
43,
0,
229,
120,
186,
1,
148,
68,
43,
0,
136,
124,
238,
1,
187,
107,
197,
255,
84,
53,
246,
255,
51,
116,
254,
255,
51,
187,
165,
0,
2,
17,
175,
0,
66,
84,
160,
1,
247,
58,
30,
0,
35,
65,
53,
254,
69,
236,
191,
0,
45,
134,
245,
1,
163,
123,
221,
0,
32,
110,
20,
255,
52,
23,
165,
0,
186,
214,
71,
0,
233,
176,
96,
0,
242,
239,
54,
1,
57,
89,
138,
0,
83,
0,
84,
255,
136,
160,
100,
0,
92,
142,
120,
254,
104,
124,
190,
0,
181,
177,
62,
255,
250,
41,
85,
0,
152,
130,
42,
1,
96,
252,
246,
0,
151,
151,
63,
254,
239,
133,
62,
0,
32,
56,
156,
0,
45,
167,
189,
255,
142,
133,
179,
1,
131,
86,
211,
0,
187,
179,
150,
254,
250,
170,
14,
255,
68,
113,
21,
255,
222,
186,
59,
255,
66,
7,
241,
1,
69,
6,
72,
0,
86,
156,
108,
254,
55,
167,
89,
0,
109,
52,
219,
254,
13,
176,
23,
255,
196,
44,
106,
255,
239,
149,
71,
255,
164,
140,
125,
255,
159,
173,
1,
0,
51,
41,
231,
0,
145,
62,
33,
0,
138,
111,
93,
1,
185,
83,
69,
0,
144,
115,
46,
0,
97,
151,
16,
255,
24,
228,
26,
0,
49,
217,
226,
0,
113,
75,
234,
254,
193,
153,
12,
255,
182,
48,
96,
255,
14,
13,
26,
0,
128,
195,
249,
254,
69,
193,
59,
0,
132,
37,
81,
254,
125,
106,
60,
0,
214,
240,
169,
1,
164,
227,
66,
0,
210,
163,
78,
0,
37,
52,
151,
0,
99,
77,
26,
0,
238,
156,
213,
255,
213,
192,
209,
1,
73,
46,
84,
0,
20,
65,
41,
1,
54,
206,
79,
0,
201,
131,
146,
254,
170,
111,
24,
255,
177,
33,
50,
254,
171,
38,
203,
255,
78,
247,
116,
0,
209,
221,
153,
0,
133,
128,
178,
1,
58,
44,
25,
0,
201,
39,
59,
1,
189,
19,
252,
0,
49,
229,
210,
1,
117,
187,
117,
0,
181,
179,
184,
1,
0,
114,
219,
0,
48,
94,
147,
0,
245,
41,
56,
0,
125,
13,
204,
254,
244,
173,
119,
0,
44,
221,
32,
254,
84,
234,
20,
0,
249,
160,
198,
1,
236,
126,
234,
255,
143,
62,
221,
0,
129,
89,
214,
255,
55,
139,
5,
254,
68,
20,
191,
255,
14,
204,
178,
1,
35,
195,
217,
0,
47,
51,
206,
1,
38,
246,
165,
0,
206,
27,
6,
254,
158,
87,
36,
0,
217,
52,
146,
255,
125,
123,
215,
255,
85,
60,
31,
255,
171,
13,
7,
0,
218,
245,
88,
254,
252,
35,
60,
0,
55,
214,
160,
255,
133,
101,
56,
0,
224,
32,
19,
254,
147,
64,
234,
0,
26,
145,
162,
1,
114,
118,
125,
0,
248,
252,
250,
0,
101,
94,
196,
255,
198,
141,
226,
254,
51,
42,
182,
0,
135,
12,
9,
254,
109,
172,
210,
255,
197,
236,
194,
1,
241,
65,
154,
0,
48,
156,
47,
255,
153,
67,
55,
255,
218,
165,
34,
254,
74,
180,
179,
0,
218,
66,
71,
1,
88,
122,
99,
0,
212,
181,
219,
255,
92,
42,
231,
255,
239,
0,
154,
0,
245,
77,
183,
255,
94,
81,
170,
1,
18,
213,
216,
0,
171,
93,
71,
0,
52,
94,
248,
0,
18,
151,
161,
254,
197,
209,
66,
255,
174,
244,
15,
254,
162,
48,
183,
0,
49,
61,
240,
254,
182,
93,
195,
0,
199,
228,
6,
1,
200,
5,
17,
255,
137,
45,
237,
255,
108,
148,
4,
0,
90,
79,
237,
255,
39,
63,
77,
255,
53,
82,
207,
1,
142,
22,
118,
255,
101,
232,
18,
1,
92,
26,
67,
0,
5,
200,
88,
255,
33,
168,
138,
255,
149,
225,
72,
0,
2,
209,
27,
255,
44,
245,
168,
1,
220,
237,
17,
255,
30,
211,
105,
254,
141,
238,
221,
0,
128,
80,
245,
254,
111,
254,
14,
0,
222,
95,
190,
1,
223,
9,
241,
0,
146,
76,
212,
255,
108,
205,
104,
255,
63,
117,
153,
0,
144,
69,
48,
0,
35,
228,
111,
0,
192,
33,
193,
255,
112,
214,
190,
254,
115,
152,
151,
0,
23,
102,
88,
0,
51,
74,
248,
0,
226,
199,
143,
254,
204,
162,
101,
255,
208,
97,
189,
1,
245,
104,
18,
0,
230,
246,
30,
255,
23,
148,
69,
0,
110,
88,
52,
254,
226,
181,
89,
255,
208,
47,
90,
254,
114,
161,
80,
255,
33,
116,
248,
0,
179,
152,
87,
255,
69,
144,
177,
1,
88,
238,
26,
255,
58,
32,
113,
1,
1,
77,
69,
0,
59,
121,
52,
255,
152,
238,
83,
0,
52,
8,
193,
0,
231,
39,
233,
255,
199,
34,
138,
0,
222,
68,
173,
0,
91,
57,
242,
254,
220,
210,
127,
255,
192,
7,
246,
254,
151,
35,
187,
0,
195,
236,
165,
0,
111,
93,
206,
0,
212,
247,
133,
1,
154,
133,
209,
255,
155,
231,
10,
0,
64,
78,
38,
0,
122,
249,
100,
1,
30,
19,
97,
255,
62,
91,
249,
1,
248,
133,
77,
0,
197,
63,
168,
254,
116,
10,
82,
0,
184,
236,
113,
254,
212,
203,
194,
255,
61,
100,
252,
254,
36,
5,
202,
255,
119,
91,
153,
255,
129,
79,
29,
0,
103,
103,
171,
254,
237,
215,
111,
255,
216,
53,
69,
0,
239,
240,
23,
0,
194,
149,
221,
255,
38,
225,
222,
0,
232,
255,
180,
254,
118,
82,
133,
255,
57,
209,
177,
1,
139,
232,
133,
0,
158,
176,
46,
254,
194,
115,
46,
0,
88,
247,
229,
1,
28,
103,
191,
0,
221,
222,
175,
254,
149,
235,
44,
0,
151,
228,
25,
254,
218,
105,
103,
0,
142,
85,
210,
0,
149,
129,
190,
255,
213,
65,
94,
254,
117,
134,
224,
255,
82,
198,
117,
0,
157,
221,
220,
0,
163,
101,
36,
0,
197,
114,
37,
0,
104,
172,
166,
254,
11,
182,
0,
0,
81,
72,
188,
255,
97,
188,
16,
255,
69,
6,
10,
0,
199,
147,
145,
255,
8,
9,
115,
1,
65,
214,
175,
255,
217,
173,
209,
0,
80,
127,
166,
0,
247,
229,
4,
254,
167,
183,
124,
255,
90,
28,
204,
254,
175,
59,
240,
255,
11,
41,
248,
1,
108,
40,
51,
255,
144,
177,
195,
254,
150,
250,
126,
0,
138,
91,
65,
1,
120,
60,
222,
255,
245,
193,
239,
0,
29,
214,
189,
255,
128,
2,
25,
0,
80,
154,
162,
0,
77,
220,
107,
1,
234,
205,
74,
255,
54,
166,
103,
255,
116,
72,
9,
0,
228,
94,
47,
255,
30,
200,
25,
255,
35,
214,
89,
255,
61,
176,
140,
255,
83,
226,
163,
255,
75,
130,
172,
0,
128,
38,
17,
0,
95,
137,
152,
255,
215,
124,
159,
1,
79,
93,
0,
0,
148,
82,
157,
254,
195,
130,
251,
255,
40,
202,
76,
255,
251,
126,
224,
0,
157,
99,
62,
254,
207,
7,
225,
255,
96,
68,
195,
0,
140,
186,
157,
255,
131,
19,
231,
255,
42,
128,
254,
0,
52,
219,
61,
254,
102,
203,
72,
0,
141,
7,
11,
255,
186,
164,
213,
0,
31,
122,
119,
0,
133,
242,
145,
0,
208,
252,
232,
255,
91,
213,
182,
255,
143,
4,
250,
254,
249,
215,
74,
0,
165,
30,
111,
1,
171,
9,
223,
0,
229,
123,
34,
1,
92,
130,
26,
255,
77,
155,
45,
1,
195,
139,
28,
255,
59,
224,
78,
0,
136,
17,
247,
0,
108,
121,
32,
0,
79,
250,
189,
255,
96,
227,
252,
254,
38,
241,
62,
0,
62,
174,
125,
255,
155,
111,
93,
255,
10,
230,
206,
1,
97,
197,
40,
255,
0,
49,
57,
254,
65,
250,
13,
0,
18,
251,
150,
255,
220,
109,
210,
255,
5,
174,
166,
254,
44,
129,
189,
0,
235,
35,
147,
255,
37,
247,
141,
255,
72,
141,
4,
255,
103,
107,
255,
0,
247,
90,
4,
0,
53,
44,
42,
0,
2,
30,
240,
0,
4,
59,
63,
0,
88,
78,
36,
0,
113,
167,
180,
0,
190,
71,
193,
255,
199,
158,
164,
255,
58,
8,
172,
0,
77,
33,
12,
0,
65,
63,
3,
0,
153,
77,
33,
255,
172,
254,
102,
1,
228,
221,
4,
255,
87,
30,
254,
1,
146,
41,
86,
255,
138,
204,
239,
254,
108,
141,
17,
255,
187,
242,
135,
0,
210,
208,
127,
0,
68,
45,
14,
254,
73,
96,
62,
0,
81,
60,
24,
255,
170,
6,
36,
255,
3,
249,
26,
0,
35,
213,
109,
0,
22,
129,
54,
255,
21,
35,
225,
255,
234,
61,
56,
255,
58,
217,
6,
0,
143,
124,
88,
0,
236,
126,
66,
0,
209,
38,
183,
255,
34,
238,
6,
255,
174,
145,
102,
0,
95,
22,
211,
0,
196,
15,
153,
254,
46,
84,
232,
255,
117,
34,
146,
1,
231,
250,
74,
255,
27,
134,
100,
1,
92,
187,
195,
255,
170,
198,
112,
0,
120,
28,
42,
0,
209,
70,
67,
0,
29,
81,
31,
0,
29,
168,
100,
1,
169,
173,
160,
0,
107,
35,
117,
0,
62,
96,
59,
255,
81,
12,
69,
1,
135,
239,
190,
255,
220,
252,
18,
0,
163,
220,
58,
255,
137,
137,
188,
255,
83,
102,
109,
0,
96,
6,
76,
0,
234,
222,
210,
255,
185,
174,
205,
1,
60,
158,
213,
255,
13,
241,
214,
0,
172,
129,
140,
0,
93,
104,
242,
0,
192,
156,
251,
0,
43,
117,
30,
0,
225,
81,
158,
0,
127,
232,
218,
0,
226,
28,
203,
0,
233,
27,
151,
255,
117,
43,
5,
255,
242,
14,
47,
255,
33,
20,
6,
0,
137,
251,
44,
254,
27,
31,
245,
255,
183,
214,
125,
254,
40,
121,
149,
0,
186,
158,
213,
255,
89,
8,
227,
0,
69,
88,
0,
254,
203,
135,
225,
0,
201,
174,
203,
0,
147,
71,
184,
0,
18,
121,
41,
254,
94,
5,
78,
0,
224,
214,
240,
254,
36,
5,
180,
0,
251,
135,
231,
1,
163,
138,
212,
0,
210,
249,
116,
254,
88,
129,
187,
0,
19,
8,
49,
254,
62,
14,
144,
255,
159,
76,
211,
0,
214,
51,
82,
0,
109,
117,
228,
254,
103,
223,
203,
255,
75,
252,
15,
1,
154,
71,
220,
255,
23,
13,
91,
1,
141,
168,
96,
255,
181,
182,
133,
0,
250,
51,
55,
0,
234,
234,
212,
254,
175,
63,
158,
0,
39,
240,
52,
1,
158,
189,
36,
255,
213,
40,
85,
1,
32,
180,
247,
255,
19,
102,
26,
1,
84,
24,
97,
255,
69,
21,
222,
0,
148,
139,
122,
255,
220,
213,
235,
1,
232,
203,
255,
0,
121,
57,
147,
0,
227,
7,
154,
0,
53,
22,
147,
1,
72,
1,
225,
0,
82,
134,
48,
254,
83,
60,
157,
255,
145,
72,
169,
0,
34,
103,
239,
0,
198,
233,
47,
0,
116,
19,
4,
255,
184,
106,
9,
255,
183,
129,
83,
0,
36,
176,
230,
1,
34,
103,
72,
0,
219,
162,
134,
0,
245,
42,
158,
0,
32,
149,
96,
254,
165,
44,
144,
0,
202,
239,
72,
254,
215,
150,
5,
0,
42,
66,
36,
1,
132,
215,
175,
0,
86,
174,
86,
255,
26,
197,
156,
255,
49,
232,
135,
254,
103,
182,
82,
0,
253,
128,
176,
1,
153,
178,
122,
0,
245,
250,
10,
0,
236,
24,
178,
0,
137,
106,
132,
0,
40,
29,
41,
0,
50,
30,
152,
255,
124,
105,
38,
0,
230,
191,
75,
0,
143,
43,
170,
0,
44,
131,
20,
255,
44,
13,
23,
255,
237,
255,
155,
1,
159,
109,
100,
255,
112,
181,
24,
255,
104,
220,
108,
0,
55,
211,
131,
0,
99,
12,
213,
255,
152,
151,
145,
255,
238,
5,
159,
0,
97,
155,
8,
0,
33,
108,
81,
0,
1,
3,
103,
0,
62,
109,
34,
255,
250,
155,
180,
0,
32,
71,
195,
255,
38,
70,
145,
1,
159,
95,
245,
0,
69,
229,
101,
1,
136,
28,
240,
0,
79,
224,
25,
0,
78,
110,
121,
255,
248,
168,
124,
0,
187,
128,
247,
0,
2,
147,
235,
254,
79,
11,
132,
0,
70,
58,
12,
1,
181,
8,
163,
255,
79,
137,
133,
255,
37,
170,
11,
255,
141,
243,
85,
255,
176,
231,
215,
255,
204,
150,
164,
255,
239,
215,
39,
255,
46,
87,
156,
254,
8,
163,
88,
255,
172,
34,
232,
0,
66,
44,
102,
255,
27,
54,
41,
254,
236,
99,
87,
255,
41,
123,
169,
1,
52,
114,
43,
0,
117,
134,
40,
0,
155,
134,
26,
0,
231,
207,
91,
254,
35,
132,
38,
255,
19,
102,
125,
254,
36,
227,
133,
255,
118,
3,
113,
255,
29,
13,
124,
0,
152,
96,
74,
1,
88,
146,
206,
255,
167,
191,
220,
254,
162,
18,
88,
255,
182,
100,
23,
0,
31,
117,
52,
0,
81,
46,
106,
1,
12,
2,
7,
0,
69,
80,
201,
1,
209,
246,
172,
0,
12,
48,
141,
1,
224,
211,
88,
0,
116,
226,
159,
0,
122,
98,
130,
0,
65,
236,
234,
1,
225,
226,
9,
255,
207,
226,
123,
1,
89,
214,
59,
0,
112,
135,
88,
1,
90,
244,
203,
255,
49,
11,
38,
1,
129,
108,
186,
0,
89,
112,
15,
1,
101,
46,
204,
255,
127,
204,
45,
254,
79,
255,
221,
255,
51,
73,
18,
255,
127,
42,
101,
255,
241,
21,
202,
0,
160,
227,
7,
0,
105,
50,
236,
0,
79,
52,
197,
255,
104,
202,
208,
1,
180,
15,
16,
0,
101,
197,
78,
255,
98,
77,
203,
0,
41,
185,
241,
1,
35,
193,
124,
0,
35,
155,
23,
255,
207,
53,
192,
0,
11,
125,
163,
1,
249,
158,
185,
255,
4,
131,
48,
0,
21,
93,
111,
255,
61,
121,
231,
1,
69,
200,
36,
255,
185,
48,
185,
255,
111,
238,
21,
255,
39,
50,
25,
255,
99,
215,
163,
255,
87,
212,
30,
255,
164,
147,
5,
255,
128,
6,
35,
1,
108,
223,
110,
255,
194,
76,
178,
0,
74,
101,
180,
0,
243,
47,
48,
0,
174,
25,
43,
255,
82,
173,
253,
1,
54,
114,
192,
255,
40,
55,
91,
0,
215,
108,
176,
255,
11,
56,
7,
0,
224,
233,
76,
0,
209,
98,
202,
254,
242,
25,
125,
0,
44,
193,
93,
254,
203,
8,
177,
0,
135,
176,
19,
0,
112,
71,
213,
255,
206,
59,
176,
1,
4,
67,
26,
0,
14,
143,
213,
254,
42,
55,
208,
255,
60,
67,
120,
0,
193,
21,
163,
0,
99,
164,
115,
0,
10,
20,
118,
0,
156,
212,
222,
254,
160,
7,
217,
255,
114,
245,
76,
1,
117,
59,
123,
0,
176,
194,
86,
254,
213,
15,
176,
0,
78,
206,
207,
254,
213,
129,
59,
0,
233,
251,
22,
1,
96,
55,
152,
255,
236,
255,
15,
255,
197,
89,
84,
255,
93,
149,
133,
0,
174,
160,
113,
0,
234,
99,
169,
255,
152,
116,
88,
0,
144,
164,
83,
255,
95,
29,
198,
255,
34,
47,
15,
255,
99,
120,
134,
255,
5,
236,
193,
0,
249,
247,
126,
255,
147,
187,
30,
0,
50,
230,
117,
255,
108,
217,
219,
255,
163,
81,
166,
255,
72,
25,
169,
254,
155,
121,
79,
255,
28,
155,
89,
254,
7,
126,
17,
0,
147,
65,
33,
1,
47,
234,
253,
0,
26,
51,
18,
0,
105,
83,
199,
255,
163,
196,
230,
0,
113,
248,
164,
0,
226,
254,
218,
0,
189,
209,
203,
255,
164,
247,
222,
254,
255,
35,
165,
0,
4,
188,
243,
1,
127,
179,
71,
0,
37,
237,
254,
255,
100,
186,
240,
0,
5,
57,
71,
254,
103,
72,
73,
255,
244,
18,
81,
254,
229,
210,
132,
255,
238,
6,
180,
255,
11,
229,
174,
255,
227,
221,
192,
1,
17,
49,
28,
0,
163,
215,
196,
254,
9,
118,
4,
255,
51,
240,
71,
0,
113,
129,
109,
255,
76,
240,
231,
0,
188,
177,
127,
0,
125,
71,
44,
1,
26,
175,
243,
0,
94,
169,
25,
254,
27,
230,
29,
0,
15,
139,
119,
1,
168,
170,
186,
255,
172,
197,
76,
255,
252,
75,
188,
0,
137,
124,
196,
0,
72,
22,
96,
255,
45,
151,
249,
1,
220,
145,
100,
0,
64,
192,
159,
255,
120,
239,
226,
0,
129,
178,
146,
0,
0,
192,
125,
0,
235,
138,
234,
0,
183,
157,
146,
0,
83,
199,
192,
255,
184,
172,
72,
255,
73,
225,
128,
0,
77,
6,
250,
255,
186,
65,
67,
0,
104,
246,
207,
0,
188,
32,
138,
255,
218,
24,
242,
0,
67,
138,
81,
254,
237,
129,
121,
255,
20,
207,
150,
1,
41,
199,
16,
255,
6,
20,
128,
0,
159,
118,
5,
0,
181,
16,
143,
255,
220,
38,
15,
0,
23,
64,
147,
254,
73,
26,
13,
0,
87,
228,
57,
1,
204,
124,
128,
0,
43,
24,
223,
0,
219,
99,
199,
0,
22,
75,
20,
255,
19,
27,
126,
0,
157,
62,
215,
0,
110,
29,
230,
0,
179,
167,
255,
1,
54,
252,
190,
0,
221,
204,
182,
254,
179,
158,
65,
255,
81,
157,
3,
0,
194,
218,
159,
0,
170,
223,
0,
0,
224,
11,
32,
255,
38,
197,
98,
0,
168,
164,
37,
0,
23,
88,
7,
1,
164,
186,
110,
0,
96,
36,
134,
0,
234,
242,
229,
0,
250,
121,
19,
0,
242,
254,
112,
255,
3,
47,
94,
1,
9,
239,
6,
255,
81,
134,
153,
254,
214,
253,
168,
255,
67,
124,
224,
0,
245,
95,
74,
0,
28,
30,
44,
254,
1,
109,
220,
255,
178,
89,
89,
0,
252,
36,
76,
0,
24,
198,
46,
255,
76,
77,
111,
0,
134,
234,
136,
255,
39,
94,
29,
0,
185,
72,
234,
255,
70,
68,
135,
255,
231,
102,
7,
254,
77,
231,
140,
0,
167,
47,
58,
1,
148,
97,
118,
255,
16,
27,
225,
1,
166,
206,
143,
255,
110,
178,
214,
255,
180,
131,
162,
0,
143,
141,
225,
1,
13,
218,
78,
255,
114,
153,
33,
1,
98,
104,
204,
0,
175,
114,
117,
1,
167,
206,
75,
0,
202,
196,
83,
1,
58,
64,
67,
0,
138,
47,
111,
1,
196,
247,
128,
255,
137,
224,
224,
254,
158,
112,
207,
0,
154,
100,
255,
1,
134,
37,
107,
0,
198,
128,
79,
255,
127,
209,
155,
255,
163,
254,
185,
254,
60,
14,
243,
0,
31,
219,
112,
254,
29,
217,
65,
0,
200,
13,
116,
254,
123,
60,
196,
255,
224,
59,
184,
254,
242,
89,
196,
0,
123,
16,
75,
254,
149,
16,
206,
0,
69,
254,
48,
1,
231,
116,
223,
255,
209,
160,
65,
1,
200,
80,
98,
0,
37,
194,
184,
254,
148,
63,
34,
0,
139,
240,
65,
255,
217,
144,
132,
255,
56,
38,
45,
254,
199,
120,
210,
0,
108,
177,
166,
255,
160,
222,
4,
0,
220,
126,
119,
254,
165,
107,
160,
255,
82,
220,
248,
1,
241,
175,
136,
0,
144,
141,
23,
255,
169,
138,
84,
0,
160,
137,
78,
255,
226,
118,
80,
255,
52,
27,
132,
255,
63,
96,
139,
255,
152,
250,
39,
0,
188,
155,
15,
0,
232,
51,
150,
254,
40,
15,
232,
255,
240,
229,
9,
255,
137,
175,
27,
255,
75,
73,
97,
1,
218,
212,
11,
0,
135,
5,
162,
1,
107,
185,
213,
0,
2,
249,
107,
255,
40,
242,
70,
0,
219,
200,
25,
0,
25,
157,
13,
0,
67,
82,
80,
255,
196,
249,
23,
255,
145,
20,
149,
0,
50,
72,
146,
0,
94,
76,
148,
1,
24,
251,
65,
0,
31,
192,
23,
0,
184,
212,
201,
255,
123,
233,
162,
1,
247,
173,
72,
0,
162,
87,
219,
254,
126,
134,
89,
0,
159,
11,
12,
254,
166,
105,
29,
0,
73,
27,
228,
1,
113,
120,
183,
255,
66,
163,
109,
1,
212,
143,
11,
255,
159,
231,
168,
1,
255,
128,
90,
0,
57,
14,
58,
254,
89,
52,
10,
255,
253,
8,
163,
1,
0,
145,
210,
255,
10,
129,
85,
1,
46,
181,
27,
0,
103,
136,
160,
254,
126,
188,
209,
255,
34,
35,
111,
0,
215,
219,
24,
255,
212,
11,
214,
254,
101,
5,
118,
0,
232,
197,
133,
255,
223,
167,
109,
255,
237,
80,
86,
255,
70,
139,
94,
0,
158,
193,
191,
1,
155,
15,
51,
255,
15,
190,
115,
0,
78,
135,
207,
255,
249,
10,
27,
1,
181,
125,
233,
0,
95,
172,
13,
254,
170,
213,
161,
255,
39,
236,
138,
255,
95,
93,
87,
255,
190,
128,
95,
0,
125,
15,
206,
0,
166,
150,
159,
0,
227,
15,
158,
255,
206,
158,
120,
255,
42,
141,
128,
0,
101,
178,
120,
1,
156,
109,
131,
0,
218,
14,
44,
254,
247,
168,
206,
255,
212,
112,
28,
0,
112,
17,
228,
255,
90,
16,
37,
1,
197,
222,
108,
0,
254,
207,
83,
255,
9,
90,
243,
255,
243,
244,
172,
0,
26,
88,
115,
255,
205,
116,
122,
0,
191,
230,
193,
0,
180,
100,
11,
1,
217,
37,
96,
255,
154,
78,
156,
0,
235,
234,
31,
255,
206,
178,
178,
255,
149,
192,
251,
0,
182,
250,
135,
0,
246,
22,
105,
0,
124,
193,
109,
255,
2,
210,
149,
255,
169,
17,
170,
0,
0,
96,
110,
255,
117,
9,
8,
1,
50,
123,
40,
255,
193,
189,
99,
0,
34,
227,
160,
0,
48,
80,
70,
254,
211,
51,
236,
0,
45,
122,
245,
254,
44,
174,
8,
0,
173,
37,
233,
255,
158,
65,
171,
0,
122,
69,
215,
255,
90,
80,
2,
255,
131,
106,
96,
254,
227,
114,
135,
0,
205,
49,
119,
254,
176,
62,
64,
255,
82,
51,
17,
255,
241,
20,
243,
255,
130,
13,
8,
254,
128,
217,
243,
255,
162,
27,
1,
254,
90,
118,
241,
0,
246,
198,
246,
255,
55,
16,
118,
255,
200,
159,
157,
0,
163,
17,
1,
0,
140,
107,
121,
0,
85,
161,
118,
255,
38,
0,
149,
0,
156,
47,
238,
0,
9,
166,
166,
1,
75,
98,
181,
255,
50,
74,
25,
0,
66,
15,
47,
0,
139,
225,
159,
0,
76,
3,
142,
255,
14,
238,
184,
0,
11,
207,
53,
255,
183,
192,
186,
1,
171,
32,
174,
255,
191,
76,
221,
1,
247,
170,
219,
0,
25,
172,
50,
254,
217,
9,
233,
0,
203,
126,
68,
255,
183,
92,
48,
0,
127,
167,
183,
1,
65,
49,
254,
0,
16,
63,
127,
1,
254,
21,
170,
255,
59,
224,
127,
254,
22,
48,
63,
255,
27,
78,
130,
254,
40,
195,
29,
0,
250,
132,
112,
254,
35,
203,
144,
0,
104,
169,
168,
0,
207,
253,
30,
255,
104,
40,
38,
254,
94,
228,
88,
0,
206,
16,
128,
255,
212,
55,
122,
255,
223,
22,
234,
0,
223,
197,
127,
0,
253,
181,
181,
1,
145,
102,
118,
0,
236,
153,
36,
255,
212,
217,
72,
255,
20,
38,
24,
254,
138,
62,
62,
0,
152,
140,
4,
0,
230,
220,
99,
255,
1,
21,
212,
255,
148,
201,
231,
0,
244,
123,
9,
254,
0,
171,
210,
0,
51,
58,
37,
255,
1,
255,
14,
255,
244,
183,
145,
254,
0,
242,
166,
0,
22,
74,
132,
0,
121,
216,
41,
0,
95,
195,
114,
254,
133,
24,
151,
255,
156,
226,
231,
255,
247,
5,
77,
255,
246,
148,
115,
254,
225,
92,
81,
255,
222,
80,
246,
254,
170,
123,
89,
255,
74,
199,
141,
0,
29,
20,
8,
255,
138,
136,
70,
255,
93,
75,
92,
0,
221,
147,
49,
254,
52,
126,
226,
0,
229,
124,
23,
0,
46,
9,
181,
0,
205,
64,
52,
1,
131,
254,
28,
0,
151,
158,
212,
0,
131,
64,
78,
0,
206,
25,
171,
0,
0,
230,
139,
0,
191,
253,
110,
254,
103,
247,
167,
0,
64,
40,
40,
1,
42,
165,
241,
255,
59,
75,
228,
254,
124,
243,
189,
255,
196,
92,
178,
255,
130,
140,
86,
255,
141,
89,
56,
1,
147,
198,
5,
255,
203,
248,
158,
254,
144,
162,
141,
0,
11,
172,
226,
0,
130,
42,
21,
255,
1,
167,
143,
255,
144,
36,
36,
255,
48,
88,
164,
254,
168,
170,
220,
0,
98,
71,
214,
0,
91,
208,
79,
0,
159,
76,
201,
1,
166,
42,
214,
255,
69,
255,
0,
255,
6,
128,
125,
255,
190,
1,
140,
0,
146,
83,
218,
255,
215,
238,
72,
1,
122,
127,
53,
0,
189,
116,
165,
255,
84,
8,
66,
255,
214,
3,
208,
255,
213,
110,
133,
0,
195,
168,
44,
1,
158,
231,
69,
0,
162,
64,
200,
254,
91,
58,
104,
0,
182,
58,
187,
254,
249,
228,
136,
0,
203,
134,
76,
254,
99,
221,
233,
0,
75,
254,
214,
254,
80,
69,
154,
0,
64,
152,
248,
254,
236,
136,
202,
255,
157,
105,
153,
254,
149,
175,
20,
0,
22,
35,
19,
255,
124,
121,
233,
0,
186,
250,
198,
254,
132,
229,
139,
0,
137,
80,
174,
255,
165,
125,
68,
0,
144,
202,
148,
254,
235,
239,
248,
0,
135,
184,
118,
0,
101,
94,
17,
255,
122,
72,
70,
254,
69,
130,
146,
0,
127,
222,
248,
1,
69,
127,
118,
255,
30,
82,
215,
254,
188,
74,
19,
255,
229,
167,
194,
254,
117,
25,
66,
255,
65,
234,
56,
254,
213,
22,
156,
0,
151,
59,
93,
254,
45,
28,
27,
255,
186,
126,
164,
255,
32,
6,
239,
0,
127,
114,
99,
1,
219,
52,
2,
255,
99,
96,
166,
254,
62,
190,
126,
255,
108,
222,
168,
1,
75,
226,
174,
0,
230,
226,
199,
0,
60,
117,
218,
255,
252,
248,
20,
1,
214,
188,
204,
0,
31,
194,
134,
254,
123,
69,
192,
255,
169,
173,
36,
254,
55,
98,
91,
0,
223,
42,
102,
254,
137,
1,
102,
0,
157,
90,
25,
0,
239,
122,
64,
255,
252,
6,
233,
0,
7,
54,
20,
255,
82,
116,
174,
0,
135,
37,
54,
255,
15,
186,
125,
0,
227,
112,
175,
255,
100,
180,
225,
255,
42,
237,
244,
255,
244,
173,
226,
254,
248,
18,
33,
0,
171,
99,
150,
255,
74,
235,
50,
255,
117,
82,
32,
254,
106,
168,
237,
0,
207,
109,
208,
1,
228,
9,
186,
0,
135,
60,
169,
254,
179,
92,
143,
0,
244,
170,
104,
255,
235,
45,
124,
255,
70,
99,
186,
0,
117,
137,
183,
0,
224,
31,
215,
0,
40,
9,
100,
0,
26,
16,
95,
1,
68,
217,
87,
0,
8,
151,
20,
255,
26,
100,
58,
255,
176,
165,
203,
1,
52,
118,
70,
0,
7,
32,
254,
254,
244,
254,
245,
255,
167,
144,
194,
255,
125,
113,
23,
255,
176,
121,
181,
0,
136,
84,
209,
0,
138,
6,
30,
255,
89,
48,
28,
0,
33,
155,
14,
255,
25,
240,
154,
0,
141,
205,
109,
1,
70,
115,
62,
255,
20,
40,
107,
254,
138,
154,
199,
255,
94,
223,
226,
255,
157,
171,
38,
0,
163,
177,
25,
254,
45,
118,
3,
255,
14,
222,
23,
1,
209,
190,
81,
255,
118,
123,
232,
1,
13,
213,
101,
255,
123,
55,
123,
254,
27,
246,
165,
0,
50,
99,
76,
255,
140,
214,
32,
255,
97,
65,
67,
255,
24,
12,
28,
0,
174,
86,
78,
1,
64,
247,
96,
0,
160,
135,
67,
0,
66,
55,
243,
255,
147,
204,
96,
255,
26,
6,
33,
255,
98,
51,
83,
1,
153,
213,
208,
255,
2,
184,
54,
255,
25,
218,
11,
0,
49,
67,
246,
254,
18,
149,
72,
255,
13,
25,
72,
0,
42,
79,
214,
0,
42,
4,
38,
1,
27,
139,
144,
255,
149,
187,
23,
0,
18,
164,
132,
0,
245,
84,
184,
254,
120,
198,
104,
255,
126,
218,
96,
0,
56,
117,
234,
255,
13,
29,
214,
254,
68,
47,
10,
255,
167,
154,
132,
254,
152,
38,
198,
0,
66,
178,
89,
255,
200,
46,
171,
255,
13,
99,
83,
255,
210,
187,
253,
255,
170,
45,
42,
1,
138,
209,
124,
0,
214,
162,
141,
0,
12,
230,
156,
0,
102,
36,
112,
254,
3,
147,
67,
0,
52,
215,
123,
255,
233,
171,
54,
255,
98,
137,
62,
0,
247,
218,
39,
255,
231,
218,
236,
0,
247,
191,
127,
0,
195,
146,
84,
0,
165,
176,
92,
255,
19,
212,
94,
255,
17,
74,
227,
0,
88,
40,
153,
1,
198,
147,
1,
255,
206,
67,
245,
254,
240,
3,
218,
255,
61,
141,
213,
255,
97,
183,
106,
0,
195,
232,
235,
254,
95,
86,
154,
0,
209,
48,
205,
254,
118,
209,
241,
255,
240,
120,
223,
1,
213,
29,
159,
0,
163,
127,
147,
255,
13,
218,
93,
0,
85,
24,
68,
254,
70,
20,
80,
255,
189,
5,
140,
1,
82,
97,
254,
255,
99,
99,
191,
255,
132,
84,
133,
255,
107,
218,
116,
255,
112,
122,
46,
0,
105,
17,
32,
0,
194,
160,
63,
255,
68,
222,
39,
1,
216,
253,
92,
0,
177,
105,
205,
255,
149,
201,
195,
0,
42,
225,
11,
255,
40,
162,
115,
0,
9,
7,
81,
0,
165,
218,
219,
0,
180,
22,
0,
254,
29,
146,
252,
255,
146,
207,
225,
1,
180,
135,
96,
0,
31,
163,
112,
0,
177,
11,
219,
255,
133,
12,
193,
254,
43,
78,
50,
0,
65,
113,
121,
1,
59,
217,
6,
255,
110,
94,
24,
1,
112,
172,
111,
0,
7,
15,
96,
0,
36,
85,
123,
0,
71,
150,
21,
255,
208,
73,
188,
0,
192,
11,
167,
1,
213,
245,
34,
0,
9,
230,
92,
0,
162,
142,
39,
255,
215,
90,
27,
0,
98,
97,
89,
0,
94,
79,
211,
0,
90,
157,
240,
0,
95,
220,
126,
1,
102,
176,
226,
0,
36,
30,
224,
254,
35,
31,
127,
0,
231,
232,
115,
1,
85,
83,
130,
0,
210,
73,
245,
255,
47,
143,
114,
255,
68,
65,
197,
0,
59,
72,
62,
255,
183,
133,
173,
254,
93,
121,
118,
255,
59,
177,
81,
255,
234,
69,
173,
255,
205,
128,
177,
0,
220,
244,
51,
0,
26,
244,
209,
1,
73,
222,
77,
255,
163,
8,
96,
254,
150,
149,
211,
0,
158,
254,
203,
1,
54,
127,
139,
0,
161,
224,
59,
0,
4,
109,
22,
255,
222,
42,
45,
255,
208,
146,
102,
255,
236,
142,
187,
0,
50,
205,
245,
255,
10,
74,
89,
254,
48,
79,
142,
0,
222,
76,
130,
255,
30,
166,
63,
0,
236,
12,
13,
255,
49,
184,
244,
0,
187,
113,
102,
0,
218,
101,
253,
0,
153,
57,
182,
254,
32,
150,
42,
0,
25,
198,
146,
1,
237,
241,
56,
0,
140,
68,
5,
0,
91,
164,
172,
255,
78,
145,
186,
254,
67,
52,
205,
0,
219,
207,
129,
1,
109,
115,
17,
0,
54,
143,
58,
1,
21,
248,
120,
255,
179,
255,
30,
0,
193,
236,
66,
255,
1,
255,
7,
255,
253,
192,
48,
255,
19,
69,
217,
1,
3,
214,
0,
255,
64,
101,
146,
1,
223,
125,
35,
255,
235,
73,
179,
255,
249,
167,
226,
0,
225,
175,
10,
1,
97,
162,
58,
0,
106,
112,
171,
1,
84,
172,
5,
255,
133,
140,
178,
255,
134,
245,
142,
0,
97,
90,
125,
255,
186,
203,
185,
255,
223,
77,
23,
255,
192,
92,
106,
0,
15,
198,
115,
255,
217,
152,
248,
0,
171,
178,
120,
255,
228,
134,
53,
0,
176,
54,
193,
1,
250,
251,
53,
0,
213,
10,
100,
1,
34,
199,
106,
0,
151,
31,
244,
254,
172,
224,
87,
255,
14,
237,
23,
255,
253,
85,
26,
255,
127,
39,
116,
255,
172,
104,
100,
0,
251,
14,
70,
255,
212,
208,
138,
255,
253,
211,
250,
0,
176,
49,
165,
0,
15,
76,
123,
255,
37,
218,
160,
255,
92,
135,
16,
1,
10,
126,
114,
255,
70,
5,
224,
255,
247,
249,
141,
0,
68,
20,
60,
1,
241,
210,
189,
255,
195,
217,
187,
1,
151,
3,
113,
0,
151,
92,
174,
0,
231,
62,
178,
255,
219,
183,
225,
0,
23,
23,
33,
255,
205,
181,
80,
0,
57,
184,
248,
255,
67,
180,
1,
255,
90,
123,
93,
255,
39,
0,
162,
255,
96,
248,
52,
255,
84,
66,
140,
0,
34,
127,
228,
255,
194,
138,
7,
1,
166,
110,
188,
0,
21,
17,
155,
1,
154,
190,
198,
255,
214,
80,
59,
255,
18,
7,
143,
0,
72,
29,
226,
1,
199,
217,
249,
0,
232,
161,
71,
1,
149,
190,
201,
0,
217,
175,
95,
254,
113,
147,
67,
255,
138,
143,
199,
255,
127,
204,
1,
0,
29,
182,
83,
1,
206,
230,
155,
255,
186,
204,
60,
0,
10,
125,
85,
255,
232,
96,
25,
255,
255,
89,
247,
255,
213,
254,
175,
1,
232,
193,
81,
0,
28,
43,
156,
254,
12,
69,
8,
0,
147,
24,
248,
0,
18,
198,
49,
0,
134,
60,
35,
0,
118,
246,
18,
255,
49,
88,
254,
254,
228,
21,
186,
255,
182,
65,
112,
1,
219,
22,
1,
255,
22,
126,
52,
255,
189,
53,
49,
255,
112,
25,
143,
0,
38,
127,
55,
255,
226,
101,
163,
254,
208,
133,
61,
255,
137,
69,
174,
1,
190,
118,
145,
255,
60,
98,
219,
255,
217,
13,
245,
255,
250,
136,
10,
0,
84,
254,
226,
0,
201,
31,
125,
1,
240,
51,
251,
255,
31,
131,
130,
255,
2,
138,
50,
255,
215,
215,
177,
1,
223,
12,
238,
255,
252,
149,
56,
255,
124,
91,
68,
255,
72,
126,
170,
254,
119,
255,
100,
0,
130,
135,
232,
255,
14,
79,
178,
0,
250,
131,
197,
0,
138,
198,
208,
0,
121,
216,
139,
254,
119,
18,
36,
255,
29,
193,
122,
0,
16,
42,
45,
255,
213,
240,
235,
1,
230,
190,
169,
255,
198,
35,
228,
254,
110,
173,
72,
0,
214,
221,
241,
255,
56,
148,
135,
0,
192,
117,
78,
254,
141,
93,
207,
255,
143,
65,
149,
0,
21,
18,
98,
255,
95,
44,
244,
1,
106,
191,
77,
0,
254,
85,
8,
254,
214,
110,
176,
255,
73,
173,
19,
254,
160,
196,
199,
255,
237,
90,
144,
0,
193,
172,
113,
255,
200,
155,
136,
254,
228,
90,
221,
0,
137,
49,
74,
1,
164,
221,
215,
255,
209,
189,
5,
255,
105,
236,
55,
255,
42,
31,
129,
1,
193,
255,
236,
0,
46,
217,
60,
0,
138,
88,
187,
255,
226,
82,
236,
255,
81,
69,
151,
255,
142,
190,
16,
1,
13,
134,
8,
0,
127,
122,
48,
255,
81,
64,
156,
0,
171,
243,
139,
0,
237,
35,
246,
0,
122,
143,
193,
254,
212,
122,
146,
0,
95,
41,
255,
1,
87,
132,
77,
0,
4,
212,
31,
0,
17,
31,
78,
0,
39,
45,
173,
254,
24,
142,
217,
255,
95,
9,
6,
255,
227,
83,
6,
0,
98,
59,
130,
254,
62,
30,
33,
0,
8,
115,
211,
1,
162,
97,
128,
255,
7,
184,
23,
254,
116,
28,
168,
255,
248,
138,
151,
255,
98,
244,
240,
0,
186,
118,
130,
0,
114,
248,
235,
255,
105,
173,
200,
1,
160,
124,
71,
255,
94,
36,
164,
1,
175,
65,
146,
255,
238,
241,
170,
254,
202,
198,
197,
0,
228,
71,
138,
254,
45,
246,
109,
255,
194,
52,
158,
0,
133,
187,
176,
0,
83,
252,
154,
254,
89,
189,
221,
255,
170,
73,
252,
0,
148,
58,
125,
0,
36,
68,
51,
254,
42,
69,
177,
255,
168,
76,
86,
255,
38,
100,
204,
255,
38,
53,
35,
0,
175,
19,
97,
0,
225,
238,
253,
255,
81,
81,
135,
0,
210,
27,
255,
254,
235,
73,
107,
0,
8,
207,
115,
0,
82,
127,
136,
0,
84,
99,
21,
254,
207,
19,
136,
0,
100,
164,
101,
0,
80,
208,
77,
255,
132,
207,
237,
255,
15,
3,
15,
255,
33,
166,
110,
0,
156,
95,
85,
255,
37,
185,
111,
1,
150,
106,
35,
255,
166,
151,
76,
0,
114,
87,
135,
255,
159,
194,
64,
0,
12,
122,
31,
255,
232,
7,
101,
254,
173,
119,
98,
0,
154,
71,
220,
254,
191,
57,
53,
255,
168,
232,
160,
255,
224,
32,
99,
255,
218,
156,
165,
0,
151,
153,
163,
0,
217,
13,
148,
1,
197,
113,
89,
0,
149,
28,
161,
254,
207,
23,
30,
0,
105,
132,
227,
255,
54,
230,
94,
255,
133,
173,
204,
255,
92,
183,
157,
255,
88,
144,
252,
254,
102,
33,
90,
0,
159,
97,
3,
0,
181,
218,
155,
255,
240,
114,
119,
0,
106,
214,
53,
255,
165,
190,
115,
1,
152,
91,
225,
255,
88,
106,
44,
255,
208,
61,
113,
0,
151,
52,
124,
0,
191,
27,
156,
255,
110,
54,
236,
1,
14,
30,
166,
255,
39,
127,
207,
1,
229,
199,
28,
0,
188,
228,
188,
254,
100,
157,
235,
0,
246,
218,
183,
1,
107,
22,
193,
255,
206,
160,
95,
0,
76,
239,
147,
0,
207,
161,
117,
0,
51,
166,
2,
255,
52,
117,
10,
254,
73,
56,
227,
255,
152,
193,
225,
0,
132,
94,
136,
255,
101,
191,
209,
0,
32,
107,
229,
255,
198,
43,
180,
1,
100,
210,
118,
0,
114,
67,
153,
255,
23,
88,
26,
255,
89,
154,
92,
1,
220,
120,
140,
255,
144,
114,
207,
255,
252,
115,
250,
255,
34,
206,
72,
0,
138,
133,
127,
255,
8,
178,
124,
1,
87,
75,
97,
0,
15,
229,
92,
254,
240,
67,
131,
255,
118,
123,
227,
254,
146,
120,
104,
255,
145,
213,
255,
1,
129,
187,
70,
255,
219,
119,
54,
0,
1,
19,
173,
0,
45,
150,
148,
1,
248,
83,
72,
0,
203,
233,
169,
1,
142,
107,
56,
0,
247,
249,
38,
1,
45,
242,
80,
255,
30,
233,
103,
0,
96,
82,
70,
0,
23,
201,
111,
0,
81,
39,
30,
255,
161,
183,
78,
255,
194,
234,
33,
255,
68,
227,
140,
254,
216,
206,
116,
0,
70,
27,
235,
255,
104,
144,
79,
0,
164,
230,
93,
254,
214,
135,
156,
0,
154,
187,
242,
254,
188,
20,
131,
255,
36,
109,
174,
0,
159,
112,
241,
0,
5,
110,
149,
1,
36,
165,
218,
0,
166,
29,
19,
1,
178,
46,
73,
0,
93,
43,
32,
254,
248,
189,
237,
0,
102,
155,
141,
0,
201,
93,
195,
255,
241,
139,
253,
255,
15,
111,
98,
255,
108,
65,
163,
254,
155,
79,
190,
255,
73,
174,
193,
254,
246,
40,
48,
255,
107,
88,
11,
254,
202,
97,
85,
255,
253,
204,
18,
255,
113,
242,
66,
0,
110,
160,
194,
254,
208,
18,
186,
0,
81,
21,
60,
0,
188,
104,
167,
255,
124,
166,
97,
254,
210,
133,
142,
0,
56,
242,
137,
254,
41,
111,
130,
0,
111,
151,
58,
1,
111,
213,
141,
255,
183,
172,
241,
255,
38,
6,
196,
255,
185,
7,
123,
255,
46,
11,
246,
0,
245,
105,
119,
1,
15,
2,
161,
255,
8,
206,
45,
255,
18,
202,
74,
255,
83,
124,
115,
1,
212,
141,
157,
0,
83,
8,
209,
254,
139,
15,
232,
255,
172,
54,
173,
254,
50,
247,
132,
0,
214,
189,
213,
0,
144,
184,
105,
0,
223,
254,
248,
0,
255,
147,
240,
255,
23,
188,
72,
0,
7,
51,
54,
0,
188,
25,
180,
254,
220,
180,
0,
255,
83,
160,
20,
0,
163,
189,
243,
255,
58,
209,
194,
255,
87,
73,
60,
0,
106,
24,
49,
0,
245,
249,
220,
0,
22,
173,
167,
0,
118,
11,
195,
255,
19,
126,
237,
0,
110,
159,
37,
255,
59,
82,
47,
0,
180,
187,
86,
0,
188,
148,
208,
1,
100,
37,
133,
255,
7,
112,
193,
0,
129,
188,
156,
255,
84,
106,
129,
255,
133,
225,
202,
0,
14,
236,
111,
255,
40,
20,
101,
0,
172,
172,
49,
254,
51,
54,
74,
255,
251,
185,
184,
255,
93,
155,
224,
255,
180,
249,
224,
1,
230,
178,
146,
0,
72,
57,
54,
254,
178,
62,
184,
0,
119,
205,
72,
0,
185,
239,
253,
255,
61,
15,
218,
0,
196,
67,
56,
255,
234,
32,
171,
1,
46,
219,
228,
0,
208,
108,
234,
255,
20,
63,
232,
255,
165,
53,
199,
1,
133,
228,
5,
255,
52,
205,
107,
0,
74,
238,
140,
255,
150,
156,
219,
254,
239,
172,
178,
255,
251,
189,
223,
254,
32,
142,
211,
255,
218,
15,
138,
1,
241,
196,
80,
0,
28,
36,
98,
254,
22,
234,
199,
0,
61,
237,
220,
255,
246,
57,
37,
0,
142,
17,
142,
255,
157,
62,
26,
0,
43,
238,
95,
254,
3,
217,
6,
255,
213,
25,
240,
1,
39,
220,
174,
255,
154,
205,
48,
254,
19,
13,
192,
255,
244,
34,
54,
254,
140,
16,
155,
0,
240,
181,
5,
254,
155,
193,
60,
0,
166,
128,
4,
255,
36,
145,
56,
255,
150,
240,
219,
0,
120,
51,
145,
0,
82,
153,
42,
1,
140,
236,
146,
0,
107,
92,
248,
1,
189,
10,
3,
0,
63,
136,
242,
0,
211,
39,
24,
0,
19,
202,
161,
1,
173,
27,
186,
255,
210,
204,
239,
254,
41,
209,
162,
255,
182,
254,
159,
255,
172,
116,
52,
0,
195,
103,
222,
254,
205,
69,
59,
0,
53,
22,
41,
1,
218,
48,
194,
0,
80,
210,
242,
0,
210,
188,
207,
0,
187,
161,
161,
254,
216,
17,
1,
0,
136,
225,
113,
0,
250,
184,
63,
0,
223,
30,
98,
254,
77,
168,
162,
0,
59,
53,
175,
0,
19,
201,
10,
255,
139,
224,
194,
0,
147,
193,
154,
255,
212,
189,
12,
254,
1,
200,
174,
255,
50,
133,
113,
1,
94,
179,
90,
0,
173,
182,
135,
0,
94,
177,
113,
0,
43,
89,
215,
255,
136,
252,
106,
255,
123,
134,
83,
254,
5,
245,
66,
255,
82,
49,
39,
1,
220,
2,
224,
0,
97,
129,
177,
0,
77,
59,
89,
0,
61,
29,
155,
1,
203,
171,
220,
255,
92,
78,
139,
0,
145,
33,
181,
255,
169,
24,
141,
1,
55,
150,
179,
0,
139,
60,
80,
255,
218,
39,
97,
0,
2,
147,
107,
255,
60,
248,
72,
0,
173,
230,
47,
1,
6,
83,
182,
255,
16,
105,
162,
254,
137,
212,
81,
255,
180,
184,
134,
1,
39,
222,
164,
255,
221,
105,
251,
1,
239,
112,
125,
0,
63,
7,
97,
0,
63,
104,
227,
255,
148,
58,
12,
0,
90,
60,
224,
255,
84,
212,
252,
0,
79,
215,
168,
0,
248,
221,
199,
1,
115,
121,
1,
0,
36,
172,
120,
0,
32,
162,
187,
255,
57,
107,
49,
255,
147,
42,
21,
0,
106,
198,
43,
1,
57,
74,
87,
0,
126,
203,
81,
255,
129,
135,
195,
0,
140,
31,
177,
0,
221,
139,
194,
0,
3,
222,
215,
0,
131,
68,
231,
0,
177,
86,
178,
254,
124,
151,
180,
0,
184,
124,
38,
1,
70,
163,
17,
0,
249,
251,
181,
1,
42,
55,
227,
0,
226,
161,
44,
0,
23,
236,
110,
0,
51,
149,
142,
1,
93,
5,
236,
0,
218,
183,
106,
254,
67,
24,
77,
0,
40,
245,
209,
255,
222,
121,
153,
0,
165,
57,
30,
0,
83,
125,
60,
0,
70,
38,
82,
1,
229,
6,
188,
0,
109,
222,
157,
255,
55,
118,
63,
255,
205,
151,
186,
0,
227,
33,
149,
255,
254,
176,
246,
1,
227,
177,
227,
0,
34,
106,
163,
254,
176,
43,
79,
0,
106,
95,
78,
1,
185,
241,
122,
255,
185,
14,
61,
0,
36,
1,
202,
0,
13,
178,
162,
255,
247,
11,
132,
0,
161,
230,
92,
1,
65,
1,
185,
255,
212,
50,
165,
1,
141,
146,
64,
255,
158,
242,
218,
0,
21,
164,
125,
0,
213,
139,
122,
1,
67,
71,
87,
0,
203,
158,
178,
1,
151,
92,
43,
0,
152,
111,
5,
255,
39,
3,
239,
255,
217,
255,
250,
255,
176,
63,
71,
255,
74,
245,
77,
1,
250,
174,
18,
255,
34,
49,
227,
255,
246,
46,
251,
255,
154,
35,
48,
1,
125,
157,
61,
255,
106,
36,
78,
255,
97,
236,
153,
0,
136,
187,
120,
255,
113,
134,
171,
255,
19,
213,
217,
254,
216,
94,
209,
255,
252,
5,
61,
0,
94,
3,
202,
0,
3,
26,
183,
255,
64,
191,
43,
255,
30,
23,
21,
0,
129,
141,
77,
255,
102,
120,
7,
1,
194,
76,
140,
0,
188,
175,
52,
255,
17,
81,
148,
0,
232,
86,
55,
1,
225,
48,
172,
0,
134,
42,
42,
255,
238,
50,
47,
0,
169,
18,
254,
0,
20,
147,
87,
255,
14,
195,
239,
255,
69,
247,
23,
0,
238,
229,
128,
255,
177,
49,
112,
0,
168,
98,
251,
255,
121,
71,
248,
0,
243,
8,
145,
254,
246,
227,
153,
255,
219,
169,
177,
254,
251,
139,
165,
255,
12,
163,
185,
255,
164,
40,
171,
255,
153,
159,
27,
254,
243,
109,
91,
255,
222,
24,
112,
1,
18,
214,
231,
0,
107,
157,
181,
254,
195,
147,
0,
255,
194,
99,
104,
255,
89,
140,
190,
255,
177,
66,
126,
254,
106,
185,
66,
0,
49,
218,
31,
0,
252,
174,
158,
0,
188,
79,
230,
1,
238,
41,
224,
0,
212,
234,
8,
1,
136,
11,
181,
0,
166,
117,
83,
255,
68,
195,
94,
0,
46,
132,
201,
0,
240,
152,
88,
0,
164,
57,
69,
254,
160,
224,
42,
255,
59,
215,
67,
255,
119,
195,
141,
255,
36,
180,
121,
254,
207,
47,
8,
255,
174,
210,
223,
0,
101,
197,
68,
255,
255,
82,
141,
1,
250,
137,
233,
0,
97,
86,
133,
1,
16,
80,
69,
0,
132,
131,
159,
0,
116,
93,
100,
0,
45,
141,
139,
0,
152,
172,
157,
255,
90,
43,
91,
0,
71,
153,
46,
0,
39,
16,
112,
255,
217,
136,
97,
255,
220,
198,
25,
254,
177,
53,
49,
0,
222,
88,
134,
255,
128,
15,
60,
0,
207,
192,
169,
255,
192,
116,
209,
255,
106,
78,
211,
1,
200,
213,
183,
255,
7,
12,
122,
254,
222,
203,
60,
255,
33,
110,
199,
254,
251,
106,
117,
0,
228,
225,
4,
1,
120,
58,
7,
255,
221,
193,
84,
254,
112,
133,
27,
0,
189,
200,
201,
255,
139,
135,
150,
0,
234,
55,
176,
255,
61,
50,
65,
0,
152,
108,
169,
255,
220,
85,
1,
255,
112,
135,
227,
0,
162,
26,
186,
0,
207,
96,
185,
254,
244,
136,
107,
0,
93,
153,
50,
1,
198,
97,
151,
0,
110,
11,
86,
255,
143,
117,
174,
255,
115,
212,
200,
0,
5,
202,
183,
0,
237,
164,
10,
254,
185,
239,
62,
0,
236,
120,
18,
254,
98,
123,
99,
255,
168,
201,
194,
254,
46,
234,
214,
0,
191,
133,
49,
255,
99,
169,
119,
0,
190,
187,
35,
1,
115,
21,
45,
255,
249,
131,
72,
0,
112,
6,
123,
255,
214,
49,
181,
254,
166,
233,
34,
0,
92,
197,
102,
254,
253,
228,
205,
255,
3,
59,
201,
1,
42,
98,
46,
0,
219,
37,
35,
255,
169,
195,
38,
0,
94,
124,
193,
1,
156,
43,
223,
0,
95,
72,
133,
254,
120,
206,
191,
0,
122,
197,
239,
255,
177,
187,
79,
255,
254,
46,
2,
1,
250,
167,
190,
0,
84,
129,
19,
0,
203,
113,
166,
255,
249,
31,
189,
254,
72,
157,
202,
255,
208,
71,
73,
255,
207,
24,
72,
0,
10,
16,
18,
1,
210,
81,
76,
255,
88,
208,
192,
255,
126,
243,
107,
255,
238,
141,
120,
255,
199,
121,
234,
255,
137,
12,
59,
255,
36,
220,
123,
255,
148,
179,
60,
254,
240,
12,
29,
0,
66,
0,
97,
1,
36,
30,
38,
255,
115,
1,
93,
255,
96,
103,
231,
255,
197,
158,
59,
1,
192,
164,
240,
0,
202,
202,
57,
255,
24,
174,
48,
0,
89,
77,
155,
1,
42,
76,
215,
0,
244,
151,
233,
0,
23,
48,
81,
0,
239,
127,
52,
254,
227,
130,
37,
255,
248,
116,
93,
1,
124,
132,
118,
0,
173,
254,
192,
1,
6,
235,
83,
255,
110,
175,
231,
1,
251,
28,
182,
0,
129,
249,
93,
254,
84,
184,
128,
0,
76,
181,
62,
0,
175,
128,
186,
0,
100,
53,
136,
254,
109,
29,
226,
0,
221,
233,
58,
1,
20,
99,
74,
0,
0,
22,
160,
0,
134,
13,
21,
0,
9,
52,
55,
255,
17,
89,
140,
0,
175,
34,
59,
0,
84,
165,
119,
255,
224,
226,
234,
255,
7,
72,
166,
255,
123,
115,
255,
1,
18,
214,
246,
0,
250,
7,
71,
1,
217,
220,
185,
0,
212,
35,
76,
255,
38,
125,
175,
0,
189,
97,
210,
0,
114,
238,
44,
255,
41,
188,
169,
254,
45,
186,
154,
0,
81,
92,
22,
0,
132,
160,
193,
0,
121,
208,
98,
255,
13,
81,
44,
255,
203,
156,
82,
0,
71,
58,
21,
255,
208,
114,
191,
254,
50,
38,
147,
0,
154,
216,
195,
0,
101,
25,
18,
0,
60,
250,
215,
255,
233,
132,
235,
255,
103,
175,
142,
1,
16,
14,
92,
0,
141,
31,
110,
254,
238,
241,
45,
255,
153,
217,
239,
1,
97,
168,
47,
255,
249,
85,
16,
1,
28,
175,
62,
255,
57,
254,
54,
0,
222,
231,
126,
0,
166,
45,
117,
254,
18,
189,
96,
255,
228,
76,
50,
0,
200,
244,
94,
0,
198,
152,
120,
1,
68,
34,
69,
255,
12,
65,
160,
254,
101,
19,
90,
0,
167,
197,
120,
255,
68,
54,
185,
255,
41,
218,
188,
0,
113,
168,
48,
0,
88,
105,
189,
1,
26,
82,
32,
255,
185,
93,
164,
1,
228,
240,
237,
255,
66,
182,
53,
0,
171,
197,
92,
255,
107,
9,
233,
1,
199,
120,
144,
255,
78,
49,
10,
255,
109,
170,
105,
255,
90,
4,
31,
255,
28,
244,
113,
255,
74,
58,
11,
0,
62,
220,
246,
255,
121,
154,
200,
254,
144,
210,
178,
255,
126,
57,
129,
1,
43,
250,
14,
255,
101,
111,
28,
1,
47,
86,
241,
255,
61,
70,
150,
255,
53,
73,
5,
255,
30,
26,
158,
0,
209,
26,
86,
0,
138,
237,
74,
0,
164,
95,
188,
0,
142,
60,
29,
254,
162,
116,
248,
255,
187,
175,
160,
0,
151,
18,
16,
0,
209,
111,
65,
254,
203,
134,
39,
255,
88,
108,
49,
255,
131,
26,
71,
255,
221,
27,
215,
254,
104,
105,
93,
255,
31,
236,
31,
254,
135,
0,
211,
255,
143,
127,
110,
1,
212,
73,
229,
0,
233,
67,
167,
254,
195,
1,
208,
255,
132,
17,
221,
255,
51,
217,
90,
0,
67,
235,
50,
255,
223,
210,
143,
0,
179,
53,
130,
1,
233,
106,
198,
0,
217,
173,
220,
255,
112,
229,
24,
255,
175,
154,
93,
254,
71,
203,
246,
255,
48,
66,
133,
255,
3,
136,
230,
255,
23,
221,
113,
254,
235,
111,
213,
0,
170,
120,
95,
254,
251,
221,
2,
0,
45,
130,
158,
254,
105,
94,
217,
255,
242,
52,
180,
254,
213,
68,
45,
255,
104,
38,
28,
0,
244,
158,
76,
0,
161,
200,
96,
255,
207,
53,
13,
255,
187,
67,
148,
0,
170,
54,
248,
0,
119,
162,
178,
255,
83,
20,
11,
0,
42,
42,
192,
1,
146,
159,
163,
255,
183,
232,
111,
0,
77,
229,
21,
255,
71,
53,
143,
0,
27,
76,
34,
0,
246,
136,
47,
255,
219,
39,
182,
255,
92,
224,
201,
1,
19,
142,
14,
255,
69,
182,
241,
255,
163,
118,
245,
0,
9,
109,
106,
1,
170,
181,
247,
255,
78,
47,
238,
255,
84,
210,
176,
255,
213,
107,
139,
0,
39,
38,
11,
0,
72,
21,
150,
0,
72,
130,
69,
0,
205,
77,
155,
254,
142,
133,
21,
],
'i8',
ALLOC_NONE,
Runtime.GLOBAL_BASE
);
/* memory initializer */ allocate(
[
71,
111,
172,
254,
226,
42,
59,
255,
179,
0,
215,
1,
33,
128,
241,
0,
234,
252,
13,
1,
184,
79,
8,
0,
110,
30,
73,
255,
246,
141,
189,
0,
170,
207,
218,
1,
74,
154,
69,
255,
138,
246,
49,
255,
155,
32,
100,
0,
125,
74,
105,
255,
90,
85,
61,
255,
35,
229,
177,
255,
62,
125,
193,
255,
153,
86,
188,
1,
73,
120,
212,
0,
209,
123,
246,
254,
135,
209,
38,
255,
151,
58,
44,
1,
92,
69,
214,
255,
14,
12,
88,
255,
252,
153,
166,
255,
253,
207,
112,
255,
60,
78,
83,
255,
227,
124,
110,
0,
180,
96,
252,
255,
53,
117,
33,
254,
164,
220,
82,
255,
41,
1,
27,
255,
38,
164,
166,
255,
164,
99,
169,
254,
61,
144,
70,
255,
192,
166,
18,
0,
107,
250,
66,
0,
197,
65,
50,
0,
1,
179,
18,
255,
255,
104,
1,
255,
43,
153,
35,
255,
80,
111,
168,
0,
110,
175,
168,
0,
41,
105,
45,
255,
219,
14,
205,
255,
164,
233,
140,
254,
43,
1,
118,
0,
233,
67,
195,
0,
178,
82,
159,
255,
138,
87,
122,
255,
212,
238,
90,
255,
144,
35,
124,
254,
25,
140,
164,
0,
251,
215,
44,
254,
133,
70,
107,
255,
101,
227,
80,
254,
92,
169,
55,
0,
215,
42,
49,
0,
114,
180,
85,
255,
33,
232,
27,
1,
172,
213,
25,
0,
62,
176,
123,
254,
32,
133,
24,
255,
225,
191,
62,
0,
93,
70,
153,
0,
181,
42,
104,
1,
22,
191,
224,
255,
200,
200,
140,
255,
249,
234,
37,
0,
149,
57,
141,
0,
195,
56,
208,
255,
254,
130,
70,
255,
32,
173,
240,
255,
29,
220,
199,
0,
110,
100,
115,
255,
132,
229,
249,
0,
228,
233,
223,
255,
37,
216,
209,
254,
178,
177,
209,
255,
183,
45,
165,
254,
224,
97,
114,
0,
137,
97,
168,
255,
225,
222,
172,
0,
165,
13,
49,
1,
210,
235,
204,
255,
252,
4,
28,
254,
70,
160,
151,
0,
232,
190,
52,
254,
83,
248,
93,
255,
62,
215,
77,
1,
175,
175,
179,
255,
160,
50,
66,
0,
121,
48,
208,
0,
63,
169,
209,
255,
0,
210,
200,
0,
224,
187,
44,
1,
73,
162,
82,
0,
9,
176,
143,
255,
19,
76,
193,
255,
29,
59,
167,
1,
24,
43,
154,
0,
28,
190,
190,
0,
141,
188,
129,
0,
232,
235,
203,
255,
234,
0,
109,
255,
54,
65,
159,
0,
60,
88,
232,
255,
121,
253,
150,
254,
252,
233,
131,
255,
198,
110,
41,
1,
83,
77,
71,
255,
200,
22,
59,
254,
106,
253,
242,
255,
21,
12,
207,
255,
237,
66,
189,
0,
90,
198,
202,
1,
225,
172,
127,
0,
53,
22,
202,
0,
56,
230,
132,
0,
1,
86,
183,
0,
109,
190,
42,
0,
243,
68,
174,
1,
109,
228,
154,
0,
200,
177,
122,
1,
35,
160,
183,
255,
177,
48,
85,
255,
90,
218,
169,
255,
248,
152,
78,
0,
202,
254,
110,
0,
6,
52,
43,
0,
142,
98,
65,
255,
63,
145,
22,
0,
70,
106,
93,
0,
232,
138,
107,
1,
110,
179,
61,
255,
211,
129,
218,
1,
242,
209,
92,
0,
35,
90,
217,
1,
182,
143,
106,
255,
116,
101,
217,
255,
114,
250,
221,
255,
173,
204,
6,
0,
60,
150,
163,
0,
73,
172,
44,
255,
239,
110,
80,
255,
237,
76,
153,
254,
161,
140,
249,
0,
149,
232,
229,
0,
133,
31,
40,
255,
174,
164,
119,
0,
113,
51,
214,
0,
129,
228,
2,
254,
64,
34,
243,
0,
107,
227,
244,
255,
174,
106,
200,
255,
84,
153,
70,
1,
50,
35,
16,
0,
250,
74,
216,
254,
236,
189,
66,
255,
153,
249,
13,
0,
230,
178,
4,
255,
221,
41,
238,
0,
118,
227,
121,
255,
94,
87,
140,
254,
254,
119,
92,
0,
73,
239,
246,
254,
117,
87,
128,
0,
19,
211,
145,
255,
177,
46,
252,
0,
229,
91,
246,
1,
69,
128,
247,
255,
202,
77,
54,
1,
8,
11,
9,
255,
153,
96,
166,
0,
217,
214,
173,
255,
134,
192,
2,
1,
0,
207,
0,
0,
189,
174,
107,
1,
140,
134,
100,
0,
158,
193,
243,
1,
182,
102,
171,
0,
235,
154,
51,
0,
142,
5,
123,
255,
60,
168,
89,
1,
217,
14,
92,
255,
19,
214,
5,
1,
211,
167,
254,
0,
44,
6,
202,
254,
120,
18,
236,
255,
15,
113,
184,
255,
184,
223,
139,
0,
40,
177,
119,
254,
182,
123,
90,
255,
176,
165,
176,
0,
247,
77,
194,
0,
27,
234,
120,
0,
231,
0,
214,
255,
59,
39,
30,
0,
125,
99,
145,
255,
150,
68,
68,
1,
141,
222,
248,
0,
153,
123,
210,
255,
110,
127,
152,
255,
229,
33,
214,
1,
135,
221,
197,
0,
137,
97,
2,
0,
12,
143,
204,
255,
81,
41,
188,
0,
115,
79,
130,
255,
94,
3,
132,
0,
152,
175,
187,
255,
124,
141,
10,
255,
126,
192,
179,
255,
11,
103,
198,
0,
149,
6,
45,
0,
219,
85,
187,
1,
230,
18,
178,
255,
72,
182,
152,
0,
3,
198,
184,
255,
128,
112,
224,
1,
97,
161,
230,
0,
254,
99,
38,
255,
58,
159,
197,
0,
151,
66,
219,
0,
59,
69,
143,
255,
185,
112,
249,
0,
119,
136,
47,
255,
123,
130,
132,
0,
168,
71,
95,
255,
113,
176,
40,
1,
232,
185,
173,
0,
207,
93,
117,
1,
68,
157,
108,
255,
102,
5,
147,
254,
49,
97,
33,
0,
89,
65,
111,
254,
247,
30,
163,
255,
124,
217,
221,
1,
102,
250,
216,
0,
198,
174,
75,
254,
57,
55,
18,
0,
227,
5,
236,
1,
229,
213,
173,
0,
201,
109,
218,
1,
49,
233,
239,
0,
30,
55,
158,
1,
25,
178,
106,
0,
155,
111,
188,
1,
94,
126,
140,
0,
215,
31,
238,
1,
77,
240,
16,
0,
213,
242,
25,
1,
38,
71,
168,
0,
205,
186,
93,
254,
49,
211,
140,
255,
219,
0,
180,
255,
134,
118,
165,
0,
160,
147,
134,
255,
110,
186,
35,
255,
198,
243,
42,
0,
243,
146,
119,
0,
134,
235,
163,
1,
4,
241,
135,
255,
193,
46,
193,
254,
103,
180,
79,
255,
225,
4,
184,
254,
242,
118,
130,
0,
146,
135,
176,
1,
234,
111,
30,
0,
69,
66,
213,
254,
41,
96,
123,
0,
121,
94,
42,
255,
178,
191,
195,
255,
46,
130,
42,
0,
117,
84,
8,
255,
233,
49,
214,
254,
238,
122,
109,
0,
6,
71,
89,
1,
236,
211,
123,
0,
244,
13,
48,
254,
119,
148,
14,
0,
114,
28,
86,
255,
75,
237,
25,
255,
145,
229,
16,
254,
129,
100,
53,
255,
134,
150,
120,
254,
168,
157,
50,
0,
23,
72,
104,
255,
224,
49,
14,
0,
255,
123,
22,
255,
151,
185,
151,
255,
170,
80,
184,
1,
134,
182,
20,
0,
41,
100,
101,
1,
153,
33,
16,
0,
76,
154,
111,
1,
86,
206,
234,
255,
192,
160,
164,
254,
165,
123,
93,
255,
1,
216,
164,
254,
67,
17,
175,
255,
169,
11,
59,
255,
158,
41,
61,
255,
73,
188,
14,
255,
195,
6,
137,
255,
22,
147,
29,
255,
20,
103,
3,
255,
246,
130,
227,
255,
122,
40,
128,
0,
226,
47,
24,
254,
35,
36,
32,
0,
152,
186,
183,
255,
69,
202,
20,
0,
195,
133,
195,
0,
222,
51,
247,
0,
169,
171,
94,
1,
183,
0,
160,
255,
64,
205,
18,
1,
156,
83,
15,
255,
197,
58,
249,
254,
251,
89,
110,
255,
50,
10,
88,
254,
51,
43,
216,
0,
98,
242,
198,
1,
245,
151,
113,
0,
171,
236,
194,
1,
197,
31,
199,
255,
229,
81,
38,
1,
41,
59,
20,
0,
253,
104,
230,
0,
152,
93,
14,
255,
246,
242,
146,
254,
214,
169,
240,
255,
240,
102,
108,
254,
160,
167,
236,
0,
154,
218,
188,
0,
150,
233,
202,
255,
27,
19,
250,
1,
2,
71,
133,
255,
175,
12,
63,
1,
145,
183,
198,
0,
104,
120,
115,
255,
130,
251,
247,
0,
17,
212,
167,
255,
62,
123,
132,
255,
247,
100,
189,
0,
155,
223,
152,
0,
143,
197,
33,
0,
155,
59,
44,
255,
150,
93,
240,
1,
127,
3,
87,
255,
95,
71,
207,
1,
167,
85,
1,
255,
188,
152,
116,
255,
10,
23,
23,
0,
137,
195,
93,
1,
54,
98,
97,
0,
240,
0,
168,
255,
148,
188,
127,
0,
134,
107,
151,
0,
76,
253,
171,
0,
90,
132,
192,
0,
146,
22,
54,
0,
224,
66,
54,
254,
230,
186,
229,
255,
39,
182,
196,
0,
148,
251,
130,
255,
65,
131,
108,
254,
128,
1,
160,
0,
169,
49,
167,
254,
199,
254,
148,
255,
251,
6,
131,
0,
187,
254,
129,
255,
85,
82,
62,
0,
178,
23,
58,
255,
254,
132,
5,
0,
164,
213,
39,
0,
134,
252,
146,
254,
37,
53,
81,
255,
155,
134,
82,
0,
205,
167,
238,
255,
94,
45,
180,
255,
132,
40,
161,
0,
254,
111,
112,
1,
54,
75,
217,
0,
179,
230,
221,
1,
235,
94,
191,
255,
23,
243,
48,
1,
202,
145,
203,
255,
39,
118,
42,
255,
117,
141,
253,
0,
254,
0,
222,
0,
43,
251,
50,
0,
54,
169,
234,
1,
80,
68,
208,
0,
148,
203,
243,
254,
145,
7,
135,
0,
6,
254,
0,
0,
252,
185,
127,
0,
98,
8,
129,
255,
38,
35,
72,
255,
211,
36,
220,
1,
40,
26,
89,
0,
168,
64,
197,
254,
3,
222,
239,
255,
2,
83,
215,
254,
180,
159,
105,
0,
58,
115,
194,
0,
186,
116,
106,
255,
229,
247,
219,
255,
129,
118,
193,
0,
202,
174,
183,
1,
166,
161,
72,
0,
201,
107,
147,
254,
237,
136,
74,
0,
233,
230,
106,
1,
105,
111,
168,
0,
64,
224,
30,
1,
1,
229,
3,
0,
102,
151,
175,
255,
194,
238,
228,
255,
254,
250,
212,
0,
187,
237,
121,
0,
67,
251,
96,
1,
197,
30,
11,
0,
183,
95,
204,
0,
205,
89,
138,
0,
64,
221,
37,
1,
255,
223,
30,
255,
178,
48,
211,
255,
241,
200,
90,
255,
167,
209,
96,
255,
57,
130,
221,
0,
46,
114,
200,
255,
61,
184,
66,
0,
55,
182,
24,
254,
110,
182,
33,
0,
171,
190,
232,
255,
114,
94,
31,
0,
18,
221,
8,
0,
47,
231,
254,
0,
255,
112,
83,
0,
118,
15,
215,
255,
173,
25,
40,
254,
192,
193,
31,
255,
238,
21,
146,
255,
171,
193,
118,
255,
101,
234,
53,
254,
131,
212,
112,
0,
89,
192,
107,
1,
8,
208,
27,
0,
181,
217,
15,
255,
231,
149,
232,
0,
140,
236,
126,
0,
144,
9,
199,
255,
12,
79,
181,
254,
147,
182,
202,
255,
19,
109,
182,
255,
49,
212,
225,
0,
74,
163,
203,
0,
175,
233,
148,
0,
26,
112,
51,
0,
193,
193,
9,
255,
15,
135,
249,
0,
150,
227,
130,
0,
204,
0,
219,
1,
24,
242,
205,
0,
238,
208,
117,
255,
22,
244,
112,
0,
26,
229,
34,
0,
37,
80,
188,
255,
38,
45,
206,
254,
240,
90,
225,
255,
29,
3,
47,
255,
42,
224,
76,
0,
186,
243,
167,
0,
32,
132,
15,
255,
5,
51,
125,
0,
139,
135,
24,
0,
6,
241,
219,
0,
172,
229,
133,
255,
246,
214,
50,
0,
231,
11,
207,
255,
191,
126,
83,
1,
180,
163,
170,
255,
245,
56,
24,
1,
178,
164,
211,
255,
3,
16,
202,
1,
98,
57,
118,
255,
141,
131,
89,
254,
33,
51,
24,
0,
243,
149,
91,
255,
253,
52,
14,
0,
35,
169,
67,
254,
49,
30,
88,
255,
179,
27,
36,
255,
165,
140,
183,
0,
58,
189,
151,
0,
88,
31,
0,
0,
75,
169,
66,
0,
66,
101,
199,
255,
24,
216,
199,
1,
121,
196,
26,
255,
14,
79,
203,
254,
240,
226,
81,
255,
94,
28,
10,
255,
83,
193,
240,
255,
204,
193,
131,
255,
94,
15,
86,
0,
218,
40,
157,
0,
51,
193,
209,
0,
0,
242,
177,
0,
102,
185,
247,
0,
158,
109,
116,
0,
38,
135,
91,
0,
223,
175,
149,
0,
220,
66,
1,
255,
86,
60,
232,
0,
25,
96,
37,
255,
225,
122,
162,
1,
215,
187,
168,
255,
158,
157,
46,
0,
56,
171,
162,
0,
232,
240,
101,
1,
122,
22,
9,
0,
51,
9,
21,
255,
53,
25,
238,
255,
217,
30,
232,
254,
125,
169,
148,
0,
13,
232,
102,
0,
148,
9,
37,
0,
165,
97,
141,
1,
228,
131,
41,
0,
222,
15,
243,
255,
254,
18,
17,
0,
6,
60,
237,
1,
106,
3,
113,
0,
59,
132,
189,
0,
92,
112,
30,
0,
105,
208,
213,
0,
48,
84,
179,
255,
187,
121,
231,
254,
27,
216,
109,
255,
162,
221,
107,
254,
73,
239,
195,
255,
250,
31,
57,
255,
149,
135,
89,
255,
185,
23,
115,
1,
3,
163,
157,
255,
18,
112,
250,
0,
25,
57,
187,
255,
161,
96,
164,
0,
47,
16,
243,
0,
12,
141,
251,
254,
67,
234,
184,
255,
41,
18,
161,
0,
175,
6,
96,
255,
160,
172,
52,
254,
24,
176,
183,
255,
198,
193,
85,
1,
124,
121,
137,
255,
151,
50,
114,
255,
220,
203,
60,
255,
207,
239,
5,
1,
0,
38,
107,
255,
55,
238,
94,
254,
70,
152,
94,
0,
213,
220,
77,
1,
120,
17,
69,
255,
85,
164,
190,
255,
203,
234,
81,
0,
38,
49,
37,
254,
61,
144,
124,
0,
137,
78,
49,
254,
168,
247,
48,
0,
95,
164,
252,
0,
105,
169,
135,
0,
253,
228,
134,
0,
64,
166,
75,
0,
81,
73,
20,
255,
207,
210,
10,
0,
234,
106,
150,
255,
94,
34,
90,
255,
254,
159,
57,
254,
220,
133,
99,
0,
139,
147,
180,
254,
24,
23,
185,
0,
41,
57,
30,
255,
189,
97,
76,
0,
65,
187,
223,
255,
224,
172,
37,
255,
34,
62,
95,
1,
231,
144,
240,
0,
77,
106,
126,
254,
64,
152,
91,
0,
29,
98,
155,
0,
226,
251,
53,
255,
234,
211,
5,
255,
144,
203,
222,
255,
164,
176,
221,
254,
5,
231,
24,
0,
179,
122,
205,
0,
36,
1,
134,
255,
125,
70,
151,
254,
97,
228,
252,
0,
172,
129,
23,
254,
48,
90,
209,
255,
150,
224,
82,
1,
84,
134,
30,
0,
241,
196,
46,
0,
103,
113,
234,
255,
46,
101,
121,
254,
40,
124,
250,
255,
135,
45,
242,
254,
9,
249,
168,
255,
140,
108,
131,
255,
143,
163,
171,
0,
50,
173,
199,
255,
88,
222,
142,
255,
200,
95,
158,
0,
142,
192,
163,
255,
7,
117,
135,
0,
111,
124,
22,
0,
236,
12,
65,
254,
68,
38,
65,
255,
227,
174,
254,
0,
244,
245,
38,
0,
240,
50,
208,
255,
161,
63,
250,
0,
60,
209,
239,
0,
122,
35,
19,
0,
14,
33,
230,
254,
2,
159,
113,
0,
106,
20,
127,
255,
228,
205,
96,
0,
137,
210,
174,
254,
180,
212,
144,
255,
89,
98,
154,
1,
34,
88,
139,
0,
167,
162,
112,
1,
65,
110,
197,
0,
241,
37,
169,
0,
66,
56,
131,
255,
10,
201,
83,
254,
133,
253,
187,
255,
177,
112,
45,
254,
196,
251,
0,
0,
196,
250,
151,
255,
238,
232,
214,
255,
150,
209,
205,
0,
28,
240,
118,
0,
71,
76,
83,
1,
236,
99,
91,
0,
42,
250,
131,
1,
96,
18,
64,
255,
118,
222,
35,
0,
113,
214,
203,
255,
122,
119,
184,
255,
66,
19,
36,
0,
204,
64,
249,
0,
146,
89,
139,
0,
134,
62,
135,
1,
104,
233,
101,
0,
188,
84,
26,
0,
49,
249,
129,
0,
208,
214,
75,
255,
207,
130,
77,
255,
115,
175,
235,
0,
171,
2,
137,
255,
175,
145,
186,
1,
55,
245,
135,
255,
154,
86,
181,
1,
100,
58,
246,
255,
109,
199,
60,
255,
82,
204,
134,
255,
215,
49,
230,
1,
140,
229,
192,
255,
222,
193,
251,
255,
81,
136,
15,
255,
179,
149,
162,
255,
23,
39,
29,
255,
7,
95,
75,
254,
191,
81,
222,
0,
241,
81,
90,
255,
107,
49,
201,
255,
244,
211,
157,
0,
222,
140,
149,
255,
65,
219,
56,
254,
189,
246,
90,
255,
178,
59,
157,
1,
48,
219,
52,
0,
98,
34,
215,
0,
28,
17,
187,
255,
175,
169,
24,
0,
92,
79,
161,
255,
236,
200,
194,
1,
147,
143,
234,
0,
229,
225,
7,
1,
197,
168,
14,
0,
235,
51,
53,
1,
253,
120,
174,
0,
197,
6,
168,
255,
202,
117,
171,
0,
163,
21,
206,
0,
114,
85,
90,
255,
15,
41,
10,
255,
194,
19,
99,
0,
65,
55,
216,
254,
162,
146,
116,
0,
50,
206,
212,
255,
64,
146,
29,
255,
158,
158,
131,
1,
100,
165,
130,
255,
172,
23,
129,
255,
125,
53,
9,
255,
15,
193,
18,
1,
26,
49,
11,
255,
181,
174,
201,
1,
135,
201,
14,
255,
100,
19,
149,
0,
219,
98,
79,
0,
42,
99,
143,
254,
96,
0,
48,
255,
197,
249,
83,
254,
104,
149,
79,
255,
235,
110,
136,
254,
82,
128,
44,
255,
65,
41,
36,
254,
88,
211,
10,
0,
187,
121,
187,
0,
98,
134,
199,
0,
171,
188,
179,
254,
210,
11,
238,
255,
66,
123,
130,
254,
52,
234,
61,
0,
48,
113,
23,
254,
6,
86,
120,
255,
119,
178,
245,
0,
87,
129,
201,
0,
242,
141,
209,
0,
202,
114,
85,
0,
148,
22,
161,
0,
103,
195,
48,
0,
25,
49,
171,
255,
138,
67,
130,
0,
182,
73,
122,
254,
148,
24,
130,
0,
211,
229,
154,
0,
32,
155,
158,
0,
84,
105,
61,
0,
177,
194,
9,
255,
166,
89,
86,
1,
54,
83,
187,
0,
249,
40,
117,
255,
109,
3,
215,
255,
53,
146,
44,
1,
63,
47,
179,
0,
194,
216,
3,
254,
14,
84,
136,
0,
136,
177,
13,
255,
72,
243,
186,
255,
117,
17,
125,
255,
211,
58,
211,
255,
93,
79,
223,
0,
90,
88,
245,
255,
139,
209,
111,
255,
70,
222,
47,
0,
10,
246,
79,
255,
198,
217,
178,
0,
227,
225,
11,
1,
78,
126,
179,
255,
62,
43,
126,
0,
103,
148,
35,
0,
129,
8,
165,
254,
245,
240,
148,
0,
61,
51,
142,
0,
81,
208,
134,
0,
15,
137,
115,
255,
211,
119,
236,
255,
159,
245,
248,
255,
2,
134,
136,
255,
230,
139,
58,
1,
160,
164,
254,
0,
114,
85,
141,
255,
49,
166,
182,
255,
144,
70,
84,
1,
85,
182,
7,
0,
46,
53,
93,
0,
9,
166,
161,
255,
55,
162,
178,
255,
45,
184,
188,
0,
146,
28,
44,
254,
169,
90,
49,
0,
120,
178,
241,
1,
14,
123,
127,
255,
7,
241,
199,
1,
189,
66,
50,
255,
198,
143,
101,
254,
189,
243,
135,
255,
141,
24,
24,
254,
75,
97,
87,
0,
118,
251,
154,
1,
237,
54,
156,
0,
171,
146,
207,
255,
131,
196,
246,
255,
136,
64,
113,
1,
151,
232,
57,
0,
240,
218,
115,
0,
49,
61,
27,
255,
64,
129,
73,
1,
252,
169,
27,
255,
40,
132,
10,
1,
90,
201,
193,
255,
252,
121,
240,
1,
186,
206,
41,
0,
43,
198,
97,
0,
145,
100,
183,
0,
204,
216,
80,
254,
172,
150,
65,
0,
249,
229,
196,
254,
104,
123,
73,
255,
77,
104,
96,
254,
130,
180,
8,
0,
104,
123,
57,
0,
220,
202,
229,
255,
102,
249,
211,
0,
86,
14,
232,
255,
182,
78,
209,
0,
239,
225,
164,
0,
106,
13,
32,
255,
120,
73,
17,
255,
134,
67,
233,
0,
83,
254,
181,
0,
183,
236,
112,
1,
48,
64,
131,
255,
241,
216,
243,
255,
65,
193,
226,
0,
206,
241,
100,
254,
100,
134,
166,
255,
237,
202,
197,
0,
55,
13,
81,
0,
32,
124,
102,
255,
40,
228,
177,
0,
118,
181,
31,
1,
231,
160,
134,
255,
119,
187,
202,
0,
0,
142,
60,
255,
128,
38,
189,
255,
166,
201,
150,
0,
207,
120,
26,
1,
54,
184,
172,
0,
12,
242,
204,
254,
133,
66,
230,
0,
34,
38,
31,
1,
184,
112,
80,
0,
32,
51,
165,
254,
191,
243,
55,
0,
58,
73,
146,
254,
155,
167,
205,
255,
100,
104,
152,
255,
197,
254,
207,
255,
173,
19,
247,
0,
238,
10,
202,
0,
239,
151,
242,
0,
94,
59,
39,
255,
240,
29,
102,
255,
10,
92,
154,
255,
229,
84,
219,
255,
161,
129,
80,
0,
208,
90,
204,
1,
240,
219,
174,
255,
158,
102,
145,
1,
53,
178,
76,
255,
52,
108,
168,
1,
83,
222,
107,
0,
211,
36,
109,
0,
118,
58,
56,
0,
8,
29,
22,
0,
237,
160,
199,
0,
170,
209,
157,
0,
137,
71,
47,
0,
143,
86,
32,
0,
198,
242,
2,
0,
212,
48,
136,
1,
92,
172,
186,
0,
230,
151,
105,
1,
96,
191,
229,
0,
138,
80,
191,
254,
240,
216,
130,
255,
98,
43,
6,
254,
168,
196,
49,
0,
253,
18,
91,
1,
144,
73,
121,
0,
61,
146,
39,
1,
63,
104,
24,
255,
184,
165,
112,
254,
126,
235,
98,
0,
80,
213,
98,
255,
123,
60,
87,
255,
82,
140,
245,
1,
223,
120,
173,
255,
15,
198,
134,
1,
206,
60,
239,
0,
231,
234,
92,
255,
33,
238,
19,
255,
165,
113,
142,
1,
176,
119,
38,
0,
160,
43,
166,
254,
239,
91,
105,
0,
107,
61,
194,
1,
25,
4,
68,
0,
15,
139,
51,
0,
164,
132,
106,
255,
34,
116,
46,
254,
168,
95,
197,
0,
137,
212,
23,
0,
72,
156,
58,
0,
137,
112,
69,
254,
150,
105,
154,
255,
236,
201,
157,
0,
23,
212,
154,
255,
136,
82,
227,
254,
226,
59,
221,
255,
95,
149,
192,
0,
81,
118,
52,
255,
33,
43,
215,
1,
14,
147,
75,
255,
89,
156,
121,
254,
14,
18,
79,
0,
147,
208,
139,
1,
151,
218,
62,
255,
156,
88,
8,
1,
210,
184,
98,
255,
20,
175,
123,
255,
102,
83,
229,
0,
220,
65,
116,
1,
150,
250,
4,
255,
92,
142,
220,
255,
34,
247,
66,
255,
204,
225,
179,
254,
151,
81,
151,
0,
71,
40,
236,
255,
138,
63,
62,
0,
6,
79,
240,
255,
183,
185,
181,
0,
118,
50,
27,
0,
63,
227,
192,
0,
123,
99,
58,
1,
50,
224,
155,
255,
17,
225,
223,
254,
220,
224,
77,
255,
14,
44,
123,
1,
141,
128,
175,
0,
248,
212,
200,
0,
150,
59,
183,
255,
147,
97,
29,
0,
150,
204,
181,
0,
253,
37,
71,
0,
145,
85,
119,
0,
154,
200,
186,
0,
2,
128,
249,
255,
83,
24,
124,
0,
14,
87,
143,
0,
168,
51,
245,
1,
124,
151,
231,
255,
208,
240,
197,
1,
124,
190,
185,
0,
48,
58,
246,
0,
20,
233,
232,
0,
125,
18,
98,
255,
13,
254,
31,
255,
245,
177,
130,
255,
108,
142,
35,
0,
171,
125,
242,
254,
140,
12,
34,
255,
165,
161,
162,
0,
206,
205,
101,
0,
247,
25,
34,
1,
100,
145,
57,
0,
39,
70,
57,
0,
118,
204,
203,
255,
242,
0,
162,
0,
165,
244,
30,
0,
198,
116,
226,
0,
128,
111,
153,
255,
140,
54,
182,
1,
60,
122,
15,
255,
155,
58,
57,
1,
54,
50,
198,
0,
171,
211,
29,
255,
107,
138,
167,
255,
173,
107,
199,
255,
109,
161,
193,
0,
89,
72,
242,
255,
206,
115,
89,
255,
250,
254,
142,
254,
177,
202,
94,
255,
81,
89,
50,
0,
7,
105,
66,
255,
25,
254,
255,
254,
203,
64,
23,
255,
79,
222,
108,
255,
39,
249,
75,
0,
241,
124,
50,
0,
239,
152,
133,
0,
221,
241,
105,
0,
147,
151,
98,
0,
213,
161,
121,
254,
242,
49,
137,
0,
233,
37,
249,
254,
42,
183,
27,
0,
184,
119,
230,
255,
217,
32,
163,
255,
208,
251,
228,
1,
137,
62,
131,
255,
79,
64,
9,
254,
94,
48,
113,
0,
17,
138,
50,
254,
193,
255,
22,
0,
247,
18,
197,
1,
67,
55,
104,
0,
16,
205,
95,
255,
48,
37,
66,
0,
55,
156,
63,
1,
64,
82,
74,
255,
200,
53,
71,
254,
239,
67,
125,
0,
26,
224,
222,
0,
223,
137,
93,
255,
30,
224,
202,
255,
9,
220,
132,
0,
198,
38,
235,
1,
102,
141,
86,
0,
60,
43,
81,
1,
136,
28,
26,
0,
233,
36,
8,
254,
207,
242,
148,
0,
164,
162,
63,
0,
51,
46,
224,
255,
114,
48,
79,
255,
9,
175,
226,
0,
222,
3,
193,
255,
47,
160,
232,
255,
255,
93,
105,
254,
14,
42,
230,
0,
26,
138,
82,
1,
208,
43,
244,
0,
27,
39,
38,
255,
98,
208,
127,
255,
64,
149,
182,
255,
5,
250,
209,
0,
187,
60,
28,
254,
49,
25,
218,
255,
169,
116,
205,
255,
119,
18,
120,
0,
156,
116,
147,
255,
132,
53,
109,
255,
13,
10,
202,
0,
110,
83,
167,
0,
157,
219,
137,
255,
6,
3,
130,
255,
50,
167,
30,
255,
60,
159,
47,
255,
129,
128,
157,
254,
94,
3,
189,
0,
3,
166,
68,
0,
83,
223,
215,
0,
150,
90,
194,
1,
15,
168,
65,
0,
227,
83,
51,
255,
205,
171,
66,
255,
54,
187,
60,
1,
152,
102,
45,
255,
119,
154,
225,
0,
240,
247,
136,
0,
100,
197,
178,
255,
139,
71,
223,
255,
204,
82,
16,
1,
41,
206,
42,
255,
156,
192,
221,
255,
216,
123,
244,
255,
218,
218,
185,
255,
187,
186,
239,
255,
252,
172,
160,
255,
195,
52,
22,
0,
144,
174,
181,
254,
187,
100,
115,
255,
211,
78,
176,
255,
27,
7,
193,
0,
147,
213,
104,
255,
90,
201,
10,
255,
80,
123,
66,
1,
22,
33,
186,
0,
1,
7,
99,
254,
30,
206,
10,
0,
229,
234,
5,
0,
53,
30,
210,
0,
138,
8,
220,
254,
71,
55,
167,
0,
72,
225,
86,
1,
118,
190,
188,
0,
254,
193,
101,
1,
171,
249,
172,
255,
94,
158,
183,
254,
93,
2,
108,
255,
176,
93,
76,
255,
73,
99,
79,
255,
74,
64,
129,
254,
246,
46,
65,
0,
99,
241,
127,
254,
246,
151,
102,
255,
44,
53,
208,
254,
59,
102,
234,
0,
154,
175,
164,
255,
88,
242,
32,
0,
111,
38,
1,
0,
255,
182,
190,
255,
115,
176,
15,
254,
169,
60,
129,
0,
122,
237,
241,
0,
90,
76,
63,
0,
62,
74,
120,
255,
122,
195,
110,
0,
119,
4,
178,
0,
222,
242,
210,
0,
130,
33,
46,
254,
156,
40,
41,
0,
167,
146,
112,
1,
49,
163,
111,
255,
121,
176,
235,
0,
76,
207,
14,
255,
3,
25,
198,
1,
41,
235,
213,
0,
85,
36,
214,
1,
49,
92,
109,
255,
200,
24,
30,
254,
168,
236,
195,
0,
145,
39,
124,
1,
236,
195,
149,
0,
90,
36,
184,
255,
67,
85,
170,
255,
38,
35,
26,
254,
131,
124,
68,
255,
239,
155,
35,
255,
54,
201,
164,
0,
196,
22,
117,
255,
49,
15,
205,
0,
24,
224,
29,
1,
126,
113,
144,
0,
117,
21,
182,
0,
203,
159,
141,
0,
223,
135,
77,
0,
176,
230,
176,
255,
190,
229,
215,
255,
99,
37,
181,
255,
51,
21,
138,
255,
25,
189,
89,
255,
49,
48,
165,
254,
152,
45,
247,
0,
170,
108,
222,
0,
80,
202,
5,
0,
27,
69,
103,
254,
204,
22,
129,
255,
180,
252,
62,
254,
210,
1,
91,
255,
146,
110,
254,
255,
219,
162,
28,
0,
223,
252,
213,
1,
59,
8,
33,
0,
206,
16,
244,
0,
129,
211,
48,
0,
107,
160,
208,
0,
112,
59,
209,
0,
109,
77,
216,
254,
34,
21,
185,
255,
246,
99,
56,
255,
179,
139,
19,
255,
185,
29,
50,
255,
84,
89,
19,
0,
74,
250,
98,
255,
225,
42,
200,
255,
192,
217,
205,
255,
210,
16,
167,
0,
99,
132,
95,
1,
43,
230,
57,
0,
254,
11,
203,
255,
99,
188,
63,
255,
119,
193,
251,
254,
80,
105,
54,
0,
232,
181,
189,
1,
183,
69,
112,
255,
208,
171,
165,
255,
47,
109,
180,
255,
123,
83,
165,
0,
146,
162,
52,
255,
154,
11,
4,
255,
151,
227,
90,
255,
146,
137,
97,
254,
61,
233,
41,
255,
94,
42,
55,
255,
108,
164,
236,
0,
152,
68,
254,
0,
10,
140,
131,
255,
10,
106,
79,
254,
243,
158,
137,
0,
67,
178,
66,
254,
177,
123,
198,
255,
15,
62,
34,
0,
197,
88,
42,
255,
149,
95,
177,
255,
152,
0,
198,
255,
149,
254,
113,
255,
225,
90,
163,
255,
125,
217,
247,
0,
18,
17,
224,
0,
128,
66,
120,
254,
192,
25,
9,
255,
50,
221,
205,
0,
49,
212,
70,
0,
233,
255,
164,
0,
2,
209,
9,
0,
221,
52,
219,
254,
172,
224,
244,
255,
94,
56,
206,
1,
242,
179,
2,
255,
31,
91,
164,
1,
230,
46,
138,
255,
189,
230,
220,
0,
57,
47,
61,
255,
111,
11,
157,
0,
177,
91,
152,
0,
28,
230,
98,
0,
97,
87,
126,
0,
198,
89,
145,
255,
167,
79,
107,
0,
249,
77,
160,
1,
29,
233,
230,
255,
150,
21,
86,
254,
60,
11,
193,
0,
151,
37,
36,
254,
185,
150,
243,
255,
228,
212,
83,
1,
172,
151,
180,
0,
201,
169,
155,
0,
244,
60,
234,
0,
142,
235,
4,
1,
67,
218,
60,
0,
192,
113,
75,
1,
116,
243,
207,
255,
65,
172,
155,
0,
81,
30,
156,
255,
80,
72,
33,
254,
18,
231,
109,
255,
142,
107,
21,
254,
125,
26,
132,
255,
176,
16,
59,
255,
150,
201,
58,
0,
206,
169,
201,
0,
208,
121,
226,
0,
40,
172,
14,
255,
150,
61,
94,
255,
56,
57,
156,
255,
141,
60,
145,
255,
45,
108,
149,
255,
238,
145,
155,
255,
209,
85,
31,
254,
192,
12,
210,
0,
99,
98,
93,
254,
152,
16,
151,
0,
225,
185,
220,
0,
141,
235,
44,
255,
160,
172,
21,
254,
71,
26,
31,
255,
13,
64,
93,
254,
28,
56,
198,
0,
177,
62,
248,
1,
182,
8,
241,
0,
166,
101,
148,
255,
78,
81,
133,
255,
129,
222,
215,
1,
188,
169,
129,
255,
232,
7,
97,
0,
49,
112,
60,
255,
217,
229,
251,
0,
119,
108,
138,
0,
39,
19,
123,
254,
131,
49,
235,
0,
132,
84,
145,
0,
130,
230,
148,
255,
25,
74,
187,
0,
5,
245,
54,
255,
185,
219,
241,
1,
18,
194,
228,
255,
241,
202,
102,
0,
105,
113,
202,
0,
155,
235,
79,
0,
21,
9,
178,
255,
156,
1,
239,
0,
200,
148,
61,
0,
115,
247,
210,
255,
49,
221,
135,
0,
58,
189,
8,
1,
35,
46,
9,
0,
81,
65,
5,
255,
52,
158,
185,
255,
125,
116,
46,
255,
74,
140,
13,
255,
210,
92,
172,
254,
147,
23,
71,
0,
217,
224,
253,
254,
115,
108,
180,
255,
145,
58,
48,
254,
219,
177,
24,
255,
156,
255,
60,
1,
154,
147,
242,
0,
253,
134,
87,
0,
53,
75,
229,
0,
48,
195,
222,
255,
31,
175,
50,
255,
156,
210,
120,
255,
208,
35,
222,
255,
18,
248,
179,
1,
2,
10,
101,
255,
157,
194,
248,
255,
158,
204,
101,
255,
104,
254,
197,
255,
79,
62,
4,
0,
178,
172,
101,
1,
96,
146,
251,
255,
65,
10,
156,
0,
2,
137,
165,
255,
116,
4,
231,
0,
242,
215,
1,
0,
19,
35,
29,
255,
43,
161,
79,
0,
59,
149,
246,
1,
251,
66,
176,
0,
200,
33,
3,
255,
80,
110,
142,
255,
195,
161,
17,
1,
228,
56,
66,
255,
123,
47,
145,
254,
132,
4,
164,
0,
67,
174,
172,
0,
25,
253,
114,
0,
87,
97,
87,
1,
250,
220,
84,
0,
96,
91,
200,
255,
37,
125,
59,
0,
19,
65,
118,
0,
161,
52,
241,
255,
237,
172,
6,
255,
176,
191,
255,
255,
1,
65,
130,
254,
223,
190,
230,
0,
101,
253,
231,
255,
146,
35,
109,
0,
250,
29,
77,
1,
49,
0,
19,
0,
123,
90,
155,
1,
22,
86,
32,
255,
218,
213,
65,
0,
111,
93,
127,
0,
60,
93,
169,
255,
8,
127,
182,
0,
17,
186,
14,
254,
253,
137,
246,
255,
213,
25,
48,
254,
76,
238,
0,
255,
248,
92,
70,
255,
99,
224,
139,
0,
184,
9,
255,
1,
7,
164,
208,
0,
205,
131,
198,
1,
87,
214,
199,
0,
130,
214,
95,
0,
221,
149,
222,
0,
23,
38,
171,
254,
197,
110,
213,
0,
43,
115,
140,
254,
215,
177,
118,
0,
96,
52,
66,
1,
117,
158,
237,
0,
14,
64,
182,
255,
46,
63,
174,
255,
158,
95,
190,
255,
225,
205,
177,
255,
43,
5,
142,
255,
172,
99,
212,
255,
244,
187,
147,
0,
29,
51,
153,
255,
228,
116,
24,
254,
30,
101,
207,
0,
19,
246,
150,
255,
134,
231,
5,
0,
125,
134,
226,
1,
77,
65,
98,
0,
236,
130,
33,
255,
5,
110,
62,
0,
69,
108,
127,
255,
7,
113,
22,
0,
145,
20,
83,
254,
194,
161,
231,
255,
131,
181,
60,
0,
217,
209,
177,
255,
229,
148,
212,
254,
3,
131,
184,
0,
117,
177,
187,
1,
28,
14,
31,
255,
176,
102,
80,
0,
50,
84,
151,
255,
125,
31,
54,
255,
21,
157,
133,
255,
19,
179,
139,
1,
224,
232,
26,
0,
34,
117,
170,
255,
167,
252,
171,
255,
73,
141,
206,
254,
129,
250,
35,
0,
72,
79,
236,
1,
220,
229,
20,
255,
41,
202,
173,
255,
99,
76,
238,
255,
198,
22,
224,
255,
108,
198,
195,
255,
36,
141,
96,
1,
236,
158,
59,
255,
106,
100,
87,
0,
110,
226,
2,
0,
227,
234,
222,
0,
154,
93,
119,
255,
74,
112,
164,
255,
67,
91,
2,
255,
21,
145,
33,
255,
102,
214,
137,
255,
175,
230,
103,
254,
163,
246,
166,
0,
93,
247,
116,
254,
167,
224,
28,
255,
220,
2,
57,
1,
171,
206,
84,
0,
123,
228,
17,
255,
27,
120,
119,
0,
119,
11,
147,
1,
180,
47,
225,
255,
104,
200,
185,
254,
165,
2,
114,
0,
77,
78,
212,
0,
45,
154,
177,
255,
24,
196,
121,
254,
82,
157,
182,
0,
90,
16,
190,
1,
12,
147,
197,
0,
95,
239,
152,
255,
11,
235,
71,
0,
86,
146,
119,
255,
172,
134,
214,
0,
60,
131,
196,
0,
161,
225,
129,
0,
31,
130,
120,
254,
95,
200,
51,
0,
105,
231,
210,
255,
58,
9,
148,
255,
43,
168,
221,
255,
124,
237,
142,
0,
198,
211,
50,
254,
46,
245,
103,
0,
164,
248,
84,
0,
152,
70,
208,
255,
180,
117,
177,
0,
70,
79,
185,
0,
243,
74,
32,
0,
149,
156,
207,
0,
197,
196,
161,
1,
245,
53,
239,
0,
15,
93,
246,
254,
139,
240,
49,
255,
196,
88,
36,
255,
162,
38,
123,
0,
128,
200,
157,
1,
174,
76,
103,
255,
173,
169,
34,
254,
216,
1,
171,
255,
114,
51,
17,
0,
136,
228,
194,
0,
110,
150,
56,
254,
106,
246,
159,
0,
19,
184,
79,
255,
150,
77,
240,
255,
155,
80,
162,
0,
0,
53,
169,
255,
29,
151,
86,
0,
68,
94,
16,
0,
92,
7,
110,
254,
98,
117,
149,
255,
249,
77,
230,
255,
253,
10,
140,
0,
214,
124,
92,
254,
35,
118,
235,
0,
89,
48,
57,
1,
22,
53,
166,
0,
184,
144,
61,
255,
179,
255,
194,
0,
214,
248,
61,
254,
59,
110,
246,
0,
121,
21,
81,
254,
166,
3,
228,
0,
106,
64,
26,
255,
69,
232,
134,
255,
242,
220,
53,
254,
46,
220,
85,
0,
113,
149,
247,
255,
97,
179,
103,
255,
190,
127,
11,
0,
135,
209,
182,
0,
95,
52,
129,
1,
170,
144,
206,
255,
122,
200,
204,
255,
168,
100,
146,
0,
60,
144,
149,
254,
70,
60,
40,
0,
122,
52,
177,
255,
246,
211,
101,
255,
174,
237,
8,
0,
7,
51,
120,
0,
19,
31,
173,
0,
126,
239,
156,
255,
143,
189,
203,
0,
196,
128,
88,
255,
233,
133,
226,
255,
30,
125,
173,
255,
201,
108,
50,
0,
123,
100,
59,
255,
254,
163,
3,
1,
221,
148,
181,
255,
214,
136,
57,
254,
222,
180,
137,
255,
207,
88,
54,
255,
28,
33,
251,
255,
67,
214,
52,
1,
210,
208,
100,
0,
81,
170,
94,
0,
145,
40,
53,
0,
224,
111,
231,
254,
35,
28,
244,
255,
226,
199,
195,
254,
238,
17,
230,
0,
217,
217,
164,
254,
169,
157,
221,
0,
218,
46,
162,
1,
199,
207,
163,
255,
108,
115,
162,
1,
14,
96,
187,
255,
118,
60,
76,
0,
184,
159,
152,
0,
209,
231,
71,
254,
42,
164,
186,
255,
186,
153,
51,
254,
221,
171,
182,
255,
162,
142,
173,
0,
235,
47,
193,
0,
7,
139,
16,
1,
95,
164,
64,
255,
16,
221,
166,
0,
219,
197,
16,
0,
132,
29,
44,
255,
100,
69,
117,
255,
60,
235,
88,
254,
40,
81,
173,
0,
71,
190,
61,
255,
187,
88,
157,
0,
231,
11,
23,
0,
237,
117,
164,
0,
225,
168,
223,
255,
154,
114,
116,
255,
163,
152,
242,
1,
24,
32,
170,
0,
125,
98,
113,
254,
168,
19,
76,
0,
17,
157,
220,
254,
155,
52,
5,
0,
19,
111,
161,
255,
71,
90,
252,
255,
173,
110,
240,
0,
10,
198,
121,
255,
253,
255,
240,
255,
66,
123,
210,
0,
221,
194,
215,
254,
121,
163,
17,
255,
225,
7,
99,
0,
190,
49,
182,
0,
115,
9,
133,
1,
232,
26,
138,
255,
213,
68,
132,
0,
44,
119,
122,
255,
179,
98,
51,
0,
149,
90,
106,
0,
71,
50,
230,
255,
10,
153,
118,
255,
177,
70,
25,
0,
165,
87,
205,
0,
55,
138,
234,
0,
238,
30,
97,
0,
113,
155,
207,
0,
98,
153,
127,
0,
34,
107,
219,
254,
117,
114,
172,
255,
76,
180,
255,
254,
242,
57,
179,
255,
221,
34,
172,
254,
56,
162,
49,
255,
83,
3,
255,
255,
113,
221,
189,
255,
188,
25,
228,
254,
16,
88,
89,
255,
71,
28,
198,
254,
22,
17,
149,
255,
243,
121,
254,
255,
107,
202,
99,
255,
9,
206,
14,
1,
220,
47,
153,
0,
107,
137,
39,
1,
97,
49,
194,
255,
149,
51,
197,
254,
186,
58,
11,
255,
107,
43,
232,
1,
200,
6,
14,
255,
181,
133,
65,
254,
221,
228,
171,
255,
123,
62,
231,
1,
227,
234,
179,
255,
34,
189,
212,
254,
244,
187,
249,
0,
190,
13,
80,
1,
130,
89,
1,
0,
223,
133,
173,
0,
9,
222,
198,
255,
66,
127,
74,
0,
167,
216,
93,
255,
155,
168,
198,
1,
66,
145,
0,
0,
68,
102,
46,
1,
172,
90,
154,
0,
216,
128,
75,
255,
160,
40,
51,
0,
158,
17,
27,
1,
124,
240,
49,
0,
236,
202,
176,
255,
151,
124,
192,
255,
38,
193,
190,
0,
95,
182,
61,
0,
163,
147,
124,
255,
255,
165,
51,
255,
28,
40,
17,
254,
215,
96,
78,
0,
86,
145,
218,
254,
31,
36,
202,
255,
86,
9,
5,
0,
111,
41,
200,
255,
237,
108,
97,
0,
57,
62,
44,
0,
117,
184,
15,
1,
45,
241,
116,
0,
152,
1,
220,
255,
157,
165,
188,
0,
250,
15,
131,
1,
60,
44,
125,
255,
65,
220,
251,
255,
75,
50,
184,
0,
53,
90,
128,
255,
231,
80,
194,
255,
136,
129,
127,
1,
21,
18,
187,
255,
45,
58,
161,
255,
71,
147,
34,
0,
174,
249,
11,
254,
35,
141,
29,
0,
239,
68,
177,
255,
115,
110,
58,
0,
238,
190,
177,
1,
87,
245,
166,
255,
190,
49,
247,
255,
146,
83,
184,
255,
173,
14,
39,
255,
146,
215,
104,
0,
142,
223,
120,
0,
149,
200,
155,
255,
212,
207,
145,
1,
16,
181,
217,
0,
173,
32,
87,
255,
255,
35,
181,
0,
119,
223,
161,
1,
200,
223,
94,
255,
70,
6,
186,
255,
192,
67,
85,
255,
50,
169,
152,
0,
144,
26,
123,
255,
56,
243,
179,
254,
20,
68,
136,
0,
39,
140,
188,
254,
253,
208,
5,
255,
200,
115,
135,
1,
43,
172,
229,
255,
156,
104,
187,
0,
151,
251,
167,
0,
52,
135,
23,
0,
151,
153,
72,
0,
147,
197,
107,
254,
148,
158,
5,
255,
238,
143,
206,
0,
126,
153,
137,
255,
88,
152,
197,
254,
7,
68,
167,
0,
252,
159,
165,
255,
239,
78,
54,
255,
24,
63,
55,
255,
38,
222,
94,
0,
237,
183,
12,
255,
206,
204,
210,
0,
19,
39,
246,
254,
30,
74,
231,
0,
135,
108,
29,
1,
179,
115,
0,
0,
117,
118,
116,
1,
132,
6,
252,
255,
145,
129,
161,
1,
105,
67,
141,
0,
82,
37,
226,
255,
238,
226,
228,
255,
204,
214,
129,
254,
162,
123,
100,
255,
185,
121,
234,
0,
45,
108,
231,
0,
66,
8,
56,
255,
132,
136,
128,
0,
172,
224,
66,
254,
175,
157,
188,
0,
230,
223,
226,
254,
242,
219,
69,
0,
184,
14,
119,
1,
82,
162,
56,
0,
114,
123,
20,
0,
162,
103,
85,
255,
49,
239,
99,
254,
156,
135,
215,
0,
111,
255,
167,
254,
39,
196,
214,
0,
144,
38,
79,
1,
249,
168,
125,
0,
155,
97,
156,
255,
23,
52,
219,
255,
150,
22,
144,
0,
44,
149,
165,
255,
40,
127,
183,
0,
196,
77,
233,
255,
118,
129,
210,
255,
170,
135,
230,
255,
214,
119,
198,
0,
233,
240,
35,
0,
253,
52,
7,
255,
117,
102,
48,
255,
21,
204,
154,
255,
179,
136,
177,
255,
23,
2,
3,
1,
149,
130,
89,
255,
252,
17,
159,
1,
70,
60,
26,
0,
144,
107,
17,
0,
180,
190,
60,
255,
56,
182,
59,
255,
110,
71,
54,
255,
198,
18,
129,
255,
149,
224,
87,
255,
223,
21,
152,
255,
138,
22,
182,
255,
250,
156,
205,
0,
236,
45,
208,
255,
79,
148,
242,
1,
101,
70,
209,
0,
103,
78,
174,
0,
101,
144,
172,
255,
152,
136,
237,
1,
191,
194,
136,
0,
113,
80,
125,
1,
152,
4,
141,
0,
155,
150,
53,
255,
196,
116,
245,
0,
239,
114,
73,
254,
19,
82,
17,
255,
124,
125,
234,
255,
40,
52,
191,
0,
42,
210,
158,
255,
155,
132,
165,
0,
178,
5,
42,
1,
64,
92,
40,
255,
36,
85,
77,
255,
178,
228,
118,
0,
137,
66,
96,
254,
115,
226,
66,
0,
110,
240,
69,
254,
151,
111,
80,
0,
167,
174,
236,
255,
227,
108,
107,
255,
188,
242,
65,
255,
183,
81,
255,
0,
57,
206,
181,
255,
47,
34,
181,
255,
213,
240,
158,
1,
71,
75,
95,
0,
156,
40,
24,
255,
102,
210,
81,
0,
171,
199,
228,
255,
154,
34,
41,
0,
227,
175,
75,
0,
21,
239,
195,
0,
138,
229,
95,
1,
76,
192,
49,
0,
117,
123,
87,
1,
227,
225,
130,
0,
125,
62,
63,
255,
2,
198,
171,
0,
254,
36,
13,
254,
145,
186,
206,
0,
148,
255,
244,
255,
35,
0,
166,
0,
30,
150,
219,
1,
92,
228,
212,
0,
92,
198,
60,
254,
62,
133,
200,
255,
201,
41,
59,
0,
125,
238,
109,
255,
180,
163,
238,
1,
140,
122,
82,
0,
9,
22,
88,
255,
197,
157,
47,
255,
153,
94,
57,
0,
88,
30,
182,
0,
84,
161,
85,
0,
178,
146,
124,
0,
166,
166,
7,
255,
21,
208,
223,
0,
156,
182,
242,
0,
155,
121,
185,
0,
83,
156,
174,
254,
154,
16,
118,
255,
186,
83,
232,
1,
223,
58,
121,
255,
29,
23,
88,
0,
35,
125,
127,
255,
170,
5,
149,
254,
164,
12,
130,
255,
155,
196,
29,
0,
161,
96,
136,
0,
7,
35,
29,
1,
162,
37,
251,
0,
3,
46,
242,
255,
0,
217,
188,
0,
57,
174,
226,
1,
206,
233,
2,
0,
57,
187,
136,
254,
123,
189,
9,
255,
201,
117,
127,
255,
186,
36,
204,
0,
231,
25,
216,
0,
80,
78,
105,
0,
19,
134,
129,
255,
148,
203,
68,
0,
141,
81,
125,
254,
248,
165,
200,
255,
214,
144,
135,
0,
151,
55,
166,
255,
38,
235,
91,
0,
21,
46,
154,
0,
223,
254,
150,
255,
35,
153,
180,
255,
125,
176,
29,
1,
43,
98,
30,
255,
216,
122,
230,
255,
233,
160,
12,
0,
57,
185,
12,
254,
240,
113,
7,
255,
5,
9,
16,
254,
26,
91,
108,
0,
109,
198,
203,
0,
8,
147,
40,
0,
129,
134,
228,
255,
124,
186,
40,
255,
114,
98,
132,
254,
166,
132,
23,
0,
99,
69,
44,
0,
9,
242,
238,
255,
184,
53,
59,
0,
132,
129,
102,
255,
52,
32,
243,
254,
147,
223,
200,
255,
123,
83,
179,
254,
135,
144,
201,
255,
141,
37,
56,
1,
151,
60,
227,
255,
90,
73,
156,
1,
203,
172,
187,
0,
80,
151,
47,
255,
94,
137,
231,
255,
36,
191,
59,
255,
225,
209,
181,
255,
74,
215,
213,
254,
6,
118,
179,
255,
153,
54,
193,
1,
50,
0,
231,
0,
104,
157,
72,
1,
140,
227,
154,
255,
182,
226,
16,
254,
96,
225,
92,
255,
115,
20,
170,
254,
6,
250,
78,
0,
248,
75,
173,
255,
53,
89,
6,
255,
0,
180,
118,
0,
72,
173,
1,
0,
64,
8,
206,
1,
174,
133,
223,
0,
185,
62,
133,
255,
214,
11,
98,
0,
197,
31,
208,
0,
171,
167,
244,
255,
22,
231,
181,
1,
150,
218,
185,
0,
247,
169,
97,
1,
165,
139,
247,
255,
47,
120,
149,
1,
103,
248,
51,
0,
60,
69,
28,
254,
25,
179,
196,
0,
124,
7,
218,
254,
58,
107,
81,
0,
184,
233,
156,
255,
252,
74,
36,
0,
118,
188,
67,
0,
141,
95,
53,
255,
222,
94,
165,
254,
46,
61,
53,
0,
206,
59,
115,
255,
47,
236,
250,
255,
74,
5,
32,
1,
129,
154,
238,
255,
106,
32,
226,
0,
121,
187,
61,
255,
3,
166,
241,
254,
67,
170,
172,
255,
29,
216,
178,
255,
23,
201,
252,
0,
253,
110,
243,
0,
200,
125,
57,
0,
109,
192,
96,
255,
52,
115,
238,
0,
38,
121,
243,
255,
201,
56,
33,
0,
194,
118,
130,
0,
75,
96,
25,
255,
170,
30,
230,
254,
39,
63,
253,
0,
36,
45,
250,
255,
251,
1,
239,
0,
160,
212,
92,
1,
45,
209,
237,
0,
243,
33,
87,
254,
237,
84,
201,
255,
212,
18,
157,
254,
212,
99,
127,
255,
217,
98,
16,
254,
139,
172,
239,
0,
168,
201,
130,
255,
143,
193,
169,
255,
238,
151,
193,
1,
215,
104,
41,
0,
239,
61,
165,
254,
2,
3,
242,
0,
22,
203,
177,
254,
177,
204,
22,
0,
149,
129,
213,
254,
31,
11,
41,
255,
0,
159,
121,
254,
160,
25,
114,
255,
162,
80,
200,
0,
157,
151,
11,
0,
154,
134,
78,
1,
216,
54,
252,
0,
48,
103,
133,
0,
105,
220,
197,
0,
253,
168,
77,
254,
53,
179,
23,
0,
24,
121,
240,
1,
255,
46,
96,
255,
107,
60,
135,
254,
98,
205,
249,
255,
63,
249,
119,
255,
120,
59,
211,
255,
114,
180,
55,
254,
91,
85,
237,
0,
149,
212,
77,
1,
56,
73,
49,
0,
86,
198,
150,
0,
93,
209,
160,
0,
69,
205,
182,
255,
244,
90,
43,
0,
20,
36,
176,
0,
122,
116,
221,
0,
51,
167,
39,
1,
231,
1,
63,
255,
13,
197,
134,
0,
3,
209,
34,
255,
135,
59,
202,
0,
167,
100,
78,
0,
47,
223,
76,
0,
185,
60,
62,
0,
178,
166,
123,
1,
132,
12,
161,
255,
61,
174,
43,
0,
195,
69,
144,
0,
127,
47,
191,
1,
34,
44,
78,
0,
57,
234,
52,
1,
255,
22,
40,
255,
246,
94,
146,
0,
83,
228,
128,
0,
60,
78,
224,
255,
0,
96,
210,
255,
153,
175,
236,
0,
159,
21,
73,
0,
180,
115,
196,
254,
131,
225,
106,
0,
255,
167,
134,
0,
159,
8,
112,
255,
120,
68,
194,
255,
176,
196,
198,
255,
118,
48,
168,
255,
93,
169,
1,
0,
112,
200,
102,
1,
74,
24,
254,
0,
19,
141,
4,
254,
142,
62,
63,
0,
131,
179,
187,
255,
77,
156,
155,
255,
119,
86,
164,
0,
170,
208,
146,
255,
208,
133,
154,
255,
148,
155,
58,
255,
162,
120,
232,
254,
252,
213,
155,
0,
241,
13,
42,
0,
94,
50,
131,
0,
179,
170,
112,
0,
140,
83,
151,
255,
55,
119,
84,
1,
140,
35,
239,
255,
153,
45,
67,
1,
236,
175,
39,
0,
54,
151,
103,
255,
158,
42,
65,
255,
196,
239,
135,
254,
86,
53,
203,
0,
149,
97,
47,
254,
216,
35,
17,
255,
70,
3,
70,
1,
103,
36,
90,
255,
40,
26,
173,
0,
184,
48,
13,
0,
163,
219,
217,
255,
81,
6,
1,
255,
221,
170,
108,
254,
233,
208,
93,
0,
100,
201,
249,
254,
86,
36,
35,
255,
209,
154,
30,
1,
227,
201,
251,
255,
2,
189,
167,
254,
100,
57,
3,
0,
13,
128,
41,
0,
197,
100,
75,
0,
150,
204,
235,
255,
145,
174,
59,
0,
120,
248,
149,
255,
85,
55,
225,
0,
114,
210,
53,
254,
199,
204,
119,
0,
14,
247,
74,
1,
63,
251,
129,
0,
67,
104,
151,
1,
135,
130,
80,
0,
79,
89,
55,
255,
117,
230,
157,
255,
25,
96,
143,
0,
213,
145,
5,
0,
69,
241,
120,
1,
149,
243,
95,
255,
114,
42,
20,
0,
131,
72,
2,
0,
154,
53,
20,
255,
73,
62,
109,
0,
196,
102,
152,
0,
41,
12,
204,
255,
122,
38,
11,
1,
250,
10,
145,
0,
207,
125,
148,
0,
246,
244,
222,
255,
41,
32,
85,
1,
112,
213,
126,
0,
162,
249,
86,
1,
71,
198,
127,
255,
81,
9,
21,
1,
98,
39,
4,
255,
204,
71,
45,
1,
75,
111,
137,
0,
234,
59,
231,
0,
32,
48,
95,
255,
204,
31,
114,
1,
29,
196,
181,
255,
51,
241,
167,
254,
93,
109,
142,
0,
104,
144,
45,
0,
235,
12,
181,
255,
52,
112,
164,
0,
76,
254,
202,
255,
174,
14,
162,
0,
61,
235,
147,
255,
43,
64,
185,
254,
233,
125,
217,
0,
243,
88,
167,
254,
74,
49,
8,
0,
156,
204,
66,
0,
124,
214,
123,
0,
38,
221,
118,
1,
146,
112,
236,
0,
114,
98,
177,
0,
151,
89,
199,
0,
87,
197,
112,
0,
185,
149,
161,
0,
44,
96,
165,
0,
248,
179,
20,
255,
188,
219,
216,
254,
40,
62,
13,
0,
243,
142,
141,
0,
229,
227,
206,
255,
172,
202,
35,
255,
117,
176,
225,
255,
82,
110,
38,
1,
42,
245,
14,
255,
20,
83,
97,
0,
49,
171,
10,
0,
242,
119,
120,
0,
25,
232,
61,
0,
212,
240,
147,
255,
4,
115,
56,
255,
145,
17,
239,
254,
202,
17,
251,
255,
249,
18,
245,
255,
99,
117,
239,
0,
184,
4,
179,
255,
246,
237,
51,
255,
37,
239,
137,
255,
166,
112,
166,
255,
81,
188,
33,
255,
185,
250,
142,
255,
54,
187,
173,
0,
208,
112,
201,
0,
246,
43,
228,
1,
104,
184,
88,
255,
212,
52,
196,
255,
51,
117,
108,
255,
254,
117,
155,
0,
46,
91,
15,
255,
87,
14,
144,
255,
87,
227,
204,
0,
83,
26,
83,
1,
159,
76,
227,
0,
159,
27,
213,
1,
24,
151,
108,
0,
117,
144,
179,
254,
137,
209,
82,
0,
38,
159,
10,
0,
115,
133,
201,
0,
223,
182,
156,
1,
110,
196,
93,
255,
57,
60,
233,
0,
5,
167,
105,
255,
154,
197,
164,
0,
96,
34,
186,
255,
147,
133,
37,
1,
220,
99,
190,
0,
1,
167,
84,
255,
20,
145,
171,
0,
194,
197,
251,
254,
95,
78,
133,
255,
252,
248,
243,
255,
225,
93,
131,
255,
187,
134,
196,
255,
216,
153,
170,
0,
20,
118,
158,
254,
140,
1,
118,
0,
86,
158,
15,
1,
45,
211,
41,
255,
147,
1,
100,
254,
113,
116,
76,
255,
211,
127,
108,
1,
103,
15,
48,
0,
193,
16,
102,
1,
69,
51,
95,
255,
107,
128,
157,
0,
137,
171,
233,
0,
90,
124,
144,
1,
106,
161,
182,
0,
175,
76,
236,
1,
200,
141,
172,
255,
163,
58,
104,
0,
233,
180,
52,
255,
240,
253,
14,
255,
162,
113,
254,
255,
38,
239,
138,
254,
52,
46,
166,
0,
241,
101,
33,
254,
131,
186,
156,
0,
111,
208,
62,
255,
124,
94,
160,
255,
31,
172,
254,
0,
112,
174,
56,
255,
188,
99,
27,
255,
67,
138,
251,
0,
125,
58,
128,
1,
156,
152,
174,
255,
178,
12,
247,
255,
252,
84,
158,
0,
82,
197,
14,
254,
172,
200,
83,
255,
37,
39,
46,
1,
106,
207,
167,
0,
24,
189,
34,
0,
131,
178,
144,
0,
206,
213,
4,
0,
161,
226,
210,
0,
72,
51,
105,
255,
97,
45,
187,
255,
78,
184,
223,
255,
176,
29,
251,
0,
79,
160,
86,
255,
116,
37,
178,
0,
82,
77,
213,
1,
82,
84,
141,
255,
226,
101,
212,
1,
175,
88,
199,
255,
245,
94,
247,
1,
172,
118,
109,
255,
166,
185,
190,
0,
131,
181,
120,
0,
87,
254,
93,
255,
134,
240,
73,
255,
32,
245,
143,
255,
139,
162,
103,
255,
179,
98,
18,
254,
217,
204,
112,
0,
147,
223,
120,
255,
53,
10,
243,
0,
166,
140,
150,
0,
125,
80,
200,
255,
14,
109,
219,
255,
91,
218,
1,
255,
252,
252,
47,
254,
109,
156,
116,
255,
115,
49,
127,
1,
204,
87,
211,
255,
148,
202,
217,
255,
26,
85,
249,
255,
14,
245,
134,
1,
76,
89,
169,
255,
242,
45,
230,
0,
59,
98,
172,
255,
114,
73,
132,
254,
78,
155,
49,
255,
158,
126,
84,
0,
49,
175,
43,
255,
16,
182,
84,
255,
157,
103,
35,
0,
104,
193,
109,
255,
67,
221,
154,
0,
201,
172,
1,
254,
8,
162,
88,
0,
165,
1,
29,
255,
125,
155,
229,
255,
30,
154,
220,
1,
103,
239,
92,
0,
220,
1,
109,
255,
202,
198,
1,
0,
94,
2,
142,
1,
36,
54,
44,
0,
235,
226,
158,
255,
170,
251,
214,
255,
185,
77,
9,
0,
97,
74,
242,
0,
219,
163,
149,
255,
240,
35,
118,
255,
223,
114,
88,
254,
192,
199,
3,
0,
106,
37,
24,
255,
201,
161,
118,
255,
97,
89,
99,
1,
224,
58,
103,
255,
101,
199,
147,
254,
222,
60,
99,
0,
234,
25,
59,
1,
52,
135,
27,
0,
102,
3,
91,
254,
168,
216,
235,
0,
229,
232,
136,
0,
104,
60,
129,
0,
46,
168,
238,
0,
39,
191,
67,
0,
75,
163,
47,
0,
143,
97,
98,
255,
56,
216,
168,
1,
168,
233,
252,
255,
35,
111,
22,
255,
92,
84,
43,
0,
26,
200,
87,
1,
91,
253,
152,
0,
202,
56,
70,
0,
142,
8,
77,
0,
80,
10,
175,
1,
252,
199,
76,
0,
22,
110,
82,
255,
129,
1,
194,
0,
11,
128,
61,
1,
87,
14,
145,
255,
253,
222,
190,
1,
15,
72,
174,
0,
85,
163,
86,
254,
58,
99,
44,
255,
45,
24,
188,
254,
26,
205,
15,
0,
19,
229,
210,
254,
248,
67,
195,
0,
99,
71,
184,
0,
154,
199,
37,
255,
151,
243,
121,
255,
38,
51,
75,
255,
201,
85,
130,
254,
44,
65,
250,
0,
57,
147,
243,
254,
146,
43,
59,
255,
89,
28,
53,
0,
33,
84,
24,
255,
179,
51,
18,
254,
189,
70,
83,
0,
11,
156,
179,
1,
98,
134,
119,
0,
158,
111,
111,
0,
119,
154,
73,
255,
200,
63,
140,
254,
45,
13,
13,
255,
154,
192,
2,
254,
81,
72,
42,
0,
46,
160,
185,
254,
44,
112,
6,
0,
146,
215,
149,
1,
26,
176,
104,
0,
68,
28,
87,
1,
236,
50,
153,
255,
179,
128,
250,
254,
206,
193,
191,
255,
166,
92,
137,
254,
53,
40,
239,
0,
210,
1,
204,
254,
168,
173,
35,
0,
141,
243,
45,
1,
36,
50,
109,
255,
15,
242,
194,
255,
227,
159,
122,
255,
176,
175,
202,
254,
70,
57,
72,
0,
40,
223,
56,
0,
208,
162,
58,
255,
183,
98,
93,
0,
15,
111,
12,
0,
30,
8,
76,
255,
132,
127,
246,
255,
45,
242,
103,
0,
69,
181,
15,
255,
10,
209,
30,
0,
3,
179,
121,
0,
241,
232,
218,
1,
123,
199,
88,
255,
2,
210,
202,
1,
188,
130,
81,
255,
94,
101,
208,
1,
103,
36,
45,
0,
76,
193,
24,
1,
95,
26,
241,
255,
165,
162,
187,
0,
36,
114,
140,
0,
202,
66,
5,
255,
37,
56,
147,
0,
152,
11,
243,
1,
127,
85,
232,
255,
250,
135,
212,
1,
185,
177,
113,
0,
90,
220,
75,
255,
69,
248,
146,
0,
50,
111,
50,
0,
92,
22,
80,
0,
244,
36,
115,
254,
163,
100,
82,
255,
25,
193,
6,
1,
127,
61,
36,
0,
253,
67,
30,
254,
65,
236,
170,
255,
161,
17,
215,
254,
63,
175,
140,
0,
55,
127,
4,
0,
79,
112,
233,
0,
109,
160,
40,
0,
143,
83,
7,
255,
65,
26,
238,
255,
217,
169,
140,
255,
78,
94,
189,
255,
0,
147,
190,
255,
147,
71,
186,
254,
106,
77,
127,
255,
233,
157,
233,
1,
135,
87,
237,
255,
208,
13,
236,
1,
155,
109,
36,
255,
180,
100,
218,
0,
180,
163,
18,
0,
190,
110,
9,
1,
17,
63,
123,
255,
179,
136,
180,
255,
165,
123,
123,
255,
144,
188,
81,
254,
71,
240,
108,
255,
25,
112,
11,
255,
227,
218,
51,
255,
167,
50,
234,
255,
114,
79,
108,
255,
31,
19,
115,
255,
183,
240,
99,
0,
227,
87,
143,
255,
72,
217,
248,
255,
102,
169,
95,
1,
129,
149,
149,
0,
238,
133,
12,
1,
227,
204,
35,
0,
208,
115,
26,
1,
102,
8,
234,
0,
112,
88,
143,
1,
144,
249,
14,
0,
240,
158,
172,
254,
100,
112,
119,
0,
194,
141,
153,
254,
40,
56,
83,
255,
121,
176,
46,
0,
42,
53,
76,
255,
158,
191,
154,
0,
91,
209,
92,
0,
173,
13,
16,
1,
5,
72,
226,
255,
204,
254,
149,
0,
80,
184,
207,
0,
100,
9,
122,
254,
118,
101,
171,
255,
252,
203,
0,
254,
160,
207,
54,
0,
56,
72,
249,
1,
56,
140,
13,
255,
10,
64,
107,
254,
91,
101,
52,
255,
225,
181,
248,
1,
139,
255,
132,
0,
230,
145,
17,
0,
233,
56,
23,
0,
119,
1,
241,
255,
213,
169,
151,
255,
99,
99,
9,
254,
185,
15,
191,
255,
173,
103,
109,
1,
174,
13,
251,
255,
178,
88,
7,
254,
27,
59,
68,
255,
10,
33,
2,
255,
248,
97,
59,
0,
26,
30,
146,
1,
176,
147,
10,
0,
95,
121,
207,
1,
188,
88,
24,
0,
185,
94,
254,
254,
115,
55,
201,
0,
24,
50,
70,
0,
120,
53,
6,
0,
142,
66,
146,
0,
228,
226,
249,
255,
104,
192,
222,
1,
173,
68,
219,
0,
162,
184,
36,
255,
143,
102,
137,
255,
157,
11,
23,
0,
125,
45,
98,
0,
235,
93,
225,
254,
56,
112,
160,
255,
70,
116,
243,
1,
153,
249,
55,
255,
129,
39,
17,
1,
241,
80,
244,
0,
87,
69,
21,
1,
94,
228,
73,
255,
78,
66,
65,
255,
194,
227,
231,
0,
61,
146,
87,
255,
173,
155,
23,
255,
112,
116,
219,
254,
216,
38,
11,
255,
131,
186,
133,
0,
94,
212,
187,
0,
100,
47,
91,
0,
204,
254,
175,
255,
222,
18,
215,
254,
173,
68,
108,
255,
227,
228,
79,
255,
38,
221,
213,
0,
163,
227,
150,
254,
31,
190,
18,
0,
160,
179,
11,
1,
10,
90,
94,
255,
220,
174,
88,
0,
163,
211,
229,
255,
199,
136,
52,
0,
130,
95,
221,
255,
140,
188,
231,
254,
139,
113,
128,
255,
117,
171,
236,
254,
49,
220,
20,
255,
59,
20,
171,
255,
228,
109,
188,
0,
20,
225,
32,
254,
195,
16,
174,
0,
227,
254,
136,
1,
135,
39,
105,
0,
150,
77,
206,
255,
210,
238,
226,
0,
55,
212,
132,
254,
239,
57,
124,
0,
170,
194,
93,
255,
249,
16,
247,
255,
24,
151,
62,
255,
10,
151,
10,
0,
79,
139,
178,
255,
120,
242,
202,
0,
26,
219,
213,
0,
62,
125,
35,
255,
144,
2,
108,
255,
230,
33,
83,
255,
81,
45,
216,
1,
224,
62,
17,
0,
214,
217,
125,
0,
98,
153,
153,
255,
],
'i8',
ALLOC_NONE,
Runtime.GLOBAL_BASE + 10240
);
/* memory initializer */ allocate(
[
179,
176,
106,
254,
131,
93,
138,
255,
109,
62,
36,
255,
178,
121,
32,
255,
120,
252,
70,
0,
220,
248,
37,
0,
204,
88,
103,
1,
128,
220,
251,
255,
236,
227,
7,
1,
106,
49,
198,
255,
60,
56,
107,
0,
99,
114,
238,
0,
220,
204,
94,
1,
73,
187,
1,
0,
89,
154,
34,
0,
78,
217,
165,
255,
14,
195,
249,
255,
9,
230,
253,
255,
205,
135,
245,
0,
26,
252,
7,
255,
84,
205,
27,
1,
134,
2,
112,
0,
37,
158,
32,
0,
231,
91,
237,
255,
191,
170,
204,
255,
152,
7,
222,
0,
109,
192,
49,
0,
193,
166,
146,
255,
232,
19,
181,
255,
105,
142,
52,
255,
103,
16,
27,
1,
253,
200,
165,
0,
195,
217,
4,
255,
52,
189,
144,
255,
123,
155,
160,
254,
87,
130,
54,
255,
78,
120,
61,
255,
14,
56,
41,
0,
25,
41,
125,
255,
87,
168,
245,
0,
214,
165,
70,
0,
212,
169,
6,
255,
219,
211,
194,
254,
72,
93,
164,
255,
197,
33,
103,
255,
43,
142,
141,
0,
131,
225,
172,
0,
244,
105,
28,
0,
68,
68,
225,
0,
136,
84,
13,
255,
130,
57,
40,
254,
139,
77,
56,
0,
84,
150,
53,
0,
54,
95,
157,
0,
144,
13,
177,
254,
95,
115,
186,
0,
117,
23,
118,
255,
244,
166,
241,
255,
11,
186,
135,
0,
178,
106,
203,
255,
97,
218,
93,
0,
43,
253,
45,
0,
164,
152,
4,
0,
139,
118,
239,
0,
96,
1,
24,
254,
235,
153,
211,
255,
168,
110,
20,
255,
50,
239,
176,
0,
114,
41,
232,
0,
193,
250,
53,
0,
254,
160,
111,
254,
136,
122,
41,
255,
97,
108,
67,
0,
215,
152,
23,
255,
140,
209,
212,
0,
42,
189,
163,
0,
202,
42,
50,
255,
106,
106,
189,
255,
190,
68,
217,
255,
233,
58,
117,
0,
229,
220,
243,
1,
197,
3,
4,
0,
37,
120,
54,
254,
4,
156,
134,
255,
36,
61,
171,
254,
165,
136,
100,
255,
212,
232,
14,
0,
90,
174,
10,
0,
216,
198,
65,
255,
12,
3,
64,
0,
116,
113,
115,
255,
248,
103,
8,
0,
231,
125,
18,
255,
160,
28,
197,
0,
30,
184,
35,
1,
223,
73,
249,
255,
123,
20,
46,
254,
135,
56,
37,
255,
173,
13,
229,
1,
119,
161,
34,
255,
245,
61,
73,
0,
205,
125,
112,
0,
137,
104,
134,
0,
217,
246,
30,
255,
237,
142,
143,
0,
65,
159,
102,
255,
108,
164,
190,
0,
219,
117,
173,
255,
34,
37,
120,
254,
200,
69,
80,
0,
31,
124,
218,
254,
74,
27,
160,
255,
186,
154,
199,
255,
71,
199,
252,
0,
104,
81,
159,
1,
17,
200,
39,
0,
211,
61,
192,
1,
26,
238,
91,
0,
148,
217,
12,
0,
59,
91,
213,
255,
11,
81,
183,
255,
129,
230,
122,
255,
114,
203,
145,
1,
119,
180,
66,
255,
72,
138,
180,
0,
224,
149,
106,
0,
119,
82,
104,
255,
208,
140,
43,
0,
98,
9,
182,
255,
205,
101,
134,
255,
18,
101,
38,
0,
95,
197,
166,
255,
203,
241,
147,
0,
62,
208,
145,
255,
133,
246,
251,
0,
2,
169,
14,
0,
13,
247,
184,
0,
142,
7,
254,
0,
36,
200,
23,
255,
88,
205,
223,
0,
91,
129,
52,
255,
21,
186,
30,
0,
143,
228,
210,
1,
247,
234,
248,
255,
230,
69,
31,
254,
176,
186,
135,
255,
238,
205,
52,
1,
139,
79,
43,
0,
17,
176,
217,
254,
32,
243,
67,
0,
242,
111,
233,
0,
44,
35,
9,
255,
227,
114,
81,
1,
4,
71,
12,
255,
38,
105,
191,
0,
7,
117,
50,
255,
81,
79,
16,
0,
63,
68,
65,
255,
157,
36,
110,
255,
77,
241,
3,
255,
226,
45,
251,
1,
142,
25,
206,
0,
120,
123,
209,
1,
28,
254,
238,
255,
5,
128,
126,
255,
91,
222,
215,
255,
162,
15,
191,
0,
86,
240,
73,
0,
135,
185,
81,
254,
44,
241,
163,
0,
212,
219,
210,
255,
112,
162,
155,
0,
207,
101,
118,
0,
168,
72,
56,
255,
196,
5,
52,
0,
72,
172,
242,
255,
126,
22,
157,
255,
146,
96,
59,
255,
162,
121,
152,
254,
140,
16,
95,
0,
195,
254,
200,
254,
82,
150,
162,
0,
119,
43,
145,
254,
204,
172,
78,
255,
166,
224,
159,
0,
104,
19,
237,
255,
245,
126,
208,
255,
226,
59,
213,
0,
117,
217,
197,
0,
152,
72,
237,
0,
220,
31,
23,
254,
14,
90,
231,
255,
188,
212,
64,
1,
60,
101,
246,
255,
85,
24,
86,
0,
1,
177,
109,
0,
146,
83,
32,
1,
75,
182,
192,
0,
119,
241,
224,
0,
185,
237,
27,
255,
184,
101,
82,
1,
235,
37,
77,
255,
253,
134,
19,
0,
232,
246,
122,
0,
60,
106,
179,
0,
195,
11,
12,
0,
109,
66,
235,
1,
125,
113,
59,
0,
61,
40,
164,
0,
175,
104,
240,
0,
2,
47,
187,
255,
50,
12,
141,
0,
194,
139,
181,
255,
135,
250,
104,
0,
97,
92,
222,
255,
217,
149,
201,
255,
203,
241,
118,
255,
79,
151,
67,
0,
122,
142,
218,
255,
149,
245,
239,
0,
138,
42,
200,
254,
80,
37,
97,
255,
124,
112,
167,
255,
36,
138,
87,
255,
130,
29,
147,
255,
241,
87,
78,
255,
204,
97,
19,
1,
177,
209,
22,
255,
247,
227,
127,
254,
99,
119,
83,
255,
212,
25,
198,
1,
16,
179,
179,
0,
145,
77,
172,
254,
89,
153,
14,
255,
218,
189,
167,
0,
107,
233,
59,
255,
35,
33,
243,
254,
44,
112,
112,
255,
161,
127,
79,
1,
204,
175,
10,
0,
40,
21,
138,
254,
104,
116,
228,
0,
199,
95,
137,
255,
133,
190,
168,
255,
146,
165,
234,
1,
183,
99,
39,
0,
183,
220,
54,
254,
255,
222,
133,
0,
162,
219,
121,
254,
63,
239,
6,
0,
225,
102,
54,
255,
251,
18,
246,
0,
4,
34,
129,
1,
135,
36,
131,
0,
206,
50,
59,
1,
15,
97,
183,
0,
171,
216,
135,
255,
101,
152,
43,
255,
150,
251,
91,
0,
38,
145,
95,
0,
34,
204,
38,
254,
178,
140,
83,
255,
25,
129,
243,
255,
76,
144,
37,
0,
106,
36,
26,
254,
118,
144,
172,
255,
68,
186,
229,
255,
107,
161,
213,
255,
46,
163,
68,
255,
149,
170,
253,
0,
187,
17,
15,
0,
218,
160,
165,
255,
171,
35,
246,
1,
96,
13,
19,
0,
165,
203,
117,
0,
214,
107,
192,
255,
244,
123,
177,
1,
100,
3,
104,
0,
178,
242,
97,
255,
251,
76,
130,
255,
211,
77,
42,
1,
250,
79,
70,
255,
63,
244,
80,
1,
105,
101,
246,
0,
61,
136,
58,
1,
238,
91,
213,
0,
14,
59,
98,
255,
167,
84,
77,
0,
17,
132,
46,
254,
57,
175,
197,
255,
185,
62,
184,
0,
76,
64,
207,
0,
172,
175,
208,
254,
175,
74,
37,
0,
138,
27,
211,
254,
148,
125,
194,
0,
10,
89,
81,
0,
168,
203,
101,
255,
43,
213,
209,
1,
235,
245,
54,
0,
30,
35,
226,
255,
9,
126,
70,
0,
226,
125,
94,
254,
156,
117,
20,
255,
57,
248,
112,
1,
230,
48,
64,
255,
164,
92,
166,
1,
224,
214,
230,
255,
36,
120,
143,
0,
55,
8,
43,
255,
251,
1,
245,
1,
106,
98,
165,
0,
74,
107,
106,
254,
53,
4,
54,
255,
90,
178,
150,
1,
3,
120,
123,
255,
244,
5,
89,
1,
114,
250,
61,
255,
254,
153,
82,
1,
77,
15,
17,
0,
57,
238,
90,
1,
95,
223,
230,
0,
236,
52,
47,
254,
103,
148,
164,
255,
121,
207,
36,
1,
18,
16,
185,
255,
75,
20,
74,
0,
187,
11,
101,
0,
46,
48,
129,
255,
22,
239,
210,
255,
77,
236,
129,
255,
111,
77,
204,
255,
61,
72,
97,
255,
199,
217,
251,
255,
42,
215,
204,
0,
133,
145,
201,
255,
57,
230,
146,
1,
235,
100,
198,
0,
146,
73,
35,
254,
108,
198,
20,
255,
182,
79,
210,
255,
82,
103,
136,
0,
246,
108,
176,
0,
34,
17,
60,
255,
19,
74,
114,
254,
168,
170,
78,
255,
157,
239,
20,
255,
149,
41,
168,
0,
58,
121,
28,
0,
79,
179,
134,
255,
231,
121,
135,
255,
174,
209,
98,
255,
243,
122,
190,
0,
171,
166,
205,
0,
212,
116,
48,
0,
29,
108,
66,
255,
162,
222,
182,
1,
14,
119,
21,
0,
213,
39,
249,
255,
254,
223,
228,
255,
183,
165,
198,
0,
133,
190,
48,
0,
124,
208,
109,
255,
119,
175,
85,
255,
9,
209,
121,
1,
48,
171,
189,
255,
195,
71,
134,
1,
136,
219,
51,
255,
182,
91,
141,
254,
49,
159,
72,
0,
35,
118,
245,
255,
112,
186,
227,
255,
59,
137,
31,
0,
137,
44,
163,
0,
114,
103,
60,
254,
8,
213,
150,
0,
162,
10,
113,
255,
194,
104,
72,
0,
220,
131,
116,
255,
178,
79,
92,
0,
203,
250,
213,
254,
93,
193,
189,
255,
130,
255,
34,
254,
212,
188,
151,
0,
136,
17,
20,
255,
20,
101,
83,
255,
212,
206,
166,
0,
229,
238,
73,
255,
151,
74,
3,
255,
168,
87,
215,
0,
155,
188,
133,
255,
166,
129,
73,
0,
240,
79,
133,
255,
178,
211,
81,
255,
203,
72,
163,
254,
193,
168,
165,
0,
14,
164,
199,
254,
30,
255,
204,
0,
65,
72,
91,
1,
166,
74,
102,
255,
200,
42,
0,
255,
194,
113,
227,
255,
66,
23,
208,
0,
229,
216,
100,
255,
24,
239,
26,
0,
10,
233,
62,
255,
123,
10,
178,
1,
26,
36,
174,
255,
119,
219,
199,
1,
45,
163,
190,
0,
16,
168,
42,
0,
166,
57,
198,
255,
28,
26,
26,
0,
126,
165,
231,
0,
251,
108,
100,
255,
61,
229,
121,
255,
58,
118,
138,
0,
76,
207,
17,
0,
13,
34,
112,
254,
89,
16,
168,
0,
37,
208,
105,
255,
35,
201,
215,
255,
40,
106,
101,
254,
6,
239,
114,
0,
40,
103,
226,
254,
246,
127,
110,
255,
63,
167,
58,
0,
132,
240,
142,
0,
5,
158,
88,
255,
129,
73,
158,
255,
94,
89,
146,
0,
230,
54,
146,
0,
8,
45,
173,
0,
79,
169,
1,
0,
115,
186,
247,
0,
84,
64,
131,
0,
67,
224,
253,
255,
207,
189,
64,
0,
154,
28,
81,
1,
45,
184,
54,
255,
87,
212,
224,
255,
0,
96,
73,
255,
129,
33,
235,
1,
52,
66,
80,
255,
251,
174,
155,
255,
4,
179,
37,
0,
234,
164,
93,
254,
93,
175,
253,
0,
198,
69,
87,
255,
224,
106,
46,
0,
99,
29,
210,
0,
62,
188,
114,
255,
44,
234,
8,
0,
169,
175,
247,
255,
23,
109,
137,
255,
229,
182,
39,
0,
192,
165,
94,
254,
245,
101,
217,
0,
191,
88,
96,
0,
196,
94,
99,
255,
106,
238,
11,
254,
53,
126,
243,
0,
94,
1,
101,
255,
46,
147,
2,
0,
201,
124,
124,
255,
141,
12,
218,
0,
13,
166,
157,
1,
48,
251,
237,
255,
155,
250,
124,
255,
106,
148,
146,
255,
182,
13,
202,
0,
28,
61,
167,
0,
217,
152,
8,
254,
220,
130,
45,
255,
200,
230,
255,
1,
55,
65,
87,
255,
93,
191,
97,
254,
114,
251,
14,
0,
32,
105,
92,
1,
26,
207,
141,
0,
24,
207,
13,
254,
21,
50,
48,
255,
186,
148,
116,
255,
211,
43,
225,
0,
37,
34,
162,
254,
164,
210,
42,
255,
68,
23,
96,
255,
182,
214,
8,
255,
245,
117,
137,
255,
66,
195,
50,
0,
75,
12,
83,
254,
80,
140,
164,
0,
9,
165,
36,
1,
228,
110,
227,
0,
241,
17,
90,
1,
25,
52,
212,
0,
6,
223,
12,
255,
139,
243,
57,
0,
12,
113,
75,
1,
246,
183,
191,
255,
213,
191,
69,
255,
230,
15,
142,
0,
1,
195,
196,
255,
138,
171,
47,
255,
64,
63,
106,
1,
16,
169,
214,
255,
207,
174,
56,
1,
88,
73,
133,
255,
182,
133,
140,
0,
177,
14,
25,
255,
147,
184,
53,
255,
10,
227,
161,
255,
120,
216,
244,
255,
73,
77,
233,
0,
157,
238,
139,
1,
59,
65,
233,
0,
70,
251,
216,
1,
41,
184,
153,
255,
32,
203,
112,
0,
146,
147,
253,
0,
87,
101,
109,
1,
44,
82,
133,
255,
244,
150,
53,
255,
94,
152,
232,
255,
59,
93,
39,
255,
88,
147,
220,
255,
78,
81,
13,
1,
32,
47,
252,
255,
160,
19,
114,
255,
93,
107,
39,
255,
118,
16,
211,
1,
185,
119,
209,
255,
227,
219,
127,
254,
88,
105,
236,
255,
162,
110,
23,
255,
36,
166,
110,
255,
91,
236,
221,
255,
66,
234,
116,
0,
111,
19,
244,
254,
10,
233,
26,
0,
32,
183,
6,
254,
2,
191,
242,
0,
218,
156,
53,
254,
41,
60,
70,
255,
168,
236,
111,
0,
121,
185,
126,
255,
238,
142,
207,
255,
55,
126,
52,
0,
220,
129,
208,
254,
80,
204,
164,
255,
67,
23,
144,
254,
218,
40,
108,
255,
127,
202,
164,
0,
203,
33,
3,
255,
2,
158,
0,
0,
37,
96,
188,
255,
192,
49,
74,
0,
109,
4,
0,
0,
111,
167,
10,
254,
91,
218,
135,
255,
203,
66,
173,
255,
150,
194,
226,
0,
201,
253,
6,
255,
174,
102,
121,
0,
205,
191,
110,
0,
53,
194,
4,
0,
81,
40,
45,
254,
35,
102,
143,
255,
12,
108,
198,
255,
16,
27,
232,
255,
252,
71,
186,
1,
176,
110,
114,
0,
142,
3,
117,
1,
113,
77,
142,
0,
19,
156,
197,
1,
92,
47,
252,
0,
53,
232,
22,
1,
54,
18,
235,
0,
46,
35,
189,
255,
236,
212,
129,
0,
2,
96,
208,
254,
200,
238,
199,
255,
59,
175,
164,
255,
146,
43,
231,
0,
194,
217,
52,
255,
3,
223,
12,
0,
138,
54,
178,
254,
85,
235,
207,
0,
232,
207,
34,
0,
49,
52,
50,
255,
166,
113,
89,
255,
10,
45,
216,
255,
62,
173,
28,
0,
111,
165,
246,
0,
118,
115,
91,
255,
128,
84,
60,
0,
167,
144,
203,
0,
87,
13,
243,
0,
22,
30,
228,
1,
177,
113,
146,
255,
129,
170,
230,
254,
252,
153,
129,
255,
145,
225,
43,
0,
70,
231,
5,
255,
122,
105,
126,
254,
86,
246,
148,
255,
110,
37,
154,
254,
209,
3,
91,
0,
68,
145,
62,
0,
228,
16,
165,
255,
55,
221,
249,
254,
178,
210,
91,
0,
83,
146,
226,
254,
69,
146,
186,
0,
93,
210,
104,
254,
16,
25,
173,
0,
231,
186,
38,
0,
189,
122,
140,
255,
251,
13,
112,
255,
105,
110,
93,
0,
251,
72,
170,
0,
192,
23,
223,
255,
24,
3,
202,
1,
225,
93,
228,
0,
153,
147,
199,
254,
109,
170,
22,
0,
248,
101,
246,
255,
178,
124,
12,
255,
178,
254,
102,
254,
55,
4,
65,
0,
125,
214,
180,
0,
183,
96,
147,
0,
45,
117,
23,
254,
132,
191,
249,
0,
143,
176,
203,
254,
136,
183,
54,
255,
146,
234,
177,
0,
146,
101,
86,
255,
44,
123,
143,
1,
33,
209,
152,
0,
192,
90,
41,
254,
83,
15,
125,
255,
213,
172,
82,
0,
215,
169,
144,
0,
16,
13,
34,
0,
32,
209,
100,
255,
84,
18,
249,
1,
197,
17,
236,
255,
217,
186,
230,
0,
49,
160,
176,
255,
111,
118,
97,
255,
237,
104,
235,
0,
79,
59,
92,
254,
69,
249,
11,
255,
35,
172,
74,
1,
19,
118,
68,
0,
222,
124,
165,
255,
180,
66,
35,
255,
86,
174,
246,
0,
43,
74,
111,
255,
126,
144,
86,
255,
228,
234,
91,
0,
242,
213,
24,
254,
69,
44,
235,
255,
220,
180,
35,
0,
8,
248,
7,
255,
102,
47,
92,
255,
240,
205,
102,
255,
113,
230,
171,
1,
31,
185,
201,
255,
194,
246,
70,
255,
122,
17,
187,
0,
134,
70,
199,
255,
149,
3,
150,
255,
117,
63,
103,
0,
65,
104,
123,
255,
212,
54,
19,
1,
6,
141,
88,
0,
83,
134,
243,
255,
136,
53,
103,
0,
169,
27,
180,
0,
177,
49,
24,
0,
111,
54,
167,
0,
195,
61,
215,
255,
31,
1,
108,
1,
60,
42,
70,
0,
185,
3,
162,
255,
194,
149,
40,
255,
246,
127,
38,
254,
190,
119,
38,
255,
61,
119,
8,
1,
96,
161,
219,
255,
42,
203,
221,
1,
177,
242,
164,
255,
245,
159,
10,
0,
116,
196,
0,
0,
5,
93,
205,
254,
128,
127,
179,
0,
125,
237,
246,
255,
149,
162,
217,
255,
87,
37,
20,
254,
140,
238,
192,
0,
9,
9,
193,
0,
97,
1,
226,
0,
29,
38,
10,
0,
0,
136,
63,
255,
229,
72,
210,
254,
38,
134,
92,
255,
78,
218,
208,
1,
104,
36,
84,
255,
12,
5,
193,
255,
242,
175,
61,
255,
191,
169,
46,
1,
179,
147,
147,
255,
113,
190,
139,
254,
125,
172,
31,
0,
3,
75,
252,
254,
215,
36,
15,
0,
193,
27,
24,
1,
255,
69,
149,
255,
110,
129,
118,
0,
203,
93,
249,
0,
138,
137,
64,
254,
38,
70,
6,
0,
153,
116,
222,
0,
161,
74,
123,
0,
193,
99,
79,
255,
118,
59,
94,
255,
61,
12,
43,
1,
146,
177,
157,
0,
46,
147,
191,
0,
16,
255,
38,
0,
11,
51,
31,
1,
60,
58,
98,
255,
111,
194,
77,
1,
154,
91,
244,
0,
140,
40,
144,
1,
173,
10,
251,
0,
203,
209,
50,
254,
108,
130,
78,
0,
228,
180,
90,
0,
174,
7,
250,
0,
31,
174,
60,
0,
41,
171,
30,
0,
116,
99,
82,
255,
118,
193,
139,
255,
187,
173,
198,
254,
218,
111,
56,
0,
185,
123,
216,
0,
249,
158,
52,
0,
52,
180,
93,
255,
201,
9,
91,
255,
56,
45,
166,
254,
132,
155,
203,
255,
58,
232,
110,
0,
52,
211,
89,
255,
253,
0,
162,
1,
9,
87,
183,
0,
145,
136,
44,
1,
94,
122,
245,
0,
85,
188,
171,
1,
147,
92,
198,
0,
0,
8,
104,
0,
30,
95,
174,
0,
221,
230,
52,
1,
247,
247,
235,
255,
137,
174,
53,
255,
35,
21,
204,
255,
71,
227,
214,
1,
232,
82,
194,
0,
11,
48,
227,
255,
170,
73,
184,
255,
198,
251,
252,
254,
44,
112,
34,
0,
131,
101,
131,
255,
72,
168,
187,
0,
132,
135,
125,
255,
138,
104,
97,
255,
238,
184,
168,
255,
243,
104,
84,
255,
135,
216,
226,
255,
139,
144,
237,
0,
188,
137,
150,
1,
80,
56,
140,
255,
86,
169,
167,
255,
194,
78,
25,
255,
220,
17,
180,
255,
17,
13,
193,
0,
117,
137,
212,
255,
141,
224,
151,
0,
49,
244,
175,
0,
193,
99,
175,
255,
19,
99,
154,
1,
255,
65,
62,
255,
156,
210,
55,
255,
242,
244,
3,
255,
250,
14,
149,
0,
158,
88,
217,
255,
157,
207,
134,
254,
251,
232,
28,
0,
46,
156,
251,
255,
171,
56,
184,
255,
239,
51,
234,
0,
142,
138,
131,
255,
25,
254,
243,
1,
10,
201,
194,
0,
63,
97,
75,
0,
210,
239,
162,
0,
192,
200,
31,
1,
117,
214,
243,
0,
24,
71,
222,
254,
54,
40,
232,
255,
76,
183,
111,
254,
144,
14,
87,
255,
214,
79,
136,
255,
216,
196,
212,
0,
132,
27,
140,
254,
131,
5,
253,
0,
124,
108,
19,
255,
28,
215,
75,
0,
76,
222,
55,
254,
233,
182,
63,
0,
68,
171,
191,
254,
52,
111,
222,
255,
10,
105,
77,
255,
80,
170,
235,
0,
143,
24,
88,
255,
45,
231,
121,
0,
148,
129,
224,
1,
61,
246,
84,
0,
253,
46,
219,
255,
239,
76,
33,
0,
49,
148,
18,
254,
230,
37,
69,
0,
67,
134,
22,
254,
142,
155,
94,
0,
31,
157,
211,
254,
213,
42,
30,
255,
4,
228,
247,
254,
252,
176,
13,
255,
39,
0,
31,
254,
241,
244,
255,
255,
170,
45,
10,
254,
253,
222,
249,
0,
222,
114,
132,
0,
255,
47,
6,
255,
180,
163,
179,
1,
84,
94,
151,
255,
89,
209,
82,
254,
229,
52,
169,
255,
213,
236,
0,
1,
214,
56,
228,
255,
135,
119,
151,
255,
112,
201,
193,
0,
83,
160,
53,
254,
6,
151,
66,
0,
18,
162,
17,
0,
233,
97,
91,
0,
131,
5,
78,
1,
181,
120,
53,
255,
117,
95,
63,
255,
237,
117,
185,
0,
191,
126,
136,
255,
144,
119,
233,
0,
183,
57,
97,
1,
47,
201,
187,
255,
167,
165,
119,
1,
45,
100,
126,
0,
21,
98,
6,
254,
145,
150,
95,
255,
120,
54,
152,
0,
209,
98,
104,
0,
143,
111,
30,
254,
184,
148,
249,
0,
235,
216,
46,
0,
248,
202,
148,
255,
57,
95,
22,
0,
242,
225,
163,
0,
233,
247,
232,
255,
71,
171,
19,
255,
103,
244,
49,
255,
84,
103,
93,
255,
68,
121,
244,
1,
82,
224,
13,
0,
41,
79,
43,
255,
249,
206,
167,
255,
215,
52,
21,
254,
192,
32,
22,
255,
247,
111,
60,
0,
101,
74,
38,
255,
22,
91,
84,
254,
29,
28,
13,
255,
198,
231,
215,
254,
244,
154,
200,
0,
223,
137,
237,
0,
211,
132,
14,
0,
95,
64,
206,
255,
17,
62,
247,
255,
233,
131,
121,
1,
93,
23,
77,
0,
205,
204,
52,
254,
81,
189,
136,
0,
180,
219,
138,
1,
143,
18,
94,
0,
204,
43,
140,
254,
188,
175,
219,
0,
111,
98,
143,
255,
151,
63,
162,
255,
211,
50,
71,
254,
19,
146,
53,
0,
146,
45,
83,
254,
178,
82,
238,
255,
16,
133,
84,
255,
226,
198,
93,
255,
201,
97,
20,
255,
120,
118,
35,
255,
114,
50,
231,
255,
162,
229,
156,
255,
211,
26,
12,
0,
114,
39,
115,
255,
206,
212,
134,
0,
197,
217,
160,
255,
116,
129,
94,
254,
199,
215,
219,
255,
75,
223,
249,
1,
253,
116,
181,
255,
232,
215,
104,
255,
228,
130,
246,
255,
185,
117,
86,
0,
14,
5,
8,
0,
239,
29,
61,
1,
237,
87,
133,
255,
125,
146,
137,
254,
204,
168,
223,
0,
46,
168,
245,
0,
154,
105,
22,
0,
220,
212,
161,
255,
107,
69,
24,
255,
137,
218,
181,
255,
241,
84,
198,
255,
130,
122,
211,
255,
141,
8,
153,
255,
190,
177,
118,
0,
96,
89,
178,
0,
255,
16,
48,
254,
122,
96,
105,
255,
117,
54,
232,
255,
34,
126,
105,
255,
204,
67,
166,
0,
232,
52,
138,
255,
211,
147,
12,
0,
25,
54,
7,
0,
44,
15,
215,
254,
51,
236,
45,
0,
190,
68,
129,
1,
106,
147,
225,
0,
28,
93,
45,
254,
236,
141,
15,
255,
17,
61,
161,
0,
220,
115,
192,
0,
236,
145,
24,
254,
111,
168,
169,
0,
224,
58,
63,
255,
127,
164,
188,
0,
82,
234,
75,
1,
224,
158,
134,
0,
209,
68,
110,
1,
217,
166,
217,
0,
70,
225,
166,
1,
187,
193,
143,
255,
16,
7,
88,
255,
10,
205,
140,
0,
117,
192,
156,
1,
17,
56,
38,
0,
27,
124,
108,
1,
171,
215,
55,
255,
95,
253,
212,
0,
155,
135,
168,
255,
246,
178,
153,
254,
154,
68,
74,
0,
232,
61,
96,
254,
105,
132,
59,
0,
33,
76,
199,
1,
189,
176,
130,
255,
9,
104,
25,
254,
75,
198,
102,
255,
233,
1,
112,
0,
108,
220,
20,
255,
114,
230,
70,
0,
140,
194,
133,
255,
57,
158,
164,
254,
146,
6,
80,
255,
169,
196,
97,
1,
85,
183,
130,
0,
70,
158,
222,
1,
59,
237,
234,
255,
96,
25,
26,
255,
232,
175,
97,
255,
11,
121,
248,
254,
88,
35,
194,
0,
219,
180,
252,
254,
74,
8,
227,
0,
195,
227,
73,
1,
184,
110,
161,
255,
49,
233,
164,
1,
128,
53,
47,
0,
82,
14,
121,
255,
193,
190,
58,
0,
48,
174,
117,
255,
132,
23,
32,
0,
40,
10,
134,
1,
22,
51,
25,
255,
240,
11,
176,
255,
110,
57,
146,
0,
117,
143,
239,
1,
157,
101,
118,
255,
54,
84,
76,
0,
205,
184,
18,
255,
47,
4,
72,
255,
78,
112,
85,
255,
193,
50,
66,
1,
93,
16,
52,
255,
8,
105,
134,
0,
12,
109,
72,
255,
58,
156,
251,
0,
144,
35,
204,
0,
44,
160,
117,
254,
50,
107,
194,
0,
1,
68,
165,
255,
111,
110,
162,
0,
158,
83,
40,
254,
76,
214,
234,
0,
58,
216,
205,
255,
171,
96,
147,
255,
40,
227,
114,
1,
176,
227,
241,
0,
70,
249,
183,
1,
136,
84,
139,
255,
60,
122,
247,
254,
143,
9,
117,
255,
177,
174,
137,
254,
73,
247,
143,
0,
236,
185,
126,
255,
62,
25,
247,
255,
45,
64,
56,
255,
161,
244,
6,
0,
34,
57,
56,
1,
105,
202,
83,
0,
128,
147,
208,
0,
6,
103,
10,
255,
74,
138,
65,
255,
97,
80,
100,
255,
214,
174,
33,
255,
50,
134,
74,
255,
110,
151,
130,
254,
111,
84,
172,
0,
84,
199,
75,
254,
248,
59,
112,
255,
8,
216,
178,
1,
9,
183,
95,
0,
238,
27,
8,
254,
170,
205,
220,
0,
195,
229,
135,
0,
98,
76,
237,
255,
226,
91,
26,
1,
82,
219,
39,
255,
225,
190,
199,
1,
217,
200,
121,
255,
81,
179,
8,
255,
140,
65,
206,
0,
178,
207,
87,
254,
250,
252,
46,
255,
104,
89,
110,
1,
253,
189,
158,
255,
144,
214,
158,
255,
160,
245,
54,
255,
53,
183,
92,
1,
21,
200,
194,
255,
146,
33,
113,
1,
209,
1,
255,
0,
235,
106,
43,
255,
167,
52,
232,
0,
157,
229,
221,
0,
51,
30,
25,
0,
250,
221,
27,
1,
65,
147,
87,
255,
79,
123,
196,
0,
65,
196,
223,
255,
76,
44,
17,
1,
85,
241,
68,
0,
202,
183,
249,
255,
65,
212,
212,
255,
9,
33,
154,
1,
71,
59,
80,
0,
175,
194,
59,
255,
141,
72,
9,
0,
100,
160,
244,
0,
230,
208,
56,
0,
59,
25,
75,
254,
80,
194,
194,
0,
18,
3,
200,
254,
160,
159,
115,
0,
132,
143,
247,
1,
111,
93,
57,
255,
58,
237,
11,
1,
134,
222,
135,
255,
122,
163,
108,
1,
123,
43,
190,
255,
251,
189,
206,
254,
80,
182,
72,
255,
208,
246,
224,
1,
17,
60,
9,
0,
161,
207,
38,
0,
141,
109,
91,
0,
216,
15,
211,
255,
136,
78,
110,
0,
98,
163,
104,
255,
21,
80,
121,
255,
173,
178,
183,
1,
127,
143,
4,
0,
104,
60,
82,
254,
214,
16,
13,
255,
96,
238,
33,
1,
158,
148,
230,
255,
127,
129,
62,
255,
51,
255,
210,
255,
62,
141,
236,
254,
157,
55,
224,
255,
114,
39,
244,
0,
192,
188,
250,
255,
228,
76,
53,
0,
98,
84,
81,
255,
173,
203,
61,
254,
147,
50,
55,
255,
204,
235,
191,
0,
52,
197,
244,
0,
88,
43,
211,
254,
27,
191,
119,
0,
188,
231,
154,
0,
66,
81,
161,
0,
92,
193,
160,
1,
250,
227,
120,
0,
123,
55,
226,
0,
184,
17,
72,
0,
133,
168,
10,
254,
22,
135,
156,
255,
41,
25,
103,
255,
48,
202,
58,
0,
186,
149,
81,
255,
188,
134,
239,
0,
235,
181,
189,
254,
217,
139,
188,
255,
74,
48,
82,
0,
46,
218,
229,
0,
189,
253,
251,
0,
50,
229,
12,
255,
211,
141,
191,
1,
128,
244,
25,
255,
169,
231,
122,
254,
86,
47,
189,
255,
132,
183,
23,
255,
37,
178,
150,
255,
51,
137,
253,
0,
200,
78,
31,
0,
22,
105,
50,
0,
130,
60,
0,
0,
132,
163,
91,
254,
23,
231,
187,
0,
192,
79,
239,
0,
157,
102,
164,
255,
192,
82,
20,
1,
24,
181,
103,
255,
240,
9,
234,
0,
1,
123,
164,
255,
133,
233,
0,
255,
202,
242,
242,
0,
60,
186,
245,
0,
241,
16,
199,
255,
224,
116,
158,
254,
191,
125,
91,
255,
224,
86,
207,
0,
121,
37,
231,
255,
227,
9,
198,
255,
15,
153,
239,
255,
121,
232,
217,
254,
75,
112,
82,
0,
95,
12,
57,
254,
51,
214,
105,
255,
148,
220,
97,
1,
199,
98,
36,
0,
156,
209,
12,
254,
10,
212,
52,
0,
217,
180,
55,
254,
212,
170,
232,
255,
216,
20,
84,
255,
157,
250,
135,
0,
157,
99,
127,
254,
1,
206,
41,
0,
149,
36,
70,
1,
54,
196,
201,
255,
87,
116,
0,
254,
235,
171,
150,
0,
27,
163,
234,
0,
202,
135,
180,
0,
208,
95,
0,
254,
123,
156,
93,
0,
183,
62,
75,
0,
137,
235,
182,
0,
204,
225,
255,
255,
214,
139,
210,
255,
2,
115,
8,
255,
29,
12,
111,
0,
52,
156,
1,
0,
253,
21,
251,
255,
37,
165,
31,
254,
12,
130,
211,
0,
106,
18,
53,
254,
42,
99,
154,
0,
14,
217,
61,
254,
216,
11,
92,
255,
200,
197,
112,
254,
147,
38,
199,
0,
36,
252,
120,
254,
107,
169,
77,
0,
1,
123,
159,
255,
207,
75,
102,
0,
163,
175,
196,
0,
44,
1,
240,
0,
120,
186,
176,
254,
13,
98,
76,
255,
237,
124,
241,
255,
232,
146,
188,
255,
200,
96,
224,
0,
204,
31,
41,
0,
208,
200,
13,
0,
21,
225,
96,
255,
175,
156,
196,
0,
247,
208,
126,
0,
62,
184,
244,
254,
2,
171,
81,
0,
85,
115,
158,
0,
54,
64,
45,
255,
19,
138,
114,
0,
135,
71,
205,
0,
227,
47,
147,
1,
218,
231,
66,
0,
253,
209,
28,
0,
244,
15,
173,
255,
6,
15,
118,
254,
16,
150,
208,
255,
185,
22,
50,
255,
86,
112,
207,
255,
75,
113,
215,
1,
63,
146,
43,
255,
4,
225,
19,
254,
227,
23,
62,
255,
14,
255,
214,
254,
45,
8,
205,
255,
87,
197,
151,
254,
210,
82,
215,
255,
245,
248,
247,
255,
128,
248,
70,
0,
225,
247,
87,
0,
90,
120,
70,
0,
213,
245,
92,
0,
13,
133,
226,
0,
47,
181,
5,
1,
92,
163,
105,
255,
6,
30,
133,
254,
232,
178,
61,
255,
230,
149,
24,
255,
18,
49,
158,
0,
228,
100,
61,
254,
116,
243,
251,
255,
77,
75,
92,
1,
81,
219,
147,
255,
76,
163,
254,
254,
141,
213,
246,
0,
232,
37,
152,
254,
97,
44,
100,
0,
201,
37,
50,
1,
212,
244,
57,
0,
174,
171,
183,
255,
249,
74,
112,
0,
166,
156,
30,
0,
222,
221,
97,
255,
243,
93,
73,
254,
251,
101,
100,
255,
216,
217,
93,
255,
254,
138,
187,
255,
142,
190,
52,
255,
59,
203,
177,
255,
200,
94,
52,
0,
115,
114,
158,
255,
165,
152,
104,
1,
126,
99,
226,
255,
118,
157,
244,
1,
107,
200,
16,
0,
193,
90,
229,
0,
121,
6,
88,
0,
156,
32,
93,
254,
125,
241,
211,
255,
14,
237,
157,
255,
165,
154,
21,
255,
184,
224,
22,
255,
250,
24,
152,
255,
113,
77,
31,
0,
247,
171,
23,
255,
237,
177,
204,
255,
52,
137,
145,
255,
194,
182,
114,
0,
224,
234,
149,
0,
10,
111,
103,
1,
201,
129,
4,
0,
238,
142,
78,
0,
52,
6,
40,
255,
110,
213,
165,
254,
60,
207,
253,
0,
62,
215,
69,
0,
96,
97,
0,
255,
49,
45,
202,
0,
120,
121,
22,
255,
235,
139,
48,
1,
198,
45,
34,
255,
182,
50,
27,
1,
131,
210,
91,
255,
46,
54,
128,
0,
175,
123,
105,
255,
198,
141,
78,
254,
67,
244,
239,
255,
245,
54,
103,
254,
78,
38,
242,
255,
2,
92,
249,
254,
251,
174,
87,
255,
139,
63,
144,
0,
24,
108,
27,
255,
34,
102,
18,
1,
34,
22,
152,
0,
66,
229,
118,
254,
50,
143,
99,
0,
144,
169,
149,
1,
118,
30,
152,
0,
178,
8,
121,
1,
8,
159,
18,
0,
90,
101,
230,
255,
129,
29,
119,
0,
68,
36,
11,
1,
232,
183,
55,
0,
23,
255,
96,
255,
161,
41,
193,
255,
63,
139,
222,
0,
15,
179,
243,
0,
255,
100,
15,
255,
82,
53,
135,
0,
137,
57,
149,
1,
99,
240,
170,
255,
22,
230,
228,
254,
49,
180,
82,
255,
61,
82,
43,
0,
110,
245,
217,
0,
199,
125,
61,
0,
46,
253,
52,
0,
141,
197,
219,
0,
211,
159,
193,
0,
55,
121,
105,
254,
183,
20,
129,
0,
169,
119,
170,
255,
203,
178,
139,
255,
135,
40,
182,
255,
172,
13,
202,
255,
65,
178,
148,
0,
8,
207,
43,
0,
122,
53,
127,
1,
74,
161,
48,
0,
227,
214,
128,
254,
86,
11,
243,
255,
100,
86,
7,
1,
245,
68,
134,
255,
61,
43,
21,
1,
152,
84,
94,
255,
190,
60,
250,
254,
239,
118,
232,
255,
214,
136,
37,
1,
113,
76,
107,
255,
93,
104,
100,
1,
144,
206,
23,
255,
110,
150,
154,
1,
228,
103,
185,
0,
218,
49,
50,
254,
135,
77,
139,
255,
185,
1,
78,
0,
0,
161,
148,
255,
97,
29,
233,
255,
207,
148,
149,
255,
160,
168,
0,
0,
91,
128,
171,
255,
6,
28,
19,
254,
11,
111,
247,
0,
39,
187,
150,
255,
138,
232,
149,
0,
117,
62,
68,
255,
63,
216,
188,
255,
235,
234,
32,
254,
29,
57,
160,
255,
25,
12,
241,
1,
169,
60,
191,
0,
32,
131,
141,
255,
237,
159,
123,
255,
94,
197,
94,
254,
116,
254,
3,
255,
92,
179,
97,
254,
121,
97,
92,
255,
170,
112,
14,
0,
21,
149,
248,
0,
248,
227,
3,
0,
80,
96,
109,
0,
75,
192,
74,
1,
12,
90,
226,
255,
161,
106,
68,
1,
208,
114,
127,
255,
114,
42,
255,
254,
74,
26,
74,
255,
247,
179,
150,
254,
121,
140,
60,
0,
147,
70,
200,
255,
214,
40,
161,
255,
161,
188,
201,
255,
141,
65,
135,
255,
242,
115,
252,
0,
62,
47,
202,
0,
180,
149,
255,
254,
130,
55,
237,
0,
165,
17,
186,
255,
10,
169,
194,
0,
156,
109,
218,
255,
112,
140,
123,
255,
104,
128,
223,
254,
177,
142,
108,
255,
121,
37,
219,
255,
128,
77,
18,
255,
111,
108,
23,
1,
91,
192,
75,
0,
174,
245,
22,
255,
4,
236,
62,
255,
43,
64,
153,
1,
227,
173,
254,
0,
237,
122,
132,
1,
127,
89,
186,
255,
142,
82,
128,
254,
252,
84,
174,
0,
90,
179,
177,
1,
243,
214,
87,
255,
103,
60,
162,
255,
208,
130,
14,
255,
11,
130,
139,
0,
206,
129,
219,
255,
94,
217,
157,
255,
239,
230,
230,
255,
116,
115,
159,
254,
164,
107,
95,
0,
51,
218,
2,
1,
216,
125,
198,
255,
140,
202,
128,
254,
11,
95,
68,
255,
55,
9,
93,
254,
174,
153,
6,
255,
204,
172,
96,
0,
69,
160,
110,
0,
213,
38,
49,
254,
27,
80,
213,
0,
118,
125,
114,
0,
70,
70,
67,
255,
15,
142,
73,
255,
131,
122,
185,
255,
243,
20,
50,
254,
130,
237,
40,
0,
210,
159,
140,
1,
197,
151,
65,
255,
84,
153,
66,
0,
195,
126,
90,
0,
16,
238,
236,
1,
118,
187,
102,
255,
3,
24,
133,
255,
187,
69,
230,
0,
56,
197,
92,
1,
213,
69,
94,
255,
80,
138,
229,
1,
206,
7,
230,
0,
222,
111,
230,
1,
91,
233,
119,
255,
9,
89,
7,
1,
2,
98,
1,
0,
148,
74,
133,
255,
51,
246,
180,
255,
228,
177,
112,
1,
58,
189,
108,
255,
194,
203,
237,
254,
21,
209,
195,
0,
147,
10,
35,
1,
86,
157,
226,
0,
31,
163,
139,
254,
56,
7,
75,
255,
62,
90,
116,
0,
181,
60,
169,
0,
138,
162,
212,
254,
81,
167,
31,
0,
205,
90,
112,
255,
33,
112,
227,
0,
83,
151,
117,
1,
177,
224,
73,
255,
174,
144,
217,
255,
230,
204,
79,
255,
22,
77,
232,
255,
114,
78,
234,
0,
224,
57,
126,
254,
9,
49,
141,
0,
242,
147,
165,
1,
104,
182,
140,
255,
167,
132,
12,
1,
123,
68,
127,
0,
225,
87,
39,
1,
251,
108,
8,
0,
198,
193,
143,
1,
121,
135,
207,
255,
172,
22,
70,
0,
50,
68,
116,
255,
101,
175,
40,
255,
248,
105,
233,
0,
166,
203,
7,
0,
110,
197,
218,
0,
215,
254,
26,
254,
168,
226,
253,
0,
31,
143,
96,
0,
11,
103,
41,
0,
183,
129,
203,
254,
100,
247,
74,
255,
213,
126,
132,
0,
210,
147,
44,
0,
199,
234,
27,
1,
148,
47,
181,
0,
155,
91,
158,
1,
54,
105,
175,
255,
2,
78,
145,
254,
102,
154,
95,
0,
128,
207,
127,
254,
52,
124,
236,
255,
130,
84,
71,
0,
221,
243,
211,
0,
152,
170,
207,
0,
222,
106,
199,
0,
183,
84,
94,
254,
92,
200,
56,
255,
138,
182,
115,
1,
142,
96,
146,
0,
133,
136,
228,
0,
97,
18,
150,
0,
55,
251,
66,
0,
140,
102,
4,
0,
202,
103,
151,
0,
30,
19,
248,
255,
51,
184,
207,
0,
202,
198,
89,
0,
55,
197,
225,
254,
169,
95,
249,
255,
66,
65,
68,
255,
188,
234,
126,
0,
166,
223,
100,
1,
112,
239,
244,
0,
144,
23,
194,
0,
58,
39,
182,
0,
244,
44,
24,
254,
175,
68,
179,
255,
152,
118,
154,
1,
176,
162,
130,
0,
217,
114,
204,
254,
173,
126,
78,
255,
33,
222,
30,
255,
36,
2,
91,
255,
2,
143,
243,
0,
9,
235,
215,
0,
3,
171,
151,
1,
24,
215,
245,
255,
168,
47,
164,
254,
241,
146,
207,
0,
69,
129,
180,
0,
68,
243,
113,
0,
144,
53,
72,
254,
251,
45,
14,
0,
23,
110,
168,
0,
68,
68,
79,
255,
110,
70,
95,
254,
174,
91,
144,
255,
33,
206,
95,
255,
137,
41,
7,
255,
19,
187,
153,
254,
35,
255,
112,
255,
9,
145,
185,
254,
50,
157,
37,
0,
11,
112,
49,
1,
102,
8,
190,
255,
234,
243,
169,
1,
60,
85,
23,
0,
74,
39,
189,
0,
116,
49,
239,
0,
173,
213,
210,
0,
46,
161,
108,
255,
159,
150,
37,
0,
196,
120,
185,
255,
34,
98,
6,
255,
153,
195,
62,
255,
97,
230,
71,
255,
102,
61,
76,
0,
26,
212,
236,
255,
164,
97,
16,
0,
198,
59,
146,
0,
163,
23,
196,
0,
56,
24,
61,
0,
181,
98,
193,
0,
251,
147,
229,
255,
98,
189,
24,
255,
46,
54,
206,
255,
234,
82,
246,
0,
183,
103,
38,
1,
109,
62,
204,
0,
10,
240,
224,
0,
146,
22,
117,
255,
142,
154,
120,
0,
69,
212,
35,
0,
208,
99,
118,
1,
121,
255,
3,
255,
72,
6,
194,
0,
117,
17,
197,
255,
125,
15,
23,
0,
154,
79,
153,
0,
214,
94,
197,
255,
185,
55,
147,
255,
62,
254,
78,
254,
127,
82,
153,
0,
110,
102,
63,
255,
108,
82,
161,
255,
105,
187,
212,
1,
80,
138,
39,
0,
60,
255,
93,
255,
72,
12,
186,
0,
210,
251,
31,
1,
190,
167,
144,
255,
228,
44,
19,
254,
128,
67,
232,
0,
214,
249,
107,
254,
136,
145,
86,
255,
132,
46,
176,
0,
189,
187,
227,
255,
208,
22,
140,
0,
217,
211,
116,
0,
50,
81,
186,
254,
139,
250,
31,
0,
30,
64,
198,
1,
135,
155,
100,
0,
160,
206,
23,
254,
187,
162,
211,
255,
16,
188,
63,
0,
254,
208,
49,
0,
85,
84,
191,
0,
241,
192,
242,
255,
153,
126,
145,
1,
234,
162,
162,
255,
230,
97,
216,
1,
64,
135,
126,
0,
190,
148,
223,
1,
52,
0,
43,
255,
28,
39,
189,
1,
64,
136,
238,
0,
175,
196,
185,
0,
98,
226,
213,
255,
127,
159,
244,
1,
226,
175,
60,
0,
160,
233,
142,
1,
180,
243,
207,
255,
69,
152,
89,
1,
31,
101,
21,
0,
144,
25,
164,
254,
139,
191,
209,
0,
91,
25,
121,
0,
32,
147,
5,
0,
39,
186,
123,
255,
63,
115,
230,
255,
93,
167,
198,
255,
143,
213,
220,
255,
179,
156,
19,
255,
25,
66,
122,
0,
214,
160,
217,
255,
2,
45,
62,
255,
106,
79,
146,
254,
51,
137,
99,
255,
87,
100,
231,
255,
175,
145,
232,
255,
101,
184,
1,
255,
174,
9,
125,
0,
82,
37,
161,
1,
36,
114,
141,
255,
48,
222,
142,
255,
245,
186,
154,
0,
5,
174,
221,
254,
63,
114,
155,
255,
135,
55,
160,
1,
80,
31,
135,
0,
126,
250,
179,
1,
236,
218,
45,
0,
20,
28,
145,
1,
16,
147,
73,
0,
249,
189,
132,
1,
17,
189,
192,
255,
223,
142,
198,
255,
72,
20,
15,
255,
250,
53,
237,
254,
15,
11,
18,
0,
27,
211,
113,
254,
213,
107,
56,
255,
174,
147,
146,
255,
96,
126,
48,
0,
23,
193,
109,
1,
37,
162,
94,
0,
199,
157,
249,
254,
24,
128,
187,
255,
205,
49,
178,
254,
93,
164,
42,
255,
43,
119,
235,
1,
88,
183,
237,
255,
218,
210,
1,
255,
107,
254,
42,
0,
230,
10,
99,
255,
162,
0,
226,
0,
219,
237,
91,
0,
129,
178,
203,
0,
208,
50,
95,
254,
206,
208,
95,
255,
247,
191,
89,
254,
110,
234,
79,
255,
165,
61,
243,
0,
20,
122,
112,
255,
246,
246,
185,
254,
103,
4,
123,
0,
233,
99,
230,
1,
219,
91,
252,
255,
199,
222,
22,
255,
179,
245,
233,
255,
211,
241,
234,
0,
111,
250,
192,
255,
85,
84,
136,
0,
101,
58,
50,
255,
131,
173,
156,
254,
119,
45,
51,
255,
118,
233,
16,
254,
242,
90,
214,
0,
94,
159,
219,
1,
3,
3,
234,
255,
98,
76,
92,
254,
80,
54,
230,
0,
5,
228,
231,
254,
53,
24,
223,
255,
113,
56,
118,
1,
20,
132,
1,
255,
171,
210,
236,
0,
56,
241,
158,
255,
186,
115,
19,
255,
8,
229,
174,
0,
48,
44,
0,
1,
114,
114,
166,
255,
6,
73,
226,
255,
205,
89,
244,
0,
137,
227,
75,
1,
248,
173,
56,
0,
74,
120,
246,
254,
119,
3,
11,
255,
81,
120,
198,
255,
136,
122,
98,
255,
146,
241,
221,
1,
109,
194,
78,
255,
223,
241,
70,
1,
214,
200,
169,
255,
97,
190,
47,
255,
47,
103,
174,
255,
99,
92,
72,
254,
118,
233,
180,
255,
193,
35,
233,
254,
26,
229,
32,
255,
222,
252,
198,
0,
204,
43,
71,
255,
199,
84,
172,
0,
134,
102,
190,
0,
111,
238,
97,
254,
230,
40,
230,
0,
227,
205,
64,
254,
200,
12,
225,
0,
166,
25,
222,
0,
113,
69,
51,
255,
143,
159,
24,
0,
167,
184,
74,
0,
29,
224,
116,
254,
158,
208,
233,
0,
193,
116,
126,
255,
212,
11,
133,
255,
22,
58,
140,
1,
204,
36,
51,
255,
232,
30,
43,
0,
235,
70,
181,
255,
64,
56,
146,
254,
169,
18,
84,
255,
226,
1,
13,
255,
200,
50,
176,
255,
52,
213,
245,
254,
168,
209,
97,
0,
191,
71,
55,
0,
34,
78,
156,
0,
232,
144,
58,
1,
185,
74,
189,
0,
186,
142,
149,
254,
64,
69,
127,
255,
161,
203,
147,
255,
176,
151,
191,
0,
136,
231,
203,
254,
163,
182,
137,
0,
161,
126,
251,
254,
233,
32,
66,
0,
68,
207,
66,
0,
30,
28,
37,
0,
93,
114,
96,
1,
254,
92,
247,
255,
44,
171,
69,
0,
202,
119,
11,
255,
188,
118,
50,
1,
255,
83,
136,
255,
71,
82,
26,
0,
70,
227,
2,
0,
32,
235,
121,
1,
181,
41,
154,
0,
71,
134,
229,
254,
202,
255,
36,
0,
41,
152,
5,
0,
154,
63,
73,
255,
34,
182,
124,
0,
121,
221,
150,
255,
26,
204,
213,
1,
41,
172,
87,
0,
90,
157,
146,
255,
109,
130,
20,
0,
71,
107,
200,
255,
243,
102,
189,
0,
1,
195,
145,
254,
46,
88,
117,
0,
8,
206,
227,
0,
191,
110,
253,
255,
109,
128,
20,
254,
134,
85,
51,
255,
137,
177,
112,
1,
216,
34,
22,
255,
131,
16,
208,
255,
121,
149,
170,
0,
114,
19,
23,
1,
166,
80,
31,
255,
113,
240,
122,
0,
232,
179,
250,
0,
68,
110,
180,
254,
210,
170,
119,
0,
223,
108,
164,
255,
207,
79,
233,
255,
27,
229,
226,
254,
209,
98,
81,
255,
79,
68,
7,
0,
131,
185,
100,
0,
170,
29,
162,
255,
17,
162,
107,
255,
57,
21,
11,
1,
100,
200,
181,
255,
127,
65,
166,
1,
165,
134,
204,
0,
104,
167,
168,
0,
1,
164,
79,
0,
146,
135,
59,
1,
70,
50,
128,
255,
102,
119,
13,
254,
227,
6,
135,
0,
162,
142,
179,
255,
160,
100,
222,
0,
27,
224,
219,
1,
158,
93,
195,
255,
234,
141,
137,
0,
16,
24,
125,
255,
238,
206,
47,
255,
97,
17,
98,
255,
116,
110,
12,
255,
96,
115,
77,
0,
91,
227,
232,
255,
248,
254,
79,
255,
92,
229,
6,
254,
88,
198,
139,
0,
206,
75,
129,
0,
250,
77,
206,
255,
141,
244,
123,
1,
138,
69,
220,
0,
32,
151,
6,
1,
131,
167,
22,
255,
237,
68,
167,
254,
199,
189,
150,
0,
163,
171,
138,
255,
51,
188,
6,
255,
95,
29,
137,
254,
148,
226,
179,
0,
181,
107,
208,
255,
134,
31,
82,
255,
151,
101,
45,
255,
129,
202,
225,
0,
224,
72,
147,
0,
48,
138,
151,
255,
195,
64,
206,
254,
237,
218,
158,
0,
106,
29,
137,
254,
253,
189,
233,
255,
103,
15,
17,
255,
194,
97,
255,
0,
178,
45,
169,
254,
198,
225,
155,
0,
39,
48,
117,
255,
135,
106,
115,
0,
97,
38,
181,
0,
150,
47,
65,
255,
83,
130,
229,
254,
246,
38,
129,
0,
92,
239,
154,
254,
91,
99,
127,
0,
161,
111,
33,
255,
238,
217,
242,
255,
131,
185,
195,
255,
213,
191,
158,
255,
41,
150,
218,
0,
132,
169,
131,
0,
89,
84,
252,
1,
171,
70,
128,
255,
163,
248,
203,
254,
1,
50,
180,
255,
124,
76,
85,
1,
251,
111,
80,
0,
99,
66,
239,
255,
154,
237,
182,
255,
221,
126,
133,
254,
74,
204,
99,
255,
65,
147,
119,
255,
99,
56,
167,
255,
79,
248,
149,
255,
116,
155,
228,
255,
237,
43,
14,
254,
69,
137,
11,
255,
22,
250,
241,
1,
91,
122,
143,
255,
205,
249,
243,
0,
212,
26,
60,
255,
48,
182,
176,
1,
48,
23,
191,
255,
203,
121,
152,
254,
45,
74,
213,
255,
62,
90,
18,
254,
245,
163,
230,
255,
185,
106,
116,
255,
83,
35,
159,
0,
12,
33,
2,
255,
80,
34,
62,
0,
16,
87,
174,
255,
173,
101,
85,
0,
202,
36,
81,
254,
160,
69,
204,
255,
64,
225,
187,
0,
58,
206,
94,
0,
86,
144,
47,
0,
229,
86,
245,
0,
63,
145,
190,
1,
37,
5,
39,
0,
109,
251,
26,
0,
137,
147,
234,
0,
162,
121,
145,
255,
144,
116,
206,
255,
197,
232,
185,
255,
183,
190,
140,
255,
73,
12,
254,
255,
139,
20,
242,
255,
170,
90,
239,
255,
97,
66,
187,
255,
245,
181,
135,
254,
222,
136,
52,
0,
245,
5,
51,
254,
203,
47,
78,
0,
152,
101,
216,
0,
73,
23,
125,
0,
254,
96,
33,
1,
235,
210,
73,
255,
43,
209,
88,
1,
7,
129,
109,
0,
122,
104,
228,
254,
170,
242,
203,
0,
242,
204,
135,
255,
202,
28,
233,
255,
65,
6,
127,
0,
159,
144,
71,
0,
100,
140,
95,
0,
78,
150,
13,
0,
251,
107,
118,
1,
182,
58,
125,
255,
1,
38,
108,
255,
141,
189,
209,
255,
8,
155,
125,
1,
113,
163,
91,
255,
121,
79,
190,
255,
134,
239,
108,
255,
76,
47,
248,
0,
163,
228,
239,
0,
17,
111,
10,
0,
88,
149,
75,
255,
215,
235,
239,
0,
167,
159,
24,
255,
47,
151,
108,
255,
107,
209,
188,
0,
233,
231,
99,
254,
28,
202,
148,
255,
174,
35,
138,
255,
110,
24,
68,
255,
2,
69,
181,
0,
107,
102,
82,
0,
102,
237,
7,
0,
92,
36,
237,
255,
221,
162,
83,
1,
55,
202,
6,
255,
135,
234,
135,
255,
24,
250,
222,
0,
65,
94,
168,
254,
245,
248,
210,
255,
167,
108,
201,
254,
255,
161,
111,
0,
205,
8,
254,
0,
136,
13,
116,
0,
100,
176,
132,
255,
43,
215,
126,
255,
177,
133,
130,
255,
158,
79,
148,
0,
67,
224,
37,
1,
12,
206,
21,
255,
62,
34,
110,
1,
237,
104,
175,
255,
80,
132,
111,
255,
142,
174,
72,
0,
84,
229,
180,
254,
105,
179,
140,
0,
64,
248,
15,
255,
233,
138,
16,
0,
245,
67,
123,
254,
218,
121,
212,
255,
63,
95,
218,
1,
213,
133,
137,
255,
143,
182,
82,
255,
48,
28,
11,
0,
244,
114,
141,
1,
209,
175,
76,
255,
157,
181,
150,
255,
186,
229,
3,
255,
164,
157,
111,
1,
231,
189,
139,
0,
119,
202,
190,
255,
218,
106,
64,
255,
68,
235,
63,
254,
96,
26,
172,
255,
187,
47,
11,
1,
215,
18,
251,
255,
81,
84,
89,
0,
68,
58,
128,
0,
94,
113,
5,
1,
92,
129,
208,
255,
97,
15,
83,
254,
9,
28,
188,
0,
239,
9,
164,
0,
60,
205,
152,
0,
192,
163,
98,
255,
184,
18,
60,
0,
217,
182,
139,
0,
109,
59,
120,
255,
4,
192,
251,
0,
169,
210,
240,
255,
37,
172,
92,
254,
148,
211,
245,
255,
179,
65,
52,
0,
253,
13,
115,
0,
185,
174,
206,
1,
114,
188,
149,
255,
237,
90,
173,
0,
43,
199,
192,
255,
88,
108,
113,
0,
52,
35,
76,
0,
66,
25,
148,
255,
221,
4,
7,
255,
151,
241,
114,
255,
190,
209,
232,
0,
98,
50,
199,
0,
151,
150,
213,
255,
18,
74,
36,
1,
53,
40,
7,
0,
19,
135,
65,
255,
26,
172,
69,
0,
174,
237,
85,
0,
99,
95,
41,
0,
3,
56,
16,
0,
39,
160,
177,
255,
200,
106,
218,
254,
185,
68,
84,
255,
91,
186,
61,
254,
67,
143,
141,
255,
13,
244,
166,
255,
99,
114,
198,
0,
199,
110,
163,
255,
193,
18,
186,
0,
124,
239,
246,
1,
110,
68,
22,
0,
2,
235,
46,
1,
212,
60,
107,
0,
105,
42,
105,
1,
14,
230,
152,
0,
7,
5,
131,
0,
141,
104,
154,
255,
213,
3,
6,
0,
131,
228,
162,
255,
179,
100,
28,
1,
231,
123,
85,
255,
206,
14,
223,
1,
253,
96,
230,
0,
38,
152,
149,
1,
98,
137,
122,
0,
214,
205,
3,
255,
226,
152,
179,
255,
6,
133,
137,
0,
158,
69,
140,
255,
113,
162,
154,
255,
180,
243,
172,
255,
27,
189,
115,
255,
143,
46,
220,
255,
213,
134,
225,
255,
126,
29,
69,
0,
188,
43,
137,
1,
242,
70,
9,
0,
90,
204,
255,
255,
231,
170,
147,
0,
23,
56,
19,
254,
56,
125,
157,
255,
48,
179,
218,
255,
79,
182,
253,
255,
38,
212,
191,
1,
41,
235,
124,
0,
96,
151,
28,
0,
135,
148,
190,
0,
205,
249,
39,
254,
52,
96,
136,
255,
212,
44,
136,
255,
67,
209,
131,
255,
252,
130,
23,
255,
219,
128,
20,
255,
198,
129,
118,
0,
108,
101,
11,
0,
178,
5,
146,
1,
62,
7,
100,
255,
181,
236,
94,
254,
28,
26,
164,
0,
76,
22,
112,
255,
120,
102,
79,
0,
202,
192,
229,
1,
200,
176,
215,
0,
41,
64,
244,
255,
206,
184,
78,
0,
167,
45,
63,
1,
160,
35,
0,
255,
59,
12,
142,
255,
204,
9,
144,
255,
219,
94,
229,
1,
122,
27,
112,
0,
189,
105,
109,
255,
64,
208,
74,
255,
251,
127,
55,
1,
2,
226,
198,
0,
44,
76,
209,
0,
151,
152,
77,
255,
210,
23,
46,
1,
201,
171,
69,
255,
44,
211,
231,
0,
190,
37,
224,
255,
245,
196,
62,
255,
169,
181,
222,
255,
34,
211,
17,
0,
119,
241,
197,
255,
229,
35,
152,
1,
21,
69,
40,
255,
178,
226,
161,
0,
148,
179,
193,
0,
219,
194,
254,
1,
40,
206,
51,
255,
231,
92,
250,
1,
67,
153,
170,
0,
21,
148,
241,
0,
170,
69,
82,
255,
121,
18,
231,
255,
92,
114,
3,
0,
184,
62,
230,
0,
225,
201,
87,
255,
146,
96,
162,
255,
181,
242,
220,
0,
173,
187,
221,
1,
226,
62,
170,
255,
56,
126,
217,
1,
117,
13,
227,
255,
179,
44,
239,
0,
157,
141,
155,
255,
144,
221,
83,
0,
235,
209,
208,
0,
42,
17,
165,
1,
251,
81,
133,
0,
124,
245,
201,
254,
97,
211,
24,
255,
83,
214,
166,
0,
154,
36,
9,
255,
248,
47,
127,
0,
90,
219,
140,
255,
161,
217,
38,
254,
212,
147,
63,
255,
66,
84,
148,
1,
207,
3,
1,
0,
230,
134,
89,
1,
127,
78,
122,
255,
224,
155,
1,
255,
82,
136,
74,
0,
178,
156,
208,
255,
186,
25,
49,
255,
222,
3,
210,
1,
229,
150,
190,
255,
85,
162,
52,
255,
41,
84,
141,
255,
73,
123,
84,
254,
93,
17,
150,
0,
119,
19,
28,
1,
32,
22,
215,
255,
28,
23,
204,
255,
142,
241,
52,
255,
228,
52,
125,
0,
29,
76,
207,
0,
215,
167,
250,
254,
175,
164,
230,
0,
55,
207,
105,
1,
109,
187,
245,
255,
161,
44,
220,
1,
41,
101,
128,
255,
167,
16,
94,
0,
93,
214,
107,
255,
118,
72,
0,
254,
80,
61,
234,
255,
121,
175,
125,
0,
139,
169,
251,
0,
97,
39,
147,
254,
250,
196,
49,
255,
165,
179,
110,
254,
223,
70,
187,
255,
22,
142,
125,
1,
154,
179,
138,
255,
118,
176,
42,
1,
10,
174,
153,
0,
156,
92,
102,
0,
168,
13,
161,
255,
143,
16,
32,
0,
250,
197,
180,
255,
203,
163,
44,
1,
87,
32,
36,
0,
161,
153,
20,
255,
123,
252,
15,
0,
25,
227,
80,
0,
60,
88,
142,
0,
17,
22,
201,
1,
154,
205,
77,
255,
39,
63,
47,
0,
8,
122,
141,
0,
128,
23,
182,
254,
204,
39,
19,
255,
4,
112,
29,
255,
23,
36,
140,
255,
210,
234,
116,
254,
53,
50,
63,
255,
121,
171,
104,
255,
160,
219,
94,
0,
87,
82,
14,
254,
231,
42,
5,
0,
165,
139,
127,
254,
86,
78,
38,
0,
130,
60,
66,
254,
203,
30,
45,
255,
46,
196,
122,
1,
249,
53,
162,
255,
136,
143,
103,
254,
215,
210,
114,
0,
231,
7,
160,
254,
169,
152,
42,
255,
111,
45,
246,
0,
142,
131,
135,
255,
131,
71,
204,
255,
36,
226,
11,
0,
0,
28,
242,
255,
225,
138,
213,
255,
247,
46,
216,
254,
245,
3,
183,
0,
108,
252,
74,
1,
206,
26,
48,
255,
205,
54,
246,
255,
211,
198,
36,
255,
121,
35,
50,
0,
52,
216,
202,
255,
38,
139,
129,
254,
242,
73,
148,
0,
67,
231,
141,
255,
42,
47,
204,
0,
78,
116,
25,
1,
4,
225,
191,
255,
6,
147,
228,
0,
58,
88,
177,
0,
122,
165,
229,
255,
252,
83,
201,
255,
224,
167,
96,
1,
177,
184,
158,
255,
242,
105,
179,
1,
248,
198,
240,
0,
133,
66,
203,
1,
254,
36,
47,
0,
45,
24,
115,
255,
119,
62,
254,
0,
196,
225,
186,
254,
123,
141,
172,
0,
26,
85,
41,
255,
226,
111,
183,
0,
213,
231,
151,
0,
4,
59,
7,
255,
238,
138,
148,
0,
66,
147,
33,
255,
31,
246,
141,
255,
209,
141,
116,
255,
104,
112,
31,
0,
88,
161,
172,
0,
83,
215,
230,
254,
47,
111,
151,
0,
45,
38,
52,
1,
132,
45,
204,
0,
138,
128,
109,
254,
233,
117,
134,
255,
243,
190,
173,
254,
241,
236,
240,
0,
82,
127,
236,
254,
40,
223,
161,
255,
110,
182,
225,
255,
123,
174,
239,
0,
135,
242,
145,
1,
51,
209,
154,
0,
150,
3,
115,
254,
217,
164,
252,
255,
55,
156,
69,
1,
84,
94,
255,
255,
232,
73,
45,
1,
20,
19,
212,
255,
96,
197,
59,
254,
96,
251,
33,
0,
38,
199,
73,
1,
64,
172,
247,
255,
117,
116,
56,
255,
228,
17,
18,
0,
62,
138,
103,
1,
246,
229,
164,
255,
244,
118,
201,
254,
86,
32,
159,
255,
109,
34,
137,
1,
85,
211,
186,
0,
10,
193,
193,
254,
122,
194,
177,
0,
122,
238,
102,
255,
162,
218,
171,
0,
108,
217,
161,
1,
158,
170,
34,
0,
176,
47,
155,
1,
181,
228,
11,
255,
8,
156,
0,
0,
16,
75,
93,
0,
206,
98,
255,
1,
58,
154,
35,
0,
12,
243,
184,
254,
67,
117,
66,
255,
230,
229,
123,
0,
201,
42,
110,
0,
134,
228,
178,
254,
186,
108,
118,
255,
58,
19,
154,
255,
82,
169,
62,
255,
114,
143,
115,
1,
239,
196,
50,
255,
173,
48,
193,
255,
147,
2,
84,
255,
150,
134,
147,
254,
95,
232,
73,
0,
109,
227,
52,
254,
191,
137,
10,
0,
40,
204,
30,
254,
76,
52,
97,
255,
164,
235,
126,
0,
254,
124,
188,
0,
74,
182,
21,
1,
121,
29,
35,
255,
241,
30,
7,
254,
85,
218,
214,
255,
7,
84,
150,
254,
81,
27,
117,
255,
160,
159,
152,
254,
66,
24,
221,
255,
227,
10,
60,
1,
141,
135,
102,
0,
208,
189,
150,
1,
117,
179,
92,
0,
132,
22,
136,
255,
120,
199,
28,
0,
21,
129,
79,
254,
182,
9,
65,
0,
218,
163,
169,
0,
246,
147,
198,
255,
107,
38,
144,
1,
78,
175,
205,
255,
214,
5,
250,
254,
47,
88,
29,
255,
164,
47,
204,
255,
43,
55,
6,
255,
131,
134,
207,
254,
116,
100,
214,
0,
96,
140,
75,
1,
106,
220,
144,
0,
195,
32,
28,
1,
172,
81,
5,
255,
199,
179,
52,
255,
37,
84,
203,
0,
170,
112,
174,
0,
11,
4,
91,
0,
69,
244,
27,
1,
117,
131,
92,
0,
33,
152,
175,
255,
140,
153,
107,
255,
251,
135,
43,
254,
87,
138,
4,
255,
198,
234,
147,
254,
121,
152,
84,
255,
205,
101,
155,
1,
157,
9,
25,
0,
72,
106,
17,
254,
108,
153,
0,
255,
189,
229,
186,
0,
193,
8,
176,
255,
174,
149,
209,
0,
238,
130,
29,
0,
233,
214,
126,
1,
61,
226,
102,
0,
57,
163,
4,
1,
198,
111,
51,
255,
45,
79,
78,
1,
115,
210,
10,
255,
218,
9,
25,
255,
158,
139,
198,
255,
211,
82,
187,
254,
80,
133,
83,
0,
157,
129,
230,
1,
243,
133,
134,
255,
40,
136,
16,
0,
77,
107,
79,
255,
183,
85,
92,
1,
177,
204,
202,
0,
163,
71,
147,
255,
152,
69,
190,
0,
172,
51,
188,
1,
250,
210,
172,
255,
211,
242,
113,
1,
89,
89,
26,
255,
64,
66,
111,
254,
116,
152,
42,
0,
161,
39,
27,
255,
54,
80,
254,
0,
106,
209,
115,
1,
103,
124,
97,
0,
221,
230,
98,
255,
31,
231,
6,
0,
178,
192,
120,
254,
15,
217,
203,
255,
124,
158,
79,
0,
112,
145,
247,
0,
92,
250,
48,
1,
163,
181,
193,
255,
37,
47,
142,
254,
144,
189,
165,
255,
46,
146,
240,
0,
6,
75,
128,
0,
41,
157,
200,
254,
87,
121,
213,
0,
1,
113,
236,
0,
5,
45,
250,
0,
144,
12,
82,
0,
31,
108,
231,
0,
225,
239,
119,
255,
167,
7,
189,
255,
187,
228,
132,
255,
110,
189,
34,
0,
94,
44,
204,
1,
162,
52,
197,
0,
78,
188,
241,
254,
57,
20,
141,
0,
244,
146,
47,
1,
206,
100,
51,
0,
125,
107,
148,
254,
27,
195,
77,
0,
152,
253,
90,
1,
7,
143,
144,
255,
51,
37,
31,
0,
34,
119,
38,
255,
7,
197,
118,
0,
153,
188,
211,
0,
151,
20,
116,
254,
245,
65,
52,
255,
180,
253,
110,
1,
47,
177,
209,
0,
161,
99,
17,
255,
118,
222,
202,
0,
125,
179,
252,
1,
123,
54,
126,
255,
145,
57,
191,
0,
55,
186,
121,
0,
10,
243,
138,
0,
205,
211,
229,
255,
125,
156,
241,
254,
148,
156,
185,
255,
227,
19,
188,
255,
124,
41,
32,
255,
31,
34,
206,
254,
17,
57,
83,
0,
204,
22,
37,
255,
42,
96,
98,
0,
119,
102,
184,
1,
3,
190,
28,
0,
110,
82,
218,
255,
200,
204,
192,
255,
201,
145,
118,
0,
117,
204,
146,
0,
132,
32,
98,
1,
192,
194,
121,
0,
106,
161,
248,
1,
237,
88,
124,
0,
23,
212,
26,
0,
205,
171,
90,
255,
248,
48,
216,
1,
141,
37,
230,
255,
124,
203,
0,
254,
158,
168,
30,
255,
214,
248,
21,
0,
112,
187,
7,
255,
],
'i8',
ALLOC_NONE,
Runtime.GLOBAL_BASE + 20480
);
/* memory initializer */ allocate(
[
75,
133,
239,
255,
74,
227,
243,
255,
250,
147,
70,
0,
214,
120,
162,
0,
167,
9,
179,
255,
22,
158,
18,
0,
218,
77,
209,
1,
97,
109,
81,
255,
244,
33,
179,
255,
57,
52,
57,
255,
65,
172,
210,
255,
249,
71,
209,
255,
142,
169,
238,
0,
158,
189,
153,
255,
174,
254,
103,
254,
98,
33,
14,
0,
141,
76,
230,
255,
113,
139,
52,
255,
15,
58,
212,
0,
168,
215,
201,
255,
248,
204,
215,
1,
223,
68,
160,
255,
57,
154,
183,
254,
47,
231,
121,
0,
106,
166,
137,
0,
81,
136,
138,
0,
165,
43,
51,
0,
231,
139,
61,
0,
57,
95,
59,
254,
118,
98,
25,
255,
151,
63,
236,
1,
94,
190,
250,
255,
169,
185,
114,
1,
5,
250,
58,
255,
75,
105,
97,
1,
215,
223,
134,
0,
113,
99,
163,
1,
128,
62,
112,
0,
99,
106,
147,
0,
163,
195,
10,
0,
33,
205,
182,
0,
214,
14,
174,
255,
129,
38,
231,
255,
53,
182,
223,
0,
98,
42,
159,
255,
247,
13,
40,
0,
188,
210,
177,
1,
6,
21,
0,
255,
255,
61,
148,
254,
137,
45,
129,
255,
89,
26,
116,
254,
126,
38,
114,
0,
251,
50,
242,
254,
121,
134,
128,
255,
204,
249,
167,
254,
165,
235,
215,
0,
202,
177,
243,
0,
133,
141,
62,
0,
240,
130,
190,
1,
110,
175,
255,
0,
0,
20,
146,
1,
37,
210,
121,
255,
7,
39,
130,
0,
142,
250,
84,
255,
141,
200,
207,
0,
9,
95,
104,
255,
11,
244,
174,
0,
134,
232,
126,
0,
167,
1,
123,
254,
16,
193,
149,
255,
232,
233,
239,
1,
213,
70,
112,
255,
252,
116,
160,
254,
242,
222,
220,
255,
205,
85,
227,
0,
7,
185,
58,
0,
118,
247,
63,
1,
116,
77,
177,
255,
62,
245,
200,
254,
63,
18,
37,
255,
107,
53,
232,
254,
50,
221,
211,
0,
162,
219,
7,
254,
2,
94,
43,
0,
182,
62,
182,
254,
160,
78,
200,
255,
135,
140,
170,
0,
235,
184,
228,
0,
175,
53,
138,
254,
80,
58,
77,
255,
152,
201,
2,
1,
63,
196,
34,
0,
5,
30,
184,
0,
171,
176,
154,
0,
121,
59,
206,
0,
38,
99,
39,
0,
172,
80,
77,
254,
0,
134,
151,
0,
186,
33,
241,
254,
94,
253,
223,
255,
44,
114,
252,
0,
108,
126,
57,
255,
201,
40,
13,
255,
39,
229,
27,
255,
39,
239,
23,
1,
151,
121,
51,
255,
153,
150,
248,
0,
10,
234,
174,
255,
118,
246,
4,
254,
200,
245,
38,
0,
69,
161,
242,
1,
16,
178,
150,
0,
113,
56,
130,
0,
171,
31,
105,
0,
26,
88,
108,
255,
49,
42,
106,
0,
251,
169,
66,
0,
69,
93,
149,
0,
20,
57,
254,
0,
164,
25,
111,
0,
90,
188,
90,
255,
204,
4,
197,
0,
40,
213,
50,
1,
212,
96,
132,
255,
88,
138,
180,
254,
228,
146,
124,
255,
184,
246,
247,
0,
65,
117,
86,
255,
253,
102,
210,
254,
254,
121,
36,
0,
137,
115,
3,
255,
60,
24,
216,
0,
134,
18,
29,
0,
59,
226,
97,
0,
176,
142,
71,
0,
7,
209,
161,
0,
189,
84,
51,
254,
155,
250,
72,
0,
213,
84,
235,
255,
45,
222,
224,
0,
238,
148,
143,
255,
170,
42,
53,
255,
78,
167,
117,
0,
186,
0,
40,
255,
125,
177,
103,
255,
69,
225,
66,
0,
227,
7,
88,
1,
75,
172,
6,
0,
169,
45,
227,
1,
16,
36,
70,
255,
50,
2,
9,
255,
139,
193,
22,
0,
143,
183,
231,
254,
218,
69,
50,
0,
236,
56,
161,
1,
213,
131,
42,
0,
138,
145,
44,
254,
136,
229,
40,
255,
49,
63,
35,
255,
61,
145,
245,
255,
101,
192,
2,
254,
232,
167,
113,
0,
152,
104,
38,
1,
121,
185,
218,
0,
121,
139,
211,
254,
119,
240,
35,
0,
65,
189,
217,
254,
187,
179,
162,
255,
160,
187,
230,
0,
62,
248,
14,
255,
60,
78,
97,
0,
255,
247,
163,
255,
225,
59,
91,
255,
107,
71,
58,
255,
241,
47,
33,
1,
50,
117,
236,
0,
219,
177,
63,
254,
244,
90,
179,
0,
35,
194,
215,
255,
189,
67,
50,
255,
23,
135,
129,
0,
104,
189,
37,
255,
185,
57,
194,
0,
35,
62,
231,
255,
220,
248,
108,
0,
12,
231,
178,
0,
143,
80,
91,
1,
131,
93,
101,
255,
144,
39,
2,
1,
255,
250,
178,
0,
5,
17,
236,
254,
139,
32,
46,
0,
204,
188,
38,
254,
245,
115,
52,
255,
191,
113,
73,
254,
191,
108,
69,
255,
22,
69,
245,
1,
23,
203,
178,
0,
170,
99,
170,
0,
65,
248,
111,
0,
37,
108,
153,
255,
64,
37,
69,
0,
0,
88,
62,
254,
89,
148,
144,
255,
191,
68,
224,
1,
241,
39,
53,
0,
41,
203,
237,
255,
145,
126,
194,
255,
221,
42,
253,
255,
25,
99,
151,
0,
97,
253,
223,
1,
74,
115,
49,
255,
6,
175,
72,
255,
59,
176,
203,
0,
124,
183,
249,
1,
228,
228,
99,
0,
129,
12,
207,
254,
168,
192,
195,
255,
204,
176,
16,
254,
152,
234,
171,
0,
77,
37,
85,
255,
33,
120,
135,
255,
142,
194,
227,
1,
31,
214,
58,
0,
213,
187,
125,
255,
232,
46,
60,
255,
190,
116,
42,
254,
151,
178,
19,
255,
51,
62,
237,
254,
204,
236,
193,
0,
194,
232,
60,
0,
172,
34,
157,
255,
189,
16,
184,
254,
103,
3,
95,
255,
141,
233,
36,
254,
41,
25,
11,
255,
21,
195,
166,
0,
118,
245,
45,
0,
67,
213,
149,
255,
159,
12,
18,
255,
187,
164,
227,
1,
160,
25,
5,
0,
12,
78,
195,
1,
43,
197,
225,
0,
48,
142,
41,
254,
196,
155,
60,
255,
223,
199,
18,
1,
145,
136,
156,
0,
252,
117,
169,
254,
145,
226,
238,
0,
239,
23,
107,
0,
109,
181,
188,
255,
230,
112,
49,
254,
73,
170,
237,
255,
231,
183,
227,
255,
80,
220,
20,
0,
194,
107,
127,
1,
127,
205,
101,
0,
46,
52,
197,
1,
210,
171,
36,
255,
88,
3,
90,
255,
56,
151,
141,
0,
96,
187,
255,
255,
42,
78,
200,
0,
254,
70,
70,
1,
244,
125,
168,
0,
204,
68,
138,
1,
124,
215,
70,
0,
102,
66,
200,
254,
17,
52,
228,
0,
117,
220,
143,
254,
203,
248,
123,
0,
56,
18,
174,
255,
186,
151,
164,
255,
51,
232,
208,
1,
160,
228,
43,
255,
249,
29,
25,
1,
68,
190,
63,
0,
8,
201,
188,
243,
103,
230,
9,
106,
59,
167,
202,
132,
133,
174,
103,
187,
43,
248,
148,
254,
114,
243,
110,
60,
241,
54,
29,
95,
58,
245,
79,
165,
209,
130,
230,
173,
127,
82,
14,
81,
31,
108,
62,
43,
140,
104,
5,
155,
107,
189,
65,
251,
171,
217,
131,
31,
121,
33,
126,
19,
25,
205,
224,
91,
34,
174,
40,
215,
152,
47,
138,
66,
205,
101,
239,
35,
145,
68,
55,
113,
47,
59,
77,
236,
207,
251,
192,
181,
188,
219,
137,
129,
165,
219,
181,
233,
56,
181,
72,
243,
91,
194,
86,
57,
25,
208,
5,
182,
241,
17,
241,
89,
155,
79,
25,
175,
164,
130,
63,
146,
24,
129,
109,
218,
213,
94,
28,
171,
66,
2,
3,
163,
152,
170,
7,
216,
190,
111,
112,
69,
1,
91,
131,
18,
140,
178,
228,
78,
190,
133,
49,
36,
226,
180,
255,
213,
195,
125,
12,
85,
111,
137,
123,
242,
116,
93,
190,
114,
177,
150,
22,
59,
254,
177,
222,
128,
53,
18,
199,
37,
167,
6,
220,
155,
148,
38,
105,
207,
116,
241,
155,
193,
210,
74,
241,
158,
193,
105,
155,
228,
227,
37,
79,
56,
134,
71,
190,
239,
181,
213,
140,
139,
198,
157,
193,
15,
101,
156,
172,
119,
204,
161,
12,
36,
117,
2,
43,
89,
111,
44,
233,
45,
131,
228,
166,
110,
170,
132,
116,
74,
212,
251,
65,
189,
220,
169,
176,
92,
181,
83,
17,
131,
218,
136,
249,
118,
171,
223,
102,
238,
82,
81,
62,
152,
16,
50,
180,
45,
109,
198,
49,
168,
63,
33,
251,
152,
200,
39,
3,
176,
228,
14,
239,
190,
199,
127,
89,
191,
194,
143,
168,
61,
243,
11,
224,
198,
37,
167,
10,
147,
71,
145,
167,
213,
111,
130,
3,
224,
81,
99,
202,
6,
112,
110,
14,
10,
103,
41,
41,
20,
252,
47,
210,
70,
133,
10,
183,
39,
38,
201,
38,
92,
56,
33,
27,
46,
237,
42,
196,
90,
252,
109,
44,
77,
223,
179,
149,
157,
19,
13,
56,
83,
222,
99,
175,
139,
84,
115,
10,
101,
168,
178,
119,
60,
187,
10,
106,
118,
230,
174,
237,
71,
46,
201,
194,
129,
59,
53,
130,
20,
133,
44,
114,
146,
100,
3,
241,
76,
161,
232,
191,
162,
1,
48,
66,
188,
75,
102,
26,
168,
145,
151,
248,
208,
112,
139,
75,
194,
48,
190,
84,
6,
163,
81,
108,
199,
24,
82,
239,
214,
25,
232,
146,
209,
16,
169,
101,
85,
36,
6,
153,
214,
42,
32,
113,
87,
133,
53,
14,
244,
184,
209,
187,
50,
112,
160,
106,
16,
200,
208,
210,
184,
22,
193,
164,
25,
83,
171,
65,
81,
8,
108,
55,
30,
153,
235,
142,
223,
76,
119,
72,
39,
168,
72,
155,
225,
181,
188,
176,
52,
99,
90,
201,
197,
179,
12,
28,
57,
203,
138,
65,
227,
74,
170,
216,
78,
115,
227,
99,
119,
79,
202,
156,
91,
163,
184,
178,
214,
243,
111,
46,
104,
252,
178,
239,
93,
238,
130,
143,
116,
96,
47,
23,
67,
111,
99,
165,
120,
114,
171,
240,
161,
20,
120,
200,
132,
236,
57,
100,
26,
8,
2,
199,
140,
40,
30,
99,
35,
250,
255,
190,
144,
233,
189,
130,
222,
235,
108,
80,
164,
21,
121,
198,
178,
247,
163,
249,
190,
43,
83,
114,
227,
242,
120,
113,
198,
156,
97,
38,
234,
206,
62,
39,
202,
7,
194,
192,
33,
199,
184,
134,
209,
30,
235,
224,
205,
214,
125,
218,
234,
120,
209,
110,
238,
127,
79,
125,
245,
186,
111,
23,
114,
170,
103,
240,
6,
166,
152,
200,
162,
197,
125,
99,
10,
174,
13,
249,
190,
4,
152,
63,
17,
27,
71,
28,
19,
53,
11,
113,
27,
132,
125,
4,
35,
245,
119,
219,
40,
147,
36,
199,
64,
123,
171,
202,
50,
188,
190,
201,
21,
10,
190,
158,
60,
76,
13,
16,
156,
196,
103,
29,
67,
182,
66,
62,
203,
190,
212,
197,
76,
42,
126,
101,
252,
156,
41,
127,
89,
236,
250,
214,
58,
171,
111,
203,
95,
23,
88,
71,
74,
140,
25,
68,
108,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
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_NONE,
Runtime.GLOBAL_BASE + 30720
);
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];
}
Module['_bitshift64Ashr'] = _bitshift64Ashr;
Module['_i64Subtract'] = _i64Subtract;
Module['_i64Add'] = _i64Add;
Module['_memset'] = _memset;
Module['_bitshift64Lshr'] = _bitshift64Lshr;
Module['_bitshift64Shl'] = _bitshift64Shl;
function _abort() {
Module['abort']();
}
Module['_strlen'] = _strlen;
function _emscripten_memcpy_big(dest, src, num) {
HEAPU8.set(HEAPU8.subarray(src, src + num), dest);
return dest;
}
Module['_memcpy'] = _memcpy;
var ___errno_state = 0;
function ___setErrNo(value) {
// For convenient setting and returning of errno.
HEAP32[___errno_state >> 2] = value;
return value;
}
var ERRNO_CODES = {
EPERM: 1,
ENOENT: 2,
ESRCH: 3,
EINTR: 4,
EIO: 5,
ENXIO: 6,
E2BIG: 7,
ENOEXEC: 8,
EBADF: 9,
ECHILD: 10,
EAGAIN: 11,
EWOULDBLOCK: 11,
ENOMEM: 12,
EACCES: 13,
EFAULT: 14,
ENOTBLK: 15,
EBUSY: 16,
EEXIST: 17,
EXDEV: 18,
ENODEV: 19,
ENOTDIR: 20,
EISDIR: 21,
EINVAL: 22,
ENFILE: 23,
EMFILE: 24,
ENOTTY: 25,
ETXTBSY: 26,
EFBIG: 27,
ENOSPC: 28,
ESPIPE: 29,
EROFS: 30,
EMLINK: 31,
EPIPE: 32,
EDOM: 33,
ERANGE: 34,
ENOMSG: 42,
EIDRM: 43,
ECHRNG: 44,
EL2NSYNC: 45,
EL3HLT: 46,
EL3RST: 47,
ELNRNG: 48,
EUNATCH: 49,
ENOCSI: 50,
EL2HLT: 51,
EDEADLK: 35,
ENOLCK: 37,
EBADE: 52,
EBADR: 53,
EXFULL: 54,
ENOANO: 55,
EBADRQC: 56,
EBADSLT: 57,
EDEADLOCK: 35,
EBFONT: 59,
ENOSTR: 60,
ENODATA: 61,
ETIME: 62,
ENOSR: 63,
ENONET: 64,
ENOPKG: 65,
EREMOTE: 66,
ENOLINK: 67,
EADV: 68,
ESRMNT: 69,
ECOMM: 70,
EPROTO: 71,
EMULTIHOP: 72,
EDOTDOT: 73,
EBADMSG: 74,
ENOTUNIQ: 76,
EBADFD: 77,
EREMCHG: 78,
ELIBACC: 79,
ELIBBAD: 80,
ELIBSCN: 81,
ELIBMAX: 82,
ELIBEXEC: 83,
ENOSYS: 38,
ENOTEMPTY: 39,
ENAMETOOLONG: 36,
ELOOP: 40,
EOPNOTSUPP: 95,
EPFNOSUPPORT: 96,
ECONNRESET: 104,
ENOBUFS: 105,
EAFNOSUPPORT: 97,
EPROTOTYPE: 91,
ENOTSOCK: 88,
ENOPROTOOPT: 92,
ESHUTDOWN: 108,
ECONNREFUSED: 111,
EADDRINUSE: 98,
ECONNABORTED: 103,
ENETUNREACH: 101,
ENETDOWN: 100,
ETIMEDOUT: 110,
EHOSTDOWN: 112,
EHOSTUNREACH: 113,
EINPROGRESS: 115,
EALREADY: 114,
EDESTADDRREQ: 89,
EMSGSIZE: 90,
EPROTONOSUPPORT: 93,
ESOCKTNOSUPPORT: 94,
EADDRNOTAVAIL: 99,
ENETRESET: 102,
EISCONN: 106,
ENOTCONN: 107,
ETOOMANYREFS: 109,
EUSERS: 87,
EDQUOT: 122,
ESTALE: 116,
ENOTSUP: 95,
ENOMEDIUM: 123,
EILSEQ: 84,
EOVERFLOW: 75,
ECANCELED: 125,
ENOTRECOVERABLE: 131,
EOWNERDEAD: 130,
ESTRPIPE: 86,
};
function _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: {
if (typeof navigator === 'object')
return navigator['hardwareConcurrency'] || 1;
return 1;
}
}
___setErrNo(ERRNO_CODES.EINVAL);
return -1;
}
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.
}
Module['_memmove'] = _memmove;
function ___errno_location() {
return ___errno_state;
}
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 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
stream.tty.ops.flush(stream.tty);
},
flush: function(stream) {
stream.tty.ops.flush(stream.tty);
},
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();
},
flush: function(tty) {
if (tty.output && tty.output.length > 0) {
Module['print'](tty.output.join(''));
tty.output = [];
}
},
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));
}
},
flush: function(tty) {
if (tty.output && tty.output.length > 0) {
Module['printErr'](tty.output.join(''));
tty.output = [];
}
},
},
};
var MEMFS = {
ops_table: null,
mount: function(mount) {
return MEMFS.createNode(null, '/', 16384 | 511 /* 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,
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.usedBytes = 0; // The actual number of bytes used in the typed array, as opposed to contents.buffer.byteLength which gives the whole capacity.
// When the byte data of the file is populated, this will point to either a typed array, or a normal JS array. Typed arrays are preferred
// for performance, and used by default. However, typed arrays are not resizable like normal JS arrays are, so there is a small disk size
// penalty involved for appending file writes that continuously grow a file similar to std::vector capacity vs used -scheme.
node.contents = null;
} else if (FS.isLink(node.mode)) {
node.node_ops = MEMFS.ops_table.link.node;
node.stream_ops = MEMFS.ops_table.link.stream;
} else if (FS.isChrdev(node.mode)) {
node.node_ops = MEMFS.ops_table.chrdev.node;
node.stream_ops = MEMFS.ops_table.chrdev.stream;
}
node.timestamp = Date.now();
// add the new node to the parent
if (parent) {
parent.contents[name] = node;
}
return node;
},
getFileDataAsRegularArray: function(node) {
if (node.contents && node.contents.subarray) {
var arr = [];
for (var i = 0; i < node.usedBytes; ++i) arr.push(node.contents[i]);
return arr; // Returns a copy of the original data.
}
return node.contents; // No-op, the file contents are already in a JS array. Return as-is.
},
getFileDataAsTypedArray: function(node) {
if (!node.contents) return new Uint8Array();
if (node.contents.subarray)
return node.contents.subarray(0, node.usedBytes); // Make sure to not return excess unused bytes.
return new Uint8Array(node.contents);
},
expandFileStorage: function(node, newCapacity) {
// If we are asked to expand the size of a file that already exists, revert to using a standard JS array to store the file
// instead of a typed array. This makes resizing the array more flexible because we can just .push() elements at the back to
// increase the size.
if (
node.contents &&
node.contents.subarray &&
newCapacity > node.contents.length
) {
node.contents = MEMFS.getFileDataAsRegularArray(node);
node.usedBytes = node.contents.length; // We might be writing to a lazy-loaded file which had overridden this property, so force-reset it.
}
if (!node.contents || node.contents.subarray) {
// Keep using a typed array if creating a new storage, or if old one was a typed array as well.
var prevCapacity = node.contents ? node.contents.buffer.byteLength : 0;
if (prevCapacity >= newCapacity) return; // No need to expand, the storage was already large enough.
// Don't expand strictly to the given requested limit if it's only a very small increase, but instead geometrically grow capacity.
// For small filesizes (<1MB), perform size*2 geometric increase, but for large sizes, do a much more conservative size*1.125 increase to
// avoid overshooting the allocation cap by a very large margin.
var CAPACITY_DOUBLING_MAX = 1024 * 1024;
newCapacity = Math.max(
newCapacity,
(prevCapacity * (prevCapacity < CAPACITY_DOUBLING_MAX ? 2.0 : 1.125)) |
0
);
if (prevCapacity != 0) newCapacity = Math.max(newCapacity, 256); // At minimum allocate 256b for each file when expanding.
var oldContents = node.contents;
node.contents = new Uint8Array(newCapacity); // Allocate new storage.
if (node.usedBytes > 0)
node.contents.set(oldContents.subarray(0, node.usedBytes), 0); // Copy old data over to the new storage.
return;
}
// Not using a typed array to back the file storage. Use a standard JS array instead.
if (!node.contents && newCapacity > 0) node.contents = [];
while (node.contents.length < newCapacity) node.contents.push(0);
},
resizeFileStorage: function(node, newSize) {
if (node.usedBytes == newSize) return;
if (newSize == 0) {
node.contents = null; // Fully decommit when requesting a resize to zero.
node.usedBytes = 0;
return;
}
if (!node.contents || node.contents.subarray) {
// Resize a typed array if that is being used as the backing store.
var oldContents = node.contents;
node.contents = new Uint8Array(new ArrayBuffer(newSize)); // Allocate new storage.
if (oldContents) {
node.contents.set(
oldContents.subarray(0, Math.min(newSize, node.usedBytes))
); // Copy old data over to the new storage.
}
node.usedBytes = newSize;
return;
}
// Backing with a JS array.
if (!node.contents) node.contents = [];
if (node.contents.length > newSize) node.contents.length = newSize;
else while (node.contents.length < newSize) node.contents.push(0);
node.usedBytes = newSize;
},
node_ops: {
getattr: function(node) {
var attr = {};
// 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.usedBytes;
} else if (FS.isLink(node.mode)) {
attr.size = node.link.length;
} else {
attr.size = 0;
}
attr.atime = new Date(node.timestamp);
attr.mtime = new Date(node.timestamp);
attr.ctime = new Date(node.timestamp);
// 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.resizeFileStorage(node, attr.size);
}
},
lookup: function(parent, name) {
throw FS.genericErrors[ERRNO_CODES.ENOENT];
},
mknod: function(parent, name, mode, dev) {
return MEMFS.createNode(parent, name, mode, dev);
},
rename: function(old_node, new_dir, new_name) {
// if 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, 511 /* 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 >= stream.node.usedBytes) return 0;
var size = Math.min(stream.node.usedBytes - 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) {
if (!length) return 0;
var node = stream.node;
node.timestamp = Date.now();
if (buffer.subarray && (!node.contents || node.contents.subarray)) {
// This write is from a typed array to a typed array?
if (canOwn) {
// Can we just reuse the buffer we are given?
node.contents = buffer.subarray(offset, offset + length);
node.usedBytes = length;
return length;
} else if (node.usedBytes === 0 && position === 0) {
// If this is a simple first write to an empty file, do a fast set since we don't need to care about old data.
node.contents = new Uint8Array(
buffer.subarray(offset, offset + length)
);
node.usedBytes = length;
return length;
} else if (position + length <= node.usedBytes) {
// Writing to an already allocated and used subrange of the file?
node.contents.set(buffer.subarray(offset, offset + length), position);
return length;
}
}
// Appending to an existing file and we need to reallocate, or source data did not come as a typed array.
MEMFS.expandFileStorage(node, position + length);
if (node.contents.subarray && buffer.subarray)
node.contents.set(buffer.subarray(offset, offset + length), position);
// Use typed array write if available.
else
for (var i = 0; i < length; i++) {
node.contents[position + i] = buffer[offset + i]; // Or fall back to manual write if not.
}
node.usedBytes = Math.max(node.usedBytes, position + length);
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.usedBytes;
}
}
if (position < 0) {
throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
}
return position;
},
allocate: function(stream, offset, length) {
MEMFS.expandFileStorage(stream.node, offset + length);
stream.node.usedBytes = Math.max(stream.node.usedBytes, offset + length);
},
mmap: function(stream, buffer, offset, length, position, prot, flags) {
if (!FS.isFile(stream.node.mode)) {
throw new FS.ErrnoError(ERRNO_CODES.ENODEV);
}
var ptr;
var allocated;
var contents = stream.node.contents;
// 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 < stream.node.usedBytes) {
if (contents.subarray) {
contents = contents.subarray(position, position + length);
} else {
contents = Array.prototype.slice.call(
contents,
position,
position + length
);
}
}
allocated = true;
ptr = _malloc(length);
if (!ptr) {
throw new FS.ErrnoError(ERRNO_CODES.ENOMEM);
}
buffer.set(contents, ptr);
}
return { ptr: ptr, allocated: allocated };
},
},
};
var IDBFS = {
dbs: {},
indexedDB: function() {
if (typeof indexedDB !== 'undefined') return indexedDB;
var ret = null;
if (typeof window === 'object')
ret =
window.indexedDB ||
window.mozIndexedDB ||
window.webkitIndexedDB ||
window.msIndexedDB;
assert(ret, 'IDBFS used, but indexedDB not supported');
return ret;
},
DB_VERSION: 21,
DB_STORE_NAME: 'FILE_DATA',
mount: function(mount) {
// reuse all of the core MEMFS functionality
return MEMFS.mount.apply(null, arguments);
},
syncfs: function(mount, populate, callback) {
IDBFS.getLocalSet(mount, function(err, local) {
if (err) return callback(err);
IDBFS.getRemoteSet(mount, function(err, remote) {
if (err) return callback(err);
var src = populate ? remote : local;
var dst = populate ? local : remote;
IDBFS.reconcile(src, dst, callback);
});
});
},
getDB: function(name, callback) {
// check the cache first
var db = IDBFS.dbs[name];
if (db) {
return callback(null, db);
}
var req;
try {
req = IDBFS.indexedDB().open(name, IDBFS.DB_VERSION);
} catch (e) {
return callback(e);
}
req.onupgradeneeded = function(e) {
var db = e.target.result;
var transaction = e.target.transaction;
var fileStore;
if (db.objectStoreNames.contains(IDBFS.DB_STORE_NAME)) {
fileStore = transaction.objectStore(IDBFS.DB_STORE_NAME);
} else {
fileStore = db.createObjectStore(IDBFS.DB_STORE_NAME);
}
fileStore.createIndex('timestamp', 'timestamp', { unique: false });
};
req.onsuccess = function() {
db = req.result;
// add to the cache
IDBFS.dbs[name] = db;
callback(null, db);
};
req.onerror = function() {
callback(this.error);
};
},
getLocalSet: function(mount, callback) {
var entries = {};
function isRealDir(p) {
return p !== '.' && p !== '..';
}
function toAbsolute(root) {
return function(p) {
return PATH.join2(root, p);
};
}
var check = FS.readdir(mount.mountpoint)
.filter(isRealDir)
.map(toAbsolute(mount.mountpoint));
while (check.length) {
var path = check.pop();
var stat;
try {
stat = FS.stat(path);
} catch (e) {
return callback(e);
}
if (FS.isDir(stat.mode)) {
check.push.apply(
check,
FS.readdir(path)
.filter(isRealDir)
.map(toAbsolute(path))
);
}
entries[path] = { timestamp: stat.mtime };
}
return callback(null, { type: 'local', entries: entries });
},
getRemoteSet: function(mount, callback) {
var entries = {};
IDBFS.getDB(mount.mountpoint, function(err, db) {
if (err) return callback(err);
var transaction = db.transaction([IDBFS.DB_STORE_NAME], 'readonly');
transaction.onerror = function() {
callback(this.error);
};
var store = transaction.objectStore(IDBFS.DB_STORE_NAME);
var index = store.index('timestamp');
index.openKeyCursor().onsuccess = function(event) {
var cursor = event.target.result;
if (!cursor) {
return callback(null, { type: 'remote', db: db, entries: entries });
}
entries[cursor.primaryKey] = { timestamp: cursor.key };
cursor.continue();
};
});
},
loadLocalEntry: function(path, callback) {
var stat, node;
try {
var lookup = FS.lookupPath(path);
node = lookup.node;
stat = FS.stat(path);
} catch (e) {
return callback(e);
}
if (FS.isDir(stat.mode)) {
return callback(null, { timestamp: stat.mtime, mode: stat.mode });
} else if (FS.isFile(stat.mode)) {
// Performance consideration: storing a normal JavaScript array to a IndexedDB is much slower than storing a typed array.
// Therefore always convert the file contents to a typed array first before writing the data to IndexedDB.
node.contents = MEMFS.getFileDataAsTypedArray(node);
return callback(null, {
timestamp: stat.mtime,
mode: stat.mode,
contents: node.contents,
});
} else {
return callback(new Error('node type not supported'));
}
},
storeLocalEntry: function(path, entry, callback) {
try {
if (FS.isDir(entry.mode)) {
FS.mkdir(path, entry.mode);
} else if (FS.isFile(entry.mode)) {
FS.writeFile(path, entry.contents, {
encoding: 'binary',
canOwn: true,
});
} else {
return callback(new Error('node type not supported'));
}
FS.chmod(path, entry.mode);
FS.utime(path, entry.timestamp, entry.timestamp);
} catch (e) {
return callback(e);
}
callback(null);
},
removeLocalEntry: function(path, callback) {
try {
var lookup = FS.lookupPath(path);
var stat = FS.stat(path);
if (FS.isDir(stat.mode)) {
FS.rmdir(path);
} else if (FS.isFile(stat.mode)) {
FS.unlink(path);
}
} catch (e) {
return callback(e);
}
callback(null);
},
loadRemoteEntry: function(store, path, callback) {
var req = store.get(path);
req.onsuccess = function(event) {
callback(null, event.target.result);
};
req.onerror = function() {
callback(this.error);
};
},
storeRemoteEntry: function(store, path, entry, callback) {
var req = store.put(entry, path);
req.onsuccess = function() {
callback(null);
};
req.onerror = function() {
callback(this.error);
};
},
removeRemoteEntry: function(store, path, callback) {
var req = store.delete(path);
req.onsuccess = function() {
callback(null);
};
req.onerror = function() {
callback(this.error);
};
},
reconcile: function(src, dst, callback) {
var total = 0;
var create = [];
Object.keys(src.entries).forEach(function(key) {
var e = src.entries[key];
var e2 = dst.entries[key];
if (!e2 || e.timestamp > e2.timestamp) {
create.push(key);
total++;
}
});
var remove = [];
Object.keys(dst.entries).forEach(function(key) {
var e = dst.entries[key];
var e2 = src.entries[key];
if (!e2) {
remove.push(key);
total++;
}
});
if (!total) {
return callback(null);
}
var errored = false;
var completed = 0;
var db = src.type === 'remote' ? src.db : dst.db;
var transaction = db.transaction([IDBFS.DB_STORE_NAME], 'readwrite');
var store = transaction.objectStore(IDBFS.DB_STORE_NAME);
function done(err) {
if (err) {
if (!done.errored) {
done.errored = true;
return callback(err);
}
return;
}
if (++completed >= total) {
return callback(null);
}
}
transaction.onerror = function() {
done(this.error);
};
// sort paths in ascending order so directory entries are created
// before the files inside them
create.sort().forEach(function(path) {
if (dst.type === 'local') {
IDBFS.loadRemoteEntry(store, path, function(err, entry) {
if (err) return done(err);
IDBFS.storeLocalEntry(path, entry, done);
});
} else {
IDBFS.loadLocalEntry(path, function(err, entry) {
if (err) return done(err);
IDBFS.storeRemoteEntry(store, path, entry, done);
});
}
});
// sort paths in descending order so files are deleted before their
// parent directories
remove
.sort()
.reverse()
.forEach(function(path) {
if (dst.type === 'local') {
IDBFS.removeLocalEntry(path, done);
} else {
IDBFS.removeRemoteEntry(store, path, done);
}
});
},
};
var NODEFS = {
isWindows: false,
staticInit: function() {
NODEFS.isWindows = !!process.platform.match(/^win/);
},
mount: function(mount) {
assert(ENVIRONMENT_IS_NODE);
return NODEFS.createNode(null, '/', NODEFS.getMode(mount.opts.root), 0);
},
createNode: function(parent, name, mode, dev) {
if (!FS.isDir(mode) && !FS.isFile(mode) && !FS.isLink(mode)) {
throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
}
var node = FS.createNode(parent, name, mode);
node.node_ops = NODEFS.node_ops;
node.stream_ops = NODEFS.stream_ops;
return node;
},
getMode: function(path) {
var stat;
try {
stat = fs.lstatSync(path);
if (NODEFS.isWindows) {
// 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) {
if (length === 0) return 0; // node errors on 0 length reads
// 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);
}
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
/*
// Disabled, see https://github.com/kripken/emscripten/issues/2770
stream = FS.getStreamFromPtr(stream);
if (stream.stream_ops.flush) {
stream.stream_ops.flush(stream);
}
*/
}
var FS = {
root: null,
mounts: [],
devices: [null],
streams: [],
nextInode: 1,
nameTable: null,
currentPath: '/',
initialized: false,
ignorePermissions: true,
trackingDelegate: {},
tracking: { openFlags: { READ: 1, WRITE: 2 } },
ErrnoError: null,
genericErrors: {},
handleFSError: function(e) {
if (!(e instanceof FS.ErrnoError)) throw e + ' : ' + stackTrace();
return ___setErrNo(e.errno);
},
lookupPath: function(path, opts) {
path = PATH.resolve(FS.cwd(), path);
opts = opts || {};
if (!path) return { path: '', node: null };
var defaults = {
follow_mount: true,
recurse_count: 0,
};
for (var key in defaults) {
if (opts[key] === undefined) {
opts[key] = defaults[key];
}
}
if (opts.recurse_count > 8) {
// 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)) {
if (!islast || (islast && opts.follow_mount)) {
current = current.mounted.root;
}
}
// 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, parent);
}
var hash = FS.hashName(parent.id, name);
for (var node = FS.nameTable[hash]; node; node = node.name_next) {
var nodeName = node.name;
if (node.parent.id === parent.id && nodeName === name) {
return node;
}
}
// 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) {
if (!parent) {
parent = this; // root node sets parent to itself
}
this.parent = parent;
this.mount = parent.mount;
this.mounted = null;
this.id = FS.nextInode++;
this.name = name;
this.mode = mode;
this.node_ops = {};
this.stream_ops = {};
this.rdev = rdev;
};
FS.FSNode.prototype = {};
// compatibility
var readMode = 292 | 73;
var writeMode = 146;
// 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);
},
},
});
}
var node = new FS.FSNode(parent, name, mode, rdev);
FS.hashAddNode(node);
return node;
},
destroyNode: function(node) {
FS.hashRemoveNode(node);
},
isRoot: function(node) {
return node === node.parent;
},
isMountpoint: function(node) {
return !!node.mounted;
},
isFile: function(mode) {
return (mode & 61440) === 32768;
},
isDir: function(mode) {
return (mode & 61440) === 16384;
},
isLink: function(mode) {
return (mode & 61440) === 40960;
},
isChrdev: function(mode) {
return (mode & 61440) === 8192;
},
isBlkdev: function(mode) {
return (mode & 61440) === 24576;
},
isFIFO: function(mode) {
return (mode & 61440) === 4096;
},
isSocket: function(mode) {
return (mode & 49152) === 49152;
},
flagModes: {
r: 0,
rs: 1052672,
'r+': 2,
w: 577,
wx: 705,
xw: 705,
'w+': 578,
'wx+': 706,
'xw+': 706,
a: 1089,
ax: 1217,
xa: 1217,
'a+': 1090,
'ax+': 1218,
'xa+': 1218,
},
modeStringToFlags: function(str) {
var flags = FS.flagModes[str];
if (typeof flags === 'undefined') {
throw new Error('Unknown file open mode: ' + str);
}
return flags;
},
flagsToPermissionString: function(flag) {
var 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) {
var err = FS.nodePermissions(dir, 'x');
if (err) return err;
if (!dir.node_ops.lookup) return ERRNO_CODES.EACCES;
return 0;
},
mayCreate: function(dir, name) {
try {
var node = FS.lookupNode(dir, name);
return ERRNO_CODES.EEXIST;
} catch (e) {}
return FS.nodePermissions(dir, 'wx');
},
mayDelete: function(dir, name, isdir) {
var node;
try {
node = FS.lookupNode(dir, name);
} catch (e) {
return e.errno;
}
var err = FS.nodePermissions(dir, 'wx');
if (err) {
return err;
}
if (isdir) {
if (!FS.isDir(node.mode)) {
return ERRNO_CODES.ENOTDIR;
}
if (FS.isRoot(node) || FS.getPath(node) === FS.cwd()) {
return ERRNO_CODES.EBUSY;
}
} else {
if (FS.isDir(node.mode)) {
return ERRNO_CODES.EISDIR;
}
}
return 0;
},
mayOpen: function(node, flags) {
if (!node) {
return ERRNO_CODES.ENOENT;
}
if (FS.isLink(node.mode)) {
return ERRNO_CODES.ELOOP;
} else if (FS.isDir(node.mode)) {
if (
(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 || 0;
fd_end = fd_end || FS.MAX_OPEN_FDS;
for (var fd = fd_start; fd <= fd_end; fd++) {
if (!FS.streams[fd]) {
return fd;
}
}
throw new FS.ErrnoError(ERRNO_CODES.EMFILE);
},
getStream: function(fd) {
return FS.streams[fd];
},
createStream: function(stream, fd_start, fd_end) {
if (!FS.FSStream) {
FS.FSStream = function() {};
FS.FSStream.prototype = {};
// 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;
},
},
});
}
// clone it, so we can return an instance of FSStream
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;
},
getStreamFromPtr: function(ptr) {
return FS.streams[ptr - 1];
},
getPtrForStream: function(stream) {
return stream ? stream.fd + 1 : 0;
},
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];
},
getMounts: function(mount) {
var mounts = [];
var check = [mount];
while (check.length) {
var m = check.pop();
mounts.push(m);
check.push.apply(check, m.mounts);
}
return mounts;
},
syncfs: function(populate, callback) {
if (typeof populate === 'function') {
callback = populate;
populate = false;
}
var mounts = FS.getMounts(FS.root.mount);
var completed = 0;
function done(err) {
if (err) {
if (!done.errored) {
done.errored = true;
return callback(err);
}
return;
}
if (++completed >= mounts.length) {
callback(null);
}
}
// sync all mounts
mounts.forEach(function(mount) {
if (!mount.type.syncfs) {
return done(null);
}
mount.type.syncfs(mount, populate, done);
});
},
mount: function(type, opts, mountpoint) {
var root = mountpoint === '/';
var pseudo = !mountpoint;
var node;
if (root && FS.root) {
throw new FS.ErrnoError(ERRNO_CODES.EBUSY);
} else if (!root && !pseudo) {
var lookup = FS.lookupPath(mountpoint, { follow_mount: false });
mountpoint = lookup.path; // use the absolute path
node = lookup.node;
if (FS.isMountpoint(node)) {
throw new FS.ErrnoError(ERRNO_CODES.EBUSY);
}
if (!FS.isDir(node.mode)) {
throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR);
}
}
var mount = {
type: type,
opts: opts,
mountpoint: mountpoint,
mounts: [],
};
// create a root node for the fs
var mountRoot = type.mount(mount);
mountRoot.mount = mount;
mount.root = mountRoot;
if (root) {
FS.root = mountRoot;
} else if (node) {
// set as a mountpoint
node.mounted = mount;
// add the new mount to the current mount's children
if (node.mount) {
node.mount.mounts.push(mount);
}
}
return mountRoot;
},
unmount: function(mountpoint) {
var lookup = FS.lookupPath(mountpoint, { follow_mount: false });
if (!FS.isMountpoint(lookup.node)) {
throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
}
// destroy the nodes for this mount, and all its child mounts
var node = lookup.node;
var mount = node.mounted;
var mounts = FS.getMounts(mount);
Object.keys(FS.nameTable).forEach(function(hash) {
var current = FS.nameTable[hash];
while (current) {
var next = current.name_next;
if (mounts.indexOf(current.mount) !== -1) {
FS.destroyNode(current);
}
current = next;
}
});
// no longer a mountpoint
node.mounted = null;
// remove this mount from the child mounts
var idx = node.mount.mounts.indexOf(mount);
assert(idx !== -1);
node.mount.mounts.splice(idx, 1);
},
lookup: function(parent, name) {
return parent.node_ops.lookup(parent, name);
},
mknod: function(path, mode, dev) {
var lookup = FS.lookupPath(path, { parent: true });
var parent = lookup.node;
var name = PATH.basename(path);
if (!name || name === '.' || name === '..') {
throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
}
var err = FS.mayCreate(parent, name);
if (err) {
throw new FS.ErrnoError(err);
}
if (!parent.node_ops.mknod) {
throw new FS.ErrnoError(ERRNO_CODES.EPERM);
}
return parent.node_ops.mknod(parent, name, mode, dev);
},
create: function(path, mode) {
mode = mode !== undefined ? mode : 438 /* 0666 */;
mode &= 4095;
mode |= 32768;
return FS.mknod(path, mode, 0);
},
mkdir: function(path, mode) {
mode = mode !== undefined ? mode : 511 /* 0777 */;
mode &= 511 | 512;
mode |= 16384;
return FS.mknod(path, mode, 0);
},
mkdev: function(path, mode, dev) {
if (typeof dev === 'undefined') {
dev = mode;
mode = 438 /* 0666 */;
}
mode |= 8192;
return FS.mknod(path, mode, dev);
},
symlink: function(oldpath, newpath) {
if (!PATH.resolve(oldpath)) {
throw new FS.ErrnoError(ERRNO_CODES.ENOENT);
}
var lookup = FS.lookupPath(newpath, { parent: true });
var parent = lookup.node;
if (!parent) {
throw new FS.ErrnoError(ERRNO_CODES.ENOENT);
}
var newname = PATH.basename(newpath);
var err = FS.mayCreate(parent, newname);
if (err) {
throw new FS.ErrnoError(err);
}
if (!parent.node_ops.symlink) {
throw new FS.ErrnoError(ERRNO_CODES.EPERM);
}
return parent.node_ops.symlink(parent, newname, oldpath);
},
rename: function(old_path, new_path) {
var old_dirname = PATH.dirname(old_path);
var new_dirname = PATH.dirname(new_path);
var old_name = PATH.basename(old_path);
var new_name = PATH.basename(new_path);
// 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);
}
if (!old_dir || !new_dir) throw new FS.ErrnoError(ERRNO_CODES.ENOENT);
// 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);
}
}
try {
if (FS.trackingDelegate['willMovePath']) {
FS.trackingDelegate['willMovePath'](old_path, new_path);
}
} catch (e) {
console.log(
"FS.trackingDelegate['willMovePath']('" +
old_path +
"', '" +
new_path +
"') threw an exception: " +
e.message
);
}
// 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);
}
try {
if (FS.trackingDelegate['onMovePath'])
FS.trackingDelegate['onMovePath'](old_path, new_path);
} catch (e) {
console.log(
"FS.trackingDelegate['onMovePath']('" +
old_path +
"', '" +
new_path +
"') threw an exception: " +
e.message
);
}
},
rmdir: function(path) {
var lookup = FS.lookupPath(path, { parent: true });
var parent = lookup.node;
var name = PATH.basename(path);
var node = FS.lookupNode(parent, name);
var err = FS.mayDelete(parent, name, true);
if (err) {
throw new FS.ErrnoError(err);
}
if (!parent.node_ops.rmdir) {
throw new FS.ErrnoError(ERRNO_CODES.EPERM);
}
if (FS.isMountpoint(node)) {
throw new FS.ErrnoError(ERRNO_CODES.EBUSY);
}
try {
if (FS.trackingDelegate['willDeletePath']) {
FS.trackingDelegate['willDeletePath'](path);
}
} catch (e) {
console.log(
"FS.trackingDelegate['willDeletePath']('" +
path +
"') threw an exception: " +
e.message
);
}
parent.node_ops.rmdir(parent, name);
FS.destroyNode(node);
try {
if (FS.trackingDelegate['onDeletePath'])
FS.trackingDelegate['onDeletePath'](path);
} catch (e) {
console.log(
"FS.trackingDelegate['onDeletePath']('" +
path +
"') threw an exception: " +
e.message
);
}
},
readdir: function(path) {
var lookup = FS.lookupPath(path, { follow: true });
var node = lookup.node;
if (!node.node_ops.readdir) {
throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR);
}
return node.node_ops.readdir(node);
},
unlink: function(path) {
var lookup = FS.lookupPath(path, { parent: true });
var parent = lookup.node;
var name = PATH.basename(path);
var node = FS.lookupNode(parent, name);
var err = FS.mayDelete(parent, name, false);
if (err) {
// 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);
}
try {
if (FS.trackingDelegate['willDeletePath']) {
FS.trackingDelegate['willDeletePath'](path);
}
} catch (e) {
console.log(
"FS.trackingDelegate['willDeletePath']('" +
path +
"') threw an exception: " +
e.message
);
}
parent.node_ops.unlink(parent, name);
FS.destroyNode(node);
try {
if (FS.trackingDelegate['onDeletePath'])
FS.trackingDelegate['onDeletePath'](path);
} catch (e) {
console.log(
"FS.trackingDelegate['onDeletePath']('" +
path +
"') threw an exception: " +
e.message
);
}
},
readlink: function(path) {
var lookup = FS.lookupPath(path);
var link = lookup.node;
if (!link) {
throw new FS.ErrnoError(ERRNO_CODES.ENOENT);
}
if (!link.node_ops.readlink) {
throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
}
return link.node_ops.readlink(link);
},
stat: function(path, dontFollow) {
var lookup = FS.lookupPath(path, { follow: !dontFollow });
var node = lookup.node;
if (!node) {
throw new FS.ErrnoError(ERRNO_CODES.ENOENT);
}
if (!node.node_ops.getattr) {
throw new FS.ErrnoError(ERRNO_CODES.EPERM);
}
return node.node_ops.getattr(node);
},
lstat: function(path) {
return FS.stat(path, true);
},
chmod: function(path, mode, dontFollow) {
var node;
if (typeof path === 'string') {
var lookup = FS.lookupPath(path, { follow: !dontFollow });
node = lookup.node;
} else {
node = path;
}
if (!node.node_ops.setattr) {
throw new FS.ErrnoError(ERRNO_CODES.EPERM);
}
node.node_ops.setattr(node, {
mode: (mode & 4095) | (node.mode & ~4095),
timestamp: Date.now(),
});
},
lchmod: function(path, mode) {
FS.chmod(path, mode, true);
},
fchmod: function(fd, mode) {
var stream = FS.getStream(fd);
if (!stream) {
throw new FS.ErrnoError(ERRNO_CODES.EBADF);
}
FS.chmod(stream.node, mode);
},
chown: function(path, uid, gid, dontFollow) {
var node;
if (typeof path === 'string') {
var lookup = FS.lookupPath(path, { follow: !dontFollow });
node = lookup.node;
} else {
node = path;
}
if (!node.node_ops.setattr) {
throw new FS.ErrnoError(ERRNO_CODES.EPERM);
}
node.node_ops.setattr(node, {
timestamp: Date.now(),
// 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) {
if (path === '') {
throw new FS.ErrnoError(ERRNO_CODES.ENOENT);
}
flags = typeof flags === 'string' ? FS.modeStringToFlags(flags) : flags;
mode = typeof mode === 'undefined' ? 438 /* 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
var created = false;
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);
created = true;
}
}
if (!node) {
throw new FS.ErrnoError(ERRNO_CODES.ENOENT);
}
// can't truncate a device
if (FS.isChrdev(node.mode)) {
flags &= ~512;
}
// check permissions, if this is not a file we just created now (it is ok to
// create and write to a file with read-only permissions; it is read-only
// for later use)
if (!created) {
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);
}
}
try {
if (FS.trackingDelegate['onOpenFile']) {
var trackingFlags = 0;
if ((flags & 2097155) !== 1) {
trackingFlags |= FS.tracking.openFlags.READ;
}
if ((flags & 2097155) !== 0) {
trackingFlags |= FS.tracking.openFlags.WRITE;
}
FS.trackingDelegate['onOpenFile'](path, trackingFlags);
}
} catch (e) {
console.log(
"FS.trackingDelegate['onOpenFile']('" +
path +
"', flags) threw an exception: " +
e.message
);
}
return stream;
},
close: function(stream) {
try {
if (stream.stream_ops.close) {
stream.stream_ops.close(stream);
}
} catch (e) {
throw e;
} finally {
FS.closeStream(stream.fd);
}
},
llseek: function(stream, offset, whence) {
if (!stream.seekable || !stream.stream_ops.llseek) {
throw new FS.ErrnoError(ERRNO_CODES.ESPIPE);
}
stream.position = stream.stream_ops.llseek(stream, offset, whence);
stream.ungotten = [];
return stream.position;
},
read: function(stream, buffer, offset, length, position) {
if (length < 0 || position < 0) {
throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
}
if ((stream.flags & 2097155) === 1) {
throw new FS.ErrnoError(ERRNO_CODES.EBADF);
}
if (FS.isDir(stream.node.mode)) {
throw new FS.ErrnoError(ERRNO_CODES.EISDIR);
}
if (!stream.stream_ops.read) {
throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
}
var seeking = true;
if (typeof position === 'undefined') {
position = stream.position;
seeking = false;
} else if (!stream.seekable) {
throw new FS.ErrnoError(ERRNO_CODES.ESPIPE);
}
var bytesRead = stream.stream_ops.read(
stream,
buffer,
offset,
length,
position
);
if (!seeking) stream.position += bytesRead;
return bytesRead;
},
write: function(stream, buffer, offset, length, position, canOwn) {
if (length < 0 || position < 0) {
throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
}
if ((stream.flags & 2097155) === 0) {
throw new FS.ErrnoError(ERRNO_CODES.EBADF);
}
if (FS.isDir(stream.node.mode)) {
throw new FS.ErrnoError(ERRNO_CODES.EISDIR);
}
if (!stream.stream_ops.write) {
throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
}
if (stream.flags & 1024) {
// seek to the end before writing in append mode
FS.llseek(stream, 0, 2);
}
var seeking = true;
if (typeof position === 'undefined') {
position = stream.position;
seeking = false;
} else if (!stream.seekable) {
throw new FS.ErrnoError(ERRNO_CODES.ESPIPE);
}
var bytesWritten = stream.stream_ops.write(
stream,
buffer,
offset,
length,
position,
canOwn
);
if (!seeking) stream.position += bytesWritten;
try {
if (stream.path && FS.trackingDelegate['onWriteToFile'])
FS.trackingDelegate['onWriteToFile'](stream.path);
} catch (e) {
console.log(
"FS.trackingDelegate['onWriteToFile']('" +
path +
"') threw an exception: " +
e.message
);
}
return bytesWritten;
},
allocate: function(stream, offset, length) {
if (offset < 0 || length <= 0) {
throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
}
if ((stream.flags & 2097155) === 0) {
throw new FS.ErrnoError(ERRNO_CODES.EBADF);
}
if (!FS.isFile(stream.node.mode) && !FS.isDir(node.mode)) {
throw new FS.ErrnoError(ERRNO_CODES.ENODEV);
}
if (!stream.stream_ops.allocate) {
throw new FS.ErrnoError(ERRNO_CODES.EOPNOTSUPP);
}
stream.stream_ops.allocate(stream, offset, length);
},
mmap: function(stream, buffer, offset, length, position, prot, flags) {
// 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';
if (opts.encoding !== 'utf8' && opts.encoding !== 'binary') {
throw new Error('Invalid encoding type "' + opts.encoding + '"');
}
var ret;
var stream = FS.open(path, opts.flags);
var stat = FS.stat(path);
var length = stat.size;
var buf = new Uint8Array(length);
FS.read(stream, buf, 0, length, 0);
if (opts.encoding === 'utf8') {
ret = '';
var utf8 = new Runtime.UTF8Processor();
for (var i = 0; i < length; i++) {
ret += utf8.processCChar(buf[i]);
}
} else if (opts.encoding === 'binary') {
ret = buf;
}
FS.close(stream);
return ret;
},
writeFile: function(path, data, opts) {
opts = opts || {};
opts.flags = opts.flags || 'w';
opts.encoding = opts.encoding || 'utf8';
if (opts.encoding !== 'utf8' && opts.encoding !== 'binary') {
throw new Error('Invalid encoding type "' + opts.encoding + '"');
}
var stream = FS.open(path, opts.flags, opts.mode);
if (opts.encoding === 'utf8') {
var utf8 = new Runtime.UTF8Processor();
var buf = new Uint8Array(utf8.processJSString(data));
FS.write(stream, buf, 0, buf.length, 0, opts.canOwn);
} else if (opts.encoding === 'binary') {
FS.write(stream, data, 0, data.length, 0, opts.canOwn);
}
FS.close(stream);
},
cwd: function() {
return FS.currentPath;
},
chdir: function(path) {
var lookup = FS.lookupPath(path, { follow: true });
if (!FS.isDir(lookup.node.mode)) {
throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR);
}
var err = FS.nodePermissions(lookup.node, 'x');
if (err) {
throw new FS.ErrnoError(err);
}
FS.currentPath = lookup.path;
},
createDefaultDirectories: function() {
FS.mkdir('/tmp');
FS.mkdir('/home');
FS.mkdir('/home/web_user');
},
createDefaultDevices: function() {
// 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));
// setup /dev/[u]random
var random_device;
if (typeof crypto !== 'undefined') {
// for modern web browsers
var randomBuffer = new Uint8Array(1);
random_device = function() {
crypto.getRandomValues(randomBuffer);
return randomBuffer[0];
};
} else if (ENVIRONMENT_IS_NODE) {
// for nodejs
random_device = function() {
return require('crypto').randomBytes(1)[0];
};
} else {
// default for ES5 platforms
random_device = function() {
return (Math.random() * 256) | 0;
};
}
FS.createDevice('/dev', 'random', random_device);
FS.createDevice('/dev', 'urandom', random_device);
// 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] = FS.getPtrForStream(stdin);
assert(stdin.fd === 0, 'invalid handle for stdin (' + stdin.fd + ')');
var stdout = FS.open('/dev/stdout', 'w');
HEAP32[_stdout >> 2] = FS.getPtrForStream(stdout);
assert(stdout.fd === 1, 'invalid handle for stdout (' + stdout.fd + ')');
var stderr = FS.open('/dev/stderr', 'w');
HEAP32[_stderr >> 2] = FS.getPtrForStream(stderr);
assert(stderr.fd === 2, 'invalid handle for stderr (' + stderr.fd + ')');
},
ensureErrnoError: function() {
if (FS.ErrnoError) return;
FS.ErrnoError = function ErrnoError(errno, node) {
this.node = node;
this.setErrno = function(errno) {
this.errno = errno;
for (var key in ERRNO_CODES) {
if (ERRNO_CODES[key] === errno) {
this.code = key;
break;
}
}
};
this.setErrno(errno);
this.message = ERRNO_MESSAGES[errno];
};
FS.ErrnoError.prototype = new Error();
FS.ErrnoError.prototype.constructor = FS.ErrnoError;
// 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.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);
obj.usedBytes = obj.contents.length;
} catch (e) {
success = false;
}
} else {
throw new Error('Cannot load without read() or XMLHttpRequest.');
}
if (!success) ___setErrNo(ERRNO_CODES.EIO);
return success;
},
createLazyFile: function(parent, name, url, canRead, canWrite) {
// 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 = (idx / this.chunkSize) | 0;
return this.getter(chunkNum)[chunkOffset];
};
LazyUint8Array.prototype.setDataGetter = function LazyUint8Array_setDataGetter(
getter
) {
this.getter = getter;
};
LazyUint8Array.prototype.cacheLength = function LazyUint8Array_cacheLength() {
// 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;
};
if (typeof XMLHttpRequest !== 'undefined') {
if (!ENVIRONMENT_IS_WORKER)
throw 'Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc';
var lazyArray = new LazyUint8Array();
Object.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;
}
// Add a function that defers querying the file size until it is asked the first time.
Object.defineProperty(node, 'usedBytes', {
get: function() {
return this.contents.length;
},
});
// 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;
},
};
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) {
return ''; // an invalid portion invalidates the whole thing
}
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('/');
},
};
function _emscripten_set_main_loop_timing(mode, value) {
Browser.mainLoop.timingMode = mode;
Browser.mainLoop.timingValue = value;
if (!Browser.mainLoop.func) {
return 1; // Return non-zero on failure, can't set timing mode when there is no main loop.
}
if (mode == 0 /*EM_TIMING_SETTIMEOUT*/) {
Browser.mainLoop.scheduler = function Browser_mainLoop_scheduler() {
setTimeout(Browser.mainLoop.runner, value); // doing this each time means that on exception, we stop
};
Browser.mainLoop.method = 'timeout';
} else if (mode == 1 /*EM_TIMING_RAF*/) {
Browser.mainLoop.scheduler = function Browser_mainLoop_scheduler() {
Browser.requestAnimationFrame(Browser.mainLoop.runner);
};
Browser.mainLoop.method = 'rAF';
}
return 0;
}
function _emscripten_set_main_loop(func, fps, simulateInfiniteLoop, arg) {
Module['noExitRuntime'] = true;
assert(
!Browser.mainLoop.func,
'emscripten_set_main_loop: there can only be one main loop function at once: call emscripten_cancel_main_loop to cancel the previous one before setting a new one with different parameters.'
);
Browser.mainLoop.func = func;
Browser.mainLoop.arg = arg;
var thisMainLoopId = Browser.mainLoop.currentlyRunningMainloop;
Browser.mainLoop.runner = function Browser_mainLoop_runner() {
if (ABORT) return;
if (Browser.mainLoop.queue.length > 0) {
var start = Date.now();
var blocker = Browser.mainLoop.queue.shift();
blocker.func(blocker.arg);
if (Browser.mainLoop.remainingBlockers) {
var remaining = Browser.mainLoop.remainingBlockers;
var next = remaining % 1 == 0 ? remaining - 1 : Math.floor(remaining);
if (blocker.counted) {
Browser.mainLoop.remainingBlockers = next;
} else {
// not counted, but move the progress along a tiny bit
next = next + 0.5; // do not steal all the next one's progress
Browser.mainLoop.remainingBlockers = (8 * remaining + next) / 9;
}
}
console.log(
'main loop blocker "' +
blocker.name +
'" took ' +
(Date.now() - start) +
' ms'
); //, left: ' + Browser.mainLoop.remainingBlockers);
Browser.mainLoop.updateStatus();
setTimeout(Browser.mainLoop.runner, 0);
return;
}
// catch pauses from non-main loop sources
if (thisMainLoopId < Browser.mainLoop.currentlyRunningMainloop) return;
// Implement very basic swap interval control
Browser.mainLoop.currentFrameNumber =
(Browser.mainLoop.currentFrameNumber + 1) | 0;
if (
Browser.mainLoop.timingMode == 1 /*EM_TIMING_RAF*/ &&
Browser.mainLoop.timingValue > 1 &&
Browser.mainLoop.currentFrameNumber % Browser.mainLoop.timingValue != 0
) {
// Not the scheduled time to render this frame - skip.
Browser.mainLoop.scheduler();
return;
}
// Signal GL rendering layer that processing of a new frame is about to start. This helps it optimize
// VBO double-buffering and reduce GPU stalls.
if (Browser.mainLoop.method === 'timeout' && Module.ctx) {
Module.printErr(
'Looks like you are rendering without using requestAnimationFrame for the main loop. You should use 0 for the frame rate in emscripten_set_main_loop in order to use requestAnimationFrame, as that can greatly improve your frame rates!'
);
Browser.mainLoop.method = ''; // just warn once per call to set main loop
}
Browser.mainLoop.runIter(function() {
if (typeof arg !== 'undefined') {
Runtime.dynCall('vi', func, [arg]);
} else {
Runtime.dynCall('v', func);
}
});
// catch pauses from the main loop itself
if (thisMainLoopId < Browser.mainLoop.currentlyRunningMainloop) return;
// Queue new audio data. This is important to be right after the main loop invocation, so that we will immediately be able
// to queue the newest produced audio samples.
// TODO: Consider adding pre- and post- rAF callbacks so that GL.newRenderingFrameStarted() and SDL.audio.queueNewAudioData()
// do not need to be hardcoded into this function, but can be more generic.
if (typeof SDL === 'object' && SDL.audio && SDL.audio.queueNewAudioData)
SDL.audio.queueNewAudioData();
Browser.mainLoop.scheduler();
};
if (fps && fps > 0)
_emscripten_set_main_loop_timing(0 /*EM_TIMING_SETTIMEOUT*/, 1000.0 / fps);
else _emscripten_set_main_loop_timing(1 /*EM_TIMING_RAF*/, 1); // Do rAF by rendering each frame (no decimating)
Browser.mainLoop.scheduler();
if (simulateInfiniteLoop) {
throw 'SimulateInfiniteLoop';
}
}
var Browser = {
mainLoop: {
scheduler: null,
method: '',
currentlyRunningMainloop: 0,
func: null,
arg: 0,
timingMode: 0,
timingValue: 0,
currentFrameNumber: 0,
queue: [],
pause: function() {
Browser.mainLoop.scheduler = null;
Browser.mainLoop.currentlyRunningMainloop++; // Incrementing this signals the previous main loop that it's now become old, and it must return.
},
resume: function() {
Browser.mainLoop.currentlyRunningMainloop++;
var timingMode = Browser.mainLoop.timingMode;
var timingValue = Browser.mainLoop.timingValue;
var func = Browser.mainLoop.func;
Browser.mainLoop.func = null;
_emscripten_set_main_loop(func, 0, false, Browser.mainLoop.arg);
_emscripten_set_main_loop_timing(timingMode, timingValue);
},
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']('');
}
}
},
runIter: function(func) {
if (ABORT) return;
if (Module['preMainLoop']) {
var preRet = Module['preMainLoop']();
if (preRet === false) {
return; // |return false| skips a frame
}
}
try {
func();
} catch (e) {
if (e instanceof ExitStatus) {
return;
} else {
if (e && typeof e === 'object' && e.stack)
Module.printErr('exception thrown: ' + [e, e.stack]);
throw e;
}
}
if (Module['postMainLoop']) Module['postMainLoop']();
},
},
isFullScreen: false,
pointerLock: false,
moduleContextCreatedCallbacks: [],
workers: [],
init: function() {
if (!Module['preloadPlugins']) Module['preloadPlugins'] = []; // needs to exist even in workers
if (Browser.initted) 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);
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!
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'];
function pointerLockChange() {
Browser.pointerLock =
document['pointerLockElement'] === canvas ||
document['mozPointerLockElement'] === canvas ||
document['webkitPointerLockElement'] === canvas ||
document['msPointerLockElement'] === canvas;
}
if (canvas) {
// forced aspect ratio can be enabled by defining 'forcedAspectRatio' on Module
// Module['forcedAspectRatio'] = 4 / 3;
canvas.requestPointerLock =
canvas['requestPointerLock'] ||
canvas['mozRequestPointerLock'] ||
canvas['webkitRequestPointerLock'] ||
canvas['msRequestPointerLock'] ||
function() {};
canvas.exitPointerLock =
document['exitPointerLock'] ||
document['mozExitPointerLock'] ||
document['webkitExitPointerLock'] ||
document['msExitPointerLock'] ||
function() {}; // no-op if function does not exist
canvas.exitPointerLock = canvas.exitPointerLock.bind(document);
document.addEventListener('pointerlockchange', pointerLockChange, false);
document.addEventListener(
'mozpointerlockchange',
pointerLockChange,
false
);
document.addEventListener(
'webkitpointerlockchange',
pointerLockChange,
false
);
document.addEventListener(
'mspointerlockchange',
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
) {
if (useWebGL && Module.ctx && canvas == Module.canvas) return Module.ctx; // no need to recreate GL context if it's already been created for this canvas.
var ctx;
var contextHandle;
if (useWebGL) {
// For GLES2/desktop GL compatibility, adjust a few defaults to be different to WebGL defaults, so that they align better with the desktop defaults.
var contextAttributes = {
antialias: false,
alpha: false,
};
if (webGLContextAttributes) {
for (var attribute in webGLContextAttributes) {
contextAttributes[attribute] = webGLContextAttributes[attribute];
}
}
contextHandle = GL.createContext(canvas, contextAttributes);
if (contextHandle) {
ctx = GL.getContext(contextHandle).GLctx;
}
// Set the background of the WebGL canvas to black
canvas.style.backgroundColor = 'black';
} else {
ctx = canvas.getContext('2d');
}
if (!ctx) return null;
if (setInModule) {
if (!useWebGL)
assert(
typeof GLctx === 'undefined',
'cannot set in module if GLctx is used, but we are a non-GL context that would replace it'
);
Module.ctx = ctx;
if (useWebGL) GL.makeContextCurrent(contextHandle);
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;
var canvasContainer = canvas.parentNode;
if (
(document['webkitFullScreenElement'] ||
document['webkitFullscreenElement'] ||
document['mozFullScreenElement'] ||
document['mozFullscreenElement'] ||
document['fullScreenElement'] ||
document['fullscreenElement'] ||
document['msFullScreenElement'] ||
document['msFullscreenElement'] ||
document['webkitCurrentFullScreenElement']) === canvasContainer
) {
canvas.cancelFullScreen =
document['cancelFullScreen'] ||
document['mozCancelFullScreen'] ||
document['webkitCancelFullScreen'] ||
document['msExitFullscreen'] ||
document['exitFullscreen'] ||
function() {};
canvas.cancelFullScreen = canvas.cancelFullScreen.bind(document);
if (Browser.lockPointer) canvas.requestPointerLock();
Browser.isFullScreen = true;
if (Browser.resizeCanvas) Browser.setFullScreenCanvasSize();
} else {
// remove the full screen specific parent of the canvas again to restore the HTML structure from before going full screen
canvasContainer.parentNode.insertBefore(canvas, canvasContainer);
canvasContainer.parentNode.removeChild(canvasContainer);
if (Browser.resizeCanvas) Browser.setWindowedCanvasSize();
}
if (Module['onFullScreen']) Module['onFullScreen'](Browser.isFullScreen);
Browser.updateCanvasDimensions(canvas);
}
if (!Browser.fullScreenHandlersInstalled) {
Browser.fullScreenHandlersInstalled = true;
document.addEventListener('fullscreenchange', fullScreenChange, false);
document.addEventListener('mozfullscreenchange', fullScreenChange, false);
document.addEventListener(
'webkitfullscreenchange',
fullScreenChange,
false
);
document.addEventListener('MSFullscreenChange', fullScreenChange, false);
}
// create a new parent to ensure the canvas has no siblings. this allows browsers to optimize full screen performance when its parent is the full screen root
var canvasContainer = document.createElement('div');
canvas.parentNode.insertBefore(canvasContainer, canvas);
canvasContainer.appendChild(canvas);
// use parent of canvas as full screen root to allow aspect ratio correction (Firefox stretches the root to screen size)
canvasContainer.requestFullScreen =
canvasContainer['requestFullScreen'] ||
canvasContainer['mozRequestFullScreen'] ||
canvasContainer['msRequestFullscreen'] ||
(canvasContainer['webkitRequestFullScreen']
? function() {
canvasContainer['webkitRequestFullScreen'](
Element['ALLOW_KEYBOARD_INPUT']
);
}
: null);
canvasContainer.requestFullScreen();
},
nextRAF: 0,
fakeRequestAnimationFrame: function(func) {
// try to keep 60fps between calls to here
var now = Date.now();
if (Browser.nextRAF === 0) {
Browser.nextRAF = now + 1000 / 60;
} else {
while (now + 2 >= Browser.nextRAF) {
// fudge a little, to avoid timer jitter causing us to do lots of delay:0
Browser.nextRAF += 1000 / 60;
}
}
var delay = Math.max(Browser.nextRAF - now, 0);
setTimeout(func, delay);
},
requestAnimationFrame: function requestAnimationFrame(func) {
if (typeof window === 'undefined') {
// Provide fallback to setTimeout if window is undefined (e.g. in Node.js)
Browser.fakeRequestAnimationFrame(func);
} else {
if (!window.requestAnimationFrame) {
window.requestAnimationFrame =
window['requestAnimationFrame'] ||
window['mozRequestAnimationFrame'] ||
window['webkitRequestAnimationFrame'] ||
window['msRequestAnimationFrame'] ||
window['oRequestAnimationFrame'] ||
Browser.fakeRequestAnimationFrame;
}
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) {
Module['noExitRuntime'] = true;
return setTimeout(function() {
if (!ABORT) func();
}, timeout);
},
safeSetInterval: function(func, timeout) {
Module['noExitRuntime'] = true;
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
);
},
getMouseWheelDelta: function(event) {
var delta = 0;
switch (event.type) {
case 'DOMMouseScroll':
delta = event.detail;
break;
case 'mousewheel':
delta = event.wheelDelta;
break;
case 'wheel':
delta = event['deltaY'];
break;
default:
throw 'unrecognized mouse wheel event: ' + event.type;
}
return delta;
},
mouseX: 0,
mouseY: 0,
mouseMovementX: 0,
mouseMovementY: 0,
touches: {},
lastTouches: {},
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 cw = Module['canvas'].width;
var ch = Module['canvas'].height;
// 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 (
event.type === 'touchstart' ||
event.type === 'touchend' ||
event.type === 'touchmove'
) {
var touch = event.touch;
if (touch === undefined) {
return; // the "touch" property is only defined in SDL
}
var adjustedX = touch.pageX - (scrollX + rect.left);
var adjustedY = touch.pageY - (scrollY + rect.top);
adjustedX = adjustedX * (cw / rect.width);
adjustedY = adjustedY * (ch / rect.height);
var coords = { x: adjustedX, y: adjustedY };
if (event.type === 'touchstart') {
Browser.lastTouches[touch.identifier] = coords;
Browser.touches[touch.identifier] = coords;
} else if (event.type === 'touchend' || event.type === 'touchmove') {
Browser.lastTouches[touch.identifier] =
Browser.touches[touch.identifier];
Browser.touches[touch.identifier] = { x: adjustedX, y: adjustedY };
}
return;
}
var x = event.pageX - (scrollX + rect.left);
var 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.
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'];
Browser.updateCanvasDimensions(canvas, width, height);
if (!noUpdates) Browser.updateResizeListeners();
},
windowedWidth: 0,
windowedHeight: 0,
setFullScreenCanvasSize: function() {
// 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() {
// 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();
},
updateCanvasDimensions: function(canvas, wNative, hNative) {
if (wNative && hNative) {
canvas.widthNative = wNative;
canvas.heightNative = hNative;
} else {
wNative = canvas.widthNative;
hNative = canvas.heightNative;
}
var w = wNative;
var h = hNative;
if (Module['forcedAspectRatio'] && Module['forcedAspectRatio'] > 0) {
if (w / h < Module['forcedAspectRatio']) {
w = Math.round(h * Module['forcedAspectRatio']);
} else {
h = Math.round(w / Module['forcedAspectRatio']);
}
}
if (
(document['webkitFullScreenElement'] ||
document['webkitFullscreenElement'] ||
document['mozFullScreenElement'] ||
document['mozFullscreenElement'] ||
document['fullScreenElement'] ||
document['fullscreenElement'] ||
document['msFullScreenElement'] ||
document['msFullscreenElement'] ||
document['webkitCurrentFullScreenElement']) === canvas.parentNode &&
typeof screen != 'undefined'
) {
var factor = Math.min(screen.width / w, screen.height / h);
w = Math.round(w * factor);
h = Math.round(h * factor);
}
if (Browser.resizeCanvas) {
if (canvas.width != w) canvas.width = w;
if (canvas.height != h) canvas.height = h;
if (typeof canvas.style != 'undefined') {
canvas.style.removeProperty('width');
canvas.style.removeProperty('height');
}
} else {
if (canvas.width != wNative) canvas.width = wNative;
if (canvas.height != hNative) canvas.height = hNative;
if (typeof canvas.style != 'undefined') {
if (w != wNative || h != hNative) {
canvas.style.setProperty('width', w + 'px', 'important');
canvas.style.setProperty('height', h + 'px', 'important');
} else {
canvas.style.removeProperty('width');
canvas.style.removeProperty('height');
}
}
}
},
wgetRequests: {},
nextWgetRequestHandle: 0,
getNextWgetRequestHandle: function() {
var handle = Browser.nextWgetRequestHandle;
Browser.nextWgetRequestHandle++;
return handle;
},
};
function _time(ptr) {
var ret = (Date.now() / 1000) | 0;
if (ptr) {
HEAP32[ptr >> 2] = ret;
}
return ret;
}
___errno_state = Runtime.staticAlloc(4);
HEAP32[___errno_state >> 2] = 0;
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();
};
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;
__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();
}
STACK_BASE = STACKTOP = Runtime.alignMemory(STATICTOP);
staticSealed = true; // seal the static portion of memory
STACK_MAX = STACK_BASE + TOTAL_STACK;
DYNAMIC_BASE = DYNAMICTOP = Runtime.alignMemory(STACK_MAX);
assert(DYNAMIC_BASE < TOTAL_MEMORY, 'TOTAL_MEMORY not big enough for stack');
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
);
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
);
Module.asmGlobalArg = {
Math: Math,
Int8Array: Int8Array,
Int16Array: Int16Array,
Int32Array: Int32Array,
Uint8Array: Uint8Array,
Uint16Array: Uint16Array,
Uint32Array: Uint32Array,
Float32Array: Float32Array,
Float64Array: Float64Array,
};
Module.asmLibraryArg = {
abort: abort,
assert: assert,
min: Math_min,
_fflush: _fflush,
_sysconf: _sysconf,
_abort: _abort,
___setErrNo: ___setErrNo,
_sbrk: _sbrk,
_time: _time,
_emscripten_set_main_loop_timing: _emscripten_set_main_loop_timing,
_emscripten_memcpy_big: _emscripten_memcpy_big,
_emscripten_set_main_loop: _emscripten_set_main_loop,
___errno_location: ___errno_location,
STACKTOP: STACKTOP,
STACK_MAX: STACK_MAX,
tempDoublePtr: tempDoublePtr,
ABORT: ABORT,
cttz_i8: cttz_i8,
ctlz_i8: ctlz_i8,
NaN: NaN,
Infinity: Infinity,
};
// EMSCRIPTEN_START_ASM
var asm = (function(global, env, buffer) {
'use asm';
var HEAP8 = new global.Int8Array(buffer);
var HEAP16 = new global.Int16Array(buffer);
var HEAP32 = new global.Int32Array(buffer);
var HEAPU8 = new global.Uint8Array(buffer);
var HEAPU16 = new global.Uint16Array(buffer);
var HEAPU32 = new global.Uint32Array(buffer);
var HEAPF32 = new global.Float32Array(buffer);
var HEAPF64 = new global.Float64Array(buffer);
var STACKTOP = env.STACKTOP | 0;
var STACK_MAX = env.STACK_MAX | 0;
var tempDoublePtr = env.tempDoublePtr | 0;
var ABORT = env.ABORT | 0;
var cttz_i8 = env.cttz_i8 | 0;
var ctlz_i8 = env.ctlz_i8 | 0;
var __THREW__ = 0;
var threwValue = 0;
var setjmpId = 0;
var undef = 0;
var nan = +env.NaN,
inf = +env.Infinity;
var tempInt = 0,
tempBigInt = 0,
tempBigIntP = 0,
tempBigIntS = 0,
tempBigIntR = 0.0,
tempBigIntI = 0,
tempBigIntD = 0,
tempValue = 0,
tempDouble = 0.0;
var tempRet0 = 0;
var tempRet1 = 0;
var tempRet2 = 0;
var tempRet3 = 0;
var tempRet4 = 0;
var tempRet5 = 0;
var tempRet6 = 0;
var tempRet7 = 0;
var tempRet8 = 0;
var tempRet9 = 0;
var Math_floor = global.Math.floor;
var Math_abs = global.Math.abs;
var Math_sqrt = global.Math.sqrt;
var Math_pow = global.Math.pow;
var Math_cos = global.Math.cos;
var Math_sin = global.Math.sin;
var Math_tan = global.Math.tan;
var Math_acos = global.Math.acos;
var Math_asin = global.Math.asin;
var Math_atan = global.Math.atan;
var Math_atan2 = global.Math.atan2;
var Math_exp = global.Math.exp;
var Math_log = global.Math.log;
var Math_ceil = global.Math.ceil;
var Math_imul = global.Math.imul;
var abort = env.abort;
var assert = env.assert;
var Math_min = env.min;
var _fflush = env._fflush;
var _sysconf = env._sysconf;
var _abort = env._abort;
var ___setErrNo = env.___setErrNo;
var _sbrk = env._sbrk;
var _time = env._time;
var _emscripten_set_main_loop_timing = env._emscripten_set_main_loop_timing;
var _emscripten_memcpy_big = env._emscripten_memcpy_big;
var _emscripten_set_main_loop = env._emscripten_set_main_loop;
var ___errno_location = env.___errno_location;
var tempFloat = 0.0;
// EMSCRIPTEN_START_FUNCS
function stackAlloc(size) {
size = size | 0;
var ret = 0;
ret = STACKTOP;
STACKTOP = (STACKTOP + size) | 0;
STACKTOP = (STACKTOP + 15) & -16;
return ret | 0;
}
function stackSave() {
return STACKTOP | 0;
}
function stackRestore(top) {
top = top | 0;
STACKTOP = top;
}
function setThrew(threw, value) {
threw = threw | 0;
value = value | 0;
if ((__THREW__ | 0) == 0) {
__THREW__ = threw;
threwValue = value;
}
}
function copyTempFloat(ptr) {
ptr = ptr | 0;
HEAP8[tempDoublePtr >> 0] = HEAP8[ptr >> 0];
HEAP8[(tempDoublePtr + 1) >> 0] = HEAP8[(ptr + 1) >> 0];
HEAP8[(tempDoublePtr + 2) >> 0] = HEAP8[(ptr + 2) >> 0];
HEAP8[(tempDoublePtr + 3) >> 0] = HEAP8[(ptr + 3) >> 0];
}
function copyTempDouble(ptr) {
ptr = ptr | 0;
HEAP8[tempDoublePtr >> 0] = HEAP8[ptr >> 0];
HEAP8[(tempDoublePtr + 1) >> 0] = HEAP8[(ptr + 1) >> 0];
HEAP8[(tempDoublePtr + 2) >> 0] = HEAP8[(ptr + 2) >> 0];
HEAP8[(tempDoublePtr + 3) >> 0] = HEAP8[(ptr + 3) >> 0];
HEAP8[(tempDoublePtr + 4) >> 0] = HEAP8[(ptr + 4) >> 0];
HEAP8[(tempDoublePtr + 5) >> 0] = HEAP8[(ptr + 5) >> 0];
HEAP8[(tempDoublePtr + 6) >> 0] = HEAP8[(ptr + 6) >> 0];
HEAP8[(tempDoublePtr + 7) >> 0] = HEAP8[(ptr + 7) >> 0];
}
function setTempRet0(value) {
value = value | 0;
tempRet0 = value;
}
function getTempRet0() {
return tempRet0 | 0;
}
function _crypto_verify_32_ref($x, $y) {
$x = $x | 0;
$y = $y | 0;
var $0 = 0,
$1 = 0,
$10 = 0,
$100 = 0,
$101 = 0,
$102 = 0,
$103 = 0,
$104 = 0,
$105 = 0,
$106 = 0,
$107 = 0,
$108 = 0,
$109 = 0,
$11 = 0,
$110 = 0,
$111 = 0,
$112 = 0,
$113 = 0,
$114 = 0,
$115 = 0;
var $116 = 0,
$117 = 0,
$118 = 0,
$119 = 0,
$12 = 0,
$120 = 0,
$121 = 0,
$122 = 0,
$123 = 0,
$124 = 0,
$125 = 0,
$126 = 0,
$127 = 0,
$128 = 0,
$129 = 0,
$13 = 0,
$130 = 0,
$131 = 0,
$132 = 0,
$133 = 0;
var $134 = 0,
$135 = 0,
$136 = 0,
$137 = 0,
$138 = 0,
$139 = 0,
$14 = 0,
$140 = 0,
$141 = 0,
$142 = 0,
$143 = 0,
$144 = 0,
$145 = 0,
$146 = 0,
$147 = 0,
$148 = 0,
$149 = 0,
$15 = 0,
$150 = 0,
$151 = 0;
var $152 = 0,
$153 = 0,
$154 = 0,
$155 = 0,
$156 = 0,
$157 = 0,
$158 = 0,
$159 = 0,
$16 = 0,
$160 = 0,
$161 = 0,
$162 = 0,
$163 = 0,
$164 = 0,
$165 = 0,
$166 = 0,
$167 = 0,
$168 = 0,
$169 = 0,
$17 = 0;
var $170 = 0,
$171 = 0,
$172 = 0,
$173 = 0,
$174 = 0,
$175 = 0,
$176 = 0,
$177 = 0,
$178 = 0,
$179 = 0,
$18 = 0,
$180 = 0,
$181 = 0,
$182 = 0,
$183 = 0,
$184 = 0,
$185 = 0,
$186 = 0,
$187 = 0,
$188 = 0;
var $189 = 0,
$19 = 0,
$190 = 0,
$191 = 0,
$192 = 0,
$193 = 0,
$2 = 0,
$20 = 0,
$21 = 0,
$22 = 0,
$23 = 0,
$24 = 0,
$25 = 0,
$26 = 0,
$27 = 0,
$28 = 0,
$29 = 0,
$3 = 0,
$30 = 0,
$31 = 0;
var $32 = 0,
$33 = 0,
$34 = 0,
$35 = 0,
$36 = 0,
$37 = 0,
$38 = 0,
$39 = 0,
$4 = 0,
$40 = 0,
$41 = 0,
$42 = 0,
$43 = 0,
$44 = 0,
$45 = 0,
$46 = 0,
$47 = 0,
$48 = 0,
$49 = 0,
$5 = 0;
var $50 = 0,
$51 = 0,
$52 = 0,
$53 = 0,
$54 = 0,
$55 = 0,
$56 = 0,
$57 = 0,
$58 = 0,
$59 = 0,
$6 = 0,
$60 = 0,
$61 = 0,
$62 = 0,
$63 = 0,
$64 = 0,
$65 = 0,
$66 = 0,
$67 = 0,
$68 = 0;
var $69 = 0,
$7 = 0,
$70 = 0,
$71 = 0,
$72 = 0,
$73 = 0,
$74 = 0,
$75 = 0,
$76 = 0,
$77 = 0,
$78 = 0,
$79 = 0,
$8 = 0,
$80 = 0,
$81 = 0,
$82 = 0,
$83 = 0,
$84 = 0,
$85 = 0,
$86 = 0;
var $87 = 0,
$88 = 0,
$89 = 0,
$9 = 0,
$90 = 0,
$91 = 0,
$92 = 0,
$93 = 0,
$94 = 0,
$95 = 0,
$96 = 0,
$97 = 0,
$98 = 0,
$99 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = HEAP8[$x >> 0] | 0;
$1 = HEAP8[$y >> 0] | 0;
$2 = $1 ^ $0;
$3 = ($x + 1) | 0;
$4 = HEAP8[$3 >> 0] | 0;
$5 = ($y + 1) | 0;
$6 = HEAP8[$5 >> 0] | 0;
$7 = $6 ^ $4;
$8 = $7 | $2;
$9 = ($x + 2) | 0;
$10 = HEAP8[$9 >> 0] | 0;
$11 = ($y + 2) | 0;
$12 = HEAP8[$11 >> 0] | 0;
$13 = $12 ^ $10;
$14 = $8 | $13;
$15 = ($x + 3) | 0;
$16 = HEAP8[$15 >> 0] | 0;
$17 = ($y + 3) | 0;
$18 = HEAP8[$17 >> 0] | 0;
$19 = $18 ^ $16;
$20 = $14 | $19;
$21 = ($x + 4) | 0;
$22 = HEAP8[$21 >> 0] | 0;
$23 = ($y + 4) | 0;
$24 = HEAP8[$23 >> 0] | 0;
$25 = $24 ^ $22;
$26 = $20 | $25;
$27 = ($x + 5) | 0;
$28 = HEAP8[$27 >> 0] | 0;
$29 = ($y + 5) | 0;
$30 = HEAP8[$29 >> 0] | 0;
$31 = $30 ^ $28;
$32 = $26 | $31;
$33 = ($x + 6) | 0;
$34 = HEAP8[$33 >> 0] | 0;
$35 = ($y + 6) | 0;
$36 = HEAP8[$35 >> 0] | 0;
$37 = $36 ^ $34;
$38 = $32 | $37;
$39 = ($x + 7) | 0;
$40 = HEAP8[$39 >> 0] | 0;
$41 = ($y + 7) | 0;
$42 = HEAP8[$41 >> 0] | 0;
$43 = $42 ^ $40;
$44 = $38 | $43;
$45 = ($x + 8) | 0;
$46 = HEAP8[$45 >> 0] | 0;
$47 = ($y + 8) | 0;
$48 = HEAP8[$47 >> 0] | 0;
$49 = $48 ^ $46;
$50 = $44 | $49;
$51 = ($x + 9) | 0;
$52 = HEAP8[$51 >> 0] | 0;
$53 = ($y + 9) | 0;
$54 = HEAP8[$53 >> 0] | 0;
$55 = $54 ^ $52;
$56 = $50 | $55;
$57 = ($x + 10) | 0;
$58 = HEAP8[$57 >> 0] | 0;
$59 = ($y + 10) | 0;
$60 = HEAP8[$59 >> 0] | 0;
$61 = $60 ^ $58;
$62 = $56 | $61;
$63 = ($x + 11) | 0;
$64 = HEAP8[$63 >> 0] | 0;
$65 = ($y + 11) | 0;
$66 = HEAP8[$65 >> 0] | 0;
$67 = $66 ^ $64;
$68 = $62 | $67;
$69 = ($x + 12) | 0;
$70 = HEAP8[$69 >> 0] | 0;
$71 = ($y + 12) | 0;
$72 = HEAP8[$71 >> 0] | 0;
$73 = $72 ^ $70;
$74 = $68 | $73;
$75 = ($x + 13) | 0;
$76 = HEAP8[$75 >> 0] | 0;
$77 = ($y + 13) | 0;
$78 = HEAP8[$77 >> 0] | 0;
$79 = $78 ^ $76;
$80 = $74 | $79;
$81 = ($x + 14) | 0;
$82 = HEAP8[$81 >> 0] | 0;
$83 = ($y + 14) | 0;
$84 = HEAP8[$83 >> 0] | 0;
$85 = $84 ^ $82;
$86 = $80 | $85;
$87 = ($x + 15) | 0;
$88 = HEAP8[$87 >> 0] | 0;
$89 = ($y + 15) | 0;
$90 = HEAP8[$89 >> 0] | 0;
$91 = $90 ^ $88;
$92 = $86 | $91;
$93 = ($x + 16) | 0;
$94 = HEAP8[$93 >> 0] | 0;
$95 = ($y + 16) | 0;
$96 = HEAP8[$95 >> 0] | 0;
$97 = $96 ^ $94;
$98 = $92 | $97;
$99 = ($x + 17) | 0;
$100 = HEAP8[$99 >> 0] | 0;
$101 = ($y + 17) | 0;
$102 = HEAP8[$101 >> 0] | 0;
$103 = $102 ^ $100;
$104 = $98 | $103;
$105 = ($x + 18) | 0;
$106 = HEAP8[$105 >> 0] | 0;
$107 = ($y + 18) | 0;
$108 = HEAP8[$107 >> 0] | 0;
$109 = $108 ^ $106;
$110 = $104 | $109;
$111 = ($x + 19) | 0;
$112 = HEAP8[$111 >> 0] | 0;
$113 = ($y + 19) | 0;
$114 = HEAP8[$113 >> 0] | 0;
$115 = $114 ^ $112;
$116 = $110 | $115;
$117 = ($x + 20) | 0;
$118 = HEAP8[$117 >> 0] | 0;
$119 = ($y + 20) | 0;
$120 = HEAP8[$119 >> 0] | 0;
$121 = $120 ^ $118;
$122 = $116 | $121;
$123 = ($x + 21) | 0;
$124 = HEAP8[$123 >> 0] | 0;
$125 = ($y + 21) | 0;
$126 = HEAP8[$125 >> 0] | 0;
$127 = $126 ^ $124;
$128 = $122 | $127;
$129 = ($x + 22) | 0;
$130 = HEAP8[$129 >> 0] | 0;
$131 = ($y + 22) | 0;
$132 = HEAP8[$131 >> 0] | 0;
$133 = $132 ^ $130;
$134 = $128 | $133;
$135 = ($x + 23) | 0;
$136 = HEAP8[$135 >> 0] | 0;
$137 = ($y + 23) | 0;
$138 = HEAP8[$137 >> 0] | 0;
$139 = $138 ^ $136;
$140 = $134 | $139;
$141 = ($x + 24) | 0;
$142 = HEAP8[$141 >> 0] | 0;
$143 = ($y + 24) | 0;
$144 = HEAP8[$143 >> 0] | 0;
$145 = $144 ^ $142;
$146 = $140 | $145;
$147 = ($x + 25) | 0;
$148 = HEAP8[$147 >> 0] | 0;
$149 = ($y + 25) | 0;
$150 = HEAP8[$149 >> 0] | 0;
$151 = $150 ^ $148;
$152 = $146 | $151;
$153 = ($x + 26) | 0;
$154 = HEAP8[$153 >> 0] | 0;
$155 = ($y + 26) | 0;
$156 = HEAP8[$155 >> 0] | 0;
$157 = $156 ^ $154;
$158 = $152 | $157;
$159 = ($x + 27) | 0;
$160 = HEAP8[$159 >> 0] | 0;
$161 = ($y + 27) | 0;
$162 = HEAP8[$161 >> 0] | 0;
$163 = $162 ^ $160;
$164 = $158 | $163;
$165 = ($x + 28) | 0;
$166 = HEAP8[$165 >> 0] | 0;
$167 = ($y + 28) | 0;
$168 = HEAP8[$167 >> 0] | 0;
$169 = $168 ^ $166;
$170 = $164 | $169;
$171 = ($x + 29) | 0;
$172 = HEAP8[$171 >> 0] | 0;
$173 = ($y + 29) | 0;
$174 = HEAP8[$173 >> 0] | 0;
$175 = $174 ^ $172;
$176 = $170 | $175;
$177 = ($x + 30) | 0;
$178 = HEAP8[$177 >> 0] | 0;
$179 = ($y + 30) | 0;
$180 = HEAP8[$179 >> 0] | 0;
$181 = $180 ^ $178;
$182 = $176 | $181;
$183 = ($x + 31) | 0;
$184 = HEAP8[$183 >> 0] | 0;
$185 = ($y + 31) | 0;
$186 = HEAP8[$185 >> 0] | 0;
$187 = $186 ^ $184;
$188 = $182 | $187;
$189 = $188 & 255;
$190 = ($189 + 511) | 0;
$191 = $190 >>> 8;
$192 = $191 & 1;
$193 = ($192 + -1) | 0;
STACKTOP = sp;
return $193 | 0;
}
function _curve25519_sign(
$signature_out,
$curve25519_privkey,
$msg,
$msg_len
) {
$signature_out = $signature_out | 0;
$curve25519_privkey = $curve25519_privkey | 0;
$msg = $msg | 0;
$msg_len = $msg_len | 0;
var $0 = 0,
$1 = 0,
$10 = 0,
$11 = 0,
$12 = 0,
$13 = 0,
$14 = 0,
$15 = 0,
$2 = 0,
$3 = 0,
$4 = 0,
$5 = 0,
$6 = 0,
$7 = 0,
$8 = 0,
$9 = 0,
$ed_keypair = 0,
$ed_pubkey_point = 0,
$sigbuf_out_len = 0,
dest = 0;
var label = 0,
sp = 0,
src = 0,
stop = 0;
sp = STACKTOP;
STACKTOP = (STACKTOP + 240) | 0;
$ed_pubkey_point = (sp + 8) | 0;
$ed_keypair = (sp + 168) | 0;
$sigbuf_out_len = sp;
$0 = ($msg_len + 64) | 0;
$1 = STACKTOP;
STACKTOP = (STACKTOP + ((((1 * $0) | 0) + 15) & -16)) | 0;
$2 = $sigbuf_out_len;
$3 = $2;
HEAP32[$3 >> 2] = 0;
$4 = ($2 + 4) | 0;
$5 = $4;
HEAP32[$5 >> 2] = 0;
dest = ($ed_keypair + 0) | 0;
src = ($curve25519_privkey + 0) | 0;
stop = (dest + 32) | 0;
do {
HEAP8[dest >> 0] = HEAP8[src >> 0] | 0;
dest = (dest + 1) | 0;
src = (src + 1) | 0;
} while ((dest | 0) < (stop | 0));
_crypto_sign_ed25519_ref10_ge_scalarmult_base(
$ed_pubkey_point,
$curve25519_privkey
);
$6 = ($ed_keypair + 32) | 0;
_crypto_sign_ed25519_ref10_ge_p3_tobytes($6, $ed_pubkey_point);
$7 = ($ed_keypair + 63) | 0;
$8 = HEAP8[$7 >> 0] | 0;
$9 = $8 & 255;
$10 = $9 & 128;
_crypto_sign_modified($1, $sigbuf_out_len, $msg, $msg_len, 0, $ed_keypair) |
0;
dest = ($signature_out + 0) | 0;
src = ($1 + 0) | 0;
stop = (dest + 64) | 0;
do {
HEAP8[dest >> 0] = HEAP8[src >> 0] | 0;
dest = (dest + 1) | 0;
src = (src + 1) | 0;
} while ((dest | 0) < (stop | 0));
$11 = ($signature_out + 63) | 0;
$12 = HEAP8[$11 >> 0] | 0;
$13 = $12 & 255;
$14 = $13 | $10;
$15 = $14 & 255;
HEAP8[$11 >> 0] = $15;
STACKTOP = sp;
return;
}
function _curve25519_verify($signature, $curve25519_pubkey, $msg, $msg_len) {
$signature = $signature | 0;
$curve25519_pubkey = $curve25519_pubkey | 0;
$msg = $msg | 0;
$msg_len = $msg_len | 0;
var $0 = 0,
$1 = 0,
$10 = 0,
$11 = 0,
$12 = 0,
$13 = 0,
$14 = 0,
$15 = 0,
$16 = 0,
$17 = 0,
$2 = 0,
$3 = 0,
$4 = 0,
$5 = 0,
$6 = 0,
$7 = 0,
$8 = 0,
$9 = 0,
$ed_pubkey = 0,
$ed_y = 0;
var $inv_mont_x_plus_one = 0,
$mont_x = 0,
$mont_x_minus_one = 0,
$mont_x_plus_one = 0,
$one = 0,
$some_retval = 0,
dest = 0,
label = 0,
sp = 0,
src = 0,
stop = 0;
sp = STACKTOP;
STACKTOP = (STACKTOP + 288) | 0;
$mont_x = (sp + 208) | 0;
$mont_x_minus_one = (sp + 168) | 0;
$mont_x_plus_one = (sp + 128) | 0;
$inv_mont_x_plus_one = (sp + 88) | 0;
$one = (sp + 48) | 0;
$ed_y = (sp + 8) | 0;
$ed_pubkey = (sp + 248) | 0;
$some_retval = sp;
$0 = ($msg_len + 64) | 0;
$1 = STACKTOP;
STACKTOP = (STACKTOP + ((((1 * $0) | 0) + 15) & -16)) | 0;
$2 = STACKTOP;
STACKTOP = (STACKTOP + ((((1 * $0) | 0) + 15) & -16)) | 0;
_crypto_sign_ed25519_ref10_fe_frombytes($mont_x, $curve25519_pubkey);
_crypto_sign_ed25519_ref10_fe_1($one);
_crypto_sign_ed25519_ref10_fe_sub($mont_x_minus_one, $mont_x, $one);
_crypto_sign_ed25519_ref10_fe_add($mont_x_plus_one, $mont_x, $one);
_crypto_sign_ed25519_ref10_fe_invert(
$inv_mont_x_plus_one,
$mont_x_plus_one
);
_crypto_sign_ed25519_ref10_fe_mul(
$ed_y,
$mont_x_minus_one,
$inv_mont_x_plus_one
);
_crypto_sign_ed25519_ref10_fe_tobytes($ed_pubkey, $ed_y);
$3 = ($signature + 63) | 0;
$4 = HEAP8[$3 >> 0] | 0;
$5 = $4 & 255;
$6 = $5 & 128;
$7 = ($ed_pubkey + 31) | 0;
$8 = HEAP8[$7 >> 0] | 0;
$9 = $8 & 255;
$10 = $9 | $6;
$11 = $10 & 255;
HEAP8[$7 >> 0] = $11;
$12 = HEAP8[$3 >> 0] | 0;
$13 = $12 & 255;
$14 = $13 & 127;
$15 = $14 & 255;
HEAP8[$3 >> 0] = $15;
dest = ($1 + 0) | 0;
src = ($signature + 0) | 0;
stop = (dest + 64) | 0;
do {
HEAP8[dest >> 0] = HEAP8[src >> 0] | 0;
dest = (dest + 1) | 0;
src = (src + 1) | 0;
} while ((dest | 0) < (stop | 0));
$16 = ($1 + 64) | 0;
_memcpy($16 | 0, $msg | 0, $msg_len | 0) | 0;
$17 =
_crypto_sign_edwards25519sha512batch_ref10_open(
$2,
$some_retval,
$1,
$0,
0,
$ed_pubkey
) | 0;
STACKTOP = sp;
return $17 | 0;
}
function _crypto_hash_sha512_ref($output, $input, $0, $1) {
$output = $output | 0;
$input = $input | 0;
$0 = $0 | 0;
$1 = $1 | 0;
var $ctx = 0,
label = 0,
sp = 0;
sp = STACKTOP;
STACKTOP = (STACKTOP + 208) | 0;
$ctx = sp;
_sph_sha512_init($ctx);
_sph_sha384($ctx, $input, $0);
_sph_sha512_close($ctx, $output);
STACKTOP = sp;
return 0;
}
function _crypto_sign_modified($sm, $smlen, $m, $0, $1, $sk) {
$sm = $sm | 0;
$smlen = $smlen | 0;
$m = $m | 0;
$0 = $0 | 0;
$1 = $1 | 0;
$sk = $sk | 0;
var $10 = 0,
$11 = 0,
$12 = 0,
$2 = 0,
$3 = 0,
$4 = 0,
$5 = 0,
$6 = 0,
$7 = 0,
$8 = 0,
$9 = 0,
$R = 0,
$hram = 0,
$nonce = 0,
$pk1 = 0,
dest = 0,
label = 0,
sp = 0,
src = 0,
stop = 0;
sp = STACKTOP;
STACKTOP = (STACKTOP + 320) | 0;
$pk1 = (sp + 288) | 0;
$nonce = (sp + 224) | 0;
$hram = (sp + 160) | 0;
$R = sp;
$2 = ($sk + 32) | 0;
dest = ($pk1 + 0) | 0;
src = ($2 + 0) | 0;
stop = (dest + 32) | 0;
do {
HEAP8[dest >> 0] = HEAP8[src >> 0] | 0;
dest = (dest + 1) | 0;
src = (src + 1) | 0;
} while ((dest | 0) < (stop | 0));
$3 = _i64Add($0 | 0, $1 | 0, 64, 0) | 0;
$4 = tempRet0;
$5 = $smlen;
$6 = $5;
HEAP32[$6 >> 2] = $3;
$7 = ($5 + 4) | 0;
$8 = $7;
HEAP32[$8 >> 2] = $4;
$9 = ($sm + 64) | 0;
_memmove($9 | 0, $m | 0, $0 | 0) | 0;
$10 = ($sm + 32) | 0;
_memmove($10 | 0, $sk | 0, 32) | 0;
$11 = _i64Add($0 | 0, $1 | 0, 32, 0) | 0;
$12 = tempRet0;
_crypto_hash_sha512_ref($nonce, $10, $11, $12) | 0;
dest = ($10 + 0) | 0;
src = ($pk1 + 0) | 0;
stop = (dest + 32) | 0;
do {
HEAP8[dest >> 0] = HEAP8[src >> 0] | 0;
dest = (dest + 1) | 0;
src = (src + 1) | 0;
} while ((dest | 0) < (stop | 0));
_crypto_sign_ed25519_ref10_sc_reduce($nonce);
_crypto_sign_ed25519_ref10_ge_scalarmult_base($R, $nonce);
_crypto_sign_ed25519_ref10_ge_p3_tobytes($sm, $R);
_crypto_hash_sha512_ref($hram, $sm, $3, $4) | 0;
_crypto_sign_ed25519_ref10_sc_reduce($hram);
_crypto_sign_ed25519_ref10_sc_muladd($10, $hram, $sk, $nonce);
STACKTOP = sp;
return 0;
}
function _curve25519_donna($mypublic, $secret, $basepoint) {
$mypublic = $mypublic | 0;
$secret = $secret | 0;
$basepoint = $basepoint | 0;
var $bp = 0,
$e = 0,
$x = 0,
$z = 0,
$zmone = 0,
dest = 0,
label = 0,
sp = 0,
src = 0,
stop = 0;
sp = STACKTOP;
STACKTOP = (STACKTOP + 368) | 0;
$bp = (sp + 248) | 0;
$x = (sp + 168) | 0;
$z = (sp + 80) | 0;
$zmone = sp;
$e = (sp + 328) | 0;
dest = ($e + 0) | 0;
src = ($secret + 0) | 0;
stop = (dest + 32) | 0;
do {
HEAP8[dest >> 0] = HEAP8[src >> 0] | 0;
dest = (dest + 1) | 0;
src = (src + 1) | 0;
} while ((dest | 0) < (stop | 0));
_fexpand($bp, $basepoint);
_cmult($x, $z, $e, $bp);
_crecip($zmone, $z);
_fmul($z, $x, $zmone);
_fcontract($mypublic, $z);
STACKTOP = sp;
return 0;
}
function _fexpand($output, $input) {
$output = $output | 0;
$input = $input | 0;
var $0 = 0,
$1 = 0,
$10 = 0,
$100 = 0,
$101 = 0,
$102 = 0,
$103 = 0,
$104 = 0,
$105 = 0,
$106 = 0,
$107 = 0,
$108 = 0,
$109 = 0,
$11 = 0,
$110 = 0,
$111 = 0,
$112 = 0,
$113 = 0,
$114 = 0,
$115 = 0;
var $116 = 0,
$117 = 0,
$118 = 0,
$119 = 0,
$12 = 0,
$120 = 0,
$121 = 0,
$122 = 0,
$123 = 0,
$124 = 0,
$125 = 0,
$126 = 0,
$127 = 0,
$128 = 0,
$129 = 0,
$13 = 0,
$130 = 0,
$131 = 0,
$132 = 0,
$133 = 0;
var $134 = 0,
$135 = 0,
$136 = 0,
$137 = 0,
$138 = 0,
$139 = 0,
$14 = 0,
$140 = 0,
$141 = 0,
$142 = 0,
$143 = 0,
$144 = 0,
$145 = 0,
$146 = 0,
$147 = 0,
$148 = 0,
$149 = 0,
$15 = 0,
$150 = 0,
$151 = 0;
var $152 = 0,
$153 = 0,
$154 = 0,
$155 = 0,
$156 = 0,
$157 = 0,
$158 = 0,
$159 = 0,
$16 = 0,
$160 = 0,
$161 = 0,
$162 = 0,
$163 = 0,
$164 = 0,
$165 = 0,
$166 = 0,
$167 = 0,
$168 = 0,
$169 = 0,
$17 = 0;
var $170 = 0,
$171 = 0,
$172 = 0,
$173 = 0,
$174 = 0,
$175 = 0,
$176 = 0,
$177 = 0,
$178 = 0,
$179 = 0,
$18 = 0,
$180 = 0,
$181 = 0,
$182 = 0,
$183 = 0,
$184 = 0,
$185 = 0,
$186 = 0,
$187 = 0,
$188 = 0;
var $189 = 0,
$19 = 0,
$190 = 0,
$191 = 0,
$192 = 0,
$193 = 0,
$194 = 0,
$195 = 0,
$196 = 0,
$197 = 0,
$198 = 0,
$199 = 0,
$2 = 0,
$20 = 0,
$200 = 0,
$201 = 0,
$202 = 0,
$203 = 0,
$204 = 0,
$205 = 0;
var $206 = 0,
$207 = 0,
$208 = 0,
$209 = 0,
$21 = 0,
$210 = 0,
$211 = 0,
$212 = 0,
$213 = 0,
$214 = 0,
$215 = 0,
$216 = 0,
$217 = 0,
$218 = 0,
$219 = 0,
$22 = 0,
$220 = 0,
$221 = 0,
$222 = 0,
$223 = 0;
var $224 = 0,
$225 = 0,
$226 = 0,
$227 = 0,
$228 = 0,
$229 = 0,
$23 = 0,
$230 = 0,
$231 = 0,
$232 = 0,
$233 = 0,
$234 = 0,
$235 = 0,
$236 = 0,
$237 = 0,
$238 = 0,
$239 = 0,
$24 = 0,
$240 = 0,
$241 = 0;
var $242 = 0,
$243 = 0,
$244 = 0,
$245 = 0,
$246 = 0,
$247 = 0,
$248 = 0,
$249 = 0,
$25 = 0,
$250 = 0,
$251 = 0,
$252 = 0,
$253 = 0,
$254 = 0,
$255 = 0,
$256 = 0,
$257 = 0,
$258 = 0,
$259 = 0,
$26 = 0;
var $260 = 0,
$261 = 0,
$262 = 0,
$263 = 0,
$264 = 0,
$265 = 0,
$266 = 0,
$267 = 0,
$268 = 0,
$269 = 0,
$27 = 0,
$270 = 0,
$271 = 0,
$272 = 0,
$273 = 0,
$274 = 0,
$275 = 0,
$276 = 0,
$277 = 0,
$278 = 0;
var $279 = 0,
$28 = 0,
$280 = 0,
$281 = 0,
$282 = 0,
$283 = 0,
$284 = 0,
$285 = 0,
$286 = 0,
$287 = 0,
$288 = 0,
$289 = 0,
$29 = 0,
$290 = 0,
$291 = 0,
$292 = 0,
$293 = 0,
$3 = 0,
$30 = 0,
$31 = 0;
var $32 = 0,
$33 = 0,
$34 = 0,
$35 = 0,
$36 = 0,
$37 = 0,
$38 = 0,
$39 = 0,
$4 = 0,
$40 = 0,
$41 = 0,
$42 = 0,
$43 = 0,
$44 = 0,
$45 = 0,
$46 = 0,
$47 = 0,
$48 = 0,
$49 = 0,
$5 = 0;
var $50 = 0,
$51 = 0,
$52 = 0,
$53 = 0,
$54 = 0,
$55 = 0,
$56 = 0,
$57 = 0,
$58 = 0,
$59 = 0,
$6 = 0,
$60 = 0,
$61 = 0,
$62 = 0,
$63 = 0,
$64 = 0,
$65 = 0,
$66 = 0,
$67 = 0,
$68 = 0;
var $69 = 0,
$7 = 0,
$70 = 0,
$71 = 0,
$72 = 0,
$73 = 0,
$74 = 0,
$75 = 0,
$76 = 0,
$77 = 0,
$78 = 0,
$79 = 0,
$8 = 0,
$80 = 0,
$81 = 0,
$82 = 0,
$83 = 0,
$84 = 0,
$85 = 0,
$86 = 0;
var $87 = 0,
$88 = 0,
$89 = 0,
$9 = 0,
$90 = 0,
$91 = 0,
$92 = 0,
$93 = 0,
$94 = 0,
$95 = 0,
$96 = 0,
$97 = 0,
$98 = 0,
$99 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = HEAP8[$input >> 0] | 0;
$1 = $0 & 255;
$2 = ($input + 1) | 0;
$3 = HEAP8[$2 >> 0] | 0;
$4 = $3 & 255;
$5 = _bitshift64Shl($4 | 0, 0, 8) | 0;
$6 = tempRet0;
$7 = $5 | $1;
$8 = ($input + 2) | 0;
$9 = HEAP8[$8 >> 0] | 0;
$10 = $9 & 255;
$11 = _bitshift64Shl($10 | 0, 0, 16) | 0;
$12 = tempRet0;
$13 = $7 | $11;
$14 = $6 | $12;
$15 = ($input + 3) | 0;
$16 = HEAP8[$15 >> 0] | 0;
$17 = $16 & 255;
$18 = _bitshift64Shl($17 | 0, 0, 24) | 0;
$19 = tempRet0;
$20 = $18 & 50331648;
$21 = $13 | $20;
$22 = $output;
$23 = $22;
HEAP32[$23 >> 2] = $21;
$24 = ($22 + 4) | 0;
$25 = $24;
HEAP32[$25 >> 2] = $14;
$26 = HEAP8[$15 >> 0] | 0;
$27 = $26 & 255;
$28 = ($input + 4) | 0;
$29 = HEAP8[$28 >> 0] | 0;
$30 = $29 & 255;
$31 = _bitshift64Shl($30 | 0, 0, 8) | 0;
$32 = tempRet0;
$33 = $31 | $27;
$34 = ($input + 5) | 0;
$35 = HEAP8[$34 >> 0] | 0;
$36 = $35 & 255;
$37 = _bitshift64Shl($36 | 0, 0, 16) | 0;
$38 = tempRet0;
$39 = $33 | $37;
$40 = $32 | $38;
$41 = ($input + 6) | 0;
$42 = HEAP8[$41 >> 0] | 0;
$43 = $42 & 255;
$44 = _bitshift64Shl($43 | 0, 0, 24) | 0;
$45 = tempRet0;
$46 = $39 | $44;
$47 = $40 | $45;
$48 = _bitshift64Lshr($46 | 0, $47 | 0, 2) | 0;
$49 = tempRet0;
$50 = $48 & 33554431;
$51 = ($output + 8) | 0;
$52 = $51;
$53 = $52;
HEAP32[$53 >> 2] = $50;
$54 = ($52 + 4) | 0;
$55 = $54;
HEAP32[$55 >> 2] = 0;
$56 = HEAP8[$41 >> 0] | 0;
$57 = $56 & 255;
$58 = ($input + 7) | 0;
$59 = HEAP8[$58 >> 0] | 0;
$60 = $59 & 255;
$61 = _bitshift64Shl($60 | 0, 0, 8) | 0;
$62 = tempRet0;
$63 = $61 | $57;
$64 = ($input + 8) | 0;
$65 = HEAP8[$64 >> 0] | 0;
$66 = $65 & 255;
$67 = _bitshift64Shl($66 | 0, 0, 16) | 0;
$68 = tempRet0;
$69 = $63 | $67;
$70 = $62 | $68;
$71 = ($input + 9) | 0;
$72 = HEAP8[$71 >> 0] | 0;
$73 = $72 & 255;
$74 = _bitshift64Shl($73 | 0, 0, 24) | 0;
$75 = tempRet0;
$76 = $69 | $74;
$77 = $70 | $75;
$78 = _bitshift64Lshr($76 | 0, $77 | 0, 3) | 0;
$79 = tempRet0;
$80 = $78 & 67108863;
$81 = ($output + 16) | 0;
$82 = $81;
$83 = $82;
HEAP32[$83 >> 2] = $80;
$84 = ($82 + 4) | 0;
$85 = $84;
HEAP32[$85 >> 2] = 0;
$86 = HEAP8[$71 >> 0] | 0;
$87 = $86 & 255;
$88 = ($input + 10) | 0;
$89 = HEAP8[$88 >> 0] | 0;
$90 = $89 & 255;
$91 = _bitshift64Shl($90 | 0, 0, 8) | 0;
$92 = tempRet0;
$93 = $91 | $87;
$94 = ($input + 11) | 0;
$95 = HEAP8[$94 >> 0] | 0;
$96 = $95 & 255;
$97 = _bitshift64Shl($96 | 0, 0, 16) | 0;
$98 = tempRet0;
$99 = $93 | $97;
$100 = $92 | $98;
$101 = ($input + 12) | 0;
$102 = HEAP8[$101 >> 0] | 0;
$103 = $102 & 255;
$104 = _bitshift64Shl($103 | 0, 0, 24) | 0;
$105 = tempRet0;
$106 = $99 | $104;
$107 = $100 | $105;
$108 = _bitshift64Lshr($106 | 0, $107 | 0, 5) | 0;
$109 = tempRet0;
$110 = $108 & 33554431;
$111 = ($output + 24) | 0;
$112 = $111;
$113 = $112;
HEAP32[$113 >> 2] = $110;
$114 = ($112 + 4) | 0;
$115 = $114;
HEAP32[$115 >> 2] = 0;
$116 = HEAP8[$101 >> 0] | 0;
$117 = $116 & 255;
$118 = ($input + 13) | 0;
$119 = HEAP8[$118 >> 0] | 0;
$120 = $119 & 255;
$121 = _bitshift64Shl($120 | 0, 0, 8) | 0;
$122 = tempRet0;
$123 = $121 | $117;
$124 = ($input + 14) | 0;
$125 = HEAP8[$124 >> 0] | 0;
$126 = $125 & 255;
$127 = _bitshift64Shl($126 | 0, 0, 16) | 0;
$128 = tempRet0;
$129 = $123 | $127;
$130 = $122 | $128;
$131 = ($input + 15) | 0;
$132 = HEAP8[$131 >> 0] | 0;
$133 = $132 & 255;
$134 = _bitshift64Shl($133 | 0, 0, 24) | 0;
$135 = tempRet0;
$136 = $129 | $134;
$137 = $130 | $135;
$138 = _bitshift64Lshr($136 | 0, $137 | 0, 6) | 0;
$139 = tempRet0;
$140 = $138 & 67108863;
$141 = ($output + 32) | 0;
$142 = $141;
$143 = $142;
HEAP32[$143 >> 2] = $140;
$144 = ($142 + 4) | 0;
$145 = $144;
HEAP32[$145 >> 2] = 0;
$146 = ($input + 16) | 0;
$147 = HEAP8[$146 >> 0] | 0;
$148 = $147 & 255;
$149 = ($input + 17) | 0;
$150 = HEAP8[$149 >> 0] | 0;
$151 = $150 & 255;
$152 = _bitshift64Shl($151 | 0, 0, 8) | 0;
$153 = tempRet0;
$154 = $152 | $148;
$155 = ($input + 18) | 0;
$156 = HEAP8[$155 >> 0] | 0;
$157 = $156 & 255;
$158 = _bitshift64Shl($157 | 0, 0, 16) | 0;
$159 = tempRet0;
$160 = $154 | $158;
$161 = $153 | $159;
$162 = ($input + 19) | 0;
$163 = HEAP8[$162 >> 0] | 0;
$164 = $163 & 255;
$165 = _bitshift64Shl($164 | 0, 0, 24) | 0;
$166 = tempRet0;
$167 = $165 & 16777216;
$168 = $160 | $167;
$169 = ($output + 40) | 0;
$170 = $169;
$171 = $170;
HEAP32[$171 >> 2] = $168;
$172 = ($170 + 4) | 0;
$173 = $172;
HEAP32[$173 >> 2] = $161;
$174 = HEAP8[$162 >> 0] | 0;
$175 = $174 & 255;
$176 = ($input + 20) | 0;
$177 = HEAP8[$176 >> 0] | 0;
$178 = $177 & 255;
$179 = _bitshift64Shl($178 | 0, 0, 8) | 0;
$180 = tempRet0;
$181 = $179 | $175;
$182 = ($input + 21) | 0;
$183 = HEAP8[$182 >> 0] | 0;
$184 = $183 & 255;
$185 = _bitshift64Shl($184 | 0, 0, 16) | 0;
$186 = tempRet0;
$187 = $181 | $185;
$188 = $180 | $186;
$189 = ($input + 22) | 0;
$190 = HEAP8[$189 >> 0] | 0;
$191 = $190 & 255;
$192 = _bitshift64Shl($191 | 0, 0, 24) | 0;
$193 = tempRet0;
$194 = $187 | $192;
$195 = $188 | $193;
$196 = _bitshift64Lshr($194 | 0, $195 | 0, 1) | 0;
$197 = tempRet0;
$198 = $196 & 67108863;
$199 = ($output + 48) | 0;
$200 = $199;
$201 = $200;
HEAP32[$201 >> 2] = $198;
$202 = ($200 + 4) | 0;
$203 = $202;
HEAP32[$203 >> 2] = 0;
$204 = HEAP8[$189 >> 0] | 0;
$205 = $204 & 255;
$206 = ($input + 23) | 0;
$207 = HEAP8[$206 >> 0] | 0;
$208 = $207 & 255;
$209 = _bitshift64Shl($208 | 0, 0, 8) | 0;
$210 = tempRet0;
$211 = $209 | $205;
$212 = ($input + 24) | 0;
$213 = HEAP8[$212 >> 0] | 0;
$214 = $213 & 255;
$215 = _bitshift64Shl($214 | 0, 0, 16) | 0;
$216 = tempRet0;
$217 = $211 | $215;
$218 = $210 | $216;
$219 = ($input + 25) | 0;
$220 = HEAP8[$219 >> 0] | 0;
$221 = $220 & 255;
$222 = _bitshift64Shl($221 | 0, 0, 24) | 0;
$223 = tempRet0;
$224 = $217 | $222;
$225 = $218 | $223;
$226 = _bitshift64Lshr($224 | 0, $225 | 0, 3) | 0;
$227 = tempRet0;
$228 = $226 & 33554431;
$229 = ($output + 56) | 0;
$230 = $229;
$231 = $230;
HEAP32[$231 >> 2] = $228;
$232 = ($230 + 4) | 0;
$233 = $232;
HEAP32[$233 >> 2] = 0;
$234 = HEAP8[$219 >> 0] | 0;
$235 = $234 & 255;
$236 = ($input + 26) | 0;
$237 = HEAP8[$236 >> 0] | 0;
$238 = $237 & 255;
$239 = _bitshift64Shl($238 | 0, 0, 8) | 0;
$240 = tempRet0;
$241 = $239 | $235;
$242 = ($input + 27) | 0;
$243 = HEAP8[$242 >> 0] | 0;
$244 = $243 & 255;
$245 = _bitshift64Shl($244 | 0, 0, 16) | 0;
$246 = tempRet0;
$247 = $241 | $245;
$248 = $240 | $246;
$249 = ($input + 28) | 0;
$250 = HEAP8[$249 >> 0] | 0;
$251 = $250 & 255;
$252 = _bitshift64Shl($251 | 0, 0, 24) | 0;
$253 = tempRet0;
$254 = $247 | $252;
$255 = $248 | $253;
$256 = _bitshift64Lshr($254 | 0, $255 | 0, 4) | 0;
$257 = tempRet0;
$258 = $256 & 67108863;
$259 = ($output + 64) | 0;
$260 = $259;
$261 = $260;
HEAP32[$261 >> 2] = $258;
$262 = ($260 + 4) | 0;
$263 = $262;
HEAP32[$263 >> 2] = 0;
$264 = HEAP8[$249 >> 0] | 0;
$265 = $264 & 255;
$266 = ($input + 29) | 0;
$267 = HEAP8[$266 >> 0] | 0;
$268 = $267 & 255;
$269 = _bitshift64Shl($268 | 0, 0, 8) | 0;
$270 = tempRet0;
$271 = $269 | $265;
$272 = ($input + 30) | 0;
$273 = HEAP8[$272 >> 0] | 0;
$274 = $273 & 255;
$275 = _bitshift64Shl($274 | 0, 0, 16) | 0;
$276 = tempRet0;
$277 = $271 | $275;
$278 = $270 | $276;
$279 = ($input + 31) | 0;
$280 = HEAP8[$279 >> 0] | 0;
$281 = $280 & 255;
$282 = _bitshift64Shl($281 | 0, 0, 24) | 0;
$283 = tempRet0;
$284 = $277 | $282;
$285 = $278 | $283;
$286 = _bitshift64Lshr($284 | 0, $285 | 0, 6) | 0;
$287 = tempRet0;
$288 = $286 & 33554431;
$289 = ($output + 72) | 0;
$290 = $289;
$291 = $290;
HEAP32[$291 >> 2] = $288;
$292 = ($290 + 4) | 0;
$293 = $292;
HEAP32[$293 >> 2] = 0;
STACKTOP = sp;
return;
}
function _cmult($resultx, $resultz, $n, $q) {
$resultx = $resultx | 0;
$resultz = $resultz | 0;
$n = $n | 0;
$q = $q | 0;
var $0 = 0,
$1 = 0,
$10 = 0,
$11 = 0,
$12 = 0,
$13 = 0,
$14 = 0,
$15 = 0,
$16 = 0,
$17 = 0,
$18 = 0,
$19 = 0,
$2 = 0,
$20 = 0,
$21 = 0,
$22 = 0,
$23 = 0,
$24 = 0,
$3 = 0,
$4 = 0;
var $5 = 0,
$6 = 0,
$7 = 0,
$8 = 0,
$9 = 0,
$a = 0,
$b = 0,
$byte$09 = 0,
$c = 0,
$d = 0,
$e = 0,
$exitcond = 0,
$exitcond20 = 0,
$f = 0,
$g = 0,
$h = 0,
$i$018 = 0,
$j$08 = 0,
$nqpqx$019 = 0,
$nqpqx$110 = 0;
var $nqpqx$110$phi = 0,
$nqpqx2$014 = 0,
$nqpqx2$14 = 0,
$nqpqx2$14$phi = 0,
$nqpqz$013 = 0,
$nqpqz$13 = 0,
$nqpqz$13$phi = 0,
$nqpqz2$015 = 0,
$nqpqz2$15 = 0,
$nqpqz2$15$phi = 0,
$nqx$011 = 0,
$nqx$11 = 0,
$nqx$11$phi = 0,
$nqx2$016 = 0,
$nqx2$16 = 0,
$nqx2$16$phi = 0,
$nqz$012 = 0,
$nqz$12 = 0,
$nqz$12$phi = 0,
$nqz2$017 = 0;
var $nqz2$17 = 0,
$nqz2$17$phi = 0,
dest = 0,
label = 0,
sp = 0,
src = 0,
stop = 0;
sp = STACKTOP;
STACKTOP = (STACKTOP + 1216) | 0;
$a = (sp + 1064) | 0;
$b = (sp + 912) | 0;
$c = (sp + 760) | 0;
$d = (sp + 608) | 0;
$e = (sp + 456) | 0;
$f = (sp + 304) | 0;
$g = (sp + 152) | 0;
$h = sp;
_memset($a | 0, 0, 152) | 0;
_memset($b | 0, 0, 152) | 0;
$0 = $b;
$1 = $0;
HEAP32[$1 >> 2] = 1;
$2 = ($0 + 4) | 0;
$3 = $2;
HEAP32[$3 >> 2] = 0;
_memset($c | 0, 0, 152) | 0;
$4 = $c;
$5 = $4;
HEAP32[$5 >> 2] = 1;
$6 = ($4 + 4) | 0;
$7 = $6;
HEAP32[$7 >> 2] = 0;
_memset($d | 0, 0, 152) | 0;
_memset($e | 0, 0, 152) | 0;
_memset($f | 0, 0, 152) | 0;
$8 = $f;
$9 = $8;
HEAP32[$9 >> 2] = 1;
$10 = ($8 + 4) | 0;
$11 = $10;
HEAP32[$11 >> 2] = 0;
_memset($g | 0, 0, 152) | 0;
_memset($h | 0, 0, 152) | 0;
$12 = $h;
$13 = $12;
HEAP32[$13 >> 2] = 1;
$14 = ($12 + 4) | 0;
$15 = $14;
HEAP32[$15 >> 2] = 0;
dest = ($a + 0) | 0;
src = ($q + 0) | 0;
stop = (dest + 80) | 0;
do {
HEAP32[dest >> 2] = HEAP32[src >> 2] | 0;
dest = (dest + 4) | 0;
src = (src + 4) | 0;
} while ((dest | 0) < (stop | 0));
$i$018 = 0;
$nqpqx$019 = $a;
$nqpqx2$014 = $e;
$nqpqz$013 = $b;
$nqpqz2$015 = $f;
$nqx$011 = $c;
$nqx2$016 = $g;
$nqz$012 = $d;
$nqz2$017 = $h;
while (1) {
$16 = (31 - $i$018) | 0;
$17 = ($n + $16) | 0;
$18 = HEAP8[$17 >> 0] | 0;
$byte$09 = $18;
$j$08 = 0;
$nqpqx$110 = $nqpqx$019;
$nqpqx2$14 = $nqpqx2$014;
$nqpqz$13 = $nqpqz$013;
$nqpqz2$15 = $nqpqz2$015;
$nqx$11 = $nqx$011;
$nqx2$16 = $nqx2$016;
$nqz$12 = $nqz$012;
$nqz2$17 = $nqz2$017;
while (1) {
$19 = $byte$09 & 255;
$20 = $19 >>> 7;
_swap_conditional($nqx$11, $nqpqx$110, $20, 0);
_swap_conditional($nqz$12, $nqpqz$13, $20, 0);
_fmonty(
$nqx2$16,
$nqz2$17,
$nqpqx2$14,
$nqpqz2$15,
$nqx$11,
$nqz$12,
$nqpqx$110,
$nqpqz$13,
$q
);
_swap_conditional($nqx2$16, $nqpqx2$14, $20, 0);
_swap_conditional($nqz2$17, $nqpqz2$15, $20, 0);
$21 = $19 << 1;
$22 = $21 & 255;
$23 = ($j$08 + 1) | 0;
$exitcond = ($23 | 0) == 8;
if ($exitcond) {
break;
} else {
$nqz2$17$phi = $nqz$12;
$nqz$12$phi = $nqz2$17;
$nqx2$16$phi = $nqx$11;
$nqx$11$phi = $nqx2$16;
$nqpqz2$15$phi = $nqpqz$13;
$nqpqz$13$phi = $nqpqz2$15;
$nqpqx2$14$phi = $nqpqx$110;
$nqpqx$110$phi = $nqpqx2$14;
$byte$09 = $22;
$j$08 = $23;
$nqz2$17 = $nqz2$17$phi;
$nqz$12 = $nqz$12$phi;
$nqx2$16 = $nqx2$16$phi;
$nqx$11 = $nqx$11$phi;
$nqpqz2$15 = $nqpqz2$15$phi;
$nqpqz$13 = $nqpqz$13$phi;
$nqpqx2$14 = $nqpqx2$14$phi;
$nqpqx$110 = $nqpqx$110$phi;
}
}
$24 = ($i$018 + 1) | 0;
$exitcond20 = ($24 | 0) == 32;
if ($exitcond20) {
break;
} else {
$i$018 = $24;
$nqpqx$019 = $nqpqx2$14;
$nqpqx2$014 = $nqpqx$110;
$nqpqz$013 = $nqpqz2$15;
$nqpqz2$015 = $nqpqz$13;
$nqx$011 = $nqx2$16;
$nqx2$016 = $nqx$11;
$nqz$012 = $nqz2$17;
$nqz2$017 = $nqz$12;
}
}
dest = ($resultx + 0) | 0;
src = ($nqx2$16 + 0) | 0;
stop = (dest + 80) | 0;
do {
HEAP32[dest >> 2] = HEAP32[src >> 2] | 0;
dest = (dest + 4) | 0;
src = (src + 4) | 0;
} while ((dest | 0) < (stop | 0));
dest = ($resultz + 0) | 0;
src = ($nqz2$17 + 0) | 0;
stop = (dest + 80) | 0;
do {
HEAP32[dest >> 2] = HEAP32[src >> 2] | 0;
dest = (dest + 4) | 0;
src = (src + 4) | 0;
} while ((dest | 0) < (stop | 0));
STACKTOP = sp;
return;
}
function _crecip($out, $z) {
$out = $out | 0;
$z = $z | 0;
var $0 = 0,
$1 = 0,
$2 = 0,
$3 = 0,
$4 = 0,
$5 = 0,
$i$33 = 0,
$i$42 = 0,
$i$51 = 0,
$t0 = 0,
$t1 = 0,
$z11 = 0,
$z2 = 0,
$z2_100_0 = 0,
$z2_10_0 = 0,
$z2_20_0 = 0,
$z2_50_0 = 0,
$z2_5_0 = 0,
$z9 = 0,
label = 0;
var sp = 0;
sp = STACKTOP;
STACKTOP = (STACKTOP + 800) | 0;
$z2 = (sp + 720) | 0;
$z9 = (sp + 640) | 0;
$z11 = (sp + 560) | 0;
$z2_5_0 = (sp + 480) | 0;
$z2_10_0 = (sp + 400) | 0;
$z2_20_0 = (sp + 320) | 0;
$z2_50_0 = (sp + 240) | 0;
$z2_100_0 = (sp + 160) | 0;
$t0 = (sp + 80) | 0;
$t1 = sp;
_fsquare($z2, $z);
_fsquare($t1, $z2);
_fsquare($t0, $t1);
_fmul($z9, $t0, $z);
_fmul($z11, $z9, $z2);
_fsquare($t0, $z11);
_fmul($z2_5_0, $t0, $z9);
_fsquare($t0, $z2_5_0);
_fsquare($t1, $t0);
_fsquare($t0, $t1);
_fsquare($t1, $t0);
_fsquare($t0, $t1);
_fmul($z2_10_0, $t0, $z2_5_0);
_fsquare($t0, $z2_10_0);
_fsquare($t1, $t0);
_fsquare($t0, $t1);
_fsquare($t1, $t0);
_fsquare($t0, $t1);
_fsquare($t1, $t0);
_fsquare($t0, $t1);
_fsquare($t1, $t0);
_fsquare($t0, $t1);
_fsquare($t1, $t0);
_fmul($z2_20_0, $t1, $z2_10_0);
_fsquare($t0, $z2_20_0);
_fsquare($t1, $t0);
_fsquare($t0, $t1);
_fsquare($t1, $t0);
_fsquare($t0, $t1);
_fsquare($t1, $t0);
_fsquare($t0, $t1);
_fsquare($t1, $t0);
_fsquare($t0, $t1);
_fsquare($t1, $t0);
_fsquare($t0, $t1);
_fsquare($t1, $t0);
_fsquare($t0, $t1);
_fsquare($t1, $t0);
_fsquare($t0, $t1);
_fsquare($t1, $t0);
_fsquare($t0, $t1);
_fsquare($t1, $t0);
_fsquare($t0, $t1);
_fsquare($t1, $t0);
_fmul($t0, $t1, $z2_20_0);
_fsquare($t1, $t0);
_fsquare($t0, $t1);
_fsquare($t1, $t0);
_fsquare($t0, $t1);
_fsquare($t1, $t0);
_fsquare($t0, $t1);
_fsquare($t1, $t0);
_fsquare($t0, $t1);
_fsquare($t1, $t0);
_fsquare($t0, $t1);
_fmul($z2_50_0, $t0, $z2_10_0);
_fsquare($t0, $z2_50_0);
_fsquare($t1, $t0);
$i$33 = 2;
while (1) {
_fsquare($t0, $t1);
_fsquare($t1, $t0);
$0 = ($i$33 + 2) | 0;
$1 = ($0 | 0) < 50;
if ($1) {
$i$33 = $0;
} else {
break;
}
}
_fmul($z2_100_0, $t1, $z2_50_0);
_fsquare($t1, $z2_100_0);
_fsquare($t0, $t1);
$i$42 = 2;
while (1) {
_fsquare($t1, $t0);
_fsquare($t0, $t1);
$2 = ($i$42 + 2) | 0;
$3 = ($2 | 0) < 100;
if ($3) {
$i$42 = $2;
} else {
break;
}
}
_fmul($t1, $t0, $z2_100_0);
_fsquare($t0, $t1);
_fsquare($t1, $t0);
$i$51 = 2;
while (1) {
_fsquare($t0, $t1);
_fsquare($t1, $t0);
$4 = ($i$51 + 2) | 0;
$5 = ($4 | 0) < 50;
if ($5) {
$i$51 = $4;
} else {
break;
}
}
_fmul($t0, $t1, $z2_50_0);
_fsquare($t1, $t0);
_fsquare($t0, $t1);
_fsquare($t1, $t0);
_fsquare($t0, $t1);
_fsquare($t1, $t0);
_fmul($out, $t1, $z11);
STACKTOP = sp;
return;
}
function _fmul($output, $in, $in2) {
$output = $output | 0;
$in = $in | 0;
$in2 = $in2 | 0;
var $t = 0,
dest = 0,
label = 0,
sp = 0,
src = 0,
stop = 0;
sp = STACKTOP;
STACKTOP = (STACKTOP + 160) | 0;
$t = sp;
_fproduct($t, $in, $in2);
_freduce_degree($t);
_freduce_coefficients($t);
dest = ($output + 0) | 0;
src = ($t + 0) | 0;
stop = (dest + 80) | 0;
do {
HEAP32[dest >> 2] = HEAP32[src >> 2] | 0;
dest = (dest + 4) | 0;
src = (src + 4) | 0;
} while ((dest | 0) < (stop | 0));
STACKTOP = sp;
return;
}
function _fcontract($output, $input_limbs) {
$output = $output | 0;
$input_limbs = $input_limbs | 0;
var $$pn = 0,
$0 = 0,
$1 = 0,
$10 = 0,
$100 = 0,
$101 = 0,
$102 = 0,
$103 = 0,
$104 = 0,
$105 = 0,
$106 = 0,
$107 = 0,
$108 = 0,
$109 = 0,
$11 = 0,
$110 = 0,
$111 = 0,
$112 = 0,
$113 = 0,
$114 = 0;
var $115 = 0,
$116 = 0,
$117 = 0,
$118 = 0,
$119 = 0,
$12 = 0,
$120 = 0,
$121 = 0,
$122 = 0,
$123 = 0,
$124 = 0,
$125 = 0,
$126 = 0,
$127 = 0,
$128 = 0,
$129 = 0,
$13 = 0,
$130 = 0,
$131 = 0,
$132 = 0;
var $133 = 0,
$134 = 0,
$135 = 0,
$136 = 0,
$137 = 0,
$138 = 0,
$139 = 0,
$14 = 0,
$140 = 0,
$141 = 0,
$142 = 0,
$143 = 0,
$144 = 0,
$145 = 0,
$146 = 0,
$147 = 0,
$148 = 0,
$149 = 0,
$15 = 0,
$150 = 0;
var $151 = 0,
$152 = 0,
$153 = 0,
$154 = 0,
$155 = 0,
$156 = 0,
$157 = 0,
$158 = 0,
$159 = 0,
$16 = 0,
$160 = 0,
$161 = 0,
$162 = 0,
$163 = 0,
$164 = 0,
$165 = 0,
$166 = 0,
$167 = 0,
$168 = 0,
$169 = 0;
var $17 = 0,
$170 = 0,
$171 = 0,
$172 = 0,
$173 = 0,
$174 = 0,
$175 = 0,
$176 = 0,
$177 = 0,
$178 = 0,
$179 = 0,
$18 = 0,
$180 = 0,
$181 = 0,
$182 = 0,
$183 = 0,
$184 = 0,
$185 = 0,
$186 = 0,
$187 = 0;
var $188 = 0,
$189 = 0,
$19 = 0,
$190 = 0,
$191 = 0,
$192 = 0,
$193 = 0,
$194 = 0,
$195 = 0,
$196 = 0,
$197 = 0,
$198 = 0,
$199 = 0,
$2 = 0,
$20 = 0,
$200 = 0,
$201 = 0,
$202 = 0,
$203 = 0,
$204 = 0;
var $205 = 0,
$206 = 0,
$207 = 0,
$208 = 0,
$209 = 0,
$21 = 0,
$210 = 0,
$211 = 0,
$212 = 0,
$213 = 0,
$214 = 0,
$215 = 0,
$216 = 0,
$217 = 0,
$218 = 0,
$219 = 0,
$22 = 0,
$220 = 0,
$221 = 0,
$222 = 0;
var $223 = 0,
$224 = 0,
$225 = 0,
$226 = 0,
$227 = 0,
$228 = 0,
$229 = 0,
$23 = 0,
$230 = 0,
$231 = 0,
$232 = 0,
$233 = 0,
$234 = 0,
$235 = 0,
$236 = 0,
$237 = 0,
$238 = 0,
$239 = 0,
$24 = 0,
$240 = 0;
var $241 = 0,
$242 = 0,
$243 = 0,
$244 = 0,
$245 = 0,
$246 = 0,
$247 = 0,
$248 = 0,
$249 = 0,
$25 = 0,
$250 = 0,
$251 = 0,
$252 = 0,
$253 = 0,
$254 = 0,
$255 = 0,
$256 = 0,
$257 = 0,
$258 = 0,
$259 = 0;
var $26 = 0,
$260 = 0,
$261 = 0,
$262 = 0,
$263 = 0,
$264 = 0,
$265 = 0,
$266 = 0,
$267 = 0,
$268 = 0,
$269 = 0,
$27 = 0,
$270 = 0,
$271 = 0,
$272 = 0,
$273 = 0,
$274 = 0,
$275 = 0,
$276 = 0,
$277 = 0;
var $278 = 0,
$279 = 0,
$28 = 0,
$280 = 0,
$281 = 0,
$282 = 0,
$283 = 0,
$284 = 0,
$285 = 0,
$286 = 0,
$287 = 0,
$288 = 0,
$289 = 0,
$29 = 0,
$290 = 0,
$291 = 0,
$292 = 0,
$293 = 0,
$294 = 0,
$295 = 0;
var $296 = 0,
$297 = 0,
$298 = 0,
$299 = 0,
$3 = 0,
$30 = 0,
$300 = 0,
$301 = 0,
$302 = 0,
$303 = 0,
$304 = 0,
$305 = 0,
$306 = 0,
$307 = 0,
$308 = 0,
$309 = 0,
$31 = 0,
$310 = 0,
$311 = 0,
$312 = 0;
var $313 = 0,
$314 = 0,
$315 = 0,
$316 = 0,
$317 = 0,
$318 = 0,
$319 = 0,
$32 = 0,
$320 = 0,
$321 = 0,
$322 = 0,
$323 = 0,
$324 = 0,
$325 = 0,
$326 = 0,
$327 = 0,
$328 = 0,
$329 = 0,
$33 = 0,
$330 = 0;
var $331 = 0,
$332 = 0,
$333 = 0,
$334 = 0,
$335 = 0,
$336 = 0,
$337 = 0,
$338 = 0,
$339 = 0,
$34 = 0,
$340 = 0,
$341 = 0,
$342 = 0,
$343 = 0,
$344 = 0,
$345 = 0,
$346 = 0,
$347 = 0,
$348 = 0,
$349 = 0;
var $35 = 0,
$350 = 0,
$351 = 0,
$352 = 0,
$353 = 0,
$354 = 0,
$355 = 0,
$356 = 0,
$357 = 0,
$358 = 0,
$359 = 0,
$36 = 0,
$360 = 0,
$361 = 0,
$362 = 0,
$363 = 0,
$364 = 0,
$365 = 0,
$366 = 0,
$367 = 0;
var $368 = 0,
$369 = 0,
$37 = 0,
$370 = 0,
$371 = 0,
$372 = 0,
$373 = 0,
$374 = 0,
$375 = 0,
$376 = 0,
$377 = 0,
$378 = 0,
$379 = 0,
$38 = 0,
$380 = 0,
$381 = 0,
$382 = 0,
$383 = 0,
$384 = 0,
$385 = 0;
var $386 = 0,
$387 = 0,
$388 = 0,
$389 = 0,
$39 = 0,
$390 = 0,
$391 = 0,
$392 = 0,
$393 = 0,
$394 = 0,
$395 = 0,
$396 = 0,
$397 = 0,
$398 = 0,
$399 = 0,
$4 = 0,
$40 = 0,
$400 = 0,
$401 = 0,
$402 = 0;
var $403 = 0,
$404 = 0,
$41 = 0,
$42 = 0,
$43 = 0,
$44 = 0,
$45 = 0,
$46 = 0,
$47 = 0,
$48 = 0,
$49 = 0,
$5 = 0,
$50 = 0,
$51 = 0,
$52 = 0,
$53 = 0,
$54 = 0,
$55 = 0,
$56 = 0,
$57 = 0;
var $58 = 0,
$59 = 0,
$6 = 0,
$60 = 0,
$61 = 0,
$62 = 0,
$63 = 0,
$64 = 0,
$65 = 0,
$66 = 0,
$67 = 0,
$68 = 0,
$69 = 0,
$7 = 0,
$70 = 0,
$71 = 0,
$72 = 0,
$73 = 0,
$74 = 0,
$75 = 0;
var $76 = 0,
$77 = 0,
$78 = 0,
$79 = 0,
$8 = 0,
$80 = 0,
$81 = 0,
$82 = 0,
$83 = 0,
$84 = 0,
$85 = 0,
$86 = 0,
$87 = 0,
$88 = 0,
$89 = 0,
$9 = 0,
$90 = 0,
$91 = 0,
$92 = 0,
$93 = 0;
var $94 = 0,
$95 = 0,
$96 = 0,
$97 = 0,
$98 = 0,
$99 = 0,
$exitcond = 0,
$exitcond11 = 0,
$exitcond11$1 = 0,
$exitcond14 = 0,
$exitcond14$1 = 0,
$i$17 = 0,
$i$17$1 = 0,
$i$24 = 0,
$i$24$1 = 0,
$i$33 = 0,
$input = 0,
$mask$02 = 0,
$mask$1 = 0,
label = 0;
var sp = 0;
sp = STACKTOP;
STACKTOP = (STACKTOP + 48) | 0;
$input = sp;
$0 = $input_limbs;
$1 = $0;
$2 = HEAP32[$1 >> 2] | 0;
$3 = ($0 + 4) | 0;
$4 = $3;
$5 = HEAP32[$4 >> 2] | 0;
HEAP32[$input >> 2] = $2;
$6 = ($input_limbs + 8) | 0;
$7 = $6;
$8 = $7;
$9 = HEAP32[$8 >> 2] | 0;
$10 = ($7 + 4) | 0;
$11 = $10;
$12 = HEAP32[$11 >> 2] | 0;
$13 = ($input + 4) | 0;
HEAP32[$13 >> 2] = $9;
$14 = ($input_limbs + 16) | 0;
$15 = $14;
$16 = $15;
$17 = HEAP32[$16 >> 2] | 0;
$18 = ($15 + 4) | 0;
$19 = $18;
$20 = HEAP32[$19 >> 2] | 0;
$21 = ($input + 8) | 0;
HEAP32[$21 >> 2] = $17;
$22 = ($input_limbs + 24) | 0;
$23 = $22;
$24 = $23;
$25 = HEAP32[$24 >> 2] | 0;
$26 = ($23 + 4) | 0;
$27 = $26;
$28 = HEAP32[$27 >> 2] | 0;
$29 = ($input + 12) | 0;
HEAP32[$29 >> 2] = $25;
$30 = ($input_limbs + 32) | 0;
$31 = $30;
$32 = $31;
$33 = HEAP32[$32 >> 2] | 0;
$34 = ($31 + 4) | 0;
$35 = $34;
$36 = HEAP32[$35 >> 2] | 0;
$37 = ($input + 16) | 0;
HEAP32[$37 >> 2] = $33;
$38 = ($input_limbs + 40) | 0;
$39 = $38;
$40 = $39;
$41 = HEAP32[$40 >> 2] | 0;
$42 = ($39 + 4) | 0;
$43 = $42;
$44 = HEAP32[$43 >> 2] | 0;
$45 = ($input + 20) | 0;
HEAP32[$45 >> 2] = $41;
$46 = ($input_limbs + 48) | 0;
$47 = $46;
$48 = $47;
$49 = HEAP32[$48 >> 2] | 0;
$50 = ($47 + 4) | 0;
$51 = $50;
$52 = HEAP32[$51 >> 2] | 0;
$53 = ($input + 24) | 0;
HEAP32[$53 >> 2] = $49;
$54 = ($input_limbs + 56) | 0;
$55 = $54;
$56 = $55;
$57 = HEAP32[$56 >> 2] | 0;
$58 = ($55 + 4) | 0;
$59 = $58;
$60 = HEAP32[$59 >> 2] | 0;
$61 = ($input + 28) | 0;
HEAP32[$61 >> 2] = $57;
$62 = ($input_limbs + 64) | 0;
$63 = $62;
$64 = $63;
$65 = HEAP32[$64 >> 2] | 0;
$66 = ($63 + 4) | 0;
$67 = $66;
$68 = HEAP32[$67 >> 2] | 0;
$69 = ($input + 32) | 0;
HEAP32[$69 >> 2] = $65;
$70 = ($input_limbs + 72) | 0;
$71 = $70;
$72 = $71;
$73 = HEAP32[$72 >> 2] | 0;
$74 = ($71 + 4) | 0;
$75 = $74;
$76 = HEAP32[$75 >> 2] | 0;
$77 = ($input + 36) | 0;
HEAP32[$77 >> 2] = $73;
$78 = ($input + 36) | 0;
$i$17 = 0;
while (1) {
$79 = $i$17 & 1;
$80 = ($79 | 0) == 0;
$81 = ($input + ($i$17 << 2)) | 0;
$82 = HEAP32[$81 >> 2] | 0;
$83 = $82 >> 31;
$84 = $83 & $82;
if ($80) {
$92 = $84 >> 26;
$93 = Math_imul($92, -67108864) | 0;
$94 = ($93 + $82) | 0;
HEAP32[$81 >> 2] = $94;
$95 = ($i$17 + 1) | 0;
$96 = ($input + ($95 << 2)) | 0;
$97 = HEAP32[$96 >> 2] | 0;
$98 = ($97 + $92) | 0;
HEAP32[$96 >> 2] = $98;
} else {
$85 = $84 >> 25;
$86 = Math_imul($85, -33554432) | 0;
$87 = ($86 + $82) | 0;
HEAP32[$81 >> 2] = $87;
$88 = ($i$17 + 1) | 0;
$89 = ($input + ($88 << 2)) | 0;
$90 = HEAP32[$89 >> 2] | 0;
$91 = ($90 + $85) | 0;
HEAP32[$89 >> 2] = $91;
}
$99 = ($i$17 + 1) | 0;
$exitcond14 = ($99 | 0) == 9;
if ($exitcond14) {
break;
} else {
$i$17 = $99;
}
}
$100 = HEAP32[$78 >> 2] | 0;
$101 = $100 >> 31;
$102 = $101 & $100;
$103 = $102 >> 25;
$104 = Math_imul($103, -33554432) | 0;
$105 = ($104 + $100) | 0;
HEAP32[$78 >> 2] = $105;
$106 = HEAP32[$input >> 2] | 0;
$107 = ($103 * 19) | 0;
$108 = ($107 + $106) | 0;
HEAP32[$input >> 2] = $108;
$i$17$1 = 0;
while (1) {
$384 = $i$17$1 & 1;
$385 = ($384 | 0) == 0;
$386 = ($input + ($i$17$1 << 2)) | 0;
$387 = HEAP32[$386 >> 2] | 0;
$388 = $387 >> 31;
$389 = $388 & $387;
if ($385) {
$397 = $389 >> 26;
$398 = Math_imul($397, -67108864) | 0;
$399 = ($398 + $387) | 0;
HEAP32[$386 >> 2] = $399;
$400 = ($i$17$1 + 1) | 0;
$401 = ($input + ($400 << 2)) | 0;
$402 = HEAP32[$401 >> 2] | 0;
$403 = ($402 + $397) | 0;
HEAP32[$401 >> 2] = $403;
} else {
$390 = $389 >> 25;
$391 = Math_imul($390, -33554432) | 0;
$392 = ($391 + $387) | 0;
HEAP32[$386 >> 2] = $392;
$393 = ($i$17$1 + 1) | 0;
$394 = ($input + ($393 << 2)) | 0;
$395 = HEAP32[$394 >> 2] | 0;
$396 = ($395 + $390) | 0;
HEAP32[$394 >> 2] = $396;
}
$404 = ($i$17$1 + 1) | 0;
$exitcond14$1 = ($404 | 0) == 9;
if ($exitcond14$1) {
break;
} else {
$i$17$1 = $404;
}
}
$109 = HEAP32[$78 >> 2] | 0;
$110 = $109 >> 31;
$111 = $110 & $109;
$112 = $111 >> 25;
$113 = Math_imul($112, -33554432) | 0;
$114 = ($113 + $109) | 0;
HEAP32[$78 >> 2] = $114;
$115 = HEAP32[$input >> 2] | 0;
$116 = ($112 * 19) | 0;
$117 = ($116 + $115) | 0;
$118 = $117 >> 31;
$119 = $118 & $117;
$120 = $119 >> 26;
$121 = Math_imul($120, -67108864) | 0;
$122 = ($121 + $117) | 0;
HEAP32[$input >> 2] = $122;
$123 = ($input + 4) | 0;
$124 = HEAP32[$123 >> 2] | 0;
$125 = ($120 + $124) | 0;
HEAP32[$123 >> 2] = $125;
$126 = ($input + 36) | 0;
$i$24 = 0;
while (1) {
$127 = $i$24 & 1;
$128 = ($127 | 0) == 0;
$129 = ($input + ($i$24 << 2)) | 0;
$130 = HEAP32[$129 >> 2] | 0;
if ($128) {
$137 = $130 >> 26;
$138 = $130 & 67108863;
HEAP32[$129 >> 2] = $138;
$139 = ($i$24 + 1) | 0;
$140 = ($input + ($139 << 2)) | 0;
$141 = HEAP32[$140 >> 2] | 0;
$142 = ($141 + $137) | 0;
HEAP32[$140 >> 2] = $142;
} else {
$131 = $130 >> 25;
$132 = $130 & 33554431;
HEAP32[$129 >> 2] = $132;
$133 = ($i$24 + 1) | 0;
$134 = ($input + ($133 << 2)) | 0;
$135 = HEAP32[$134 >> 2] | 0;
$136 = ($135 + $131) | 0;
HEAP32[$134 >> 2] = $136;
}
$143 = ($i$24 + 1) | 0;
$exitcond11 = ($143 | 0) == 9;
if ($exitcond11) {
break;
} else {
$i$24 = $143;
}
}
$144 = HEAP32[$126 >> 2] | 0;
$145 = $144 >> 25;
$146 = $144 & 33554431;
HEAP32[$126 >> 2] = $146;
$147 = ($145 * 19) | 0;
$148 = HEAP32[$input >> 2] | 0;
$149 = ($147 + $148) | 0;
HEAP32[$input >> 2] = $149;
$i$24$1 = 0;
while (1) {
$360 = $i$24$1 & 1;
$361 = ($360 | 0) == 0;
$362 = ($input + ($i$24$1 << 2)) | 0;
$363 = HEAP32[$362 >> 2] | 0;
if ($361) {
$370 = $363 >> 26;
$371 = $363 & 67108863;
HEAP32[$362 >> 2] = $371;
$372 = ($i$24$1 + 1) | 0;
$373 = ($input + ($372 << 2)) | 0;
$374 = HEAP32[$373 >> 2] | 0;
$375 = ($374 + $370) | 0;
HEAP32[$373 >> 2] = $375;
} else {
$364 = $363 >> 25;
$365 = $363 & 33554431;
HEAP32[$362 >> 2] = $365;
$366 = ($i$24$1 + 1) | 0;
$367 = ($input + ($366 << 2)) | 0;
$368 = HEAP32[$367 >> 2] | 0;
$369 = ($368 + $364) | 0;
HEAP32[$367 >> 2] = $369;
}
$376 = ($i$24$1 + 1) | 0;
$exitcond11$1 = ($376 | 0) == 9;
if ($exitcond11$1) {
break;
} else {
$i$24$1 = $376;
}
}
$377 = HEAP32[$126 >> 2] | 0;
$378 = $377 >> 25;
$379 = $377 & 33554431;
HEAP32[$126 >> 2] = $379;
$380 = ($378 * 19) | 0;
$381 = HEAP32[$input >> 2] | 0;
$382 = ($380 + $381) | 0;
HEAP32[$input >> 2] = $382;
$383 = _s32_gte($382) | 0;
$i$33 = 1;
$mask$02 = $383;
while (1) {
$150 = $i$33 & 1;
$151 = ($150 | 0) == 0;
$152 = ($input + ($i$33 << 2)) | 0;
$153 = HEAP32[$152 >> 2] | 0;
if ($151) {
$155 = _s32_eq($153, 67108863) | 0;
$$pn = $155;
} else {
$154 = _s32_eq($153, 33554431) | 0;
$$pn = $154;
}
$mask$1 = $$pn & $mask$02;
$156 = ($i$33 + 1) | 0;
$exitcond = ($156 | 0) == 10;
if ($exitcond) {
break;
} else {
$i$33 = $156;
$mask$02 = $mask$1;
}
}
$157 = $mask$1 & 67108845;
$158 = HEAP32[$input >> 2] | 0;
$159 = ($158 - $157) | 0;
HEAP32[$input >> 2] = $159;
$160 = $mask$1 & 67108863;
$161 = $mask$1 & 33554431;
$162 = ($input + 4) | 0;
$163 = HEAP32[$162 >> 2] | 0;
$164 = ($163 - $161) | 0;
HEAP32[$162 >> 2] = $164;
$165 = ($input + 8) | 0;
$166 = HEAP32[$165 >> 2] | 0;
$167 = ($166 - $160) | 0;
HEAP32[$165 >> 2] = $167;
$168 = ($input + 12) | 0;
$169 = HEAP32[$168 >> 2] | 0;
$170 = ($169 - $161) | 0;
HEAP32[$168 >> 2] = $170;
$171 = ($input + 16) | 0;
$172 = HEAP32[$171 >> 2] | 0;
$173 = ($172 - $160) | 0;
HEAP32[$171 >> 2] = $173;
$174 = ($input + 20) | 0;
$175 = HEAP32[$174 >> 2] | 0;
$176 = ($175 - $161) | 0;
HEAP32[$174 >> 2] = $176;
$177 = ($input + 24) | 0;
$178 = HEAP32[$177 >> 2] | 0;
$179 = ($178 - $160) | 0;
HEAP32[$177 >> 2] = $179;
$180 = ($input + 28) | 0;
$181 = HEAP32[$180 >> 2] | 0;
$182 = ($181 - $161) | 0;
HEAP32[$180 >> 2] = $182;
$183 = ($input + 32) | 0;
$184 = HEAP32[$183 >> 2] | 0;
$185 = ($184 - $160) | 0;
HEAP32[$183 >> 2] = $185;
$186 = ($input + 36) | 0;
$187 = HEAP32[$186 >> 2] | 0;
$188 = ($187 - $161) | 0;
HEAP32[$186 >> 2] = $188;
$189 = HEAP32[$123 >> 2] | 0;
$190 = $189 << 2;
HEAP32[$123 >> 2] = $190;
$191 = ($input + 8) | 0;
$192 = HEAP32[$191 >> 2] | 0;
$193 = $192 << 3;
HEAP32[$191 >> 2] = $193;
$194 = ($input + 12) | 0;
$195 = HEAP32[$194 >> 2] | 0;
$196 = $195 << 5;
HEAP32[$194 >> 2] = $196;
$197 = ($input + 16) | 0;
$198 = HEAP32[$197 >> 2] | 0;
$199 = $198 << 6;
HEAP32[$197 >> 2] = $199;
$200 = ($input + 24) | 0;
$201 = HEAP32[$200 >> 2] | 0;
$202 = $201 << 1;
HEAP32[$200 >> 2] = $202;
$203 = ($input + 28) | 0;
$204 = HEAP32[$203 >> 2] | 0;
$205 = $204 << 3;
HEAP32[$203 >> 2] = $205;
$206 = ($input + 32) | 0;
$207 = HEAP32[$206 >> 2] | 0;
$208 = $207 << 4;
HEAP32[$206 >> 2] = $208;
$209 = ($input + 36) | 0;
$210 = HEAP32[$209 >> 2] | 0;
$211 = $210 << 6;
HEAP32[$209 >> 2] = $211;
HEAP8[$output >> 0] = 0;
$212 = ($output + 16) | 0;
HEAP8[$212 >> 0] = 0;
$213 = HEAP32[$input >> 2] | 0;
$214 = HEAP8[$output >> 0] | 0;
$215 = $214 & 255;
$216 = $215 | $213;
$217 = $216 & 255;
HEAP8[$output >> 0] = $217;
$218 = HEAP32[$input >> 2] | 0;
$219 = $218 >>> 8;
$220 = $219 & 255;
$221 = ($output + 1) | 0;
HEAP8[$221 >> 0] = $220;
$222 = HEAP32[$input >> 2] | 0;
$223 = $222 >>> 16;
$224 = $223 & 255;
$225 = ($output + 2) | 0;
HEAP8[$225 >> 0] = $224;
$226 = HEAP32[$input >> 2] | 0;
$227 = $226 >>> 24;
$228 = ($output + 3) | 0;
$229 = HEAP32[$123 >> 2] | 0;
$230 = $227 | $229;
$231 = $230 & 255;
HEAP8[$228 >> 0] = $231;
$232 = HEAP32[$123 >> 2] | 0;
$233 = $232 >>> 8;
$234 = $233 & 255;
$235 = ($output + 4) | 0;
HEAP8[$235 >> 0] = $234;
$236 = HEAP32[$123 >> 2] | 0;
$237 = $236 >>> 16;
$238 = $237 & 255;
$239 = ($output + 5) | 0;
HEAP8[$239 >> 0] = $238;
$240 = HEAP32[$123 >> 2] | 0;
$241 = $240 >>> 24;
$242 = ($output + 6) | 0;
$243 = HEAP32[$191 >> 2] | 0;
$244 = $241 | $243;
$245 = $244 & 255;
HEAP8[$242 >> 0] = $245;
$246 = HEAP32[$191 >> 2] | 0;
$247 = $246 >>> 8;
$248 = $247 & 255;
$249 = ($output + 7) | 0;
HEAP8[$249 >> 0] = $248;
$250 = HEAP32[$191 >> 2] | 0;
$251 = $250 >>> 16;
$252 = $251 & 255;
$253 = ($output + 8) | 0;
HEAP8[$253 >> 0] = $252;
$254 = HEAP32[$191 >> 2] | 0;
$255 = $254 >>> 24;
$256 = ($output + 9) | 0;
$257 = HEAP32[$194 >> 2] | 0;
$258 = $255 | $257;
$259 = $258 & 255;
HEAP8[$256 >> 0] = $259;
$260 = HEAP32[$194 >> 2] | 0;
$261 = $260 >>> 8;
$262 = $261 & 255;
$263 = ($output + 10) | 0;
HEAP8[$263 >> 0] = $262;
$264 = HEAP32[$194 >> 2] | 0;
$265 = $264 >>> 16;
$266 = $265 & 255;
$267 = ($output + 11) | 0;
HEAP8[$267 >> 0] = $266;
$268 = HEAP32[$194 >> 2] | 0;
$269 = $268 >>> 24;
$270 = ($output + 12) | 0;
$271 = HEAP32[$197 >> 2] | 0;
$272 = $269 | $271;
$273 = $272 & 255;
HEAP8[$270 >> 0] = $273;
$274 = HEAP32[$197 >> 2] | 0;
$275 = $274 >>> 8;
$276 = $275 & 255;
$277 = ($output + 13) | 0;
HEAP8[$277 >> 0] = $276;
$278 = HEAP32[$197 >> 2] | 0;
$279 = $278 >>> 16;
$280 = $279 & 255;
$281 = ($output + 14) | 0;
HEAP8[$281 >> 0] = $280;
$282 = HEAP32[$197 >> 2] | 0;
$283 = $282 >>> 24;
$284 = $283 & 255;
$285 = ($output + 15) | 0;
HEAP8[$285 >> 0] = $284;
$286 = ($input + 20) | 0;
$287 = HEAP32[$286 >> 2] | 0;
$288 = HEAP8[$212 >> 0] | 0;
$289 = $288 & 255;
$290 = $289 | $287;
$291 = $290 & 255;
HEAP8[$212 >> 0] = $291;
$292 = HEAP32[$286 >> 2] | 0;
$293 = $292 >>> 8;
$294 = $293 & 255;
$295 = ($output + 17) | 0;
HEAP8[$295 >> 0] = $294;
$296 = HEAP32[$286 >> 2] | 0;
$297 = $296 >>> 16;
$298 = $297 & 255;
$299 = ($output + 18) | 0;
HEAP8[$299 >> 0] = $298;
$300 = HEAP32[$286 >> 2] | 0;
$301 = $300 >>> 24;
$302 = ($output + 19) | 0;
$303 = HEAP32[$200 >> 2] | 0;
$304 = $301 | $303;
$305 = $304 & 255;
HEAP8[$302 >> 0] = $305;
$306 = HEAP32[$200 >> 2] | 0;
$307 = $306 >>> 8;
$308 = $307 & 255;
$309 = ($output + 20) | 0;
HEAP8[$309 >> 0] = $308;
$310 = HEAP32[$200 >> 2] | 0;
$311 = $310 >>> 16;
$312 = $311 & 255;
$313 = ($output + 21) | 0;
HEAP8[$313 >> 0] = $312;
$314 = HEAP32[$200 >> 2] | 0;
$315 = $314 >>> 24;
$316 = ($output + 22) | 0;
$317 = HEAP32[$203 >> 2] | 0;
$318 = $315 | $317;
$319 = $318 & 255;
HEAP8[$316 >> 0] = $319;
$320 = HEAP32[$203 >> 2] | 0;
$321 = $320 >>> 8;
$322 = $321 & 255;
$323 = ($output + 23) | 0;
HEAP8[$323 >> 0] = $322;
$324 = HEAP32[$203 >> 2] | 0;
$325 = $324 >>> 16;
$326 = $325 & 255;
$327 = ($output + 24) | 0;
HEAP8[$327 >> 0] = $326;
$328 = HEAP32[$203 >> 2] | 0;
$329 = $328 >>> 24;
$330 = ($output + 25) | 0;
$331 = HEAP32[$206 >> 2] | 0;
$332 = $329 | $331;
$333 = $332 & 255;
HEAP8[$330 >> 0] = $333;
$334 = HEAP32[$206 >> 2] | 0;
$335 = $334 >>> 8;
$336 = $335 & 255;
$337 = ($output + 26) | 0;
HEAP8[$337 >> 0] = $336;
$338 = HEAP32[$206 >> 2] | 0;
$339 = $338 >>> 16;
$340 = $339 & 255;
$341 = ($output + 27) | 0;
HEAP8[$341 >> 0] = $340;
$342 = HEAP32[$206 >> 2] | 0;
$343 = $342 >>> 24;
$344 = ($output + 28) | 0;
$345 = HEAP32[$209 >> 2] | 0;
$346 = $343 | $345;
$347 = $346 & 255;
HEAP8[$344 >> 0] = $347;
$348 = HEAP32[$209 >> 2] | 0;
$349 = $348 >>> 8;
$350 = $349 & 255;
$351 = ($output + 29) | 0;
HEAP8[$351 >> 0] = $350;
$352 = HEAP32[$209 >> 2] | 0;
$353 = $352 >>> 16;
$354 = $353 & 255;
$355 = ($output + 30) | 0;
HEAP8[$355 >> 0] = $354;
$356 = HEAP32[$209 >> 2] | 0;
$357 = $356 >>> 24;
$358 = $357 & 255;
$359 = ($output + 31) | 0;
HEAP8[$359 >> 0] = $358;
STACKTOP = sp;
return;
}
function _swap_conditional($a, $b, $0, $1) {
$a = $a | 0;
$b = $b | 0;
$0 = $0 | 0;
$1 = $1 | 0;
var $10 = 0,
$11 = 0,
$12 = 0,
$13 = 0,
$14 = 0,
$15 = 0,
$16 = 0,
$17 = 0,
$18 = 0,
$19 = 0,
$2 = 0,
$20 = 0,
$21 = 0,
$22 = 0,
$23 = 0,
$24 = 0,
$25 = 0,
$26 = 0,
$27 = 0,
$28 = 0;
var $29 = 0,
$3 = 0,
$30 = 0,
$31 = 0,
$32 = 0,
$33 = 0,
$34 = 0,
$35 = 0,
$36 = 0,
$37 = 0,
$38 = 0,
$39 = 0,
$4 = 0,
$40 = 0,
$41 = 0,
$42 = 0,
$5 = 0,
$6 = 0,
$7 = 0,
$8 = 0;
var $9 = 0,
$exitcond = 0,
$i$02 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$2 = _i64Subtract(0, 0, $0 | 0, $1 | 0) | 0;
$3 = tempRet0;
$i$02 = 0;
while (1) {
$4 = ($a + ($i$02 << 3)) | 0;
$5 = $4;
$6 = $5;
$7 = HEAP32[$6 >> 2] | 0;
$8 = ($5 + 4) | 0;
$9 = $8;
$10 = HEAP32[$9 >> 2] | 0;
$11 = ($b + ($i$02 << 3)) | 0;
$12 = $11;
$13 = $12;
$14 = HEAP32[$13 >> 2] | 0;
$15 = ($12 + 4) | 0;
$16 = $15;
$17 = HEAP32[$16 >> 2] | 0;
$18 = $14 ^ $7;
$19 = $17 ^ $10;
$20 = $18 & $2;
$21 = $19 & $3;
$22 = $20 ^ $7;
$21 ^ $10;
$23 = _bitshift64Ashr(0, $22 | 0, 32) | 0;
$24 = tempRet0;
$25 = $4;
$26 = $25;
HEAP32[$26 >> 2] = $23;
$27 = ($25 + 4) | 0;
$28 = $27;
HEAP32[$28 >> 2] = $24;
$29 = $11;
$30 = $29;
$31 = HEAP32[$30 >> 2] | 0;
$32 = ($29 + 4) | 0;
$33 = $32;
$34 = HEAP32[$33 >> 2] | 0;
$35 = $20 ^ $31;
$21 ^ $34;
$36 = _bitshift64Ashr(0, $35 | 0, 32) | 0;
$37 = tempRet0;
$38 = $11;
$39 = $38;
HEAP32[$39 >> 2] = $36;
$40 = ($38 + 4) | 0;
$41 = $40;
HEAP32[$41 >> 2] = $37;
$42 = ($i$02 + 1) | 0;
$exitcond = ($42 | 0) == 10;
if ($exitcond) {
break;
} else {
$i$02 = $42;
}
}
STACKTOP = sp;
return;
}
function _fmonty($x2, $z2, $x3, $z3, $x, $z, $xprime, $zprime, $qmqp) {
$x2 = $x2 | 0;
$z2 = $z2 | 0;
$x3 = $x3 | 0;
$z3 = $z3 | 0;
$x = $x | 0;
$z = $z | 0;
$xprime = $xprime | 0;
$zprime = $zprime | 0;
$qmqp = $qmqp | 0;
var $0 = 0,
$origx = 0,
$origxprime = 0,
$xx = 0,
$xxprime = 0,
$xxxprime = 0,
$zz = 0,
$zzprime = 0,
$zzz = 0,
$zzzprime = 0,
dest = 0,
label = 0,
sp = 0,
src = 0,
stop = 0;
sp = STACKTOP;
STACKTOP = (STACKTOP + 1232) | 0;
$origx = (sp + 1144) | 0;
$origxprime = (sp + 1064) | 0;
$zzz = (sp + 912) | 0;
$xx = (sp + 760) | 0;
$zz = (sp + 608) | 0;
$xxprime = (sp + 456) | 0;
$zzprime = (sp + 304) | 0;
$zzzprime = (sp + 152) | 0;
$xxxprime = sp;
dest = ($origx + 0) | 0;
src = ($x + 0) | 0;
stop = (dest + 80) | 0;
do {
HEAP32[dest >> 2] = HEAP32[src >> 2] | 0;
dest = (dest + 4) | 0;
src = (src + 4) | 0;
} while ((dest | 0) < (stop | 0));
_fsum($x, $z);
_fdifference($z, $origx);
dest = ($origxprime + 0) | 0;
src = ($xprime + 0) | 0;
stop = (dest + 80) | 0;
do {
HEAP32[dest >> 2] = HEAP32[src >> 2] | 0;
dest = (dest + 4) | 0;
src = (src + 4) | 0;
} while ((dest | 0) < (stop | 0));
_fsum($xprime, $zprime);
_fdifference($zprime, $origxprime);
_fproduct($xxprime, $xprime, $z);
_fproduct($zzprime, $x, $zprime);
_freduce_degree($xxprime);
_freduce_coefficients($xxprime);
_freduce_degree($zzprime);
_freduce_coefficients($zzprime);
dest = ($origxprime + 0) | 0;
src = ($xxprime + 0) | 0;
stop = (dest + 80) | 0;
do {
HEAP32[dest >> 2] = HEAP32[src >> 2] | 0;
dest = (dest + 4) | 0;
src = (src + 4) | 0;
} while ((dest | 0) < (stop | 0));
_fsum($xxprime, $zzprime);
_fdifference($zzprime, $origxprime);
_fsquare($xxxprime, $xxprime);
_fsquare($zzzprime, $zzprime);
_fproduct($zzprime, $zzzprime, $qmqp);
_freduce_degree($zzprime);
_freduce_coefficients($zzprime);
dest = ($x3 + 0) | 0;
src = ($xxxprime + 0) | 0;
stop = (dest + 80) | 0;
do {
HEAP32[dest >> 2] = HEAP32[src >> 2] | 0;
dest = (dest + 4) | 0;
src = (src + 4) | 0;
} while ((dest | 0) < (stop | 0));
dest = ($z3 + 0) | 0;
src = ($zzprime + 0) | 0;
stop = (dest + 80) | 0;
do {
HEAP32[dest >> 2] = HEAP32[src >> 2] | 0;
dest = (dest + 4) | 0;
src = (src + 4) | 0;
} while ((dest | 0) < (stop | 0));
_fsquare($xx, $x);
_fsquare($zz, $z);
_fproduct($x2, $xx, $zz);
_freduce_degree($x2);
_freduce_coefficients($x2);
_fdifference($zz, $xx);
$0 = ($zzz + 80) | 0;
dest = ($0 + 0) | 0;
stop = (dest + 72) | 0;
do {
HEAP32[dest >> 2] = 0 | 0;
dest = (dest + 4) | 0;
} while ((dest | 0) < (stop | 0));
_fscalar_product($zzz, $zz);
_freduce_coefficients($zzz);
_fsum($zzz, $xx);
_fproduct($z2, $zz, $zzz);
_freduce_degree($z2);
_freduce_coefficients($z2);
STACKTOP = sp;
return;
}
function _fsquare($output, $in) {
$output = $output | 0;
$in = $in | 0;
var $t = 0,
dest = 0,
label = 0,
sp = 0,
src = 0,
stop = 0;
sp = STACKTOP;
STACKTOP = (STACKTOP + 160) | 0;
$t = sp;
_fsquare_inner($t, $in);
_freduce_degree($t);
_freduce_coefficients($t);
dest = ($output + 0) | 0;
src = ($t + 0) | 0;
stop = (dest + 80) | 0;
do {
HEAP32[dest >> 2] = HEAP32[src >> 2] | 0;
dest = (dest + 4) | 0;
src = (src + 4) | 0;
} while ((dest | 0) < (stop | 0));
STACKTOP = sp;
return;
}
function _fproduct($output, $in2, $in) {
$output = $output | 0;
$in2 = $in2 | 0;
$in = $in | 0;
var $0 = 0,
$1 = 0,
$10 = 0,
$100 = 0,
$1000 = 0,
$1001 = 0,
$1002 = 0,
$1003 = 0,
$1004 = 0,
$1005 = 0,
$1006 = 0,
$1007 = 0,
$1008 = 0,
$1009 = 0,
$101 = 0,
$1010 = 0,
$1011 = 0,
$1012 = 0,
$1013 = 0,
$1014 = 0;
var $1015 = 0,
$1016 = 0,
$1017 = 0,
$1018 = 0,
$1019 = 0,
$102 = 0,
$1020 = 0,
$1021 = 0,
$1022 = 0,
$1023 = 0,
$1024 = 0,
$1025 = 0,
$1026 = 0,
$1027 = 0,
$1028 = 0,
$1029 = 0,
$103 = 0,
$1030 = 0,
$1031 = 0,
$1032 = 0;
var $1033 = 0,
$1034 = 0,
$1035 = 0,
$1036 = 0,
$1037 = 0,
$1038 = 0,
$1039 = 0,
$104 = 0,
$1040 = 0,
$1041 = 0,
$1042 = 0,
$1043 = 0,
$1044 = 0,
$1045 = 0,
$1046 = 0,
$1047 = 0,
$1048 = 0,
$1049 = 0,
$105 = 0,
$1050 = 0;
var $1051 = 0,
$1052 = 0,
$1053 = 0,
$1054 = 0,
$1055 = 0,
$1056 = 0,
$1057 = 0,
$1058 = 0,
$1059 = 0,
$106 = 0,
$1060 = 0,
$1061 = 0,
$1062 = 0,
$1063 = 0,
$1064 = 0,
$1065 = 0,
$1066 = 0,
$1067 = 0,
$1068 = 0,
$1069 = 0;
var $107 = 0,
$1070 = 0,
$1071 = 0,
$1072 = 0,
$1073 = 0,
$1074 = 0,
$1075 = 0,
$1076 = 0,
$1077 = 0,
$1078 = 0,
$1079 = 0,
$108 = 0,
$1080 = 0,
$1081 = 0,
$1082 = 0,
$1083 = 0,
$1084 = 0,
$1085 = 0,
$1086 = 0,
$1087 = 0;
var $1088 = 0,
$1089 = 0,
$109 = 0,
$1090 = 0,
$1091 = 0,
$1092 = 0,
$1093 = 0,
$1094 = 0,
$1095 = 0,
$1096 = 0,
$1097 = 0,
$1098 = 0,
$1099 = 0,
$11 = 0,
$110 = 0,
$1100 = 0,
$1101 = 0,
$1102 = 0,
$1103 = 0,
$1104 = 0;
var $1105 = 0,
$1106 = 0,
$1107 = 0,
$1108 = 0,
$1109 = 0,
$111 = 0,
$1110 = 0,
$1111 = 0,
$1112 = 0,
$1113 = 0,
$1114 = 0,
$1115 = 0,
$1116 = 0,
$1117 = 0,
$1118 = 0,
$1119 = 0,
$112 = 0,
$1120 = 0,
$1121 = 0,
$1122 = 0;
var $1123 = 0,
$1124 = 0,
$1125 = 0,
$1126 = 0,
$1127 = 0,
$1128 = 0,
$1129 = 0,
$113 = 0,
$1130 = 0,
$1131 = 0,
$1132 = 0,
$1133 = 0,
$1134 = 0,
$1135 = 0,
$1136 = 0,
$1137 = 0,
$1138 = 0,
$1139 = 0,
$114 = 0,
$1140 = 0;
var $1141 = 0,
$1142 = 0,
$1143 = 0,
$1144 = 0,
$1145 = 0,
$1146 = 0,
$1147 = 0,
$1148 = 0,
$1149 = 0,
$115 = 0,
$1150 = 0,
$1151 = 0,
$1152 = 0,
$1153 = 0,
$1154 = 0,
$1155 = 0,
$1156 = 0,
$1157 = 0,
$1158 = 0,
$1159 = 0;
var $116 = 0,
$1160 = 0,
$1161 = 0,
$1162 = 0,
$1163 = 0,
$1164 = 0,
$1165 = 0,
$1166 = 0,
$1167 = 0,
$1168 = 0,
$1169 = 0,
$117 = 0,
$1170 = 0,
$1171 = 0,
$1172 = 0,
$1173 = 0,
$1174 = 0,
$1175 = 0,
$1176 = 0,
$1177 = 0;
var $1178 = 0,
$1179 = 0,
$118 = 0,
$1180 = 0,
$1181 = 0,
$1182 = 0,
$1183 = 0,
$1184 = 0,
$1185 = 0,
$1186 = 0,
$1187 = 0,
$1188 = 0,
$1189 = 0,
$119 = 0,
$1190 = 0,
$1191 = 0,
$1192 = 0,
$1193 = 0,
$1194 = 0,
$1195 = 0;
var $1196 = 0,
$1197 = 0,
$1198 = 0,
$1199 = 0,
$12 = 0,
$120 = 0,
$1200 = 0,
$1201 = 0,
$1202 = 0,
$1203 = 0,
$1204 = 0,
$1205 = 0,
$1206 = 0,
$1207 = 0,
$1208 = 0,
$1209 = 0,
$121 = 0,
$1210 = 0,
$1211 = 0,
$1212 = 0;
var $1213 = 0,
$1214 = 0,
$1215 = 0,
$1216 = 0,
$1217 = 0,
$1218 = 0,
$1219 = 0,
$122 = 0,
$1220 = 0,
$1221 = 0,
$1222 = 0,
$1223 = 0,
$1224 = 0,
$1225 = 0,
$1226 = 0,
$1227 = 0,
$1228 = 0,
$1229 = 0,
$123 = 0,
$1230 = 0;
var $1231 = 0,
$1232 = 0,
$1233 = 0,
$1234 = 0,
$1235 = 0,
$1236 = 0,
$1237 = 0,
$1238 = 0,
$1239 = 0,
$124 = 0,
$1240 = 0,
$1241 = 0,
$1242 = 0,
$1243 = 0,
$1244 = 0,
$1245 = 0,
$1246 = 0,
$1247 = 0,
$1248 = 0,
$1249 = 0;
var $125 = 0,
$1250 = 0,
$1251 = 0,
$1252 = 0,
$1253 = 0,
$1254 = 0,
$1255 = 0,
$1256 = 0,
$1257 = 0,
$1258 = 0,
$1259 = 0,
$126 = 0,
$1260 = 0,
$1261 = 0,
$1262 = 0,
$1263 = 0,
$1264 = 0,
$1265 = 0,
$1266 = 0,
$1267 = 0;
var $1268 = 0,
$1269 = 0,
$127 = 0,
$1270 = 0,
$1271 = 0,
$1272 = 0,
$1273 = 0,
$1274 = 0,
$1275 = 0,
$1276 = 0,
$1277 = 0,
$1278 = 0,
$1279 = 0,
$128 = 0,
$1280 = 0,
$1281 = 0,
$1282 = 0,
$1283 = 0,
$1284 = 0,
$1285 = 0;
var $1286 = 0,
$1287 = 0,
$1288 = 0,
$1289 = 0,
$129 = 0,
$1290 = 0,
$1291 = 0,
$1292 = 0,
$1293 = 0,
$1294 = 0,
$1295 = 0,
$1296 = 0,
$1297 = 0,
$1298 = 0,
$1299 = 0,
$13 = 0,
$130 = 0,
$1300 = 0,
$1301 = 0,
$1302 = 0;
var $1303 = 0,
$1304 = 0,
$1305 = 0,
$1306 = 0,
$1307 = 0,
$1308 = 0,
$1309 = 0,
$131 = 0,
$1310 = 0,
$1311 = 0,
$1312 = 0,
$1313 = 0,
$1314 = 0,
$1315 = 0,
$1316 = 0,
$1317 = 0,
$1318 = 0,
$1319 = 0,
$132 = 0,
$1320 = 0;
var $1321 = 0,
$1322 = 0,
$1323 = 0,
$1324 = 0,
$1325 = 0,
$1326 = 0,
$1327 = 0,
$1328 = 0,
$1329 = 0,
$133 = 0,
$1330 = 0,
$1331 = 0,
$1332 = 0,
$1333 = 0,
$1334 = 0,
$1335 = 0,
$1336 = 0,
$1337 = 0,
$1338 = 0,
$1339 = 0;
var $134 = 0,
$1340 = 0,
$1341 = 0,
$1342 = 0,
$1343 = 0,
$1344 = 0,
$1345 = 0,
$1346 = 0,
$1347 = 0,
$1348 = 0,
$1349 = 0,
$135 = 0,
$1350 = 0,
$1351 = 0,
$1352 = 0,
$1353 = 0,
$1354 = 0,
$1355 = 0,
$1356 = 0,
$1357 = 0;
var $1358 = 0,
$1359 = 0,
$136 = 0,
$1360 = 0,
$1361 = 0,
$1362 = 0,
$1363 = 0,
$1364 = 0,
$1365 = 0,
$1366 = 0,
$1367 = 0,
$1368 = 0,
$1369 = 0,
$137 = 0,
$1370 = 0,
$1371 = 0,
$1372 = 0,
$1373 = 0,
$1374 = 0,
$1375 = 0;
var $1376 = 0,
$1377 = 0,
$1378 = 0,
$1379 = 0,
$138 = 0,
$1380 = 0,
$1381 = 0,
$1382 = 0,
$1383 = 0,
$1384 = 0,
$1385 = 0,
$1386 = 0,
$1387 = 0,
$1388 = 0,
$1389 = 0,
$139 = 0,
$1390 = 0,
$1391 = 0,
$1392 = 0,
$1393 = 0;
var $1394 = 0,
$1395 = 0,
$1396 = 0,
$1397 = 0,
$1398 = 0,
$1399 = 0,
$14 = 0,
$140 = 0,
$1400 = 0,
$1401 = 0,
$1402 = 0,
$1403 = 0,
$1404 = 0,
$1405 = 0,
$1406 = 0,
$1407 = 0,
$1408 = 0,
$1409 = 0,
$141 = 0,
$1410 = 0;
var $1411 = 0,
$1412 = 0,
$1413 = 0,
$1414 = 0,
$1415 = 0,
$1416 = 0,
$1417 = 0,
$1418 = 0,
$1419 = 0,
$142 = 0,
$1420 = 0,
$1421 = 0,
$1422 = 0,
$1423 = 0,
$1424 = 0,
$1425 = 0,
$1426 = 0,
$1427 = 0,
$1428 = 0,
$1429 = 0;
var $143 = 0,
$1430 = 0,
$1431 = 0,
$1432 = 0,
$1433 = 0,
$1434 = 0,
$1435 = 0,
$1436 = 0,
$1437 = 0,
$1438 = 0,
$1439 = 0,
$144 = 0,
$1440 = 0,
$1441 = 0,
$1442 = 0,
$1443 = 0,
$1444 = 0,
$1445 = 0,
$1446 = 0,
$1447 = 0;
var $1448 = 0,
$1449 = 0,
$145 = 0,
$1450 = 0,
$1451 = 0,
$1452 = 0,
$1453 = 0,
$1454 = 0,
$1455 = 0,
$1456 = 0,
$1457 = 0,
$1458 = 0,
$1459 = 0,
$146 = 0,
$1460 = 0,
$1461 = 0,
$1462 = 0,
$1463 = 0,
$1464 = 0,
$1465 = 0;
var $1466 = 0,
$1467 = 0,
$1468 = 0,
$1469 = 0,
$147 = 0,
$1470 = 0,
$1471 = 0,
$1472 = 0,
$1473 = 0,
$1474 = 0,
$1475 = 0,
$1476 = 0,
$1477 = 0,
$1478 = 0,
$1479 = 0,
$148 = 0,
$1480 = 0,
$1481 = 0,
$1482 = 0,
$1483 = 0;
var $1484 = 0,
$1485 = 0,
$1486 = 0,
$1487 = 0,
$1488 = 0,
$1489 = 0,
$149 = 0,
$1490 = 0,
$1491 = 0,
$1492 = 0,
$1493 = 0,
$1494 = 0,
$1495 = 0,
$1496 = 0,
$1497 = 0,
$1498 = 0,
$1499 = 0,
$15 = 0,
$150 = 0,
$1500 = 0;
var $1501 = 0,
$1502 = 0,
$1503 = 0,
$1504 = 0,
$1505 = 0,
$1506 = 0,
$1507 = 0,
$1508 = 0,
$1509 = 0,
$151 = 0,
$1510 = 0,
$1511 = 0,
$1512 = 0,
$1513 = 0,
$1514 = 0,
$1515 = 0,
$1516 = 0,
$1517 = 0,
$1518 = 0,
$1519 = 0;
var $152 = 0,
$1520 = 0,
$1521 = 0,
$1522 = 0,
$1523 = 0,
$1524 = 0,
$1525 = 0,
$1526 = 0,
$1527 = 0,
$1528 = 0,
$1529 = 0,
$153 = 0,
$1530 = 0,
$1531 = 0,
$1532 = 0,
$1533 = 0,
$1534 = 0,
$1535 = 0,
$1536 = 0,
$1537 = 0;
var $1538 = 0,
$1539 = 0,
$154 = 0,
$1540 = 0,
$1541 = 0,
$1542 = 0,
$1543 = 0,
$1544 = 0,
$1545 = 0,
$1546 = 0,
$1547 = 0,
$1548 = 0,
$1549 = 0,
$155 = 0,
$1550 = 0,
$1551 = 0,
$1552 = 0,
$1553 = 0,
$1554 = 0,
$1555 = 0;
var $1556 = 0,
$1557 = 0,
$1558 = 0,
$1559 = 0,
$156 = 0,
$1560 = 0,
$1561 = 0,
$1562 = 0,
$1563 = 0,
$1564 = 0,
$1565 = 0,
$1566 = 0,
$1567 = 0,
$1568 = 0,
$1569 = 0,
$157 = 0,
$1570 = 0,
$1571 = 0,
$1572 = 0,
$1573 = 0;
var $1574 = 0,
$1575 = 0,
$1576 = 0,
$1577 = 0,
$1578 = 0,
$1579 = 0,
$158 = 0,
$1580 = 0,
$1581 = 0,
$1582 = 0,
$1583 = 0,
$1584 = 0,
$1585 = 0,
$1586 = 0,
$1587 = 0,
$1588 = 0,
$1589 = 0,
$159 = 0,
$1590 = 0,
$1591 = 0;
var $1592 = 0,
$1593 = 0,
$1594 = 0,
$1595 = 0,
$1596 = 0,
$1597 = 0,
$1598 = 0,
$1599 = 0,
$16 = 0,
$160 = 0,
$1600 = 0,
$1601 = 0,
$1602 = 0,
$1603 = 0,
$1604 = 0,
$1605 = 0,
$1606 = 0,
$1607 = 0,
$1608 = 0,
$1609 = 0;
var $161 = 0,
$1610 = 0,
$1611 = 0,
$1612 = 0,
$1613 = 0,
$1614 = 0,
$1615 = 0,
$1616 = 0,
$1617 = 0,
$1618 = 0,
$1619 = 0,
$162 = 0,
$1620 = 0,
$1621 = 0,
$1622 = 0,
$1623 = 0,
$1624 = 0,
$1625 = 0,
$1626 = 0,
$1627 = 0;
var $1628 = 0,
$1629 = 0,
$163 = 0,
$1630 = 0,
$1631 = 0,
$1632 = 0,
$1633 = 0,
$1634 = 0,
$1635 = 0,
$1636 = 0,
$1637 = 0,
$1638 = 0,
$1639 = 0,
$164 = 0,
$1640 = 0,
$1641 = 0,
$1642 = 0,
$1643 = 0,
$1644 = 0,
$1645 = 0;
var $1646 = 0,
$1647 = 0,
$1648 = 0,
$1649 = 0,
$165 = 0,
$1650 = 0,
$1651 = 0,
$1652 = 0,
$1653 = 0,
$1654 = 0,
$1655 = 0,
$1656 = 0,
$1657 = 0,
$1658 = 0,
$1659 = 0,
$166 = 0,
$1660 = 0,
$1661 = 0,
$1662 = 0,
$1663 = 0;
var $1664 = 0,
$1665 = 0,
$1666 = 0,
$1667 = 0,
$1668 = 0,
$1669 = 0,
$167 = 0,
$1670 = 0,
$1671 = 0,
$1672 = 0,
$1673 = 0,
$1674 = 0,
$1675 = 0,
$1676 = 0,
$1677 = 0,
$1678 = 0,
$1679 = 0,
$168 = 0,
$1680 = 0,
$1681 = 0;
var $1682 = 0,
$1683 = 0,
$1684 = 0,
$1685 = 0,
$1686 = 0,
$1687 = 0,
$1688 = 0,
$1689 = 0,
$169 = 0,
$1690 = 0,
$1691 = 0,
$1692 = 0,
$1693 = 0,
$1694 = 0,
$1695 = 0,
$1696 = 0,
$1697 = 0,
$1698 = 0,
$1699 = 0,
$17 = 0;
var $170 = 0,
$1700 = 0,
$1701 = 0,
$1702 = 0,
$1703 = 0,
$1704 = 0,
$1705 = 0,
$1706 = 0,
$1707 = 0,
$1708 = 0,
$1709 = 0,
$171 = 0,
$1710 = 0,
$1711 = 0,
$1712 = 0,
$1713 = 0,
$1714 = 0,
$1715 = 0,
$1716 = 0,
$1717 = 0;
var $1718 = 0,
$1719 = 0,
$172 = 0,
$1720 = 0,
$1721 = 0,
$1722 = 0,
$1723 = 0,
$1724 = 0,
$1725 = 0,
$1726 = 0,
$1727 = 0,
$1728 = 0,
$1729 = 0,
$173 = 0,
$1730 = 0,
$1731 = 0,
$1732 = 0,
$1733 = 0,
$1734 = 0,
$1735 = 0;
var $1736 = 0,
$1737 = 0,
$1738 = 0,
$1739 = 0,
$174 = 0,
$1740 = 0,
$1741 = 0,
$1742 = 0,
$1743 = 0,
$1744 = 0,
$1745 = 0,
$1746 = 0,
$1747 = 0,
$1748 = 0,
$1749 = 0,
$175 = 0,
$1750 = 0,
$1751 = 0,
$1752 = 0,
$1753 = 0;
var $1754 = 0,
$1755 = 0,
$1756 = 0,
$1757 = 0,
$1758 = 0,
$1759 = 0,
$176 = 0,
$1760 = 0,
$1761 = 0,
$1762 = 0,
$1763 = 0,
$1764 = 0,
$1765 = 0,
$1766 = 0,
$1767 = 0,
$1768 = 0,
$1769 = 0,
$177 = 0,
$1770 = 0,
$1771 = 0;
var $1772 = 0,
$1773 = 0,
$1774 = 0,
$1775 = 0,
$1776 = 0,
$1777 = 0,
$1778 = 0,
$1779 = 0,
$178 = 0,
$1780 = 0,
$1781 = 0,
$1782 = 0,
$1783 = 0,
$1784 = 0,
$1785 = 0,
$1786 = 0,
$1787 = 0,
$1788 = 0,
$1789 = 0,
$179 = 0;
var $1790 = 0,
$1791 = 0,
$1792 = 0,
$1793 = 0,
$1794 = 0,
$1795 = 0,
$1796 = 0,
$1797 = 0,
$1798 = 0,
$1799 = 0,
$18 = 0,
$180 = 0,
$1800 = 0,
$1801 = 0,
$1802 = 0,
$1803 = 0,
$1804 = 0,
$1805 = 0,
$1806 = 0,
$1807 = 0;
var $1808 = 0,
$1809 = 0,
$181 = 0,
$1810 = 0,
$1811 = 0,
$1812 = 0,
$1813 = 0,
$1814 = 0,
$1815 = 0,
$1816 = 0,
$1817 = 0,
$1818 = 0,
$1819 = 0,
$182 = 0,
$1820 = 0,
$1821 = 0,
$1822 = 0,
$1823 = 0,
$1824 = 0,
$1825 = 0;
var $1826 = 0,
$1827 = 0,
$1828 = 0,
$1829 = 0,
$183 = 0,
$1830 = 0,
$1831 = 0,
$1832 = 0,
$1833 = 0,
$1834 = 0,
$1835 = 0,
$1836 = 0,
$1837 = 0,
$1838 = 0,
$1839 = 0,
$184 = 0,
$1840 = 0,
$1841 = 0,
$1842 = 0,
$1843 = 0;
var $1844 = 0,
$1845 = 0,
$1846 = 0,
$1847 = 0,
$1848 = 0,
$1849 = 0,
$185 = 0,
$1850 = 0,
$1851 = 0,
$1852 = 0,
$1853 = 0,
$1854 = 0,
$1855 = 0,
$1856 = 0,
$1857 = 0,
$1858 = 0,
$1859 = 0,
$186 = 0,
$1860 = 0,
$1861 = 0;
var $1862 = 0,
$1863 = 0,
$1864 = 0,
$1865 = 0,
$1866 = 0,
$1867 = 0,
$1868 = 0,
$1869 = 0,
$187 = 0,
$1870 = 0,
$1871 = 0,
$1872 = 0,
$1873 = 0,
$1874 = 0,
$1875 = 0,
$1876 = 0,
$1877 = 0,
$1878 = 0,
$1879 = 0,
$188 = 0;
var $1880 = 0,
$1881 = 0,
$1882 = 0,
$1883 = 0,
$1884 = 0,
$1885 = 0,
$1886 = 0,
$1887 = 0,
$1888 = 0,
$1889 = 0,
$189 = 0,
$1890 = 0,
$1891 = 0,
$1892 = 0,
$1893 = 0,
$1894 = 0,
$1895 = 0,
$1896 = 0,
$1897 = 0,
$1898 = 0;
var $1899 = 0,
$19 = 0,
$190 = 0,
$1900 = 0,
$1901 = 0,
$1902 = 0,
$1903 = 0,
$1904 = 0,
$1905 = 0,
$1906 = 0,
$1907 = 0,
$1908 = 0,
$1909 = 0,
$191 = 0,
$1910 = 0,
$1911 = 0,
$1912 = 0,
$1913 = 0,
$1914 = 0,
$1915 = 0;
var $1916 = 0,
$1917 = 0,
$1918 = 0,
$1919 = 0,
$192 = 0,
$1920 = 0,
$1921 = 0,
$1922 = 0,
$1923 = 0,
$1924 = 0,
$1925 = 0,
$1926 = 0,
$1927 = 0,
$1928 = 0,
$1929 = 0,
$193 = 0,
$1930 = 0,
$1931 = 0,
$1932 = 0,
$1933 = 0;
var $1934 = 0,
$1935 = 0,
$1936 = 0,
$1937 = 0,
$1938 = 0,
$1939 = 0,
$194 = 0,
$1940 = 0,
$1941 = 0,
$1942 = 0,
$1943 = 0,
$1944 = 0,
$1945 = 0,
$1946 = 0,
$1947 = 0,
$1948 = 0,
$1949 = 0,
$195 = 0,
$1950 = 0,
$1951 = 0;
var $1952 = 0,
$1953 = 0,
$1954 = 0,
$1955 = 0,
$1956 = 0,
$1957 = 0,
$1958 = 0,
$1959 = 0,
$196 = 0,
$1960 = 0,
$1961 = 0,
$1962 = 0,
$1963 = 0,
$1964 = 0,
$1965 = 0,
$1966 = 0,
$1967 = 0,
$1968 = 0,
$1969 = 0,
$197 = 0;
var $1970 = 0,
$1971 = 0,
$1972 = 0,
$1973 = 0,
$1974 = 0,
$1975 = 0,
$1976 = 0,
$1977 = 0,
$1978 = 0,
$1979 = 0,
$198 = 0,
$1980 = 0,
$1981 = 0,
$1982 = 0,
$1983 = 0,
$1984 = 0,
$1985 = 0,
$1986 = 0,
$1987 = 0,
$1988 = 0;
var $1989 = 0,
$199 = 0,
$1990 = 0,
$1991 = 0,
$1992 = 0,
$1993 = 0,
$1994 = 0,
$1995 = 0,
$1996 = 0,
$1997 = 0,
$1998 = 0,
$1999 = 0,
$2 = 0,
$20 = 0,
$200 = 0,
$2000 = 0,
$2001 = 0,
$2002 = 0,
$2003 = 0,
$2004 = 0;
var $2005 = 0,
$2006 = 0,
$2007 = 0,
$2008 = 0,
$2009 = 0,
$201 = 0,
$2010 = 0,
$2011 = 0,
$2012 = 0,
$2013 = 0,
$2014 = 0,
$2015 = 0,
$2016 = 0,
$2017 = 0,
$2018 = 0,
$2019 = 0,
$202 = 0,
$2020 = 0,
$2021 = 0,
$2022 = 0;
var $2023 = 0,
$2024 = 0,
$2025 = 0,
$2026 = 0,
$2027 = 0,
$2028 = 0,
$2029 = 0,
$203 = 0,
$2030 = 0,
$2031 = 0,
$2032 = 0,
$2033 = 0,
$2034 = 0,
$2035 = 0,
$2036 = 0,
$2037 = 0,
$2038 = 0,
$2039 = 0,
$204 = 0,
$2040 = 0;
var $2041 = 0,
$2042 = 0,
$2043 = 0,
$2044 = 0,
$2045 = 0,
$2046 = 0,
$2047 = 0,
$2048 = 0,
$2049 = 0,
$205 = 0,
$2050 = 0,
$2051 = 0,
$2052 = 0,
$2053 = 0,
$2054 = 0,
$2055 = 0,
$2056 = 0,
$2057 = 0,
$2058 = 0,
$2059 = 0;
var $206 = 0,
$2060 = 0,
$2061 = 0,
$2062 = 0,
$2063 = 0,
$2064 = 0,
$2065 = 0,
$2066 = 0,
$2067 = 0,
$2068 = 0,
$2069 = 0,
$207 = 0,
$2070 = 0,
$2071 = 0,
$2072 = 0,
$2073 = 0,
$2074 = 0,
$2075 = 0,
$2076 = 0,
$2077 = 0;
var $2078 = 0,
$2079 = 0,
$208 = 0,
$2080 = 0,
$2081 = 0,
$2082 = 0,
$2083 = 0,
$2084 = 0,
$2085 = 0,
$2086 = 0,
$2087 = 0,
$209 = 0,
$21 = 0,
$210 = 0,
$211 = 0,
$212 = 0,
$213 = 0,
$214 = 0,
$215 = 0,
$216 = 0;
var $217 = 0,
$218 = 0,
$219 = 0,
$22 = 0,
$220 = 0,
$221 = 0,
$222 = 0,
$223 = 0,
$224 = 0,
$225 = 0,
$226 = 0,
$227 = 0,
$228 = 0,
$229 = 0,
$23 = 0,
$230 = 0,
$231 = 0,
$232 = 0,
$233 = 0,
$234 = 0;
var $235 = 0,
$236 = 0,
$237 = 0,
$238 = 0,
$239 = 0,
$24 = 0,
$240 = 0,
$241 = 0,
$242 = 0,
$243 = 0,
$244 = 0,
$245 = 0,
$246 = 0,
$247 = 0,
$248 = 0,
$249 = 0,
$25 = 0,
$250 = 0,
$251 = 0,
$252 = 0;
var $253 = 0,
$254 = 0,
$255 = 0,
$256 = 0,
$257 = 0,
$258 = 0,
$259 = 0,
$26 = 0,
$260 = 0,
$261 = 0,
$262 = 0,
$263 = 0,
$264 = 0,
$265 = 0,
$266 = 0,
$267 = 0,
$268 = 0,
$269 = 0,
$27 = 0,
$270 = 0;
var $271 = 0,
$272 = 0,
$273 = 0,
$274 = 0,
$275 = 0,
$276 = 0,
$277 = 0,
$278 = 0,
$279 = 0,
$28 = 0,
$280 = 0,
$281 = 0,
$282 = 0,
$283 = 0,
$284 = 0,
$285 = 0,
$286 = 0,
$287 = 0,
$288 = 0,
$289 = 0;
var $29 = 0,
$290 = 0,
$291 = 0,
$292 = 0,
$293 = 0,
$294 = 0,
$295 = 0,
$296 = 0,
$297 = 0,
$298 = 0,
$299 = 0,
$3 = 0,
$30 = 0,
$300 = 0,
$301 = 0,
$302 = 0,
$303 = 0,
$304 = 0,
$305 = 0,
$306 = 0;
var $307 = 0,
$308 = 0,
$309 = 0,
$31 = 0,
$310 = 0,
$311 = 0,
$312 = 0,
$313 = 0,
$314 = 0,
$315 = 0,
$316 = 0,
$317 = 0,
$318 = 0,
$319 = 0,
$32 = 0,
$320 = 0,
$321 = 0,
$322 = 0,
$323 = 0,
$324 = 0;
var $325 = 0,
$326 = 0,
$327 = 0,
$328 = 0,
$329 = 0,
$33 = 0,
$330 = 0,
$331 = 0,
$332 = 0,
$333 = 0,
$334 = 0,
$335 = 0,
$336 = 0,
$337 = 0,
$338 = 0,
$339 = 0,
$34 = 0,
$340 = 0,
$341 = 0,
$342 = 0;
var $343 = 0,
$344 = 0,
$345 = 0,
$346 = 0,
$347 = 0,
$348 = 0,
$349 = 0,
$35 = 0,
$350 = 0,
$351 = 0,
$352 = 0,
$353 = 0,
$354 = 0,
$355 = 0,
$356 = 0,
$357 = 0,
$358 = 0,
$359 = 0,
$36 = 0,
$360 = 0;
var $361 = 0,
$362 = 0,
$363 = 0,
$364 = 0,
$365 = 0,
$366 = 0,
$367 = 0,
$368 = 0,
$369 = 0,
$37 = 0,
$370 = 0,
$371 = 0,
$372 = 0,
$373 = 0,
$374 = 0,
$375 = 0,
$376 = 0,
$377 = 0,
$378 = 0,
$379 = 0;
var $38 = 0,
$380 = 0,
$381 = 0,
$382 = 0,
$383 = 0,
$384 = 0,
$385 = 0,
$386 = 0,
$387 = 0,
$388 = 0,
$389 = 0,
$39 = 0,
$390 = 0,
$391 = 0,
$392 = 0,
$393 = 0,
$394 = 0,
$395 = 0,
$396 = 0,
$397 = 0;
var $398 = 0,
$399 = 0,
$4 = 0,
$40 = 0,
$400 = 0,
$401 = 0,
$402 = 0,
$403 = 0,
$404 = 0,
$405 = 0,
$406 = 0,
$407 = 0,
$408 = 0,
$409 = 0,
$41 = 0,
$410 = 0,
$411 = 0,
$412 = 0,
$413 = 0,
$414 = 0;
var $415 = 0,
$416 = 0,
$417 = 0,
$418 = 0,
$419 = 0,
$42 = 0,
$420 = 0,
$421 = 0,
$422 = 0,
$423 = 0,
$424 = 0,
$425 = 0,
$426 = 0,
$427 = 0,
$428 = 0,
$429 = 0,
$43 = 0,
$430 = 0,
$431 = 0,
$432 = 0;
var $433 = 0,
$434 = 0,
$435 = 0,
$436 = 0,
$437 = 0,
$438 = 0,
$439 = 0,
$44 = 0,
$440 = 0,
$441 = 0,
$442 = 0,
$443 = 0,
$444 = 0,
$445 = 0,
$446 = 0,
$447 = 0,
$448 = 0,
$449 = 0,
$45 = 0,
$450 = 0;
var $451 = 0,
$452 = 0,
$453 = 0,
$454 = 0,
$455 = 0,
$456 = 0,
$457 = 0,
$458 = 0,
$459 = 0,
$46 = 0,
$460 = 0,
$461 = 0,
$462 = 0,
$463 = 0,
$464 = 0,
$465 = 0,
$466 = 0,
$467 = 0,
$468 = 0,
$469 = 0;
var $47 = 0,
$470 = 0,
$471 = 0,
$472 = 0,
$473 = 0,
$474 = 0,
$475 = 0,
$476 = 0,
$477 = 0,
$478 = 0,
$479 = 0,
$48 = 0,
$480 = 0,
$481 = 0,
$482 = 0,
$483 = 0,
$484 = 0,
$485 = 0,
$486 = 0,
$487 = 0;
var $488 = 0,
$489 = 0,
$49 = 0,
$490 = 0,
$491 = 0,
$492 = 0,
$493 = 0,
$494 = 0,
$495 = 0,
$496 = 0,
$497 = 0,
$498 = 0,
$499 = 0,
$5 = 0,
$50 = 0,
$500 = 0,
$501 = 0,
$502 = 0,
$503 = 0,
$504 = 0;
var $505 = 0,
$506 = 0,
$507 = 0,
$508 = 0,
$509 = 0,
$51 = 0,
$510 = 0,
$511 = 0,
$512 = 0,
$513 = 0,
$514 = 0,
$515 = 0,
$516 = 0,
$517 = 0,
$518 = 0,
$519 = 0,
$52 = 0,
$520 = 0,
$521 = 0,
$522 = 0;
var $523 = 0,
$524 = 0,
$525 = 0,
$526 = 0,
$527 = 0,
$528 = 0,
$529 = 0,
$53 = 0,
$530 = 0,
$531 = 0,
$532 = 0,
$533 = 0,
$534 = 0,
$535 = 0,
$536 = 0,
$537 = 0,
$538 = 0,
$539 = 0,
$54 = 0,
$540 = 0;
var $541 = 0,
$542 = 0,
$543 = 0,
$544 = 0,
$545 = 0,
$546 = 0,
$547 = 0,
$548 = 0,
$549 = 0,
$55 = 0,
$550 = 0,
$551 = 0,
$552 = 0,
$553 = 0,
$554 = 0,
$555 = 0,
$556 = 0,
$557 = 0,
$558 = 0,
$559 = 0;
var $56 = 0,
$560 = 0,
$561 = 0,
$562 = 0,
$563 = 0,
$564 = 0,
$565 = 0,
$566 = 0,
$567 = 0,
$568 = 0,
$569 = 0,
$57 = 0,
$570 = 0,
$571 = 0,
$572 = 0,
$573 = 0,
$574 = 0,
$575 = 0,
$576 = 0,
$577 = 0;
var $578 = 0,
$579 = 0,
$58 = 0,
$580 = 0,
$581 = 0,
$582 = 0,
$583 = 0,
$584 = 0,
$585 = 0,
$586 = 0,
$587 = 0,
$588 = 0,
$589 = 0,
$59 = 0,
$590 = 0,
$591 = 0,
$592 = 0,
$593 = 0,
$594 = 0,
$595 = 0;
var $596 = 0,
$597 = 0,
$598 = 0,
$599 = 0,
$6 = 0,
$60 = 0,
$600 = 0,
$601 = 0,
$602 = 0,
$603 = 0,
$604 = 0,
$605 = 0,
$606 = 0,
$607 = 0,
$608 = 0,
$609 = 0,
$61 = 0,
$610 = 0,
$611 = 0,
$612 = 0;
var $613 = 0,
$614 = 0,
$615 = 0,
$616 = 0,
$617 = 0,
$618 = 0,
$619 = 0,
$62 = 0,
$620 = 0,
$621 = 0,
$622 = 0,
$623 = 0,
$624 = 0,
$625 = 0,
$626 = 0,
$627 = 0,
$628 = 0,
$629 = 0,
$63 = 0,
$630 = 0;
var $631 = 0,
$632 = 0,
$633 = 0,
$634 = 0,
$635 = 0,
$636 = 0,
$637 = 0,
$638 = 0,
$639 = 0,
$64 = 0,
$640 = 0,
$641 = 0,
$642 = 0,
$643 = 0,
$644 = 0,
$645 = 0,
$646 = 0,
$647 = 0,
$648 = 0,
$649 = 0;
var $65 = 0,
$650 = 0,
$651 = 0,
$652 = 0,
$653 = 0,
$654 = 0,
$655 = 0,
$656 = 0,
$657 = 0,
$658 = 0,
$659 = 0,
$66 = 0,
$660 = 0,
$661 = 0,
$662 = 0,
$663 = 0,
$664 = 0,
$665 = 0,
$666 = 0,
$667 = 0;
var $668 = 0,
$669 = 0,
$67 = 0,
$670 = 0,
$671 = 0,
$672 = 0,
$673 = 0,
$674 = 0,
$675 = 0,
$676 = 0,
$677 = 0,
$678 = 0,
$679 = 0,
$68 = 0,
$680 = 0,
$681 = 0,
$682 = 0,
$683 = 0,
$684 = 0,
$685 = 0;
var $686 = 0,
$687 = 0,
$688 = 0,
$689 = 0,
$69 = 0,
$690 = 0,
$691 = 0,
$692 = 0,
$693 = 0,
$694 = 0,
$695 = 0,
$696 = 0,
$697 = 0,
$698 = 0,
$699 = 0,
$7 = 0,
$70 = 0,
$700 = 0,
$701 = 0,
$702 = 0;
var $703 = 0,
$704 = 0,
$705 = 0,
$706 = 0,
$707 = 0,
$708 = 0,
$709 = 0,
$71 = 0,
$710 = 0,
$711 = 0,
$712 = 0,
$713 = 0,
$714 = 0,
$715 = 0,
$716 = 0,
$717 = 0,
$718 = 0,
$719 = 0,
$72 = 0,
$720 = 0;
var $721 = 0,
$722 = 0,
$723 = 0,
$724 = 0,
$725 = 0,
$726 = 0,
$727 = 0,
$728 = 0,
$729 = 0,
$73 = 0,
$730 = 0,
$731 = 0,
$732 = 0,
$733 = 0,
$734 = 0,
$735 = 0,
$736 = 0,
$737 = 0,
$738 = 0,
$739 = 0;
var $74 = 0,
$740 = 0,
$741 = 0,
$742 = 0,
$743 = 0,
$744 = 0,
$745 = 0,
$746 = 0,
$747 = 0,
$748 = 0,
$749 = 0,
$75 = 0,
$750 = 0,
$751 = 0,
$752 = 0,
$753 = 0,
$754 = 0,
$755 = 0,
$756 = 0,
$757 = 0;
var $758 = 0,
$759 = 0,
$76 = 0,
$760 = 0,
$761 = 0,
$762 = 0,
$763 = 0,
$764 = 0,
$765 = 0,
$766 = 0,
$767 = 0,
$768 = 0,
$769 = 0,
$77 = 0,
$770 = 0,
$771 = 0,
$772 = 0,
$773 = 0,
$774 = 0,
$775 = 0;
var $776 = 0,
$777 = 0,
$778 = 0,
$779 = 0,
$78 = 0,
$780 = 0,
$781 = 0,
$782 = 0,
$783 = 0,
$784 = 0,
$785 = 0,
$786 = 0,
$787 = 0,
$788 = 0,
$789 = 0,
$79 = 0,
$790 = 0,
$791 = 0,
$792 = 0,
$793 = 0;
var $794 = 0,
$795 = 0,
$796 = 0,
$797 = 0,
$798 = 0,
$799 = 0,
$8 = 0,
$80 = 0,
$800 = 0,
$801 = 0,
$802 = 0,
$803 = 0,
$804 = 0,
$805 = 0,
$806 = 0,
$807 = 0,
$808 = 0,
$809 = 0,
$81 = 0,
$810 = 0;
var $811 = 0,
$812 = 0,
$813 = 0,
$814 = 0,
$815 = 0,
$816 = 0,
$817 = 0,
$818 = 0,
$819 = 0,
$82 = 0,
$820 = 0,
$821 = 0,
$822 = 0,
$823 = 0,
$824 = 0,
$825 = 0,
$826 = 0,
$827 = 0,
$828 = 0,
$829 = 0;
var $83 = 0,
$830 = 0,
$831 = 0,
$832 = 0,
$833 = 0,
$834 = 0,
$835 = 0,
$836 = 0,
$837 = 0,
$838 = 0,
$839 = 0,
$84 = 0,
$840 = 0,
$841 = 0,
$842 = 0,
$843 = 0,
$844 = 0,
$845 = 0,
$846 = 0,
$847 = 0;
var $848 = 0,
$849 = 0,
$85 = 0,
$850 = 0,
$851 = 0,
$852 = 0,
$853 = 0,
$854 = 0,
$855 = 0,
$856 = 0,
$857 = 0,
$858 = 0,
$859 = 0,
$86 = 0,
$860 = 0,
$861 = 0,
$862 = 0,
$863 = 0,
$864 = 0,
$865 = 0;
var $866 = 0,
$867 = 0,
$868 = 0,
$869 = 0,
$87 = 0,
$870 = 0,
$871 = 0,
$872 = 0,
$873 = 0,
$874 = 0,
$875 = 0,
$876 = 0,
$877 = 0,
$878 = 0,
$879 = 0,
$88 = 0,
$880 = 0,
$881 = 0,
$882 = 0,
$883 = 0;
var $884 = 0,
$885 = 0,
$886 = 0,
$887 = 0,
$888 = 0,
$889 = 0,
$89 = 0,
$890 = 0,
$891 = 0,
$892 = 0,
$893 = 0,
$894 = 0,
$895 = 0,
$896 = 0,
$897 = 0,
$898 = 0,
$899 = 0,
$9 = 0,
$90 = 0,
$900 = 0;
var $901 = 0,
$902 = 0,
$903 = 0,
$904 = 0,
$905 = 0,
$906 = 0,
$907 = 0,
$908 = 0,
$909 = 0,
$91 = 0,
$910 = 0,
$911 = 0,
$912 = 0,
$913 = 0,
$914 = 0,
$915 = 0,
$916 = 0,
$917 = 0,
$918 = 0,
$919 = 0;
var $92 = 0,
$920 = 0,
$921 = 0,
$922 = 0,
$923 = 0,
$924 = 0,
$925 = 0,
$926 = 0,
$927 = 0,
$928 = 0,
$929 = 0,
$93 = 0,
$930 = 0,
$931 = 0,
$932 = 0,
$933 = 0,
$934 = 0,
$935 = 0,
$936 = 0,
$937 = 0;
var $938 = 0,
$939 = 0,
$94 = 0,
$940 = 0,
$941 = 0,
$942 = 0,
$943 = 0,
$944 = 0,
$945 = 0,
$946 = 0,
$947 = 0,
$948 = 0,
$949 = 0,
$95 = 0,
$950 = 0,
$951 = 0,
$952 = 0,
$953 = 0,
$954 = 0,
$955 = 0;
var $956 = 0,
$957 = 0,
$958 = 0,
$959 = 0,
$96 = 0,
$960 = 0,
$961 = 0,
$962 = 0,
$963 = 0,
$964 = 0,
$965 = 0,
$966 = 0,
$967 = 0,
$968 = 0,
$969 = 0,
$97 = 0,
$970 = 0,
$971 = 0,
$972 = 0,
$973 = 0;
var $974 = 0,
$975 = 0,
$976 = 0,
$977 = 0,
$978 = 0,
$979 = 0,
$98 = 0,
$980 = 0,
$981 = 0,
$982 = 0,
$983 = 0,
$984 = 0,
$985 = 0,
$986 = 0,
$987 = 0,
$988 = 0,
$989 = 0,
$99 = 0,
$990 = 0,
$991 = 0;
var $992 = 0,
$993 = 0,
$994 = 0,
$995 = 0,
$996 = 0,
$997 = 0,
$998 = 0,
$999 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = $in2;
$1 = $0;
$2 = HEAP32[$1 >> 2] | 0;
$3 = ($0 + 4) | 0;
$4 = $3;
$5 = HEAP32[$4 >> 2] | 0;
$6 = _bitshift64Ashr(0, $2 | 0, 32) | 0;
$7 = tempRet0;
$8 = $in;
$9 = $8;
$10 = HEAP32[$9 >> 2] | 0;
$11 = ($8 + 4) | 0;
$12 = $11;
$13 = HEAP32[$12 >> 2] | 0;
$14 = _bitshift64Ashr(0, $10 | 0, 32) | 0;
$15 = tempRet0;
$16 = ___muldi3($14 | 0, $15 | 0, $6 | 0, $7 | 0) | 0;
$17 = tempRet0;
$18 = $output;
$19 = $18;
HEAP32[$19 >> 2] = $16;
$20 = ($18 + 4) | 0;
$21 = $20;
HEAP32[$21 >> 2] = $17;
$22 = $in2;
$23 = $22;
$24 = HEAP32[$23 >> 2] | 0;
$25 = ($22 + 4) | 0;
$26 = $25;
$27 = HEAP32[$26 >> 2] | 0;
$28 = _bitshift64Ashr(0, $24 | 0, 32) | 0;
$29 = tempRet0;
$30 = ($in + 8) | 0;
$31 = $30;
$32 = $31;
$33 = HEAP32[$32 >> 2] | 0;
$34 = ($31 + 4) | 0;
$35 = $34;
$36 = HEAP32[$35 >> 2] | 0;
$37 = _bitshift64Ashr(0, $33 | 0, 32) | 0;
$38 = tempRet0;
$39 = ___muldi3($37 | 0, $38 | 0, $28 | 0, $29 | 0) | 0;
$40 = tempRet0;
$41 = ($in2 + 8) | 0;
$42 = $41;
$43 = $42;
$44 = HEAP32[$43 >> 2] | 0;
$45 = ($42 + 4) | 0;
$46 = $45;
$47 = HEAP32[$46 >> 2] | 0;
$48 = _bitshift64Ashr(0, $44 | 0, 32) | 0;
$49 = tempRet0;
$50 = $in;
$51 = $50;
$52 = HEAP32[$51 >> 2] | 0;
$53 = ($50 + 4) | 0;
$54 = $53;
$55 = HEAP32[$54 >> 2] | 0;
$56 = _bitshift64Ashr(0, $52 | 0, 32) | 0;
$57 = tempRet0;
$58 = ___muldi3($56 | 0, $57 | 0, $48 | 0, $49 | 0) | 0;
$59 = tempRet0;
$60 = _i64Add($58 | 0, $59 | 0, $39 | 0, $40 | 0) | 0;
$61 = tempRet0;
$62 = ($output + 8) | 0;
$63 = $62;
$64 = $63;
HEAP32[$64 >> 2] = $60;
$65 = ($63 + 4) | 0;
$66 = $65;
HEAP32[$66 >> 2] = $61;
$67 = $41;
$68 = $67;
$69 = HEAP32[$68 >> 2] | 0;
$70 = ($67 + 4) | 0;
$71 = $70;
$72 = HEAP32[$71 >> 2] | 0;
$73 = _bitshift64Ashr(0, $69 | 0, 31) | 0;
$74 = tempRet0;
$75 = $30;
$76 = $75;
$77 = HEAP32[$76 >> 2] | 0;
$78 = ($75 + 4) | 0;
$79 = $78;
$80 = HEAP32[$79 >> 2] | 0;
$81 = _bitshift64Ashr(0, $77 | 0, 32) | 0;
$82 = tempRet0;
$83 = ___muldi3($81 | 0, $82 | 0, $73 | 0, $74 | 0) | 0;
$84 = tempRet0;
$85 = $in2;
$86 = $85;
$87 = HEAP32[$86 >> 2] | 0;
$88 = ($85 + 4) | 0;
$89 = $88;
$90 = HEAP32[$89 >> 2] | 0;
$91 = _bitshift64Ashr(0, $87 | 0, 32) | 0;
$92 = tempRet0;
$93 = ($in + 16) | 0;
$94 = $93;
$95 = $94;
$96 = HEAP32[$95 >> 2] | 0;
$97 = ($94 + 4) | 0;
$98 = $97;
$99 = HEAP32[$98 >> 2] | 0;
$100 = _bitshift64Ashr(0, $96 | 0, 32) | 0;
$101 = tempRet0;
$102 = ___muldi3($100 | 0, $101 | 0, $91 | 0, $92 | 0) | 0;
$103 = tempRet0;
$104 = _i64Add($102 | 0, $103 | 0, $83 | 0, $84 | 0) | 0;
$105 = tempRet0;
$106 = ($in2 + 16) | 0;
$107 = $106;
$108 = $107;
$109 = HEAP32[$108 >> 2] | 0;
$110 = ($107 + 4) | 0;
$111 = $110;
$112 = HEAP32[$111 >> 2] | 0;
$113 = _bitshift64Ashr(0, $109 | 0, 32) | 0;
$114 = tempRet0;
$115 = $in;
$116 = $115;
$117 = HEAP32[$116 >> 2] | 0;
$118 = ($115 + 4) | 0;
$119 = $118;
$120 = HEAP32[$119 >> 2] | 0;
$121 = _bitshift64Ashr(0, $117 | 0, 32) | 0;
$122 = tempRet0;
$123 = ___muldi3($121 | 0, $122 | 0, $113 | 0, $114 | 0) | 0;
$124 = tempRet0;
$125 = _i64Add($104 | 0, $105 | 0, $123 | 0, $124 | 0) | 0;
$126 = tempRet0;
$127 = ($output + 16) | 0;
$128 = $127;
$129 = $128;
HEAP32[$129 >> 2] = $125;
$130 = ($128 + 4) | 0;
$131 = $130;
HEAP32[$131 >> 2] = $126;
$132 = $41;
$133 = $132;
$134 = HEAP32[$133 >> 2] | 0;
$135 = ($132 + 4) | 0;
$136 = $135;
$137 = HEAP32[$136 >> 2] | 0;
$138 = _bitshift64Ashr(0, $134 | 0, 32) | 0;
$139 = tempRet0;
$140 = $93;
$141 = $140;
$142 = HEAP32[$141 >> 2] | 0;
$143 = ($140 + 4) | 0;
$144 = $143;
$145 = HEAP32[$144 >> 2] | 0;
$146 = _bitshift64Ashr(0, $142 | 0, 32) | 0;
$147 = tempRet0;
$148 = ___muldi3($146 | 0, $147 | 0, $138 | 0, $139 | 0) | 0;
$149 = tempRet0;
$150 = $106;
$151 = $150;
$152 = HEAP32[$151 >> 2] | 0;
$153 = ($150 + 4) | 0;
$154 = $153;
$155 = HEAP32[$154 >> 2] | 0;
$156 = _bitshift64Ashr(0, $152 | 0, 32) | 0;
$157 = tempRet0;
$158 = $30;
$159 = $158;
$160 = HEAP32[$159 >> 2] | 0;
$161 = ($158 + 4) | 0;
$162 = $161;
$163 = HEAP32[$162 >> 2] | 0;
$164 = _bitshift64Ashr(0, $160 | 0, 32) | 0;
$165 = tempRet0;
$166 = ___muldi3($164 | 0, $165 | 0, $156 | 0, $157 | 0) | 0;
$167 = tempRet0;
$168 = _i64Add($166 | 0, $167 | 0, $148 | 0, $149 | 0) | 0;
$169 = tempRet0;
$170 = $in2;
$171 = $170;
$172 = HEAP32[$171 >> 2] | 0;
$173 = ($170 + 4) | 0;
$174 = $173;
$175 = HEAP32[$174 >> 2] | 0;
$176 = _bitshift64Ashr(0, $172 | 0, 32) | 0;
$177 = tempRet0;
$178 = ($in + 24) | 0;
$179 = $178;
$180 = $179;
$181 = HEAP32[$180 >> 2] | 0;
$182 = ($179 + 4) | 0;
$183 = $182;
$184 = HEAP32[$183 >> 2] | 0;
$185 = _bitshift64Ashr(0, $181 | 0, 32) | 0;
$186 = tempRet0;
$187 = ___muldi3($185 | 0, $186 | 0, $176 | 0, $177 | 0) | 0;
$188 = tempRet0;
$189 = _i64Add($168 | 0, $169 | 0, $187 | 0, $188 | 0) | 0;
$190 = tempRet0;
$191 = ($in2 + 24) | 0;
$192 = $191;
$193 = $192;
$194 = HEAP32[$193 >> 2] | 0;
$195 = ($192 + 4) | 0;
$196 = $195;
$197 = HEAP32[$196 >> 2] | 0;
$198 = _bitshift64Ashr(0, $194 | 0, 32) | 0;
$199 = tempRet0;
$200 = $in;
$201 = $200;
$202 = HEAP32[$201 >> 2] | 0;
$203 = ($200 + 4) | 0;
$204 = $203;
$205 = HEAP32[$204 >> 2] | 0;
$206 = _bitshift64Ashr(0, $202 | 0, 32) | 0;
$207 = tempRet0;
$208 = ___muldi3($206 | 0, $207 | 0, $198 | 0, $199 | 0) | 0;
$209 = tempRet0;
$210 = _i64Add($189 | 0, $190 | 0, $208 | 0, $209 | 0) | 0;
$211 = tempRet0;
$212 = ($output + 24) | 0;
$213 = $212;
$214 = $213;
HEAP32[$214 >> 2] = $210;
$215 = ($213 + 4) | 0;
$216 = $215;
HEAP32[$216 >> 2] = $211;
$217 = $106;
$218 = $217;
$219 = HEAP32[$218 >> 2] | 0;
$220 = ($217 + 4) | 0;
$221 = $220;
$222 = HEAP32[$221 >> 2] | 0;
$223 = _bitshift64Ashr(0, $219 | 0, 32) | 0;
$224 = tempRet0;
$225 = $93;
$226 = $225;
$227 = HEAP32[$226 >> 2] | 0;
$228 = ($225 + 4) | 0;
$229 = $228;
$230 = HEAP32[$229 >> 2] | 0;
$231 = _bitshift64Ashr(0, $227 | 0, 32) | 0;
$232 = tempRet0;
$233 = ___muldi3($231 | 0, $232 | 0, $223 | 0, $224 | 0) | 0;
$234 = tempRet0;
$235 = $41;
$236 = $235;
$237 = HEAP32[$236 >> 2] | 0;
$238 = ($235 + 4) | 0;
$239 = $238;
$240 = HEAP32[$239 >> 2] | 0;
$241 = _bitshift64Ashr(0, $237 | 0, 32) | 0;
$242 = tempRet0;
$243 = $178;
$244 = $243;
$245 = HEAP32[$244 >> 2] | 0;
$246 = ($243 + 4) | 0;
$247 = $246;
$248 = HEAP32[$247 >> 2] | 0;
$249 = _bitshift64Ashr(0, $245 | 0, 32) | 0;
$250 = tempRet0;
$251 = ___muldi3($249 | 0, $250 | 0, $241 | 0, $242 | 0) | 0;
$252 = tempRet0;
$253 = $191;
$254 = $253;
$255 = HEAP32[$254 >> 2] | 0;
$256 = ($253 + 4) | 0;
$257 = $256;
$258 = HEAP32[$257 >> 2] | 0;
$259 = _bitshift64Ashr(0, $255 | 0, 32) | 0;
$260 = tempRet0;
$261 = $30;
$262 = $261;
$263 = HEAP32[$262 >> 2] | 0;
$264 = ($261 + 4) | 0;
$265 = $264;
$266 = HEAP32[$265 >> 2] | 0;
$267 = _bitshift64Ashr(0, $263 | 0, 32) | 0;
$268 = tempRet0;
$269 = ___muldi3($267 | 0, $268 | 0, $259 | 0, $260 | 0) | 0;
$270 = tempRet0;
$271 = _i64Add($269 | 0, $270 | 0, $251 | 0, $252 | 0) | 0;
$272 = tempRet0;
$273 = _bitshift64Shl($271 | 0, $272 | 0, 1) | 0;
$274 = tempRet0;
$275 = _i64Add($273 | 0, $274 | 0, $233 | 0, $234 | 0) | 0;
$276 = tempRet0;
$277 = $in2;
$278 = $277;
$279 = HEAP32[$278 >> 2] | 0;
$280 = ($277 + 4) | 0;
$281 = $280;
$282 = HEAP32[$281 >> 2] | 0;
$283 = _bitshift64Ashr(0, $279 | 0, 32) | 0;
$284 = tempRet0;
$285 = ($in + 32) | 0;
$286 = $285;
$287 = $286;
$288 = HEAP32[$287 >> 2] | 0;
$289 = ($286 + 4) | 0;
$290 = $289;
$291 = HEAP32[$290 >> 2] | 0;
$292 = _bitshift64Ashr(0, $288 | 0, 32) | 0;
$293 = tempRet0;
$294 = ___muldi3($292 | 0, $293 | 0, $283 | 0, $284 | 0) | 0;
$295 = tempRet0;
$296 = _i64Add($275 | 0, $276 | 0, $294 | 0, $295 | 0) | 0;
$297 = tempRet0;
$298 = ($in2 + 32) | 0;
$299 = $298;
$300 = $299;
$301 = HEAP32[$300 >> 2] | 0;
$302 = ($299 + 4) | 0;
$303 = $302;
$304 = HEAP32[$303 >> 2] | 0;
$305 = _bitshift64Ashr(0, $301 | 0, 32) | 0;
$306 = tempRet0;
$307 = $in;
$308 = $307;
$309 = HEAP32[$308 >> 2] | 0;
$310 = ($307 + 4) | 0;
$311 = $310;
$312 = HEAP32[$311 >> 2] | 0;
$313 = _bitshift64Ashr(0, $309 | 0, 32) | 0;
$314 = tempRet0;
$315 = ___muldi3($313 | 0, $314 | 0, $305 | 0, $306 | 0) | 0;
$316 = tempRet0;
$317 = _i64Add($296 | 0, $297 | 0, $315 | 0, $316 | 0) | 0;
$318 = tempRet0;
$319 = ($output + 32) | 0;
$320 = $319;
$321 = $320;
HEAP32[$321 >> 2] = $317;
$322 = ($320 + 4) | 0;
$323 = $322;
HEAP32[$323 >> 2] = $318;
$324 = $106;
$325 = $324;
$326 = HEAP32[$325 >> 2] | 0;
$327 = ($324 + 4) | 0;
$328 = $327;
$329 = HEAP32[$328 >> 2] | 0;
$330 = _bitshift64Ashr(0, $326 | 0, 32) | 0;
$331 = tempRet0;
$332 = $178;
$333 = $332;
$334 = HEAP32[$333 >> 2] | 0;
$335 = ($332 + 4) | 0;
$336 = $335;
$337 = HEAP32[$336 >> 2] | 0;
$338 = _bitshift64Ashr(0, $334 | 0, 32) | 0;
$339 = tempRet0;
$340 = ___muldi3($338 | 0, $339 | 0, $330 | 0, $331 | 0) | 0;
$341 = tempRet0;
$342 = $191;
$343 = $342;
$344 = HEAP32[$343 >> 2] | 0;
$345 = ($342 + 4) | 0;
$346 = $345;
$347 = HEAP32[$346 >> 2] | 0;
$348 = _bitshift64Ashr(0, $344 | 0, 32) | 0;
$349 = tempRet0;
$350 = $93;
$351 = $350;
$352 = HEAP32[$351 >> 2] | 0;
$353 = ($350 + 4) | 0;
$354 = $353;
$355 = HEAP32[$354 >> 2] | 0;
$356 = _bitshift64Ashr(0, $352 | 0, 32) | 0;
$357 = tempRet0;
$358 = ___muldi3($356 | 0, $357 | 0, $348 | 0, $349 | 0) | 0;
$359 = tempRet0;
$360 = _i64Add($358 | 0, $359 | 0, $340 | 0, $341 | 0) | 0;
$361 = tempRet0;
$362 = $41;
$363 = $362;
$364 = HEAP32[$363 >> 2] | 0;
$365 = ($362 + 4) | 0;
$366 = $365;
$367 = HEAP32[$366 >> 2] | 0;
$368 = _bitshift64Ashr(0, $364 | 0, 32) | 0;
$369 = tempRet0;
$370 = $285;
$371 = $370;
$372 = HEAP32[$371 >> 2] | 0;
$373 = ($370 + 4) | 0;
$374 = $373;
$375 = HEAP32[$374 >> 2] | 0;
$376 = _bitshift64Ashr(0, $372 | 0, 32) | 0;
$377 = tempRet0;
$378 = ___muldi3($376 | 0, $377 | 0, $368 | 0, $369 | 0) | 0;
$379 = tempRet0;
$380 = _i64Add($360 | 0, $361 | 0, $378 | 0, $379 | 0) | 0;
$381 = tempRet0;
$382 = $298;
$383 = $382;
$384 = HEAP32[$383 >> 2] | 0;
$385 = ($382 + 4) | 0;
$386 = $385;
$387 = HEAP32[$386 >> 2] | 0;
$388 = _bitshift64Ashr(0, $384 | 0, 32) | 0;
$389 = tempRet0;
$390 = $30;
$391 = $390;
$392 = HEAP32[$391 >> 2] | 0;
$393 = ($390 + 4) | 0;
$394 = $393;
$395 = HEAP32[$394 >> 2] | 0;
$396 = _bitshift64Ashr(0, $392 | 0, 32) | 0;
$397 = tempRet0;
$398 = ___muldi3($396 | 0, $397 | 0, $388 | 0, $389 | 0) | 0;
$399 = tempRet0;
$400 = _i64Add($380 | 0, $381 | 0, $398 | 0, $399 | 0) | 0;
$401 = tempRet0;
$402 = $in2;
$403 = $402;
$404 = HEAP32[$403 >> 2] | 0;
$405 = ($402 + 4) | 0;
$406 = $405;
$407 = HEAP32[$406 >> 2] | 0;
$408 = _bitshift64Ashr(0, $404 | 0, 32) | 0;
$409 = tempRet0;
$410 = ($in + 40) | 0;
$411 = $410;
$412 = $411;
$413 = HEAP32[$412 >> 2] | 0;
$414 = ($411 + 4) | 0;
$415 = $414;
$416 = HEAP32[$415 >> 2] | 0;
$417 = _bitshift64Ashr(0, $413 | 0, 32) | 0;
$418 = tempRet0;
$419 = ___muldi3($417 | 0, $418 | 0, $408 | 0, $409 | 0) | 0;
$420 = tempRet0;
$421 = _i64Add($400 | 0, $401 | 0, $419 | 0, $420 | 0) | 0;
$422 = tempRet0;
$423 = ($in2 + 40) | 0;
$424 = $423;
$425 = $424;
$426 = HEAP32[$425 >> 2] | 0;
$427 = ($424 + 4) | 0;
$428 = $427;
$429 = HEAP32[$428 >> 2] | 0;
$430 = _bitshift64Ashr(0, $426 | 0, 32) | 0;
$431 = tempRet0;
$432 = $in;
$433 = $432;
$434 = HEAP32[$433 >> 2] | 0;
$435 = ($432 + 4) | 0;
$436 = $435;
$437 = HEAP32[$436 >> 2] | 0;
$438 = _bitshift64Ashr(0, $434 | 0, 32) | 0;
$439 = tempRet0;
$440 = ___muldi3($438 | 0, $439 | 0, $430 | 0, $431 | 0) | 0;
$441 = tempRet0;
$442 = _i64Add($421 | 0, $422 | 0, $440 | 0, $441 | 0) | 0;
$443 = tempRet0;
$444 = ($output + 40) | 0;
$445 = $444;
$446 = $445;
HEAP32[$446 >> 2] = $442;
$447 = ($445 + 4) | 0;
$448 = $447;
HEAP32[$448 >> 2] = $443;
$449 = $191;
$450 = $449;
$451 = HEAP32[$450 >> 2] | 0;
$452 = ($449 + 4) | 0;
$453 = $452;
$454 = HEAP32[$453 >> 2] | 0;
$455 = _bitshift64Ashr(0, $451 | 0, 32) | 0;
$456 = tempRet0;
$457 = $178;
$458 = $457;
$459 = HEAP32[$458 >> 2] | 0;
$460 = ($457 + 4) | 0;
$461 = $460;
$462 = HEAP32[$461 >> 2] | 0;
$463 = _bitshift64Ashr(0, $459 | 0, 32) | 0;
$464 = tempRet0;
$465 = ___muldi3($463 | 0, $464 | 0, $455 | 0, $456 | 0) | 0;
$466 = tempRet0;
$467 = $41;
$468 = $467;
$469 = HEAP32[$468 >> 2] | 0;
$470 = ($467 + 4) | 0;
$471 = $470;
$472 = HEAP32[$471 >> 2] | 0;
$473 = _bitshift64Ashr(0, $469 | 0, 32) | 0;
$474 = tempRet0;
$475 = $410;
$476 = $475;
$477 = HEAP32[$476 >> 2] | 0;
$478 = ($475 + 4) | 0;
$479 = $478;
$480 = HEAP32[$479 >> 2] | 0;
$481 = _bitshift64Ashr(0, $477 | 0, 32) | 0;
$482 = tempRet0;
$483 = ___muldi3($481 | 0, $482 | 0, $473 | 0, $474 | 0) | 0;
$484 = tempRet0;
$485 = _i64Add($483 | 0, $484 | 0, $465 | 0, $466 | 0) | 0;
$486 = tempRet0;
$487 = $423;
$488 = $487;
$489 = HEAP32[$488 >> 2] | 0;
$490 = ($487 + 4) | 0;
$491 = $490;
$492 = HEAP32[$491 >> 2] | 0;
$493 = _bitshift64Ashr(0, $489 | 0, 32) | 0;
$494 = tempRet0;
$495 = $30;
$496 = $495;
$497 = HEAP32[$496 >> 2] | 0;
$498 = ($495 + 4) | 0;
$499 = $498;
$500 = HEAP32[$499 >> 2] | 0;
$501 = _bitshift64Ashr(0, $497 | 0, 32) | 0;
$502 = tempRet0;
$503 = ___muldi3($501 | 0, $502 | 0, $493 | 0, $494 | 0) | 0;
$504 = tempRet0;
$505 = _i64Add($485 | 0, $486 | 0, $503 | 0, $504 | 0) | 0;
$506 = tempRet0;
$507 = _bitshift64Shl($505 | 0, $506 | 0, 1) | 0;
$508 = tempRet0;
$509 = $106;
$510 = $509;
$511 = HEAP32[$510 >> 2] | 0;
$512 = ($509 + 4) | 0;
$513 = $512;
$514 = HEAP32[$513 >> 2] | 0;
$515 = _bitshift64Ashr(0, $511 | 0, 32) | 0;
$516 = tempRet0;
$517 = $285;
$518 = $517;
$519 = HEAP32[$518 >> 2] | 0;
$520 = ($517 + 4) | 0;
$521 = $520;
$522 = HEAP32[$521 >> 2] | 0;
$523 = _bitshift64Ashr(0, $519 | 0, 32) | 0;
$524 = tempRet0;
$525 = ___muldi3($523 | 0, $524 | 0, $515 | 0, $516 | 0) | 0;
$526 = tempRet0;
$527 = _i64Add($507 | 0, $508 | 0, $525 | 0, $526 | 0) | 0;
$528 = tempRet0;
$529 = $298;
$530 = $529;
$531 = HEAP32[$530 >> 2] | 0;
$532 = ($529 + 4) | 0;
$533 = $532;
$534 = HEAP32[$533 >> 2] | 0;
$535 = _bitshift64Ashr(0, $531 | 0, 32) | 0;
$536 = tempRet0;
$537 = $93;
$538 = $537;
$539 = HEAP32[$538 >> 2] | 0;
$540 = ($537 + 4) | 0;
$541 = $540;
$542 = HEAP32[$541 >> 2] | 0;
$543 = _bitshift64Ashr(0, $539 | 0, 32) | 0;
$544 = tempRet0;
$545 = ___muldi3($543 | 0, $544 | 0, $535 | 0, $536 | 0) | 0;
$546 = tempRet0;
$547 = _i64Add($527 | 0, $528 | 0, $545 | 0, $546 | 0) | 0;
$548 = tempRet0;
$549 = $in2;
$550 = $549;
$551 = HEAP32[$550 >> 2] | 0;
$552 = ($549 + 4) | 0;
$553 = $552;
$554 = HEAP32[$553 >> 2] | 0;
$555 = _bitshift64Ashr(0, $551 | 0, 32) | 0;
$556 = tempRet0;
$557 = ($in + 48) | 0;
$558 = $557;
$559 = $558;
$560 = HEAP32[$559 >> 2] | 0;
$561 = ($558 + 4) | 0;
$562 = $561;
$563 = HEAP32[$562 >> 2] | 0;
$564 = _bitshift64Ashr(0, $560 | 0, 32) | 0;
$565 = tempRet0;
$566 = ___muldi3($564 | 0, $565 | 0, $555 | 0, $556 | 0) | 0;
$567 = tempRet0;
$568 = _i64Add($547 | 0, $548 | 0, $566 | 0, $567 | 0) | 0;
$569 = tempRet0;
$570 = ($in2 + 48) | 0;
$571 = $570;
$572 = $571;
$573 = HEAP32[$572 >> 2] | 0;
$574 = ($571 + 4) | 0;
$575 = $574;
$576 = HEAP32[$575 >> 2] | 0;
$577 = _bitshift64Ashr(0, $573 | 0, 32) | 0;
$578 = tempRet0;
$579 = $in;
$580 = $579;
$581 = HEAP32[$580 >> 2] | 0;
$582 = ($579 + 4) | 0;
$583 = $582;
$584 = HEAP32[$583 >> 2] | 0;
$585 = _bitshift64Ashr(0, $581 | 0, 32) | 0;
$586 = tempRet0;
$587 = ___muldi3($585 | 0, $586 | 0, $577 | 0, $578 | 0) | 0;
$588 = tempRet0;
$589 = _i64Add($568 | 0, $569 | 0, $587 | 0, $588 | 0) | 0;
$590 = tempRet0;
$591 = ($output + 48) | 0;
$592 = $591;
$593 = $592;
HEAP32[$593 >> 2] = $589;
$594 = ($592 + 4) | 0;
$595 = $594;
HEAP32[$595 >> 2] = $590;
$596 = $191;
$597 = $596;
$598 = HEAP32[$597 >> 2] | 0;
$599 = ($596 + 4) | 0;
$600 = $599;
$601 = HEAP32[$600 >> 2] | 0;
$602 = _bitshift64Ashr(0, $598 | 0, 32) | 0;
$603 = tempRet0;
$604 = $285;
$605 = $604;
$606 = HEAP32[$605 >> 2] | 0;
$607 = ($604 + 4) | 0;
$608 = $607;
$609 = HEAP32[$608 >> 2] | 0;
$610 = _bitshift64Ashr(0, $606 | 0, 32) | 0;
$611 = tempRet0;
$612 = ___muldi3($610 | 0, $611 | 0, $602 | 0, $603 | 0) | 0;
$613 = tempRet0;
$614 = $298;
$615 = $614;
$616 = HEAP32[$615 >> 2] | 0;
$617 = ($614 + 4) | 0;
$618 = $617;
$619 = HEAP32[$618 >> 2] | 0;
$620 = _bitshift64Ashr(0, $616 | 0, 32) | 0;
$621 = tempRet0;
$622 = $178;
$623 = $622;
$624 = HEAP32[$623 >> 2] | 0;
$625 = ($622 + 4) | 0;
$626 = $625;
$627 = HEAP32[$626 >> 2] | 0;
$628 = _bitshift64Ashr(0, $624 | 0, 32) | 0;
$629 = tempRet0;
$630 = ___muldi3($628 | 0, $629 | 0, $620 | 0, $621 | 0) | 0;
$631 = tempRet0;
$632 = _i64Add($630 | 0, $631 | 0, $612 | 0, $613 | 0) | 0;
$633 = tempRet0;
$634 = $106;
$635 = $634;
$636 = HEAP32[$635 >> 2] | 0;
$637 = ($634 + 4) | 0;
$638 = $637;
$639 = HEAP32[$638 >> 2] | 0;
$640 = _bitshift64Ashr(0, $636 | 0, 32) | 0;
$641 = tempRet0;
$642 = $410;
$643 = $642;
$644 = HEAP32[$643 >> 2] | 0;
$645 = ($642 + 4) | 0;
$646 = $645;
$647 = HEAP32[$646 >> 2] | 0;
$648 = _bitshift64Ashr(0, $644 | 0, 32) | 0;
$649 = tempRet0;
$650 = ___muldi3($648 | 0, $649 | 0, $640 | 0, $641 | 0) | 0;
$651 = tempRet0;
$652 = _i64Add($632 | 0, $633 | 0, $650 | 0, $651 | 0) | 0;
$653 = tempRet0;
$654 = $423;
$655 = $654;
$656 = HEAP32[$655 >> 2] | 0;
$657 = ($654 + 4) | 0;
$658 = $657;
$659 = HEAP32[$658 >> 2] | 0;
$660 = _bitshift64Ashr(0, $656 | 0, 32) | 0;
$661 = tempRet0;
$662 = $93;
$663 = $662;
$664 = HEAP32[$663 >> 2] | 0;
$665 = ($662 + 4) | 0;
$666 = $665;
$667 = HEAP32[$666 >> 2] | 0;
$668 = _bitshift64Ashr(0, $664 | 0, 32) | 0;
$669 = tempRet0;
$670 = ___muldi3($668 | 0, $669 | 0, $660 | 0, $661 | 0) | 0;
$671 = tempRet0;
$672 = _i64Add($652 | 0, $653 | 0, $670 | 0, $671 | 0) | 0;
$673 = tempRet0;
$674 = $41;
$675 = $674;
$676 = HEAP32[$675 >> 2] | 0;
$677 = ($674 + 4) | 0;
$678 = $677;
$679 = HEAP32[$678 >> 2] | 0;
$680 = _bitshift64Ashr(0, $676 | 0, 32) | 0;
$681 = tempRet0;
$682 = $557;
$683 = $682;
$684 = HEAP32[$683 >> 2] | 0;
$685 = ($682 + 4) | 0;
$686 = $685;
$687 = HEAP32[$686 >> 2] | 0;
$688 = _bitshift64Ashr(0, $684 | 0, 32) | 0;
$689 = tempRet0;
$690 = ___muldi3($688 | 0, $689 | 0, $680 | 0, $681 | 0) | 0;
$691 = tempRet0;
$692 = _i64Add($672 | 0, $673 | 0, $690 | 0, $691 | 0) | 0;
$693 = tempRet0;
$694 = $570;
$695 = $694;
$696 = HEAP32[$695 >> 2] | 0;
$697 = ($694 + 4) | 0;
$698 = $697;
$699 = HEAP32[$698 >> 2] | 0;
$700 = _bitshift64Ashr(0, $696 | 0, 32) | 0;
$701 = tempRet0;
$702 = $30;
$703 = $702;
$704 = HEAP32[$703 >> 2] | 0;
$705 = ($702 + 4) | 0;
$706 = $705;
$707 = HEAP32[$706 >> 2] | 0;
$708 = _bitshift64Ashr(0, $704 | 0, 32) | 0;
$709 = tempRet0;
$710 = ___muldi3($708 | 0, $709 | 0, $700 | 0, $701 | 0) | 0;
$711 = tempRet0;
$712 = _i64Add($692 | 0, $693 | 0, $710 | 0, $711 | 0) | 0;
$713 = tempRet0;
$714 = $in2;
$715 = $714;
$716 = HEAP32[$715 >> 2] | 0;
$717 = ($714 + 4) | 0;
$718 = $717;
$719 = HEAP32[$718 >> 2] | 0;
$720 = _bitshift64Ashr(0, $716 | 0, 32) | 0;
$721 = tempRet0;
$722 = ($in + 56) | 0;
$723 = $722;
$724 = $723;
$725 = HEAP32[$724 >> 2] | 0;
$726 = ($723 + 4) | 0;
$727 = $726;
$728 = HEAP32[$727 >> 2] | 0;
$729 = _bitshift64Ashr(0, $725 | 0, 32) | 0;
$730 = tempRet0;
$731 = ___muldi3($729 | 0, $730 | 0, $720 | 0, $721 | 0) | 0;
$732 = tempRet0;
$733 = _i64Add($712 | 0, $713 | 0, $731 | 0, $732 | 0) | 0;
$734 = tempRet0;
$735 = ($in2 + 56) | 0;
$736 = $735;
$737 = $736;
$738 = HEAP32[$737 >> 2] | 0;
$739 = ($736 + 4) | 0;
$740 = $739;
$741 = HEAP32[$740 >> 2] | 0;
$742 = _bitshift64Ashr(0, $738 | 0, 32) | 0;
$743 = tempRet0;
$744 = $in;
$745 = $744;
$746 = HEAP32[$745 >> 2] | 0;
$747 = ($744 + 4) | 0;
$748 = $747;
$749 = HEAP32[$748 >> 2] | 0;
$750 = _bitshift64Ashr(0, $746 | 0, 32) | 0;
$751 = tempRet0;
$752 = ___muldi3($750 | 0, $751 | 0, $742 | 0, $743 | 0) | 0;
$753 = tempRet0;
$754 = _i64Add($733 | 0, $734 | 0, $752 | 0, $753 | 0) | 0;
$755 = tempRet0;
$756 = ($output + 56) | 0;
$757 = $756;
$758 = $757;
HEAP32[$758 >> 2] = $754;
$759 = ($757 + 4) | 0;
$760 = $759;
HEAP32[$760 >> 2] = $755;
$761 = $298;
$762 = $761;
$763 = HEAP32[$762 >> 2] | 0;
$764 = ($761 + 4) | 0;
$765 = $764;
$766 = HEAP32[$765 >> 2] | 0;
$767 = _bitshift64Ashr(0, $763 | 0, 32) | 0;
$768 = tempRet0;
$769 = $285;
$770 = $769;
$771 = HEAP32[$770 >> 2] | 0;
$772 = ($769 + 4) | 0;
$773 = $772;
$774 = HEAP32[$773 >> 2] | 0;
$775 = _bitshift64Ashr(0, $771 | 0, 32) | 0;
$776 = tempRet0;
$777 = ___muldi3($775 | 0, $776 | 0, $767 | 0, $768 | 0) | 0;
$778 = tempRet0;
$779 = $191;
$780 = $779;
$781 = HEAP32[$780 >> 2] | 0;
$782 = ($779 + 4) | 0;
$783 = $782;
$784 = HEAP32[$783 >> 2] | 0;
$785 = _bitshift64Ashr(0, $781 | 0, 32) | 0;
$786 = tempRet0;
$787 = $410;
$788 = $787;
$789 = HEAP32[$788 >> 2] | 0;
$790 = ($787 + 4) | 0;
$791 = $790;
$792 = HEAP32[$791 >> 2] | 0;
$793 = _bitshift64Ashr(0, $789 | 0, 32) | 0;
$794 = tempRet0;
$795 = ___muldi3($793 | 0, $794 | 0, $785 | 0, $786 | 0) | 0;
$796 = tempRet0;
$797 = $423;
$798 = $797;
$799 = HEAP32[$798 >> 2] | 0;
$800 = ($797 + 4) | 0;
$801 = $800;
$802 = HEAP32[$801 >> 2] | 0;
$803 = _bitshift64Ashr(0, $799 | 0, 32) | 0;
$804 = tempRet0;
$805 = $178;
$806 = $805;
$807 = HEAP32[$806 >> 2] | 0;
$808 = ($805 + 4) | 0;
$809 = $808;
$810 = HEAP32[$809 >> 2] | 0;
$811 = _bitshift64Ashr(0, $807 | 0, 32) | 0;
$812 = tempRet0;
$813 = ___muldi3($811 | 0, $812 | 0, $803 | 0, $804 | 0) | 0;
$814 = tempRet0;
$815 = _i64Add($813 | 0, $814 | 0, $795 | 0, $796 | 0) | 0;
$816 = tempRet0;
$817 = $41;
$818 = $817;
$819 = HEAP32[$818 >> 2] | 0;
$820 = ($817 + 4) | 0;
$821 = $820;
$822 = HEAP32[$821 >> 2] | 0;
$823 = _bitshift64Ashr(0, $819 | 0, 32) | 0;
$824 = tempRet0;
$825 = $722;
$826 = $825;
$827 = HEAP32[$826 >> 2] | 0;
$828 = ($825 + 4) | 0;
$829 = $828;
$830 = HEAP32[$829 >> 2] | 0;
$831 = _bitshift64Ashr(0, $827 | 0, 32) | 0;
$832 = tempRet0;
$833 = ___muldi3($831 | 0, $832 | 0, $823 | 0, $824 | 0) | 0;
$834 = tempRet0;
$835 = _i64Add($815 | 0, $816 | 0, $833 | 0, $834 | 0) | 0;
$836 = tempRet0;
$837 = $735;
$838 = $837;
$839 = HEAP32[$838 >> 2] | 0;
$840 = ($837 + 4) | 0;
$841 = $840;
$842 = HEAP32[$841 >> 2] | 0;
$843 = _bitshift64Ashr(0, $839 | 0, 32) | 0;
$844 = tempRet0;
$845 = $30;
$846 = $845;
$847 = HEAP32[$846 >> 2] | 0;
$848 = ($845 + 4) | 0;
$849 = $848;
$850 = HEAP32[$849 >> 2] | 0;
$851 = _bitshift64Ashr(0, $847 | 0, 32) | 0;
$852 = tempRet0;
$853 = ___muldi3($851 | 0, $852 | 0, $843 | 0, $844 | 0) | 0;
$854 = tempRet0;
$855 = _i64Add($835 | 0, $836 | 0, $853 | 0, $854 | 0) | 0;
$856 = tempRet0;
$857 = _bitshift64Shl($855 | 0, $856 | 0, 1) | 0;
$858 = tempRet0;
$859 = _i64Add($857 | 0, $858 | 0, $777 | 0, $778 | 0) | 0;
$860 = tempRet0;
$861 = $106;
$862 = $861;
$863 = HEAP32[$862 >> 2] | 0;
$864 = ($861 + 4) | 0;
$865 = $864;
$866 = HEAP32[$865 >> 2] | 0;
$867 = _bitshift64Ashr(0, $863 | 0, 32) | 0;
$868 = tempRet0;
$869 = $557;
$870 = $869;
$871 = HEAP32[$870 >> 2] | 0;
$872 = ($869 + 4) | 0;
$873 = $872;
$874 = HEAP32[$873 >> 2] | 0;
$875 = _bitshift64Ashr(0, $871 | 0, 32) | 0;
$876 = tempRet0;
$877 = ___muldi3($875 | 0, $876 | 0, $867 | 0, $868 | 0) | 0;
$878 = tempRet0;
$879 = _i64Add($859 | 0, $860 | 0, $877 | 0, $878 | 0) | 0;
$880 = tempRet0;
$881 = $570;
$882 = $881;
$883 = HEAP32[$882 >> 2] | 0;
$884 = ($881 + 4) | 0;
$885 = $884;
$886 = HEAP32[$885 >> 2] | 0;
$887 = _bitshift64Ashr(0, $883 | 0, 32) | 0;
$888 = tempRet0;
$889 = $93;
$890 = $889;
$891 = HEAP32[$890 >> 2] | 0;
$892 = ($889 + 4) | 0;
$893 = $892;
$894 = HEAP32[$893 >> 2] | 0;
$895 = _bitshift64Ashr(0, $891 | 0, 32) | 0;
$896 = tempRet0;
$897 = ___muldi3($895 | 0, $896 | 0, $887 | 0, $888 | 0) | 0;
$898 = tempRet0;
$899 = _i64Add($879 | 0, $880 | 0, $897 | 0, $898 | 0) | 0;
$900 = tempRet0;
$901 = $in2;
$902 = $901;
$903 = HEAP32[$902 >> 2] | 0;
$904 = ($901 + 4) | 0;
$905 = $904;
$906 = HEAP32[$905 >> 2] | 0;
$907 = _bitshift64Ashr(0, $903 | 0, 32) | 0;
$908 = tempRet0;
$909 = ($in + 64) | 0;
$910 = $909;
$911 = $910;
$912 = HEAP32[$911 >> 2] | 0;
$913 = ($910 + 4) | 0;
$914 = $913;
$915 = HEAP32[$914 >> 2] | 0;
$916 = _bitshift64Ashr(0, $912 | 0, 32) | 0;
$917 = tempRet0;
$918 = ___muldi3($916 | 0, $917 | 0, $907 | 0, $908 | 0) | 0;
$919 = tempRet0;
$920 = _i64Add($899 | 0, $900 | 0, $918 | 0, $919 | 0) | 0;
$921 = tempRet0;
$922 = ($in2 + 64) | 0;
$923 = $922;
$924 = $923;
$925 = HEAP32[$924 >> 2] | 0;
$926 = ($923 + 4) | 0;
$927 = $926;
$928 = HEAP32[$927 >> 2] | 0;
$929 = _bitshift64Ashr(0, $925 | 0, 32) | 0;
$930 = tempRet0;
$931 = $in;
$932 = $931;
$933 = HEAP32[$932 >> 2] | 0;
$934 = ($931 + 4) | 0;
$935 = $934;
$936 = HEAP32[$935 >> 2] | 0;
$937 = _bitshift64Ashr(0, $933 | 0, 32) | 0;
$938 = tempRet0;
$939 = ___muldi3($937 | 0, $938 | 0, $929 | 0, $930 | 0) | 0;
$940 = tempRet0;
$941 = _i64Add($920 | 0, $921 | 0, $939 | 0, $940 | 0) | 0;
$942 = tempRet0;
$943 = ($output + 64) | 0;
$944 = $943;
$945 = $944;
HEAP32[$945 >> 2] = $941;
$946 = ($944 + 4) | 0;
$947 = $946;
HEAP32[$947 >> 2] = $942;
$948 = $298;
$949 = $948;
$950 = HEAP32[$949 >> 2] | 0;
$951 = ($948 + 4) | 0;
$952 = $951;
$953 = HEAP32[$952 >> 2] | 0;
$954 = _bitshift64Ashr(0, $950 | 0, 32) | 0;
$955 = tempRet0;
$956 = $410;
$957 = $956;
$958 = HEAP32[$957 >> 2] | 0;
$959 = ($956 + 4) | 0;
$960 = $959;
$961 = HEAP32[$960 >> 2] | 0;
$962 = _bitshift64Ashr(0, $958 | 0, 32) | 0;
$963 = tempRet0;
$964 = ___muldi3($962 | 0, $963 | 0, $954 | 0, $955 | 0) | 0;
$965 = tempRet0;
$966 = $423;
$967 = $966;
$968 = HEAP32[$967 >> 2] | 0;
$969 = ($966 + 4) | 0;
$970 = $969;
$971 = HEAP32[$970 >> 2] | 0;
$972 = _bitshift64Ashr(0, $968 | 0, 32) | 0;
$973 = tempRet0;
$974 = $285;
$975 = $974;
$976 = HEAP32[$975 >> 2] | 0;
$977 = ($974 + 4) | 0;
$978 = $977;
$979 = HEAP32[$978 >> 2] | 0;
$980 = _bitshift64Ashr(0, $976 | 0, 32) | 0;
$981 = tempRet0;
$982 = ___muldi3($980 | 0, $981 | 0, $972 | 0, $973 | 0) | 0;
$983 = tempRet0;
$984 = _i64Add($982 | 0, $983 | 0, $964 | 0, $965 | 0) | 0;
$985 = tempRet0;
$986 = $191;
$987 = $986;
$988 = HEAP32[$987 >> 2] | 0;
$989 = ($986 + 4) | 0;
$990 = $989;
$991 = HEAP32[$990 >> 2] | 0;
$992 = _bitshift64Ashr(0, $988 | 0, 32) | 0;
$993 = tempRet0;
$994 = $557;
$995 = $994;
$996 = HEAP32[$995 >> 2] | 0;
$997 = ($994 + 4) | 0;
$998 = $997;
$999 = HEAP32[$998 >> 2] | 0;
$1000 = _bitshift64Ashr(0, $996 | 0, 32) | 0;
$1001 = tempRet0;
$1002 = ___muldi3($1000 | 0, $1001 | 0, $992 | 0, $993 | 0) | 0;
$1003 = tempRet0;
$1004 = _i64Add($984 | 0, $985 | 0, $1002 | 0, $1003 | 0) | 0;
$1005 = tempRet0;
$1006 = $570;
$1007 = $1006;
$1008 = HEAP32[$1007 >> 2] | 0;
$1009 = ($1006 + 4) | 0;
$1010 = $1009;
$1011 = HEAP32[$1010 >> 2] | 0;
$1012 = _bitshift64Ashr(0, $1008 | 0, 32) | 0;
$1013 = tempRet0;
$1014 = $178;
$1015 = $1014;
$1016 = HEAP32[$1015 >> 2] | 0;
$1017 = ($1014 + 4) | 0;
$1018 = $1017;
$1019 = HEAP32[$1018 >> 2] | 0;
$1020 = _bitshift64Ashr(0, $1016 | 0, 32) | 0;
$1021 = tempRet0;
$1022 = ___muldi3($1020 | 0, $1021 | 0, $1012 | 0, $1013 | 0) | 0;
$1023 = tempRet0;
$1024 = _i64Add($1004 | 0, $1005 | 0, $1022 | 0, $1023 | 0) | 0;
$1025 = tempRet0;
$1026 = $106;
$1027 = $1026;
$1028 = HEAP32[$1027 >> 2] | 0;
$1029 = ($1026 + 4) | 0;
$1030 = $1029;
$1031 = HEAP32[$1030 >> 2] | 0;
$1032 = _bitshift64Ashr(0, $1028 | 0, 32) | 0;
$1033 = tempRet0;
$1034 = $722;
$1035 = $1034;
$1036 = HEAP32[$1035 >> 2] | 0;
$1037 = ($1034 + 4) | 0;
$1038 = $1037;
$1039 = HEAP32[$1038 >> 2] | 0;
$1040 = _bitshift64Ashr(0, $1036 | 0, 32) | 0;
$1041 = tempRet0;
$1042 = ___muldi3($1040 | 0, $1041 | 0, $1032 | 0, $1033 | 0) | 0;
$1043 = tempRet0;
$1044 = _i64Add($1024 | 0, $1025 | 0, $1042 | 0, $1043 | 0) | 0;
$1045 = tempRet0;
$1046 = $735;
$1047 = $1046;
$1048 = HEAP32[$1047 >> 2] | 0;
$1049 = ($1046 + 4) | 0;
$1050 = $1049;
$1051 = HEAP32[$1050 >> 2] | 0;
$1052 = _bitshift64Ashr(0, $1048 | 0, 32) | 0;
$1053 = tempRet0;
$1054 = $93;
$1055 = $1054;
$1056 = HEAP32[$1055 >> 2] | 0;
$1057 = ($1054 + 4) | 0;
$1058 = $1057;
$1059 = HEAP32[$1058 >> 2] | 0;
$1060 = _bitshift64Ashr(0, $1056 | 0, 32) | 0;
$1061 = tempRet0;
$1062 = ___muldi3($1060 | 0, $1061 | 0, $1052 | 0, $1053 | 0) | 0;
$1063 = tempRet0;
$1064 = _i64Add($1044 | 0, $1045 | 0, $1062 | 0, $1063 | 0) | 0;
$1065 = tempRet0;
$1066 = $41;
$1067 = $1066;
$1068 = HEAP32[$1067 >> 2] | 0;
$1069 = ($1066 + 4) | 0;
$1070 = $1069;
$1071 = HEAP32[$1070 >> 2] | 0;
$1072 = _bitshift64Ashr(0, $1068 | 0, 32) | 0;
$1073 = tempRet0;
$1074 = $909;
$1075 = $1074;
$1076 = HEAP32[$1075 >> 2] | 0;
$1077 = ($1074 + 4) | 0;
$1078 = $1077;
$1079 = HEAP32[$1078 >> 2] | 0;
$1080 = _bitshift64Ashr(0, $1076 | 0, 32) | 0;
$1081 = tempRet0;
$1082 = ___muldi3($1080 | 0, $1081 | 0, $1072 | 0, $1073 | 0) | 0;
$1083 = tempRet0;
$1084 = _i64Add($1064 | 0, $1065 | 0, $1082 | 0, $1083 | 0) | 0;
$1085 = tempRet0;
$1086 = $922;
$1087 = $1086;
$1088 = HEAP32[$1087 >> 2] | 0;
$1089 = ($1086 + 4) | 0;
$1090 = $1089;
$1091 = HEAP32[$1090 >> 2] | 0;
$1092 = _bitshift64Ashr(0, $1088 | 0, 32) | 0;
$1093 = tempRet0;
$1094 = $30;
$1095 = $1094;
$1096 = HEAP32[$1095 >> 2] | 0;
$1097 = ($1094 + 4) | 0;
$1098 = $1097;
$1099 = HEAP32[$1098 >> 2] | 0;
$1100 = _bitshift64Ashr(0, $1096 | 0, 32) | 0;
$1101 = tempRet0;
$1102 = ___muldi3($1100 | 0, $1101 | 0, $1092 | 0, $1093 | 0) | 0;
$1103 = tempRet0;
$1104 = _i64Add($1084 | 0, $1085 | 0, $1102 | 0, $1103 | 0) | 0;
$1105 = tempRet0;
$1106 = $in2;
$1107 = $1106;
$1108 = HEAP32[$1107 >> 2] | 0;
$1109 = ($1106 + 4) | 0;
$1110 = $1109;
$1111 = HEAP32[$1110 >> 2] | 0;
$1112 = _bitshift64Ashr(0, $1108 | 0, 32) | 0;
$1113 = tempRet0;
$1114 = ($in + 72) | 0;
$1115 = $1114;
$1116 = $1115;
$1117 = HEAP32[$1116 >> 2] | 0;
$1118 = ($1115 + 4) | 0;
$1119 = $1118;
$1120 = HEAP32[$1119 >> 2] | 0;
$1121 = _bitshift64Ashr(0, $1117 | 0, 32) | 0;
$1122 = tempRet0;
$1123 = ___muldi3($1121 | 0, $1122 | 0, $1112 | 0, $1113 | 0) | 0;
$1124 = tempRet0;
$1125 = _i64Add($1104 | 0, $1105 | 0, $1123 | 0, $1124 | 0) | 0;
$1126 = tempRet0;
$1127 = ($in2 + 72) | 0;
$1128 = $1127;
$1129 = $1128;
$1130 = HEAP32[$1129 >> 2] | 0;
$1131 = ($1128 + 4) | 0;
$1132 = $1131;
$1133 = HEAP32[$1132 >> 2] | 0;
$1134 = _bitshift64Ashr(0, $1130 | 0, 32) | 0;
$1135 = tempRet0;
$1136 = $in;
$1137 = $1136;
$1138 = HEAP32[$1137 >> 2] | 0;
$1139 = ($1136 + 4) | 0;
$1140 = $1139;
$1141 = HEAP32[$1140 >> 2] | 0;
$1142 = _bitshift64Ashr(0, $1138 | 0, 32) | 0;
$1143 = tempRet0;
$1144 = ___muldi3($1142 | 0, $1143 | 0, $1134 | 0, $1135 | 0) | 0;
$1145 = tempRet0;
$1146 = _i64Add($1125 | 0, $1126 | 0, $1144 | 0, $1145 | 0) | 0;
$1147 = tempRet0;
$1148 = ($output + 72) | 0;
$1149 = $1148;
$1150 = $1149;
HEAP32[$1150 >> 2] = $1146;
$1151 = ($1149 + 4) | 0;
$1152 = $1151;
HEAP32[$1152 >> 2] = $1147;
$1153 = $423;
$1154 = $1153;
$1155 = HEAP32[$1154 >> 2] | 0;
$1156 = ($1153 + 4) | 0;
$1157 = $1156;
$1158 = HEAP32[$1157 >> 2] | 0;
$1159 = _bitshift64Ashr(0, $1155 | 0, 32) | 0;
$1160 = tempRet0;
$1161 = $410;
$1162 = $1161;
$1163 = HEAP32[$1162 >> 2] | 0;
$1164 = ($1161 + 4) | 0;
$1165 = $1164;
$1166 = HEAP32[$1165 >> 2] | 0;
$1167 = _bitshift64Ashr(0, $1163 | 0, 32) | 0;
$1168 = tempRet0;
$1169 = ___muldi3($1167 | 0, $1168 | 0, $1159 | 0, $1160 | 0) | 0;
$1170 = tempRet0;
$1171 = $191;
$1172 = $1171;
$1173 = HEAP32[$1172 >> 2] | 0;
$1174 = ($1171 + 4) | 0;
$1175 = $1174;
$1176 = HEAP32[$1175 >> 2] | 0;
$1177 = _bitshift64Ashr(0, $1173 | 0, 32) | 0;
$1178 = tempRet0;
$1179 = $722;
$1180 = $1179;
$1181 = HEAP32[$1180 >> 2] | 0;
$1182 = ($1179 + 4) | 0;
$1183 = $1182;
$1184 = HEAP32[$1183 >> 2] | 0;
$1185 = _bitshift64Ashr(0, $1181 | 0, 32) | 0;
$1186 = tempRet0;
$1187 = ___muldi3($1185 | 0, $1186 | 0, $1177 | 0, $1178 | 0) | 0;
$1188 = tempRet0;
$1189 = _i64Add($1187 | 0, $1188 | 0, $1169 | 0, $1170 | 0) | 0;
$1190 = tempRet0;
$1191 = $735;
$1192 = $1191;
$1193 = HEAP32[$1192 >> 2] | 0;
$1194 = ($1191 + 4) | 0;
$1195 = $1194;
$1196 = HEAP32[$1195 >> 2] | 0;
$1197 = _bitshift64Ashr(0, $1193 | 0, 32) | 0;
$1198 = tempRet0;
$1199 = $178;
$1200 = $1199;
$1201 = HEAP32[$1200 >> 2] | 0;
$1202 = ($1199 + 4) | 0;
$1203 = $1202;
$1204 = HEAP32[$1203 >> 2] | 0;
$1205 = _bitshift64Ashr(0, $1201 | 0, 32) | 0;
$1206 = tempRet0;
$1207 = ___muldi3($1205 | 0, $1206 | 0, $1197 | 0, $1198 | 0) | 0;
$1208 = tempRet0;
$1209 = _i64Add($1189 | 0, $1190 | 0, $1207 | 0, $1208 | 0) | 0;
$1210 = tempRet0;
$1211 = $41;
$1212 = $1211;
$1213 = HEAP32[$1212 >> 2] | 0;
$1214 = ($1211 + 4) | 0;
$1215 = $1214;
$1216 = HEAP32[$1215 >> 2] | 0;
$1217 = _bitshift64Ashr(0, $1213 | 0, 32) | 0;
$1218 = tempRet0;
$1219 = $1114;
$1220 = $1219;
$1221 = HEAP32[$1220 >> 2] | 0;
$1222 = ($1219 + 4) | 0;
$1223 = $1222;
$1224 = HEAP32[$1223 >> 2] | 0;
$1225 = _bitshift64Ashr(0, $1221 | 0, 32) | 0;
$1226 = tempRet0;
$1227 = ___muldi3($1225 | 0, $1226 | 0, $1217 | 0, $1218 | 0) | 0;
$1228 = tempRet0;
$1229 = _i64Add($1209 | 0, $1210 | 0, $1227 | 0, $1228 | 0) | 0;
$1230 = tempRet0;
$1231 = $1127;
$1232 = $1231;
$1233 = HEAP32[$1232 >> 2] | 0;
$1234 = ($1231 + 4) | 0;
$1235 = $1234;
$1236 = HEAP32[$1235 >> 2] | 0;
$1237 = _bitshift64Ashr(0, $1233 | 0, 32) | 0;
$1238 = tempRet0;
$1239 = $30;
$1240 = $1239;
$1241 = HEAP32[$1240 >> 2] | 0;
$1242 = ($1239 + 4) | 0;
$1243 = $1242;
$1244 = HEAP32[$1243 >> 2] | 0;
$1245 = _bitshift64Ashr(0, $1241 | 0, 32) | 0;
$1246 = tempRet0;
$1247 = ___muldi3($1245 | 0, $1246 | 0, $1237 | 0, $1238 | 0) | 0;
$1248 = tempRet0;
$1249 = _i64Add($1229 | 0, $1230 | 0, $1247 | 0, $1248 | 0) | 0;
$1250 = tempRet0;
$1251 = _bitshift64Shl($1249 | 0, $1250 | 0, 1) | 0;
$1252 = tempRet0;
$1253 = $298;
$1254 = $1253;
$1255 = HEAP32[$1254 >> 2] | 0;
$1256 = ($1253 + 4) | 0;
$1257 = $1256;
$1258 = HEAP32[$1257 >> 2] | 0;
$1259 = _bitshift64Ashr(0, $1255 | 0, 32) | 0;
$1260 = tempRet0;
$1261 = $557;
$1262 = $1261;
$1263 = HEAP32[$1262 >> 2] | 0;
$1264 = ($1261 + 4) | 0;
$1265 = $1264;
$1266 = HEAP32[$1265 >> 2] | 0;
$1267 = _bitshift64Ashr(0, $1263 | 0, 32) | 0;
$1268 = tempRet0;
$1269 = ___muldi3($1267 | 0, $1268 | 0, $1259 | 0, $1260 | 0) | 0;
$1270 = tempRet0;
$1271 = _i64Add($1251 | 0, $1252 | 0, $1269 | 0, $1270 | 0) | 0;
$1272 = tempRet0;
$1273 = $570;
$1274 = $1273;
$1275 = HEAP32[$1274 >> 2] | 0;
$1276 = ($1273 + 4) | 0;
$1277 = $1276;
$1278 = HEAP32[$1277 >> 2] | 0;
$1279 = _bitshift64Ashr(0, $1275 | 0, 32) | 0;
$1280 = tempRet0;
$1281 = $285;
$1282 = $1281;
$1283 = HEAP32[$1282 >> 2] | 0;
$1284 = ($1281 + 4) | 0;
$1285 = $1284;
$1286 = HEAP32[$1285 >> 2] | 0;
$1287 = _bitshift64Ashr(0, $1283 | 0, 32) | 0;
$1288 = tempRet0;
$1289 = ___muldi3($1287 | 0, $1288 | 0, $1279 | 0, $1280 | 0) | 0;
$1290 = tempRet0;
$1291 = _i64Add($1271 | 0, $1272 | 0, $1289 | 0, $1290 | 0) | 0;
$1292 = tempRet0;
$1293 = $106;
$1294 = $1293;
$1295 = HEAP32[$1294 >> 2] | 0;
$1296 = ($1293 + 4) | 0;
$1297 = $1296;
$1298 = HEAP32[$1297 >> 2] | 0;
$1299 = _bitshift64Ashr(0, $1295 | 0, 32) | 0;
$1300 = tempRet0;
$1301 = $909;
$1302 = $1301;
$1303 = HEAP32[$1302 >> 2] | 0;
$1304 = ($1301 + 4) | 0;
$1305 = $1304;
$1306 = HEAP32[$1305 >> 2] | 0;
$1307 = _bitshift64Ashr(0, $1303 | 0, 32) | 0;
$1308 = tempRet0;
$1309 = ___muldi3($1307 | 0, $1308 | 0, $1299 | 0, $1300 | 0) | 0;
$1310 = tempRet0;
$1311 = _i64Add($1291 | 0, $1292 | 0, $1309 | 0, $1310 | 0) | 0;
$1312 = tempRet0;
$1313 = $922;
$1314 = $1313;
$1315 = HEAP32[$1314 >> 2] | 0;
$1316 = ($1313 + 4) | 0;
$1317 = $1316;
$1318 = HEAP32[$1317 >> 2] | 0;
$1319 = _bitshift64Ashr(0, $1315 | 0, 32) | 0;
$1320 = tempRet0;
$1321 = $93;
$1322 = $1321;
$1323 = HEAP32[$1322 >> 2] | 0;
$1324 = ($1321 + 4) | 0;
$1325 = $1324;
$1326 = HEAP32[$1325 >> 2] | 0;
$1327 = _bitshift64Ashr(0, $1323 | 0, 32) | 0;
$1328 = tempRet0;
$1329 = ___muldi3($1327 | 0, $1328 | 0, $1319 | 0, $1320 | 0) | 0;
$1330 = tempRet0;
$1331 = _i64Add($1311 | 0, $1312 | 0, $1329 | 0, $1330 | 0) | 0;
$1332 = tempRet0;
$1333 = ($output + 80) | 0;
$1334 = $1333;
$1335 = $1334;
HEAP32[$1335 >> 2] = $1331;
$1336 = ($1334 + 4) | 0;
$1337 = $1336;
HEAP32[$1337 >> 2] = $1332;
$1338 = $423;
$1339 = $1338;
$1340 = HEAP32[$1339 >> 2] | 0;
$1341 = ($1338 + 4) | 0;
$1342 = $1341;
$1343 = HEAP32[$1342 >> 2] | 0;
$1344 = _bitshift64Ashr(0, $1340 | 0, 32) | 0;
$1345 = tempRet0;
$1346 = $557;
$1347 = $1346;
$1348 = HEAP32[$1347 >> 2] | 0;
$1349 = ($1346 + 4) | 0;
$1350 = $1349;
$1351 = HEAP32[$1350 >> 2] | 0;
$1352 = _bitshift64Ashr(0, $1348 | 0, 32) | 0;
$1353 = tempRet0;
$1354 = ___muldi3($1352 | 0, $1353 | 0, $1344 | 0, $1345 | 0) | 0;
$1355 = tempRet0;
$1356 = $570;
$1357 = $1356;
$1358 = HEAP32[$1357 >> 2] | 0;
$1359 = ($1356 + 4) | 0;
$1360 = $1359;
$1361 = HEAP32[$1360 >> 2] | 0;
$1362 = _bitshift64Ashr(0, $1358 | 0, 32) | 0;
$1363 = tempRet0;
$1364 = $410;
$1365 = $1364;
$1366 = HEAP32[$1365 >> 2] | 0;
$1367 = ($1364 + 4) | 0;
$1368 = $1367;
$1369 = HEAP32[$1368 >> 2] | 0;
$1370 = _bitshift64Ashr(0, $1366 | 0, 32) | 0;
$1371 = tempRet0;
$1372 = ___muldi3($1370 | 0, $1371 | 0, $1362 | 0, $1363 | 0) | 0;
$1373 = tempRet0;
$1374 = _i64Add($1372 | 0, $1373 | 0, $1354 | 0, $1355 | 0) | 0;
$1375 = tempRet0;
$1376 = $298;
$1377 = $1376;
$1378 = HEAP32[$1377 >> 2] | 0;
$1379 = ($1376 + 4) | 0;
$1380 = $1379;
$1381 = HEAP32[$1380 >> 2] | 0;
$1382 = _bitshift64Ashr(0, $1378 | 0, 32) | 0;
$1383 = tempRet0;
$1384 = $722;
$1385 = $1384;
$1386 = HEAP32[$1385 >> 2] | 0;
$1387 = ($1384 + 4) | 0;
$1388 = $1387;
$1389 = HEAP32[$1388 >> 2] | 0;
$1390 = _bitshift64Ashr(0, $1386 | 0, 32) | 0;
$1391 = tempRet0;
$1392 = ___muldi3($1390 | 0, $1391 | 0, $1382 | 0, $1383 | 0) | 0;
$1393 = tempRet0;
$1394 = _i64Add($1374 | 0, $1375 | 0, $1392 | 0, $1393 | 0) | 0;
$1395 = tempRet0;
$1396 = $735;
$1397 = $1396;
$1398 = HEAP32[$1397 >> 2] | 0;
$1399 = ($1396 + 4) | 0;
$1400 = $1399;
$1401 = HEAP32[$1400 >> 2] | 0;
$1402 = _bitshift64Ashr(0, $1398 | 0, 32) | 0;
$1403 = tempRet0;
$1404 = $285;
$1405 = $1404;
$1406 = HEAP32[$1405 >> 2] | 0;
$1407 = ($1404 + 4) | 0;
$1408 = $1407;
$1409 = HEAP32[$1408 >> 2] | 0;
$1410 = _bitshift64Ashr(0, $1406 | 0, 32) | 0;
$1411 = tempRet0;
$1412 = ___muldi3($1410 | 0, $1411 | 0, $1402 | 0, $1403 | 0) | 0;
$1413 = tempRet0;
$1414 = _i64Add($1394 | 0, $1395 | 0, $1412 | 0, $1413 | 0) | 0;
$1415 = tempRet0;
$1416 = $191;
$1417 = $1416;
$1418 = HEAP32[$1417 >> 2] | 0;
$1419 = ($1416 + 4) | 0;
$1420 = $1419;
$1421 = HEAP32[$1420 >> 2] | 0;
$1422 = _bitshift64Ashr(0, $1418 | 0, 32) | 0;
$1423 = tempRet0;
$1424 = $909;
$1425 = $1424;
$1426 = HEAP32[$1425 >> 2] | 0;
$1427 = ($1424 + 4) | 0;
$1428 = $1427;
$1429 = HEAP32[$1428 >> 2] | 0;
$1430 = _bitshift64Ashr(0, $1426 | 0, 32) | 0;
$1431 = tempRet0;
$1432 = ___muldi3($1430 | 0, $1431 | 0, $1422 | 0, $1423 | 0) | 0;
$1433 = tempRet0;
$1434 = _i64Add($1414 | 0, $1415 | 0, $1432 | 0, $1433 | 0) | 0;
$1435 = tempRet0;
$1436 = $922;
$1437 = $1436;
$1438 = HEAP32[$1437 >> 2] | 0;
$1439 = ($1436 + 4) | 0;
$1440 = $1439;
$1441 = HEAP32[$1440 >> 2] | 0;
$1442 = _bitshift64Ashr(0, $1438 | 0, 32) | 0;
$1443 = tempRet0;
$1444 = $178;
$1445 = $1444;
$1446 = HEAP32[$1445 >> 2] | 0;
$1447 = ($1444 + 4) | 0;
$1448 = $1447;
$1449 = HEAP32[$1448 >> 2] | 0;
$1450 = _bitshift64Ashr(0, $1446 | 0, 32) | 0;
$1451 = tempRet0;
$1452 = ___muldi3($1450 | 0, $1451 | 0, $1442 | 0, $1443 | 0) | 0;
$1453 = tempRet0;
$1454 = _i64Add($1434 | 0, $1435 | 0, $1452 | 0, $1453 | 0) | 0;
$1455 = tempRet0;
$1456 = $106;
$1457 = $1456;
$1458 = HEAP32[$1457 >> 2] | 0;
$1459 = ($1456 + 4) | 0;
$1460 = $1459;
$1461 = HEAP32[$1460 >> 2] | 0;
$1462 = _bitshift64Ashr(0, $1458 | 0, 32) | 0;
$1463 = tempRet0;
$1464 = $1114;
$1465 = $1464;
$1466 = HEAP32[$1465 >> 2] | 0;
$1467 = ($1464 + 4) | 0;
$1468 = $1467;
$1469 = HEAP32[$1468 >> 2] | 0;
$1470 = _bitshift64Ashr(0, $1466 | 0, 32) | 0;
$1471 = tempRet0;
$1472 = ___muldi3($1470 | 0, $1471 | 0, $1462 | 0, $1463 | 0) | 0;
$1473 = tempRet0;
$1474 = _i64Add($1454 | 0, $1455 | 0, $1472 | 0, $1473 | 0) | 0;
$1475 = tempRet0;
$1476 = $1127;
$1477 = $1476;
$1478 = HEAP32[$1477 >> 2] | 0;
$1479 = ($1476 + 4) | 0;
$1480 = $1479;
$1481 = HEAP32[$1480 >> 2] | 0;
$1482 = _bitshift64Ashr(0, $1478 | 0, 32) | 0;
$1483 = tempRet0;
$1484 = $93;
$1485 = $1484;
$1486 = HEAP32[$1485 >> 2] | 0;
$1487 = ($1484 + 4) | 0;
$1488 = $1487;
$1489 = HEAP32[$1488 >> 2] | 0;
$1490 = _bitshift64Ashr(0, $1486 | 0, 32) | 0;
$1491 = tempRet0;
$1492 = ___muldi3($1490 | 0, $1491 | 0, $1482 | 0, $1483 | 0) | 0;
$1493 = tempRet0;
$1494 = _i64Add($1474 | 0, $1475 | 0, $1492 | 0, $1493 | 0) | 0;
$1495 = tempRet0;
$1496 = ($output + 88) | 0;
$1497 = $1496;
$1498 = $1497;
HEAP32[$1498 >> 2] = $1494;
$1499 = ($1497 + 4) | 0;
$1500 = $1499;
HEAP32[$1500 >> 2] = $1495;
$1501 = $570;
$1502 = $1501;
$1503 = HEAP32[$1502 >> 2] | 0;
$1504 = ($1501 + 4) | 0;
$1505 = $1504;
$1506 = HEAP32[$1505 >> 2] | 0;
$1507 = _bitshift64Ashr(0, $1503 | 0, 32) | 0;
$1508 = tempRet0;
$1509 = $557;
$1510 = $1509;
$1511 = HEAP32[$1510 >> 2] | 0;
$1512 = ($1509 + 4) | 0;
$1513 = $1512;
$1514 = HEAP32[$1513 >> 2] | 0;
$1515 = _bitshift64Ashr(0, $1511 | 0, 32) | 0;
$1516 = tempRet0;
$1517 = ___muldi3($1515 | 0, $1516 | 0, $1507 | 0, $1508 | 0) | 0;
$1518 = tempRet0;
$1519 = $423;
$1520 = $1519;
$1521 = HEAP32[$1520 >> 2] | 0;
$1522 = ($1519 + 4) | 0;
$1523 = $1522;
$1524 = HEAP32[$1523 >> 2] | 0;
$1525 = _bitshift64Ashr(0, $1521 | 0, 32) | 0;
$1526 = tempRet0;
$1527 = $722;
$1528 = $1527;
$1529 = HEAP32[$1528 >> 2] | 0;
$1530 = ($1527 + 4) | 0;
$1531 = $1530;
$1532 = HEAP32[$1531 >> 2] | 0;
$1533 = _bitshift64Ashr(0, $1529 | 0, 32) | 0;
$1534 = tempRet0;
$1535 = ___muldi3($1533 | 0, $1534 | 0, $1525 | 0, $1526 | 0) | 0;
$1536 = tempRet0;
$1537 = $735;
$1538 = $1537;
$1539 = HEAP32[$1538 >> 2] | 0;
$1540 = ($1537 + 4) | 0;
$1541 = $1540;
$1542 = HEAP32[$1541 >> 2] | 0;
$1543 = _bitshift64Ashr(0, $1539 | 0, 32) | 0;
$1544 = tempRet0;
$1545 = $410;
$1546 = $1545;
$1547 = HEAP32[$1546 >> 2] | 0;
$1548 = ($1545 + 4) | 0;
$1549 = $1548;
$1550 = HEAP32[$1549 >> 2] | 0;
$1551 = _bitshift64Ashr(0, $1547 | 0, 32) | 0;
$1552 = tempRet0;
$1553 = ___muldi3($1551 | 0, $1552 | 0, $1543 | 0, $1544 | 0) | 0;
$1554 = tempRet0;
$1555 = _i64Add($1553 | 0, $1554 | 0, $1535 | 0, $1536 | 0) | 0;
$1556 = tempRet0;
$1557 = $191;
$1558 = $1557;
$1559 = HEAP32[$1558 >> 2] | 0;
$1560 = ($1557 + 4) | 0;
$1561 = $1560;
$1562 = HEAP32[$1561 >> 2] | 0;
$1563 = _bitshift64Ashr(0, $1559 | 0, 32) | 0;
$1564 = tempRet0;
$1565 = $1114;
$1566 = $1565;
$1567 = HEAP32[$1566 >> 2] | 0;
$1568 = ($1565 + 4) | 0;
$1569 = $1568;
$1570 = HEAP32[$1569 >> 2] | 0;
$1571 = _bitshift64Ashr(0, $1567 | 0, 32) | 0;
$1572 = tempRet0;
$1573 = ___muldi3($1571 | 0, $1572 | 0, $1563 | 0, $1564 | 0) | 0;
$1574 = tempRet0;
$1575 = _i64Add($1555 | 0, $1556 | 0, $1573 | 0, $1574 | 0) | 0;
$1576 = tempRet0;
$1577 = $1127;
$1578 = $1577;
$1579 = HEAP32[$1578 >> 2] | 0;
$1580 = ($1577 + 4) | 0;
$1581 = $1580;
$1582 = HEAP32[$1581 >> 2] | 0;
$1583 = _bitshift64Ashr(0, $1579 | 0, 32) | 0;
$1584 = tempRet0;
$1585 = $178;
$1586 = $1585;
$1587 = HEAP32[$1586 >> 2] | 0;
$1588 = ($1585 + 4) | 0;
$1589 = $1588;
$1590 = HEAP32[$1589 >> 2] | 0;
$1591 = _bitshift64Ashr(0, $1587 | 0, 32) | 0;
$1592 = tempRet0;
$1593 = ___muldi3($1591 | 0, $1592 | 0, $1583 | 0, $1584 | 0) | 0;
$1594 = tempRet0;
$1595 = _i64Add($1575 | 0, $1576 | 0, $1593 | 0, $1594 | 0) | 0;
$1596 = tempRet0;
$1597 = _bitshift64Shl($1595 | 0, $1596 | 0, 1) | 0;
$1598 = tempRet0;
$1599 = _i64Add($1597 | 0, $1598 | 0, $1517 | 0, $1518 | 0) | 0;
$1600 = tempRet0;
$1601 = $298;
$1602 = $1601;
$1603 = HEAP32[$1602 >> 2] | 0;
$1604 = ($1601 + 4) | 0;
$1605 = $1604;
$1606 = HEAP32[$1605 >> 2] | 0;
$1607 = _bitshift64Ashr(0, $1603 | 0, 32) | 0;
$1608 = tempRet0;
$1609 = $909;
$1610 = $1609;
$1611 = HEAP32[$1610 >> 2] | 0;
$1612 = ($1609 + 4) | 0;
$1613 = $1612;
$1614 = HEAP32[$1613 >> 2] | 0;
$1615 = _bitshift64Ashr(0, $1611 | 0, 32) | 0;
$1616 = tempRet0;
$1617 = ___muldi3($1615 | 0, $1616 | 0, $1607 | 0, $1608 | 0) | 0;
$1618 = tempRet0;
$1619 = _i64Add($1599 | 0, $1600 | 0, $1617 | 0, $1618 | 0) | 0;
$1620 = tempRet0;
$1621 = $922;
$1622 = $1621;
$1623 = HEAP32[$1622 >> 2] | 0;
$1624 = ($1621 + 4) | 0;
$1625 = $1624;
$1626 = HEAP32[$1625 >> 2] | 0;
$1627 = _bitshift64Ashr(0, $1623 | 0, 32) | 0;
$1628 = tempRet0;
$1629 = $285;
$1630 = $1629;
$1631 = HEAP32[$1630 >> 2] | 0;
$1632 = ($1629 + 4) | 0;
$1633 = $1632;
$1634 = HEAP32[$1633 >> 2] | 0;
$1635 = _bitshift64Ashr(0, $1631 | 0, 32) | 0;
$1636 = tempRet0;
$1637 = ___muldi3($1635 | 0, $1636 | 0, $1627 | 0, $1628 | 0) | 0;
$1638 = tempRet0;
$1639 = _i64Add($1619 | 0, $1620 | 0, $1637 | 0, $1638 | 0) | 0;
$1640 = tempRet0;
$1641 = ($output + 96) | 0;
$1642 = $1641;
$1643 = $1642;
HEAP32[$1643 >> 2] = $1639;
$1644 = ($1642 + 4) | 0;
$1645 = $1644;
HEAP32[$1645 >> 2] = $1640;
$1646 = $570;
$1647 = $1646;
$1648 = HEAP32[$1647 >> 2] | 0;
$1649 = ($1646 + 4) | 0;
$1650 = $1649;
$1651 = HEAP32[$1650 >> 2] | 0;
$1652 = _bitshift64Ashr(0, $1648 | 0, 32) | 0;
$1653 = tempRet0;
$1654 = $722;
$1655 = $1654;
$1656 = HEAP32[$1655 >> 2] | 0;
$1657 = ($1654 + 4) | 0;
$1658 = $1657;
$1659 = HEAP32[$1658 >> 2] | 0;
$1660 = _bitshift64Ashr(0, $1656 | 0, 32) | 0;
$1661 = tempRet0;
$1662 = ___muldi3($1660 | 0, $1661 | 0, $1652 | 0, $1653 | 0) | 0;
$1663 = tempRet0;
$1664 = $735;
$1665 = $1664;
$1666 = HEAP32[$1665 >> 2] | 0;
$1667 = ($1664 + 4) | 0;
$1668 = $1667;
$1669 = HEAP32[$1668 >> 2] | 0;
$1670 = _bitshift64Ashr(0, $1666 | 0, 32) | 0;
$1671 = tempRet0;
$1672 = $557;
$1673 = $1672;
$1674 = HEAP32[$1673 >> 2] | 0;
$1675 = ($1672 + 4) | 0;
$1676 = $1675;
$1677 = HEAP32[$1676 >> 2] | 0;
$1678 = _bitshift64Ashr(0, $1674 | 0, 32) | 0;
$1679 = tempRet0;
$1680 = ___muldi3($1678 | 0, $1679 | 0, $1670 | 0, $1671 | 0) | 0;
$1681 = tempRet0;
$1682 = _i64Add($1680 | 0, $1681 | 0, $1662 | 0, $1663 | 0) | 0;
$1683 = tempRet0;
$1684 = $423;
$1685 = $1684;
$1686 = HEAP32[$1685 >> 2] | 0;
$1687 = ($1684 + 4) | 0;
$1688 = $1687;
$1689 = HEAP32[$1688 >> 2] | 0;
$1690 = _bitshift64Ashr(0, $1686 | 0, 32) | 0;
$1691 = tempRet0;
$1692 = $909;
$1693 = $1692;
$1694 = HEAP32[$1693 >> 2] | 0;
$1695 = ($1692 + 4) | 0;
$1696 = $1695;
$1697 = HEAP32[$1696 >> 2] | 0;
$1698 = _bitshift64Ashr(0, $1694 | 0, 32) | 0;
$1699 = tempRet0;
$1700 = ___muldi3($1698 | 0, $1699 | 0, $1690 | 0, $1691 | 0) | 0;
$1701 = tempRet0;
$1702 = _i64Add($1682 | 0, $1683 | 0, $1700 | 0, $1701 | 0) | 0;
$1703 = tempRet0;
$1704 = $922;
$1705 = $1704;
$1706 = HEAP32[$1705 >> 2] | 0;
$1707 = ($1704 + 4) | 0;
$1708 = $1707;
$1709 = HEAP32[$1708 >> 2] | 0;
$1710 = _bitshift64Ashr(0, $1706 | 0, 32) | 0;
$1711 = tempRet0;
$1712 = $410;
$1713 = $1712;
$1714 = HEAP32[$1713 >> 2] | 0;
$1715 = ($1712 + 4) | 0;
$1716 = $1715;
$1717 = HEAP32[$1716 >> 2] | 0;
$1718 = _bitshift64Ashr(0, $1714 | 0, 32) | 0;
$1719 = tempRet0;
$1720 = ___muldi3($1718 | 0, $1719 | 0, $1710 | 0, $1711 | 0) | 0;
$1721 = tempRet0;
$1722 = _i64Add($1702 | 0, $1703 | 0, $1720 | 0, $1721 | 0) | 0;
$1723 = tempRet0;
$1724 = $298;
$1725 = $1724;
$1726 = HEAP32[$1725 >> 2] | 0;
$1727 = ($1724 + 4) | 0;
$1728 = $1727;
$1729 = HEAP32[$1728 >> 2] | 0;
$1730 = _bitshift64Ashr(0, $1726 | 0, 32) | 0;
$1731 = tempRet0;
$1732 = $1114;
$1733 = $1732;
$1734 = HEAP32[$1733 >> 2] | 0;
$1735 = ($1732 + 4) | 0;
$1736 = $1735;
$1737 = HEAP32[$1736 >> 2] | 0;
$1738 = _bitshift64Ashr(0, $1734 | 0, 32) | 0;
$1739 = tempRet0;
$1740 = ___muldi3($1738 | 0, $1739 | 0, $1730 | 0, $1731 | 0) | 0;
$1741 = tempRet0;
$1742 = _i64Add($1722 | 0, $1723 | 0, $1740 | 0, $1741 | 0) | 0;
$1743 = tempRet0;
$1744 = $1127;
$1745 = $1744;
$1746 = HEAP32[$1745 >> 2] | 0;
$1747 = ($1744 + 4) | 0;
$1748 = $1747;
$1749 = HEAP32[$1748 >> 2] | 0;
$1750 = _bitshift64Ashr(0, $1746 | 0, 32) | 0;
$1751 = tempRet0;
$1752 = $285;
$1753 = $1752;
$1754 = HEAP32[$1753 >> 2] | 0;
$1755 = ($1752 + 4) | 0;
$1756 = $1755;
$1757 = HEAP32[$1756 >> 2] | 0;
$1758 = _bitshift64Ashr(0, $1754 | 0, 32) | 0;
$1759 = tempRet0;
$1760 = ___muldi3($1758 | 0, $1759 | 0, $1750 | 0, $1751 | 0) | 0;
$1761 = tempRet0;
$1762 = _i64Add($1742 | 0, $1743 | 0, $1760 | 0, $1761 | 0) | 0;
$1763 = tempRet0;
$1764 = ($output + 104) | 0;
$1765 = $1764;
$1766 = $1765;
HEAP32[$1766 >> 2] = $1762;
$1767 = ($1765 + 4) | 0;
$1768 = $1767;
HEAP32[$1768 >> 2] = $1763;
$1769 = $735;
$1770 = $1769;
$1771 = HEAP32[$1770 >> 2] | 0;
$1772 = ($1769 + 4) | 0;
$1773 = $1772;
$1774 = HEAP32[$1773 >> 2] | 0;
$1775 = _bitshift64Ashr(0, $1771 | 0, 32) | 0;
$1776 = tempRet0;
$1777 = $722;
$1778 = $1777;
$1779 = HEAP32[$1778 >> 2] | 0;
$1780 = ($1777 + 4) | 0;
$1781 = $1780;
$1782 = HEAP32[$1781 >> 2] | 0;
$1783 = _bitshift64Ashr(0, $1779 | 0, 32) | 0;
$1784 = tempRet0;
$1785 = ___muldi3($1783 | 0, $1784 | 0, $1775 | 0, $1776 | 0) | 0;
$1786 = tempRet0;
$1787 = $423;
$1788 = $1787;
$1789 = HEAP32[$1788 >> 2] | 0;
$1790 = ($1787 + 4) | 0;
$1791 = $1790;
$1792 = HEAP32[$1791 >> 2] | 0;
$1793 = _bitshift64Ashr(0, $1789 | 0, 32) | 0;
$1794 = tempRet0;
$1795 = $1114;
$1796 = $1795;
$1797 = HEAP32[$1796 >> 2] | 0;
$1798 = ($1795 + 4) | 0;
$1799 = $1798;
$1800 = HEAP32[$1799 >> 2] | 0;
$1801 = _bitshift64Ashr(0, $1797 | 0, 32) | 0;
$1802 = tempRet0;
$1803 = ___muldi3($1801 | 0, $1802 | 0, $1793 | 0, $1794 | 0) | 0;
$1804 = tempRet0;
$1805 = _i64Add($1803 | 0, $1804 | 0, $1785 | 0, $1786 | 0) | 0;
$1806 = tempRet0;
$1807 = $1127;
$1808 = $1807;
$1809 = HEAP32[$1808 >> 2] | 0;
$1810 = ($1807 + 4) | 0;
$1811 = $1810;
$1812 = HEAP32[$1811 >> 2] | 0;
$1813 = _bitshift64Ashr(0, $1809 | 0, 32) | 0;
$1814 = tempRet0;
$1815 = $410;
$1816 = $1815;
$1817 = HEAP32[$1816 >> 2] | 0;
$1818 = ($1815 + 4) | 0;
$1819 = $1818;
$1820 = HEAP32[$1819 >> 2] | 0;
$1821 = _bitshift64Ashr(0, $1817 | 0, 32) | 0;
$1822 = tempRet0;
$1823 = ___muldi3($1821 | 0, $1822 | 0, $1813 | 0, $1814 | 0) | 0;
$1824 = tempRet0;
$1825 = _i64Add($1805 | 0, $1806 | 0, $1823 | 0, $1824 | 0) | 0;
$1826 = tempRet0;
$1827 = _bitshift64Shl($1825 | 0, $1826 | 0, 1) | 0;
$1828 = tempRet0;
$1829 = $570;
$1830 = $1829;
$1831 = HEAP32[$1830 >> 2] | 0;
$1832 = ($1829 + 4) | 0;
$1833 = $1832;
$1834 = HEAP32[$1833 >> 2] | 0;
$1835 = _bitshift64Ashr(0, $1831 | 0, 32) | 0;
$1836 = tempRet0;
$1837 = $909;
$1838 = $1837;
$1839 = HEAP32[$1838 >> 2] | 0;
$1840 = ($1837 + 4) | 0;
$1841 = $1840;
$1842 = HEAP32[$1841 >> 2] | 0;
$1843 = _bitshift64Ashr(0, $1839 | 0, 32) | 0;
$1844 = tempRet0;
$1845 = ___muldi3($1843 | 0, $1844 | 0, $1835 | 0, $1836 | 0) | 0;
$1846 = tempRet0;
$1847 = _i64Add($1827 | 0, $1828 | 0, $1845 | 0, $1846 | 0) | 0;
$1848 = tempRet0;
$1849 = $922;
$1850 = $1849;
$1851 = HEAP32[$1850 >> 2] | 0;
$1852 = ($1849 + 4) | 0;
$1853 = $1852;
$1854 = HEAP32[$1853 >> 2] | 0;
$1855 = _bitshift64Ashr(0, $1851 | 0, 32) | 0;
$1856 = tempRet0;
$1857 = $557;
$1858 = $1857;
$1859 = HEAP32[$1858 >> 2] | 0;
$1860 = ($1857 + 4) | 0;
$1861 = $1860;
$1862 = HEAP32[$1861 >> 2] | 0;
$1863 = _bitshift64Ashr(0, $1859 | 0, 32) | 0;
$1864 = tempRet0;
$1865 = ___muldi3($1863 | 0, $1864 | 0, $1855 | 0, $1856 | 0) | 0;
$1866 = tempRet0;
$1867 = _i64Add($1847 | 0, $1848 | 0, $1865 | 0, $1866 | 0) | 0;
$1868 = tempRet0;
$1869 = ($output + 112) | 0;
$1870 = $1869;
$1871 = $1870;
HEAP32[$1871 >> 2] = $1867;
$1872 = ($1870 + 4) | 0;
$1873 = $1872;
HEAP32[$1873 >> 2] = $1868;
$1874 = $735;
$1875 = $1874;
$1876 = HEAP32[$1875 >> 2] | 0;
$1877 = ($1874 + 4) | 0;
$1878 = $1877;
$1879 = HEAP32[$1878 >> 2] | 0;
$1880 = _bitshift64Ashr(0, $1876 | 0, 32) | 0;
$1881 = tempRet0;
$1882 = $909;
$1883 = $1882;
$1884 = HEAP32[$1883 >> 2] | 0;
$1885 = ($1882 + 4) | 0;
$1886 = $1885;
$1887 = HEAP32[$1886 >> 2] | 0;
$1888 = _bitshift64Ashr(0, $1884 | 0, 32) | 0;
$1889 = tempRet0;
$1890 = ___muldi3($1888 | 0, $1889 | 0, $1880 | 0, $1881 | 0) | 0;
$1891 = tempRet0;
$1892 = $922;
$1893 = $1892;
$1894 = HEAP32[$1893 >> 2] | 0;
$1895 = ($1892 + 4) | 0;
$1896 = $1895;
$1897 = HEAP32[$1896 >> 2] | 0;
$1898 = _bitshift64Ashr(0, $1894 | 0, 32) | 0;
$1899 = tempRet0;
$1900 = $722;
$1901 = $1900;
$1902 = HEAP32[$1901 >> 2] | 0;
$1903 = ($1900 + 4) | 0;
$1904 = $1903;
$1905 = HEAP32[$1904 >> 2] | 0;
$1906 = _bitshift64Ashr(0, $1902 | 0, 32) | 0;
$1907 = tempRet0;
$1908 = ___muldi3($1906 | 0, $1907 | 0, $1898 | 0, $1899 | 0) | 0;
$1909 = tempRet0;
$1910 = _i64Add($1908 | 0, $1909 | 0, $1890 | 0, $1891 | 0) | 0;
$1911 = tempRet0;
$1912 = $570;
$1913 = $1912;
$1914 = HEAP32[$1913 >> 2] | 0;
$1915 = ($1912 + 4) | 0;
$1916 = $1915;
$1917 = HEAP32[$1916 >> 2] | 0;
$1918 = _bitshift64Ashr(0, $1914 | 0, 32) | 0;
$1919 = tempRet0;
$1920 = $1114;
$1921 = $1920;
$1922 = HEAP32[$1921 >> 2] | 0;
$1923 = ($1920 + 4) | 0;
$1924 = $1923;
$1925 = HEAP32[$1924 >> 2] | 0;
$1926 = _bitshift64Ashr(0, $1922 | 0, 32) | 0;
$1927 = tempRet0;
$1928 = ___muldi3($1926 | 0, $1927 | 0, $1918 | 0, $1919 | 0) | 0;
$1929 = tempRet0;
$1930 = _i64Add($1910 | 0, $1911 | 0, $1928 | 0, $1929 | 0) | 0;
$1931 = tempRet0;
$1932 = $1127;
$1933 = $1932;
$1934 = HEAP32[$1933 >> 2] | 0;
$1935 = ($1932 + 4) | 0;
$1936 = $1935;
$1937 = HEAP32[$1936 >> 2] | 0;
$1938 = _bitshift64Ashr(0, $1934 | 0, 32) | 0;
$1939 = tempRet0;
$1940 = $557;
$1941 = $1940;
$1942 = HEAP32[$1941 >> 2] | 0;
$1943 = ($1940 + 4) | 0;
$1944 = $1943;
$1945 = HEAP32[$1944 >> 2] | 0;
$1946 = _bitshift64Ashr(0, $1942 | 0, 32) | 0;
$1947 = tempRet0;
$1948 = ___muldi3($1946 | 0, $1947 | 0, $1938 | 0, $1939 | 0) | 0;
$1949 = tempRet0;
$1950 = _i64Add($1930 | 0, $1931 | 0, $1948 | 0, $1949 | 0) | 0;
$1951 = tempRet0;
$1952 = ($output + 120) | 0;
$1953 = $1952;
$1954 = $1953;
HEAP32[$1954 >> 2] = $1950;
$1955 = ($1953 + 4) | 0;
$1956 = $1955;
HEAP32[$1956 >> 2] = $1951;
$1957 = $922;
$1958 = $1957;
$1959 = HEAP32[$1958 >> 2] | 0;
$1960 = ($1957 + 4) | 0;
$1961 = $1960;
$1962 = HEAP32[$1961 >> 2] | 0;
$1963 = _bitshift64Ashr(0, $1959 | 0, 32) | 0;
$1964 = tempRet0;
$1965 = $909;
$1966 = $1965;
$1967 = HEAP32[$1966 >> 2] | 0;
$1968 = ($1965 + 4) | 0;
$1969 = $1968;
$1970 = HEAP32[$1969 >> 2] | 0;
$1971 = _bitshift64Ashr(0, $1967 | 0, 32) | 0;
$1972 = tempRet0;
$1973 = ___muldi3($1971 | 0, $1972 | 0, $1963 | 0, $1964 | 0) | 0;
$1974 = tempRet0;
$1975 = $735;
$1976 = $1975;
$1977 = HEAP32[$1976 >> 2] | 0;
$1978 = ($1975 + 4) | 0;
$1979 = $1978;
$1980 = HEAP32[$1979 >> 2] | 0;
$1981 = _bitshift64Ashr(0, $1977 | 0, 32) | 0;
$1982 = tempRet0;
$1983 = $1114;
$1984 = $1983;
$1985 = HEAP32[$1984 >> 2] | 0;
$1986 = ($1983 + 4) | 0;
$1987 = $1986;
$1988 = HEAP32[$1987 >> 2] | 0;
$1989 = _bitshift64Ashr(0, $1985 | 0, 32) | 0;
$1990 = tempRet0;
$1991 = ___muldi3($1989 | 0, $1990 | 0, $1981 | 0, $1982 | 0) | 0;
$1992 = tempRet0;
$1993 = $1127;
$1994 = $1993;
$1995 = HEAP32[$1994 >> 2] | 0;
$1996 = ($1993 + 4) | 0;
$1997 = $1996;
$1998 = HEAP32[$1997 >> 2] | 0;
$1999 = _bitshift64Ashr(0, $1995 | 0, 32) | 0;
$2000 = tempRet0;
$2001 = $722;
$2002 = $2001;
$2003 = HEAP32[$2002 >> 2] | 0;
$2004 = ($2001 + 4) | 0;
$2005 = $2004;
$2006 = HEAP32[$2005 >> 2] | 0;
$2007 = _bitshift64Ashr(0, $2003 | 0, 32) | 0;
$2008 = tempRet0;
$2009 = ___muldi3($2007 | 0, $2008 | 0, $1999 | 0, $2000 | 0) | 0;
$2010 = tempRet0;
$2011 = _i64Add($2009 | 0, $2010 | 0, $1991 | 0, $1992 | 0) | 0;
$2012 = tempRet0;
$2013 = _bitshift64Shl($2011 | 0, $2012 | 0, 1) | 0;
$2014 = tempRet0;
$2015 = _i64Add($2013 | 0, $2014 | 0, $1973 | 0, $1974 | 0) | 0;
$2016 = tempRet0;
$2017 = ($output + 128) | 0;
$2018 = $2017;
$2019 = $2018;
HEAP32[$2019 >> 2] = $2015;
$2020 = ($2018 + 4) | 0;
$2021 = $2020;
HEAP32[$2021 >> 2] = $2016;
$2022 = $922;
$2023 = $2022;
$2024 = HEAP32[$2023 >> 2] | 0;
$2025 = ($2022 + 4) | 0;
$2026 = $2025;
$2027 = HEAP32[$2026 >> 2] | 0;
$2028 = _bitshift64Ashr(0, $2024 | 0, 32) | 0;
$2029 = tempRet0;
$2030 = $1114;
$2031 = $2030;
$2032 = HEAP32[$2031 >> 2] | 0;
$2033 = ($2030 + 4) | 0;
$2034 = $2033;
$2035 = HEAP32[$2034 >> 2] | 0;
$2036 = _bitshift64Ashr(0, $2032 | 0, 32) | 0;
$2037 = tempRet0;
$2038 = ___muldi3($2036 | 0, $2037 | 0, $2028 | 0, $2029 | 0) | 0;
$2039 = tempRet0;
$2040 = $1127;
$2041 = $2040;
$2042 = HEAP32[$2041 >> 2] | 0;
$2043 = ($2040 + 4) | 0;
$2044 = $2043;
$2045 = HEAP32[$2044 >> 2] | 0;
$2046 = _bitshift64Ashr(0, $2042 | 0, 32) | 0;
$2047 = tempRet0;
$2048 = $909;
$2049 = $2048;
$2050 = HEAP32[$2049 >> 2] | 0;
$2051 = ($2048 + 4) | 0;
$2052 = $2051;
$2053 = HEAP32[$2052 >> 2] | 0;
$2054 = _bitshift64Ashr(0, $2050 | 0, 32) | 0;
$2055 = tempRet0;
$2056 = ___muldi3($2054 | 0, $2055 | 0, $2046 | 0, $2047 | 0) | 0;
$2057 = tempRet0;
$2058 = _i64Add($2056 | 0, $2057 | 0, $2038 | 0, $2039 | 0) | 0;
$2059 = tempRet0;
$2060 = ($output + 136) | 0;
$2061 = $2060;
$2062 = $2061;
HEAP32[$2062 >> 2] = $2058;
$2063 = ($2061 + 4) | 0;
$2064 = $2063;
HEAP32[$2064 >> 2] = $2059;
$2065 = $1127;
$2066 = $2065;
$2067 = HEAP32[$2066 >> 2] | 0;
$2068 = ($2065 + 4) | 0;
$2069 = $2068;
$2070 = HEAP32[$2069 >> 2] | 0;
$2071 = _bitshift64Ashr(0, $2067 | 0, 31) | 0;
$2072 = tempRet0;
$2073 = $1114;
$2074 = $2073;
$2075 = HEAP32[$2074 >> 2] | 0;
$2076 = ($2073 + 4) | 0;
$2077 = $2076;
$2078 = HEAP32[$2077 >> 2] | 0;
$2079 = _bitshift64Ashr(0, $2075 | 0, 32) | 0;
$2080 = tempRet0;
$2081 = ___muldi3($2079 | 0, $2080 | 0, $2071 | 0, $2072 | 0) | 0;
$2082 = tempRet0;
$2083 = ($output + 144) | 0;
$2084 = $2083;
$2085 = $2084;
HEAP32[$2085 >> 2] = $2081;
$2086 = ($2084 + 4) | 0;
$2087 = $2086;
HEAP32[$2087 >> 2] = $2082;
STACKTOP = sp;
return;
}
function _freduce_degree($output) {
$output = $output | 0;
var $0 = 0,
$1 = 0,
$10 = 0,
$100 = 0,
$101 = 0,
$102 = 0,
$103 = 0,
$104 = 0,
$105 = 0,
$106 = 0,
$107 = 0,
$108 = 0,
$109 = 0,
$11 = 0,
$110 = 0,
$111 = 0,
$112 = 0,
$113 = 0,
$114 = 0,
$115 = 0;
var $116 = 0,
$117 = 0,
$118 = 0,
$119 = 0,
$12 = 0,
$120 = 0,
$121 = 0,
$122 = 0,
$123 = 0,
$124 = 0,
$125 = 0,
$126 = 0,
$127 = 0,
$128 = 0,
$129 = 0,
$13 = 0,
$130 = 0,
$131 = 0,
$132 = 0,
$133 = 0;
var $134 = 0,
$135 = 0,
$136 = 0,
$137 = 0,
$138 = 0,
$139 = 0,
$14 = 0,
$140 = 0,
$141 = 0,
$142 = 0,
$143 = 0,
$144 = 0,
$145 = 0,
$146 = 0,
$147 = 0,
$148 = 0,
$149 = 0,
$15 = 0,
$150 = 0,
$151 = 0;
var $152 = 0,
$153 = 0,
$154 = 0,
$155 = 0,
$156 = 0,
$157 = 0,
$158 = 0,
$159 = 0,
$16 = 0,
$160 = 0,
$161 = 0,
$162 = 0,
$163 = 0,
$164 = 0,
$165 = 0,
$166 = 0,
$167 = 0,
$168 = 0,
$169 = 0,
$17 = 0;
var $170 = 0,
$171 = 0,
$172 = 0,
$173 = 0,
$174 = 0,
$175 = 0,
$176 = 0,
$177 = 0,
$178 = 0,
$179 = 0,
$18 = 0,
$180 = 0,
$181 = 0,
$182 = 0,
$183 = 0,
$184 = 0,
$185 = 0,
$186 = 0,
$187 = 0,
$188 = 0;
var $189 = 0,
$19 = 0,
$190 = 0,
$191 = 0,
$192 = 0,
$193 = 0,
$194 = 0,
$195 = 0,
$196 = 0,
$197 = 0,
$198 = 0,
$199 = 0,
$2 = 0,
$20 = 0,
$200 = 0,
$201 = 0,
$202 = 0,
$203 = 0,
$204 = 0,
$205 = 0;
var $206 = 0,
$207 = 0,
$208 = 0,
$209 = 0,
$21 = 0,
$210 = 0,
$211 = 0,
$212 = 0,
$213 = 0,
$214 = 0,
$215 = 0,
$216 = 0,
$217 = 0,
$218 = 0,
$219 = 0,
$22 = 0,
$220 = 0,
$221 = 0,
$222 = 0,
$223 = 0;
var $224 = 0,
$225 = 0,
$226 = 0,
$227 = 0,
$228 = 0,
$229 = 0,
$23 = 0,
$230 = 0,
$231 = 0,
$232 = 0,
$233 = 0,
$234 = 0,
$235 = 0,
$236 = 0,
$237 = 0,
$238 = 0,
$239 = 0,
$24 = 0,
$240 = 0,
$241 = 0;
var $242 = 0,
$243 = 0,
$244 = 0,
$245 = 0,
$246 = 0,
$247 = 0,
$248 = 0,
$249 = 0,
$25 = 0,
$250 = 0,
$251 = 0,
$252 = 0,
$253 = 0,
$254 = 0,
$255 = 0,
$256 = 0,
$257 = 0,
$258 = 0,
$259 = 0,
$26 = 0;
var $260 = 0,
$261 = 0,
$262 = 0,
$263 = 0,
$264 = 0,
$265 = 0,
$266 = 0,
$267 = 0,
$268 = 0,
$269 = 0,
$27 = 0,
$270 = 0,
$271 = 0,
$272 = 0,
$273 = 0,
$274 = 0,
$275 = 0,
$276 = 0,
$277 = 0,
$278 = 0;
var $279 = 0,
$28 = 0,
$280 = 0,
$281 = 0,
$282 = 0,
$283 = 0,
$284 = 0,
$285 = 0,
$286 = 0,
$287 = 0,
$288 = 0,
$289 = 0,
$29 = 0,
$290 = 0,
$291 = 0,
$292 = 0,
$293 = 0,
$294 = 0,
$295 = 0,
$296 = 0;
var $297 = 0,
$298 = 0,
$3 = 0,
$30 = 0,
$31 = 0,
$32 = 0,
$33 = 0,
$34 = 0,
$35 = 0,
$36 = 0,
$37 = 0,
$38 = 0,
$39 = 0,
$4 = 0,
$40 = 0,
$41 = 0,
$42 = 0,
$43 = 0,
$44 = 0,
$45 = 0;
var $46 = 0,
$47 = 0,
$48 = 0,
$49 = 0,
$5 = 0,
$50 = 0,
$51 = 0,
$52 = 0,
$53 = 0,
$54 = 0,
$55 = 0,
$56 = 0,
$57 = 0,
$58 = 0,
$59 = 0,
$6 = 0,
$60 = 0,
$61 = 0,
$62 = 0,
$63 = 0;
var $64 = 0,
$65 = 0,
$66 = 0,
$67 = 0,
$68 = 0,
$69 = 0,
$7 = 0,
$70 = 0,
$71 = 0,
$72 = 0,
$73 = 0,
$74 = 0,
$75 = 0,
$76 = 0,
$77 = 0,
$78 = 0,
$79 = 0,
$8 = 0,
$80 = 0,
$81 = 0;
var $82 = 0,
$83 = 0,
$84 = 0,
$85 = 0,
$86 = 0,
$87 = 0,
$88 = 0,
$89 = 0,
$9 = 0,
$90 = 0,
$91 = 0,
$92 = 0,
$93 = 0,
$94 = 0,
$95 = 0,
$96 = 0,
$97 = 0,
$98 = 0,
$99 = 0,
label = 0;
var sp = 0;
sp = STACKTOP;
$0 = ($output + 144) | 0;
$1 = $0;
$2 = $1;
$3 = HEAP32[$2 >> 2] | 0;
$4 = ($1 + 4) | 0;
$5 = $4;
$6 = HEAP32[$5 >> 2] | 0;
$7 = _bitshift64Shl($3 | 0, $6 | 0, 4) | 0;
$8 = tempRet0;
$9 = ($output + 64) | 0;
$10 = $9;
$11 = $10;
$12 = HEAP32[$11 >> 2] | 0;
$13 = ($10 + 4) | 0;
$14 = $13;
$15 = HEAP32[$14 >> 2] | 0;
$16 = _i64Add($12 | 0, $15 | 0, $7 | 0, $8 | 0) | 0;
$17 = tempRet0;
$18 = _bitshift64Shl($3 | 0, $6 | 0, 1) | 0;
$19 = tempRet0;
$20 = _i64Add($18 | 0, $19 | 0, $16 | 0, $17 | 0) | 0;
$21 = tempRet0;
$22 = $0;
$23 = $22;
$24 = HEAP32[$23 >> 2] | 0;
$25 = ($22 + 4) | 0;
$26 = $25;
$27 = HEAP32[$26 >> 2] | 0;
$28 = _i64Add($20 | 0, $21 | 0, $24 | 0, $27 | 0) | 0;
$29 = tempRet0;
$30 = $9;
$31 = $30;
HEAP32[$31 >> 2] = $28;
$32 = ($30 + 4) | 0;
$33 = $32;
HEAP32[$33 >> 2] = $29;
$34 = ($output + 136) | 0;
$35 = $34;
$36 = $35;
$37 = HEAP32[$36 >> 2] | 0;
$38 = ($35 + 4) | 0;
$39 = $38;
$40 = HEAP32[$39 >> 2] | 0;
$41 = _bitshift64Shl($37 | 0, $40 | 0, 4) | 0;
$42 = tempRet0;
$43 = ($output + 56) | 0;
$44 = $43;
$45 = $44;
$46 = HEAP32[$45 >> 2] | 0;
$47 = ($44 + 4) | 0;
$48 = $47;
$49 = HEAP32[$48 >> 2] | 0;
$50 = _i64Add($46 | 0, $49 | 0, $41 | 0, $42 | 0) | 0;
$51 = tempRet0;
$52 = _bitshift64Shl($37 | 0, $40 | 0, 1) | 0;
$53 = tempRet0;
$54 = _i64Add($52 | 0, $53 | 0, $50 | 0, $51 | 0) | 0;
$55 = tempRet0;
$56 = $34;
$57 = $56;
$58 = HEAP32[$57 >> 2] | 0;
$59 = ($56 + 4) | 0;
$60 = $59;
$61 = HEAP32[$60 >> 2] | 0;
$62 = _i64Add($54 | 0, $55 | 0, $58 | 0, $61 | 0) | 0;
$63 = tempRet0;
$64 = $43;
$65 = $64;
HEAP32[$65 >> 2] = $62;
$66 = ($64 + 4) | 0;
$67 = $66;
HEAP32[$67 >> 2] = $63;
$68 = ($output + 128) | 0;
$69 = $68;
$70 = $69;
$71 = HEAP32[$70 >> 2] | 0;
$72 = ($69 + 4) | 0;
$73 = $72;
$74 = HEAP32[$73 >> 2] | 0;
$75 = _bitshift64Shl($71 | 0, $74 | 0, 4) | 0;
$76 = tempRet0;
$77 = ($output + 48) | 0;
$78 = $77;
$79 = $78;
$80 = HEAP32[$79 >> 2] | 0;
$81 = ($78 + 4) | 0;
$82 = $81;
$83 = HEAP32[$82 >> 2] | 0;
$84 = _i64Add($80 | 0, $83 | 0, $75 | 0, $76 | 0) | 0;
$85 = tempRet0;
$86 = _bitshift64Shl($71 | 0, $74 | 0, 1) | 0;
$87 = tempRet0;
$88 = _i64Add($86 | 0, $87 | 0, $84 | 0, $85 | 0) | 0;
$89 = tempRet0;
$90 = $68;
$91 = $90;
$92 = HEAP32[$91 >> 2] | 0;
$93 = ($90 + 4) | 0;
$94 = $93;
$95 = HEAP32[$94 >> 2] | 0;
$96 = _i64Add($88 | 0, $89 | 0, $92 | 0, $95 | 0) | 0;
$97 = tempRet0;
$98 = $77;
$99 = $98;
HEAP32[$99 >> 2] = $96;
$100 = ($98 + 4) | 0;
$101 = $100;
HEAP32[$101 >> 2] = $97;
$102 = ($output + 120) | 0;
$103 = $102;
$104 = $103;
$105 = HEAP32[$104 >> 2] | 0;
$106 = ($103 + 4) | 0;
$107 = $106;
$108 = HEAP32[$107 >> 2] | 0;
$109 = _bitshift64Shl($105 | 0, $108 | 0, 4) | 0;
$110 = tempRet0;
$111 = ($output + 40) | 0;
$112 = $111;
$113 = $112;
$114 = HEAP32[$113 >> 2] | 0;
$115 = ($112 + 4) | 0;
$116 = $115;
$117 = HEAP32[$116 >> 2] | 0;
$118 = _i64Add($114 | 0, $117 | 0, $109 | 0, $110 | 0) | 0;
$119 = tempRet0;
$120 = _bitshift64Shl($105 | 0, $108 | 0, 1) | 0;
$121 = tempRet0;
$122 = _i64Add($120 | 0, $121 | 0, $118 | 0, $119 | 0) | 0;
$123 = tempRet0;
$124 = $102;
$125 = $124;
$126 = HEAP32[$125 >> 2] | 0;
$127 = ($124 + 4) | 0;
$128 = $127;
$129 = HEAP32[$128 >> 2] | 0;
$130 = _i64Add($122 | 0, $123 | 0, $126 | 0, $129 | 0) | 0;
$131 = tempRet0;
$132 = $111;
$133 = $132;
HEAP32[$133 >> 2] = $130;
$134 = ($132 + 4) | 0;
$135 = $134;
HEAP32[$135 >> 2] = $131;
$136 = ($output + 112) | 0;
$137 = $136;
$138 = $137;
$139 = HEAP32[$138 >> 2] | 0;
$140 = ($137 + 4) | 0;
$141 = $140;
$142 = HEAP32[$141 >> 2] | 0;
$143 = _bitshift64Shl($139 | 0, $142 | 0, 4) | 0;
$144 = tempRet0;
$145 = ($output + 32) | 0;
$146 = $145;
$147 = $146;
$148 = HEAP32[$147 >> 2] | 0;
$149 = ($146 + 4) | 0;
$150 = $149;
$151 = HEAP32[$150 >> 2] | 0;
$152 = _i64Add($148 | 0, $151 | 0, $143 | 0, $144 | 0) | 0;
$153 = tempRet0;
$154 = _bitshift64Shl($139 | 0, $142 | 0, 1) | 0;
$155 = tempRet0;
$156 = _i64Add($154 | 0, $155 | 0, $152 | 0, $153 | 0) | 0;
$157 = tempRet0;
$158 = $136;
$159 = $158;
$160 = HEAP32[$159 >> 2] | 0;
$161 = ($158 + 4) | 0;
$162 = $161;
$163 = HEAP32[$162 >> 2] | 0;
$164 = _i64Add($156 | 0, $157 | 0, $160 | 0, $163 | 0) | 0;
$165 = tempRet0;
$166 = $145;
$167 = $166;
HEAP32[$167 >> 2] = $164;
$168 = ($166 + 4) | 0;
$169 = $168;
HEAP32[$169 >> 2] = $165;
$170 = ($output + 104) | 0;
$171 = $170;
$172 = $171;
$173 = HEAP32[$172 >> 2] | 0;
$174 = ($171 + 4) | 0;
$175 = $174;
$176 = HEAP32[$175 >> 2] | 0;
$177 = _bitshift64Shl($173 | 0, $176 | 0, 4) | 0;
$178 = tempRet0;
$179 = ($output + 24) | 0;
$180 = $179;
$181 = $180;
$182 = HEAP32[$181 >> 2] | 0;
$183 = ($180 + 4) | 0;
$184 = $183;
$185 = HEAP32[$184 >> 2] | 0;
$186 = _i64Add($182 | 0, $185 | 0, $177 | 0, $178 | 0) | 0;
$187 = tempRet0;
$188 = _bitshift64Shl($173 | 0, $176 | 0, 1) | 0;
$189 = tempRet0;
$190 = _i64Add($188 | 0, $189 | 0, $186 | 0, $187 | 0) | 0;
$191 = tempRet0;
$192 = $170;
$193 = $192;
$194 = HEAP32[$193 >> 2] | 0;
$195 = ($192 + 4) | 0;
$196 = $195;
$197 = HEAP32[$196 >> 2] | 0;
$198 = _i64Add($190 | 0, $191 | 0, $194 | 0, $197 | 0) | 0;
$199 = tempRet0;
$200 = $179;
$201 = $200;
HEAP32[$201 >> 2] = $198;
$202 = ($200 + 4) | 0;
$203 = $202;
HEAP32[$203 >> 2] = $199;
$204 = ($output + 96) | 0;
$205 = $204;
$206 = $205;
$207 = HEAP32[$206 >> 2] | 0;
$208 = ($205 + 4) | 0;
$209 = $208;
$210 = HEAP32[$209 >> 2] | 0;
$211 = _bitshift64Shl($207 | 0, $210 | 0, 4) | 0;
$212 = tempRet0;
$213 = ($output + 16) | 0;
$214 = $213;
$215 = $214;
$216 = HEAP32[$215 >> 2] | 0;
$217 = ($214 + 4) | 0;
$218 = $217;
$219 = HEAP32[$218 >> 2] | 0;
$220 = _i64Add($216 | 0, $219 | 0, $211 | 0, $212 | 0) | 0;
$221 = tempRet0;
$222 = _bitshift64Shl($207 | 0, $210 | 0, 1) | 0;
$223 = tempRet0;
$224 = _i64Add($222 | 0, $223 | 0, $220 | 0, $221 | 0) | 0;
$225 = tempRet0;
$226 = $204;
$227 = $226;
$228 = HEAP32[$227 >> 2] | 0;
$229 = ($226 + 4) | 0;
$230 = $229;
$231 = HEAP32[$230 >> 2] | 0;
$232 = _i64Add($224 | 0, $225 | 0, $228 | 0, $231 | 0) | 0;
$233 = tempRet0;
$234 = $213;
$235 = $234;
HEAP32[$235 >> 2] = $232;
$236 = ($234 + 4) | 0;
$237 = $236;
HEAP32[$237 >> 2] = $233;
$238 = ($output + 88) | 0;
$239 = $238;
$240 = $239;
$241 = HEAP32[$240 >> 2] | 0;
$242 = ($239 + 4) | 0;
$243 = $242;
$244 = HEAP32[$243 >> 2] | 0;
$245 = _bitshift64Shl($241 | 0, $244 | 0, 4) | 0;
$246 = tempRet0;
$247 = ($output + 8) | 0;
$248 = $247;
$249 = $248;
$250 = HEAP32[$249 >> 2] | 0;
$251 = ($248 + 4) | 0;
$252 = $251;
$253 = HEAP32[$252 >> 2] | 0;
$254 = _i64Add($250 | 0, $253 | 0, $245 | 0, $246 | 0) | 0;
$255 = tempRet0;
$256 = _bitshift64Shl($241 | 0, $244 | 0, 1) | 0;
$257 = tempRet0;
$258 = _i64Add($256 | 0, $257 | 0, $254 | 0, $255 | 0) | 0;
$259 = tempRet0;
$260 = $238;
$261 = $260;
$262 = HEAP32[$261 >> 2] | 0;
$263 = ($260 + 4) | 0;
$264 = $263;
$265 = HEAP32[$264 >> 2] | 0;
$266 = _i64Add($258 | 0, $259 | 0, $262 | 0, $265 | 0) | 0;
$267 = tempRet0;
$268 = $247;
$269 = $268;
HEAP32[$269 >> 2] = $266;
$270 = ($268 + 4) | 0;
$271 = $270;
HEAP32[$271 >> 2] = $267;
$272 = ($output + 80) | 0;
$273 = $272;
$274 = $273;
$275 = HEAP32[$274 >> 2] | 0;
$276 = ($273 + 4) | 0;
$277 = $276;
$278 = HEAP32[$277 >> 2] | 0;
$279 = _bitshift64Shl($275 | 0, $278 | 0, 4) | 0;
$280 = tempRet0;
$281 = $output;
$282 = $281;
$283 = HEAP32[$282 >> 2] | 0;
$284 = ($281 + 4) | 0;
$285 = $284;
$286 = HEAP32[$285 >> 2] | 0;
$287 = _i64Add($283 | 0, $286 | 0, $279 | 0, $280 | 0) | 0;
$288 = tempRet0;
$289 = _bitshift64Shl($275 | 0, $278 | 0, 1) | 0;
$290 = tempRet0;
$291 = _i64Add($289 | 0, $290 | 0, $287 | 0, $288 | 0) | 0;
$292 = tempRet0;
$293 = _i64Add($291 | 0, $292 | 0, $275 | 0, $278 | 0) | 0;
$294 = tempRet0;
$295 = $output;
$296 = $295;
HEAP32[$296 >> 2] = $293;
$297 = ($295 + 4) | 0;
$298 = $297;
HEAP32[$298 >> 2] = $294;
STACKTOP = sp;
return;
}
function _freduce_coefficients($output) {
$output = $output | 0;
var $0 = 0,
$1 = 0,
$10 = 0,
$100 = 0,
$101 = 0,
$102 = 0,
$103 = 0,
$104 = 0,
$105 = 0,
$106 = 0,
$107 = 0,
$108 = 0,
$109 = 0,
$11 = 0,
$110 = 0,
$111 = 0,
$112 = 0,
$113 = 0,
$114 = 0,
$115 = 0;
var $12 = 0,
$13 = 0,
$14 = 0,
$15 = 0,
$16 = 0,
$17 = 0,
$18 = 0,
$19 = 0,
$2 = 0,
$20 = 0,
$21 = 0,
$22 = 0,
$23 = 0,
$24 = 0,
$25 = 0,
$26 = 0,
$27 = 0,
$28 = 0,
$29 = 0,
$3 = 0;
var $30 = 0,
$31 = 0,
$32 = 0,
$33 = 0,
$34 = 0,
$35 = 0,
$36 = 0,
$37 = 0,
$38 = 0,
$39 = 0,
$4 = 0,
$40 = 0,
$41 = 0,
$42 = 0,
$43 = 0,
$44 = 0,
$45 = 0,
$46 = 0,
$47 = 0,
$48 = 0;
var $49 = 0,
$5 = 0,
$50 = 0,
$51 = 0,
$52 = 0,
$53 = 0,
$54 = 0,
$55 = 0,
$56 = 0,
$57 = 0,
$58 = 0,
$59 = 0,
$6 = 0,
$60 = 0,
$61 = 0,
$62 = 0,
$63 = 0,
$64 = 0,
$65 = 0,
$66 = 0;
var $67 = 0,
$68 = 0,
$69 = 0,
$7 = 0,
$70 = 0,
$71 = 0,
$72 = 0,
$73 = 0,
$74 = 0,
$75 = 0,
$76 = 0,
$77 = 0,
$78 = 0,
$79 = 0,
$8 = 0,
$80 = 0,
$81 = 0,
$82 = 0,
$83 = 0,
$84 = 0;
var $85 = 0,
$86 = 0,
$87 = 0,
$88 = 0,
$89 = 0,
$9 = 0,
$90 = 0,
$91 = 0,
$92 = 0,
$93 = 0,
$94 = 0,
$95 = 0,
$96 = 0,
$97 = 0,
$98 = 0,
$99 = 0,
$i$01 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = ($output + 80) | 0;
$1 = $0;
$2 = $1;
HEAP32[$2 >> 2] = 0;
$3 = ($1 + 4) | 0;
$4 = $3;
HEAP32[$4 >> 2] = 0;
$i$01 = 0;
while (1) {
$5 = ($output + ($i$01 << 3)) | 0;
$6 = $5;
$7 = $6;
$8 = HEAP32[$7 >> 2] | 0;
$9 = ($6 + 4) | 0;
$10 = $9;
$11 = HEAP32[$10 >> 2] | 0;
$12 = _div_by_2_26($8, $11) | 0;
$13 = tempRet0;
$14 = _bitshift64Shl($12 | 0, $13 | 0, 26) | 0;
$15 = tempRet0;
$16 = _i64Subtract($8 | 0, $11 | 0, $14 | 0, $15 | 0) | 0;
$17 = tempRet0;
$18 = $5;
$19 = $18;
HEAP32[$19 >> 2] = $16;
$20 = ($18 + 4) | 0;
$21 = $20;
HEAP32[$21 >> 2] = $17;
$22 = $i$01 | 1;
$23 = ($output + ($22 << 3)) | 0;
$24 = $23;
$25 = $24;
$26 = HEAP32[$25 >> 2] | 0;
$27 = ($24 + 4) | 0;
$28 = $27;
$29 = HEAP32[$28 >> 2] | 0;
$30 = _i64Add($26 | 0, $29 | 0, $12 | 0, $13 | 0) | 0;
$31 = tempRet0;
$32 = _div_by_2_25($30, $31) | 0;
$33 = tempRet0;
$34 = _bitshift64Shl($32 | 0, $33 | 0, 25) | 0;
$35 = tempRet0;
$36 = _i64Subtract($30 | 0, $31 | 0, $34 | 0, $35 | 0) | 0;
$37 = tempRet0;
$38 = $23;
$39 = $38;
HEAP32[$39 >> 2] = $36;
$40 = ($38 + 4) | 0;
$41 = $40;
HEAP32[$41 >> 2] = $37;
$42 = ($i$01 + 2) | 0;
$43 = ($output + ($42 << 3)) | 0;
$44 = $43;
$45 = $44;
$46 = HEAP32[$45 >> 2] | 0;
$47 = ($44 + 4) | 0;
$48 = $47;
$49 = HEAP32[$48 >> 2] | 0;
$50 = _i64Add($46 | 0, $49 | 0, $32 | 0, $33 | 0) | 0;
$51 = tempRet0;
$52 = $43;
$53 = $52;
HEAP32[$53 >> 2] = $50;
$54 = ($52 + 4) | 0;
$55 = $54;
HEAP32[$55 >> 2] = $51;
$56 = $42 >>> 0 < 10;
if ($56) {
$i$01 = $42;
} else {
break;
}
}
$57 = $0;
$58 = $57;
$59 = HEAP32[$58 >> 2] | 0;
$60 = ($57 + 4) | 0;
$61 = $60;
$62 = HEAP32[$61 >> 2] | 0;
$63 = _bitshift64Shl($59 | 0, $62 | 0, 4) | 0;
$64 = tempRet0;
$65 = $output;
$66 = $65;
$67 = HEAP32[$66 >> 2] | 0;
$68 = ($65 + 4) | 0;
$69 = $68;
$70 = HEAP32[$69 >> 2] | 0;
$71 = _i64Add($67 | 0, $70 | 0, $63 | 0, $64 | 0) | 0;
$72 = tempRet0;
$73 = _bitshift64Shl($59 | 0, $62 | 0, 1) | 0;
$74 = tempRet0;
$75 = _i64Add($73 | 0, $74 | 0, $71 | 0, $72 | 0) | 0;
$76 = tempRet0;
$77 = _i64Add($75 | 0, $76 | 0, $59 | 0, $62 | 0) | 0;
$78 = tempRet0;
$79 = $output;
$80 = $79;
HEAP32[$80 >> 2] = $77;
$81 = ($79 + 4) | 0;
$82 = $81;
HEAP32[$82 >> 2] = $78;
$83 = $0;
$84 = $83;
HEAP32[$84 >> 2] = 0;
$85 = ($83 + 4) | 0;
$86 = $85;
HEAP32[$86 >> 2] = 0;
$87 = $output;
$88 = $87;
$89 = HEAP32[$88 >> 2] | 0;
$90 = ($87 + 4) | 0;
$91 = $90;
$92 = HEAP32[$91 >> 2] | 0;
$93 = _div_by_2_26($89, $92) | 0;
$94 = tempRet0;
$95 = _bitshift64Shl($93 | 0, $94 | 0, 26) | 0;
$96 = tempRet0;
$97 = _i64Subtract($89 | 0, $92 | 0, $95 | 0, $96 | 0) | 0;
$98 = tempRet0;
$99 = $output;
$100 = $99;
HEAP32[$100 >> 2] = $97;
$101 = ($99 + 4) | 0;
$102 = $101;
HEAP32[$102 >> 2] = $98;
$103 = ($output + 8) | 0;
$104 = $103;
$105 = $104;
$106 = HEAP32[$105 >> 2] | 0;
$107 = ($104 + 4) | 0;
$108 = $107;
$109 = HEAP32[$108 >> 2] | 0;
$110 = _i64Add($106 | 0, $109 | 0, $93 | 0, $94 | 0) | 0;
$111 = tempRet0;
$112 = $103;
$113 = $112;
HEAP32[$113 >> 2] = $110;
$114 = ($112 + 4) | 0;
$115 = $114;
HEAP32[$115 >> 2] = $111;
STACKTOP = sp;
return;
}
function _s32_eq($a, $b) {
$a = $a | 0;
$b = $b | 0;
var $0 = 0,
$1 = 0,
$10 = 0,
$11 = 0,
$12 = 0,
$2 = 0,
$3 = 0,
$4 = 0,
$5 = 0,
$6 = 0,
$7 = 0,
$8 = 0,
$9 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = $a ^ -1;
$1 = $0 ^ $b;
$2 = $1 << 16;
$3 = $2 & $1;
$4 = $3 << 8;
$5 = $4 & $3;
$6 = $5 << 4;
$7 = $6 & $5;
$8 = $7 << 2;
$9 = $8 & $7;
$10 = $9 << 1;
$11 = $10 & $9;
$12 = $11 >> 31;
STACKTOP = sp;
return $12 | 0;
}
function _s32_gte($a) {
$a = $a | 0;
var $0 = 0,
$1 = 0,
$2 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = ($a + -67108845) | 0;
$1 = $0 >> 31;
$2 = $1 ^ -1;
STACKTOP = sp;
return $2 | 0;
}
function _fsum($output, $in) {
$output = $output | 0;
$in = $in | 0;
var $0 = 0,
$1 = 0,
$10 = 0,
$100 = 0,
$101 = 0,
$102 = 0,
$103 = 0,
$104 = 0,
$105 = 0,
$106 = 0,
$107 = 0,
$108 = 0,
$109 = 0,
$11 = 0,
$110 = 0,
$111 = 0,
$112 = 0,
$113 = 0,
$114 = 0,
$115 = 0;
var $116 = 0,
$117 = 0,
$118 = 0,
$119 = 0,
$12 = 0,
$120 = 0,
$121 = 0,
$122 = 0,
$123 = 0,
$124 = 0,
$125 = 0,
$126 = 0,
$127 = 0,
$128 = 0,
$129 = 0,
$13 = 0,
$130 = 0,
$131 = 0,
$132 = 0,
$133 = 0;
var $134 = 0,
$135 = 0,
$136 = 0,
$137 = 0,
$138 = 0,
$139 = 0,
$14 = 0,
$140 = 0,
$141 = 0,
$142 = 0,
$143 = 0,
$144 = 0,
$145 = 0,
$146 = 0,
$147 = 0,
$148 = 0,
$149 = 0,
$15 = 0,
$150 = 0,
$151 = 0;
var $152 = 0,
$153 = 0,
$154 = 0,
$155 = 0,
$156 = 0,
$157 = 0,
$158 = 0,
$159 = 0,
$16 = 0,
$160 = 0,
$161 = 0,
$162 = 0,
$163 = 0,
$164 = 0,
$165 = 0,
$166 = 0,
$167 = 0,
$168 = 0,
$169 = 0,
$17 = 0;
var $170 = 0,
$171 = 0,
$172 = 0,
$173 = 0,
$174 = 0,
$175 = 0,
$176 = 0,
$177 = 0,
$178 = 0,
$179 = 0,
$18 = 0,
$180 = 0,
$181 = 0,
$182 = 0,
$183 = 0,
$184 = 0,
$185 = 0,
$186 = 0,
$187 = 0,
$188 = 0;
var $189 = 0,
$19 = 0,
$190 = 0,
$191 = 0,
$192 = 0,
$193 = 0,
$194 = 0,
$195 = 0,
$196 = 0,
$197 = 0,
$2 = 0,
$20 = 0,
$21 = 0,
$22 = 0,
$23 = 0,
$24 = 0,
$25 = 0,
$26 = 0,
$27 = 0,
$28 = 0;
var $29 = 0,
$3 = 0,
$30 = 0,
$31 = 0,
$32 = 0,
$33 = 0,
$34 = 0,
$35 = 0,
$36 = 0,
$37 = 0,
$38 = 0,
$39 = 0,
$4 = 0,
$40 = 0,
$41 = 0,
$42 = 0,
$43 = 0,
$44 = 0,
$45 = 0,
$46 = 0;
var $47 = 0,
$48 = 0,
$49 = 0,
$5 = 0,
$50 = 0,
$51 = 0,
$52 = 0,
$53 = 0,
$54 = 0,
$55 = 0,
$56 = 0,
$57 = 0,
$58 = 0,
$59 = 0,
$6 = 0,
$60 = 0,
$61 = 0,
$62 = 0,
$63 = 0,
$64 = 0;
var $65 = 0,
$66 = 0,
$67 = 0,
$68 = 0,
$69 = 0,
$7 = 0,
$70 = 0,
$71 = 0,
$72 = 0,
$73 = 0,
$74 = 0,
$75 = 0,
$76 = 0,
$77 = 0,
$78 = 0,
$79 = 0,
$8 = 0,
$80 = 0,
$81 = 0,
$82 = 0;
var $83 = 0,
$84 = 0,
$85 = 0,
$86 = 0,
$87 = 0,
$88 = 0,
$89 = 0,
$9 = 0,
$90 = 0,
$91 = 0,
$92 = 0,
$93 = 0,
$94 = 0,
$95 = 0,
$96 = 0,
$97 = 0,
$98 = 0,
$99 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = $output;
$1 = $0;
$2 = HEAP32[$1 >> 2] | 0;
$3 = ($0 + 4) | 0;
$4 = $3;
$5 = HEAP32[$4 >> 2] | 0;
$6 = $in;
$7 = $6;
$8 = HEAP32[$7 >> 2] | 0;
$9 = ($6 + 4) | 0;
$10 = $9;
$11 = HEAP32[$10 >> 2] | 0;
$12 = _i64Add($8 | 0, $11 | 0, $2 | 0, $5 | 0) | 0;
$13 = tempRet0;
$14 = $output;
$15 = $14;
HEAP32[$15 >> 2] = $12;
$16 = ($14 + 4) | 0;
$17 = $16;
HEAP32[$17 >> 2] = $13;
$18 = ($output + 8) | 0;
$19 = $18;
$20 = $19;
$21 = HEAP32[$20 >> 2] | 0;
$22 = ($19 + 4) | 0;
$23 = $22;
$24 = HEAP32[$23 >> 2] | 0;
$25 = ($in + 8) | 0;
$26 = $25;
$27 = $26;
$28 = HEAP32[$27 >> 2] | 0;
$29 = ($26 + 4) | 0;
$30 = $29;
$31 = HEAP32[$30 >> 2] | 0;
$32 = _i64Add($28 | 0, $31 | 0, $21 | 0, $24 | 0) | 0;
$33 = tempRet0;
$34 = $18;
$35 = $34;
HEAP32[$35 >> 2] = $32;
$36 = ($34 + 4) | 0;
$37 = $36;
HEAP32[$37 >> 2] = $33;
$38 = ($output + 16) | 0;
$39 = $38;
$40 = $39;
$41 = HEAP32[$40 >> 2] | 0;
$42 = ($39 + 4) | 0;
$43 = $42;
$44 = HEAP32[$43 >> 2] | 0;
$45 = ($in + 16) | 0;
$46 = $45;
$47 = $46;
$48 = HEAP32[$47 >> 2] | 0;
$49 = ($46 + 4) | 0;
$50 = $49;
$51 = HEAP32[$50 >> 2] | 0;
$52 = _i64Add($48 | 0, $51 | 0, $41 | 0, $44 | 0) | 0;
$53 = tempRet0;
$54 = $38;
$55 = $54;
HEAP32[$55 >> 2] = $52;
$56 = ($54 + 4) | 0;
$57 = $56;
HEAP32[$57 >> 2] = $53;
$58 = ($output + 24) | 0;
$59 = $58;
$60 = $59;
$61 = HEAP32[$60 >> 2] | 0;
$62 = ($59 + 4) | 0;
$63 = $62;
$64 = HEAP32[$63 >> 2] | 0;
$65 = ($in + 24) | 0;
$66 = $65;
$67 = $66;
$68 = HEAP32[$67 >> 2] | 0;
$69 = ($66 + 4) | 0;
$70 = $69;
$71 = HEAP32[$70 >> 2] | 0;
$72 = _i64Add($68 | 0, $71 | 0, $61 | 0, $64 | 0) | 0;
$73 = tempRet0;
$74 = $58;
$75 = $74;
HEAP32[$75 >> 2] = $72;
$76 = ($74 + 4) | 0;
$77 = $76;
HEAP32[$77 >> 2] = $73;
$78 = ($output + 32) | 0;
$79 = $78;
$80 = $79;
$81 = HEAP32[$80 >> 2] | 0;
$82 = ($79 + 4) | 0;
$83 = $82;
$84 = HEAP32[$83 >> 2] | 0;
$85 = ($in + 32) | 0;
$86 = $85;
$87 = $86;
$88 = HEAP32[$87 >> 2] | 0;
$89 = ($86 + 4) | 0;
$90 = $89;
$91 = HEAP32[$90 >> 2] | 0;
$92 = _i64Add($88 | 0, $91 | 0, $81 | 0, $84 | 0) | 0;
$93 = tempRet0;
$94 = $78;
$95 = $94;
HEAP32[$95 >> 2] = $92;
$96 = ($94 + 4) | 0;
$97 = $96;
HEAP32[$97 >> 2] = $93;
$98 = ($output + 40) | 0;
$99 = $98;
$100 = $99;
$101 = HEAP32[$100 >> 2] | 0;
$102 = ($99 + 4) | 0;
$103 = $102;
$104 = HEAP32[$103 >> 2] | 0;
$105 = ($in + 40) | 0;
$106 = $105;
$107 = $106;
$108 = HEAP32[$107 >> 2] | 0;
$109 = ($106 + 4) | 0;
$110 = $109;
$111 = HEAP32[$110 >> 2] | 0;
$112 = _i64Add($108 | 0, $111 | 0, $101 | 0, $104 | 0) | 0;
$113 = tempRet0;
$114 = $98;
$115 = $114;
HEAP32[$115 >> 2] = $112;
$116 = ($114 + 4) | 0;
$117 = $116;
HEAP32[$117 >> 2] = $113;
$118 = ($output + 48) | 0;
$119 = $118;
$120 = $119;
$121 = HEAP32[$120 >> 2] | 0;
$122 = ($119 + 4) | 0;
$123 = $122;
$124 = HEAP32[$123 >> 2] | 0;
$125 = ($in + 48) | 0;
$126 = $125;
$127 = $126;
$128 = HEAP32[$127 >> 2] | 0;
$129 = ($126 + 4) | 0;
$130 = $129;
$131 = HEAP32[$130 >> 2] | 0;
$132 = _i64Add($128 | 0, $131 | 0, $121 | 0, $124 | 0) | 0;
$133 = tempRet0;
$134 = $118;
$135 = $134;
HEAP32[$135 >> 2] = $132;
$136 = ($134 + 4) | 0;
$137 = $136;
HEAP32[$137 >> 2] = $133;
$138 = ($output + 56) | 0;
$139 = $138;
$140 = $139;
$141 = HEAP32[$140 >> 2] | 0;
$142 = ($139 + 4) | 0;
$143 = $142;
$144 = HEAP32[$143 >> 2] | 0;
$145 = ($in + 56) | 0;
$146 = $145;
$147 = $146;
$148 = HEAP32[$147 >> 2] | 0;
$149 = ($146 + 4) | 0;
$150 = $149;
$151 = HEAP32[$150 >> 2] | 0;
$152 = _i64Add($148 | 0, $151 | 0, $141 | 0, $144 | 0) | 0;
$153 = tempRet0;
$154 = $138;
$155 = $154;
HEAP32[$155 >> 2] = $152;
$156 = ($154 + 4) | 0;
$157 = $156;
HEAP32[$157 >> 2] = $153;
$158 = ($output + 64) | 0;
$159 = $158;
$160 = $159;
$161 = HEAP32[$160 >> 2] | 0;
$162 = ($159 + 4) | 0;
$163 = $162;
$164 = HEAP32[$163 >> 2] | 0;
$165 = ($in + 64) | 0;
$166 = $165;
$167 = $166;
$168 = HEAP32[$167 >> 2] | 0;
$169 = ($166 + 4) | 0;
$170 = $169;
$171 = HEAP32[$170 >> 2] | 0;
$172 = _i64Add($168 | 0, $171 | 0, $161 | 0, $164 | 0) | 0;
$173 = tempRet0;
$174 = $158;
$175 = $174;
HEAP32[$175 >> 2] = $172;
$176 = ($174 + 4) | 0;
$177 = $176;
HEAP32[$177 >> 2] = $173;
$178 = ($output + 72) | 0;
$179 = $178;
$180 = $179;
$181 = HEAP32[$180 >> 2] | 0;
$182 = ($179 + 4) | 0;
$183 = $182;
$184 = HEAP32[$183 >> 2] | 0;
$185 = ($in + 72) | 0;
$186 = $185;
$187 = $186;
$188 = HEAP32[$187 >> 2] | 0;
$189 = ($186 + 4) | 0;
$190 = $189;
$191 = HEAP32[$190 >> 2] | 0;
$192 = _i64Add($188 | 0, $191 | 0, $181 | 0, $184 | 0) | 0;
$193 = tempRet0;
$194 = $178;
$195 = $194;
HEAP32[$195 >> 2] = $192;
$196 = ($194 + 4) | 0;
$197 = $196;
HEAP32[$197 >> 2] = $193;
STACKTOP = sp;
return;
}
function _fdifference($output, $in) {
$output = $output | 0;
$in = $in | 0;
var $0 = 0,
$1 = 0,
$10 = 0,
$100 = 0,
$101 = 0,
$102 = 0,
$103 = 0,
$104 = 0,
$105 = 0,
$106 = 0,
$107 = 0,
$108 = 0,
$109 = 0,
$11 = 0,
$110 = 0,
$111 = 0,
$112 = 0,
$113 = 0,
$114 = 0,
$115 = 0;
var $116 = 0,
$117 = 0,
$118 = 0,
$119 = 0,
$12 = 0,
$120 = 0,
$121 = 0,
$122 = 0,
$123 = 0,
$124 = 0,
$125 = 0,
$126 = 0,
$127 = 0,
$128 = 0,
$129 = 0,
$13 = 0,
$130 = 0,
$131 = 0,
$132 = 0,
$133 = 0;
var $134 = 0,
$135 = 0,
$136 = 0,
$137 = 0,
$138 = 0,
$139 = 0,
$14 = 0,
$140 = 0,
$141 = 0,
$142 = 0,
$143 = 0,
$144 = 0,
$145 = 0,
$146 = 0,
$147 = 0,
$148 = 0,
$149 = 0,
$15 = 0,
$150 = 0,
$151 = 0;
var $152 = 0,
$153 = 0,
$154 = 0,
$155 = 0,
$156 = 0,
$157 = 0,
$158 = 0,
$159 = 0,
$16 = 0,
$160 = 0,
$161 = 0,
$162 = 0,
$163 = 0,
$164 = 0,
$165 = 0,
$166 = 0,
$167 = 0,
$168 = 0,
$169 = 0,
$17 = 0;
var $170 = 0,
$171 = 0,
$172 = 0,
$173 = 0,
$174 = 0,
$175 = 0,
$176 = 0,
$177 = 0,
$178 = 0,
$179 = 0,
$18 = 0,
$180 = 0,
$181 = 0,
$182 = 0,
$183 = 0,
$184 = 0,
$185 = 0,
$186 = 0,
$187 = 0,
$188 = 0;
var $189 = 0,
$19 = 0,
$190 = 0,
$191 = 0,
$192 = 0,
$193 = 0,
$194 = 0,
$195 = 0,
$196 = 0,
$197 = 0,
$2 = 0,
$20 = 0,
$21 = 0,
$22 = 0,
$23 = 0,
$24 = 0,
$25 = 0,
$26 = 0,
$27 = 0,
$28 = 0;
var $29 = 0,
$3 = 0,
$30 = 0,
$31 = 0,
$32 = 0,
$33 = 0,
$34 = 0,
$35 = 0,
$36 = 0,
$37 = 0,
$38 = 0,
$39 = 0,
$4 = 0,
$40 = 0,
$41 = 0,
$42 = 0,
$43 = 0,
$44 = 0,
$45 = 0,
$46 = 0;
var $47 = 0,
$48 = 0,
$49 = 0,
$5 = 0,
$50 = 0,
$51 = 0,
$52 = 0,
$53 = 0,
$54 = 0,
$55 = 0,
$56 = 0,
$57 = 0,
$58 = 0,
$59 = 0,
$6 = 0,
$60 = 0,
$61 = 0,
$62 = 0,
$63 = 0,
$64 = 0;
var $65 = 0,
$66 = 0,
$67 = 0,
$68 = 0,
$69 = 0,
$7 = 0,
$70 = 0,
$71 = 0,
$72 = 0,
$73 = 0,
$74 = 0,
$75 = 0,
$76 = 0,
$77 = 0,
$78 = 0,
$79 = 0,
$8 = 0,
$80 = 0,
$81 = 0,
$82 = 0;
var $83 = 0,
$84 = 0,
$85 = 0,
$86 = 0,
$87 = 0,
$88 = 0,
$89 = 0,
$9 = 0,
$90 = 0,
$91 = 0,
$92 = 0,
$93 = 0,
$94 = 0,
$95 = 0,
$96 = 0,
$97 = 0,
$98 = 0,
$99 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = $in;
$1 = $0;
$2 = HEAP32[$1 >> 2] | 0;
$3 = ($0 + 4) | 0;
$4 = $3;
$5 = HEAP32[$4 >> 2] | 0;
$6 = $output;
$7 = $6;
$8 = HEAP32[$7 >> 2] | 0;
$9 = ($6 + 4) | 0;
$10 = $9;
$11 = HEAP32[$10 >> 2] | 0;
$12 = _i64Subtract($2 | 0, $5 | 0, $8 | 0, $11 | 0) | 0;
$13 = tempRet0;
$14 = $output;
$15 = $14;
HEAP32[$15 >> 2] = $12;
$16 = ($14 + 4) | 0;
$17 = $16;
HEAP32[$17 >> 2] = $13;
$18 = ($in + 8) | 0;
$19 = $18;
$20 = $19;
$21 = HEAP32[$20 >> 2] | 0;
$22 = ($19 + 4) | 0;
$23 = $22;
$24 = HEAP32[$23 >> 2] | 0;
$25 = ($output + 8) | 0;
$26 = $25;
$27 = $26;
$28 = HEAP32[$27 >> 2] | 0;
$29 = ($26 + 4) | 0;
$30 = $29;
$31 = HEAP32[$30 >> 2] | 0;
$32 = _i64Subtract($21 | 0, $24 | 0, $28 | 0, $31 | 0) | 0;
$33 = tempRet0;
$34 = $25;
$35 = $34;
HEAP32[$35 >> 2] = $32;
$36 = ($34 + 4) | 0;
$37 = $36;
HEAP32[$37 >> 2] = $33;
$38 = ($in + 16) | 0;
$39 = $38;
$40 = $39;
$41 = HEAP32[$40 >> 2] | 0;
$42 = ($39 + 4) | 0;
$43 = $42;
$44 = HEAP32[$43 >> 2] | 0;
$45 = ($output + 16) | 0;
$46 = $45;
$47 = $46;
$48 = HEAP32[$47 >> 2] | 0;
$49 = ($46 + 4) | 0;
$50 = $49;
$51 = HEAP32[$50 >> 2] | 0;
$52 = _i64Subtract($41 | 0, $44 | 0, $48 | 0, $51 | 0) | 0;
$53 = tempRet0;
$54 = $45;
$55 = $54;
HEAP32[$55 >> 2] = $52;
$56 = ($54 + 4) | 0;
$57 = $56;
HEAP32[$57 >> 2] = $53;
$58 = ($in + 24) | 0;
$59 = $58;
$60 = $59;
$61 = HEAP32[$60 >> 2] | 0;
$62 = ($59 + 4) | 0;
$63 = $62;
$64 = HEAP32[$63 >> 2] | 0;
$65 = ($output + 24) | 0;
$66 = $65;
$67 = $66;
$68 = HEAP32[$67 >> 2] | 0;
$69 = ($66 + 4) | 0;
$70 = $69;
$71 = HEAP32[$70 >> 2] | 0;
$72 = _i64Subtract($61 | 0, $64 | 0, $68 | 0, $71 | 0) | 0;
$73 = tempRet0;
$74 = $65;
$75 = $74;
HEAP32[$75 >> 2] = $72;
$76 = ($74 + 4) | 0;
$77 = $76;
HEAP32[$77 >> 2] = $73;
$78 = ($in + 32) | 0;
$79 = $78;
$80 = $79;
$81 = HEAP32[$80 >> 2] | 0;
$82 = ($79 + 4) | 0;
$83 = $82;
$84 = HEAP32[$83 >> 2] | 0;
$85 = ($output + 32) | 0;
$86 = $85;
$87 = $86;
$88 = HEAP32[$87 >> 2] | 0;
$89 = ($86 + 4) | 0;
$90 = $89;
$91 = HEAP32[$90 >> 2] | 0;
$92 = _i64Subtract($81 | 0, $84 | 0, $88 | 0, $91 | 0) | 0;
$93 = tempRet0;
$94 = $85;
$95 = $94;
HEAP32[$95 >> 2] = $92;
$96 = ($94 + 4) | 0;
$97 = $96;
HEAP32[$97 >> 2] = $93;
$98 = ($in + 40) | 0;
$99 = $98;
$100 = $99;
$101 = HEAP32[$100 >> 2] | 0;
$102 = ($99 + 4) | 0;
$103 = $102;
$104 = HEAP32[$103 >> 2] | 0;
$105 = ($output + 40) | 0;
$106 = $105;
$107 = $106;
$108 = HEAP32[$107 >> 2] | 0;
$109 = ($106 + 4) | 0;
$110 = $109;
$111 = HEAP32[$110 >> 2] | 0;
$112 = _i64Subtract($101 | 0, $104 | 0, $108 | 0, $111 | 0) | 0;
$113 = tempRet0;
$114 = $105;
$115 = $114;
HEAP32[$115 >> 2] = $112;
$116 = ($114 + 4) | 0;
$117 = $116;
HEAP32[$117 >> 2] = $113;
$118 = ($in + 48) | 0;
$119 = $118;
$120 = $119;
$121 = HEAP32[$120 >> 2] | 0;
$122 = ($119 + 4) | 0;
$123 = $122;
$124 = HEAP32[$123 >> 2] | 0;
$125 = ($output + 48) | 0;
$126 = $125;
$127 = $126;
$128 = HEAP32[$127 >> 2] | 0;
$129 = ($126 + 4) | 0;
$130 = $129;
$131 = HEAP32[$130 >> 2] | 0;
$132 = _i64Subtract($121 | 0, $124 | 0, $128 | 0, $131 | 0) | 0;
$133 = tempRet0;
$134 = $125;
$135 = $134;
HEAP32[$135 >> 2] = $132;
$136 = ($134 + 4) | 0;
$137 = $136;
HEAP32[$137 >> 2] = $133;
$138 = ($in + 56) | 0;
$139 = $138;
$140 = $139;
$141 = HEAP32[$140 >> 2] | 0;
$142 = ($139 + 4) | 0;
$143 = $142;
$144 = HEAP32[$143 >> 2] | 0;
$145 = ($output + 56) | 0;
$146 = $145;
$147 = $146;
$148 = HEAP32[$147 >> 2] | 0;
$149 = ($146 + 4) | 0;
$150 = $149;
$151 = HEAP32[$150 >> 2] | 0;
$152 = _i64Subtract($141 | 0, $144 | 0, $148 | 0, $151 | 0) | 0;
$153 = tempRet0;
$154 = $145;
$155 = $154;
HEAP32[$155 >> 2] = $152;
$156 = ($154 + 4) | 0;
$157 = $156;
HEAP32[$157 >> 2] = $153;
$158 = ($in + 64) | 0;
$159 = $158;
$160 = $159;
$161 = HEAP32[$160 >> 2] | 0;
$162 = ($159 + 4) | 0;
$163 = $162;
$164 = HEAP32[$163 >> 2] | 0;
$165 = ($output + 64) | 0;
$166 = $165;
$167 = $166;
$168 = HEAP32[$167 >> 2] | 0;
$169 = ($166 + 4) | 0;
$170 = $169;
$171 = HEAP32[$170 >> 2] | 0;
$172 = _i64Subtract($161 | 0, $164 | 0, $168 | 0, $171 | 0) | 0;
$173 = tempRet0;
$174 = $165;
$175 = $174;
HEAP32[$175 >> 2] = $172;
$176 = ($174 + 4) | 0;
$177 = $176;
HEAP32[$177 >> 2] = $173;
$178 = ($in + 72) | 0;
$179 = $178;
$180 = $179;
$181 = HEAP32[$180 >> 2] | 0;
$182 = ($179 + 4) | 0;
$183 = $182;
$184 = HEAP32[$183 >> 2] | 0;
$185 = ($output + 72) | 0;
$186 = $185;
$187 = $186;
$188 = HEAP32[$187 >> 2] | 0;
$189 = ($186 + 4) | 0;
$190 = $189;
$191 = HEAP32[$190 >> 2] | 0;
$192 = _i64Subtract($181 | 0, $184 | 0, $188 | 0, $191 | 0) | 0;
$193 = tempRet0;
$194 = $185;
$195 = $194;
HEAP32[$195 >> 2] = $192;
$196 = ($194 + 4) | 0;
$197 = $196;
HEAP32[$197 >> 2] = $193;
STACKTOP = sp;
return;
}
function _fscalar_product($output, $in) {
$output = $output | 0;
$in = $in | 0;
var $0 = 0,
$1 = 0,
$10 = 0,
$100 = 0,
$101 = 0,
$102 = 0,
$103 = 0,
$104 = 0,
$105 = 0,
$106 = 0,
$107 = 0,
$108 = 0,
$109 = 0,
$11 = 0,
$110 = 0,
$111 = 0,
$112 = 0,
$113 = 0,
$114 = 0,
$115 = 0;
var $116 = 0,
$117 = 0,
$118 = 0,
$119 = 0,
$12 = 0,
$120 = 0,
$121 = 0,
$122 = 0,
$123 = 0,
$124 = 0,
$125 = 0,
$126 = 0,
$127 = 0,
$128 = 0,
$129 = 0,
$13 = 0,
$130 = 0,
$131 = 0,
$132 = 0,
$133 = 0;
var $134 = 0,
$135 = 0,
$136 = 0,
$137 = 0,
$14 = 0,
$15 = 0,
$16 = 0,
$17 = 0,
$18 = 0,
$19 = 0,
$2 = 0,
$20 = 0,
$21 = 0,
$22 = 0,
$23 = 0,
$24 = 0,
$25 = 0,
$26 = 0,
$27 = 0,
$28 = 0;
var $29 = 0,
$3 = 0,
$30 = 0,
$31 = 0,
$32 = 0,
$33 = 0,
$34 = 0,
$35 = 0,
$36 = 0,
$37 = 0,
$38 = 0,
$39 = 0,
$4 = 0,
$40 = 0,
$41 = 0,
$42 = 0,
$43 = 0,
$44 = 0,
$45 = 0,
$46 = 0;
var $47 = 0,
$48 = 0,
$49 = 0,
$5 = 0,
$50 = 0,
$51 = 0,
$52 = 0,
$53 = 0,
$54 = 0,
$55 = 0,
$56 = 0,
$57 = 0,
$58 = 0,
$59 = 0,
$6 = 0,
$60 = 0,
$61 = 0,
$62 = 0,
$63 = 0,
$64 = 0;
var $65 = 0,
$66 = 0,
$67 = 0,
$68 = 0,
$69 = 0,
$7 = 0,
$70 = 0,
$71 = 0,
$72 = 0,
$73 = 0,
$74 = 0,
$75 = 0,
$76 = 0,
$77 = 0,
$78 = 0,
$79 = 0,
$8 = 0,
$80 = 0,
$81 = 0,
$82 = 0;
var $83 = 0,
$84 = 0,
$85 = 0,
$86 = 0,
$87 = 0,
$88 = 0,
$89 = 0,
$9 = 0,
$90 = 0,
$91 = 0,
$92 = 0,
$93 = 0,
$94 = 0,
$95 = 0,
$96 = 0,
$97 = 0,
$98 = 0,
$99 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = $in;
$1 = $0;
$2 = HEAP32[$1 >> 2] | 0;
$3 = ($0 + 4) | 0;
$4 = $3;
$5 = HEAP32[$4 >> 2] | 0;
$6 = ___muldi3($2 | 0, $5 | 0, 121665, 0) | 0;
$7 = tempRet0;
$8 = $output;
$9 = $8;
HEAP32[$9 >> 2] = $6;
$10 = ($8 + 4) | 0;
$11 = $10;
HEAP32[$11 >> 2] = $7;
$12 = ($in + 8) | 0;
$13 = $12;
$14 = $13;
$15 = HEAP32[$14 >> 2] | 0;
$16 = ($13 + 4) | 0;
$17 = $16;
$18 = HEAP32[$17 >> 2] | 0;
$19 = ___muldi3($15 | 0, $18 | 0, 121665, 0) | 0;
$20 = tempRet0;
$21 = ($output + 8) | 0;
$22 = $21;
$23 = $22;
HEAP32[$23 >> 2] = $19;
$24 = ($22 + 4) | 0;
$25 = $24;
HEAP32[$25 >> 2] = $20;
$26 = ($in + 16) | 0;
$27 = $26;
$28 = $27;
$29 = HEAP32[$28 >> 2] | 0;
$30 = ($27 + 4) | 0;
$31 = $30;
$32 = HEAP32[$31 >> 2] | 0;
$33 = ___muldi3($29 | 0, $32 | 0, 121665, 0) | 0;
$34 = tempRet0;
$35 = ($output + 16) | 0;
$36 = $35;
$37 = $36;
HEAP32[$37 >> 2] = $33;
$38 = ($36 + 4) | 0;
$39 = $38;
HEAP32[$39 >> 2] = $34;
$40 = ($in + 24) | 0;
$41 = $40;
$42 = $41;
$43 = HEAP32[$42 >> 2] | 0;
$44 = ($41 + 4) | 0;
$45 = $44;
$46 = HEAP32[$45 >> 2] | 0;
$47 = ___muldi3($43 | 0, $46 | 0, 121665, 0) | 0;
$48 = tempRet0;
$49 = ($output + 24) | 0;
$50 = $49;
$51 = $50;
HEAP32[$51 >> 2] = $47;
$52 = ($50 + 4) | 0;
$53 = $52;
HEAP32[$53 >> 2] = $48;
$54 = ($in + 32) | 0;
$55 = $54;
$56 = $55;
$57 = HEAP32[$56 >> 2] | 0;
$58 = ($55 + 4) | 0;
$59 = $58;
$60 = HEAP32[$59 >> 2] | 0;
$61 = ___muldi3($57 | 0, $60 | 0, 121665, 0) | 0;
$62 = tempRet0;
$63 = ($output + 32) | 0;
$64 = $63;
$65 = $64;
HEAP32[$65 >> 2] = $61;
$66 = ($64 + 4) | 0;
$67 = $66;
HEAP32[$67 >> 2] = $62;
$68 = ($in + 40) | 0;
$69 = $68;
$70 = $69;
$71 = HEAP32[$70 >> 2] | 0;
$72 = ($69 + 4) | 0;
$73 = $72;
$74 = HEAP32[$73 >> 2] | 0;
$75 = ___muldi3($71 | 0, $74 | 0, 121665, 0) | 0;
$76 = tempRet0;
$77 = ($output + 40) | 0;
$78 = $77;
$79 = $78;
HEAP32[$79 >> 2] = $75;
$80 = ($78 + 4) | 0;
$81 = $80;
HEAP32[$81 >> 2] = $76;
$82 = ($in + 48) | 0;
$83 = $82;
$84 = $83;
$85 = HEAP32[$84 >> 2] | 0;
$86 = ($83 + 4) | 0;
$87 = $86;
$88 = HEAP32[$87 >> 2] | 0;
$89 = ___muldi3($85 | 0, $88 | 0, 121665, 0) | 0;
$90 = tempRet0;
$91 = ($output + 48) | 0;
$92 = $91;
$93 = $92;
HEAP32[$93 >> 2] = $89;
$94 = ($92 + 4) | 0;
$95 = $94;
HEAP32[$95 >> 2] = $90;
$96 = ($in + 56) | 0;
$97 = $96;
$98 = $97;
$99 = HEAP32[$98 >> 2] | 0;
$100 = ($97 + 4) | 0;
$101 = $100;
$102 = HEAP32[$101 >> 2] | 0;
$103 = ___muldi3($99 | 0, $102 | 0, 121665, 0) | 0;
$104 = tempRet0;
$105 = ($output + 56) | 0;
$106 = $105;
$107 = $106;
HEAP32[$107 >> 2] = $103;
$108 = ($106 + 4) | 0;
$109 = $108;
HEAP32[$109 >> 2] = $104;
$110 = ($in + 64) | 0;
$111 = $110;
$112 = $111;
$113 = HEAP32[$112 >> 2] | 0;
$114 = ($111 + 4) | 0;
$115 = $114;
$116 = HEAP32[$115 >> 2] | 0;
$117 = ___muldi3($113 | 0, $116 | 0, 121665, 0) | 0;
$118 = tempRet0;
$119 = ($output + 64) | 0;
$120 = $119;
$121 = $120;
HEAP32[$121 >> 2] = $117;
$122 = ($120 + 4) | 0;
$123 = $122;
HEAP32[$123 >> 2] = $118;
$124 = ($in + 72) | 0;
$125 = $124;
$126 = $125;
$127 = HEAP32[$126 >> 2] | 0;
$128 = ($125 + 4) | 0;
$129 = $128;
$130 = HEAP32[$129 >> 2] | 0;
$131 = ___muldi3($127 | 0, $130 | 0, 121665, 0) | 0;
$132 = tempRet0;
$133 = ($output + 72) | 0;
$134 = $133;
$135 = $134;
HEAP32[$135 >> 2] = $131;
$136 = ($134 + 4) | 0;
$137 = $136;
HEAP32[$137 >> 2] = $132;
STACKTOP = sp;
return;
}
function _fsquare_inner($output, $in) {
$output = $output | 0;
$in = $in | 0;
var $0 = 0,
$1 = 0,
$10 = 0,
$100 = 0,
$1000 = 0,
$1001 = 0,
$1002 = 0,
$1003 = 0,
$1004 = 0,
$1005 = 0,
$1006 = 0,
$1007 = 0,
$1008 = 0,
$1009 = 0,
$101 = 0,
$1010 = 0,
$1011 = 0,
$1012 = 0,
$1013 = 0,
$1014 = 0;
var $1015 = 0,
$1016 = 0,
$1017 = 0,
$1018 = 0,
$1019 = 0,
$102 = 0,
$1020 = 0,
$1021 = 0,
$1022 = 0,
$1023 = 0,
$1024 = 0,
$1025 = 0,
$1026 = 0,
$1027 = 0,
$1028 = 0,
$1029 = 0,
$103 = 0,
$1030 = 0,
$1031 = 0,
$1032 = 0;
var $1033 = 0,
$1034 = 0,
$1035 = 0,
$1036 = 0,
$1037 = 0,
$1038 = 0,
$1039 = 0,
$104 = 0,
$1040 = 0,
$1041 = 0,
$1042 = 0,
$1043 = 0,
$1044 = 0,
$1045 = 0,
$1046 = 0,
$1047 = 0,
$1048 = 0,
$1049 = 0,
$105 = 0,
$1050 = 0;
var $1051 = 0,
$1052 = 0,
$1053 = 0,
$1054 = 0,
$1055 = 0,
$1056 = 0,
$1057 = 0,
$1058 = 0,
$1059 = 0,
$106 = 0,
$1060 = 0,
$1061 = 0,
$1062 = 0,
$1063 = 0,
$1064 = 0,
$1065 = 0,
$1066 = 0,
$1067 = 0,
$1068 = 0,
$1069 = 0;
var $107 = 0,
$1070 = 0,
$1071 = 0,
$1072 = 0,
$1073 = 0,
$1074 = 0,
$1075 = 0,
$1076 = 0,
$1077 = 0,
$1078 = 0,
$1079 = 0,
$108 = 0,
$1080 = 0,
$1081 = 0,
$1082 = 0,
$1083 = 0,
$1084 = 0,
$1085 = 0,
$1086 = 0,
$1087 = 0;
var $1088 = 0,
$1089 = 0,
$109 = 0,
$1090 = 0,
$1091 = 0,
$1092 = 0,
$1093 = 0,
$1094 = 0,
$1095 = 0,
$1096 = 0,
$1097 = 0,
$1098 = 0,
$1099 = 0,
$11 = 0,
$110 = 0,
$1100 = 0,
$1101 = 0,
$1102 = 0,
$1103 = 0,
$1104 = 0;
var $1105 = 0,
$1106 = 0,
$1107 = 0,
$1108 = 0,
$1109 = 0,
$111 = 0,
$1110 = 0,
$1111 = 0,
$1112 = 0,
$1113 = 0,
$1114 = 0,
$1115 = 0,
$1116 = 0,
$1117 = 0,
$1118 = 0,
$112 = 0,
$113 = 0,
$114 = 0,
$115 = 0,
$116 = 0;
var $117 = 0,
$118 = 0,
$119 = 0,
$12 = 0,
$120 = 0,
$121 = 0,
$122 = 0,
$123 = 0,
$124 = 0,
$125 = 0,
$126 = 0,
$127 = 0,
$128 = 0,
$129 = 0,
$13 = 0,
$130 = 0,
$131 = 0,
$132 = 0,
$133 = 0,
$134 = 0;
var $135 = 0,
$136 = 0,
$137 = 0,
$138 = 0,
$139 = 0,
$14 = 0,
$140 = 0,
$141 = 0,
$142 = 0,
$143 = 0,
$144 = 0,
$145 = 0,
$146 = 0,
$147 = 0,
$148 = 0,
$149 = 0,
$15 = 0,
$150 = 0,
$151 = 0,
$152 = 0;
var $153 = 0,
$154 = 0,
$155 = 0,
$156 = 0,
$157 = 0,
$158 = 0,
$159 = 0,
$16 = 0,
$160 = 0,
$161 = 0,
$162 = 0,
$163 = 0,
$164 = 0,
$165 = 0,
$166 = 0,
$167 = 0,
$168 = 0,
$169 = 0,
$17 = 0,
$170 = 0;
var $171 = 0,
$172 = 0,
$173 = 0,
$174 = 0,
$175 = 0,
$176 = 0,
$177 = 0,
$178 = 0,
$179 = 0,
$18 = 0,
$180 = 0,
$181 = 0,
$182 = 0,
$183 = 0,
$184 = 0,
$185 = 0,
$186 = 0,
$187 = 0,
$188 = 0,
$189 = 0;
var $19 = 0,
$190 = 0,
$191 = 0,
$192 = 0,
$193 = 0,
$194 = 0,
$195 = 0,
$196 = 0,
$197 = 0,
$198 = 0,
$199 = 0,
$2 = 0,
$20 = 0,
$200 = 0,
$201 = 0,
$202 = 0,
$203 = 0,
$204 = 0,
$205 = 0,
$206 = 0;
var $207 = 0,
$208 = 0,
$209 = 0,
$21 = 0,
$210 = 0,
$211 = 0,
$212 = 0,
$213 = 0,
$214 = 0,
$215 = 0,
$216 = 0,
$217 = 0,
$218 = 0,
$219 = 0,
$22 = 0,
$220 = 0,
$221 = 0,
$222 = 0,
$223 = 0,
$224 = 0;
var $225 = 0,
$226 = 0,
$227 = 0,
$228 = 0,
$229 = 0,
$23 = 0,
$230 = 0,
$231 = 0,
$232 = 0,
$233 = 0,
$234 = 0,
$235 = 0,
$236 = 0,
$237 = 0,
$238 = 0,
$239 = 0,
$24 = 0,
$240 = 0,
$241 = 0,
$242 = 0;
var $243 = 0,
$244 = 0,
$245 = 0,
$246 = 0,
$247 = 0,
$248 = 0,
$249 = 0,
$25 = 0,
$250 = 0,
$251 = 0,
$252 = 0,
$253 = 0,
$254 = 0,
$255 = 0,
$256 = 0,
$257 = 0,
$258 = 0,
$259 = 0,
$26 = 0,
$260 = 0;
var $261 = 0,
$262 = 0,
$263 = 0,
$264 = 0,
$265 = 0,
$266 = 0,
$267 = 0,
$268 = 0,
$269 = 0,
$27 = 0,
$270 = 0,
$271 = 0,
$272 = 0,
$273 = 0,
$274 = 0,
$275 = 0,
$276 = 0,
$277 = 0,
$278 = 0,
$279 = 0;
var $28 = 0,
$280 = 0,
$281 = 0,
$282 = 0,
$283 = 0,
$284 = 0,
$285 = 0,
$286 = 0,
$287 = 0,
$288 = 0,
$289 = 0,
$29 = 0,
$290 = 0,
$291 = 0,
$292 = 0,
$293 = 0,
$294 = 0,
$295 = 0,
$296 = 0,
$297 = 0;
var $298 = 0,
$299 = 0,
$3 = 0,
$30 = 0,
$300 = 0,
$301 = 0,
$302 = 0,
$303 = 0,
$304 = 0,
$305 = 0,
$306 = 0,
$307 = 0,
$308 = 0,
$309 = 0,
$31 = 0,
$310 = 0,
$311 = 0,
$312 = 0,
$313 = 0,
$314 = 0;
var $315 = 0,
$316 = 0,
$317 = 0,
$318 = 0,
$319 = 0,
$32 = 0,
$320 = 0,
$321 = 0,
$322 = 0,
$323 = 0,
$324 = 0,
$325 = 0,
$326 = 0,
$327 = 0,
$328 = 0,
$329 = 0,
$33 = 0,
$330 = 0,
$331 = 0,
$332 = 0;
var $333 = 0,
$334 = 0,
$335 = 0,
$336 = 0,
$337 = 0,
$338 = 0,
$339 = 0,
$34 = 0,
$340 = 0,
$341 = 0,
$342 = 0,
$343 = 0,
$344 = 0,
$345 = 0,
$346 = 0,
$347 = 0,
$348 = 0,
$349 = 0,
$35 = 0,
$350 = 0;
var $351 = 0,
$352 = 0,
$353 = 0,
$354 = 0,
$355 = 0,
$356 = 0,
$357 = 0,
$358 = 0,
$359 = 0,
$36 = 0,
$360 = 0,
$361 = 0,
$362 = 0,
$363 = 0,
$364 = 0,
$365 = 0,
$366 = 0,
$367 = 0,
$368 = 0,
$369 = 0;
var $37 = 0,
$370 = 0,
$371 = 0,
$372 = 0,
$373 = 0,
$374 = 0,
$375 = 0,
$376 = 0,
$377 = 0,
$378 = 0,
$379 = 0,
$38 = 0,
$380 = 0,
$381 = 0,
$382 = 0,
$383 = 0,
$384 = 0,
$385 = 0,
$386 = 0,
$387 = 0;
var $388 = 0,
$389 = 0,
$39 = 0,
$390 = 0,
$391 = 0,
$392 = 0,
$393 = 0,
$394 = 0,
$395 = 0,
$396 = 0,
$397 = 0,
$398 = 0,
$399 = 0,
$4 = 0,
$40 = 0,
$400 = 0,
$401 = 0,
$402 = 0,
$403 = 0,
$404 = 0;
var $405 = 0,
$406 = 0,
$407 = 0,
$408 = 0,
$409 = 0,
$41 = 0,
$410 = 0,
$411 = 0,
$412 = 0,
$413 = 0,
$414 = 0,
$415 = 0,
$416 = 0,
$417 = 0,
$418 = 0,
$419 = 0,
$42 = 0,
$420 = 0,
$421 = 0,
$422 = 0;
var $423 = 0,
$424 = 0,
$425 = 0,
$426 = 0,
$427 = 0,
$428 = 0,
$429 = 0,
$43 = 0,
$430 = 0,
$431 = 0,
$432 = 0,
$433 = 0,
$434 = 0,
$435 = 0,
$436 = 0,
$437 = 0,
$438 = 0,
$439 = 0,
$44 = 0,
$440 = 0;
var $441 = 0,
$442 = 0,
$443 = 0,
$444 = 0,
$445 = 0,
$446 = 0,
$447 = 0,
$448 = 0,
$449 = 0,
$45 = 0,
$450 = 0,
$451 = 0,
$452 = 0,
$453 = 0,
$454 = 0,
$455 = 0,
$456 = 0,
$457 = 0,
$458 = 0,
$459 = 0;
var $46 = 0,
$460 = 0,
$461 = 0,
$462 = 0,
$463 = 0,
$464 = 0,
$465 = 0,
$466 = 0,
$467 = 0,
$468 = 0,
$469 = 0,
$47 = 0,
$470 = 0,
$471 = 0,
$472 = 0,
$473 = 0,
$474 = 0,
$475 = 0,
$476 = 0,
$477 = 0;
var $478 = 0,
$479 = 0,
$48 = 0,
$480 = 0,
$481 = 0,
$482 = 0,
$483 = 0,
$484 = 0,
$485 = 0,
$486 = 0,
$487 = 0,
$488 = 0,
$489 = 0,
$49 = 0,
$490 = 0,
$491 = 0,
$492 = 0,
$493 = 0,
$494 = 0,
$495 = 0;
var $496 = 0,
$497 = 0,
$498 = 0,
$499 = 0,
$5 = 0,
$50 = 0,
$500 = 0,
$501 = 0,
$502 = 0,
$503 = 0,
$504 = 0,
$505 = 0,
$506 = 0,
$507 = 0,
$508 = 0,
$509 = 0,
$51 = 0,
$510 = 0,
$511 = 0,
$512 = 0;
var $513 = 0,
$514 = 0,
$515 = 0,
$516 = 0,
$517 = 0,
$518 = 0,
$519 = 0,
$52 = 0,
$520 = 0,
$521 = 0,
$522 = 0,
$523 = 0,
$524 = 0,
$525 = 0,
$526 = 0,
$527 = 0,
$528 = 0,
$529 = 0,
$53 = 0,
$530 = 0;
var $531 = 0,
$532 = 0,
$533 = 0,
$534 = 0,
$535 = 0,
$536 = 0,
$537 = 0,
$538 = 0,
$539 = 0,
$54 = 0,
$540 = 0,
$541 = 0,
$542 = 0,
$543 = 0,
$544 = 0,
$545 = 0,
$546 = 0,
$547 = 0,
$548 = 0,
$549 = 0;
var $55 = 0,
$550 = 0,
$551 = 0,
$552 = 0,
$553 = 0,
$554 = 0,
$555 = 0,
$556 = 0,
$557 = 0,
$558 = 0,
$559 = 0,
$56 = 0,
$560 = 0,
$561 = 0,
$562 = 0,
$563 = 0,
$564 = 0,
$565 = 0,
$566 = 0,
$567 = 0;
var $568 = 0,
$569 = 0,
$57 = 0,
$570 = 0,
$571 = 0,
$572 = 0,
$573 = 0,
$574 = 0,
$575 = 0,
$576 = 0,
$577 = 0,
$578 = 0,
$579 = 0,
$58 = 0,
$580 = 0,
$581 = 0,
$582 = 0,
$583 = 0,
$584 = 0,
$585 = 0;
var $586 = 0,
$587 = 0,
$588 = 0,
$589 = 0,
$59 = 0,
$590 = 0,
$591 = 0,
$592 = 0,
$593 = 0,
$594 = 0,
$595 = 0,
$596 = 0,
$597 = 0,
$598 = 0,
$599 = 0,
$6 = 0,
$60 = 0,
$600 = 0,
$601 = 0,
$602 = 0;
var $603 = 0,
$604 = 0,
$605 = 0,
$606 = 0,
$607 = 0,
$608 = 0,
$609 = 0,
$61 = 0,
$610 = 0,
$611 = 0,
$612 = 0,
$613 = 0,
$614 = 0,
$615 = 0,
$616 = 0,
$617 = 0,
$618 = 0,
$619 = 0,
$62 = 0,
$620 = 0;
var $621 = 0,
$622 = 0,
$623 = 0,
$624 = 0,
$625 = 0,
$626 = 0,
$627 = 0,
$628 = 0,
$629 = 0,
$63 = 0,
$630 = 0,
$631 = 0,
$632 = 0,
$633 = 0,
$634 = 0,
$635 = 0,
$636 = 0,
$637 = 0,
$638 = 0,
$639 = 0;
var $64 = 0,
$640 = 0,
$641 = 0,
$642 = 0,
$643 = 0,
$644 = 0,
$645 = 0,
$646 = 0,
$647 = 0,
$648 = 0,
$649 = 0,
$65 = 0,
$650 = 0,
$651 = 0,
$652 = 0,
$653 = 0,
$654 = 0,
$655 = 0,
$656 = 0,
$657 = 0;
var $658 = 0,
$659 = 0,
$66 = 0,
$660 = 0,
$661 = 0,
$662 = 0,
$663 = 0,
$664 = 0,
$665 = 0,
$666 = 0,
$667 = 0,
$668 = 0,
$669 = 0,
$67 = 0,
$670 = 0,
$671 = 0,
$672 = 0,
$673 = 0,
$674 = 0,
$675 = 0;
var $676 = 0,
$677 = 0,
$678 = 0,
$679 = 0,
$68 = 0,
$680 = 0,
$681 = 0,
$682 = 0,
$683 = 0,
$684 = 0,
$685 = 0,
$686 = 0,
$687 = 0,
$688 = 0,
$689 = 0,
$69 = 0,
$690 = 0,
$691 = 0,
$692 = 0,
$693 = 0;
var $694 = 0,
$695 = 0,
$696 = 0,
$697 = 0,
$698 = 0,
$699 = 0,
$7 = 0,
$70 = 0,
$700 = 0,
$701 = 0,
$702 = 0,
$703 = 0,
$704 = 0,
$705 = 0,
$706 = 0,
$707 = 0,
$708 = 0,
$709 = 0,
$71 = 0,
$710 = 0;
var $711 = 0,
$712 = 0,
$713 = 0,
$714 = 0,
$715 = 0,
$716 = 0,
$717 = 0,
$718 = 0,
$719 = 0,
$72 = 0,
$720 = 0,
$721 = 0,
$722 = 0,
$723 = 0,
$724 = 0,
$725 = 0,
$726 = 0,
$727 = 0,
$728 = 0,
$729 = 0;
var $73 = 0,
$730 = 0,
$731 = 0,
$732 = 0,
$733 = 0,
$734 = 0,
$735 = 0,
$736 = 0,
$737 = 0,
$738 = 0,
$739 = 0,
$74 = 0,
$740 = 0,
$741 = 0,
$742 = 0,
$743 = 0,
$744 = 0,
$745 = 0,
$746 = 0,
$747 = 0;
var $748 = 0,
$749 = 0,
$75 = 0,
$750 = 0,
$751 = 0,
$752 = 0,
$753 = 0,
$754 = 0,
$755 = 0,
$756 = 0,
$757 = 0,
$758 = 0,
$759 = 0,
$76 = 0,
$760 = 0,
$761 = 0,
$762 = 0,
$763 = 0,
$764 = 0,
$765 = 0;
var $766 = 0,
$767 = 0,
$768 = 0,
$769 = 0,
$77 = 0,
$770 = 0,
$771 = 0,
$772 = 0,
$773 = 0,
$774 = 0,
$775 = 0,
$776 = 0,
$777 = 0,
$778 = 0,
$779 = 0,
$78 = 0,
$780 = 0,
$781 = 0,
$782 = 0,
$783 = 0;
var $784 = 0,
$785 = 0,
$786 = 0,
$787 = 0,
$788 = 0,
$789 = 0,
$79 = 0,
$790 = 0,
$791 = 0,
$792 = 0,
$793 = 0,
$794 = 0,
$795 = 0,
$796 = 0,
$797 = 0,
$798 = 0,
$799 = 0,
$8 = 0,
$80 = 0,
$800 = 0;
var $801 = 0,
$802 = 0,
$803 = 0,
$804 = 0,
$805 = 0,
$806 = 0,
$807 = 0,
$808 = 0,
$809 = 0,
$81 = 0,
$810 = 0,
$811 = 0,
$812 = 0,
$813 = 0,
$814 = 0,
$815 = 0,
$816 = 0,
$817 = 0,
$818 = 0,
$819 = 0;
var $82 = 0,
$820 = 0,
$821 = 0,
$822 = 0,
$823 = 0,
$824 = 0,
$825 = 0,
$826 = 0,
$827 = 0,
$828 = 0,
$829 = 0,
$83 = 0,
$830 = 0,
$831 = 0,
$832 = 0,
$833 = 0,
$834 = 0,
$835 = 0,
$836 = 0,
$837 = 0;
var $838 = 0,
$839 = 0,
$84 = 0,
$840 = 0,
$841 = 0,
$842 = 0,
$843 = 0,
$844 = 0,
$845 = 0,
$846 = 0,
$847 = 0,
$848 = 0,
$849 = 0,
$85 = 0,
$850 = 0,
$851 = 0,
$852 = 0,
$853 = 0,
$854 = 0,
$855 = 0;
var $856 = 0,
$857 = 0,
$858 = 0,
$859 = 0,
$86 = 0,
$860 = 0,
$861 = 0,
$862 = 0,
$863 = 0,
$864 = 0,
$865 = 0,
$866 = 0,
$867 = 0,
$868 = 0,
$869 = 0,
$87 = 0,
$870 = 0,
$871 = 0,
$872 = 0,
$873 = 0;
var $874 = 0,
$875 = 0,
$876 = 0,
$877 = 0,
$878 = 0,
$879 = 0,
$88 = 0,
$880 = 0,
$881 = 0,
$882 = 0,
$883 = 0,
$884 = 0,
$885 = 0,
$886 = 0,
$887 = 0,
$888 = 0,
$889 = 0,
$89 = 0,
$890 = 0,
$891 = 0;
var $892 = 0,
$893 = 0,
$894 = 0,
$895 = 0,
$896 = 0,
$897 = 0,
$898 = 0,
$899 = 0,
$9 = 0,
$90 = 0,
$900 = 0,
$901 = 0,
$902 = 0,
$903 = 0,
$904 = 0,
$905 = 0,
$906 = 0,
$907 = 0,
$908 = 0,
$909 = 0;
var $91 = 0,
$910 = 0,
$911 = 0,
$912 = 0,
$913 = 0,
$914 = 0,
$915 = 0,
$916 = 0,
$917 = 0,
$918 = 0,
$919 = 0,
$92 = 0,
$920 = 0,
$921 = 0,
$922 = 0,
$923 = 0,
$924 = 0,
$925 = 0,
$926 = 0,
$927 = 0;
var $928 = 0,
$929 = 0,
$93 = 0,
$930 = 0,
$931 = 0,
$932 = 0,
$933 = 0,
$934 = 0,
$935 = 0,
$936 = 0,
$937 = 0,
$938 = 0,
$939 = 0,
$94 = 0,
$940 = 0,
$941 = 0,
$942 = 0,
$943 = 0,
$944 = 0,
$945 = 0;
var $946 = 0,
$947 = 0,
$948 = 0,
$949 = 0,
$95 = 0,
$950 = 0,
$951 = 0,
$952 = 0,
$953 = 0,
$954 = 0,
$955 = 0,
$956 = 0,
$957 = 0,
$958 = 0,
$959 = 0,
$96 = 0,
$960 = 0,
$961 = 0,
$962 = 0,
$963 = 0;
var $964 = 0,
$965 = 0,
$966 = 0,
$967 = 0,
$968 = 0,
$969 = 0,
$97 = 0,
$970 = 0,
$971 = 0,
$972 = 0,
$973 = 0,
$974 = 0,
$975 = 0,
$976 = 0,
$977 = 0,
$978 = 0,
$979 = 0,
$98 = 0,
$980 = 0,
$981 = 0;
var $982 = 0,
$983 = 0,
$984 = 0,
$985 = 0,
$986 = 0,
$987 = 0,
$988 = 0,
$989 = 0,
$99 = 0,
$990 = 0,
$991 = 0,
$992 = 0,
$993 = 0,
$994 = 0,
$995 = 0,
$996 = 0,
$997 = 0,
$998 = 0,
$999 = 0,
label = 0;
var sp = 0;
sp = STACKTOP;
$0 = $in;
$1 = $0;
$2 = HEAP32[$1 >> 2] | 0;
$3 = ($0 + 4) | 0;
$4 = $3;
$5 = HEAP32[$4 >> 2] | 0;
$6 = _bitshift64Ashr(0, $2 | 0, 32) | 0;
$7 = tempRet0;
$8 = ___muldi3($6 | 0, $7 | 0, $6 | 0, $7 | 0) | 0;
$9 = tempRet0;
$10 = $output;
$11 = $10;
HEAP32[$11 >> 2] = $8;
$12 = ($10 + 4) | 0;
$13 = $12;
HEAP32[$13 >> 2] = $9;
$14 = $in;
$15 = $14;
$16 = HEAP32[$15 >> 2] | 0;
$17 = ($14 + 4) | 0;
$18 = $17;
$19 = HEAP32[$18 >> 2] | 0;
$20 = _bitshift64Ashr(0, $16 | 0, 31) | 0;
$21 = tempRet0;
$22 = ($in + 8) | 0;
$23 = $22;
$24 = $23;
$25 = HEAP32[$24 >> 2] | 0;
$26 = ($23 + 4) | 0;
$27 = $26;
$28 = HEAP32[$27 >> 2] | 0;
$29 = _bitshift64Ashr(0, $25 | 0, 32) | 0;
$30 = tempRet0;
$31 = ___muldi3($29 | 0, $30 | 0, $20 | 0, $21 | 0) | 0;
$32 = tempRet0;
$33 = ($output + 8) | 0;
$34 = $33;
$35 = $34;
HEAP32[$35 >> 2] = $31;
$36 = ($34 + 4) | 0;
$37 = $36;
HEAP32[$37 >> 2] = $32;
$38 = $22;
$39 = $38;
$40 = HEAP32[$39 >> 2] | 0;
$41 = ($38 + 4) | 0;
$42 = $41;
$43 = HEAP32[$42 >> 2] | 0;
$44 = _bitshift64Ashr(0, $40 | 0, 32) | 0;
$45 = tempRet0;
$46 = ___muldi3($44 | 0, $45 | 0, $44 | 0, $45 | 0) | 0;
$47 = tempRet0;
$48 = $in;
$49 = $48;
$50 = HEAP32[$49 >> 2] | 0;
$51 = ($48 + 4) | 0;
$52 = $51;
$53 = HEAP32[$52 >> 2] | 0;
$54 = _bitshift64Ashr(0, $50 | 0, 32) | 0;
$55 = tempRet0;
$56 = ($in + 16) | 0;
$57 = $56;
$58 = $57;
$59 = HEAP32[$58 >> 2] | 0;
$60 = ($57 + 4) | 0;
$61 = $60;
$62 = HEAP32[$61 >> 2] | 0;
$63 = _bitshift64Ashr(0, $59 | 0, 32) | 0;
$64 = tempRet0;
$65 = ___muldi3($63 | 0, $64 | 0, $54 | 0, $55 | 0) | 0;
$66 = tempRet0;
$67 = _i64Add($65 | 0, $66 | 0, $46 | 0, $47 | 0) | 0;
$68 = tempRet0;
$69 = _bitshift64Shl($67 | 0, $68 | 0, 1) | 0;
$70 = tempRet0;
$71 = ($output + 16) | 0;
$72 = $71;
$73 = $72;
HEAP32[$73 >> 2] = $69;
$74 = ($72 + 4) | 0;
$75 = $74;
HEAP32[$75 >> 2] = $70;
$76 = $22;
$77 = $76;
$78 = HEAP32[$77 >> 2] | 0;
$79 = ($76 + 4) | 0;
$80 = $79;
$81 = HEAP32[$80 >> 2] | 0;
$82 = _bitshift64Ashr(0, $78 | 0, 32) | 0;
$83 = tempRet0;
$84 = $56;
$85 = $84;
$86 = HEAP32[$85 >> 2] | 0;
$87 = ($84 + 4) | 0;
$88 = $87;
$89 = HEAP32[$88 >> 2] | 0;
$90 = _bitshift64Ashr(0, $86 | 0, 32) | 0;
$91 = tempRet0;
$92 = ___muldi3($90 | 0, $91 | 0, $82 | 0, $83 | 0) | 0;
$93 = tempRet0;
$94 = $in;
$95 = $94;
$96 = HEAP32[$95 >> 2] | 0;
$97 = ($94 + 4) | 0;
$98 = $97;
$99 = HEAP32[$98 >> 2] | 0;
$100 = _bitshift64Ashr(0, $96 | 0, 32) | 0;
$101 = tempRet0;
$102 = ($in + 24) | 0;
$103 = $102;
$104 = $103;
$105 = HEAP32[$104 >> 2] | 0;
$106 = ($103 + 4) | 0;
$107 = $106;
$108 = HEAP32[$107 >> 2] | 0;
$109 = _bitshift64Ashr(0, $105 | 0, 32) | 0;
$110 = tempRet0;
$111 = ___muldi3($109 | 0, $110 | 0, $100 | 0, $101 | 0) | 0;
$112 = tempRet0;
$113 = _i64Add($111 | 0, $112 | 0, $92 | 0, $93 | 0) | 0;
$114 = tempRet0;
$115 = _bitshift64Shl($113 | 0, $114 | 0, 1) | 0;
$116 = tempRet0;
$117 = ($output + 24) | 0;
$118 = $117;
$119 = $118;
HEAP32[$119 >> 2] = $115;
$120 = ($118 + 4) | 0;
$121 = $120;
HEAP32[$121 >> 2] = $116;
$122 = $56;
$123 = $122;
$124 = HEAP32[$123 >> 2] | 0;
$125 = ($122 + 4) | 0;
$126 = $125;
$127 = HEAP32[$126 >> 2] | 0;
$128 = _bitshift64Ashr(0, $124 | 0, 32) | 0;
$129 = tempRet0;
$130 = ___muldi3($128 | 0, $129 | 0, $128 | 0, $129 | 0) | 0;
$131 = tempRet0;
$132 = $22;
$133 = $132;
$134 = HEAP32[$133 >> 2] | 0;
$135 = ($132 + 4) | 0;
$136 = $135;
$137 = HEAP32[$136 >> 2] | 0;
$138 = _bitshift64Ashr(0, $134 | 0, 30) | 0;
$139 = tempRet0;
$140 = $102;
$141 = $140;
$142 = HEAP32[$141 >> 2] | 0;
$143 = ($140 + 4) | 0;
$144 = $143;
$145 = HEAP32[$144 >> 2] | 0;
$146 = _bitshift64Ashr(0, $142 | 0, 32) | 0;
$147 = tempRet0;
$148 = ___muldi3($146 | 0, $147 | 0, $138 | 0, $139 | 0) | 0;
$149 = tempRet0;
$150 = _i64Add($148 | 0, $149 | 0, $130 | 0, $131 | 0) | 0;
$151 = tempRet0;
$152 = $in;
$153 = $152;
$154 = HEAP32[$153 >> 2] | 0;
$155 = ($152 + 4) | 0;
$156 = $155;
$157 = HEAP32[$156 >> 2] | 0;
$158 = _bitshift64Ashr(0, $154 | 0, 31) | 0;
$159 = tempRet0;
$160 = ($in + 32) | 0;
$161 = $160;
$162 = $161;
$163 = HEAP32[$162 >> 2] | 0;
$164 = ($161 + 4) | 0;
$165 = $164;
$166 = HEAP32[$165 >> 2] | 0;
$167 = _bitshift64Ashr(0, $163 | 0, 32) | 0;
$168 = tempRet0;
$169 = ___muldi3($167 | 0, $168 | 0, $158 | 0, $159 | 0) | 0;
$170 = tempRet0;
$171 = _i64Add($150 | 0, $151 | 0, $169 | 0, $170 | 0) | 0;
$172 = tempRet0;
$173 = ($output + 32) | 0;
$174 = $173;
$175 = $174;
HEAP32[$175 >> 2] = $171;
$176 = ($174 + 4) | 0;
$177 = $176;
HEAP32[$177 >> 2] = $172;
$178 = $56;
$179 = $178;
$180 = HEAP32[$179 >> 2] | 0;
$181 = ($178 + 4) | 0;
$182 = $181;
$183 = HEAP32[$182 >> 2] | 0;
$184 = _bitshift64Ashr(0, $180 | 0, 32) | 0;
$185 = tempRet0;
$186 = $102;
$187 = $186;
$188 = HEAP32[$187 >> 2] | 0;
$189 = ($186 + 4) | 0;
$190 = $189;
$191 = HEAP32[$190 >> 2] | 0;
$192 = _bitshift64Ashr(0, $188 | 0, 32) | 0;
$193 = tempRet0;
$194 = ___muldi3($192 | 0, $193 | 0, $184 | 0, $185 | 0) | 0;
$195 = tempRet0;
$196 = $22;
$197 = $196;
$198 = HEAP32[$197 >> 2] | 0;
$199 = ($196 + 4) | 0;
$200 = $199;
$201 = HEAP32[$200 >> 2] | 0;
$202 = _bitshift64Ashr(0, $198 | 0, 32) | 0;
$203 = tempRet0;
$204 = $160;
$205 = $204;
$206 = HEAP32[$205 >> 2] | 0;
$207 = ($204 + 4) | 0;
$208 = $207;
$209 = HEAP32[$208 >> 2] | 0;
$210 = _bitshift64Ashr(0, $206 | 0, 32) | 0;
$211 = tempRet0;
$212 = ___muldi3($210 | 0, $211 | 0, $202 | 0, $203 | 0) | 0;
$213 = tempRet0;
$214 = _i64Add($212 | 0, $213 | 0, $194 | 0, $195 | 0) | 0;
$215 = tempRet0;
$216 = $in;
$217 = $216;
$218 = HEAP32[$217 >> 2] | 0;
$219 = ($216 + 4) | 0;
$220 = $219;
$221 = HEAP32[$220 >> 2] | 0;
$222 = _bitshift64Ashr(0, $218 | 0, 32) | 0;
$223 = tempRet0;
$224 = ($in + 40) | 0;
$225 = $224;
$226 = $225;
$227 = HEAP32[$226 >> 2] | 0;
$228 = ($225 + 4) | 0;
$229 = $228;
$230 = HEAP32[$229 >> 2] | 0;
$231 = _bitshift64Ashr(0, $227 | 0, 32) | 0;
$232 = tempRet0;
$233 = ___muldi3($231 | 0, $232 | 0, $222 | 0, $223 | 0) | 0;
$234 = tempRet0;
$235 = _i64Add($214 | 0, $215 | 0, $233 | 0, $234 | 0) | 0;
$236 = tempRet0;
$237 = _bitshift64Shl($235 | 0, $236 | 0, 1) | 0;
$238 = tempRet0;
$239 = ($output + 40) | 0;
$240 = $239;
$241 = $240;
HEAP32[$241 >> 2] = $237;
$242 = ($240 + 4) | 0;
$243 = $242;
HEAP32[$243 >> 2] = $238;
$244 = $102;
$245 = $244;
$246 = HEAP32[$245 >> 2] | 0;
$247 = ($244 + 4) | 0;
$248 = $247;
$249 = HEAP32[$248 >> 2] | 0;
$250 = _bitshift64Ashr(0, $246 | 0, 32) | 0;
$251 = tempRet0;
$252 = ___muldi3($250 | 0, $251 | 0, $250 | 0, $251 | 0) | 0;
$253 = tempRet0;
$254 = $56;
$255 = $254;
$256 = HEAP32[$255 >> 2] | 0;
$257 = ($254 + 4) | 0;
$258 = $257;
$259 = HEAP32[$258 >> 2] | 0;
$260 = _bitshift64Ashr(0, $256 | 0, 32) | 0;
$261 = tempRet0;
$262 = $160;
$263 = $262;
$264 = HEAP32[$263 >> 2] | 0;
$265 = ($262 + 4) | 0;
$266 = $265;
$267 = HEAP32[$266 >> 2] | 0;
$268 = _bitshift64Ashr(0, $264 | 0, 32) | 0;
$269 = tempRet0;
$270 = ___muldi3($268 | 0, $269 | 0, $260 | 0, $261 | 0) | 0;
$271 = tempRet0;
$272 = _i64Add($270 | 0, $271 | 0, $252 | 0, $253 | 0) | 0;
$273 = tempRet0;
$274 = $in;
$275 = $274;
$276 = HEAP32[$275 >> 2] | 0;
$277 = ($274 + 4) | 0;
$278 = $277;
$279 = HEAP32[$278 >> 2] | 0;
$280 = _bitshift64Ashr(0, $276 | 0, 32) | 0;
$281 = tempRet0;
$282 = ($in + 48) | 0;
$283 = $282;
$284 = $283;
$285 = HEAP32[$284 >> 2] | 0;
$286 = ($283 + 4) | 0;
$287 = $286;
$288 = HEAP32[$287 >> 2] | 0;
$289 = _bitshift64Ashr(0, $285 | 0, 32) | 0;
$290 = tempRet0;
$291 = ___muldi3($289 | 0, $290 | 0, $280 | 0, $281 | 0) | 0;
$292 = tempRet0;
$293 = _i64Add($272 | 0, $273 | 0, $291 | 0, $292 | 0) | 0;
$294 = tempRet0;
$295 = $22;
$296 = $295;
$297 = HEAP32[$296 >> 2] | 0;
$298 = ($295 + 4) | 0;
$299 = $298;
$300 = HEAP32[$299 >> 2] | 0;
$301 = _bitshift64Ashr(0, $297 | 0, 31) | 0;
$302 = tempRet0;
$303 = $224;
$304 = $303;
$305 = HEAP32[$304 >> 2] | 0;
$306 = ($303 + 4) | 0;
$307 = $306;
$308 = HEAP32[$307 >> 2] | 0;
$309 = _bitshift64Ashr(0, $305 | 0, 32) | 0;
$310 = tempRet0;
$311 = ___muldi3($309 | 0, $310 | 0, $301 | 0, $302 | 0) | 0;
$312 = tempRet0;
$313 = _i64Add($293 | 0, $294 | 0, $311 | 0, $312 | 0) | 0;
$314 = tempRet0;
$315 = _bitshift64Shl($313 | 0, $314 | 0, 1) | 0;
$316 = tempRet0;
$317 = ($output + 48) | 0;
$318 = $317;
$319 = $318;
HEAP32[$319 >> 2] = $315;
$320 = ($318 + 4) | 0;
$321 = $320;
HEAP32[$321 >> 2] = $316;
$322 = $102;
$323 = $322;
$324 = HEAP32[$323 >> 2] | 0;
$325 = ($322 + 4) | 0;
$326 = $325;
$327 = HEAP32[$326 >> 2] | 0;
$328 = _bitshift64Ashr(0, $324 | 0, 32) | 0;
$329 = tempRet0;
$330 = $160;
$331 = $330;
$332 = HEAP32[$331 >> 2] | 0;
$333 = ($330 + 4) | 0;
$334 = $333;
$335 = HEAP32[$334 >> 2] | 0;
$336 = _bitshift64Ashr(0, $332 | 0, 32) | 0;
$337 = tempRet0;
$338 = ___muldi3($336 | 0, $337 | 0, $328 | 0, $329 | 0) | 0;
$339 = tempRet0;
$340 = $56;
$341 = $340;
$342 = HEAP32[$341 >> 2] | 0;
$343 = ($340 + 4) | 0;
$344 = $343;
$345 = HEAP32[$344 >> 2] | 0;
$346 = _bitshift64Ashr(0, $342 | 0, 32) | 0;
$347 = tempRet0;
$348 = $224;
$349 = $348;
$350 = HEAP32[$349 >> 2] | 0;
$351 = ($348 + 4) | 0;
$352 = $351;
$353 = HEAP32[$352 >> 2] | 0;
$354 = _bitshift64Ashr(0, $350 | 0, 32) | 0;
$355 = tempRet0;
$356 = ___muldi3($354 | 0, $355 | 0, $346 | 0, $347 | 0) | 0;
$357 = tempRet0;
$358 = _i64Add($356 | 0, $357 | 0, $338 | 0, $339 | 0) | 0;
$359 = tempRet0;
$360 = $22;
$361 = $360;
$362 = HEAP32[$361 >> 2] | 0;
$363 = ($360 + 4) | 0;
$364 = $363;
$365 = HEAP32[$364 >> 2] | 0;
$366 = _bitshift64Ashr(0, $362 | 0, 32) | 0;
$367 = tempRet0;
$368 = $282;
$369 = $368;
$370 = HEAP32[$369 >> 2] | 0;
$371 = ($368 + 4) | 0;
$372 = $371;
$373 = HEAP32[$372 >> 2] | 0;
$374 = _bitshift64Ashr(0, $370 | 0, 32) | 0;
$375 = tempRet0;
$376 = ___muldi3($374 | 0, $375 | 0, $366 | 0, $367 | 0) | 0;
$377 = tempRet0;
$378 = _i64Add($358 | 0, $359 | 0, $376 | 0, $377 | 0) | 0;
$379 = tempRet0;
$380 = $in;
$381 = $380;
$382 = HEAP32[$381 >> 2] | 0;
$383 = ($380 + 4) | 0;
$384 = $383;
$385 = HEAP32[$384 >> 2] | 0;
$386 = _bitshift64Ashr(0, $382 | 0, 32) | 0;
$387 = tempRet0;
$388 = ($in + 56) | 0;
$389 = $388;
$390 = $389;
$391 = HEAP32[$390 >> 2] | 0;
$392 = ($389 + 4) | 0;
$393 = $392;
$394 = HEAP32[$393 >> 2] | 0;
$395 = _bitshift64Ashr(0, $391 | 0, 32) | 0;
$396 = tempRet0;
$397 = ___muldi3($395 | 0, $396 | 0, $386 | 0, $387 | 0) | 0;
$398 = tempRet0;
$399 = _i64Add($378 | 0, $379 | 0, $397 | 0, $398 | 0) | 0;
$400 = tempRet0;
$401 = _bitshift64Shl($399 | 0, $400 | 0, 1) | 0;
$402 = tempRet0;
$403 = ($output + 56) | 0;
$404 = $403;
$405 = $404;
HEAP32[$405 >> 2] = $401;
$406 = ($404 + 4) | 0;
$407 = $406;
HEAP32[$407 >> 2] = $402;
$408 = $160;
$409 = $408;
$410 = HEAP32[$409 >> 2] | 0;
$411 = ($408 + 4) | 0;
$412 = $411;
$413 = HEAP32[$412 >> 2] | 0;
$414 = _bitshift64Ashr(0, $410 | 0, 32) | 0;
$415 = tempRet0;
$416 = ___muldi3($414 | 0, $415 | 0, $414 | 0, $415 | 0) | 0;
$417 = tempRet0;
$418 = $56;
$419 = $418;
$420 = HEAP32[$419 >> 2] | 0;
$421 = ($418 + 4) | 0;
$422 = $421;
$423 = HEAP32[$422 >> 2] | 0;
$424 = _bitshift64Ashr(0, $420 | 0, 32) | 0;
$425 = tempRet0;
$426 = $282;
$427 = $426;
$428 = HEAP32[$427 >> 2] | 0;
$429 = ($426 + 4) | 0;
$430 = $429;
$431 = HEAP32[$430 >> 2] | 0;
$432 = _bitshift64Ashr(0, $428 | 0, 32) | 0;
$433 = tempRet0;
$434 = ___muldi3($432 | 0, $433 | 0, $424 | 0, $425 | 0) | 0;
$435 = tempRet0;
$436 = $in;
$437 = $436;
$438 = HEAP32[$437 >> 2] | 0;
$439 = ($436 + 4) | 0;
$440 = $439;
$441 = HEAP32[$440 >> 2] | 0;
$442 = _bitshift64Ashr(0, $438 | 0, 32) | 0;
$443 = tempRet0;
$444 = ($in + 64) | 0;
$445 = $444;
$446 = $445;
$447 = HEAP32[$446 >> 2] | 0;
$448 = ($445 + 4) | 0;
$449 = $448;
$450 = HEAP32[$449 >> 2] | 0;
$451 = _bitshift64Ashr(0, $447 | 0, 32) | 0;
$452 = tempRet0;
$453 = ___muldi3($451 | 0, $452 | 0, $442 | 0, $443 | 0) | 0;
$454 = tempRet0;
$455 = _i64Add($453 | 0, $454 | 0, $434 | 0, $435 | 0) | 0;
$456 = tempRet0;
$457 = $22;
$458 = $457;
$459 = HEAP32[$458 >> 2] | 0;
$460 = ($457 + 4) | 0;
$461 = $460;
$462 = HEAP32[$461 >> 2] | 0;
$463 = _bitshift64Ashr(0, $459 | 0, 32) | 0;
$464 = tempRet0;
$465 = $388;
$466 = $465;
$467 = HEAP32[$466 >> 2] | 0;
$468 = ($465 + 4) | 0;
$469 = $468;
$470 = HEAP32[$469 >> 2] | 0;
$471 = _bitshift64Ashr(0, $467 | 0, 32) | 0;
$472 = tempRet0;
$473 = ___muldi3($471 | 0, $472 | 0, $463 | 0, $464 | 0) | 0;
$474 = tempRet0;
$475 = $102;
$476 = $475;
$477 = HEAP32[$476 >> 2] | 0;
$478 = ($475 + 4) | 0;
$479 = $478;
$480 = HEAP32[$479 >> 2] | 0;
$481 = _bitshift64Ashr(0, $477 | 0, 32) | 0;
$482 = tempRet0;
$483 = $224;
$484 = $483;
$485 = HEAP32[$484 >> 2] | 0;
$486 = ($483 + 4) | 0;
$487 = $486;
$488 = HEAP32[$487 >> 2] | 0;
$489 = _bitshift64Ashr(0, $485 | 0, 32) | 0;
$490 = tempRet0;
$491 = ___muldi3($489 | 0, $490 | 0, $481 | 0, $482 | 0) | 0;
$492 = tempRet0;
$493 = _i64Add($491 | 0, $492 | 0, $473 | 0, $474 | 0) | 0;
$494 = tempRet0;
$495 = _bitshift64Shl($493 | 0, $494 | 0, 1) | 0;
$496 = tempRet0;
$497 = _i64Add($455 | 0, $456 | 0, $495 | 0, $496 | 0) | 0;
$498 = tempRet0;
$499 = _bitshift64Shl($497 | 0, $498 | 0, 1) | 0;
$500 = tempRet0;
$501 = _i64Add($499 | 0, $500 | 0, $416 | 0, $417 | 0) | 0;
$502 = tempRet0;
$503 = ($output + 64) | 0;
$504 = $503;
$505 = $504;
HEAP32[$505 >> 2] = $501;
$506 = ($504 + 4) | 0;
$507 = $506;
HEAP32[$507 >> 2] = $502;
$508 = $160;
$509 = $508;
$510 = HEAP32[$509 >> 2] | 0;
$511 = ($508 + 4) | 0;
$512 = $511;
$513 = HEAP32[$512 >> 2] | 0;
$514 = _bitshift64Ashr(0, $510 | 0, 32) | 0;
$515 = tempRet0;
$516 = $224;
$517 = $516;
$518 = HEAP32[$517 >> 2] | 0;
$519 = ($516 + 4) | 0;
$520 = $519;
$521 = HEAP32[$520 >> 2] | 0;
$522 = _bitshift64Ashr(0, $518 | 0, 32) | 0;
$523 = tempRet0;
$524 = ___muldi3($522 | 0, $523 | 0, $514 | 0, $515 | 0) | 0;
$525 = tempRet0;
$526 = $102;
$527 = $526;
$528 = HEAP32[$527 >> 2] | 0;
$529 = ($526 + 4) | 0;
$530 = $529;
$531 = HEAP32[$530 >> 2] | 0;
$532 = _bitshift64Ashr(0, $528 | 0, 32) | 0;
$533 = tempRet0;
$534 = $282;
$535 = $534;
$536 = HEAP32[$535 >> 2] | 0;
$537 = ($534 + 4) | 0;
$538 = $537;
$539 = HEAP32[$538 >> 2] | 0;
$540 = _bitshift64Ashr(0, $536 | 0, 32) | 0;
$541 = tempRet0;
$542 = ___muldi3($540 | 0, $541 | 0, $532 | 0, $533 | 0) | 0;
$543 = tempRet0;
$544 = _i64Add($542 | 0, $543 | 0, $524 | 0, $525 | 0) | 0;
$545 = tempRet0;
$546 = $56;
$547 = $546;
$548 = HEAP32[$547 >> 2] | 0;
$549 = ($546 + 4) | 0;
$550 = $549;
$551 = HEAP32[$550 >> 2] | 0;
$552 = _bitshift64Ashr(0, $548 | 0, 32) | 0;
$553 = tempRet0;
$554 = $388;
$555 = $554;
$556 = HEAP32[$555 >> 2] | 0;
$557 = ($554 + 4) | 0;
$558 = $557;
$559 = HEAP32[$558 >> 2] | 0;
$560 = _bitshift64Ashr(0, $556 | 0, 32) | 0;
$561 = tempRet0;
$562 = ___muldi3($560 | 0, $561 | 0, $552 | 0, $553 | 0) | 0;
$563 = tempRet0;
$564 = _i64Add($544 | 0, $545 | 0, $562 | 0, $563 | 0) | 0;
$565 = tempRet0;
$566 = $22;
$567 = $566;
$568 = HEAP32[$567 >> 2] | 0;
$569 = ($566 + 4) | 0;
$570 = $569;
$571 = HEAP32[$570 >> 2] | 0;
$572 = _bitshift64Ashr(0, $568 | 0, 32) | 0;
$573 = tempRet0;
$574 = $444;
$575 = $574;
$576 = HEAP32[$575 >> 2] | 0;
$577 = ($574 + 4) | 0;
$578 = $577;
$579 = HEAP32[$578 >> 2] | 0;
$580 = _bitshift64Ashr(0, $576 | 0, 32) | 0;
$581 = tempRet0;
$582 = ___muldi3($580 | 0, $581 | 0, $572 | 0, $573 | 0) | 0;
$583 = tempRet0;
$584 = _i64Add($564 | 0, $565 | 0, $582 | 0, $583 | 0) | 0;
$585 = tempRet0;
$586 = $in;
$587 = $586;
$588 = HEAP32[$587 >> 2] | 0;
$589 = ($586 + 4) | 0;
$590 = $589;
$591 = HEAP32[$590 >> 2] | 0;
$592 = _bitshift64Ashr(0, $588 | 0, 32) | 0;
$593 = tempRet0;
$594 = ($in + 72) | 0;
$595 = $594;
$596 = $595;
$597 = HEAP32[$596 >> 2] | 0;
$598 = ($595 + 4) | 0;
$599 = $598;
$600 = HEAP32[$599 >> 2] | 0;
$601 = _bitshift64Ashr(0, $597 | 0, 32) | 0;
$602 = tempRet0;
$603 = ___muldi3($601 | 0, $602 | 0, $592 | 0, $593 | 0) | 0;
$604 = tempRet0;
$605 = _i64Add($584 | 0, $585 | 0, $603 | 0, $604 | 0) | 0;
$606 = tempRet0;
$607 = _bitshift64Shl($605 | 0, $606 | 0, 1) | 0;
$608 = tempRet0;
$609 = ($output + 72) | 0;
$610 = $609;
$611 = $610;
HEAP32[$611 >> 2] = $607;
$612 = ($610 + 4) | 0;
$613 = $612;
HEAP32[$613 >> 2] = $608;
$614 = $224;
$615 = $614;
$616 = HEAP32[$615 >> 2] | 0;
$617 = ($614 + 4) | 0;
$618 = $617;
$619 = HEAP32[$618 >> 2] | 0;
$620 = _bitshift64Ashr(0, $616 | 0, 32) | 0;
$621 = tempRet0;
$622 = ___muldi3($620 | 0, $621 | 0, $620 | 0, $621 | 0) | 0;
$623 = tempRet0;
$624 = $160;
$625 = $624;
$626 = HEAP32[$625 >> 2] | 0;
$627 = ($624 + 4) | 0;
$628 = $627;
$629 = HEAP32[$628 >> 2] | 0;
$630 = _bitshift64Ashr(0, $626 | 0, 32) | 0;
$631 = tempRet0;
$632 = $282;
$633 = $632;
$634 = HEAP32[$633 >> 2] | 0;
$635 = ($632 + 4) | 0;
$636 = $635;
$637 = HEAP32[$636 >> 2] | 0;
$638 = _bitshift64Ashr(0, $634 | 0, 32) | 0;
$639 = tempRet0;
$640 = ___muldi3($638 | 0, $639 | 0, $630 | 0, $631 | 0) | 0;
$641 = tempRet0;
$642 = _i64Add($640 | 0, $641 | 0, $622 | 0, $623 | 0) | 0;
$643 = tempRet0;
$644 = $56;
$645 = $644;
$646 = HEAP32[$645 >> 2] | 0;
$647 = ($644 + 4) | 0;
$648 = $647;
$649 = HEAP32[$648 >> 2] | 0;
$650 = _bitshift64Ashr(0, $646 | 0, 32) | 0;
$651 = tempRet0;
$652 = $444;
$653 = $652;
$654 = HEAP32[$653 >> 2] | 0;
$655 = ($652 + 4) | 0;
$656 = $655;
$657 = HEAP32[$656 >> 2] | 0;
$658 = _bitshift64Ashr(0, $654 | 0, 32) | 0;
$659 = tempRet0;
$660 = ___muldi3($658 | 0, $659 | 0, $650 | 0, $651 | 0) | 0;
$661 = tempRet0;
$662 = _i64Add($642 | 0, $643 | 0, $660 | 0, $661 | 0) | 0;
$663 = tempRet0;
$664 = $102;
$665 = $664;
$666 = HEAP32[$665 >> 2] | 0;
$667 = ($664 + 4) | 0;
$668 = $667;
$669 = HEAP32[$668 >> 2] | 0;
$670 = _bitshift64Ashr(0, $666 | 0, 32) | 0;
$671 = tempRet0;
$672 = $388;
$673 = $672;
$674 = HEAP32[$673 >> 2] | 0;
$675 = ($672 + 4) | 0;
$676 = $675;
$677 = HEAP32[$676 >> 2] | 0;
$678 = _bitshift64Ashr(0, $674 | 0, 32) | 0;
$679 = tempRet0;
$680 = ___muldi3($678 | 0, $679 | 0, $670 | 0, $671 | 0) | 0;
$681 = tempRet0;
$682 = $22;
$683 = $682;
$684 = HEAP32[$683 >> 2] | 0;
$685 = ($682 + 4) | 0;
$686 = $685;
$687 = HEAP32[$686 >> 2] | 0;
$688 = _bitshift64Ashr(0, $684 | 0, 32) | 0;
$689 = tempRet0;
$690 = $594;
$691 = $690;
$692 = HEAP32[$691 >> 2] | 0;
$693 = ($690 + 4) | 0;
$694 = $693;
$695 = HEAP32[$694 >> 2] | 0;
$696 = _bitshift64Ashr(0, $692 | 0, 32) | 0;
$697 = tempRet0;
$698 = ___muldi3($696 | 0, $697 | 0, $688 | 0, $689 | 0) | 0;
$699 = tempRet0;
$700 = _i64Add($698 | 0, $699 | 0, $680 | 0, $681 | 0) | 0;
$701 = tempRet0;
$702 = _bitshift64Shl($700 | 0, $701 | 0, 1) | 0;
$703 = tempRet0;
$704 = _i64Add($662 | 0, $663 | 0, $702 | 0, $703 | 0) | 0;
$705 = tempRet0;
$706 = _bitshift64Shl($704 | 0, $705 | 0, 1) | 0;
$707 = tempRet0;
$708 = ($output + 80) | 0;
$709 = $708;
$710 = $709;
HEAP32[$710 >> 2] = $706;
$711 = ($709 + 4) | 0;
$712 = $711;
HEAP32[$712 >> 2] = $707;
$713 = $224;
$714 = $713;
$715 = HEAP32[$714 >> 2] | 0;
$716 = ($713 + 4) | 0;
$717 = $716;
$718 = HEAP32[$717 >> 2] | 0;
$719 = _bitshift64Ashr(0, $715 | 0, 32) | 0;
$720 = tempRet0;
$721 = $282;
$722 = $721;
$723 = HEAP32[$722 >> 2] | 0;
$724 = ($721 + 4) | 0;
$725 = $724;
$726 = HEAP32[$725 >> 2] | 0;
$727 = _bitshift64Ashr(0, $723 | 0, 32) | 0;
$728 = tempRet0;
$729 = ___muldi3($727 | 0, $728 | 0, $719 | 0, $720 | 0) | 0;
$730 = tempRet0;
$731 = $160;
$732 = $731;
$733 = HEAP32[$732 >> 2] | 0;
$734 = ($731 + 4) | 0;
$735 = $734;
$736 = HEAP32[$735 >> 2] | 0;
$737 = _bitshift64Ashr(0, $733 | 0, 32) | 0;
$738 = tempRet0;
$739 = $388;
$740 = $739;
$741 = HEAP32[$740 >> 2] | 0;
$742 = ($739 + 4) | 0;
$743 = $742;
$744 = HEAP32[$743 >> 2] | 0;
$745 = _bitshift64Ashr(0, $741 | 0, 32) | 0;
$746 = tempRet0;
$747 = ___muldi3($745 | 0, $746 | 0, $737 | 0, $738 | 0) | 0;
$748 = tempRet0;
$749 = _i64Add($747 | 0, $748 | 0, $729 | 0, $730 | 0) | 0;
$750 = tempRet0;
$751 = $102;
$752 = $751;
$753 = HEAP32[$752 >> 2] | 0;
$754 = ($751 + 4) | 0;
$755 = $754;
$756 = HEAP32[$755 >> 2] | 0;
$757 = _bitshift64Ashr(0, $753 | 0, 32) | 0;
$758 = tempRet0;
$759 = $444;
$760 = $759;
$761 = HEAP32[$760 >> 2] | 0;
$762 = ($759 + 4) | 0;
$763 = $762;
$764 = HEAP32[$763 >> 2] | 0;
$765 = _bitshift64Ashr(0, $761 | 0, 32) | 0;
$766 = tempRet0;
$767 = ___muldi3($765 | 0, $766 | 0, $757 | 0, $758 | 0) | 0;
$768 = tempRet0;
$769 = _i64Add($749 | 0, $750 | 0, $767 | 0, $768 | 0) | 0;
$770 = tempRet0;
$771 = $56;
$772 = $771;
$773 = HEAP32[$772 >> 2] | 0;
$774 = ($771 + 4) | 0;
$775 = $774;
$776 = HEAP32[$775 >> 2] | 0;
$777 = _bitshift64Ashr(0, $773 | 0, 32) | 0;
$778 = tempRet0;
$779 = $594;
$780 = $779;
$781 = HEAP32[$780 >> 2] | 0;
$782 = ($779 + 4) | 0;
$783 = $782;
$784 = HEAP32[$783 >> 2] | 0;
$785 = _bitshift64Ashr(0, $781 | 0, 32) | 0;
$786 = tempRet0;
$787 = ___muldi3($785 | 0, $786 | 0, $777 | 0, $778 | 0) | 0;
$788 = tempRet0;
$789 = _i64Add($769 | 0, $770 | 0, $787 | 0, $788 | 0) | 0;
$790 = tempRet0;
$791 = _bitshift64Shl($789 | 0, $790 | 0, 1) | 0;
$792 = tempRet0;
$793 = ($output + 88) | 0;
$794 = $793;
$795 = $794;
HEAP32[$795 >> 2] = $791;
$796 = ($794 + 4) | 0;
$797 = $796;
HEAP32[$797 >> 2] = $792;
$798 = $282;
$799 = $798;
$800 = HEAP32[$799 >> 2] | 0;
$801 = ($798 + 4) | 0;
$802 = $801;
$803 = HEAP32[$802 >> 2] | 0;
$804 = _bitshift64Ashr(0, $800 | 0, 32) | 0;
$805 = tempRet0;
$806 = ___muldi3($804 | 0, $805 | 0, $804 | 0, $805 | 0) | 0;
$807 = tempRet0;
$808 = $160;
$809 = $808;
$810 = HEAP32[$809 >> 2] | 0;
$811 = ($808 + 4) | 0;
$812 = $811;
$813 = HEAP32[$812 >> 2] | 0;
$814 = _bitshift64Ashr(0, $810 | 0, 32) | 0;
$815 = tempRet0;
$816 = $444;
$817 = $816;
$818 = HEAP32[$817 >> 2] | 0;
$819 = ($816 + 4) | 0;
$820 = $819;
$821 = HEAP32[$820 >> 2] | 0;
$822 = _bitshift64Ashr(0, $818 | 0, 32) | 0;
$823 = tempRet0;
$824 = ___muldi3($822 | 0, $823 | 0, $814 | 0, $815 | 0) | 0;
$825 = tempRet0;
$826 = $224;
$827 = $826;
$828 = HEAP32[$827 >> 2] | 0;
$829 = ($826 + 4) | 0;
$830 = $829;
$831 = HEAP32[$830 >> 2] | 0;
$832 = _bitshift64Ashr(0, $828 | 0, 32) | 0;
$833 = tempRet0;
$834 = $388;
$835 = $834;
$836 = HEAP32[$835 >> 2] | 0;
$837 = ($834 + 4) | 0;
$838 = $837;
$839 = HEAP32[$838 >> 2] | 0;
$840 = _bitshift64Ashr(0, $836 | 0, 32) | 0;
$841 = tempRet0;
$842 = ___muldi3($840 | 0, $841 | 0, $832 | 0, $833 | 0) | 0;
$843 = tempRet0;
$844 = $102;
$845 = $844;
$846 = HEAP32[$845 >> 2] | 0;
$847 = ($844 + 4) | 0;
$848 = $847;
$849 = HEAP32[$848 >> 2] | 0;
$850 = _bitshift64Ashr(0, $846 | 0, 32) | 0;
$851 = tempRet0;
$852 = $594;
$853 = $852;
$854 = HEAP32[$853 >> 2] | 0;
$855 = ($852 + 4) | 0;
$856 = $855;
$857 = HEAP32[$856 >> 2] | 0;
$858 = _bitshift64Ashr(0, $854 | 0, 32) | 0;
$859 = tempRet0;
$860 = ___muldi3($858 | 0, $859 | 0, $850 | 0, $851 | 0) | 0;
$861 = tempRet0;
$862 = _i64Add($860 | 0, $861 | 0, $842 | 0, $843 | 0) | 0;
$863 = tempRet0;
$864 = _bitshift64Shl($862 | 0, $863 | 0, 1) | 0;
$865 = tempRet0;
$866 = _i64Add($864 | 0, $865 | 0, $824 | 0, $825 | 0) | 0;
$867 = tempRet0;
$868 = _bitshift64Shl($866 | 0, $867 | 0, 1) | 0;
$869 = tempRet0;
$870 = _i64Add($868 | 0, $869 | 0, $806 | 0, $807 | 0) | 0;
$871 = tempRet0;
$872 = ($output + 96) | 0;
$873 = $872;
$874 = $873;
HEAP32[$874 >> 2] = $870;
$875 = ($873 + 4) | 0;
$876 = $875;
HEAP32[$876 >> 2] = $871;
$877 = $282;
$878 = $877;
$879 = HEAP32[$878 >> 2] | 0;
$880 = ($877 + 4) | 0;
$881 = $880;
$882 = HEAP32[$881 >> 2] | 0;
$883 = _bitshift64Ashr(0, $879 | 0, 32) | 0;
$884 = tempRet0;
$885 = $388;
$886 = $885;
$887 = HEAP32[$886 >> 2] | 0;
$888 = ($885 + 4) | 0;
$889 = $888;
$890 = HEAP32[$889 >> 2] | 0;
$891 = _bitshift64Ashr(0, $887 | 0, 32) | 0;
$892 = tempRet0;
$893 = ___muldi3($891 | 0, $892 | 0, $883 | 0, $884 | 0) | 0;
$894 = tempRet0;
$895 = $224;
$896 = $895;
$897 = HEAP32[$896 >> 2] | 0;
$898 = ($895 + 4) | 0;
$899 = $898;
$900 = HEAP32[$899 >> 2] | 0;
$901 = _bitshift64Ashr(0, $897 | 0, 32) | 0;
$902 = tempRet0;
$903 = $444;
$904 = $903;
$905 = HEAP32[$904 >> 2] | 0;
$906 = ($903 + 4) | 0;
$907 = $906;
$908 = HEAP32[$907 >> 2] | 0;
$909 = _bitshift64Ashr(0, $905 | 0, 32) | 0;
$910 = tempRet0;
$911 = ___muldi3($909 | 0, $910 | 0, $901 | 0, $902 | 0) | 0;
$912 = tempRet0;
$913 = _i64Add($911 | 0, $912 | 0, $893 | 0, $894 | 0) | 0;
$914 = tempRet0;
$915 = $160;
$916 = $915;
$917 = HEAP32[$916 >> 2] | 0;
$918 = ($915 + 4) | 0;
$919 = $918;
$920 = HEAP32[$919 >> 2] | 0;
$921 = _bitshift64Ashr(0, $917 | 0, 32) | 0;
$922 = tempRet0;
$923 = $594;
$924 = $923;
$925 = HEAP32[$924 >> 2] | 0;
$926 = ($923 + 4) | 0;
$927 = $926;
$928 = HEAP32[$927 >> 2] | 0;
$929 = _bitshift64Ashr(0, $925 | 0, 32) | 0;
$930 = tempRet0;
$931 = ___muldi3($929 | 0, $930 | 0, $921 | 0, $922 | 0) | 0;
$932 = tempRet0;
$933 = _i64Add($913 | 0, $914 | 0, $931 | 0, $932 | 0) | 0;
$934 = tempRet0;
$935 = _bitshift64Shl($933 | 0, $934 | 0, 1) | 0;
$936 = tempRet0;
$937 = ($output + 104) | 0;
$938 = $937;
$939 = $938;
HEAP32[$939 >> 2] = $935;
$940 = ($938 + 4) | 0;
$941 = $940;
HEAP32[$941 >> 2] = $936;
$942 = $388;
$943 = $942;
$944 = HEAP32[$943 >> 2] | 0;
$945 = ($942 + 4) | 0;
$946 = $945;
$947 = HEAP32[$946 >> 2] | 0;
$948 = _bitshift64Ashr(0, $944 | 0, 32) | 0;
$949 = tempRet0;
$950 = ___muldi3($948 | 0, $949 | 0, $948 | 0, $949 | 0) | 0;
$951 = tempRet0;
$952 = $282;
$953 = $952;
$954 = HEAP32[$953 >> 2] | 0;
$955 = ($952 + 4) | 0;
$956 = $955;
$957 = HEAP32[$956 >> 2] | 0;
$958 = _bitshift64Ashr(0, $954 | 0, 32) | 0;
$959 = tempRet0;
$960 = $444;
$961 = $960;
$962 = HEAP32[$961 >> 2] | 0;
$963 = ($960 + 4) | 0;
$964 = $963;
$965 = HEAP32[$964 >> 2] | 0;
$966 = _bitshift64Ashr(0, $962 | 0, 32) | 0;
$967 = tempRet0;
$968 = ___muldi3($966 | 0, $967 | 0, $958 | 0, $959 | 0) | 0;
$969 = tempRet0;
$970 = _i64Add($968 | 0, $969 | 0, $950 | 0, $951 | 0) | 0;
$971 = tempRet0;
$972 = $224;
$973 = $972;
$974 = HEAP32[$973 >> 2] | 0;
$975 = ($972 + 4) | 0;
$976 = $975;
$977 = HEAP32[$976 >> 2] | 0;
$978 = _bitshift64Ashr(0, $974 | 0, 31) | 0;
$979 = tempRet0;
$980 = $594;
$981 = $980;
$982 = HEAP32[$981 >> 2] | 0;
$983 = ($980 + 4) | 0;
$984 = $983;
$985 = HEAP32[$984 >> 2] | 0;
$986 = _bitshift64Ashr(0, $982 | 0, 32) | 0;
$987 = tempRet0;
$988 = ___muldi3($986 | 0, $987 | 0, $978 | 0, $979 | 0) | 0;
$989 = tempRet0;
$990 = _i64Add($970 | 0, $971 | 0, $988 | 0, $989 | 0) | 0;
$991 = tempRet0;
$992 = _bitshift64Shl($990 | 0, $991 | 0, 1) | 0;
$993 = tempRet0;
$994 = ($output + 112) | 0;
$995 = $994;
$996 = $995;
HEAP32[$996 >> 2] = $992;
$997 = ($995 + 4) | 0;
$998 = $997;
HEAP32[$998 >> 2] = $993;
$999 = $388;
$1000 = $999;
$1001 = HEAP32[$1000 >> 2] | 0;
$1002 = ($999 + 4) | 0;
$1003 = $1002;
$1004 = HEAP32[$1003 >> 2] | 0;
$1005 = _bitshift64Ashr(0, $1001 | 0, 32) | 0;
$1006 = tempRet0;
$1007 = $444;
$1008 = $1007;
$1009 = HEAP32[$1008 >> 2] | 0;
$1010 = ($1007 + 4) | 0;
$1011 = $1010;
$1012 = HEAP32[$1011 >> 2] | 0;
$1013 = _bitshift64Ashr(0, $1009 | 0, 32) | 0;
$1014 = tempRet0;
$1015 = ___muldi3($1013 | 0, $1014 | 0, $1005 | 0, $1006 | 0) | 0;
$1016 = tempRet0;
$1017 = $282;
$1018 = $1017;
$1019 = HEAP32[$1018 >> 2] | 0;
$1020 = ($1017 + 4) | 0;
$1021 = $1020;
$1022 = HEAP32[$1021 >> 2] | 0;
$1023 = _bitshift64Ashr(0, $1019 | 0, 32) | 0;
$1024 = tempRet0;
$1025 = $594;
$1026 = $1025;
$1027 = HEAP32[$1026 >> 2] | 0;
$1028 = ($1025 + 4) | 0;
$1029 = $1028;
$1030 = HEAP32[$1029 >> 2] | 0;
$1031 = _bitshift64Ashr(0, $1027 | 0, 32) | 0;
$1032 = tempRet0;
$1033 = ___muldi3($1031 | 0, $1032 | 0, $1023 | 0, $1024 | 0) | 0;
$1034 = tempRet0;
$1035 = _i64Add($1033 | 0, $1034 | 0, $1015 | 0, $1016 | 0) | 0;
$1036 = tempRet0;
$1037 = _bitshift64Shl($1035 | 0, $1036 | 0, 1) | 0;
$1038 = tempRet0;
$1039 = ($output + 120) | 0;
$1040 = $1039;
$1041 = $1040;
HEAP32[$1041 >> 2] = $1037;
$1042 = ($1040 + 4) | 0;
$1043 = $1042;
HEAP32[$1043 >> 2] = $1038;
$1044 = $444;
$1045 = $1044;
$1046 = HEAP32[$1045 >> 2] | 0;
$1047 = ($1044 + 4) | 0;
$1048 = $1047;
$1049 = HEAP32[$1048 >> 2] | 0;
$1050 = _bitshift64Ashr(0, $1046 | 0, 32) | 0;
$1051 = tempRet0;
$1052 = ___muldi3($1050 | 0, $1051 | 0, $1050 | 0, $1051 | 0) | 0;
$1053 = tempRet0;
$1054 = $388;
$1055 = $1054;
$1056 = HEAP32[$1055 >> 2] | 0;
$1057 = ($1054 + 4) | 0;
$1058 = $1057;
$1059 = HEAP32[$1058 >> 2] | 0;
$1060 = _bitshift64Ashr(0, $1056 | 0, 30) | 0;
$1061 = tempRet0;
$1062 = $594;
$1063 = $1062;
$1064 = HEAP32[$1063 >> 2] | 0;
$1065 = ($1062 + 4) | 0;
$1066 = $1065;
$1067 = HEAP32[$1066 >> 2] | 0;
$1068 = _bitshift64Ashr(0, $1064 | 0, 32) | 0;
$1069 = tempRet0;
$1070 = ___muldi3($1068 | 0, $1069 | 0, $1060 | 0, $1061 | 0) | 0;
$1071 = tempRet0;
$1072 = _i64Add($1070 | 0, $1071 | 0, $1052 | 0, $1053 | 0) | 0;
$1073 = tempRet0;
$1074 = ($output + 128) | 0;
$1075 = $1074;
$1076 = $1075;
HEAP32[$1076 >> 2] = $1072;
$1077 = ($1075 + 4) | 0;
$1078 = $1077;
HEAP32[$1078 >> 2] = $1073;
$1079 = $444;
$1080 = $1079;
$1081 = HEAP32[$1080 >> 2] | 0;
$1082 = ($1079 + 4) | 0;
$1083 = $1082;
$1084 = HEAP32[$1083 >> 2] | 0;
$1085 = _bitshift64Ashr(0, $1081 | 0, 31) | 0;
$1086 = tempRet0;
$1087 = $594;
$1088 = $1087;
$1089 = HEAP32[$1088 >> 2] | 0;
$1090 = ($1087 + 4) | 0;
$1091 = $1090;
$1092 = HEAP32[$1091 >> 2] | 0;
$1093 = _bitshift64Ashr(0, $1089 | 0, 32) | 0;
$1094 = tempRet0;
$1095 = ___muldi3($1093 | 0, $1094 | 0, $1085 | 0, $1086 | 0) | 0;
$1096 = tempRet0;
$1097 = ($output + 136) | 0;
$1098 = $1097;
$1099 = $1098;
HEAP32[$1099 >> 2] = $1095;
$1100 = ($1098 + 4) | 0;
$1101 = $1100;
HEAP32[$1101 >> 2] = $1096;
$1102 = $594;
$1103 = $1102;
$1104 = HEAP32[$1103 >> 2] | 0;
$1105 = ($1102 + 4) | 0;
$1106 = $1105;
$1107 = HEAP32[$1106 >> 2] | 0;
$1108 = _bitshift64Ashr(0, $1104 | 0, 32) | 0;
$1109 = tempRet0;
$1110 = _bitshift64Ashr(0, $1104 | 0, 31) | 0;
$1111 = tempRet0;
$1112 = ___muldi3($1110 | 0, $1111 | 0, $1108 | 0, $1109 | 0) | 0;
$1113 = tempRet0;
$1114 = ($output + 144) | 0;
$1115 = $1114;
$1116 = $1115;
HEAP32[$1116 >> 2] = $1112;
$1117 = ($1115 + 4) | 0;
$1118 = $1117;
HEAP32[$1118 >> 2] = $1113;
STACKTOP = sp;
return;
}
function _div_by_2_26($0, $1) {
$0 = $0 | 0;
$1 = $1 | 0;
var $2 = 0,
$3 = 0,
$4 = 0,
$5 = 0,
$6 = 0,
$7 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$2 = $1 >> 31;
$3 = $2 >>> 6;
$4 = _i64Add($3 | 0, 0, $0 | 0, $1 | 0) | 0;
$5 = tempRet0;
$6 = _bitshift64Ashr($4 | 0, $5 | 0, 26) | 0;
$7 = tempRet0;
tempRet0 = $7;
STACKTOP = sp;
return $6 | 0;
}
function _div_by_2_25($0, $1) {
$0 = $0 | 0;
$1 = $1 | 0;
var $2 = 0,
$3 = 0,
$4 = 0,
$5 = 0,
$6 = 0,
$7 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$2 = $1 >> 31;
$3 = $2 >>> 7;
$4 = _i64Add($3 | 0, 0, $0 | 0, $1 | 0) | 0;
$5 = tempRet0;
$6 = _bitshift64Ashr($4 | 0, $5 | 0, 25) | 0;
$7 = tempRet0;
tempRet0 = $7;
STACKTOP = sp;
return $6 | 0;
}
function _crypto_sign_ed25519_ref10_fe_0($h) {
$h = $h | 0;
var dest = 0,
label = 0,
sp = 0,
stop = 0;
sp = STACKTOP;
dest = ($h + 0) | 0;
stop = (dest + 40) | 0;
do {
HEAP32[dest >> 2] = 0 | 0;
dest = (dest + 4) | 0;
} while ((dest | 0) < (stop | 0));
STACKTOP = sp;
return;
}
function _crypto_sign_ed25519_ref10_fe_1($h) {
$h = $h | 0;
var $0 = 0,
dest = 0,
label = 0,
sp = 0,
stop = 0;
sp = STACKTOP;
HEAP32[$h >> 2] = 1;
$0 = ($h + 4) | 0;
dest = ($0 + 0) | 0;
stop = (dest + 36) | 0;
do {
HEAP32[dest >> 2] = 0 | 0;
dest = (dest + 4) | 0;
} while ((dest | 0) < (stop | 0));
STACKTOP = sp;
return;
}
function _crypto_sign_ed25519_ref10_fe_add($h, $f, $g) {
$h = $h | 0;
$f = $f | 0;
$g = $g | 0;
var $0 = 0,
$1 = 0,
$10 = 0,
$11 = 0,
$12 = 0,
$13 = 0,
$14 = 0,
$15 = 0,
$16 = 0,
$17 = 0,
$18 = 0,
$19 = 0,
$2 = 0,
$20 = 0,
$21 = 0,
$22 = 0,
$23 = 0,
$24 = 0,
$25 = 0,
$26 = 0;
var $27 = 0,
$28 = 0,
$29 = 0,
$3 = 0,
$30 = 0,
$31 = 0,
$32 = 0,
$33 = 0,
$34 = 0,
$35 = 0,
$36 = 0,
$37 = 0,
$38 = 0,
$39 = 0,
$4 = 0,
$40 = 0,
$41 = 0,
$42 = 0,
$43 = 0,
$44 = 0;
var $45 = 0,
$46 = 0,
$47 = 0,
$48 = 0,
$49 = 0,
$5 = 0,
$50 = 0,
$51 = 0,
$52 = 0,
$53 = 0,
$54 = 0,
$55 = 0,
$56 = 0,
$6 = 0,
$7 = 0,
$8 = 0,
$9 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = HEAP32[$f >> 2] | 0;
$1 = ($f + 4) | 0;
$2 = HEAP32[$1 >> 2] | 0;
$3 = ($f + 8) | 0;
$4 = HEAP32[$3 >> 2] | 0;
$5 = ($f + 12) | 0;
$6 = HEAP32[$5 >> 2] | 0;
$7 = ($f + 16) | 0;
$8 = HEAP32[$7 >> 2] | 0;
$9 = ($f + 20) | 0;
$10 = HEAP32[$9 >> 2] | 0;
$11 = ($f + 24) | 0;
$12 = HEAP32[$11 >> 2] | 0;
$13 = ($f + 28) | 0;
$14 = HEAP32[$13 >> 2] | 0;
$15 = ($f + 32) | 0;
$16 = HEAP32[$15 >> 2] | 0;
$17 = ($f + 36) | 0;
$18 = HEAP32[$17 >> 2] | 0;
$19 = HEAP32[$g >> 2] | 0;
$20 = ($g + 4) | 0;
$21 = HEAP32[$20 >> 2] | 0;
$22 = ($g + 8) | 0;
$23 = HEAP32[$22 >> 2] | 0;
$24 = ($g + 12) | 0;
$25 = HEAP32[$24 >> 2] | 0;
$26 = ($g + 16) | 0;
$27 = HEAP32[$26 >> 2] | 0;
$28 = ($g + 20) | 0;
$29 = HEAP32[$28 >> 2] | 0;
$30 = ($g + 24) | 0;
$31 = HEAP32[$30 >> 2] | 0;
$32 = ($g + 28) | 0;
$33 = HEAP32[$32 >> 2] | 0;
$34 = ($g + 32) | 0;
$35 = HEAP32[$34 >> 2] | 0;
$36 = ($g + 36) | 0;
$37 = HEAP32[$36 >> 2] | 0;
$38 = ($19 + $0) | 0;
$39 = ($21 + $2) | 0;
$40 = ($23 + $4) | 0;
$41 = ($25 + $6) | 0;
$42 = ($27 + $8) | 0;
$43 = ($29 + $10) | 0;
$44 = ($31 + $12) | 0;
$45 = ($33 + $14) | 0;
$46 = ($35 + $16) | 0;
$47 = ($37 + $18) | 0;
HEAP32[$h >> 2] = $38;
$48 = ($h + 4) | 0;
HEAP32[$48 >> 2] = $39;
$49 = ($h + 8) | 0;
HEAP32[$49 >> 2] = $40;
$50 = ($h + 12) | 0;
HEAP32[$50 >> 2] = $41;
$51 = ($h + 16) | 0;
HEAP32[$51 >> 2] = $42;
$52 = ($h + 20) | 0;
HEAP32[$52 >> 2] = $43;
$53 = ($h + 24) | 0;
HEAP32[$53 >> 2] = $44;
$54 = ($h + 28) | 0;
HEAP32[$54 >> 2] = $45;
$55 = ($h + 32) | 0;
HEAP32[$55 >> 2] = $46;
$56 = ($h + 36) | 0;
HEAP32[$56 >> 2] = $47;
STACKTOP = sp;
return;
}
function _crypto_sign_ed25519_ref10_fe_cmov($f, $g, $b) {
$f = $f | 0;
$g = $g | 0;
$b = $b | 0;
var $0 = 0,
$1 = 0,
$10 = 0,
$11 = 0,
$12 = 0,
$13 = 0,
$14 = 0,
$15 = 0,
$16 = 0,
$17 = 0,
$18 = 0,
$19 = 0,
$2 = 0,
$20 = 0,
$21 = 0,
$22 = 0,
$23 = 0,
$24 = 0,
$25 = 0,
$26 = 0;
var $27 = 0,
$28 = 0,
$29 = 0,
$3 = 0,
$30 = 0,
$31 = 0,
$32 = 0,
$33 = 0,
$34 = 0,
$35 = 0,
$36 = 0,
$37 = 0,
$38 = 0,
$39 = 0,
$4 = 0,
$40 = 0,
$41 = 0,
$42 = 0,
$43 = 0,
$44 = 0;
var $45 = 0,
$46 = 0,
$47 = 0,
$48 = 0,
$49 = 0,
$5 = 0,
$50 = 0,
$51 = 0,
$52 = 0,
$53 = 0,
$54 = 0,
$55 = 0,
$56 = 0,
$57 = 0,
$58 = 0,
$59 = 0,
$6 = 0,
$60 = 0,
$61 = 0,
$62 = 0;
var $63 = 0,
$64 = 0,
$65 = 0,
$66 = 0,
$67 = 0,
$68 = 0,
$7 = 0,
$8 = 0,
$9 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = HEAP32[$f >> 2] | 0;
$1 = ($f + 4) | 0;
$2 = HEAP32[$1 >> 2] | 0;
$3 = ($f + 8) | 0;
$4 = HEAP32[$3 >> 2] | 0;
$5 = ($f + 12) | 0;
$6 = HEAP32[$5 >> 2] | 0;
$7 = ($f + 16) | 0;
$8 = HEAP32[$7 >> 2] | 0;
$9 = ($f + 20) | 0;
$10 = HEAP32[$9 >> 2] | 0;
$11 = ($f + 24) | 0;
$12 = HEAP32[$11 >> 2] | 0;
$13 = ($f + 28) | 0;
$14 = HEAP32[$13 >> 2] | 0;
$15 = ($f + 32) | 0;
$16 = HEAP32[$15 >> 2] | 0;
$17 = ($f + 36) | 0;
$18 = HEAP32[$17 >> 2] | 0;
$19 = HEAP32[$g >> 2] | 0;
$20 = ($g + 4) | 0;
$21 = HEAP32[$20 >> 2] | 0;
$22 = ($g + 8) | 0;
$23 = HEAP32[$22 >> 2] | 0;
$24 = ($g + 12) | 0;
$25 = HEAP32[$24 >> 2] | 0;
$26 = ($g + 16) | 0;
$27 = HEAP32[$26 >> 2] | 0;
$28 = ($g + 20) | 0;
$29 = HEAP32[$28 >> 2] | 0;
$30 = ($g + 24) | 0;
$31 = HEAP32[$30 >> 2] | 0;
$32 = ($g + 28) | 0;
$33 = HEAP32[$32 >> 2] | 0;
$34 = ($g + 32) | 0;
$35 = HEAP32[$34 >> 2] | 0;
$36 = ($g + 36) | 0;
$37 = HEAP32[$36 >> 2] | 0;
$38 = $19 ^ $0;
$39 = $21 ^ $2;
$40 = $23 ^ $4;
$41 = $25 ^ $6;
$42 = $27 ^ $8;
$43 = $29 ^ $10;
$44 = $31 ^ $12;
$45 = $33 ^ $14;
$46 = $35 ^ $16;
$47 = $37 ^ $18;
$48 = (0 - $b) | 0;
$49 = $38 & $48;
$50 = $39 & $48;
$51 = $40 & $48;
$52 = $41 & $48;
$53 = $42 & $48;
$54 = $43 & $48;
$55 = $44 & $48;
$56 = $45 & $48;
$57 = $46 & $48;
$58 = $47 & $48;
$59 = $49 ^ $0;
HEAP32[$f >> 2] = $59;
$60 = $50 ^ $2;
HEAP32[$1 >> 2] = $60;
$61 = $51 ^ $4;
HEAP32[$3 >> 2] = $61;
$62 = $52 ^ $6;
HEAP32[$5 >> 2] = $62;
$63 = $53 ^ $8;
HEAP32[$7 >> 2] = $63;
$64 = $54 ^ $10;
HEAP32[$9 >> 2] = $64;
$65 = $55 ^ $12;
HEAP32[$11 >> 2] = $65;
$66 = $56 ^ $14;
HEAP32[$13 >> 2] = $66;
$67 = $57 ^ $16;
HEAP32[$15 >> 2] = $67;
$68 = $58 ^ $18;
HEAP32[$17 >> 2] = $68;
STACKTOP = sp;
return;
}
function _crypto_sign_ed25519_ref10_fe_copy($h, $f) {
$h = $h | 0;
$f = $f | 0;
var $0 = 0,
$1 = 0,
$10 = 0,
$11 = 0,
$12 = 0,
$13 = 0,
$14 = 0,
$15 = 0,
$16 = 0,
$17 = 0,
$18 = 0,
$19 = 0,
$2 = 0,
$20 = 0,
$21 = 0,
$22 = 0,
$23 = 0,
$24 = 0,
$25 = 0,
$26 = 0;
var $27 = 0,
$3 = 0,
$4 = 0,
$5 = 0,
$6 = 0,
$7 = 0,
$8 = 0,
$9 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = HEAP32[$f >> 2] | 0;
$1 = ($f + 4) | 0;
$2 = HEAP32[$1 >> 2] | 0;
$3 = ($f + 8) | 0;
$4 = HEAP32[$3 >> 2] | 0;
$5 = ($f + 12) | 0;
$6 = HEAP32[$5 >> 2] | 0;
$7 = ($f + 16) | 0;
$8 = HEAP32[$7 >> 2] | 0;
$9 = ($f + 20) | 0;
$10 = HEAP32[$9 >> 2] | 0;
$11 = ($f + 24) | 0;
$12 = HEAP32[$11 >> 2] | 0;
$13 = ($f + 28) | 0;
$14 = HEAP32[$13 >> 2] | 0;
$15 = ($f + 32) | 0;
$16 = HEAP32[$15 >> 2] | 0;
$17 = ($f + 36) | 0;
$18 = HEAP32[$17 >> 2] | 0;
HEAP32[$h >> 2] = $0;
$19 = ($h + 4) | 0;
HEAP32[$19 >> 2] = $2;
$20 = ($h + 8) | 0;
HEAP32[$20 >> 2] = $4;
$21 = ($h + 12) | 0;
HEAP32[$21 >> 2] = $6;
$22 = ($h + 16) | 0;
HEAP32[$22 >> 2] = $8;
$23 = ($h + 20) | 0;
HEAP32[$23 >> 2] = $10;
$24 = ($h + 24) | 0;
HEAP32[$24 >> 2] = $12;
$25 = ($h + 28) | 0;
HEAP32[$25 >> 2] = $14;
$26 = ($h + 32) | 0;
HEAP32[$26 >> 2] = $16;
$27 = ($h + 36) | 0;
HEAP32[$27 >> 2] = $18;
STACKTOP = sp;
return;
}
function _crypto_sign_ed25519_ref10_fe_frombytes($h, $s) {
$h = $h | 0;
$s = $s | 0;
var $0 = 0,
$1 = 0,
$10 = 0,
$100 = 0,
$101 = 0,
$102 = 0,
$103 = 0,
$104 = 0,
$105 = 0,
$106 = 0,
$107 = 0,
$108 = 0,
$109 = 0,
$11 = 0,
$110 = 0,
$111 = 0,
$112 = 0,
$113 = 0,
$114 = 0,
$115 = 0;
var $116 = 0,
$117 = 0,
$118 = 0,
$119 = 0,
$12 = 0,
$120 = 0,
$121 = 0,
$122 = 0,
$123 = 0,
$124 = 0,
$125 = 0,
$126 = 0,
$127 = 0,
$128 = 0,
$129 = 0,
$13 = 0,
$130 = 0,
$131 = 0,
$132 = 0,
$133 = 0;
var $134 = 0,
$135 = 0,
$136 = 0,
$137 = 0,
$138 = 0,
$139 = 0,
$14 = 0,
$140 = 0,
$141 = 0,
$142 = 0,
$143 = 0,
$144 = 0,
$145 = 0,
$146 = 0,
$147 = 0,
$148 = 0,
$149 = 0,
$15 = 0,
$150 = 0,
$151 = 0;
var $152 = 0,
$153 = 0,
$154 = 0,
$155 = 0,
$156 = 0,
$16 = 0,
$17 = 0,
$18 = 0,
$19 = 0,
$2 = 0,
$20 = 0,
$21 = 0,
$22 = 0,
$23 = 0,
$24 = 0,
$25 = 0,
$26 = 0,
$27 = 0,
$28 = 0,
$29 = 0;
var $3 = 0,
$30 = 0,
$31 = 0,
$32 = 0,
$33 = 0,
$34 = 0,
$35 = 0,
$36 = 0,
$37 = 0,
$38 = 0,
$39 = 0,
$4 = 0,
$40 = 0,
$41 = 0,
$42 = 0,
$43 = 0,
$44 = 0,
$45 = 0,
$46 = 0,
$47 = 0;
var $48 = 0,
$49 = 0,
$5 = 0,
$50 = 0,
$51 = 0,
$52 = 0,
$53 = 0,
$54 = 0,
$55 = 0,
$56 = 0,
$57 = 0,
$58 = 0,
$59 = 0,
$6 = 0,
$60 = 0,
$61 = 0,
$62 = 0,
$63 = 0,
$64 = 0,
$65 = 0;
var $66 = 0,
$67 = 0,
$68 = 0,
$69 = 0,
$7 = 0,
$70 = 0,
$71 = 0,
$72 = 0,
$73 = 0,
$74 = 0,
$75 = 0,
$76 = 0,
$77 = 0,
$78 = 0,
$79 = 0,
$8 = 0,
$80 = 0,
$81 = 0,
$82 = 0,
$83 = 0;
var $84 = 0,
$85 = 0,
$86 = 0,
$87 = 0,
$88 = 0,
$89 = 0,
$9 = 0,
$90 = 0,
$91 = 0,
$92 = 0,
$93 = 0,
$94 = 0,
$95 = 0,
$96 = 0,
$97 = 0,
$98 = 0,
$99 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = _load_4($s) | 0;
$1 = tempRet0;
$2 = ($s + 4) | 0;
$3 = _load_3($2) | 0;
$4 = tempRet0;
$5 = _bitshift64Shl($3 | 0, $4 | 0, 6) | 0;
$6 = tempRet0;
$7 = ($s + 7) | 0;
$8 = _load_3($7) | 0;
$9 = tempRet0;
$10 = _bitshift64Shl($8 | 0, $9 | 0, 5) | 0;
$11 = tempRet0;
$12 = ($s + 10) | 0;
$13 = _load_3($12) | 0;
$14 = tempRet0;
$15 = _bitshift64Shl($13 | 0, $14 | 0, 3) | 0;
$16 = tempRet0;
$17 = ($s + 13) | 0;
$18 = _load_3($17) | 0;
$19 = tempRet0;
$20 = _bitshift64Shl($18 | 0, $19 | 0, 2) | 0;
$21 = tempRet0;
$22 = ($s + 16) | 0;
$23 = _load_4($22) | 0;
$24 = tempRet0;
$25 = ($s + 20) | 0;
$26 = _load_3($25) | 0;
$27 = tempRet0;
$28 = _bitshift64Shl($26 | 0, $27 | 0, 7) | 0;
$29 = tempRet0;
$30 = ($s + 23) | 0;
$31 = _load_3($30) | 0;
$32 = tempRet0;
$33 = _bitshift64Shl($31 | 0, $32 | 0, 5) | 0;
$34 = tempRet0;
$35 = ($s + 26) | 0;
$36 = _load_3($35) | 0;
$37 = tempRet0;
$38 = _bitshift64Shl($36 | 0, $37 | 0, 4) | 0;
$39 = tempRet0;
$40 = ($s + 29) | 0;
$41 = _load_3($40) | 0;
$42 = tempRet0;
$43 = _bitshift64Shl($41 | 0, $42 | 0, 2) | 0;
$44 = tempRet0;
$45 = $43 & 33554428;
$46 = _i64Add($45 | 0, 0, 16777216, 0) | 0;
$47 = tempRet0;
$48 = _bitshift64Lshr($46 | 0, $47 | 0, 25) | 0;
$49 = tempRet0;
$50 = ___muldi3($48 | 0, $49 | 0, 19, 0) | 0;
$51 = tempRet0;
$52 = _i64Add($50 | 0, $51 | 0, $0 | 0, $1 | 0) | 0;
$53 = tempRet0;
$54 = _bitshift64Shl($48 | 0, $49 | 0, 25) | 0;
$55 = tempRet0;
$56 = _i64Add($5 | 0, $6 | 0, 16777216, 0) | 0;
$57 = tempRet0;
$58 = _bitshift64Ashr($56 | 0, $57 | 0, 25) | 0;
$59 = tempRet0;
$60 = _i64Add($58 | 0, $59 | 0, $10 | 0, $11 | 0) | 0;
$61 = tempRet0;
$62 = _bitshift64Shl($58 | 0, $59 | 0, 25) | 0;
$63 = tempRet0;
$64 = _i64Subtract($5 | 0, $6 | 0, $62 | 0, $63 | 0) | 0;
$65 = tempRet0;
$66 = _i64Add($15 | 0, $16 | 0, 16777216, 0) | 0;
$67 = tempRet0;
$68 = _bitshift64Ashr($66 | 0, $67 | 0, 25) | 0;
$69 = tempRet0;
$70 = _i64Add($68 | 0, $69 | 0, $20 | 0, $21 | 0) | 0;
$71 = tempRet0;
$72 = _bitshift64Shl($68 | 0, $69 | 0, 25) | 0;
$73 = tempRet0;
$74 = _i64Subtract($15 | 0, $16 | 0, $72 | 0, $73 | 0) | 0;
$75 = tempRet0;
$76 = _i64Add($23 | 0, $24 | 0, 16777216, 0) | 0;
$77 = tempRet0;
$78 = _bitshift64Ashr($76 | 0, $77 | 0, 25) | 0;
$79 = tempRet0;
$80 = _i64Add($28 | 0, $29 | 0, $78 | 0, $79 | 0) | 0;
$81 = tempRet0;
$82 = _bitshift64Shl($78 | 0, $79 | 0, 25) | 0;
$83 = tempRet0;
$84 = _i64Subtract($23 | 0, $24 | 0, $82 | 0, $83 | 0) | 0;
$85 = tempRet0;
$86 = _i64Add($33 | 0, $34 | 0, 16777216, 0) | 0;
$87 = tempRet0;
$88 = _bitshift64Ashr($86 | 0, $87 | 0, 25) | 0;
$89 = tempRet0;
$90 = _i64Add($88 | 0, $89 | 0, $38 | 0, $39 | 0) | 0;
$91 = tempRet0;
$92 = _bitshift64Shl($88 | 0, $89 | 0, 25) | 0;
$93 = tempRet0;
$94 = _i64Add($52 | 0, $53 | 0, 33554432, 0) | 0;
$95 = tempRet0;
$96 = _bitshift64Ashr($94 | 0, $95 | 0, 26) | 0;
$97 = tempRet0;
$98 = _i64Add($64 | 0, $65 | 0, $96 | 0, $97 | 0) | 0;
$99 = tempRet0;
$100 = _bitshift64Shl($96 | 0, $97 | 0, 26) | 0;
$101 = tempRet0;
$102 = _i64Subtract($52 | 0, $53 | 0, $100 | 0, $101 | 0) | 0;
$103 = tempRet0;
$104 = _i64Add($60 | 0, $61 | 0, 33554432, 0) | 0;
$105 = tempRet0;
$106 = _bitshift64Ashr($104 | 0, $105 | 0, 26) | 0;
$107 = tempRet0;
$108 = _i64Add($74 | 0, $75 | 0, $106 | 0, $107 | 0) | 0;
$109 = tempRet0;
$110 = _bitshift64Shl($106 | 0, $107 | 0, 26) | 0;
$111 = tempRet0;
$112 = _i64Subtract($60 | 0, $61 | 0, $110 | 0, $111 | 0) | 0;
$113 = tempRet0;
$114 = _i64Add($70 | 0, $71 | 0, 33554432, 0) | 0;
$115 = tempRet0;
$116 = _bitshift64Ashr($114 | 0, $115 | 0, 26) | 0;
$117 = tempRet0;
$118 = _i64Add($84 | 0, $85 | 0, $116 | 0, $117 | 0) | 0;
$119 = tempRet0;
$120 = _bitshift64Shl($116 | 0, $117 | 0, 26) | 0;
$121 = tempRet0;
$122 = _i64Subtract($70 | 0, $71 | 0, $120 | 0, $121 | 0) | 0;
$123 = tempRet0;
$124 = _i64Add($80 | 0, $81 | 0, 33554432, 0) | 0;
$125 = tempRet0;
$126 = _bitshift64Ashr($124 | 0, $125 | 0, 26) | 0;
$127 = tempRet0;
$128 = _i64Add($126 | 0, $127 | 0, $33 | 0, $34 | 0) | 0;
$129 = tempRet0;
$130 = _i64Subtract($128 | 0, $129 | 0, $92 | 0, $93 | 0) | 0;
$131 = tempRet0;
$132 = _bitshift64Shl($126 | 0, $127 | 0, 26) | 0;
$133 = tempRet0;
$134 = _i64Subtract($80 | 0, $81 | 0, $132 | 0, $133 | 0) | 0;
$135 = tempRet0;
$136 = _i64Add($90 | 0, $91 | 0, 33554432, 0) | 0;
$137 = tempRet0;
$138 = _bitshift64Ashr($136 | 0, $137 | 0, 26) | 0;
$139 = tempRet0;
$140 = _i64Add($138 | 0, $139 | 0, $45 | 0, 0) | 0;
$141 = tempRet0;
$142 = _i64Subtract($140 | 0, $141 | 0, $54 | 0, $55 | 0) | 0;
$143 = tempRet0;
$144 = _bitshift64Shl($138 | 0, $139 | 0, 26) | 0;
$145 = tempRet0;
$146 = _i64Subtract($90 | 0, $91 | 0, $144 | 0, $145 | 0) | 0;
$147 = tempRet0;
HEAP32[$h >> 2] = $102;
$148 = ($h + 4) | 0;
HEAP32[$148 >> 2] = $98;
$149 = ($h + 8) | 0;
HEAP32[$149 >> 2] = $112;
$150 = ($h + 12) | 0;
HEAP32[$150 >> 2] = $108;
$151 = ($h + 16) | 0;
HEAP32[$151 >> 2] = $122;
$152 = ($h + 20) | 0;
HEAP32[$152 >> 2] = $118;
$153 = ($h + 24) | 0;
HEAP32[$153 >> 2] = $134;
$154 = ($h + 28) | 0;
HEAP32[$154 >> 2] = $130;
$155 = ($h + 32) | 0;
HEAP32[$155 >> 2] = $146;
$156 = ($h + 36) | 0;
HEAP32[$156 >> 2] = $142;
STACKTOP = sp;
return;
}
function _load_4($in) {
$in = $in | 0;
var $0 = 0,
$1 = 0,
$10 = 0,
$11 = 0,
$12 = 0,
$13 = 0,
$14 = 0,
$15 = 0,
$16 = 0,
$17 = 0,
$18 = 0,
$19 = 0,
$2 = 0,
$20 = 0,
$21 = 0,
$3 = 0,
$4 = 0,
$5 = 0,
$6 = 0,
$7 = 0;
var $8 = 0,
$9 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = HEAP8[$in >> 0] | 0;
$1 = $0 & 255;
$2 = ($in + 1) | 0;
$3 = HEAP8[$2 >> 0] | 0;
$4 = $3 & 255;
$5 = _bitshift64Shl($4 | 0, 0, 8) | 0;
$6 = tempRet0;
$7 = $5 | $1;
$8 = ($in + 2) | 0;
$9 = HEAP8[$8 >> 0] | 0;
$10 = $9 & 255;
$11 = _bitshift64Shl($10 | 0, 0, 16) | 0;
$12 = tempRet0;
$13 = $7 | $11;
$14 = $6 | $12;
$15 = ($in + 3) | 0;
$16 = HEAP8[$15 >> 0] | 0;
$17 = $16 & 255;
$18 = _bitshift64Shl($17 | 0, 0, 24) | 0;
$19 = tempRet0;
$20 = $13 | $18;
$21 = $14 | $19;
tempRet0 = $21;
STACKTOP = sp;
return $20 | 0;
}
function _load_3($in) {
$in = $in | 0;
var $0 = 0,
$1 = 0,
$10 = 0,
$11 = 0,
$12 = 0,
$13 = 0,
$14 = 0,
$2 = 0,
$3 = 0,
$4 = 0,
$5 = 0,
$6 = 0,
$7 = 0,
$8 = 0,
$9 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = HEAP8[$in >> 0] | 0;
$1 = $0 & 255;
$2 = ($in + 1) | 0;
$3 = HEAP8[$2 >> 0] | 0;
$4 = $3 & 255;
$5 = _bitshift64Shl($4 | 0, 0, 8) | 0;
$6 = tempRet0;
$7 = $5 | $1;
$8 = ($in + 2) | 0;
$9 = HEAP8[$8 >> 0] | 0;
$10 = $9 & 255;
$11 = _bitshift64Shl($10 | 0, 0, 16) | 0;
$12 = tempRet0;
$13 = $7 | $11;
$14 = $6 | $12;
tempRet0 = $14;
STACKTOP = sp;
return $13 | 0;
}
function _crypto_sign_ed25519_ref10_fe_invert($out, $z) {
$out = $out | 0;
$z = $z | 0;
var $0 = 0,
$1 = 0,
$2 = 0,
$exitcond = 0,
$exitcond10 = 0,
$exitcond11 = 0,
$i$74 = 0,
$i$83 = 0,
$i$92 = 0,
$t0 = 0,
$t1 = 0,
$t2 = 0,
$t3 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
STACKTOP = (STACKTOP + 160) | 0;
$t0 = (sp + 120) | 0;
$t1 = (sp + 80) | 0;
$t2 = (sp + 40) | 0;
$t3 = sp;
_crypto_sign_ed25519_ref10_fe_sq($t0, $z);
_crypto_sign_ed25519_ref10_fe_sq($t1, $t0);
_crypto_sign_ed25519_ref10_fe_sq($t1, $t1);
_crypto_sign_ed25519_ref10_fe_mul($t1, $z, $t1);
_crypto_sign_ed25519_ref10_fe_mul($t0, $t0, $t1);
_crypto_sign_ed25519_ref10_fe_sq($t2, $t0);
_crypto_sign_ed25519_ref10_fe_mul($t1, $t1, $t2);
_crypto_sign_ed25519_ref10_fe_sq($t2, $t1);
_crypto_sign_ed25519_ref10_fe_sq($t2, $t2);
_crypto_sign_ed25519_ref10_fe_sq($t2, $t2);
_crypto_sign_ed25519_ref10_fe_sq($t2, $t2);
_crypto_sign_ed25519_ref10_fe_sq($t2, $t2);
_crypto_sign_ed25519_ref10_fe_mul($t1, $t2, $t1);
_crypto_sign_ed25519_ref10_fe_sq($t2, $t1);
_crypto_sign_ed25519_ref10_fe_sq($t2, $t2);
_crypto_sign_ed25519_ref10_fe_sq($t2, $t2);
_crypto_sign_ed25519_ref10_fe_sq($t2, $t2);
_crypto_sign_ed25519_ref10_fe_sq($t2, $t2);
_crypto_sign_ed25519_ref10_fe_sq($t2, $t2);
_crypto_sign_ed25519_ref10_fe_sq($t2, $t2);
_crypto_sign_ed25519_ref10_fe_sq($t2, $t2);
_crypto_sign_ed25519_ref10_fe_sq($t2, $t2);
_crypto_sign_ed25519_ref10_fe_sq($t2, $t2);
_crypto_sign_ed25519_ref10_fe_mul($t2, $t2, $t1);
_crypto_sign_ed25519_ref10_fe_sq($t3, $t2);
_crypto_sign_ed25519_ref10_fe_sq($t3, $t3);
_crypto_sign_ed25519_ref10_fe_sq($t3, $t3);
_crypto_sign_ed25519_ref10_fe_sq($t3, $t3);
_crypto_sign_ed25519_ref10_fe_sq($t3, $t3);
_crypto_sign_ed25519_ref10_fe_sq($t3, $t3);
_crypto_sign_ed25519_ref10_fe_sq($t3, $t3);
_crypto_sign_ed25519_ref10_fe_sq($t3, $t3);
_crypto_sign_ed25519_ref10_fe_sq($t3, $t3);
_crypto_sign_ed25519_ref10_fe_sq($t3, $t3);
_crypto_sign_ed25519_ref10_fe_sq($t3, $t3);
_crypto_sign_ed25519_ref10_fe_sq($t3, $t3);
_crypto_sign_ed25519_ref10_fe_sq($t3, $t3);
_crypto_sign_ed25519_ref10_fe_sq($t3, $t3);
_crypto_sign_ed25519_ref10_fe_sq($t3, $t3);
_crypto_sign_ed25519_ref10_fe_sq($t3, $t3);
_crypto_sign_ed25519_ref10_fe_sq($t3, $t3);
_crypto_sign_ed25519_ref10_fe_sq($t3, $t3);
_crypto_sign_ed25519_ref10_fe_sq($t3, $t3);
_crypto_sign_ed25519_ref10_fe_sq($t3, $t3);
_crypto_sign_ed25519_ref10_fe_mul($t2, $t3, $t2);
_crypto_sign_ed25519_ref10_fe_sq($t2, $t2);
_crypto_sign_ed25519_ref10_fe_sq($t2, $t2);
_crypto_sign_ed25519_ref10_fe_sq($t2, $t2);
_crypto_sign_ed25519_ref10_fe_sq($t2, $t2);
_crypto_sign_ed25519_ref10_fe_sq($t2, $t2);
_crypto_sign_ed25519_ref10_fe_sq($t2, $t2);
_crypto_sign_ed25519_ref10_fe_sq($t2, $t2);
_crypto_sign_ed25519_ref10_fe_sq($t2, $t2);
_crypto_sign_ed25519_ref10_fe_sq($t2, $t2);
_crypto_sign_ed25519_ref10_fe_sq($t2, $t2);
_crypto_sign_ed25519_ref10_fe_mul($t1, $t2, $t1);
_crypto_sign_ed25519_ref10_fe_sq($t2, $t1);
$i$74 = 1;
while (1) {
_crypto_sign_ed25519_ref10_fe_sq($t2, $t2);
$0 = ($i$74 + 1) | 0;
$exitcond11 = ($0 | 0) == 50;
if ($exitcond11) {
break;
} else {
$i$74 = $0;
}
}
_crypto_sign_ed25519_ref10_fe_mul($t2, $t2, $t1);
_crypto_sign_ed25519_ref10_fe_sq($t3, $t2);
$i$83 = 1;
while (1) {
_crypto_sign_ed25519_ref10_fe_sq($t3, $t3);
$1 = ($i$83 + 1) | 0;
$exitcond10 = ($1 | 0) == 100;
if ($exitcond10) {
break;
} else {
$i$83 = $1;
}
}
_crypto_sign_ed25519_ref10_fe_mul($t2, $t3, $t2);
_crypto_sign_ed25519_ref10_fe_sq($t2, $t2);
$i$92 = 1;
while (1) {
_crypto_sign_ed25519_ref10_fe_sq($t2, $t2);
$2 = ($i$92 + 1) | 0;
$exitcond = ($2 | 0) == 50;
if ($exitcond) {
break;
} else {
$i$92 = $2;
}
}
_crypto_sign_ed25519_ref10_fe_mul($t1, $t2, $t1);
_crypto_sign_ed25519_ref10_fe_sq($t1, $t1);
_crypto_sign_ed25519_ref10_fe_sq($t1, $t1);
_crypto_sign_ed25519_ref10_fe_sq($t1, $t1);
_crypto_sign_ed25519_ref10_fe_sq($t1, $t1);
_crypto_sign_ed25519_ref10_fe_sq($t1, $t1);
_crypto_sign_ed25519_ref10_fe_mul($out, $t1, $t0);
STACKTOP = sp;
return;
}
function _crypto_sign_ed25519_ref10_fe_isnegative($f) {
$f = $f | 0;
var $0 = 0,
$1 = 0,
$2 = 0,
$s = 0,
label = 0,
sp = 0;
sp = STACKTOP;
STACKTOP = (STACKTOP + 32) | 0;
$s = sp;
_crypto_sign_ed25519_ref10_fe_tobytes($s, $f);
$0 = HEAP8[$s >> 0] | 0;
$1 = $0 & 255;
$2 = $1 & 1;
STACKTOP = sp;
return $2 | 0;
}
function _crypto_sign_ed25519_ref10_fe_isnonzero($f) {
$f = $f | 0;
var $0 = 0,
$s = 0,
label = 0,
sp = 0;
sp = STACKTOP;
STACKTOP = (STACKTOP + 32) | 0;
$s = sp;
_crypto_sign_ed25519_ref10_fe_tobytes($s, $f);
$0 = _crypto_verify_32_ref($s, 8) | 0;
STACKTOP = sp;
return $0 | 0;
}
function _crypto_sign_ed25519_ref10_fe_mul($h, $f, $g) {
$h = $h | 0;
$f = $f | 0;
$g = $g | 0;
var $0 = 0,
$1 = 0,
$10 = 0,
$100 = 0,
$101 = 0,
$102 = 0,
$103 = 0,
$104 = 0,
$105 = 0,
$106 = 0,
$107 = 0,
$108 = 0,
$109 = 0,
$11 = 0,
$110 = 0,
$111 = 0,
$112 = 0,
$113 = 0,
$114 = 0,
$115 = 0;
var $116 = 0,
$117 = 0,
$118 = 0,
$119 = 0,
$12 = 0,
$120 = 0,
$121 = 0,
$122 = 0,
$123 = 0,
$124 = 0,
$125 = 0,
$126 = 0,
$127 = 0,
$128 = 0,
$129 = 0,
$13 = 0,
$130 = 0,
$131 = 0,
$132 = 0,
$133 = 0;
var $134 = 0,
$135 = 0,
$136 = 0,
$137 = 0,
$138 = 0,
$139 = 0,
$14 = 0,
$140 = 0,
$141 = 0,
$142 = 0,
$143 = 0,
$144 = 0,
$145 = 0,
$146 = 0,
$147 = 0,
$148 = 0,
$149 = 0,
$15 = 0,
$150 = 0,
$151 = 0;
var $152 = 0,
$153 = 0,
$154 = 0,
$155 = 0,
$156 = 0,
$157 = 0,
$158 = 0,
$159 = 0,
$16 = 0,
$160 = 0,
$161 = 0,
$162 = 0,
$163 = 0,
$164 = 0,
$165 = 0,
$166 = 0,
$167 = 0,
$168 = 0,
$169 = 0,
$17 = 0;
var $170 = 0,
$171 = 0,
$172 = 0,
$173 = 0,
$174 = 0,
$175 = 0,
$176 = 0,
$177 = 0,
$178 = 0,
$179 = 0,
$18 = 0,
$180 = 0,
$181 = 0,
$182 = 0,
$183 = 0,
$184 = 0,
$185 = 0,
$186 = 0,
$187 = 0,
$188 = 0;
var $189 = 0,
$19 = 0,
$190 = 0,
$191 = 0,
$192 = 0,
$193 = 0,
$194 = 0,
$195 = 0,
$196 = 0,
$197 = 0,
$198 = 0,
$199 = 0,
$2 = 0,
$20 = 0,
$200 = 0,
$201 = 0,
$202 = 0,
$203 = 0,
$204 = 0,
$205 = 0;
var $206 = 0,
$207 = 0,
$208 = 0,
$209 = 0,
$21 = 0,
$210 = 0,
$211 = 0,
$212 = 0,
$213 = 0,
$214 = 0,
$215 = 0,
$216 = 0,
$217 = 0,
$218 = 0,
$219 = 0,
$22 = 0,
$220 = 0,
$221 = 0,
$222 = 0,
$223 = 0;
var $224 = 0,
$225 = 0,
$226 = 0,
$227 = 0,
$228 = 0,
$229 = 0,
$23 = 0,
$230 = 0,
$231 = 0,
$232 = 0,
$233 = 0,
$234 = 0,
$235 = 0,
$236 = 0,
$237 = 0,
$238 = 0,
$239 = 0,
$24 = 0,
$240 = 0,
$241 = 0;
var $242 = 0,
$243 = 0,
$244 = 0,
$245 = 0,
$246 = 0,
$247 = 0,
$248 = 0,
$249 = 0,
$25 = 0,
$250 = 0,
$251 = 0,
$252 = 0,
$253 = 0,
$254 = 0,
$255 = 0,
$256 = 0,
$257 = 0,
$258 = 0,
$259 = 0,
$26 = 0;
var $260 = 0,
$261 = 0,
$262 = 0,
$263 = 0,
$264 = 0,
$265 = 0,
$266 = 0,
$267 = 0,
$268 = 0,
$269 = 0,
$27 = 0,
$270 = 0,
$271 = 0,
$272 = 0,
$273 = 0,
$274 = 0,
$275 = 0,
$276 = 0,
$277 = 0,
$278 = 0;
var $279 = 0,
$28 = 0,
$280 = 0,
$281 = 0,
$282 = 0,
$283 = 0,
$284 = 0,
$285 = 0,
$286 = 0,
$287 = 0,
$288 = 0,
$289 = 0,
$29 = 0,
$290 = 0,
$291 = 0,
$292 = 0,
$293 = 0,
$294 = 0,
$295 = 0,
$296 = 0;
var $297 = 0,
$298 = 0,
$299 = 0,
$3 = 0,
$30 = 0,
$300 = 0,
$301 = 0,
$302 = 0,
$303 = 0,
$304 = 0,
$305 = 0,
$306 = 0,
$307 = 0,
$308 = 0,
$309 = 0,
$31 = 0,
$310 = 0,
$311 = 0,
$312 = 0,
$313 = 0;
var $314 = 0,
$315 = 0,
$316 = 0,
$317 = 0,
$318 = 0,
$319 = 0,
$32 = 0,
$320 = 0,
$321 = 0,
$322 = 0,
$323 = 0,
$324 = 0,
$325 = 0,
$326 = 0,
$327 = 0,
$328 = 0,
$329 = 0,
$33 = 0,
$330 = 0,
$331 = 0;
var $332 = 0,
$333 = 0,
$334 = 0,
$335 = 0,
$336 = 0,
$337 = 0,
$338 = 0,
$339 = 0,
$34 = 0,
$340 = 0,
$341 = 0,
$342 = 0,
$343 = 0,
$344 = 0,
$345 = 0,
$346 = 0,
$347 = 0,
$348 = 0,
$349 = 0,
$35 = 0;
var $350 = 0,
$351 = 0,
$352 = 0,
$353 = 0,
$354 = 0,
$355 = 0,
$356 = 0,
$357 = 0,
$358 = 0,
$359 = 0,
$36 = 0,
$360 = 0,
$361 = 0,
$362 = 0,
$363 = 0,
$364 = 0,
$365 = 0,
$366 = 0,
$367 = 0,
$368 = 0;
var $369 = 0,
$37 = 0,
$370 = 0,
$371 = 0,
$372 = 0,
$373 = 0,
$374 = 0,
$375 = 0,
$376 = 0,
$377 = 0,
$378 = 0,
$379 = 0,
$38 = 0,
$380 = 0,
$381 = 0,
$382 = 0,
$383 = 0,
$384 = 0,
$385 = 0,
$386 = 0;
var $387 = 0,
$388 = 0,
$389 = 0,
$39 = 0,
$390 = 0,
$391 = 0,
$392 = 0,
$393 = 0,
$394 = 0,
$395 = 0,
$396 = 0,
$397 = 0,
$398 = 0,
$399 = 0,
$4 = 0,
$40 = 0,
$400 = 0,
$401 = 0,
$402 = 0,
$403 = 0;
var $404 = 0,
$405 = 0,
$406 = 0,
$407 = 0,
$408 = 0,
$409 = 0,
$41 = 0,
$410 = 0,
$411 = 0,
$412 = 0,
$413 = 0,
$414 = 0,
$415 = 0,
$416 = 0,
$417 = 0,
$418 = 0,
$419 = 0,
$42 = 0,
$420 = 0,
$421 = 0;
var $422 = 0,
$423 = 0,
$424 = 0,
$425 = 0,
$426 = 0,
$427 = 0,
$428 = 0,
$429 = 0,
$43 = 0,
$430 = 0,
$431 = 0,
$432 = 0,
$433 = 0,
$434 = 0,
$435 = 0,
$436 = 0,
$437 = 0,
$438 = 0,
$439 = 0,
$44 = 0;
var $440 = 0,
$441 = 0,
$442 = 0,
$443 = 0,
$444 = 0,
$445 = 0,
$446 = 0,
$447 = 0,
$448 = 0,
$449 = 0,
$45 = 0,
$450 = 0,
$451 = 0,
$452 = 0,
$453 = 0,
$454 = 0,
$455 = 0,
$456 = 0,
$457 = 0,
$458 = 0;
var $459 = 0,
$46 = 0,
$460 = 0,
$461 = 0,
$462 = 0,
$463 = 0,
$464 = 0,
$465 = 0,
$466 = 0,
$467 = 0,
$468 = 0,
$469 = 0,
$47 = 0,
$470 = 0,
$471 = 0,
$472 = 0,
$473 = 0,
$474 = 0,
$475 = 0,
$476 = 0;
var $477 = 0,
$478 = 0,
$479 = 0,
$48 = 0,
$480 = 0,
$481 = 0,
$482 = 0,
$483 = 0,
$484 = 0,
$485 = 0,
$486 = 0,
$487 = 0,
$488 = 0,
$489 = 0,
$49 = 0,
$490 = 0,
$491 = 0,
$492 = 0,
$493 = 0,
$494 = 0;
var $495 = 0,
$496 = 0,
$497 = 0,
$498 = 0,
$499 = 0,
$5 = 0,
$50 = 0,
$500 = 0,
$501 = 0,
$502 = 0,
$503 = 0,
$504 = 0,
$505 = 0,
$506 = 0,
$507 = 0,
$508 = 0,
$509 = 0,
$51 = 0,
$510 = 0,
$511 = 0;
var $512 = 0,
$513 = 0,
$514 = 0,
$515 = 0,
$516 = 0,
$517 = 0,
$518 = 0,
$519 = 0,
$52 = 0,
$520 = 0,
$521 = 0,
$522 = 0,
$523 = 0,
$524 = 0,
$525 = 0,
$526 = 0,
$527 = 0,
$528 = 0,
$529 = 0,
$53 = 0;
var $530 = 0,
$531 = 0,
$532 = 0,
$533 = 0,
$534 = 0,
$535 = 0,
$536 = 0,
$537 = 0,
$538 = 0,
$539 = 0,
$54 = 0,
$540 = 0,
$541 = 0,
$542 = 0,
$543 = 0,
$544 = 0,
$545 = 0,
$546 = 0,
$547 = 0,
$548 = 0;
var $549 = 0,
$55 = 0,
$550 = 0,
$551 = 0,
$552 = 0,
$553 = 0,
$554 = 0,
$555 = 0,
$556 = 0,
$557 = 0,
$558 = 0,
$559 = 0,
$56 = 0,
$560 = 0,
$561 = 0,
$562 = 0,
$563 = 0,
$564 = 0,
$565 = 0,
$566 = 0;
var $567 = 0,
$568 = 0,
$569 = 0,
$57 = 0,
$570 = 0,
$571 = 0,
$572 = 0,
$573 = 0,
$574 = 0,
$575 = 0,
$576 = 0,
$577 = 0,
$578 = 0,
$579 = 0,
$58 = 0,
$580 = 0,
$581 = 0,
$582 = 0,
$583 = 0,
$584 = 0;
var $585 = 0,
$586 = 0,
$587 = 0,
$588 = 0,
$589 = 0,
$59 = 0,
$590 = 0,
$591 = 0,
$592 = 0,
$593 = 0,
$594 = 0,
$595 = 0,
$596 = 0,
$597 = 0,
$598 = 0,
$599 = 0,
$6 = 0,
$60 = 0,
$600 = 0,
$601 = 0;
var $602 = 0,
$603 = 0,
$604 = 0,
$605 = 0,
$606 = 0,
$607 = 0,
$608 = 0,
$609 = 0,
$61 = 0,
$610 = 0,
$611 = 0,
$612 = 0,
$613 = 0,
$614 = 0,
$615 = 0,
$616 = 0,
$617 = 0,
$618 = 0,
$619 = 0,
$62 = 0;
var $620 = 0,
$621 = 0,
$622 = 0,
$623 = 0,
$624 = 0,
$625 = 0,
$626 = 0,
$627 = 0,
$628 = 0,
$629 = 0,
$63 = 0,
$630 = 0,
$64 = 0,
$65 = 0,
$66 = 0,
$67 = 0,
$68 = 0,
$69 = 0,
$7 = 0,
$70 = 0;
var $71 = 0,
$72 = 0,
$73 = 0,
$74 = 0,
$75 = 0,
$76 = 0,
$77 = 0,
$78 = 0,
$79 = 0,
$8 = 0,
$80 = 0,
$81 = 0,
$82 = 0,
$83 = 0,
$84 = 0,
$85 = 0,
$86 = 0,
$87 = 0,
$88 = 0,
$89 = 0;
var $9 = 0,
$90 = 0,
$91 = 0,
$92 = 0,
$93 = 0,
$94 = 0,
$95 = 0,
$96 = 0,
$97 = 0,
$98 = 0,
$99 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = HEAP32[$f >> 2] | 0;
$1 = ($f + 4) | 0;
$2 = HEAP32[$1 >> 2] | 0;
$3 = ($f + 8) | 0;
$4 = HEAP32[$3 >> 2] | 0;
$5 = ($f + 12) | 0;
$6 = HEAP32[$5 >> 2] | 0;
$7 = ($f + 16) | 0;
$8 = HEAP32[$7 >> 2] | 0;
$9 = ($f + 20) | 0;
$10 = HEAP32[$9 >> 2] | 0;
$11 = ($f + 24) | 0;
$12 = HEAP32[$11 >> 2] | 0;
$13 = ($f + 28) | 0;
$14 = HEAP32[$13 >> 2] | 0;
$15 = ($f + 32) | 0;
$16 = HEAP32[$15 >> 2] | 0;
$17 = ($f + 36) | 0;
$18 = HEAP32[$17 >> 2] | 0;
$19 = HEAP32[$g >> 2] | 0;
$20 = ($g + 4) | 0;
$21 = HEAP32[$20 >> 2] | 0;
$22 = ($g + 8) | 0;
$23 = HEAP32[$22 >> 2] | 0;
$24 = ($g + 12) | 0;
$25 = HEAP32[$24 >> 2] | 0;
$26 = ($g + 16) | 0;
$27 = HEAP32[$26 >> 2] | 0;
$28 = ($g + 20) | 0;
$29 = HEAP32[$28 >> 2] | 0;
$30 = ($g + 24) | 0;
$31 = HEAP32[$30 >> 2] | 0;
$32 = ($g + 28) | 0;
$33 = HEAP32[$32 >> 2] | 0;
$34 = ($g + 32) | 0;
$35 = HEAP32[$34 >> 2] | 0;
$36 = ($g + 36) | 0;
$37 = HEAP32[$36 >> 2] | 0;
$38 = ($21 * 19) | 0;
$39 = ($23 * 19) | 0;
$40 = ($25 * 19) | 0;
$41 = ($27 * 19) | 0;
$42 = ($29 * 19) | 0;
$43 = ($31 * 19) | 0;
$44 = ($33 * 19) | 0;
$45 = ($35 * 19) | 0;
$46 = ($37 * 19) | 0;
$47 = $2 << 1;
$48 = $6 << 1;
$49 = $10 << 1;
$50 = $14 << 1;
$51 = $18 << 1;
$52 = ($0 | 0) < 0;
$53 = ($52 << 31) >> 31;
$54 = ($19 | 0) < 0;
$55 = ($54 << 31) >> 31;
$56 = ___muldi3($19 | 0, $55 | 0, $0 | 0, $53 | 0) | 0;
$57 = tempRet0;
$58 = ($21 | 0) < 0;
$59 = ($58 << 31) >> 31;
$60 = ___muldi3($21 | 0, $59 | 0, $0 | 0, $53 | 0) | 0;
$61 = tempRet0;
$62 = ($23 | 0) < 0;
$63 = ($62 << 31) >> 31;
$64 = ___muldi3($23 | 0, $63 | 0, $0 | 0, $53 | 0) | 0;
$65 = tempRet0;
$66 = ($25 | 0) < 0;
$67 = ($66 << 31) >> 31;
$68 = ___muldi3($25 | 0, $67 | 0, $0 | 0, $53 | 0) | 0;
$69 = tempRet0;
$70 = ($27 | 0) < 0;
$71 = ($70 << 31) >> 31;
$72 = ___muldi3($27 | 0, $71 | 0, $0 | 0, $53 | 0) | 0;
$73 = tempRet0;
$74 = ($29 | 0) < 0;
$75 = ($74 << 31) >> 31;
$76 = ___muldi3($29 | 0, $75 | 0, $0 | 0, $53 | 0) | 0;
$77 = tempRet0;
$78 = ($31 | 0) < 0;
$79 = ($78 << 31) >> 31;
$80 = ___muldi3($31 | 0, $79 | 0, $0 | 0, $53 | 0) | 0;
$81 = tempRet0;
$82 = ($33 | 0) < 0;
$83 = ($82 << 31) >> 31;
$84 = ___muldi3($33 | 0, $83 | 0, $0 | 0, $53 | 0) | 0;
$85 = tempRet0;
$86 = ($35 | 0) < 0;
$87 = ($86 << 31) >> 31;
$88 = ___muldi3($35 | 0, $87 | 0, $0 | 0, $53 | 0) | 0;
$89 = tempRet0;
$90 = ($37 | 0) < 0;
$91 = ($90 << 31) >> 31;
$92 = ___muldi3($37 | 0, $91 | 0, $0 | 0, $53 | 0) | 0;
$93 = tempRet0;
$94 = ($2 | 0) < 0;
$95 = ($94 << 31) >> 31;
$96 = ___muldi3($19 | 0, $55 | 0, $2 | 0, $95 | 0) | 0;
$97 = tempRet0;
$98 = ($47 | 0) < 0;
$99 = ($98 << 31) >> 31;
$100 = ___muldi3($21 | 0, $59 | 0, $47 | 0, $99 | 0) | 0;
$101 = tempRet0;
$102 = ___muldi3($23 | 0, $63 | 0, $2 | 0, $95 | 0) | 0;
$103 = tempRet0;
$104 = ___muldi3($25 | 0, $67 | 0, $47 | 0, $99 | 0) | 0;
$105 = tempRet0;
$106 = ___muldi3($27 | 0, $71 | 0, $2 | 0, $95 | 0) | 0;
$107 = tempRet0;
$108 = ___muldi3($29 | 0, $75 | 0, $47 | 0, $99 | 0) | 0;
$109 = tempRet0;
$110 = ___muldi3($31 | 0, $79 | 0, $2 | 0, $95 | 0) | 0;
$111 = tempRet0;
$112 = ___muldi3($33 | 0, $83 | 0, $47 | 0, $99 | 0) | 0;
$113 = tempRet0;
$114 = ___muldi3($35 | 0, $87 | 0, $2 | 0, $95 | 0) | 0;
$115 = tempRet0;
$116 = ($46 | 0) < 0;
$117 = ($116 << 31) >> 31;
$118 = ___muldi3($46 | 0, $117 | 0, $47 | 0, $99 | 0) | 0;
$119 = tempRet0;
$120 = ($4 | 0) < 0;
$121 = ($120 << 31) >> 31;
$122 = ___muldi3($19 | 0, $55 | 0, $4 | 0, $121 | 0) | 0;
$123 = tempRet0;
$124 = ___muldi3($21 | 0, $59 | 0, $4 | 0, $121 | 0) | 0;
$125 = tempRet0;
$126 = ___muldi3($23 | 0, $63 | 0, $4 | 0, $121 | 0) | 0;
$127 = tempRet0;
$128 = ___muldi3($25 | 0, $67 | 0, $4 | 0, $121 | 0) | 0;
$129 = tempRet0;
$130 = ___muldi3($27 | 0, $71 | 0, $4 | 0, $121 | 0) | 0;
$131 = tempRet0;
$132 = ___muldi3($29 | 0, $75 | 0, $4 | 0, $121 | 0) | 0;
$133 = tempRet0;
$134 = ___muldi3($31 | 0, $79 | 0, $4 | 0, $121 | 0) | 0;
$135 = tempRet0;
$136 = ___muldi3($33 | 0, $83 | 0, $4 | 0, $121 | 0) | 0;
$137 = tempRet0;
$138 = ($45 | 0) < 0;
$139 = ($138 << 31) >> 31;
$140 = ___muldi3($45 | 0, $139 | 0, $4 | 0, $121 | 0) | 0;
$141 = tempRet0;
$142 = ___muldi3($46 | 0, $117 | 0, $4 | 0, $121 | 0) | 0;
$143 = tempRet0;
$144 = ($6 | 0) < 0;
$145 = ($144 << 31) >> 31;
$146 = ___muldi3($19 | 0, $55 | 0, $6 | 0, $145 | 0) | 0;
$147 = tempRet0;
$148 = ($48 | 0) < 0;
$149 = ($148 << 31) >> 31;
$150 = ___muldi3($21 | 0, $59 | 0, $48 | 0, $149 | 0) | 0;
$151 = tempRet0;
$152 = ___muldi3($23 | 0, $63 | 0, $6 | 0, $145 | 0) | 0;
$153 = tempRet0;
$154 = ___muldi3($25 | 0, $67 | 0, $48 | 0, $149 | 0) | 0;
$155 = tempRet0;
$156 = ___muldi3($27 | 0, $71 | 0, $6 | 0, $145 | 0) | 0;
$157 = tempRet0;
$158 = ___muldi3($29 | 0, $75 | 0, $48 | 0, $149 | 0) | 0;
$159 = tempRet0;
$160 = ___muldi3($31 | 0, $79 | 0, $6 | 0, $145 | 0) | 0;
$161 = tempRet0;
$162 = ($44 | 0) < 0;
$163 = ($162 << 31) >> 31;
$164 = ___muldi3($44 | 0, $163 | 0, $48 | 0, $149 | 0) | 0;
$165 = tempRet0;
$166 = ___muldi3($45 | 0, $139 | 0, $6 | 0, $145 | 0) | 0;
$167 = tempRet0;
$168 = ___muldi3($46 | 0, $117 | 0, $48 | 0, $149 | 0) | 0;
$169 = tempRet0;
$170 = ($8 | 0) < 0;
$171 = ($170 << 31) >> 31;
$172 = ___muldi3($19 | 0, $55 | 0, $8 | 0, $171 | 0) | 0;
$173 = tempRet0;
$174 = ___muldi3($21 | 0, $59 | 0, $8 | 0, $171 | 0) | 0;
$175 = tempRet0;
$176 = ___muldi3($23 | 0, $63 | 0, $8 | 0, $171 | 0) | 0;
$177 = tempRet0;
$178 = ___muldi3($25 | 0, $67 | 0, $8 | 0, $171 | 0) | 0;
$179 = tempRet0;
$180 = ___muldi3($27 | 0, $71 | 0, $8 | 0, $171 | 0) | 0;
$181 = tempRet0;
$182 = ___muldi3($29 | 0, $75 | 0, $8 | 0, $171 | 0) | 0;
$183 = tempRet0;
$184 = ($43 | 0) < 0;
$185 = ($184 << 31) >> 31;
$186 = ___muldi3($43 | 0, $185 | 0, $8 | 0, $171 | 0) | 0;
$187 = tempRet0;
$188 = ___muldi3($44 | 0, $163 | 0, $8 | 0, $171 | 0) | 0;
$189 = tempRet0;
$190 = ___muldi3($45 | 0, $139 | 0, $8 | 0, $171 | 0) | 0;
$191 = tempRet0;
$192 = ___muldi3($46 | 0, $117 | 0, $8 | 0, $171 | 0) | 0;
$193 = tempRet0;
$194 = ($10 | 0) < 0;
$195 = ($194 << 31) >> 31;
$196 = ___muldi3($19 | 0, $55 | 0, $10 | 0, $195 | 0) | 0;
$197 = tempRet0;
$198 = ($49 | 0) < 0;
$199 = ($198 << 31) >> 31;
$200 = ___muldi3($21 | 0, $59 | 0, $49 | 0, $199 | 0) | 0;
$201 = tempRet0;
$202 = ___muldi3($23 | 0, $63 | 0, $10 | 0, $195 | 0) | 0;
$203 = tempRet0;
$204 = ___muldi3($25 | 0, $67 | 0, $49 | 0, $199 | 0) | 0;
$205 = tempRet0;
$206 = ___muldi3($27 | 0, $71 | 0, $10 | 0, $195 | 0) | 0;
$207 = tempRet0;
$208 = ($42 | 0) < 0;
$209 = ($208 << 31) >> 31;
$210 = ___muldi3($42 | 0, $209 | 0, $49 | 0, $199 | 0) | 0;
$211 = tempRet0;
$212 = ___muldi3($43 | 0, $185 | 0, $10 | 0, $195 | 0) | 0;
$213 = tempRet0;
$214 = ___muldi3($44 | 0, $163 | 0, $49 | 0, $199 | 0) | 0;
$215 = tempRet0;
$216 = ___muldi3($45 | 0, $139 | 0, $10 | 0, $195 | 0) | 0;
$217 = tempRet0;
$218 = ___muldi3($46 | 0, $117 | 0, $49 | 0, $199 | 0) | 0;
$219 = tempRet0;
$220 = ($12 | 0) < 0;
$221 = ($220 << 31) >> 31;
$222 = ___muldi3($19 | 0, $55 | 0, $12 | 0, $221 | 0) | 0;
$223 = tempRet0;
$224 = ___muldi3($21 | 0, $59 | 0, $12 | 0, $221 | 0) | 0;
$225 = tempRet0;
$226 = ___muldi3($23 | 0, $63 | 0, $12 | 0, $221 | 0) | 0;
$227 = tempRet0;
$228 = ___muldi3($25 | 0, $67 | 0, $12 | 0, $221 | 0) | 0;
$229 = tempRet0;
$230 = ($41 | 0) < 0;
$231 = ($230 << 31) >> 31;
$232 = ___muldi3($41 | 0, $231 | 0, $12 | 0, $221 | 0) | 0;
$233 = tempRet0;
$234 = ___muldi3($42 | 0, $209 | 0, $12 | 0, $221 | 0) | 0;
$235 = tempRet0;
$236 = ___muldi3($43 | 0, $185 | 0, $12 | 0, $221 | 0) | 0;
$237 = tempRet0;
$238 = ___muldi3($44 | 0, $163 | 0, $12 | 0, $221 | 0) | 0;
$239 = tempRet0;
$240 = ___muldi3($45 | 0, $139 | 0, $12 | 0, $221 | 0) | 0;
$241 = tempRet0;
$242 = ___muldi3($46 | 0, $117 | 0, $12 | 0, $221 | 0) | 0;
$243 = tempRet0;
$244 = ($14 | 0) < 0;
$245 = ($244 << 31) >> 31;
$246 = ___muldi3($19 | 0, $55 | 0, $14 | 0, $245 | 0) | 0;
$247 = tempRet0;
$248 = ($50 | 0) < 0;
$249 = ($248 << 31) >> 31;
$250 = ___muldi3($21 | 0, $59 | 0, $50 | 0, $249 | 0) | 0;
$251 = tempRet0;
$252 = ___muldi3($23 | 0, $63 | 0, $14 | 0, $245 | 0) | 0;
$253 = tempRet0;
$254 = ($40 | 0) < 0;
$255 = ($254 << 31) >> 31;
$256 = ___muldi3($40 | 0, $255 | 0, $50 | 0, $249 | 0) | 0;
$257 = tempRet0;
$258 = ___muldi3($41 | 0, $231 | 0, $14 | 0, $245 | 0) | 0;
$259 = tempRet0;
$260 = ___muldi3($42 | 0, $209 | 0, $50 | 0, $249 | 0) | 0;
$261 = tempRet0;
$262 = ___muldi3($43 | 0, $185 | 0, $14 | 0, $245 | 0) | 0;
$263 = tempRet0;
$264 = ___muldi3($44 | 0, $163 | 0, $50 | 0, $249 | 0) | 0;
$265 = tempRet0;
$266 = ___muldi3($45 | 0, $139 | 0, $14 | 0, $245 | 0) | 0;
$267 = tempRet0;
$268 = ___muldi3($46 | 0, $117 | 0, $50 | 0, $249 | 0) | 0;
$269 = tempRet0;
$270 = ($16 | 0) < 0;
$271 = ($270 << 31) >> 31;
$272 = ___muldi3($19 | 0, $55 | 0, $16 | 0, $271 | 0) | 0;
$273 = tempRet0;
$274 = ___muldi3($21 | 0, $59 | 0, $16 | 0, $271 | 0) | 0;
$275 = tempRet0;
$276 = ($39 | 0) < 0;
$277 = ($276 << 31) >> 31;
$278 = ___muldi3($39 | 0, $277 | 0, $16 | 0, $271 | 0) | 0;
$279 = tempRet0;
$280 = ___muldi3($40 | 0, $255 | 0, $16 | 0, $271 | 0) | 0;
$281 = tempRet0;
$282 = ___muldi3($41 | 0, $231 | 0, $16 | 0, $271 | 0) | 0;
$283 = tempRet0;
$284 = ___muldi3($42 | 0, $209 | 0, $16 | 0, $271 | 0) | 0;
$285 = tempRet0;
$286 = ___muldi3($43 | 0, $185 | 0, $16 | 0, $271 | 0) | 0;
$287 = tempRet0;
$288 = ___muldi3($44 | 0, $163 | 0, $16 | 0, $271 | 0) | 0;
$289 = tempRet0;
$290 = ___muldi3($45 | 0, $139 | 0, $16 | 0, $271 | 0) | 0;
$291 = tempRet0;
$292 = ___muldi3($46 | 0, $117 | 0, $16 | 0, $271 | 0) | 0;
$293 = tempRet0;
$294 = ($18 | 0) < 0;
$295 = ($294 << 31) >> 31;
$296 = ___muldi3($19 | 0, $55 | 0, $18 | 0, $295 | 0) | 0;
$297 = tempRet0;
$298 = ($51 | 0) < 0;
$299 = ($298 << 31) >> 31;
$300 = ($38 | 0) < 0;
$301 = ($300 << 31) >> 31;
$302 = ___muldi3($38 | 0, $301 | 0, $51 | 0, $299 | 0) | 0;
$303 = tempRet0;
$304 = ___muldi3($39 | 0, $277 | 0, $18 | 0, $295 | 0) | 0;
$305 = tempRet0;
$306 = ___muldi3($40 | 0, $255 | 0, $51 | 0, $299 | 0) | 0;
$307 = tempRet0;
$308 = ___muldi3($41 | 0, $231 | 0, $18 | 0, $295 | 0) | 0;
$309 = tempRet0;
$310 = ___muldi3($42 | 0, $209 | 0, $51 | 0, $299 | 0) | 0;
$311 = tempRet0;
$312 = ___muldi3($43 | 0, $185 | 0, $18 | 0, $295 | 0) | 0;
$313 = tempRet0;
$314 = ___muldi3($44 | 0, $163 | 0, $51 | 0, $299 | 0) | 0;
$315 = tempRet0;
$316 = ___muldi3($45 | 0, $139 | 0, $18 | 0, $295 | 0) | 0;
$317 = tempRet0;
$318 = ___muldi3($46 | 0, $117 | 0, $51 | 0, $299 | 0) | 0;
$319 = tempRet0;
$320 = _i64Add($302 | 0, $303 | 0, $56 | 0, $57 | 0) | 0;
$321 = tempRet0;
$322 = _i64Add($320 | 0, $321 | 0, $278 | 0, $279 | 0) | 0;
$323 = tempRet0;
$324 = _i64Add($322 | 0, $323 | 0, $256 | 0, $257 | 0) | 0;
$325 = tempRet0;
$326 = _i64Add($324 | 0, $325 | 0, $232 | 0, $233 | 0) | 0;
$327 = tempRet0;
$328 = _i64Add($326 | 0, $327 | 0, $210 | 0, $211 | 0) | 0;
$329 = tempRet0;
$330 = _i64Add($328 | 0, $329 | 0, $186 | 0, $187 | 0) | 0;
$331 = tempRet0;
$332 = _i64Add($330 | 0, $331 | 0, $164 | 0, $165 | 0) | 0;
$333 = tempRet0;
$334 = _i64Add($332 | 0, $333 | 0, $140 | 0, $141 | 0) | 0;
$335 = tempRet0;
$336 = _i64Add($334 | 0, $335 | 0, $118 | 0, $119 | 0) | 0;
$337 = tempRet0;
$338 = _i64Add($60 | 0, $61 | 0, $96 | 0, $97 | 0) | 0;
$339 = tempRet0;
$340 = _i64Add($150 | 0, $151 | 0, $172 | 0, $173 | 0) | 0;
$341 = tempRet0;
$342 = _i64Add($340 | 0, $341 | 0, $126 | 0, $127 | 0) | 0;
$343 = tempRet0;
$344 = _i64Add($342 | 0, $343 | 0, $104 | 0, $105 | 0) | 0;
$345 = tempRet0;
$346 = _i64Add($344 | 0, $345 | 0, $72 | 0, $73 | 0) | 0;
$347 = tempRet0;
$348 = _i64Add($346 | 0, $347 | 0, $310 | 0, $311 | 0) | 0;
$349 = tempRet0;
$350 = _i64Add($348 | 0, $349 | 0, $286 | 0, $287 | 0) | 0;
$351 = tempRet0;
$352 = _i64Add($350 | 0, $351 | 0, $264 | 0, $265 | 0) | 0;
$353 = tempRet0;
$354 = _i64Add($352 | 0, $353 | 0, $240 | 0, $241 | 0) | 0;
$355 = tempRet0;
$356 = _i64Add($354 | 0, $355 | 0, $218 | 0, $219 | 0) | 0;
$357 = tempRet0;
$358 = _i64Add($336 | 0, $337 | 0, 33554432, 0) | 0;
$359 = tempRet0;
$360 = _bitshift64Ashr($358 | 0, $359 | 0, 26) | 0;
$361 = tempRet0;
$362 = _i64Add($338 | 0, $339 | 0, $304 | 0, $305 | 0) | 0;
$363 = tempRet0;
$364 = _i64Add($362 | 0, $363 | 0, $280 | 0, $281 | 0) | 0;
$365 = tempRet0;
$366 = _i64Add($364 | 0, $365 | 0, $258 | 0, $259 | 0) | 0;
$367 = tempRet0;
$368 = _i64Add($366 | 0, $367 | 0, $234 | 0, $235 | 0) | 0;
$369 = tempRet0;
$370 = _i64Add($368 | 0, $369 | 0, $212 | 0, $213 | 0) | 0;
$371 = tempRet0;
$372 = _i64Add($370 | 0, $371 | 0, $188 | 0, $189 | 0) | 0;
$373 = tempRet0;
$374 = _i64Add($372 | 0, $373 | 0, $166 | 0, $167 | 0) | 0;
$375 = tempRet0;
$376 = _i64Add($374 | 0, $375 | 0, $142 | 0, $143 | 0) | 0;
$377 = tempRet0;
$378 = _i64Add($376 | 0, $377 | 0, $360 | 0, $361 | 0) | 0;
$379 = tempRet0;
$380 = _bitshift64Shl($360 | 0, $361 | 0, 26) | 0;
$381 = tempRet0;
$382 = _i64Subtract($336 | 0, $337 | 0, $380 | 0, $381 | 0) | 0;
$383 = tempRet0;
$384 = _i64Add($356 | 0, $357 | 0, 33554432, 0) | 0;
$385 = tempRet0;
$386 = _bitshift64Ashr($384 | 0, $385 | 0, 26) | 0;
$387 = tempRet0;
$388 = _i64Add($174 | 0, $175 | 0, $196 | 0, $197 | 0) | 0;
$389 = tempRet0;
$390 = _i64Add($388 | 0, $389 | 0, $152 | 0, $153 | 0) | 0;
$391 = tempRet0;
$392 = _i64Add($390 | 0, $391 | 0, $128 | 0, $129 | 0) | 0;
$393 = tempRet0;
$394 = _i64Add($392 | 0, $393 | 0, $106 | 0, $107 | 0) | 0;
$395 = tempRet0;
$396 = _i64Add($394 | 0, $395 | 0, $76 | 0, $77 | 0) | 0;
$397 = tempRet0;
$398 = _i64Add($396 | 0, $397 | 0, $312 | 0, $313 | 0) | 0;
$399 = tempRet0;
$400 = _i64Add($398 | 0, $399 | 0, $288 | 0, $289 | 0) | 0;
$401 = tempRet0;
$402 = _i64Add($400 | 0, $401 | 0, $266 | 0, $267 | 0) | 0;
$403 = tempRet0;
$404 = _i64Add($402 | 0, $403 | 0, $242 | 0, $243 | 0) | 0;
$405 = tempRet0;
$406 = _i64Add($404 | 0, $405 | 0, $386 | 0, $387 | 0) | 0;
$407 = tempRet0;
$408 = _bitshift64Shl($386 | 0, $387 | 0, 26) | 0;
$409 = tempRet0;
$410 = _i64Subtract($356 | 0, $357 | 0, $408 | 0, $409 | 0) | 0;
$411 = tempRet0;
$412 = _i64Add($378 | 0, $379 | 0, 16777216, 0) | 0;
$413 = tempRet0;
$414 = _bitshift64Ashr($412 | 0, $413 | 0, 25) | 0;
$415 = tempRet0;
$416 = _i64Add($100 | 0, $101 | 0, $122 | 0, $123 | 0) | 0;
$417 = tempRet0;
$418 = _i64Add($416 | 0, $417 | 0, $64 | 0, $65 | 0) | 0;
$419 = tempRet0;
$420 = _i64Add($418 | 0, $419 | 0, $306 | 0, $307 | 0) | 0;
$421 = tempRet0;
$422 = _i64Add($420 | 0, $421 | 0, $282 | 0, $283 | 0) | 0;
$423 = tempRet0;
$424 = _i64Add($422 | 0, $423 | 0, $260 | 0, $261 | 0) | 0;
$425 = tempRet0;
$426 = _i64Add($424 | 0, $425 | 0, $236 | 0, $237 | 0) | 0;
$427 = tempRet0;
$428 = _i64Add($426 | 0, $427 | 0, $214 | 0, $215 | 0) | 0;
$429 = tempRet0;
$430 = _i64Add($428 | 0, $429 | 0, $190 | 0, $191 | 0) | 0;
$431 = tempRet0;
$432 = _i64Add($430 | 0, $431 | 0, $168 | 0, $169 | 0) | 0;
$433 = tempRet0;
$434 = _i64Add($432 | 0, $433 | 0, $414 | 0, $415 | 0) | 0;
$435 = tempRet0;
$436 = _bitshift64Shl($414 | 0, $415 | 0, 25) | 0;
$437 = tempRet0;
$438 = _i64Subtract($378 | 0, $379 | 0, $436 | 0, $437 | 0) | 0;
$439 = tempRet0;
$440 = _i64Add($406 | 0, $407 | 0, 16777216, 0) | 0;
$441 = tempRet0;
$442 = _bitshift64Ashr($440 | 0, $441 | 0, 25) | 0;
$443 = tempRet0;
$444 = _i64Add($200 | 0, $201 | 0, $222 | 0, $223 | 0) | 0;
$445 = tempRet0;
$446 = _i64Add($444 | 0, $445 | 0, $176 | 0, $177 | 0) | 0;
$447 = tempRet0;
$448 = _i64Add($446 | 0, $447 | 0, $154 | 0, $155 | 0) | 0;
$449 = tempRet0;
$450 = _i64Add($448 | 0, $449 | 0, $130 | 0, $131 | 0) | 0;
$451 = tempRet0;
$452 = _i64Add($450 | 0, $451 | 0, $108 | 0, $109 | 0) | 0;
$453 = tempRet0;
$454 = _i64Add($452 | 0, $453 | 0, $80 | 0, $81 | 0) | 0;
$455 = tempRet0;
$456 = _i64Add($454 | 0, $455 | 0, $314 | 0, $315 | 0) | 0;
$457 = tempRet0;
$458 = _i64Add($456 | 0, $457 | 0, $290 | 0, $291 | 0) | 0;
$459 = tempRet0;
$460 = _i64Add($458 | 0, $459 | 0, $268 | 0, $269 | 0) | 0;
$461 = tempRet0;
$462 = _i64Add($460 | 0, $461 | 0, $442 | 0, $443 | 0) | 0;
$463 = tempRet0;
$464 = _bitshift64Shl($442 | 0, $443 | 0, 25) | 0;
$465 = tempRet0;
$466 = _i64Subtract($406 | 0, $407 | 0, $464 | 0, $465 | 0) | 0;
$467 = tempRet0;
$468 = _i64Add($434 | 0, $435 | 0, 33554432, 0) | 0;
$469 = tempRet0;
$470 = _bitshift64Ashr($468 | 0, $469 | 0, 26) | 0;
$471 = tempRet0;
$472 = _i64Add($124 | 0, $125 | 0, $146 | 0, $147 | 0) | 0;
$473 = tempRet0;
$474 = _i64Add($472 | 0, $473 | 0, $102 | 0, $103 | 0) | 0;
$475 = tempRet0;
$476 = _i64Add($474 | 0, $475 | 0, $68 | 0, $69 | 0) | 0;
$477 = tempRet0;
$478 = _i64Add($476 | 0, $477 | 0, $308 | 0, $309 | 0) | 0;
$479 = tempRet0;
$480 = _i64Add($478 | 0, $479 | 0, $284 | 0, $285 | 0) | 0;
$481 = tempRet0;
$482 = _i64Add($480 | 0, $481 | 0, $262 | 0, $263 | 0) | 0;
$483 = tempRet0;
$484 = _i64Add($482 | 0, $483 | 0, $238 | 0, $239 | 0) | 0;
$485 = tempRet0;
$486 = _i64Add($484 | 0, $485 | 0, $216 | 0, $217 | 0) | 0;
$487 = tempRet0;
$488 = _i64Add($486 | 0, $487 | 0, $192 | 0, $193 | 0) | 0;
$489 = tempRet0;
$490 = _i64Add($488 | 0, $489 | 0, $470 | 0, $471 | 0) | 0;
$491 = tempRet0;
$492 = _bitshift64Shl($470 | 0, $471 | 0, 26) | 0;
$493 = tempRet0;
$494 = _i64Subtract($434 | 0, $435 | 0, $492 | 0, $493 | 0) | 0;
$495 = tempRet0;
$496 = _i64Add($462 | 0, $463 | 0, 33554432, 0) | 0;
$497 = tempRet0;
$498 = _bitshift64Ashr($496 | 0, $497 | 0, 26) | 0;
$499 = tempRet0;
$500 = _i64Add($224 | 0, $225 | 0, $246 | 0, $247 | 0) | 0;
$501 = tempRet0;
$502 = _i64Add($500 | 0, $501 | 0, $202 | 0, $203 | 0) | 0;
$503 = tempRet0;
$504 = _i64Add($502 | 0, $503 | 0, $178 | 0, $179 | 0) | 0;
$505 = tempRet0;
$506 = _i64Add($504 | 0, $505 | 0, $156 | 0, $157 | 0) | 0;
$507 = tempRet0;
$508 = _i64Add($506 | 0, $507 | 0, $132 | 0, $133 | 0) | 0;
$509 = tempRet0;
$510 = _i64Add($508 | 0, $509 | 0, $110 | 0, $111 | 0) | 0;
$511 = tempRet0;
$512 = _i64Add($510 | 0, $511 | 0, $84 | 0, $85 | 0) | 0;
$513 = tempRet0;
$514 = _i64Add($512 | 0, $513 | 0, $316 | 0, $317 | 0) | 0;
$515 = tempRet0;
$516 = _i64Add($514 | 0, $515 | 0, $292 | 0, $293 | 0) | 0;
$517 = tempRet0;
$518 = _i64Add($516 | 0, $517 | 0, $498 | 0, $499 | 0) | 0;
$519 = tempRet0;
$520 = _bitshift64Shl($498 | 0, $499 | 0, 26) | 0;
$521 = tempRet0;
$522 = _i64Subtract($462 | 0, $463 | 0, $520 | 0, $521 | 0) | 0;
$523 = tempRet0;
$524 = _i64Add($490 | 0, $491 | 0, 16777216, 0) | 0;
$525 = tempRet0;
$526 = _bitshift64Ashr($524 | 0, $525 | 0, 25) | 0;
$527 = tempRet0;
$528 = _i64Add($526 | 0, $527 | 0, $410 | 0, $411 | 0) | 0;
$529 = tempRet0;
$530 = _bitshift64Shl($526 | 0, $527 | 0, 25) | 0;
$531 = tempRet0;
$532 = _i64Subtract($490 | 0, $491 | 0, $530 | 0, $531 | 0) | 0;
$533 = tempRet0;
$534 = _i64Add($518 | 0, $519 | 0, 16777216, 0) | 0;
$535 = tempRet0;
$536 = _bitshift64Ashr($534 | 0, $535 | 0, 25) | 0;
$537 = tempRet0;
$538 = _i64Add($250 | 0, $251 | 0, $272 | 0, $273 | 0) | 0;
$539 = tempRet0;
$540 = _i64Add($538 | 0, $539 | 0, $226 | 0, $227 | 0) | 0;
$541 = tempRet0;
$542 = _i64Add($540 | 0, $541 | 0, $204 | 0, $205 | 0) | 0;
$543 = tempRet0;
$544 = _i64Add($542 | 0, $543 | 0, $180 | 0, $181 | 0) | 0;
$545 = tempRet0;
$546 = _i64Add($544 | 0, $545 | 0, $158 | 0, $159 | 0) | 0;
$547 = tempRet0;
$548 = _i64Add($546 | 0, $547 | 0, $134 | 0, $135 | 0) | 0;
$549 = tempRet0;
$550 = _i64Add($548 | 0, $549 | 0, $112 | 0, $113 | 0) | 0;
$551 = tempRet0;
$552 = _i64Add($550 | 0, $551 | 0, $88 | 0, $89 | 0) | 0;
$553 = tempRet0;
$554 = _i64Add($552 | 0, $553 | 0, $318 | 0, $319 | 0) | 0;
$555 = tempRet0;
$556 = _i64Add($554 | 0, $555 | 0, $536 | 0, $537 | 0) | 0;
$557 = tempRet0;
$558 = _bitshift64Shl($536 | 0, $537 | 0, 25) | 0;
$559 = tempRet0;
$560 = _i64Subtract($518 | 0, $519 | 0, $558 | 0, $559 | 0) | 0;
$561 = tempRet0;
$562 = _i64Add($528 | 0, $529 | 0, 33554432, 0) | 0;
$563 = tempRet0;
$564 = _bitshift64Ashr($562 | 0, $563 | 0, 26) | 0;
$565 = tempRet0;
$566 = _i64Add($466 | 0, $467 | 0, $564 | 0, $565 | 0) | 0;
$567 = tempRet0;
$568 = _bitshift64Shl($564 | 0, $565 | 0, 26) | 0;
$569 = tempRet0;
$570 = _i64Subtract($528 | 0, $529 | 0, $568 | 0, $569 | 0) | 0;
$571 = tempRet0;
$572 = _i64Add($556 | 0, $557 | 0, 33554432, 0) | 0;
$573 = tempRet0;
$574 = _bitshift64Ashr($572 | 0, $573 | 0, 26) | 0;
$575 = tempRet0;
$576 = _i64Add($274 | 0, $275 | 0, $296 | 0, $297 | 0) | 0;
$577 = tempRet0;
$578 = _i64Add($576 | 0, $577 | 0, $252 | 0, $253 | 0) | 0;
$579 = tempRet0;
$580 = _i64Add($578 | 0, $579 | 0, $228 | 0, $229 | 0) | 0;
$581 = tempRet0;
$582 = _i64Add($580 | 0, $581 | 0, $206 | 0, $207 | 0) | 0;
$583 = tempRet0;
$584 = _i64Add($582 | 0, $583 | 0, $182 | 0, $183 | 0) | 0;
$585 = tempRet0;
$586 = _i64Add($584 | 0, $585 | 0, $160 | 0, $161 | 0) | 0;
$587 = tempRet0;
$588 = _i64Add($586 | 0, $587 | 0, $136 | 0, $137 | 0) | 0;
$589 = tempRet0;
$590 = _i64Add($588 | 0, $589 | 0, $114 | 0, $115 | 0) | 0;
$591 = tempRet0;
$592 = _i64Add($590 | 0, $591 | 0, $92 | 0, $93 | 0) | 0;
$593 = tempRet0;
$594 = _i64Add($592 | 0, $593 | 0, $574 | 0, $575 | 0) | 0;
$595 = tempRet0;
$596 = _bitshift64Shl($574 | 0, $575 | 0, 26) | 0;
$597 = tempRet0;
$598 = _i64Subtract($556 | 0, $557 | 0, $596 | 0, $597 | 0) | 0;
$599 = tempRet0;
$600 = _i64Add($594 | 0, $595 | 0, 16777216, 0) | 0;
$601 = tempRet0;
$602 = _bitshift64Ashr($600 | 0, $601 | 0, 25) | 0;
$603 = tempRet0;
$604 = ___muldi3($602 | 0, $603 | 0, 19, 0) | 0;
$605 = tempRet0;
$606 = _i64Add($604 | 0, $605 | 0, $382 | 0, $383 | 0) | 0;
$607 = tempRet0;
$608 = _bitshift64Shl($602 | 0, $603 | 0, 25) | 0;
$609 = tempRet0;
$610 = _i64Subtract($594 | 0, $595 | 0, $608 | 0, $609 | 0) | 0;
$611 = tempRet0;
$612 = _i64Add($606 | 0, $607 | 0, 33554432, 0) | 0;
$613 = tempRet0;
$614 = _bitshift64Ashr($612 | 0, $613 | 0, 26) | 0;
$615 = tempRet0;
$616 = _i64Add($438 | 0, $439 | 0, $614 | 0, $615 | 0) | 0;
$617 = tempRet0;
$618 = _bitshift64Shl($614 | 0, $615 | 0, 26) | 0;
$619 = tempRet0;
$620 = _i64Subtract($606 | 0, $607 | 0, $618 | 0, $619 | 0) | 0;
$621 = tempRet0;
HEAP32[$h >> 2] = $620;
$622 = ($h + 4) | 0;
HEAP32[$622 >> 2] = $616;
$623 = ($h + 8) | 0;
HEAP32[$623 >> 2] = $494;
$624 = ($h + 12) | 0;
HEAP32[$624 >> 2] = $532;
$625 = ($h + 16) | 0;
HEAP32[$625 >> 2] = $570;
$626 = ($h + 20) | 0;
HEAP32[$626 >> 2] = $566;
$627 = ($h + 24) | 0;
HEAP32[$627 >> 2] = $522;
$628 = ($h + 28) | 0;
HEAP32[$628 >> 2] = $560;
$629 = ($h + 32) | 0;
HEAP32[$629 >> 2] = $598;
$630 = ($h + 36) | 0;
HEAP32[$630 >> 2] = $610;
STACKTOP = sp;
return;
}
function _crypto_sign_ed25519_ref10_fe_neg($h, $f) {
$h = $h | 0;
$f = $f | 0;
var $0 = 0,
$1 = 0,
$10 = 0,
$11 = 0,
$12 = 0,
$13 = 0,
$14 = 0,
$15 = 0,
$16 = 0,
$17 = 0,
$18 = 0,
$19 = 0,
$2 = 0,
$20 = 0,
$21 = 0,
$22 = 0,
$23 = 0,
$24 = 0,
$25 = 0,
$26 = 0;
var $27 = 0,
$28 = 0,
$29 = 0,
$3 = 0,
$30 = 0,
$31 = 0,
$32 = 0,
$33 = 0,
$34 = 0,
$35 = 0,
$36 = 0,
$37 = 0,
$4 = 0,
$5 = 0,
$6 = 0,
$7 = 0,
$8 = 0,
$9 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = HEAP32[$f >> 2] | 0;
$1 = ($f + 4) | 0;
$2 = HEAP32[$1 >> 2] | 0;
$3 = ($f + 8) | 0;
$4 = HEAP32[$3 >> 2] | 0;
$5 = ($f + 12) | 0;
$6 = HEAP32[$5 >> 2] | 0;
$7 = ($f + 16) | 0;
$8 = HEAP32[$7 >> 2] | 0;
$9 = ($f + 20) | 0;
$10 = HEAP32[$9 >> 2] | 0;
$11 = ($f + 24) | 0;
$12 = HEAP32[$11 >> 2] | 0;
$13 = ($f + 28) | 0;
$14 = HEAP32[$13 >> 2] | 0;
$15 = ($f + 32) | 0;
$16 = HEAP32[$15 >> 2] | 0;
$17 = ($f + 36) | 0;
$18 = HEAP32[$17 >> 2] | 0;
$19 = (0 - $0) | 0;
$20 = (0 - $2) | 0;
$21 = (0 - $4) | 0;
$22 = (0 - $6) | 0;
$23 = (0 - $8) | 0;
$24 = (0 - $10) | 0;
$25 = (0 - $12) | 0;
$26 = (0 - $14) | 0;
$27 = (0 - $16) | 0;
$28 = (0 - $18) | 0;
HEAP32[$h >> 2] = $19;
$29 = ($h + 4) | 0;
HEAP32[$29 >> 2] = $20;
$30 = ($h + 8) | 0;
HEAP32[$30 >> 2] = $21;
$31 = ($h + 12) | 0;
HEAP32[$31 >> 2] = $22;
$32 = ($h + 16) | 0;
HEAP32[$32 >> 2] = $23;
$33 = ($h + 20) | 0;
HEAP32[$33 >> 2] = $24;
$34 = ($h + 24) | 0;
HEAP32[$34 >> 2] = $25;
$35 = ($h + 28) | 0;
HEAP32[$35 >> 2] = $26;
$36 = ($h + 32) | 0;
HEAP32[$36 >> 2] = $27;
$37 = ($h + 36) | 0;
HEAP32[$37 >> 2] = $28;
STACKTOP = sp;
return;
}
function _crypto_sign_ed25519_ref10_fe_pow22523($out, $z) {
$out = $out | 0;
$z = $z | 0;
var $0 = 0,
$1 = 0,
$2 = 0,
$exitcond = 0,
$exitcond10 = 0,
$exitcond11 = 0,
$i$74 = 0,
$i$83 = 0,
$i$92 = 0,
$t0 = 0,
$t1 = 0,
$t2 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
STACKTOP = (STACKTOP + 128) | 0;
$t0 = (sp + 80) | 0;
$t1 = (sp + 40) | 0;
$t2 = sp;
_crypto_sign_ed25519_ref10_fe_sq($t0, $z);
_crypto_sign_ed25519_ref10_fe_sq($t1, $t0);
_crypto_sign_ed25519_ref10_fe_sq($t1, $t1);
_crypto_sign_ed25519_ref10_fe_mul($t1, $z, $t1);
_crypto_sign_ed25519_ref10_fe_mul($t0, $t0, $t1);
_crypto_sign_ed25519_ref10_fe_sq($t0, $t0);
_crypto_sign_ed25519_ref10_fe_mul($t0, $t1, $t0);
_crypto_sign_ed25519_ref10_fe_sq($t1, $t0);
_crypto_sign_ed25519_ref10_fe_sq($t1, $t1);
_crypto_sign_ed25519_ref10_fe_sq($t1, $t1);
_crypto_sign_ed25519_ref10_fe_sq($t1, $t1);
_crypto_sign_ed25519_ref10_fe_sq($t1, $t1);
_crypto_sign_ed25519_ref10_fe_mul($t0, $t1, $t0);
_crypto_sign_ed25519_ref10_fe_sq($t1, $t0);
_crypto_sign_ed25519_ref10_fe_sq($t1, $t1);
_crypto_sign_ed25519_ref10_fe_sq($t1, $t1);
_crypto_sign_ed25519_ref10_fe_sq($t1, $t1);
_crypto_sign_ed25519_ref10_fe_sq($t1, $t1);
_crypto_sign_ed25519_ref10_fe_sq($t1, $t1);
_crypto_sign_ed25519_ref10_fe_sq($t1, $t1);
_crypto_sign_ed25519_ref10_fe_sq($t1, $t1);
_crypto_sign_ed25519_ref10_fe_sq($t1, $t1);
_crypto_sign_ed25519_ref10_fe_sq($t1, $t1);
_crypto_sign_ed25519_ref10_fe_mul($t1, $t1, $t0);
_crypto_sign_ed25519_ref10_fe_sq($t2, $t1);
_crypto_sign_ed25519_ref10_fe_sq($t2, $t2);
_crypto_sign_ed25519_ref10_fe_sq($t2, $t2);
_crypto_sign_ed25519_ref10_fe_sq($t2, $t2);
_crypto_sign_ed25519_ref10_fe_sq($t2, $t2);
_crypto_sign_ed25519_ref10_fe_sq($t2, $t2);
_crypto_sign_ed25519_ref10_fe_sq($t2, $t2);
_crypto_sign_ed25519_ref10_fe_sq($t2, $t2);
_crypto_sign_ed25519_ref10_fe_sq($t2, $t2);
_crypto_sign_ed25519_ref10_fe_sq($t2, $t2);
_crypto_sign_ed25519_ref10_fe_sq($t2, $t2);
_crypto_sign_ed25519_ref10_fe_sq($t2, $t2);
_crypto_sign_ed25519_ref10_fe_sq($t2, $t2);
_crypto_sign_ed25519_ref10_fe_sq($t2, $t2);
_crypto_sign_ed25519_ref10_fe_sq($t2, $t2);
_crypto_sign_ed25519_ref10_fe_sq($t2, $t2);
_crypto_sign_ed25519_ref10_fe_sq($t2, $t2);
_crypto_sign_ed25519_ref10_fe_sq($t2, $t2);
_crypto_sign_ed25519_ref10_fe_sq($t2, $t2);
_crypto_sign_ed25519_ref10_fe_sq($t2, $t2);
_crypto_sign_ed25519_ref10_fe_mul($t1, $t2, $t1);
_crypto_sign_ed25519_ref10_fe_sq($t1, $t1);
_crypto_sign_ed25519_ref10_fe_sq($t1, $t1);
_crypto_sign_ed25519_ref10_fe_sq($t1, $t1);
_crypto_sign_ed25519_ref10_fe_sq($t1, $t1);
_crypto_sign_ed25519_ref10_fe_sq($t1, $t1);
_crypto_sign_ed25519_ref10_fe_sq($t1, $t1);
_crypto_sign_ed25519_ref10_fe_sq($t1, $t1);
_crypto_sign_ed25519_ref10_fe_sq($t1, $t1);
_crypto_sign_ed25519_ref10_fe_sq($t1, $t1);
_crypto_sign_ed25519_ref10_fe_sq($t1, $t1);
_crypto_sign_ed25519_ref10_fe_mul($t0, $t1, $t0);
_crypto_sign_ed25519_ref10_fe_sq($t1, $t0);
$i$74 = 1;
while (1) {
_crypto_sign_ed25519_ref10_fe_sq($t1, $t1);
$0 = ($i$74 + 1) | 0;
$exitcond11 = ($0 | 0) == 50;
if ($exitcond11) {
break;
} else {
$i$74 = $0;
}
}
_crypto_sign_ed25519_ref10_fe_mul($t1, $t1, $t0);
_crypto_sign_ed25519_ref10_fe_sq($t2, $t1);
$i$83 = 1;
while (1) {
_crypto_sign_ed25519_ref10_fe_sq($t2, $t2);
$1 = ($i$83 + 1) | 0;
$exitcond10 = ($1 | 0) == 100;
if ($exitcond10) {
break;
} else {
$i$83 = $1;
}
}
_crypto_sign_ed25519_ref10_fe_mul($t1, $t2, $t1);
_crypto_sign_ed25519_ref10_fe_sq($t1, $t1);
$i$92 = 1;
while (1) {
_crypto_sign_ed25519_ref10_fe_sq($t1, $t1);
$2 = ($i$92 + 1) | 0;
$exitcond = ($2 | 0) == 50;
if ($exitcond) {
break;
} else {
$i$92 = $2;
}
}
_crypto_sign_ed25519_ref10_fe_mul($t0, $t1, $t0);
_crypto_sign_ed25519_ref10_fe_sq($t0, $t0);
_crypto_sign_ed25519_ref10_fe_sq($t0, $t0);
_crypto_sign_ed25519_ref10_fe_mul($out, $t0, $z);
STACKTOP = sp;
return;
}
function _crypto_sign_ed25519_ref10_fe_sq($h, $f) {
$h = $h | 0;
$f = $f | 0;
var $0 = 0,
$1 = 0,
$10 = 0,
$100 = 0,
$101 = 0,
$102 = 0,
$103 = 0,
$104 = 0,
$105 = 0,
$106 = 0,
$107 = 0,
$108 = 0,
$109 = 0,
$11 = 0,
$110 = 0,
$111 = 0,
$112 = 0,
$113 = 0,
$114 = 0,
$115 = 0;
var $116 = 0,
$117 = 0,
$118 = 0,
$119 = 0,
$12 = 0,
$120 = 0,
$121 = 0,
$122 = 0,
$123 = 0,
$124 = 0,
$125 = 0,
$126 = 0,
$127 = 0,
$128 = 0,
$129 = 0,
$13 = 0,
$130 = 0,
$131 = 0,
$132 = 0,
$133 = 0;
var $134 = 0,
$135 = 0,
$136 = 0,
$137 = 0,
$138 = 0,
$139 = 0,
$14 = 0,
$140 = 0,
$141 = 0,
$142 = 0,
$143 = 0,
$144 = 0,
$145 = 0,
$146 = 0,
$147 = 0,
$148 = 0,
$149 = 0,
$15 = 0,
$150 = 0,
$151 = 0;
var $152 = 0,
$153 = 0,
$154 = 0,
$155 = 0,
$156 = 0,
$157 = 0,
$158 = 0,
$159 = 0,
$16 = 0,
$160 = 0,
$161 = 0,
$162 = 0,
$163 = 0,
$164 = 0,
$165 = 0,
$166 = 0,
$167 = 0,
$168 = 0,
$169 = 0,
$17 = 0;
var $170 = 0,
$171 = 0,
$172 = 0,
$173 = 0,
$174 = 0,
$175 = 0,
$176 = 0,
$177 = 0,
$178 = 0,
$179 = 0,
$18 = 0,
$180 = 0,
$181 = 0,
$182 = 0,
$183 = 0,
$184 = 0,
$185 = 0,
$186 = 0,
$187 = 0,
$188 = 0;
var $189 = 0,
$19 = 0,
$190 = 0,
$191 = 0,
$192 = 0,
$193 = 0,
$194 = 0,
$195 = 0,
$196 = 0,
$197 = 0,
$198 = 0,
$199 = 0,
$2 = 0,
$20 = 0,
$200 = 0,
$201 = 0,
$202 = 0,
$203 = 0,
$204 = 0,
$205 = 0;
var $206 = 0,
$207 = 0,
$208 = 0,
$209 = 0,
$21 = 0,
$210 = 0,
$211 = 0,
$212 = 0,
$213 = 0,
$214 = 0,
$215 = 0,
$216 = 0,
$217 = 0,
$218 = 0,
$219 = 0,
$22 = 0,
$220 = 0,
$221 = 0,
$222 = 0,
$223 = 0;
var $224 = 0,
$225 = 0,
$226 = 0,
$227 = 0,
$228 = 0,
$229 = 0,
$23 = 0,
$230 = 0,
$231 = 0,
$232 = 0,
$233 = 0,
$234 = 0,
$235 = 0,
$236 = 0,
$237 = 0,
$238 = 0,
$239 = 0,
$24 = 0,
$240 = 0,
$241 = 0;
var $242 = 0,
$243 = 0,
$244 = 0,
$245 = 0,
$246 = 0,
$247 = 0,
$248 = 0,
$249 = 0,
$25 = 0,
$250 = 0,
$251 = 0,
$252 = 0,
$253 = 0,
$254 = 0,
$255 = 0,
$256 = 0,
$257 = 0,
$258 = 0,
$259 = 0,
$26 = 0;
var $260 = 0,
$261 = 0,
$262 = 0,
$263 = 0,
$264 = 0,
$265 = 0,
$266 = 0,
$267 = 0,
$268 = 0,
$269 = 0,
$27 = 0,
$270 = 0,
$271 = 0,
$272 = 0,
$273 = 0,
$274 = 0,
$275 = 0,
$276 = 0,
$277 = 0,
$278 = 0;
var $279 = 0,
$28 = 0,
$280 = 0,
$281 = 0,
$282 = 0,
$283 = 0,
$284 = 0,
$285 = 0,
$286 = 0,
$287 = 0,
$288 = 0,
$289 = 0,
$29 = 0,
$290 = 0,
$291 = 0,
$292 = 0,
$293 = 0,
$294 = 0,
$295 = 0,
$296 = 0;
var $297 = 0,
$298 = 0,
$299 = 0,
$3 = 0,
$30 = 0,
$300 = 0,
$301 = 0,
$302 = 0,
$303 = 0,
$304 = 0,
$305 = 0,
$306 = 0,
$307 = 0,
$308 = 0,
$309 = 0,
$31 = 0,
$310 = 0,
$311 = 0,
$312 = 0,
$313 = 0;
var $314 = 0,
$315 = 0,
$316 = 0,
$317 = 0,
$318 = 0,
$319 = 0,
$32 = 0,
$320 = 0,
$321 = 0,
$322 = 0,
$323 = 0,
$324 = 0,
$325 = 0,
$326 = 0,
$327 = 0,
$328 = 0,
$329 = 0,
$33 = 0,
$330 = 0,
$331 = 0;
var $332 = 0,
$333 = 0,
$334 = 0,
$335 = 0,
$336 = 0,
$337 = 0,
$338 = 0,
$339 = 0,
$34 = 0,
$340 = 0,
$341 = 0,
$342 = 0,
$343 = 0,
$344 = 0,
$345 = 0,
$346 = 0,
$347 = 0,
$348 = 0,
$349 = 0,
$35 = 0;
var $350 = 0,
$351 = 0,
$352 = 0,
$353 = 0,
$354 = 0,
$355 = 0,
$356 = 0,
$357 = 0,
$358 = 0,
$359 = 0,
$36 = 0,
$360 = 0,
$361 = 0,
$362 = 0,
$363 = 0,
$364 = 0,
$365 = 0,
$366 = 0,
$367 = 0,
$368 = 0;
var $369 = 0,
$37 = 0,
$370 = 0,
$371 = 0,
$372 = 0,
$373 = 0,
$374 = 0,
$375 = 0,
$376 = 0,
$377 = 0,
$378 = 0,
$379 = 0,
$38 = 0,
$380 = 0,
$381 = 0,
$382 = 0,
$383 = 0,
$384 = 0,
$385 = 0,
$386 = 0;
var $387 = 0,
$388 = 0,
$389 = 0,
$39 = 0,
$390 = 0,
$391 = 0,
$392 = 0,
$393 = 0,
$394 = 0,
$395 = 0,
$396 = 0,
$397 = 0,
$398 = 0,
$399 = 0,
$4 = 0,
$40 = 0,
$400 = 0,
$401 = 0,
$402 = 0,
$403 = 0;
var $404 = 0,
$405 = 0,
$406 = 0,
$407 = 0,
$408 = 0,
$41 = 0,
$42 = 0,
$43 = 0,
$44 = 0,
$45 = 0,
$46 = 0,
$47 = 0,
$48 = 0,
$49 = 0,
$5 = 0,
$50 = 0,
$51 = 0,
$52 = 0,
$53 = 0,
$54 = 0;
var $55 = 0,
$56 = 0,
$57 = 0,
$58 = 0,
$59 = 0,
$6 = 0,
$60 = 0,
$61 = 0,
$62 = 0,
$63 = 0,
$64 = 0,
$65 = 0,
$66 = 0,
$67 = 0,
$68 = 0,
$69 = 0,
$7 = 0,
$70 = 0,
$71 = 0,
$72 = 0;
var $73 = 0,
$74 = 0,
$75 = 0,
$76 = 0,
$77 = 0,
$78 = 0,
$79 = 0,
$8 = 0,
$80 = 0,
$81 = 0,
$82 = 0,
$83 = 0,
$84 = 0,
$85 = 0,
$86 = 0,
$87 = 0,
$88 = 0,
$89 = 0,
$9 = 0,
$90 = 0;
var $91 = 0,
$92 = 0,
$93 = 0,
$94 = 0,
$95 = 0,
$96 = 0,
$97 = 0,
$98 = 0,
$99 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = HEAP32[$f >> 2] | 0;
$1 = ($f + 4) | 0;
$2 = HEAP32[$1 >> 2] | 0;
$3 = ($f + 8) | 0;
$4 = HEAP32[$3 >> 2] | 0;
$5 = ($f + 12) | 0;
$6 = HEAP32[$5 >> 2] | 0;
$7 = ($f + 16) | 0;
$8 = HEAP32[$7 >> 2] | 0;
$9 = ($f + 20) | 0;
$10 = HEAP32[$9 >> 2] | 0;
$11 = ($f + 24) | 0;
$12 = HEAP32[$11 >> 2] | 0;
$13 = ($f + 28) | 0;
$14 = HEAP32[$13 >> 2] | 0;
$15 = ($f + 32) | 0;
$16 = HEAP32[$15 >> 2] | 0;
$17 = ($f + 36) | 0;
$18 = HEAP32[$17 >> 2] | 0;
$19 = $0 << 1;
$20 = $2 << 1;
$21 = $4 << 1;
$22 = $6 << 1;
$23 = $8 << 1;
$24 = $10 << 1;
$25 = $12 << 1;
$26 = $14 << 1;
$27 = ($10 * 38) | 0;
$28 = ($12 * 19) | 0;
$29 = ($14 * 38) | 0;
$30 = ($16 * 19) | 0;
$31 = ($18 * 38) | 0;
$32 = ($0 | 0) < 0;
$33 = ($32 << 31) >> 31;
$34 = ___muldi3($0 | 0, $33 | 0, $0 | 0, $33 | 0) | 0;
$35 = tempRet0;
$36 = ($19 | 0) < 0;
$37 = ($36 << 31) >> 31;
$38 = ($2 | 0) < 0;
$39 = ($38 << 31) >> 31;
$40 = ___muldi3($19 | 0, $37 | 0, $2 | 0, $39 | 0) | 0;
$41 = tempRet0;
$42 = ($4 | 0) < 0;
$43 = ($42 << 31) >> 31;
$44 = ___muldi3($4 | 0, $43 | 0, $19 | 0, $37 | 0) | 0;
$45 = tempRet0;
$46 = ($6 | 0) < 0;
$47 = ($46 << 31) >> 31;
$48 = ___muldi3($6 | 0, $47 | 0, $19 | 0, $37 | 0) | 0;
$49 = tempRet0;
$50 = ($8 | 0) < 0;
$51 = ($50 << 31) >> 31;
$52 = ___muldi3($8 | 0, $51 | 0, $19 | 0, $37 | 0) | 0;
$53 = tempRet0;
$54 = ($10 | 0) < 0;
$55 = ($54 << 31) >> 31;
$56 = ___muldi3($10 | 0, $55 | 0, $19 | 0, $37 | 0) | 0;
$57 = tempRet0;
$58 = ($12 | 0) < 0;
$59 = ($58 << 31) >> 31;
$60 = ___muldi3($12 | 0, $59 | 0, $19 | 0, $37 | 0) | 0;
$61 = tempRet0;
$62 = ($14 | 0) < 0;
$63 = ($62 << 31) >> 31;
$64 = ___muldi3($14 | 0, $63 | 0, $19 | 0, $37 | 0) | 0;
$65 = tempRet0;
$66 = ($16 | 0) < 0;
$67 = ($66 << 31) >> 31;
$68 = ___muldi3($16 | 0, $67 | 0, $19 | 0, $37 | 0) | 0;
$69 = tempRet0;
$70 = ($18 | 0) < 0;
$71 = ($70 << 31) >> 31;
$72 = ___muldi3($18 | 0, $71 | 0, $19 | 0, $37 | 0) | 0;
$73 = tempRet0;
$74 = ($20 | 0) < 0;
$75 = ($74 << 31) >> 31;
$76 = ___muldi3($20 | 0, $75 | 0, $2 | 0, $39 | 0) | 0;
$77 = tempRet0;
$78 = ___muldi3($20 | 0, $75 | 0, $4 | 0, $43 | 0) | 0;
$79 = tempRet0;
$80 = ($22 | 0) < 0;
$81 = ($80 << 31) >> 31;
$82 = ___muldi3($22 | 0, $81 | 0, $20 | 0, $75 | 0) | 0;
$83 = tempRet0;
$84 = ___muldi3($8 | 0, $51 | 0, $20 | 0, $75 | 0) | 0;
$85 = tempRet0;
$86 = ($24 | 0) < 0;
$87 = ($86 << 31) >> 31;
$88 = ___muldi3($24 | 0, $87 | 0, $20 | 0, $75 | 0) | 0;
$89 = tempRet0;
$90 = ___muldi3($12 | 0, $59 | 0, $20 | 0, $75 | 0) | 0;
$91 = tempRet0;
$92 = ($26 | 0) < 0;
$93 = ($92 << 31) >> 31;
$94 = ___muldi3($26 | 0, $93 | 0, $20 | 0, $75 | 0) | 0;
$95 = tempRet0;
$96 = ___muldi3($16 | 0, $67 | 0, $20 | 0, $75 | 0) | 0;
$97 = tempRet0;
$98 = ($31 | 0) < 0;
$99 = ($98 << 31) >> 31;
$100 = ___muldi3($31 | 0, $99 | 0, $20 | 0, $75 | 0) | 0;
$101 = tempRet0;
$102 = ___muldi3($4 | 0, $43 | 0, $4 | 0, $43 | 0) | 0;
$103 = tempRet0;
$104 = ($21 | 0) < 0;
$105 = ($104 << 31) >> 31;
$106 = ___muldi3($21 | 0, $105 | 0, $6 | 0, $47 | 0) | 0;
$107 = tempRet0;
$108 = ___muldi3($8 | 0, $51 | 0, $21 | 0, $105 | 0) | 0;
$109 = tempRet0;
$110 = ___muldi3($10 | 0, $55 | 0, $21 | 0, $105 | 0) | 0;
$111 = tempRet0;
$112 = ___muldi3($12 | 0, $59 | 0, $21 | 0, $105 | 0) | 0;
$113 = tempRet0;
$114 = ___muldi3($14 | 0, $63 | 0, $21 | 0, $105 | 0) | 0;
$115 = tempRet0;
$116 = ($30 | 0) < 0;
$117 = ($116 << 31) >> 31;
$118 = ___muldi3($30 | 0, $117 | 0, $21 | 0, $105 | 0) | 0;
$119 = tempRet0;
$120 = ___muldi3($31 | 0, $99 | 0, $4 | 0, $43 | 0) | 0;
$121 = tempRet0;
$122 = ___muldi3($22 | 0, $81 | 0, $6 | 0, $47 | 0) | 0;
$123 = tempRet0;
$124 = ___muldi3($22 | 0, $81 | 0, $8 | 0, $51 | 0) | 0;
$125 = tempRet0;
$126 = ___muldi3($24 | 0, $87 | 0, $22 | 0, $81 | 0) | 0;
$127 = tempRet0;
$128 = ___muldi3($12 | 0, $59 | 0, $22 | 0, $81 | 0) | 0;
$129 = tempRet0;
$130 = ($29 | 0) < 0;
$131 = ($130 << 31) >> 31;
$132 = ___muldi3($29 | 0, $131 | 0, $22 | 0, $81 | 0) | 0;
$133 = tempRet0;
$134 = ___muldi3($30 | 0, $117 | 0, $22 | 0, $81 | 0) | 0;
$135 = tempRet0;
$136 = ___muldi3($31 | 0, $99 | 0, $22 | 0, $81 | 0) | 0;
$137 = tempRet0;
$138 = ___muldi3($8 | 0, $51 | 0, $8 | 0, $51 | 0) | 0;
$139 = tempRet0;
$140 = ($23 | 0) < 0;
$141 = ($140 << 31) >> 31;
$142 = ___muldi3($23 | 0, $141 | 0, $10 | 0, $55 | 0) | 0;
$143 = tempRet0;
$144 = ($28 | 0) < 0;
$145 = ($144 << 31) >> 31;
$146 = ___muldi3($28 | 0, $145 | 0, $23 | 0, $141 | 0) | 0;
$147 = tempRet0;
$148 = ___muldi3($29 | 0, $131 | 0, $8 | 0, $51 | 0) | 0;
$149 = tempRet0;
$150 = ___muldi3($30 | 0, $117 | 0, $23 | 0, $141 | 0) | 0;
$151 = tempRet0;
$152 = ___muldi3($31 | 0, $99 | 0, $8 | 0, $51 | 0) | 0;
$153 = tempRet0;
$154 = ($27 | 0) < 0;
$155 = ($154 << 31) >> 31;
$156 = ___muldi3($27 | 0, $155 | 0, $10 | 0, $55 | 0) | 0;
$157 = tempRet0;
$158 = ___muldi3($28 | 0, $145 | 0, $24 | 0, $87 | 0) | 0;
$159 = tempRet0;
$160 = ___muldi3($29 | 0, $131 | 0, $24 | 0, $87 | 0) | 0;
$161 = tempRet0;
$162 = ___muldi3($30 | 0, $117 | 0, $24 | 0, $87 | 0) | 0;
$163 = tempRet0;
$164 = ___muldi3($31 | 0, $99 | 0, $24 | 0, $87 | 0) | 0;
$165 = tempRet0;
$166 = ___muldi3($28 | 0, $145 | 0, $12 | 0, $59 | 0) | 0;
$167 = tempRet0;
$168 = ___muldi3($29 | 0, $131 | 0, $12 | 0, $59 | 0) | 0;
$169 = tempRet0;
$170 = ($25 | 0) < 0;
$171 = ($170 << 31) >> 31;
$172 = ___muldi3($30 | 0, $117 | 0, $25 | 0, $171 | 0) | 0;
$173 = tempRet0;
$174 = ___muldi3($31 | 0, $99 | 0, $12 | 0, $59 | 0) | 0;
$175 = tempRet0;
$176 = ___muldi3($29 | 0, $131 | 0, $14 | 0, $63 | 0) | 0;
$177 = tempRet0;
$178 = ___muldi3($30 | 0, $117 | 0, $26 | 0, $93 | 0) | 0;
$179 = tempRet0;
$180 = ___muldi3($31 | 0, $99 | 0, $26 | 0, $93 | 0) | 0;
$181 = tempRet0;
$182 = ___muldi3($30 | 0, $117 | 0, $16 | 0, $67 | 0) | 0;
$183 = tempRet0;
$184 = ___muldi3($31 | 0, $99 | 0, $16 | 0, $67 | 0) | 0;
$185 = tempRet0;
$186 = ___muldi3($31 | 0, $99 | 0, $18 | 0, $71 | 0) | 0;
$187 = tempRet0;
$188 = _i64Add($156 | 0, $157 | 0, $34 | 0, $35 | 0) | 0;
$189 = tempRet0;
$190 = _i64Add($188 | 0, $189 | 0, $146 | 0, $147 | 0) | 0;
$191 = tempRet0;
$192 = _i64Add($190 | 0, $191 | 0, $132 | 0, $133 | 0) | 0;
$193 = tempRet0;
$194 = _i64Add($192 | 0, $193 | 0, $118 | 0, $119 | 0) | 0;
$195 = tempRet0;
$196 = _i64Add($194 | 0, $195 | 0, $100 | 0, $101 | 0) | 0;
$197 = tempRet0;
$198 = _i64Add($44 | 0, $45 | 0, $76 | 0, $77 | 0) | 0;
$199 = tempRet0;
$200 = _i64Add($48 | 0, $49 | 0, $78 | 0, $79 | 0) | 0;
$201 = tempRet0;
$202 = _i64Add($82 | 0, $83 | 0, $102 | 0, $103 | 0) | 0;
$203 = tempRet0;
$204 = _i64Add($202 | 0, $203 | 0, $52 | 0, $53 | 0) | 0;
$205 = tempRet0;
$206 = _i64Add($204 | 0, $205 | 0, $176 | 0, $177 | 0) | 0;
$207 = tempRet0;
$208 = _i64Add($206 | 0, $207 | 0, $172 | 0, $173 | 0) | 0;
$209 = tempRet0;
$210 = _i64Add($208 | 0, $209 | 0, $164 | 0, $165 | 0) | 0;
$211 = tempRet0;
$212 = _i64Add($196 | 0, $197 | 0, 33554432, 0) | 0;
$213 = tempRet0;
$214 = _bitshift64Ashr($212 | 0, $213 | 0, 26) | 0;
$215 = tempRet0;
$216 = _i64Add($158 | 0, $159 | 0, $40 | 0, $41 | 0) | 0;
$217 = tempRet0;
$218 = _i64Add($216 | 0, $217 | 0, $148 | 0, $149 | 0) | 0;
$219 = tempRet0;
$220 = _i64Add($218 | 0, $219 | 0, $134 | 0, $135 | 0) | 0;
$221 = tempRet0;
$222 = _i64Add($220 | 0, $221 | 0, $120 | 0, $121 | 0) | 0;
$223 = tempRet0;
$224 = _i64Add($222 | 0, $223 | 0, $214 | 0, $215 | 0) | 0;
$225 = tempRet0;
$226 = _bitshift64Shl($214 | 0, $215 | 0, 26) | 0;
$227 = tempRet0;
$228 = _i64Subtract($196 | 0, $197 | 0, $226 | 0, $227 | 0) | 0;
$229 = tempRet0;
$230 = _i64Add($210 | 0, $211 | 0, 33554432, 0) | 0;
$231 = tempRet0;
$232 = _bitshift64Ashr($230 | 0, $231 | 0, 26) | 0;
$233 = tempRet0;
$234 = _i64Add($84 | 0, $85 | 0, $106 | 0, $107 | 0) | 0;
$235 = tempRet0;
$236 = _i64Add($234 | 0, $235 | 0, $56 | 0, $57 | 0) | 0;
$237 = tempRet0;
$238 = _i64Add($236 | 0, $237 | 0, $178 | 0, $179 | 0) | 0;
$239 = tempRet0;
$240 = _i64Add($238 | 0, $239 | 0, $174 | 0, $175 | 0) | 0;
$241 = tempRet0;
$242 = _i64Add($240 | 0, $241 | 0, $232 | 0, $233 | 0) | 0;
$243 = tempRet0;
$244 = _bitshift64Shl($232 | 0, $233 | 0, 26) | 0;
$245 = tempRet0;
$246 = _i64Subtract($210 | 0, $211 | 0, $244 | 0, $245 | 0) | 0;
$247 = tempRet0;
$248 = _i64Add($224 | 0, $225 | 0, 16777216, 0) | 0;
$249 = tempRet0;
$250 = _bitshift64Ashr($248 | 0, $249 | 0, 25) | 0;
$251 = tempRet0;
$252 = _i64Add($198 | 0, $199 | 0, $166 | 0, $167 | 0) | 0;
$253 = tempRet0;
$254 = _i64Add($252 | 0, $253 | 0, $160 | 0, $161 | 0) | 0;
$255 = tempRet0;
$256 = _i64Add($254 | 0, $255 | 0, $150 | 0, $151 | 0) | 0;
$257 = tempRet0;
$258 = _i64Add($256 | 0, $257 | 0, $136 | 0, $137 | 0) | 0;
$259 = tempRet0;
$260 = _i64Add($258 | 0, $259 | 0, $250 | 0, $251 | 0) | 0;
$261 = tempRet0;
$262 = _bitshift64Shl($250 | 0, $251 | 0, 25) | 0;
$263 = tempRet0;
$264 = _i64Subtract($224 | 0, $225 | 0, $262 | 0, $263 | 0) | 0;
$265 = tempRet0;
$266 = _i64Add($242 | 0, $243 | 0, 16777216, 0) | 0;
$267 = tempRet0;
$268 = _bitshift64Ashr($266 | 0, $267 | 0, 25) | 0;
$269 = tempRet0;
$270 = _i64Add($122 | 0, $123 | 0, $108 | 0, $109 | 0) | 0;
$271 = tempRet0;
$272 = _i64Add($270 | 0, $271 | 0, $88 | 0, $89 | 0) | 0;
$273 = tempRet0;
$274 = _i64Add($272 | 0, $273 | 0, $60 | 0, $61 | 0) | 0;
$275 = tempRet0;
$276 = _i64Add($274 | 0, $275 | 0, $182 | 0, $183 | 0) | 0;
$277 = tempRet0;
$278 = _i64Add($276 | 0, $277 | 0, $180 | 0, $181 | 0) | 0;
$279 = tempRet0;
$280 = _i64Add($278 | 0, $279 | 0, $268 | 0, $269 | 0) | 0;
$281 = tempRet0;
$282 = _bitshift64Shl($268 | 0, $269 | 0, 25) | 0;
$283 = tempRet0;
$284 = _i64Subtract($242 | 0, $243 | 0, $282 | 0, $283 | 0) | 0;
$285 = tempRet0;
$286 = _i64Add($260 | 0, $261 | 0, 33554432, 0) | 0;
$287 = tempRet0;
$288 = _bitshift64Ashr($286 | 0, $287 | 0, 26) | 0;
$289 = tempRet0;
$290 = _i64Add($200 | 0, $201 | 0, $168 | 0, $169 | 0) | 0;
$291 = tempRet0;
$292 = _i64Add($290 | 0, $291 | 0, $162 | 0, $163 | 0) | 0;
$293 = tempRet0;
$294 = _i64Add($292 | 0, $293 | 0, $152 | 0, $153 | 0) | 0;
$295 = tempRet0;
$296 = _i64Add($294 | 0, $295 | 0, $288 | 0, $289 | 0) | 0;
$297 = tempRet0;
$298 = _bitshift64Shl($288 | 0, $289 | 0, 26) | 0;
$299 = tempRet0;
$300 = _i64Subtract($260 | 0, $261 | 0, $298 | 0, $299 | 0) | 0;
$301 = tempRet0;
$302 = _i64Add($280 | 0, $281 | 0, 33554432, 0) | 0;
$303 = tempRet0;
$304 = _bitshift64Ashr($302 | 0, $303 | 0, 26) | 0;
$305 = tempRet0;
$306 = _i64Add($110 | 0, $111 | 0, $124 | 0, $125 | 0) | 0;
$307 = tempRet0;
$308 = _i64Add($306 | 0, $307 | 0, $90 | 0, $91 | 0) | 0;
$309 = tempRet0;
$310 = _i64Add($308 | 0, $309 | 0, $64 | 0, $65 | 0) | 0;
$311 = tempRet0;
$312 = _i64Add($310 | 0, $311 | 0, $184 | 0, $185 | 0) | 0;
$313 = tempRet0;
$314 = _i64Add($312 | 0, $313 | 0, $304 | 0, $305 | 0) | 0;
$315 = tempRet0;
$316 = _bitshift64Shl($304 | 0, $305 | 0, 26) | 0;
$317 = tempRet0;
$318 = _i64Subtract($280 | 0, $281 | 0, $316 | 0, $317 | 0) | 0;
$319 = tempRet0;
$320 = _i64Add($296 | 0, $297 | 0, 16777216, 0) | 0;
$321 = tempRet0;
$322 = _bitshift64Ashr($320 | 0, $321 | 0, 25) | 0;
$323 = tempRet0;
$324 = _i64Add($322 | 0, $323 | 0, $246 | 0, $247 | 0) | 0;
$325 = tempRet0;
$326 = _bitshift64Shl($322 | 0, $323 | 0, 25) | 0;
$327 = tempRet0;
$328 = _i64Subtract($296 | 0, $297 | 0, $326 | 0, $327 | 0) | 0;
$329 = tempRet0;
$330 = _i64Add($314 | 0, $315 | 0, 16777216, 0) | 0;
$331 = tempRet0;
$332 = _bitshift64Ashr($330 | 0, $331 | 0, 25) | 0;
$333 = tempRet0;
$334 = _i64Add($112 | 0, $113 | 0, $138 | 0, $139 | 0) | 0;
$335 = tempRet0;
$336 = _i64Add($334 | 0, $335 | 0, $126 | 0, $127 | 0) | 0;
$337 = tempRet0;
$338 = _i64Add($336 | 0, $337 | 0, $94 | 0, $95 | 0) | 0;
$339 = tempRet0;
$340 = _i64Add($338 | 0, $339 | 0, $68 | 0, $69 | 0) | 0;
$341 = tempRet0;
$342 = _i64Add($340 | 0, $341 | 0, $186 | 0, $187 | 0) | 0;
$343 = tempRet0;
$344 = _i64Add($342 | 0, $343 | 0, $332 | 0, $333 | 0) | 0;
$345 = tempRet0;
$346 = _bitshift64Shl($332 | 0, $333 | 0, 25) | 0;
$347 = tempRet0;
$348 = _i64Subtract($314 | 0, $315 | 0, $346 | 0, $347 | 0) | 0;
$349 = tempRet0;
$350 = _i64Add($324 | 0, $325 | 0, 33554432, 0) | 0;
$351 = tempRet0;
$352 = _bitshift64Ashr($350 | 0, $351 | 0, 26) | 0;
$353 = tempRet0;
$354 = _i64Add($284 | 0, $285 | 0, $352 | 0, $353 | 0) | 0;
$355 = tempRet0;
$356 = _bitshift64Shl($352 | 0, $353 | 0, 26) | 0;
$357 = tempRet0;
$358 = _i64Subtract($324 | 0, $325 | 0, $356 | 0, $357 | 0) | 0;
$359 = tempRet0;
$360 = _i64Add($344 | 0, $345 | 0, 33554432, 0) | 0;
$361 = tempRet0;
$362 = _bitshift64Ashr($360 | 0, $361 | 0, 26) | 0;
$363 = tempRet0;
$364 = _i64Add($128 | 0, $129 | 0, $142 | 0, $143 | 0) | 0;
$365 = tempRet0;
$366 = _i64Add($364 | 0, $365 | 0, $114 | 0, $115 | 0) | 0;
$367 = tempRet0;
$368 = _i64Add($366 | 0, $367 | 0, $96 | 0, $97 | 0) | 0;
$369 = tempRet0;
$370 = _i64Add($368 | 0, $369 | 0, $72 | 0, $73 | 0) | 0;
$371 = tempRet0;
$372 = _i64Add($370 | 0, $371 | 0, $362 | 0, $363 | 0) | 0;
$373 = tempRet0;
$374 = _bitshift64Shl($362 | 0, $363 | 0, 26) | 0;
$375 = tempRet0;
$376 = _i64Subtract($344 | 0, $345 | 0, $374 | 0, $375 | 0) | 0;
$377 = tempRet0;
$378 = _i64Add($372 | 0, $373 | 0, 16777216, 0) | 0;
$379 = tempRet0;
$380 = _bitshift64Ashr($378 | 0, $379 | 0, 25) | 0;
$381 = tempRet0;
$382 = ___muldi3($380 | 0, $381 | 0, 19, 0) | 0;
$383 = tempRet0;
$384 = _i64Add($382 | 0, $383 | 0, $228 | 0, $229 | 0) | 0;
$385 = tempRet0;
$386 = _bitshift64Shl($380 | 0, $381 | 0, 25) | 0;
$387 = tempRet0;
$388 = _i64Subtract($372 | 0, $373 | 0, $386 | 0, $387 | 0) | 0;
$389 = tempRet0;
$390 = _i64Add($384 | 0, $385 | 0, 33554432, 0) | 0;
$391 = tempRet0;
$392 = _bitshift64Ashr($390 | 0, $391 | 0, 26) | 0;
$393 = tempRet0;
$394 = _i64Add($264 | 0, $265 | 0, $392 | 0, $393 | 0) | 0;
$395 = tempRet0;
$396 = _bitshift64Shl($392 | 0, $393 | 0, 26) | 0;
$397 = tempRet0;
$398 = _i64Subtract($384 | 0, $385 | 0, $396 | 0, $397 | 0) | 0;
$399 = tempRet0;
HEAP32[$h >> 2] = $398;
$400 = ($h + 4) | 0;
HEAP32[$400 >> 2] = $394;
$401 = ($h + 8) | 0;
HEAP32[$401 >> 2] = $300;
$402 = ($h + 12) | 0;
HEAP32[$402 >> 2] = $328;
$403 = ($h + 16) | 0;
HEAP32[$403 >> 2] = $358;
$404 = ($h + 20) | 0;
HEAP32[$404 >> 2] = $354;
$405 = ($h + 24) | 0;
HEAP32[$405 >> 2] = $318;
$406 = ($h + 28) | 0;
HEAP32[$406 >> 2] = $348;
$407 = ($h + 32) | 0;
HEAP32[$407 >> 2] = $376;
$408 = ($h + 36) | 0;
HEAP32[$408 >> 2] = $388;
STACKTOP = sp;
return;
}
function _crypto_sign_ed25519_ref10_fe_sq2($h, $f) {
$h = $h | 0;
$f = $f | 0;
var $0 = 0,
$1 = 0,
$10 = 0,
$100 = 0,
$101 = 0,
$102 = 0,
$103 = 0,
$104 = 0,
$105 = 0,
$106 = 0,
$107 = 0,
$108 = 0,
$109 = 0,
$11 = 0,
$110 = 0,
$111 = 0,
$112 = 0,
$113 = 0,
$114 = 0,
$115 = 0;
var $116 = 0,
$117 = 0,
$118 = 0,
$119 = 0,
$12 = 0,
$120 = 0,
$121 = 0,
$122 = 0,
$123 = 0,
$124 = 0,
$125 = 0,
$126 = 0,
$127 = 0,
$128 = 0,
$129 = 0,
$13 = 0,
$130 = 0,
$131 = 0,
$132 = 0,
$133 = 0;
var $134 = 0,
$135 = 0,
$136 = 0,
$137 = 0,
$138 = 0,
$139 = 0,
$14 = 0,
$140 = 0,
$141 = 0,
$142 = 0,
$143 = 0,
$144 = 0,
$145 = 0,
$146 = 0,
$147 = 0,
$148 = 0,
$149 = 0,
$15 = 0,
$150 = 0,
$151 = 0;
var $152 = 0,
$153 = 0,
$154 = 0,
$155 = 0,
$156 = 0,
$157 = 0,
$158 = 0,
$159 = 0,
$16 = 0,
$160 = 0,
$161 = 0,
$162 = 0,
$163 = 0,
$164 = 0,
$165 = 0,
$166 = 0,
$167 = 0,
$168 = 0,
$169 = 0,
$17 = 0;
var $170 = 0,
$171 = 0,
$172 = 0,
$173 = 0,
$174 = 0,
$175 = 0,
$176 = 0,
$177 = 0,
$178 = 0,
$179 = 0,
$18 = 0,
$180 = 0,
$181 = 0,
$182 = 0,
$183 = 0,
$184 = 0,
$185 = 0,
$186 = 0,
$187 = 0,
$188 = 0;
var $189 = 0,
$19 = 0,
$190 = 0,
$191 = 0,
$192 = 0,
$193 = 0,
$194 = 0,
$195 = 0,
$196 = 0,
$197 = 0,
$198 = 0,
$199 = 0,
$2 = 0,
$20 = 0,
$200 = 0,
$201 = 0,
$202 = 0,
$203 = 0,
$204 = 0,
$205 = 0;
var $206 = 0,
$207 = 0,
$208 = 0,
$209 = 0,
$21 = 0,
$210 = 0,
$211 = 0,
$212 = 0,
$213 = 0,
$214 = 0,
$215 = 0,
$216 = 0,
$217 = 0,
$218 = 0,
$219 = 0,
$22 = 0,
$220 = 0,
$221 = 0,
$222 = 0,
$223 = 0;
var $224 = 0,
$225 = 0,
$226 = 0,
$227 = 0,
$228 = 0,
$229 = 0,
$23 = 0,
$230 = 0,
$231 = 0,
$232 = 0,
$233 = 0,
$234 = 0,
$235 = 0,
$236 = 0,
$237 = 0,
$238 = 0,
$239 = 0,
$24 = 0,
$240 = 0,
$241 = 0;
var $242 = 0,
$243 = 0,
$244 = 0,
$245 = 0,
$246 = 0,
$247 = 0,
$248 = 0,
$249 = 0,
$25 = 0,
$250 = 0,
$251 = 0,
$252 = 0,
$253 = 0,
$254 = 0,
$255 = 0,
$256 = 0,
$257 = 0,
$258 = 0,
$259 = 0,
$26 = 0;
var $260 = 0,
$261 = 0,
$262 = 0,
$263 = 0,
$264 = 0,
$265 = 0,
$266 = 0,
$267 = 0,
$268 = 0,
$269 = 0,
$27 = 0,
$270 = 0,
$271 = 0,
$272 = 0,
$273 = 0,
$274 = 0,
$275 = 0,
$276 = 0,
$277 = 0,
$278 = 0;
var $279 = 0,
$28 = 0,
$280 = 0,
$281 = 0,
$282 = 0,
$283 = 0,
$284 = 0,
$285 = 0,
$286 = 0,
$287 = 0,
$288 = 0,
$289 = 0,
$29 = 0,
$290 = 0,
$291 = 0,
$292 = 0,
$293 = 0,
$294 = 0,
$295 = 0,
$296 = 0;
var $297 = 0,
$298 = 0,
$299 = 0,
$3 = 0,
$30 = 0,
$300 = 0,
$301 = 0,
$302 = 0,
$303 = 0,
$304 = 0,
$305 = 0,
$306 = 0,
$307 = 0,
$308 = 0,
$309 = 0,
$31 = 0,
$310 = 0,
$311 = 0,
$312 = 0,
$313 = 0;
var $314 = 0,
$315 = 0,
$316 = 0,
$317 = 0,
$318 = 0,
$319 = 0,
$32 = 0,
$320 = 0,
$321 = 0,
$322 = 0,
$323 = 0,
$324 = 0,
$325 = 0,
$326 = 0,
$327 = 0,
$328 = 0,
$329 = 0,
$33 = 0,
$330 = 0,
$331 = 0;
var $332 = 0,
$333 = 0,
$334 = 0,
$335 = 0,
$336 = 0,
$337 = 0,
$338 = 0,
$339 = 0,
$34 = 0,
$340 = 0,
$341 = 0,
$342 = 0,
$343 = 0,
$344 = 0,
$345 = 0,
$346 = 0,
$347 = 0,
$348 = 0,
$349 = 0,
$35 = 0;
var $350 = 0,
$351 = 0,
$352 = 0,
$353 = 0,
$354 = 0,
$355 = 0,
$356 = 0,
$357 = 0,
$358 = 0,
$359 = 0,
$36 = 0,
$360 = 0,
$361 = 0,
$362 = 0,
$363 = 0,
$364 = 0,
$365 = 0,
$366 = 0,
$367 = 0,
$368 = 0;
var $369 = 0,
$37 = 0,
$370 = 0,
$371 = 0,
$372 = 0,
$373 = 0,
$374 = 0,
$375 = 0,
$376 = 0,
$377 = 0,
$378 = 0,
$379 = 0,
$38 = 0,
$380 = 0,
$381 = 0,
$382 = 0,
$383 = 0,
$384 = 0,
$385 = 0,
$386 = 0;
var $387 = 0,
$388 = 0,
$389 = 0,
$39 = 0,
$390 = 0,
$391 = 0,
$392 = 0,
$393 = 0,
$394 = 0,
$395 = 0,
$396 = 0,
$397 = 0,
$398 = 0,
$399 = 0,
$4 = 0,
$40 = 0,
$400 = 0,
$401 = 0,
$402 = 0,
$403 = 0;
var $404 = 0,
$405 = 0,
$406 = 0,
$407 = 0,
$408 = 0,
$409 = 0,
$41 = 0,
$410 = 0,
$411 = 0,
$412 = 0,
$413 = 0,
$414 = 0,
$415 = 0,
$416 = 0,
$417 = 0,
$418 = 0,
$419 = 0,
$42 = 0,
$420 = 0,
$421 = 0;
var $422 = 0,
$423 = 0,
$424 = 0,
$425 = 0,
$426 = 0,
$427 = 0,
$428 = 0,
$43 = 0,
$44 = 0,
$45 = 0,
$46 = 0,
$47 = 0,
$48 = 0,
$49 = 0,
$5 = 0,
$50 = 0,
$51 = 0,
$52 = 0,
$53 = 0,
$54 = 0;
var $55 = 0,
$56 = 0,
$57 = 0,
$58 = 0,
$59 = 0,
$6 = 0,
$60 = 0,
$61 = 0,
$62 = 0,
$63 = 0,
$64 = 0,
$65 = 0,
$66 = 0,
$67 = 0,
$68 = 0,
$69 = 0,
$7 = 0,
$70 = 0,
$71 = 0,
$72 = 0;
var $73 = 0,
$74 = 0,
$75 = 0,
$76 = 0,
$77 = 0,
$78 = 0,
$79 = 0,
$8 = 0,
$80 = 0,
$81 = 0,
$82 = 0,
$83 = 0,
$84 = 0,
$85 = 0,
$86 = 0,
$87 = 0,
$88 = 0,
$89 = 0,
$9 = 0,
$90 = 0;
var $91 = 0,
$92 = 0,
$93 = 0,
$94 = 0,
$95 = 0,
$96 = 0,
$97 = 0,
$98 = 0,
$99 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = HEAP32[$f >> 2] | 0;
$1 = ($f + 4) | 0;
$2 = HEAP32[$1 >> 2] | 0;
$3 = ($f + 8) | 0;
$4 = HEAP32[$3 >> 2] | 0;
$5 = ($f + 12) | 0;
$6 = HEAP32[$5 >> 2] | 0;
$7 = ($f + 16) | 0;
$8 = HEAP32[$7 >> 2] | 0;
$9 = ($f + 20) | 0;
$10 = HEAP32[$9 >> 2] | 0;
$11 = ($f + 24) | 0;
$12 = HEAP32[$11 >> 2] | 0;
$13 = ($f + 28) | 0;
$14 = HEAP32[$13 >> 2] | 0;
$15 = ($f + 32) | 0;
$16 = HEAP32[$15 >> 2] | 0;
$17 = ($f + 36) | 0;
$18 = HEAP32[$17 >> 2] | 0;
$19 = $0 << 1;
$20 = $2 << 1;
$21 = $4 << 1;
$22 = $6 << 1;
$23 = $8 << 1;
$24 = $10 << 1;
$25 = $12 << 1;
$26 = $14 << 1;
$27 = ($10 * 38) | 0;
$28 = ($12 * 19) | 0;
$29 = ($14 * 38) | 0;
$30 = ($16 * 19) | 0;
$31 = ($18 * 38) | 0;
$32 = ($0 | 0) < 0;
$33 = ($32 << 31) >> 31;
$34 = ___muldi3($0 | 0, $33 | 0, $0 | 0, $33 | 0) | 0;
$35 = tempRet0;
$36 = ($19 | 0) < 0;
$37 = ($36 << 31) >> 31;
$38 = ($2 | 0) < 0;
$39 = ($38 << 31) >> 31;
$40 = ___muldi3($19 | 0, $37 | 0, $2 | 0, $39 | 0) | 0;
$41 = tempRet0;
$42 = ($4 | 0) < 0;
$43 = ($42 << 31) >> 31;
$44 = ___muldi3($4 | 0, $43 | 0, $19 | 0, $37 | 0) | 0;
$45 = tempRet0;
$46 = ($6 | 0) < 0;
$47 = ($46 << 31) >> 31;
$48 = ___muldi3($6 | 0, $47 | 0, $19 | 0, $37 | 0) | 0;
$49 = tempRet0;
$50 = ($8 | 0) < 0;
$51 = ($50 << 31) >> 31;
$52 = ___muldi3($8 | 0, $51 | 0, $19 | 0, $37 | 0) | 0;
$53 = tempRet0;
$54 = ($10 | 0) < 0;
$55 = ($54 << 31) >> 31;
$56 = ___muldi3($10 | 0, $55 | 0, $19 | 0, $37 | 0) | 0;
$57 = tempRet0;
$58 = ($12 | 0) < 0;
$59 = ($58 << 31) >> 31;
$60 = ___muldi3($12 | 0, $59 | 0, $19 | 0, $37 | 0) | 0;
$61 = tempRet0;
$62 = ($14 | 0) < 0;
$63 = ($62 << 31) >> 31;
$64 = ___muldi3($14 | 0, $63 | 0, $19 | 0, $37 | 0) | 0;
$65 = tempRet0;
$66 = ($16 | 0) < 0;
$67 = ($66 << 31) >> 31;
$68 = ___muldi3($16 | 0, $67 | 0, $19 | 0, $37 | 0) | 0;
$69 = tempRet0;
$70 = ($18 | 0) < 0;
$71 = ($70 << 31) >> 31;
$72 = ___muldi3($18 | 0, $71 | 0, $19 | 0, $37 | 0) | 0;
$73 = tempRet0;
$74 = ($20 | 0) < 0;
$75 = ($74 << 31) >> 31;
$76 = ___muldi3($20 | 0, $75 | 0, $2 | 0, $39 | 0) | 0;
$77 = tempRet0;
$78 = ___muldi3($20 | 0, $75 | 0, $4 | 0, $43 | 0) | 0;
$79 = tempRet0;
$80 = ($22 | 0) < 0;
$81 = ($80 << 31) >> 31;
$82 = ___muldi3($22 | 0, $81 | 0, $20 | 0, $75 | 0) | 0;
$83 = tempRet0;
$84 = ___muldi3($8 | 0, $51 | 0, $20 | 0, $75 | 0) | 0;
$85 = tempRet0;
$86 = ($24 | 0) < 0;
$87 = ($86 << 31) >> 31;
$88 = ___muldi3($24 | 0, $87 | 0, $20 | 0, $75 | 0) | 0;
$89 = tempRet0;
$90 = ___muldi3($12 | 0, $59 | 0, $20 | 0, $75 | 0) | 0;
$91 = tempRet0;
$92 = ($26 | 0) < 0;
$93 = ($92 << 31) >> 31;
$94 = ___muldi3($26 | 0, $93 | 0, $20 | 0, $75 | 0) | 0;
$95 = tempRet0;
$96 = ___muldi3($16 | 0, $67 | 0, $20 | 0, $75 | 0) | 0;
$97 = tempRet0;
$98 = ($31 | 0) < 0;
$99 = ($98 << 31) >> 31;
$100 = ___muldi3($31 | 0, $99 | 0, $20 | 0, $75 | 0) | 0;
$101 = tempRet0;
$102 = ___muldi3($4 | 0, $43 | 0, $4 | 0, $43 | 0) | 0;
$103 = tempRet0;
$104 = ($21 | 0) < 0;
$105 = ($104 << 31) >> 31;
$106 = ___muldi3($21 | 0, $105 | 0, $6 | 0, $47 | 0) | 0;
$107 = tempRet0;
$108 = ___muldi3($8 | 0, $51 | 0, $21 | 0, $105 | 0) | 0;
$109 = tempRet0;
$110 = ___muldi3($10 | 0, $55 | 0, $21 | 0, $105 | 0) | 0;
$111 = tempRet0;
$112 = ___muldi3($12 | 0, $59 | 0, $21 | 0, $105 | 0) | 0;
$113 = tempRet0;
$114 = ___muldi3($14 | 0, $63 | 0, $21 | 0, $105 | 0) | 0;
$115 = tempRet0;
$116 = ($30 | 0) < 0;
$117 = ($116 << 31) >> 31;
$118 = ___muldi3($30 | 0, $117 | 0, $21 | 0, $105 | 0) | 0;
$119 = tempRet0;
$120 = ___muldi3($31 | 0, $99 | 0, $4 | 0, $43 | 0) | 0;
$121 = tempRet0;
$122 = ___muldi3($22 | 0, $81 | 0, $6 | 0, $47 | 0) | 0;
$123 = tempRet0;
$124 = ___muldi3($22 | 0, $81 | 0, $8 | 0, $51 | 0) | 0;
$125 = tempRet0;
$126 = ___muldi3($24 | 0, $87 | 0, $22 | 0, $81 | 0) | 0;
$127 = tempRet0;
$128 = ___muldi3($12 | 0, $59 | 0, $22 | 0, $81 | 0) | 0;
$129 = tempRet0;
$130 = ($29 | 0) < 0;
$131 = ($130 << 31) >> 31;
$132 = ___muldi3($29 | 0, $131 | 0, $22 | 0, $81 | 0) | 0;
$133 = tempRet0;
$134 = ___muldi3($30 | 0, $117 | 0, $22 | 0, $81 | 0) | 0;
$135 = tempRet0;
$136 = ___muldi3($31 | 0, $99 | 0, $22 | 0, $81 | 0) | 0;
$137 = tempRet0;
$138 = ___muldi3($8 | 0, $51 | 0, $8 | 0, $51 | 0) | 0;
$139 = tempRet0;
$140 = ($23 | 0) < 0;
$141 = ($140 << 31) >> 31;
$142 = ___muldi3($23 | 0, $141 | 0, $10 | 0, $55 | 0) | 0;
$143 = tempRet0;
$144 = ($28 | 0) < 0;
$145 = ($144 << 31) >> 31;
$146 = ___muldi3($28 | 0, $145 | 0, $23 | 0, $141 | 0) | 0;
$147 = tempRet0;
$148 = ___muldi3($29 | 0, $131 | 0, $8 | 0, $51 | 0) | 0;
$149 = tempRet0;
$150 = ___muldi3($30 | 0, $117 | 0, $23 | 0, $141 | 0) | 0;
$151 = tempRet0;
$152 = ___muldi3($31 | 0, $99 | 0, $8 | 0, $51 | 0) | 0;
$153 = tempRet0;
$154 = ($27 | 0) < 0;
$155 = ($154 << 31) >> 31;
$156 = ___muldi3($27 | 0, $155 | 0, $10 | 0, $55 | 0) | 0;
$157 = tempRet0;
$158 = ___muldi3($28 | 0, $145 | 0, $24 | 0, $87 | 0) | 0;
$159 = tempRet0;
$160 = ___muldi3($29 | 0, $131 | 0, $24 | 0, $87 | 0) | 0;
$161 = tempRet0;
$162 = ___muldi3($30 | 0, $117 | 0, $24 | 0, $87 | 0) | 0;
$163 = tempRet0;
$164 = ___muldi3($31 | 0, $99 | 0, $24 | 0, $87 | 0) | 0;
$165 = tempRet0;
$166 = ___muldi3($28 | 0, $145 | 0, $12 | 0, $59 | 0) | 0;
$167 = tempRet0;
$168 = ___muldi3($29 | 0, $131 | 0, $12 | 0, $59 | 0) | 0;
$169 = tempRet0;
$170 = ($25 | 0) < 0;
$171 = ($170 << 31) >> 31;
$172 = ___muldi3($30 | 0, $117 | 0, $25 | 0, $171 | 0) | 0;
$173 = tempRet0;
$174 = ___muldi3($31 | 0, $99 | 0, $12 | 0, $59 | 0) | 0;
$175 = tempRet0;
$176 = ___muldi3($29 | 0, $131 | 0, $14 | 0, $63 | 0) | 0;
$177 = tempRet0;
$178 = ___muldi3($30 | 0, $117 | 0, $26 | 0, $93 | 0) | 0;
$179 = tempRet0;
$180 = ___muldi3($31 | 0, $99 | 0, $26 | 0, $93 | 0) | 0;
$181 = tempRet0;
$182 = ___muldi3($30 | 0, $117 | 0, $16 | 0, $67 | 0) | 0;
$183 = tempRet0;
$184 = ___muldi3($31 | 0, $99 | 0, $16 | 0, $67 | 0) | 0;
$185 = tempRet0;
$186 = ___muldi3($31 | 0, $99 | 0, $18 | 0, $71 | 0) | 0;
$187 = tempRet0;
$188 = _i64Add($156 | 0, $157 | 0, $34 | 0, $35 | 0) | 0;
$189 = tempRet0;
$190 = _i64Add($188 | 0, $189 | 0, $146 | 0, $147 | 0) | 0;
$191 = tempRet0;
$192 = _i64Add($190 | 0, $191 | 0, $132 | 0, $133 | 0) | 0;
$193 = tempRet0;
$194 = _i64Add($192 | 0, $193 | 0, $118 | 0, $119 | 0) | 0;
$195 = tempRet0;
$196 = _i64Add($194 | 0, $195 | 0, $100 | 0, $101 | 0) | 0;
$197 = tempRet0;
$198 = _i64Add($158 | 0, $159 | 0, $40 | 0, $41 | 0) | 0;
$199 = tempRet0;
$200 = _i64Add($198 | 0, $199 | 0, $148 | 0, $149 | 0) | 0;
$201 = tempRet0;
$202 = _i64Add($200 | 0, $201 | 0, $134 | 0, $135 | 0) | 0;
$203 = tempRet0;
$204 = _i64Add($202 | 0, $203 | 0, $120 | 0, $121 | 0) | 0;
$205 = tempRet0;
$206 = _i64Add($44 | 0, $45 | 0, $76 | 0, $77 | 0) | 0;
$207 = tempRet0;
$208 = _i64Add($206 | 0, $207 | 0, $166 | 0, $167 | 0) | 0;
$209 = tempRet0;
$210 = _i64Add($208 | 0, $209 | 0, $160 | 0, $161 | 0) | 0;
$211 = tempRet0;
$212 = _i64Add($210 | 0, $211 | 0, $150 | 0, $151 | 0) | 0;
$213 = tempRet0;
$214 = _i64Add($212 | 0, $213 | 0, $136 | 0, $137 | 0) | 0;
$215 = tempRet0;
$216 = _i64Add($48 | 0, $49 | 0, $78 | 0, $79 | 0) | 0;
$217 = tempRet0;
$218 = _i64Add($216 | 0, $217 | 0, $168 | 0, $169 | 0) | 0;
$219 = tempRet0;
$220 = _i64Add($218 | 0, $219 | 0, $162 | 0, $163 | 0) | 0;
$221 = tempRet0;
$222 = _i64Add($220 | 0, $221 | 0, $152 | 0, $153 | 0) | 0;
$223 = tempRet0;
$224 = _i64Add($82 | 0, $83 | 0, $102 | 0, $103 | 0) | 0;
$225 = tempRet0;
$226 = _i64Add($224 | 0, $225 | 0, $52 | 0, $53 | 0) | 0;
$227 = tempRet0;
$228 = _i64Add($226 | 0, $227 | 0, $176 | 0, $177 | 0) | 0;
$229 = tempRet0;
$230 = _i64Add($228 | 0, $229 | 0, $172 | 0, $173 | 0) | 0;
$231 = tempRet0;
$232 = _i64Add($230 | 0, $231 | 0, $164 | 0, $165 | 0) | 0;
$233 = tempRet0;
$234 = _i64Add($84 | 0, $85 | 0, $106 | 0, $107 | 0) | 0;
$235 = tempRet0;
$236 = _i64Add($234 | 0, $235 | 0, $56 | 0, $57 | 0) | 0;
$237 = tempRet0;
$238 = _i64Add($236 | 0, $237 | 0, $178 | 0, $179 | 0) | 0;
$239 = tempRet0;
$240 = _i64Add($238 | 0, $239 | 0, $174 | 0, $175 | 0) | 0;
$241 = tempRet0;
$242 = _i64Add($122 | 0, $123 | 0, $108 | 0, $109 | 0) | 0;
$243 = tempRet0;
$244 = _i64Add($242 | 0, $243 | 0, $88 | 0, $89 | 0) | 0;
$245 = tempRet0;
$246 = _i64Add($244 | 0, $245 | 0, $60 | 0, $61 | 0) | 0;
$247 = tempRet0;
$248 = _i64Add($246 | 0, $247 | 0, $182 | 0, $183 | 0) | 0;
$249 = tempRet0;
$250 = _i64Add($248 | 0, $249 | 0, $180 | 0, $181 | 0) | 0;
$251 = tempRet0;
$252 = _i64Add($110 | 0, $111 | 0, $124 | 0, $125 | 0) | 0;
$253 = tempRet0;
$254 = _i64Add($252 | 0, $253 | 0, $90 | 0, $91 | 0) | 0;
$255 = tempRet0;
$256 = _i64Add($254 | 0, $255 | 0, $64 | 0, $65 | 0) | 0;
$257 = tempRet0;
$258 = _i64Add($256 | 0, $257 | 0, $184 | 0, $185 | 0) | 0;
$259 = tempRet0;
$260 = _i64Add($112 | 0, $113 | 0, $138 | 0, $139 | 0) | 0;
$261 = tempRet0;
$262 = _i64Add($260 | 0, $261 | 0, $126 | 0, $127 | 0) | 0;
$263 = tempRet0;
$264 = _i64Add($262 | 0, $263 | 0, $94 | 0, $95 | 0) | 0;
$265 = tempRet0;
$266 = _i64Add($264 | 0, $265 | 0, $68 | 0, $69 | 0) | 0;
$267 = tempRet0;
$268 = _i64Add($266 | 0, $267 | 0, $186 | 0, $187 | 0) | 0;
$269 = tempRet0;
$270 = _i64Add($128 | 0, $129 | 0, $142 | 0, $143 | 0) | 0;
$271 = tempRet0;
$272 = _i64Add($270 | 0, $271 | 0, $114 | 0, $115 | 0) | 0;
$273 = tempRet0;
$274 = _i64Add($272 | 0, $273 | 0, $96 | 0, $97 | 0) | 0;
$275 = tempRet0;
$276 = _i64Add($274 | 0, $275 | 0, $72 | 0, $73 | 0) | 0;
$277 = tempRet0;
$278 = _bitshift64Shl($196 | 0, $197 | 0, 1) | 0;
$279 = tempRet0;
$280 = _bitshift64Shl($204 | 0, $205 | 0, 1) | 0;
$281 = tempRet0;
$282 = _bitshift64Shl($214 | 0, $215 | 0, 1) | 0;
$283 = tempRet0;
$284 = _bitshift64Shl($222 | 0, $223 | 0, 1) | 0;
$285 = tempRet0;
$286 = _bitshift64Shl($232 | 0, $233 | 0, 1) | 0;
$287 = tempRet0;
$288 = _bitshift64Shl($240 | 0, $241 | 0, 1) | 0;
$289 = tempRet0;
$290 = _bitshift64Shl($250 | 0, $251 | 0, 1) | 0;
$291 = tempRet0;
$292 = _bitshift64Shl($258 | 0, $259 | 0, 1) | 0;
$293 = tempRet0;
$294 = _bitshift64Shl($268 | 0, $269 | 0, 1) | 0;
$295 = tempRet0;
$296 = _bitshift64Shl($276 | 0, $277 | 0, 1) | 0;
$297 = tempRet0;
$298 = _i64Add($278 | 0, $279 | 0, 33554432, 0) | 0;
$299 = tempRet0;
$300 = _bitshift64Ashr($298 | 0, $299 | 0, 26) | 0;
$301 = tempRet0;
$302 = _i64Add($300 | 0, $301 | 0, $280 | 0, $281 | 0) | 0;
$303 = tempRet0;
$304 = _bitshift64Shl($300 | 0, $301 | 0, 26) | 0;
$305 = tempRet0;
$306 = _i64Subtract($278 | 0, $279 | 0, $304 | 0, $305 | 0) | 0;
$307 = tempRet0;
$308 = _i64Add($286 | 0, $287 | 0, 33554432, 0) | 0;
$309 = tempRet0;
$310 = _bitshift64Ashr($308 | 0, $309 | 0, 26) | 0;
$311 = tempRet0;
$312 = _i64Add($310 | 0, $311 | 0, $288 | 0, $289 | 0) | 0;
$313 = tempRet0;
$314 = _bitshift64Shl($310 | 0, $311 | 0, 26) | 0;
$315 = tempRet0;
$316 = _i64Subtract($286 | 0, $287 | 0, $314 | 0, $315 | 0) | 0;
$317 = tempRet0;
$318 = _i64Add($302 | 0, $303 | 0, 16777216, 0) | 0;
$319 = tempRet0;
$320 = _bitshift64Ashr($318 | 0, $319 | 0, 25) | 0;
$321 = tempRet0;
$322 = _i64Add($320 | 0, $321 | 0, $282 | 0, $283 | 0) | 0;
$323 = tempRet0;
$324 = _bitshift64Shl($320 | 0, $321 | 0, 25) | 0;
$325 = tempRet0;
$326 = _i64Subtract($302 | 0, $303 | 0, $324 | 0, $325 | 0) | 0;
$327 = tempRet0;
$328 = _i64Add($312 | 0, $313 | 0, 16777216, 0) | 0;
$329 = tempRet0;
$330 = _bitshift64Ashr($328 | 0, $329 | 0, 25) | 0;
$331 = tempRet0;
$332 = _i64Add($330 | 0, $331 | 0, $290 | 0, $291 | 0) | 0;
$333 = tempRet0;
$334 = _bitshift64Shl($330 | 0, $331 | 0, 25) | 0;
$335 = tempRet0;
$336 = _i64Subtract($312 | 0, $313 | 0, $334 | 0, $335 | 0) | 0;
$337 = tempRet0;
$338 = _i64Add($322 | 0, $323 | 0, 33554432, 0) | 0;
$339 = tempRet0;
$340 = _bitshift64Ashr($338 | 0, $339 | 0, 26) | 0;
$341 = tempRet0;
$342 = _i64Add($340 | 0, $341 | 0, $284 | 0, $285 | 0) | 0;
$343 = tempRet0;
$344 = _bitshift64Shl($340 | 0, $341 | 0, 26) | 0;
$345 = tempRet0;
$346 = _i64Subtract($322 | 0, $323 | 0, $344 | 0, $345 | 0) | 0;
$347 = tempRet0;
$348 = _i64Add($332 | 0, $333 | 0, 33554432, 0) | 0;
$349 = tempRet0;
$350 = _bitshift64Ashr($348 | 0, $349 | 0, 26) | 0;
$351 = tempRet0;
$352 = _i64Add($350 | 0, $351 | 0, $292 | 0, $293 | 0) | 0;
$353 = tempRet0;
$354 = _bitshift64Shl($350 | 0, $351 | 0, 26) | 0;
$355 = tempRet0;
$356 = _i64Subtract($332 | 0, $333 | 0, $354 | 0, $355 | 0) | 0;
$357 = tempRet0;
$358 = _i64Add($342 | 0, $343 | 0, 16777216, 0) | 0;
$359 = tempRet0;
$360 = _bitshift64Ashr($358 | 0, $359 | 0, 25) | 0;
$361 = tempRet0;
$362 = _i64Add($360 | 0, $361 | 0, $316 | 0, $317 | 0) | 0;
$363 = tempRet0;
$364 = _bitshift64Shl($360 | 0, $361 | 0, 25) | 0;
$365 = tempRet0;
$366 = _i64Subtract($342 | 0, $343 | 0, $364 | 0, $365 | 0) | 0;
$367 = tempRet0;
$368 = _i64Add($352 | 0, $353 | 0, 16777216, 0) | 0;
$369 = tempRet0;
$370 = _bitshift64Ashr($368 | 0, $369 | 0, 25) | 0;
$371 = tempRet0;
$372 = _i64Add($370 | 0, $371 | 0, $294 | 0, $295 | 0) | 0;
$373 = tempRet0;
$374 = _bitshift64Shl($370 | 0, $371 | 0, 25) | 0;
$375 = tempRet0;
$376 = _i64Subtract($352 | 0, $353 | 0, $374 | 0, $375 | 0) | 0;
$377 = tempRet0;
$378 = _i64Add($362 | 0, $363 | 0, 33554432, 0) | 0;
$379 = tempRet0;
$380 = _bitshift64Ashr($378 | 0, $379 | 0, 26) | 0;
$381 = tempRet0;
$382 = _i64Add($336 | 0, $337 | 0, $380 | 0, $381 | 0) | 0;
$383 = tempRet0;
$384 = _bitshift64Shl($380 | 0, $381 | 0, 26) | 0;
$385 = tempRet0;
$386 = _i64Subtract($362 | 0, $363 | 0, $384 | 0, $385 | 0) | 0;
$387 = tempRet0;
$388 = _i64Add($372 | 0, $373 | 0, 33554432, 0) | 0;
$389 = tempRet0;
$390 = _bitshift64Ashr($388 | 0, $389 | 0, 26) | 0;
$391 = tempRet0;
$392 = _i64Add($390 | 0, $391 | 0, $296 | 0, $297 | 0) | 0;
$393 = tempRet0;
$394 = _bitshift64Shl($390 | 0, $391 | 0, 26) | 0;
$395 = tempRet0;
$396 = _i64Subtract($372 | 0, $373 | 0, $394 | 0, $395 | 0) | 0;
$397 = tempRet0;
$398 = _i64Add($392 | 0, $393 | 0, 16777216, 0) | 0;
$399 = tempRet0;
$400 = _bitshift64Ashr($398 | 0, $399 | 0, 25) | 0;
$401 = tempRet0;
$402 = ___muldi3($400 | 0, $401 | 0, 19, 0) | 0;
$403 = tempRet0;
$404 = _i64Add($402 | 0, $403 | 0, $306 | 0, $307 | 0) | 0;
$405 = tempRet0;
$406 = _bitshift64Shl($400 | 0, $401 | 0, 25) | 0;
$407 = tempRet0;
$408 = _i64Subtract($392 | 0, $393 | 0, $406 | 0, $407 | 0) | 0;
$409 = tempRet0;
$410 = _i64Add($404 | 0, $405 | 0, 33554432, 0) | 0;
$411 = tempRet0;
$412 = _bitshift64Ashr($410 | 0, $411 | 0, 26) | 0;
$413 = tempRet0;
$414 = _i64Add($326 | 0, $327 | 0, $412 | 0, $413 | 0) | 0;
$415 = tempRet0;
$416 = _bitshift64Shl($412 | 0, $413 | 0, 26) | 0;
$417 = tempRet0;
$418 = _i64Subtract($404 | 0, $405 | 0, $416 | 0, $417 | 0) | 0;
$419 = tempRet0;
HEAP32[$h >> 2] = $418;
$420 = ($h + 4) | 0;
HEAP32[$420 >> 2] = $414;
$421 = ($h + 8) | 0;
HEAP32[$421 >> 2] = $346;
$422 = ($h + 12) | 0;
HEAP32[$422 >> 2] = $366;
$423 = ($h + 16) | 0;
HEAP32[$423 >> 2] = $386;
$424 = ($h + 20) | 0;
HEAP32[$424 >> 2] = $382;
$425 = ($h + 24) | 0;
HEAP32[$425 >> 2] = $356;
$426 = ($h + 28) | 0;
HEAP32[$426 >> 2] = $376;
$427 = ($h + 32) | 0;
HEAP32[$427 >> 2] = $396;
$428 = ($h + 36) | 0;
HEAP32[$428 >> 2] = $408;
STACKTOP = sp;
return;
}
function _crypto_sign_ed25519_ref10_fe_sub($h, $f, $g) {
$h = $h | 0;
$f = $f | 0;
$g = $g | 0;
var $0 = 0,
$1 = 0,
$10 = 0,
$11 = 0,
$12 = 0,
$13 = 0,
$14 = 0,
$15 = 0,
$16 = 0,
$17 = 0,
$18 = 0,
$19 = 0,
$2 = 0,
$20 = 0,
$21 = 0,
$22 = 0,
$23 = 0,
$24 = 0,
$25 = 0,
$26 = 0;
var $27 = 0,
$28 = 0,
$29 = 0,
$3 = 0,
$30 = 0,
$31 = 0,
$32 = 0,
$33 = 0,
$34 = 0,
$35 = 0,
$36 = 0,
$37 = 0,
$38 = 0,
$39 = 0,
$4 = 0,
$40 = 0,
$41 = 0,
$42 = 0,
$43 = 0,
$44 = 0;
var $45 = 0,
$46 = 0,
$47 = 0,
$48 = 0,
$49 = 0,
$5 = 0,
$50 = 0,
$51 = 0,
$52 = 0,
$53 = 0,
$54 = 0,
$55 = 0,
$56 = 0,
$6 = 0,
$7 = 0,
$8 = 0,
$9 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = HEAP32[$f >> 2] | 0;
$1 = ($f + 4) | 0;
$2 = HEAP32[$1 >> 2] | 0;
$3 = ($f + 8) | 0;
$4 = HEAP32[$3 >> 2] | 0;
$5 = ($f + 12) | 0;
$6 = HEAP32[$5 >> 2] | 0;
$7 = ($f + 16) | 0;
$8 = HEAP32[$7 >> 2] | 0;
$9 = ($f + 20) | 0;
$10 = HEAP32[$9 >> 2] | 0;
$11 = ($f + 24) | 0;
$12 = HEAP32[$11 >> 2] | 0;
$13 = ($f + 28) | 0;
$14 = HEAP32[$13 >> 2] | 0;
$15 = ($f + 32) | 0;
$16 = HEAP32[$15 >> 2] | 0;
$17 = ($f + 36) | 0;
$18 = HEAP32[$17 >> 2] | 0;
$19 = HEAP32[$g >> 2] | 0;
$20 = ($g + 4) | 0;
$21 = HEAP32[$20 >> 2] | 0;
$22 = ($g + 8) | 0;
$23 = HEAP32[$22 >> 2] | 0;
$24 = ($g + 12) | 0;
$25 = HEAP32[$24 >> 2] | 0;
$26 = ($g + 16) | 0;
$27 = HEAP32[$26 >> 2] | 0;
$28 = ($g + 20) | 0;
$29 = HEAP32[$28 >> 2] | 0;
$30 = ($g + 24) | 0;
$31 = HEAP32[$30 >> 2] | 0;
$32 = ($g + 28) | 0;
$33 = HEAP32[$32 >> 2] | 0;
$34 = ($g + 32) | 0;
$35 = HEAP32[$34 >> 2] | 0;
$36 = ($g + 36) | 0;
$37 = HEAP32[$36 >> 2] | 0;
$38 = ($0 - $19) | 0;
$39 = ($2 - $21) | 0;
$40 = ($4 - $23) | 0;
$41 = ($6 - $25) | 0;
$42 = ($8 - $27) | 0;
$43 = ($10 - $29) | 0;
$44 = ($12 - $31) | 0;
$45 = ($14 - $33) | 0;
$46 = ($16 - $35) | 0;
$47 = ($18 - $37) | 0;
HEAP32[$h >> 2] = $38;
$48 = ($h + 4) | 0;
HEAP32[$48 >> 2] = $39;
$49 = ($h + 8) | 0;
HEAP32[$49 >> 2] = $40;
$50 = ($h + 12) | 0;
HEAP32[$50 >> 2] = $41;
$51 = ($h + 16) | 0;
HEAP32[$51 >> 2] = $42;
$52 = ($h + 20) | 0;
HEAP32[$52 >> 2] = $43;
$53 = ($h + 24) | 0;
HEAP32[$53 >> 2] = $44;
$54 = ($h + 28) | 0;
HEAP32[$54 >> 2] = $45;
$55 = ($h + 32) | 0;
HEAP32[$55 >> 2] = $46;
$56 = ($h + 36) | 0;
HEAP32[$56 >> 2] = $47;
STACKTOP = sp;
return;
}
function _crypto_sign_ed25519_ref10_fe_tobytes($s, $h) {
$s = $s | 0;
$h = $h | 0;
var $0 = 0,
$1 = 0,
$10 = 0,
$100 = 0,
$101 = 0,
$102 = 0,
$103 = 0,
$104 = 0,
$105 = 0,
$106 = 0,
$107 = 0,
$108 = 0,
$109 = 0,
$11 = 0,
$110 = 0,
$111 = 0,
$112 = 0,
$113 = 0,
$114 = 0,
$115 = 0;
var $116 = 0,
$117 = 0,
$118 = 0,
$119 = 0,
$12 = 0,
$120 = 0,
$121 = 0,
$122 = 0,
$123 = 0,
$124 = 0,
$125 = 0,
$126 = 0,
$127 = 0,
$128 = 0,
$129 = 0,
$13 = 0,
$130 = 0,
$131 = 0,
$132 = 0,
$133 = 0;
var $134 = 0,
$135 = 0,
$136 = 0,
$137 = 0,
$138 = 0,
$139 = 0,
$14 = 0,
$140 = 0,
$141 = 0,
$142 = 0,
$143 = 0,
$144 = 0,
$145 = 0,
$146 = 0,
$147 = 0,
$148 = 0,
$149 = 0,
$15 = 0,
$150 = 0,
$151 = 0;
var $152 = 0,
$153 = 0,
$154 = 0,
$155 = 0,
$156 = 0,
$157 = 0,
$158 = 0,
$159 = 0,
$16 = 0,
$160 = 0,
$161 = 0,
$162 = 0,
$163 = 0,
$164 = 0,
$165 = 0,
$166 = 0,
$167 = 0,
$168 = 0,
$169 = 0,
$17 = 0;
var $170 = 0,
$171 = 0,
$172 = 0,
$173 = 0,
$174 = 0,
$175 = 0,
$176 = 0,
$177 = 0,
$178 = 0,
$179 = 0,
$18 = 0,
$180 = 0,
$181 = 0,
$182 = 0,
$183 = 0,
$184 = 0,
$185 = 0,
$186 = 0,
$187 = 0,
$188 = 0;
var $189 = 0,
$19 = 0,
$2 = 0,
$20 = 0,
$21 = 0,
$22 = 0,
$23 = 0,
$24 = 0,
$25 = 0,
$26 = 0,
$27 = 0,
$28 = 0,
$29 = 0,
$3 = 0,
$30 = 0,
$31 = 0,
$32 = 0,
$33 = 0,
$34 = 0,
$35 = 0;
var $36 = 0,
$37 = 0,
$38 = 0,
$39 = 0,
$4 = 0,
$40 = 0,
$41 = 0,
$42 = 0,
$43 = 0,
$44 = 0,
$45 = 0,
$46 = 0,
$47 = 0,
$48 = 0,
$49 = 0,
$5 = 0,
$50 = 0,
$51 = 0,
$52 = 0,
$53 = 0;
var $54 = 0,
$55 = 0,
$56 = 0,
$57 = 0,
$58 = 0,
$59 = 0,
$6 = 0,
$60 = 0,
$61 = 0,
$62 = 0,
$63 = 0,
$64 = 0,
$65 = 0,
$66 = 0,
$67 = 0,
$68 = 0,
$69 = 0,
$7 = 0,
$70 = 0,
$71 = 0;
var $72 = 0,
$73 = 0,
$74 = 0,
$75 = 0,
$76 = 0,
$77 = 0,
$78 = 0,
$79 = 0,
$8 = 0,
$80 = 0,
$81 = 0,
$82 = 0,
$83 = 0,
$84 = 0,
$85 = 0,
$86 = 0,
$87 = 0,
$88 = 0,
$89 = 0,
$9 = 0;
var $90 = 0,
$91 = 0,
$92 = 0,
$93 = 0,
$94 = 0,
$95 = 0,
$96 = 0,
$97 = 0,
$98 = 0,
$99 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = HEAP32[$h >> 2] | 0;
$1 = ($h + 4) | 0;
$2 = HEAP32[$1 >> 2] | 0;
$3 = ($h + 8) | 0;
$4 = HEAP32[$3 >> 2] | 0;
$5 = ($h + 12) | 0;
$6 = HEAP32[$5 >> 2] | 0;
$7 = ($h + 16) | 0;
$8 = HEAP32[$7 >> 2] | 0;
$9 = ($h + 20) | 0;
$10 = HEAP32[$9 >> 2] | 0;
$11 = ($h + 24) | 0;
$12 = HEAP32[$11 >> 2] | 0;
$13 = ($h + 28) | 0;
$14 = HEAP32[$13 >> 2] | 0;
$15 = ($h + 32) | 0;
$16 = HEAP32[$15 >> 2] | 0;
$17 = ($h + 36) | 0;
$18 = HEAP32[$17 >> 2] | 0;
$19 = ($18 * 19) | 0;
$20 = ($19 + 16777216) | 0;
$21 = $20 >> 25;
$22 = ($21 + $0) | 0;
$23 = $22 >> 26;
$24 = ($23 + $2) | 0;
$25 = $24 >> 25;
$26 = ($25 + $4) | 0;
$27 = $26 >> 26;
$28 = ($27 + $6) | 0;
$29 = $28 >> 25;
$30 = ($29 + $8) | 0;
$31 = $30 >> 26;
$32 = ($31 + $10) | 0;
$33 = $32 >> 25;
$34 = ($33 + $12) | 0;
$35 = $34 >> 26;
$36 = ($35 + $14) | 0;
$37 = $36 >> 25;
$38 = ($37 + $16) | 0;
$39 = $38 >> 26;
$40 = ($39 + $18) | 0;
$41 = $40 >> 25;
$42 = ($41 * 19) | 0;
$43 = ($42 + $0) | 0;
$44 = $43 >> 26;
$45 = ($44 + $2) | 0;
$46 = $44 << 26;
$47 = ($43 - $46) | 0;
$48 = $45 >> 25;
$49 = ($48 + $4) | 0;
$50 = $48 << 25;
$51 = ($45 - $50) | 0;
$52 = $49 >> 26;
$53 = ($52 + $6) | 0;
$54 = $52 << 26;
$55 = ($49 - $54) | 0;
$56 = $53 >> 25;
$57 = ($56 + $8) | 0;
$58 = $56 << 25;
$59 = ($53 - $58) | 0;
$60 = $57 >> 26;
$61 = ($60 + $10) | 0;
$62 = $60 << 26;
$63 = ($57 - $62) | 0;
$64 = $61 >> 25;
$65 = ($64 + $12) | 0;
$66 = $64 << 25;
$67 = ($61 - $66) | 0;
$68 = $65 >> 26;
$69 = ($68 + $14) | 0;
$70 = $68 << 26;
$71 = ($65 - $70) | 0;
$72 = $69 >> 25;
$73 = ($72 + $16) | 0;
$74 = $72 << 25;
$75 = ($69 - $74) | 0;
$76 = $73 >> 26;
$77 = ($76 + $18) | 0;
$78 = $76 << 26;
$79 = ($73 - $78) | 0;
$80 = $77 & 33554431;
$81 = $47 & 255;
HEAP8[$s >> 0] = $81;
$82 = $47 >>> 8;
$83 = $82 & 255;
$84 = ($s + 1) | 0;
HEAP8[$84 >> 0] = $83;
$85 = $47 >>> 16;
$86 = $85 & 255;
$87 = ($s + 2) | 0;
HEAP8[$87 >> 0] = $86;
$88 = $47 >>> 24;
$89 = $51 << 2;
$90 = $89 | $88;
$91 = $90 & 255;
$92 = ($s + 3) | 0;
HEAP8[$92 >> 0] = $91;
$93 = $51 >>> 6;
$94 = $93 & 255;
$95 = ($s + 4) | 0;
HEAP8[$95 >> 0] = $94;
$96 = $51 >>> 14;
$97 = $96 & 255;
$98 = ($s + 5) | 0;
HEAP8[$98 >> 0] = $97;
$99 = $51 >>> 22;
$100 = $55 << 3;
$101 = $100 | $99;
$102 = $101 & 255;
$103 = ($s + 6) | 0;
HEAP8[$103 >> 0] = $102;
$104 = $55 >>> 5;
$105 = $104 & 255;
$106 = ($s + 7) | 0;
HEAP8[$106 >> 0] = $105;
$107 = $55 >>> 13;
$108 = $107 & 255;
$109 = ($s + 8) | 0;
HEAP8[$109 >> 0] = $108;
$110 = $55 >>> 21;
$111 = $59 << 5;
$112 = $111 | $110;
$113 = $112 & 255;
$114 = ($s + 9) | 0;
HEAP8[$114 >> 0] = $113;
$115 = $59 >>> 3;
$116 = $115 & 255;
$117 = ($s + 10) | 0;
HEAP8[$117 >> 0] = $116;
$118 = $59 >>> 11;
$119 = $118 & 255;
$120 = ($s + 11) | 0;
HEAP8[$120 >> 0] = $119;
$121 = $59 >>> 19;
$122 = $63 << 6;
$123 = $122 | $121;
$124 = $123 & 255;
$125 = ($s + 12) | 0;
HEAP8[$125 >> 0] = $124;
$126 = $63 >>> 2;
$127 = $126 & 255;
$128 = ($s + 13) | 0;
HEAP8[$128 >> 0] = $127;
$129 = $63 >>> 10;
$130 = $129 & 255;
$131 = ($s + 14) | 0;
HEAP8[$131 >> 0] = $130;
$132 = $63 >>> 18;
$133 = $132 & 255;
$134 = ($s + 15) | 0;
HEAP8[$134 >> 0] = $133;
$135 = $67 & 255;
$136 = ($s + 16) | 0;
HEAP8[$136 >> 0] = $135;
$137 = $67 >>> 8;
$138 = $137 & 255;
$139 = ($s + 17) | 0;
HEAP8[$139 >> 0] = $138;
$140 = $67 >>> 16;
$141 = $140 & 255;
$142 = ($s + 18) | 0;
HEAP8[$142 >> 0] = $141;
$143 = $67 >>> 24;
$144 = $71 << 1;
$145 = $144 | $143;
$146 = $145 & 255;
$147 = ($s + 19) | 0;
HEAP8[$147 >> 0] = $146;
$148 = $71 >>> 7;
$149 = $148 & 255;
$150 = ($s + 20) | 0;
HEAP8[$150 >> 0] = $149;
$151 = $71 >>> 15;
$152 = $151 & 255;
$153 = ($s + 21) | 0;
HEAP8[$153 >> 0] = $152;
$154 = $71 >>> 23;
$155 = $75 << 3;
$156 = $155 | $154;
$157 = $156 & 255;
$158 = ($s + 22) | 0;
HEAP8[$158 >> 0] = $157;
$159 = $75 >>> 5;
$160 = $159 & 255;
$161 = ($s + 23) | 0;
HEAP8[$161 >> 0] = $160;
$162 = $75 >>> 13;
$163 = $162 & 255;
$164 = ($s + 24) | 0;
HEAP8[$164 >> 0] = $163;
$165 = $75 >>> 21;
$166 = $79 << 4;
$167 = $166 | $165;
$168 = $167 & 255;
$169 = ($s + 25) | 0;
HEAP8[$169 >> 0] = $168;
$170 = $79 >>> 4;
$171 = $170 & 255;
$172 = ($s + 26) | 0;
HEAP8[$172 >> 0] = $171;
$173 = $79 >>> 12;
$174 = $173 & 255;
$175 = ($s + 27) | 0;
HEAP8[$175 >> 0] = $174;
$176 = $79 >>> 20;
$177 = $80 << 6;
$178 = $176 | $177;
$179 = $178 & 255;
$180 = ($s + 28) | 0;
HEAP8[$180 >> 0] = $179;
$181 = $77 >>> 2;
$182 = $181 & 255;
$183 = ($s + 29) | 0;
HEAP8[$183 >> 0] = $182;
$184 = $77 >>> 10;
$185 = $184 & 255;
$186 = ($s + 30) | 0;
HEAP8[$186 >> 0] = $185;
$187 = $80 >>> 18;
$188 = $187 & 255;
$189 = ($s + 31) | 0;
HEAP8[$189 >> 0] = $188;
STACKTOP = sp;
return;
}
function _crypto_sign_ed25519_ref10_ge_add($r, $p, $q) {
$r = $r | 0;
$p = $p | 0;
$q = $q | 0;
var $0 = 0,
$1 = 0,
$2 = 0,
$3 = 0,
$4 = 0,
$5 = 0,
$6 = 0,
$7 = 0,
$8 = 0,
$t0 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
STACKTOP = (STACKTOP + 48) | 0;
$t0 = sp;
$0 = ($p + 40) | 0;
_crypto_sign_ed25519_ref10_fe_add($r, $0, $p);
$1 = ($r + 40) | 0;
_crypto_sign_ed25519_ref10_fe_sub($1, $0, $p);
$2 = ($r + 80) | 0;
_crypto_sign_ed25519_ref10_fe_mul($2, $r, $q);
$3 = ($q + 40) | 0;
_crypto_sign_ed25519_ref10_fe_mul($1, $1, $3);
$4 = ($r + 120) | 0;
$5 = ($q + 120) | 0;
$6 = ($p + 120) | 0;
_crypto_sign_ed25519_ref10_fe_mul($4, $5, $6);
$7 = ($p + 80) | 0;
$8 = ($q + 80) | 0;
_crypto_sign_ed25519_ref10_fe_mul($r, $7, $8);
_crypto_sign_ed25519_ref10_fe_add($t0, $r, $r);
_crypto_sign_ed25519_ref10_fe_sub($r, $2, $1);
_crypto_sign_ed25519_ref10_fe_add($1, $2, $1);
_crypto_sign_ed25519_ref10_fe_add($2, $t0, $4);
_crypto_sign_ed25519_ref10_fe_sub($4, $t0, $4);
STACKTOP = sp;
return;
}
function _crypto_sign_ed25519_ref10_ge_double_scalarmult_vartime(
$r,
$a,
$A,
$b
) {
$r = $r | 0;
$a = $a | 0;
$A = $A | 0;
$b = $b | 0;
var $0 = 0,
$1 = 0,
$10 = 0,
$11 = 0,
$12 = 0,
$13 = 0,
$14 = 0,
$15 = 0,
$16 = 0,
$17 = 0,
$18 = 0,
$19 = 0,
$2 = 0,
$20 = 0,
$21 = 0,
$22 = 0,
$23 = 0,
$24 = 0,
$25 = 0,
$26 = 0;
var $27 = 0,
$28 = 0,
$29 = 0,
$3 = 0,
$30 = 0,
$31 = 0,
$32 = 0,
$33 = 0,
$34 = 0,
$35 = 0,
$36 = 0,
$37 = 0,
$38 = 0,
$39 = 0,
$4 = 0,
$40 = 0,
$41 = 0,
$5 = 0,
$6 = 0,
$7 = 0;
var $8 = 0,
$9 = 0,
$A2 = 0,
$Ai = 0,
$aslide = 0,
$bslide = 0,
$i$0$lcssa = 0,
$i$02 = 0,
$i$11 = 0,
$t = 0,
$u = 0,
label = 0,
sp = 0;
sp = STACKTOP;
STACKTOP = (STACKTOP + 2272) | 0;
$aslide = (sp + 2016) | 0;
$bslide = (sp + 1760) | 0;
$Ai = (sp + 480) | 0;
$t = (sp + 320) | 0;
$u = (sp + 160) | 0;
$A2 = sp;
_slide($aslide, $a);
_slide($bslide, $b);
_crypto_sign_ed25519_ref10_ge_p3_to_cached($Ai, $A);
_crypto_sign_ed25519_ref10_ge_p3_dbl($t, $A);
_crypto_sign_ed25519_ref10_ge_p1p1_to_p3($A2, $t);
_crypto_sign_ed25519_ref10_ge_add($t, $A2, $Ai);
_crypto_sign_ed25519_ref10_ge_p1p1_to_p3($u, $t);
$0 = ($Ai + 160) | 0;
_crypto_sign_ed25519_ref10_ge_p3_to_cached($0, $u);
_crypto_sign_ed25519_ref10_ge_add($t, $A2, $0);
_crypto_sign_ed25519_ref10_ge_p1p1_to_p3($u, $t);
$1 = ($Ai + 320) | 0;
_crypto_sign_ed25519_ref10_ge_p3_to_cached($1, $u);
_crypto_sign_ed25519_ref10_ge_add($t, $A2, $1);
_crypto_sign_ed25519_ref10_ge_p1p1_to_p3($u, $t);
$2 = ($Ai + 480) | 0;
_crypto_sign_ed25519_ref10_ge_p3_to_cached($2, $u);
_crypto_sign_ed25519_ref10_ge_add($t, $A2, $2);
_crypto_sign_ed25519_ref10_ge_p1p1_to_p3($u, $t);
$3 = ($Ai + 640) | 0;
_crypto_sign_ed25519_ref10_ge_p3_to_cached($3, $u);
_crypto_sign_ed25519_ref10_ge_add($t, $A2, $3);
_crypto_sign_ed25519_ref10_ge_p1p1_to_p3($u, $t);
$4 = ($Ai + 800) | 0;
_crypto_sign_ed25519_ref10_ge_p3_to_cached($4, $u);
_crypto_sign_ed25519_ref10_ge_add($t, $A2, $4);
_crypto_sign_ed25519_ref10_ge_p1p1_to_p3($u, $t);
$5 = ($Ai + 960) | 0;
_crypto_sign_ed25519_ref10_ge_p3_to_cached($5, $u);
_crypto_sign_ed25519_ref10_ge_add($t, $A2, $5);
_crypto_sign_ed25519_ref10_ge_p1p1_to_p3($u, $t);
$6 = ($Ai + 1120) | 0;
_crypto_sign_ed25519_ref10_ge_p3_to_cached($6, $u);
_crypto_sign_ed25519_ref10_ge_p2_0($r);
$i$02 = 255;
while (1) {
$8 = ($aslide + $i$02) | 0;
$9 = HEAP8[$8 >> 0] | 0;
$10 = ($9 << 24) >> 24 == 0;
if (!$10) {
$i$0$lcssa = $i$02;
break;
}
$11 = ($bslide + $i$02) | 0;
$12 = HEAP8[$11 >> 0] | 0;
$13 = ($12 << 24) >> 24 == 0;
$14 = ($i$02 + -1) | 0;
if (!$13) {
$i$0$lcssa = $i$02;
break;
}
$7 = ($i$02 | 0) > 0;
if ($7) {
$i$02 = $14;
} else {
$i$0$lcssa = $14;
break;
}
}
$15 = ($i$0$lcssa | 0) > -1;
if ($15) {
$i$11 = $i$0$lcssa;
} else {
STACKTOP = sp;
return;
}
while (1) {
_crypto_sign_ed25519_ref10_ge_p2_dbl($t, $r);
$16 = ($aslide + $i$11) | 0;
$17 = HEAP8[$16 >> 0] | 0;
$18 = ($17 << 24) >> 24 > 0;
if ($18) {
_crypto_sign_ed25519_ref10_ge_p1p1_to_p3($u, $t);
$19 = HEAP8[$16 >> 0] | 0;
$20 = ($19 << 24) >> 24;
$21 = (($20 | 0) / 2) & -1;
$22 = ($Ai + (($21 * 160) | 0)) | 0;
_crypto_sign_ed25519_ref10_ge_add($t, $u, $22);
} else {
$23 = ($17 << 24) >> 24 < 0;
if ($23) {
_crypto_sign_ed25519_ref10_ge_p1p1_to_p3($u, $t);
$24 = HEAP8[$16 >> 0] | 0;
$25 = ($24 << 24) >> 24;
$26 = (($25 | 0) / -2) & -1;
$27 = ($Ai + (($26 * 160) | 0)) | 0;
_crypto_sign_ed25519_ref10_ge_sub($t, $u, $27);
}
}
$28 = ($bslide + $i$11) | 0;
$29 = HEAP8[$28 >> 0] | 0;
$30 = ($29 << 24) >> 24 > 0;
if ($30) {
_crypto_sign_ed25519_ref10_ge_p1p1_to_p3($u, $t);
$31 = HEAP8[$28 >> 0] | 0;
$32 = ($31 << 24) >> 24;
$33 = (($32 | 0) / 2) & -1;
$34 = (40 + (($33 * 120) | 0)) | 0;
_crypto_sign_ed25519_ref10_ge_madd($t, $u, $34);
} else {
$35 = ($29 << 24) >> 24 < 0;
if ($35) {
_crypto_sign_ed25519_ref10_ge_p1p1_to_p3($u, $t);
$36 = HEAP8[$28 >> 0] | 0;
$37 = ($36 << 24) >> 24;
$38 = (($37 | 0) / -2) & -1;
$39 = (40 + (($38 * 120) | 0)) | 0;
_crypto_sign_ed25519_ref10_ge_msub($t, $u, $39);
}
}
_crypto_sign_ed25519_ref10_ge_p1p1_to_p2($r, $t);
$40 = ($i$11 + -1) | 0;
$41 = ($i$11 | 0) > 0;
if ($41) {
$i$11 = $40;
} else {
break;
}
}
STACKTOP = sp;
return;
}
function _slide($r, $a) {
$r = $r | 0;
$a = $a | 0;
var $0 = 0,
$1 = 0,
$10 = 0,
$11 = 0,
$12 = 0,
$13 = 0,
$14 = 0,
$15 = 0,
$16 = 0,
$17 = 0,
$18 = 0,
$19 = 0,
$2 = 0,
$20 = 0,
$21 = 0,
$22 = 0,
$23 = 0,
$24 = 0,
$25 = 0,
$26 = 0;
var $27 = 0,
$28 = 0,
$29 = 0,
$3 = 0,
$30 = 0,
$31 = 0,
$32 = 0,
$33 = 0,
$34 = 0,
$35 = 0,
$36 = 0,
$4 = 0,
$5 = 0,
$6 = 0,
$7 = 0,
$8 = 0,
$9 = 0,
$b$03 = 0,
$exitcond = 0,
$exitcond10 = 0;
var $i$08 = 0,
$i$15 = 0,
$k$01 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$i$08 = 0;
while (1) {
$0 = $i$08 >> 3;
$1 = ($a + $0) | 0;
$2 = HEAP8[$1 >> 0] | 0;
$3 = $2 & 255;
$4 = $i$08 & 7;
$5 = $3 >>> $4;
$6 = $5 & 1;
$7 = $6 & 255;
$8 = ($r + $i$08) | 0;
HEAP8[$8 >> 0] = $7;
$9 = ($i$08 + 1) | 0;
$exitcond10 = ($9 | 0) == 256;
if ($exitcond10) {
$i$15 = 0;
break;
} else {
$i$08 = $9;
}
}
while (1) {
$10 = ($r + $i$15) | 0;
$11 = HEAP8[$10 >> 0] | 0;
$12 = ($11 << 24) >> 24 == 0;
L5: do {
if (!$12) {
$b$03 = 1;
while (1) {
$13 = ($b$03 + $i$15) | 0;
$14 = ($13 | 0) < 256;
if (!$14) {
break L5;
}
$15 = ($r + $13) | 0;
$16 = HEAP8[$15 >> 0] | 0;
$17 = ($16 << 24) >> 24 == 0;
L9: do {
if (!$17) {
$18 = HEAP8[$10 >> 0] | 0;
$19 = ($18 << 24) >> 24;
$20 = ($16 << 24) >> 24;
$21 = $20 << $b$03;
$22 = ($19 + $21) | 0;
$23 = ($22 | 0) < 16;
if ($23) {
$24 = $22 & 255;
HEAP8[$10 >> 0] = $24;
HEAP8[$15 >> 0] = 0;
break;
}
$25 = ($19 - $21) | 0;
$26 = ($25 | 0) > -16;
if (!$26) {
break L5;
}
$27 = $25 & 255;
HEAP8[$10 >> 0] = $27;
$28 = ($13 | 0) < 256;
if ($28) {
$k$01 = $13;
while (1) {
$29 = ($r + $k$01) | 0;
$30 = HEAP8[$29 >> 0] | 0;
$31 = ($30 << 24) >> 24 == 0;
if ($31) {
break;
}
HEAP8[$29 >> 0] = 0;
$32 = ($k$01 + 1) | 0;
$33 = ($32 | 0) < 256;
if ($33) {
$k$01 = $32;
} else {
break L9;
}
}
HEAP8[$29 >> 0] = 1;
}
}
} while (0);
$34 = ($b$03 + 1) | 0;
$35 = ($34 | 0) < 7;
if ($35) {
$b$03 = $34;
} else {
break;
}
}
}
} while (0);
$36 = ($i$15 + 1) | 0;
$exitcond = ($36 | 0) == 256;
if ($exitcond) {
break;
} else {
$i$15 = $36;
}
}
STACKTOP = sp;
return;
}
function _crypto_sign_ed25519_ref10_ge_frombytes_negate_vartime($h, $s) {
$h = $h | 0;
$s = $s | 0;
var $$0 = 0,
$0 = 0,
$1 = 0,
$10 = 0,
$11 = 0,
$12 = 0,
$2 = 0,
$3 = 0,
$4 = 0,
$5 = 0,
$6 = 0,
$7 = 0,
$8 = 0,
$9 = 0,
$check = 0,
$u = 0,
$v = 0,
$v3 = 0,
$vxx = 0,
label = 0;
var sp = 0;
sp = STACKTOP;
STACKTOP = (STACKTOP + 208) | 0;
$u = (sp + 160) | 0;
$v = (sp + 120) | 0;
$v3 = (sp + 80) | 0;
$vxx = (sp + 40) | 0;
$check = sp;
$0 = ($h + 40) | 0;
_crypto_sign_ed25519_ref10_fe_frombytes($0, $s);
$1 = ($h + 80) | 0;
_crypto_sign_ed25519_ref10_fe_1($1);
_crypto_sign_ed25519_ref10_fe_sq($u, $0);
_crypto_sign_ed25519_ref10_fe_mul($v, $u, 1000);
_crypto_sign_ed25519_ref10_fe_sub($u, $u, $1);
_crypto_sign_ed25519_ref10_fe_add($v, $v, $1);
_crypto_sign_ed25519_ref10_fe_sq($v3, $v);
_crypto_sign_ed25519_ref10_fe_mul($v3, $v3, $v);
_crypto_sign_ed25519_ref10_fe_sq($h, $v3);
_crypto_sign_ed25519_ref10_fe_mul($h, $h, $v);
_crypto_sign_ed25519_ref10_fe_mul($h, $h, $u);
_crypto_sign_ed25519_ref10_fe_pow22523($h, $h);
_crypto_sign_ed25519_ref10_fe_mul($h, $h, $v3);
_crypto_sign_ed25519_ref10_fe_mul($h, $h, $u);
_crypto_sign_ed25519_ref10_fe_sq($vxx, $h);
_crypto_sign_ed25519_ref10_fe_mul($vxx, $vxx, $v);
_crypto_sign_ed25519_ref10_fe_sub($check, $vxx, $u);
$2 = _crypto_sign_ed25519_ref10_fe_isnonzero($check) | 0;
$3 = ($2 | 0) == 0;
do {
if (!$3) {
_crypto_sign_ed25519_ref10_fe_add($check, $vxx, $u);
$4 = _crypto_sign_ed25519_ref10_fe_isnonzero($check) | 0;
$5 = ($4 | 0) == 0;
if ($5) {
_crypto_sign_ed25519_ref10_fe_mul($h, $h, 1040);
break;
} else {
$$0 = -1;
STACKTOP = sp;
return $$0 | 0;
}
}
} while (0);
$6 = _crypto_sign_ed25519_ref10_fe_isnegative($h) | 0;
$7 = ($s + 31) | 0;
$8 = HEAP8[$7 >> 0] | 0;
$9 = $8 & 255;
$10 = $9 >>> 7;
$11 = ($6 | 0) == ($10 | 0);
if ($11) {
_crypto_sign_ed25519_ref10_fe_neg($h, $h);
}
$12 = ($h + 120) | 0;
_crypto_sign_ed25519_ref10_fe_mul($12, $h, $0);
$$0 = 0;
STACKTOP = sp;
return $$0 | 0;
}
function _crypto_sign_ed25519_ref10_ge_madd($r, $p, $q) {
$r = $r | 0;
$p = $p | 0;
$q = $q | 0;
var $0 = 0,
$1 = 0,
$2 = 0,
$3 = 0,
$4 = 0,
$5 = 0,
$6 = 0,
$7 = 0,
$t0 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
STACKTOP = (STACKTOP + 48) | 0;
$t0 = sp;
$0 = ($p + 40) | 0;
_crypto_sign_ed25519_ref10_fe_add($r, $0, $p);
$1 = ($r + 40) | 0;
_crypto_sign_ed25519_ref10_fe_sub($1, $0, $p);
$2 = ($r + 80) | 0;
_crypto_sign_ed25519_ref10_fe_mul($2, $r, $q);
$3 = ($q + 40) | 0;
_crypto_sign_ed25519_ref10_fe_mul($1, $1, $3);
$4 = ($r + 120) | 0;
$5 = ($q + 80) | 0;
$6 = ($p + 120) | 0;
_crypto_sign_ed25519_ref10_fe_mul($4, $5, $6);
$7 = ($p + 80) | 0;
_crypto_sign_ed25519_ref10_fe_add($t0, $7, $7);
_crypto_sign_ed25519_ref10_fe_sub($r, $2, $1);
_crypto_sign_ed25519_ref10_fe_add($1, $2, $1);
_crypto_sign_ed25519_ref10_fe_add($2, $t0, $4);
_crypto_sign_ed25519_ref10_fe_sub($4, $t0, $4);
STACKTOP = sp;
return;
}
function _crypto_sign_ed25519_ref10_ge_msub($r, $p, $q) {
$r = $r | 0;
$p = $p | 0;
$q = $q | 0;
var $0 = 0,
$1 = 0,
$2 = 0,
$3 = 0,
$4 = 0,
$5 = 0,
$6 = 0,
$7 = 0,
$t0 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
STACKTOP = (STACKTOP + 48) | 0;
$t0 = sp;
$0 = ($p + 40) | 0;
_crypto_sign_ed25519_ref10_fe_add($r, $0, $p);
$1 = ($r + 40) | 0;
_crypto_sign_ed25519_ref10_fe_sub($1, $0, $p);
$2 = ($r + 80) | 0;
$3 = ($q + 40) | 0;
_crypto_sign_ed25519_ref10_fe_mul($2, $r, $3);
_crypto_sign_ed25519_ref10_fe_mul($1, $1, $q);
$4 = ($r + 120) | 0;
$5 = ($q + 80) | 0;
$6 = ($p + 120) | 0;
_crypto_sign_ed25519_ref10_fe_mul($4, $5, $6);
$7 = ($p + 80) | 0;
_crypto_sign_ed25519_ref10_fe_add($t0, $7, $7);
_crypto_sign_ed25519_ref10_fe_sub($r, $2, $1);
_crypto_sign_ed25519_ref10_fe_add($1, $2, $1);
_crypto_sign_ed25519_ref10_fe_sub($2, $t0, $4);
_crypto_sign_ed25519_ref10_fe_add($4, $t0, $4);
STACKTOP = sp;
return;
}
function _crypto_sign_ed25519_ref10_ge_p1p1_to_p2($r, $p) {
$r = $r | 0;
$p = $p | 0;
var $0 = 0,
$1 = 0,
$2 = 0,
$3 = 0,
$4 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = ($p + 120) | 0;
_crypto_sign_ed25519_ref10_fe_mul($r, $p, $0);
$1 = ($r + 40) | 0;
$2 = ($p + 40) | 0;
$3 = ($p + 80) | 0;
_crypto_sign_ed25519_ref10_fe_mul($1, $2, $3);
$4 = ($r + 80) | 0;
_crypto_sign_ed25519_ref10_fe_mul($4, $3, $0);
STACKTOP = sp;
return;
}
function _crypto_sign_ed25519_ref10_ge_p1p1_to_p3($r, $p) {
$r = $r | 0;
$p = $p | 0;
var $0 = 0,
$1 = 0,
$2 = 0,
$3 = 0,
$4 = 0,
$5 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = ($p + 120) | 0;
_crypto_sign_ed25519_ref10_fe_mul($r, $p, $0);
$1 = ($r + 40) | 0;
$2 = ($p + 40) | 0;
$3 = ($p + 80) | 0;
_crypto_sign_ed25519_ref10_fe_mul($1, $2, $3);
$4 = ($r + 80) | 0;
_crypto_sign_ed25519_ref10_fe_mul($4, $3, $0);
$5 = ($r + 120) | 0;
_crypto_sign_ed25519_ref10_fe_mul($5, $p, $2);
STACKTOP = sp;
return;
}
function _crypto_sign_ed25519_ref10_ge_p2_0($h) {
$h = $h | 0;
var $0 = 0,
$1 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
_crypto_sign_ed25519_ref10_fe_0($h);
$0 = ($h + 40) | 0;
_crypto_sign_ed25519_ref10_fe_1($0);
$1 = ($h + 80) | 0;
_crypto_sign_ed25519_ref10_fe_1($1);
STACKTOP = sp;
return;
}
function _crypto_sign_ed25519_ref10_ge_p2_dbl($r, $p) {
$r = $r | 0;
$p = $p | 0;
var $0 = 0,
$1 = 0,
$2 = 0,
$3 = 0,
$4 = 0,
$t0 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
STACKTOP = (STACKTOP + 48) | 0;
$t0 = sp;
_crypto_sign_ed25519_ref10_fe_sq($r, $p);
$0 = ($r + 80) | 0;
$1 = ($p + 40) | 0;
_crypto_sign_ed25519_ref10_fe_sq($0, $1);
$2 = ($r + 120) | 0;
$3 = ($p + 80) | 0;
_crypto_sign_ed25519_ref10_fe_sq2($2, $3);
$4 = ($r + 40) | 0;
_crypto_sign_ed25519_ref10_fe_add($4, $p, $1);
_crypto_sign_ed25519_ref10_fe_sq($t0, $4);
_crypto_sign_ed25519_ref10_fe_add($4, $0, $r);
_crypto_sign_ed25519_ref10_fe_sub($0, $0, $r);
_crypto_sign_ed25519_ref10_fe_sub($r, $t0, $4);
_crypto_sign_ed25519_ref10_fe_sub($2, $2, $0);
STACKTOP = sp;
return;
}
function _crypto_sign_ed25519_ref10_ge_p3_0($h) {
$h = $h | 0;
var $0 = 0,
$1 = 0,
$2 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
_crypto_sign_ed25519_ref10_fe_0($h);
$0 = ($h + 40) | 0;
_crypto_sign_ed25519_ref10_fe_1($0);
$1 = ($h + 80) | 0;
_crypto_sign_ed25519_ref10_fe_1($1);
$2 = ($h + 120) | 0;
_crypto_sign_ed25519_ref10_fe_0($2);
STACKTOP = sp;
return;
}
function _crypto_sign_ed25519_ref10_ge_p3_dbl($r, $p) {
$r = $r | 0;
$p = $p | 0;
var $q = 0,
label = 0,
sp = 0;
sp = STACKTOP;
STACKTOP = (STACKTOP + 128) | 0;
$q = sp;
_crypto_sign_ed25519_ref10_ge_p3_to_p2($q, $p);
_crypto_sign_ed25519_ref10_ge_p2_dbl($r, $q);
STACKTOP = sp;
return;
}
function _crypto_sign_ed25519_ref10_ge_p3_to_cached($r, $p) {
$r = $r | 0;
$p = $p | 0;
var $0 = 0,
$1 = 0,
$2 = 0,
$3 = 0,
$4 = 0,
$5 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = ($p + 40) | 0;
_crypto_sign_ed25519_ref10_fe_add($r, $0, $p);
$1 = ($r + 40) | 0;
_crypto_sign_ed25519_ref10_fe_sub($1, $0, $p);
$2 = ($r + 80) | 0;
$3 = ($p + 80) | 0;
_crypto_sign_ed25519_ref10_fe_copy($2, $3);
$4 = ($r + 120) | 0;
$5 = ($p + 120) | 0;
_crypto_sign_ed25519_ref10_fe_mul($4, $5, 1080);
STACKTOP = sp;
return;
}
function _crypto_sign_ed25519_ref10_ge_p3_to_p2($r, $p) {
$r = $r | 0;
$p = $p | 0;
var $0 = 0,
$1 = 0,
$2 = 0,
$3 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
_crypto_sign_ed25519_ref10_fe_copy($r, $p);
$0 = ($r + 40) | 0;
$1 = ($p + 40) | 0;
_crypto_sign_ed25519_ref10_fe_copy($0, $1);
$2 = ($r + 80) | 0;
$3 = ($p + 80) | 0;
_crypto_sign_ed25519_ref10_fe_copy($2, $3);
STACKTOP = sp;
return;
}
function _crypto_sign_ed25519_ref10_ge_p3_tobytes($s, $h) {
$s = $s | 0;
$h = $h | 0;
var $0 = 0,
$1 = 0,
$2 = 0,
$3 = 0,
$4 = 0,
$5 = 0,
$6 = 0,
$7 = 0,
$8 = 0,
$recip = 0,
$x = 0,
$y = 0,
label = 0,
sp = 0;
sp = STACKTOP;
STACKTOP = (STACKTOP + 128) | 0;
$recip = (sp + 80) | 0;
$x = (sp + 40) | 0;
$y = sp;
$0 = ($h + 80) | 0;
_crypto_sign_ed25519_ref10_fe_invert($recip, $0);
_crypto_sign_ed25519_ref10_fe_mul($x, $h, $recip);
$1 = ($h + 40) | 0;
_crypto_sign_ed25519_ref10_fe_mul($y, $1, $recip);
_crypto_sign_ed25519_ref10_fe_tobytes($s, $y);
$2 = _crypto_sign_ed25519_ref10_fe_isnegative($x) | 0;
$3 = $2 << 7;
$4 = ($s + 31) | 0;
$5 = HEAP8[$4 >> 0] | 0;
$6 = $5 & 255;
$7 = $6 ^ $3;
$8 = $7 & 255;
HEAP8[$4 >> 0] = $8;
STACKTOP = sp;
return;
}
function _crypto_sign_ed25519_ref10_ge_precomp_0($h) {
$h = $h | 0;
var $0 = 0,
$1 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
_crypto_sign_ed25519_ref10_fe_1($h);
$0 = ($h + 40) | 0;
_crypto_sign_ed25519_ref10_fe_1($0);
$1 = ($h + 80) | 0;
_crypto_sign_ed25519_ref10_fe_0($1);
STACKTOP = sp;
return;
}
function _crypto_sign_ed25519_ref10_ge_scalarmult_base($h, $a) {
$h = $h | 0;
$a = $a | 0;
var $0 = 0,
$1 = 0,
$10 = 0,
$11 = 0,
$12 = 0,
$13 = 0,
$14 = 0,
$15 = 0,
$16 = 0,
$17 = 0,
$18 = 0,
$19 = 0,
$2 = 0,
$20 = 0,
$21 = 0,
$22 = 0,
$23 = 0,
$24 = 0,
$25 = 0,
$26 = 0;
var $27 = 0,
$28 = 0,
$29 = 0,
$3 = 0,
$30 = 0,
$31 = 0,
$32 = 0,
$33 = 0,
$34 = 0,
$35 = 0,
$4 = 0,
$5 = 0,
$6 = 0,
$7 = 0,
$8 = 0,
$9 = 0,
$carry$04 = 0,
$e = 0,
$exitcond = 0,
$exitcond7 = 0;
var $i$06 = 0,
$i$15 = 0,
$i$23 = 0,
$i$32 = 0,
$r = 0,
$s = 0,
$sext = 0,
$sext1 = 0,
$t = 0,
label = 0,
sp = 0;
sp = STACKTOP;
STACKTOP = (STACKTOP + 464) | 0;
$e = (sp + 400) | 0;
$r = (sp + 240) | 0;
$s = (sp + 120) | 0;
$t = sp;
$i$06 = 0;
while (1) {
$0 = ($a + $i$06) | 0;
$1 = HEAP8[$0 >> 0] | 0;
$2 = $1 & 255;
$3 = $2 & 15;
$4 = $3 & 255;
$5 = $i$06 << 1;
$6 = ($e + $5) | 0;
HEAP8[$6 >> 0] = $4;
$7 = HEAP8[$0 >> 0] | 0;
$8 = ($7 & 255) >>> 4;
$9 = $5 | 1;
$10 = ($e + $9) | 0;
HEAP8[$10 >> 0] = $8;
$11 = ($i$06 + 1) | 0;
$exitcond7 = ($11 | 0) == 32;
if ($exitcond7) {
$carry$04 = 0;
$i$15 = 0;
break;
} else {
$i$06 = $11;
}
}
while (1) {
$12 = ($e + $i$15) | 0;
$13 = HEAP8[$12 >> 0] | 0;
$14 = $13 & 255;
$15 = ($14 + $carry$04) | 0;
$sext = $15 << 24;
$sext1 = ($sext + 134217728) | 0;
$16 = $sext1 >> 28;
$17 = $16 << 4;
$18 = ($15 - $17) | 0;
$19 = $18 & 255;
HEAP8[$12 >> 0] = $19;
$20 = ($i$15 + 1) | 0;
$exitcond = ($20 | 0) == 63;
if ($exitcond) {
break;
} else {
$carry$04 = $16;
$i$15 = $20;
}
}
$21 = ($e + 63) | 0;
$22 = HEAP8[$21 >> 0] | 0;
$23 = $22 & 255;
$24 = ($23 + $16) | 0;
$25 = $24 & 255;
HEAP8[$21 >> 0] = $25;
_crypto_sign_ed25519_ref10_ge_p3_0($h);
$i$23 = 1;
while (1) {
$26 = (($i$23 | 0) / 2) & -1;
$27 = ($e + $i$23) | 0;
$28 = HEAP8[$27 >> 0] | 0;
_select($t, $26, $28);
_crypto_sign_ed25519_ref10_ge_madd($r, $h, $t);
_crypto_sign_ed25519_ref10_ge_p1p1_to_p3($h, $r);
$29 = ($i$23 + 2) | 0;
$30 = ($29 | 0) < 64;
if ($30) {
$i$23 = $29;
} else {
break;
}
}
_crypto_sign_ed25519_ref10_ge_p3_dbl($r, $h);
_crypto_sign_ed25519_ref10_ge_p1p1_to_p2($s, $r);
_crypto_sign_ed25519_ref10_ge_p2_dbl($r, $s);
_crypto_sign_ed25519_ref10_ge_p1p1_to_p2($s, $r);
_crypto_sign_ed25519_ref10_ge_p2_dbl($r, $s);
_crypto_sign_ed25519_ref10_ge_p1p1_to_p2($s, $r);
_crypto_sign_ed25519_ref10_ge_p2_dbl($r, $s);
_crypto_sign_ed25519_ref10_ge_p1p1_to_p3($h, $r);
$i$32 = 0;
while (1) {
$31 = (($i$32 | 0) / 2) & -1;
$32 = ($e + $i$32) | 0;
$33 = HEAP8[$32 >> 0] | 0;
_select($t, $31, $33);
_crypto_sign_ed25519_ref10_ge_madd($r, $h, $t);
_crypto_sign_ed25519_ref10_ge_p1p1_to_p3($h, $r);
$34 = ($i$32 + 2) | 0;
$35 = ($34 | 0) < 64;
if ($35) {
$i$32 = $34;
} else {
break;
}
}
STACKTOP = sp;
return;
}
function _select($t, $pos, $b) {
$t = $t | 0;
$pos = $pos | 0;
$b = $b | 0;
var $0 = 0,
$1 = 0,
$10 = 0,
$11 = 0,
$12 = 0,
$13 = 0,
$14 = 0,
$15 = 0,
$16 = 0,
$17 = 0,
$18 = 0,
$19 = 0,
$2 = 0,
$20 = 0,
$21 = 0,
$22 = 0,
$23 = 0,
$24 = 0,
$25 = 0,
$26 = 0;
var $27 = 0,
$3 = 0,
$4 = 0,
$5 = 0,
$6 = 0,
$7 = 0,
$8 = 0,
$9 = 0,
$minust = 0,
label = 0,
sp = 0;
sp = STACKTOP;
STACKTOP = (STACKTOP + 128) | 0;
$minust = sp;
$0 = _negative($b) | 0;
$1 = ($b << 24) >> 24;
$2 = $0 & 255;
$3 = (0 - $2) | 0;
$4 = $1 & $3;
$5 = $4 << 1;
$6 = ($1 - $5) | 0;
$7 = $6 & 255;
_crypto_sign_ed25519_ref10_ge_precomp_0($t);
$8 = (1120 + (($pos * 960) | 0)) | 0;
$9 = _equal($7, 1) | 0;
_cmov($t, $8, $9);
$10 = (((1120 + (($pos * 960) | 0)) | 0) + 120) | 0;
$11 = _equal($7, 2) | 0;
_cmov($t, $10, $11);
$12 = (((1120 + (($pos * 960) | 0)) | 0) + 240) | 0;
$13 = _equal($7, 3) | 0;
_cmov($t, $12, $13);
$14 = (((1120 + (($pos * 960) | 0)) | 0) + 360) | 0;
$15 = _equal($7, 4) | 0;
_cmov($t, $14, $15);
$16 = (((1120 + (($pos * 960) | 0)) | 0) + 480) | 0;
$17 = _equal($7, 5) | 0;
_cmov($t, $16, $17);
$18 = (((1120 + (($pos * 960) | 0)) | 0) + 600) | 0;
$19 = _equal($7, 6) | 0;
_cmov($t, $18, $19);
$20 = (((1120 + (($pos * 960) | 0)) | 0) + 720) | 0;
$21 = _equal($7, 7) | 0;
_cmov($t, $20, $21);
$22 = (((1120 + (($pos * 960) | 0)) | 0) + 840) | 0;
$23 = _equal($7, 8) | 0;
_cmov($t, $22, $23);
$24 = ($t + 40) | 0;
_crypto_sign_ed25519_ref10_fe_copy($minust, $24);
$25 = ($minust + 40) | 0;
_crypto_sign_ed25519_ref10_fe_copy($25, $t);
$26 = ($minust + 80) | 0;
$27 = ($t + 80) | 0;
_crypto_sign_ed25519_ref10_fe_neg($26, $27);
_cmov($t, $minust, $0);
STACKTOP = sp;
return;
}
function _negative($b) {
$b = $b | 0;
var $0 = 0,
$1 = 0,
$2 = 0,
$3 = 0,
$4 = 0,
$5 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = ($b << 24) >> 24;
$1 = ($0 | 0) < 0;
$2 = ($1 << 31) >> 31;
$3 = _bitshift64Lshr($0 | 0, $2 | 0, 63) | 0;
$4 = tempRet0;
$5 = $3 & 255;
STACKTOP = sp;
return $5 | 0;
}
function _equal($b, $c) {
$b = $b | 0;
$c = $c | 0;
var $0 = 0,
$1 = 0,
$2 = 0,
$3 = 0,
$4 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = $c ^ $b;
$1 = $0 & 255;
$2 = ($1 + -1) | 0;
$3 = $2 >>> 31;
$4 = $3 & 255;
STACKTOP = sp;
return $4 | 0;
}
function _cmov($t, $u, $b) {
$t = $t | 0;
$u = $u | 0;
$b = $b | 0;
var $0 = 0,
$1 = 0,
$2 = 0,
$3 = 0,
$4 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = $b & 255;
_crypto_sign_ed25519_ref10_fe_cmov($t, $u, $0);
$1 = ($t + 40) | 0;
$2 = ($u + 40) | 0;
_crypto_sign_ed25519_ref10_fe_cmov($1, $2, $0);
$3 = ($t + 80) | 0;
$4 = ($u + 80) | 0;
_crypto_sign_ed25519_ref10_fe_cmov($3, $4, $0);
STACKTOP = sp;
return;
}
function _crypto_sign_ed25519_ref10_ge_sub($r, $p, $q) {
$r = $r | 0;
$p = $p | 0;
$q = $q | 0;
var $0 = 0,
$1 = 0,
$2 = 0,
$3 = 0,
$4 = 0,
$5 = 0,
$6 = 0,
$7 = 0,
$8 = 0,
$t0 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
STACKTOP = (STACKTOP + 48) | 0;
$t0 = sp;
$0 = ($p + 40) | 0;
_crypto_sign_ed25519_ref10_fe_add($r, $0, $p);
$1 = ($r + 40) | 0;
_crypto_sign_ed25519_ref10_fe_sub($1, $0, $p);
$2 = ($r + 80) | 0;
$3 = ($q + 40) | 0;
_crypto_sign_ed25519_ref10_fe_mul($2, $r, $3);
_crypto_sign_ed25519_ref10_fe_mul($1, $1, $q);
$4 = ($r + 120) | 0;
$5 = ($q + 120) | 0;
$6 = ($p + 120) | 0;
_crypto_sign_ed25519_ref10_fe_mul($4, $5, $6);
$7 = ($p + 80) | 0;
$8 = ($q + 80) | 0;
_crypto_sign_ed25519_ref10_fe_mul($r, $7, $8);
_crypto_sign_ed25519_ref10_fe_add($t0, $r, $r);
_crypto_sign_ed25519_ref10_fe_sub($r, $2, $1);
_crypto_sign_ed25519_ref10_fe_add($1, $2, $1);
_crypto_sign_ed25519_ref10_fe_sub($2, $t0, $4);
_crypto_sign_ed25519_ref10_fe_add($4, $t0, $4);
STACKTOP = sp;
return;
}
function _crypto_sign_ed25519_ref10_ge_tobytes($s, $h) {
$s = $s | 0;
$h = $h | 0;
var $0 = 0,
$1 = 0,
$2 = 0,
$3 = 0,
$4 = 0,
$5 = 0,
$6 = 0,
$7 = 0,
$8 = 0,
$recip = 0,
$x = 0,
$y = 0,
label = 0,
sp = 0;
sp = STACKTOP;
STACKTOP = (STACKTOP + 128) | 0;
$recip = (sp + 80) | 0;
$x = (sp + 40) | 0;
$y = sp;
$0 = ($h + 80) | 0;
_crypto_sign_ed25519_ref10_fe_invert($recip, $0);
_crypto_sign_ed25519_ref10_fe_mul($x, $h, $recip);
$1 = ($h + 40) | 0;
_crypto_sign_ed25519_ref10_fe_mul($y, $1, $recip);
_crypto_sign_ed25519_ref10_fe_tobytes($s, $y);
$2 = _crypto_sign_ed25519_ref10_fe_isnegative($x) | 0;
$3 = $2 << 7;
$4 = ($s + 31) | 0;
$5 = HEAP8[$4 >> 0] | 0;
$6 = $5 & 255;
$7 = $6 ^ $3;
$8 = $7 & 255;
HEAP8[$4 >> 0] = $8;
STACKTOP = sp;
return;
}
function _crypto_sign_edwards25519sha512batch_ref10_open(
$m,
$mlen,
$sm,
$0,
$1,
$pk
) {
$m = $m | 0;
$mlen = $mlen | 0;
$sm = $sm | 0;
$0 = $0 | 0;
$1 = $1 | 0;
$pk = $pk | 0;
var $$0 = 0,
$$sum = 0,
$10 = 0,
$11 = 0,
$12 = 0,
$13 = 0,
$14 = 0,
$15 = 0,
$16 = 0,
$17 = 0,
$18 = 0,
$19 = 0,
$2 = 0,
$20 = 0,
$21 = 0,
$22 = 0,
$23 = 0,
$24 = 0,
$25 = 0,
$26 = 0;
var $27 = 0,
$3 = 0,
$4 = 0,
$5 = 0,
$6 = 0,
$7 = 0,
$8 = 0,
$9 = 0,
$A = 0,
$R = 0,
$h = 0,
$pkcopy1 = 0,
$rcheck = 0,
$rcopy = 0,
$scopy = 0,
dest = 0,
label = 0,
sp = 0,
src = 0,
stop = 0;
sp = STACKTOP;
STACKTOP = (STACKTOP + 480) | 0;
$pkcopy1 = (sp + 440) | 0;
$rcopy = (sp + 408) | 0;
$scopy = (sp + 376) | 0;
$h = (sp + 312) | 0;
$rcheck = (sp + 280) | 0;
$A = (sp + 120) | 0;
$R = sp;
$2 = $1 >>> 0 < 0;
$3 = $0 >>> 0 < 64;
$4 = ($1 | 0) == 0;
$5 = $4 & $3;
$6 = $2 | $5;
if (!$6) {
$7 = ($sm + 63) | 0;
$8 = HEAP8[$7 >> 0] | 0;
$9 = ($8 & 255) > 31;
if (!$9) {
$10 =
_crypto_sign_ed25519_ref10_ge_frombytes_negate_vartime($A, $pk) | 0;
$11 = ($10 | 0) == 0;
if ($11) {
dest = ($pkcopy1 + 0) | 0;
src = ($pk + 0) | 0;
stop = (dest + 32) | 0;
do {
HEAP8[dest >> 0] = HEAP8[src >> 0] | 0;
dest = (dest + 1) | 0;
src = (src + 1) | 0;
} while ((dest | 0) < (stop | 0));
dest = ($rcopy + 0) | 0;
src = ($sm + 0) | 0;
stop = (dest + 32) | 0;
do {
HEAP8[dest >> 0] = HEAP8[src >> 0] | 0;
dest = (dest + 1) | 0;
src = (src + 1) | 0;
} while ((dest | 0) < (stop | 0));
$12 = ($sm + 32) | 0;
dest = ($scopy + 0) | 0;
src = ($12 + 0) | 0;
stop = (dest + 32) | 0;
do {
HEAP8[dest >> 0] = HEAP8[src >> 0] | 0;
dest = (dest + 1) | 0;
src = (src + 1) | 0;
} while ((dest | 0) < (stop | 0));
_memmove($m | 0, $sm | 0, $0 | 0) | 0;
$13 = ($m + 32) | 0;
dest = ($13 + 0) | 0;
src = ($pkcopy1 + 0) | 0;
stop = (dest + 32) | 0;
do {
HEAP8[dest >> 0] = HEAP8[src >> 0] | 0;
dest = (dest + 1) | 0;
src = (src + 1) | 0;
} while ((dest | 0) < (stop | 0));
_crypto_hash_sha512_ref($h, $m, $0, $1) | 0;
_crypto_sign_ed25519_ref10_sc_reduce($h);
_crypto_sign_ed25519_ref10_ge_double_scalarmult_vartime(
$R,
$h,
$A,
$scopy
);
_crypto_sign_ed25519_ref10_ge_tobytes($rcheck, $R);
$14 = _crypto_verify_32_ref($rcheck, $rcopy) | 0;
$15 = ($14 | 0) == 0;
if ($15) {
$16 = ($m + 64) | 0;
$17 = _i64Add($0 | 0, $1 | 0, -64, -1) | 0;
$18 = tempRet0;
_memmove($m | 0, $16 | 0, $17 | 0) | 0;
$$sum = ($0 + -64) | 0;
$19 = ($m + $$sum) | 0;
dest = ($19 + 0) | 0;
stop = (dest + 64) | 0;
do {
HEAP8[dest >> 0] = 0 | 0;
dest = (dest + 1) | 0;
} while ((dest | 0) < (stop | 0));
$20 = $mlen;
$21 = $20;
HEAP32[$21 >> 2] = $17;
$22 = ($20 + 4) | 0;
$23 = $22;
HEAP32[$23 >> 2] = $18;
$$0 = 0;
STACKTOP = sp;
return $$0 | 0;
}
}
}
}
$24 = $mlen;
$25 = $24;
HEAP32[$25 >> 2] = -1;
$26 = ($24 + 4) | 0;
$27 = $26;
HEAP32[$27 >> 2] = -1;
_memset($m | 0, 0, $0 | 0) | 0;
$$0 = -1;
STACKTOP = sp;
return $$0 | 0;
}
function _crypto_sign_ed25519_ref10_sc_muladd($s, $a, $b, $c) {
$s = $s | 0;
$a = $a | 0;
$b = $b | 0;
$c = $c | 0;
var $0 = 0,
$1 = 0,
$10 = 0,
$100 = 0,
$1000 = 0,
$1001 = 0,
$1002 = 0,
$1003 = 0,
$1004 = 0,
$1005 = 0,
$1006 = 0,
$1007 = 0,
$1008 = 0,
$1009 = 0,
$101 = 0,
$1010 = 0,
$1011 = 0,
$1012 = 0,
$1013 = 0,
$1014 = 0;
var $1015 = 0,
$1016 = 0,
$1017 = 0,
$1018 = 0,
$1019 = 0,
$102 = 0,
$1020 = 0,
$1021 = 0,
$1022 = 0,
$1023 = 0,
$1024 = 0,
$1025 = 0,
$1026 = 0,
$1027 = 0,
$1028 = 0,
$1029 = 0,
$103 = 0,
$1030 = 0,
$1031 = 0,
$1032 = 0;
var $1033 = 0,
$1034 = 0,
$1035 = 0,
$1036 = 0,
$1037 = 0,
$1038 = 0,
$1039 = 0,
$104 = 0,
$1040 = 0,
$1041 = 0,
$1042 = 0,
$1043 = 0,
$1044 = 0,
$1045 = 0,
$1046 = 0,
$1047 = 0,
$1048 = 0,
$1049 = 0,
$105 = 0,
$1050 = 0;
var $1051 = 0,
$1052 = 0,
$1053 = 0,
$1054 = 0,
$1055 = 0,
$1056 = 0,
$1057 = 0,
$1058 = 0,
$1059 = 0,
$106 = 0,
$1060 = 0,
$1061 = 0,
$1062 = 0,
$1063 = 0,
$1064 = 0,
$1065 = 0,
$1066 = 0,
$1067 = 0,
$1068 = 0,
$1069 = 0;
var $107 = 0,
$1070 = 0,
$1071 = 0,
$1072 = 0,
$1073 = 0,
$1074 = 0,
$1075 = 0,
$1076 = 0,
$1077 = 0,
$1078 = 0,
$1079 = 0,
$108 = 0,
$1080 = 0,
$1081 = 0,
$1082 = 0,
$1083 = 0,
$1084 = 0,
$1085 = 0,
$1086 = 0,
$1087 = 0;
var $1088 = 0,
$1089 = 0,
$109 = 0,
$1090 = 0,
$1091 = 0,
$1092 = 0,
$1093 = 0,
$1094 = 0,
$1095 = 0,
$1096 = 0,
$1097 = 0,
$1098 = 0,
$1099 = 0,
$11 = 0,
$110 = 0,
$1100 = 0,
$1101 = 0,
$1102 = 0,
$1103 = 0,
$1104 = 0;
var $1105 = 0,
$1106 = 0,
$1107 = 0,
$1108 = 0,
$1109 = 0,
$111 = 0,
$1110 = 0,
$1111 = 0,
$1112 = 0,
$1113 = 0,
$1114 = 0,
$1115 = 0,
$1116 = 0,
$1117 = 0,
$1118 = 0,
$1119 = 0,
$112 = 0,
$1120 = 0,
$1121 = 0,
$1122 = 0;
var $1123 = 0,
$1124 = 0,
$1125 = 0,
$1126 = 0,
$1127 = 0,
$1128 = 0,
$1129 = 0,
$113 = 0,
$1130 = 0,
$1131 = 0,
$1132 = 0,
$1133 = 0,
$1134 = 0,
$1135 = 0,
$1136 = 0,
$1137 = 0,
$1138 = 0,
$1139 = 0,
$114 = 0,
$1140 = 0;
var $1141 = 0,
$1142 = 0,
$1143 = 0,
$1144 = 0,
$1145 = 0,
$1146 = 0,
$1147 = 0,
$1148 = 0,
$1149 = 0,
$115 = 0,
$1150 = 0,
$1151 = 0,
$1152 = 0,
$1153 = 0,
$1154 = 0,
$1155 = 0,
$1156 = 0,
$1157 = 0,
$1158 = 0,
$1159 = 0;
var $116 = 0,
$1160 = 0,
$1161 = 0,
$1162 = 0,
$1163 = 0,
$1164 = 0,
$1165 = 0,
$1166 = 0,
$1167 = 0,
$1168 = 0,
$1169 = 0,
$117 = 0,
$1170 = 0,
$1171 = 0,
$1172 = 0,
$1173 = 0,
$1174 = 0,
$1175 = 0,
$1176 = 0,
$1177 = 0;
var $1178 = 0,
$1179 = 0,
$118 = 0,
$1180 = 0,
$1181 = 0,
$1182 = 0,
$1183 = 0,
$1184 = 0,
$1185 = 0,
$1186 = 0,
$1187 = 0,
$1188 = 0,
$1189 = 0,
$119 = 0,
$1190 = 0,
$1191 = 0,
$1192 = 0,
$1193 = 0,
$1194 = 0,
$1195 = 0;
var $1196 = 0,
$1197 = 0,
$1198 = 0,
$1199 = 0,
$12 = 0,
$120 = 0,
$1200 = 0,
$1201 = 0,
$1202 = 0,
$1203 = 0,
$1204 = 0,
$1205 = 0,
$1206 = 0,
$1207 = 0,
$1208 = 0,
$1209 = 0,
$121 = 0,
$1210 = 0,
$1211 = 0,
$1212 = 0;
var $1213 = 0,
$1214 = 0,
$1215 = 0,
$1216 = 0,
$1217 = 0,
$1218 = 0,
$1219 = 0,
$122 = 0,
$1220 = 0,
$1221 = 0,
$1222 = 0,
$1223 = 0,
$1224 = 0,
$1225 = 0,
$1226 = 0,
$1227 = 0,
$1228 = 0,
$1229 = 0,
$123 = 0,
$1230 = 0;
var $1231 = 0,
$1232 = 0,
$1233 = 0,
$1234 = 0,
$1235 = 0,
$1236 = 0,
$1237 = 0,
$1238 = 0,
$1239 = 0,
$124 = 0,
$1240 = 0,
$1241 = 0,
$1242 = 0,
$1243 = 0,
$1244 = 0,
$1245 = 0,
$1246 = 0,
$1247 = 0,
$1248 = 0,
$1249 = 0;
var $125 = 0,
$1250 = 0,
$1251 = 0,
$1252 = 0,
$1253 = 0,
$1254 = 0,
$1255 = 0,
$1256 = 0,
$1257 = 0,
$1258 = 0,
$1259 = 0,
$126 = 0,
$1260 = 0,
$1261 = 0,
$1262 = 0,
$1263 = 0,
$1264 = 0,
$1265 = 0,
$1266 = 0,
$1267 = 0;
var $1268 = 0,
$1269 = 0,
$127 = 0,
$1270 = 0,
$1271 = 0,
$1272 = 0,
$1273 = 0,
$1274 = 0,
$1275 = 0,
$1276 = 0,
$1277 = 0,
$1278 = 0,
$1279 = 0,
$128 = 0,
$1280 = 0,
$1281 = 0,
$1282 = 0,
$1283 = 0,
$1284 = 0,
$1285 = 0;
var $1286 = 0,
$1287 = 0,
$1288 = 0,
$1289 = 0,
$129 = 0,
$1290 = 0,
$1291 = 0,
$1292 = 0,
$1293 = 0,
$1294 = 0,
$1295 = 0,
$1296 = 0,
$1297 = 0,
$1298 = 0,
$1299 = 0,
$13 = 0,
$130 = 0,
$1300 = 0,
$1301 = 0,
$1302 = 0;
var $1303 = 0,
$1304 = 0,
$1305 = 0,
$1306 = 0,
$1307 = 0,
$1308 = 0,
$1309 = 0,
$131 = 0,
$1310 = 0,
$1311 = 0,
$1312 = 0,
$1313 = 0,
$1314 = 0,
$1315 = 0,
$1316 = 0,
$1317 = 0,
$1318 = 0,
$1319 = 0,
$132 = 0,
$1320 = 0;
var $1321 = 0,
$1322 = 0,
$1323 = 0,
$1324 = 0,
$1325 = 0,
$1326 = 0,
$1327 = 0,
$1328 = 0,
$1329 = 0,
$133 = 0,
$1330 = 0,
$1331 = 0,
$1332 = 0,
$1333 = 0,
$1334 = 0,
$1335 = 0,
$1336 = 0,
$1337 = 0,
$1338 = 0,
$1339 = 0;
var $134 = 0,
$1340 = 0,
$1341 = 0,
$1342 = 0,
$1343 = 0,
$1344 = 0,
$1345 = 0,
$1346 = 0,
$1347 = 0,
$1348 = 0,
$1349 = 0,
$135 = 0,
$1350 = 0,
$1351 = 0,
$1352 = 0,
$1353 = 0,
$1354 = 0,
$1355 = 0,
$1356 = 0,
$1357 = 0;
var $1358 = 0,
$1359 = 0,
$136 = 0,
$1360 = 0,
$1361 = 0,
$1362 = 0,
$1363 = 0,
$1364 = 0,
$1365 = 0,
$1366 = 0,
$1367 = 0,
$1368 = 0,
$1369 = 0,
$137 = 0,
$1370 = 0,
$1371 = 0,
$1372 = 0,
$1373 = 0,
$1374 = 0,
$1375 = 0;
var $1376 = 0,
$1377 = 0,
$1378 = 0,
$1379 = 0,
$138 = 0,
$1380 = 0,
$1381 = 0,
$1382 = 0,
$1383 = 0,
$1384 = 0,
$1385 = 0,
$1386 = 0,
$1387 = 0,
$1388 = 0,
$1389 = 0,
$139 = 0,
$1390 = 0,
$1391 = 0,
$1392 = 0,
$1393 = 0;
var $1394 = 0,
$1395 = 0,
$1396 = 0,
$1397 = 0,
$1398 = 0,
$1399 = 0,
$14 = 0,
$140 = 0,
$1400 = 0,
$1401 = 0,
$1402 = 0,
$1403 = 0,
$1404 = 0,
$1405 = 0,
$1406 = 0,
$1407 = 0,
$1408 = 0,
$1409 = 0,
$141 = 0,
$1410 = 0;
var $1411 = 0,
$1412 = 0,
$1413 = 0,
$1414 = 0,
$1415 = 0,
$1416 = 0,
$1417 = 0,
$1418 = 0,
$1419 = 0,
$142 = 0,
$1420 = 0,
$1421 = 0,
$1422 = 0,
$1423 = 0,
$1424 = 0,
$1425 = 0,
$1426 = 0,
$1427 = 0,
$1428 = 0,
$1429 = 0;
var $143 = 0,
$1430 = 0,
$1431 = 0,
$1432 = 0,
$1433 = 0,
$1434 = 0,
$1435 = 0,
$1436 = 0,
$1437 = 0,
$1438 = 0,
$1439 = 0,
$144 = 0,
$1440 = 0,
$1441 = 0,
$1442 = 0,
$1443 = 0,
$1444 = 0,
$1445 = 0,
$1446 = 0,
$1447 = 0;
var $1448 = 0,
$1449 = 0,
$145 = 0,
$1450 = 0,
$1451 = 0,
$1452 = 0,
$1453 = 0,
$1454 = 0,
$1455 = 0,
$1456 = 0,
$1457 = 0,
$1458 = 0,
$1459 = 0,
$146 = 0,
$1460 = 0,
$1461 = 0,
$1462 = 0,
$1463 = 0,
$1464 = 0,
$1465 = 0;
var $1466 = 0,
$1467 = 0,
$1468 = 0,
$1469 = 0,
$147 = 0,
$1470 = 0,
$1471 = 0,
$1472 = 0,
$1473 = 0,
$1474 = 0,
$1475 = 0,
$1476 = 0,
$1477 = 0,
$1478 = 0,
$1479 = 0,
$148 = 0,
$1480 = 0,
$1481 = 0,
$1482 = 0,
$1483 = 0;
var $1484 = 0,
$1485 = 0,
$1486 = 0,
$1487 = 0,
$1488 = 0,
$1489 = 0,
$149 = 0,
$1490 = 0,
$1491 = 0,
$1492 = 0,
$1493 = 0,
$1494 = 0,
$1495 = 0,
$1496 = 0,
$1497 = 0,
$1498 = 0,
$1499 = 0,
$15 = 0,
$150 = 0,
$1500 = 0;
var $1501 = 0,
$1502 = 0,
$1503 = 0,
$1504 = 0,
$1505 = 0,
$1506 = 0,
$1507 = 0,
$1508 = 0,
$1509 = 0,
$151 = 0,
$1510 = 0,
$1511 = 0,
$1512 = 0,
$1513 = 0,
$1514 = 0,
$1515 = 0,
$1516 = 0,
$1517 = 0,
$1518 = 0,
$1519 = 0;
var $152 = 0,
$1520 = 0,
$1521 = 0,
$1522 = 0,
$1523 = 0,
$1524 = 0,
$1525 = 0,
$1526 = 0,
$1527 = 0,
$1528 = 0,
$1529 = 0,
$153 = 0,
$1530 = 0,
$1531 = 0,
$1532 = 0,
$1533 = 0,
$1534 = 0,
$1535 = 0,
$1536 = 0,
$1537 = 0;
var $1538 = 0,
$1539 = 0,
$154 = 0,
$1540 = 0,
$1541 = 0,
$1542 = 0,
$1543 = 0,
$1544 = 0,
$1545 = 0,
$1546 = 0,
$1547 = 0,
$1548 = 0,
$1549 = 0,
$155 = 0,
$1550 = 0,
$1551 = 0,
$1552 = 0,
$1553 = 0,
$1554 = 0,
$1555 = 0;
var $1556 = 0,
$1557 = 0,
$1558 = 0,
$1559 = 0,
$156 = 0,
$1560 = 0,
$1561 = 0,
$1562 = 0,
$1563 = 0,
$1564 = 0,
$1565 = 0,
$1566 = 0,
$1567 = 0,
$1568 = 0,
$1569 = 0,
$157 = 0,
$1570 = 0,
$1571 = 0,
$1572 = 0,
$1573 = 0;
var $1574 = 0,
$1575 = 0,
$1576 = 0,
$1577 = 0,
$1578 = 0,
$1579 = 0,
$158 = 0,
$1580 = 0,
$1581 = 0,
$1582 = 0,
$1583 = 0,
$1584 = 0,
$1585 = 0,
$1586 = 0,
$1587 = 0,
$1588 = 0,
$1589 = 0,
$159 = 0,
$1590 = 0,
$1591 = 0;
var $1592 = 0,
$1593 = 0,
$1594 = 0,
$1595 = 0,
$1596 = 0,
$1597 = 0,
$1598 = 0,
$1599 = 0,
$16 = 0,
$160 = 0,
$1600 = 0,
$1601 = 0,
$1602 = 0,
$1603 = 0,
$1604 = 0,
$1605 = 0,
$1606 = 0,
$1607 = 0,
$1608 = 0,
$1609 = 0;
var $161 = 0,
$1610 = 0,
$1611 = 0,
$1612 = 0,
$1613 = 0,
$1614 = 0,
$1615 = 0,
$1616 = 0,
$1617 = 0,
$1618 = 0,
$1619 = 0,
$162 = 0,
$1620 = 0,
$1621 = 0,
$1622 = 0,
$1623 = 0,
$1624 = 0,
$1625 = 0,
$1626 = 0,
$1627 = 0;
var $1628 = 0,
$1629 = 0,
$163 = 0,
$1630 = 0,
$1631 = 0,
$1632 = 0,
$1633 = 0,
$1634 = 0,
$1635 = 0,
$1636 = 0,
$1637 = 0,
$1638 = 0,
$1639 = 0,
$164 = 0,
$1640 = 0,
$1641 = 0,
$1642 = 0,
$1643 = 0,
$1644 = 0,
$1645 = 0;
var $1646 = 0,
$1647 = 0,
$1648 = 0,
$1649 = 0,
$165 = 0,
$1650 = 0,
$1651 = 0,
$1652 = 0,
$1653 = 0,
$1654 = 0,
$1655 = 0,
$1656 = 0,
$1657 = 0,
$1658 = 0,
$1659 = 0,
$166 = 0,
$1660 = 0,
$1661 = 0,
$1662 = 0,
$1663 = 0;
var $1664 = 0,
$1665 = 0,
$1666 = 0,
$1667 = 0,
$1668 = 0,
$1669 = 0,
$167 = 0,
$1670 = 0,
$1671 = 0,
$1672 = 0,
$1673 = 0,
$1674 = 0,
$1675 = 0,
$1676 = 0,
$1677 = 0,
$1678 = 0,
$1679 = 0,
$168 = 0,
$1680 = 0,
$1681 = 0;
var $1682 = 0,
$1683 = 0,
$1684 = 0,
$1685 = 0,
$1686 = 0,
$1687 = 0,
$1688 = 0,
$1689 = 0,
$169 = 0,
$1690 = 0,
$1691 = 0,
$1692 = 0,
$1693 = 0,
$1694 = 0,
$1695 = 0,
$1696 = 0,
$1697 = 0,
$1698 = 0,
$1699 = 0,
$17 = 0;
var $170 = 0,
$1700 = 0,
$1701 = 0,
$1702 = 0,
$1703 = 0,
$1704 = 0,
$1705 = 0,
$1706 = 0,
$1707 = 0,
$1708 = 0,
$1709 = 0,
$171 = 0,
$1710 = 0,
$1711 = 0,
$1712 = 0,
$1713 = 0,
$1714 = 0,
$1715 = 0,
$1716 = 0,
$1717 = 0;
var $1718 = 0,
$1719 = 0,
$172 = 0,
$1720 = 0,
$1721 = 0,
$1722 = 0,
$1723 = 0,
$1724 = 0,
$1725 = 0,
$1726 = 0,
$1727 = 0,
$1728 = 0,
$1729 = 0,
$173 = 0,
$1730 = 0,
$1731 = 0,
$1732 = 0,
$1733 = 0,
$1734 = 0,
$1735 = 0;
var $1736 = 0,
$1737 = 0,
$1738 = 0,
$1739 = 0,
$174 = 0,
$1740 = 0,
$1741 = 0,
$1742 = 0,
$1743 = 0,
$1744 = 0,
$1745 = 0,
$1746 = 0,
$1747 = 0,
$1748 = 0,
$1749 = 0,
$175 = 0,
$1750 = 0,
$1751 = 0,
$1752 = 0,
$1753 = 0;
var $1754 = 0,
$1755 = 0,
$1756 = 0,
$1757 = 0,
$1758 = 0,
$1759 = 0,
$176 = 0,
$1760 = 0,
$1761 = 0,
$1762 = 0,
$1763 = 0,
$1764 = 0,
$1765 = 0,
$1766 = 0,
$1767 = 0,
$1768 = 0,
$1769 = 0,
$177 = 0,
$1770 = 0,
$1771 = 0;
var $1772 = 0,
$1773 = 0,
$1774 = 0,
$1775 = 0,
$1776 = 0,
$1777 = 0,
$1778 = 0,
$1779 = 0,
$178 = 0,
$1780 = 0,
$1781 = 0,
$1782 = 0,
$1783 = 0,
$1784 = 0,
$1785 = 0,
$1786 = 0,
$1787 = 0,
$1788 = 0,
$1789 = 0,
$179 = 0;
var $1790 = 0,
$1791 = 0,
$1792 = 0,
$1793 = 0,
$1794 = 0,
$1795 = 0,
$1796 = 0,
$1797 = 0,
$1798 = 0,
$1799 = 0,
$18 = 0,
$180 = 0,
$1800 = 0,
$1801 = 0,
$1802 = 0,
$1803 = 0,
$1804 = 0,
$1805 = 0,
$1806 = 0,
$1807 = 0;
var $1808 = 0,
$1809 = 0,
$181 = 0,
$1810 = 0,
$1811 = 0,
$1812 = 0,
$1813 = 0,
$1814 = 0,
$1815 = 0,
$1816 = 0,
$1817 = 0,
$1818 = 0,
$1819 = 0,
$182 = 0,
$1820 = 0,
$1821 = 0,
$1822 = 0,
$1823 = 0,
$1824 = 0,
$1825 = 0;
var $1826 = 0,
$1827 = 0,
$1828 = 0,
$1829 = 0,
$183 = 0,
$1830 = 0,
$1831 = 0,
$1832 = 0,
$1833 = 0,
$1834 = 0,
$1835 = 0,
$1836 = 0,
$1837 = 0,
$1838 = 0,
$1839 = 0,
$184 = 0,
$1840 = 0,
$1841 = 0,
$1842 = 0,
$1843 = 0;
var $1844 = 0,
$1845 = 0,
$1846 = 0,
$1847 = 0,
$1848 = 0,
$1849 = 0,
$185 = 0,
$1850 = 0,
$1851 = 0,
$1852 = 0,
$1853 = 0,
$1854 = 0,
$1855 = 0,
$1856 = 0,
$1857 = 0,
$1858 = 0,
$1859 = 0,
$186 = 0,
$1860 = 0,
$1861 = 0;
var $1862 = 0,
$1863 = 0,
$1864 = 0,
$1865 = 0,
$1866 = 0,
$1867 = 0,
$1868 = 0,
$1869 = 0,
$187 = 0,
$1870 = 0,
$1871 = 0,
$1872 = 0,
$1873 = 0,
$1874 = 0,
$1875 = 0,
$1876 = 0,
$1877 = 0,
$1878 = 0,
$188 = 0,
$189 = 0;
var $19 = 0,
$190 = 0,
$191 = 0,
$192 = 0,
$193 = 0,
$194 = 0,
$195 = 0,
$196 = 0,
$197 = 0,
$198 = 0,
$199 = 0,
$2 = 0,
$20 = 0,
$200 = 0,
$201 = 0,
$202 = 0,
$203 = 0,
$204 = 0,
$205 = 0,
$206 = 0;
var $207 = 0,
$208 = 0,
$209 = 0,
$21 = 0,
$210 = 0,
$211 = 0,
$212 = 0,
$213 = 0,
$214 = 0,
$215 = 0,
$216 = 0,
$217 = 0,
$218 = 0,
$219 = 0,
$22 = 0,
$220 = 0,
$221 = 0,
$222 = 0,
$223 = 0,
$224 = 0;
var $225 = 0,
$226 = 0,
$227 = 0,
$228 = 0,
$229 = 0,
$23 = 0,
$230 = 0,
$231 = 0,
$232 = 0,
$233 = 0,
$234 = 0,
$235 = 0,
$236 = 0,
$237 = 0,
$238 = 0,
$239 = 0,
$24 = 0,
$240 = 0,
$241 = 0,
$242 = 0;
var $243 = 0,
$244 = 0,
$245 = 0,
$246 = 0,
$247 = 0,
$248 = 0,
$249 = 0,
$25 = 0,
$250 = 0,
$251 = 0,
$252 = 0,
$253 = 0,
$254 = 0,
$255 = 0,
$256 = 0,
$257 = 0,
$258 = 0,
$259 = 0,
$26 = 0,
$260 = 0;
var $261 = 0,
$262 = 0,
$263 = 0,
$264 = 0,
$265 = 0,
$266 = 0,
$267 = 0,
$268 = 0,
$269 = 0,
$27 = 0,
$270 = 0,
$271 = 0,
$272 = 0,
$273 = 0,
$274 = 0,
$275 = 0,
$276 = 0,
$277 = 0,
$278 = 0,
$279 = 0;
var $28 = 0,
$280 = 0,
$281 = 0,
$282 = 0,
$283 = 0,
$284 = 0,
$285 = 0,
$286 = 0,
$287 = 0,
$288 = 0,
$289 = 0,
$29 = 0,
$290 = 0,
$291 = 0,
$292 = 0,
$293 = 0,
$294 = 0,
$295 = 0,
$296 = 0,
$297 = 0;
var $298 = 0,
$299 = 0,
$3 = 0,
$30 = 0,
$300 = 0,
$301 = 0,
$302 = 0,
$303 = 0,
$304 = 0,
$305 = 0,
$306 = 0,
$307 = 0,
$308 = 0,
$309 = 0,
$31 = 0,
$310 = 0,
$311 = 0,
$312 = 0,
$313 = 0,
$314 = 0;
var $315 = 0,
$316 = 0,
$317 = 0,
$318 = 0,
$319 = 0,
$32 = 0,
$320 = 0,
$321 = 0,
$322 = 0,
$323 = 0,
$324 = 0,
$325 = 0,
$326 = 0,
$327 = 0,
$328 = 0,
$329 = 0,
$33 = 0,
$330 = 0,
$331 = 0,
$332 = 0;
var $333 = 0,
$334 = 0,
$335 = 0,
$336 = 0,
$337 = 0,
$338 = 0,
$339 = 0,
$34 = 0,
$340 = 0,
$341 = 0,
$342 = 0,
$343 = 0,
$344 = 0,
$345 = 0,
$346 = 0,
$347 = 0,
$348 = 0,
$349 = 0,
$35 = 0,
$350 = 0;
var $351 = 0,
$352 = 0,
$353 = 0,
$354 = 0,
$355 = 0,
$356 = 0,
$357 = 0,
$358 = 0,
$359 = 0,
$36 = 0,
$360 = 0,
$361 = 0,
$362 = 0,
$363 = 0,
$364 = 0,
$365 = 0,
$366 = 0,
$367 = 0,
$368 = 0,
$369 = 0;
var $37 = 0,
$370 = 0,
$371 = 0,
$372 = 0,
$373 = 0,
$374 = 0,
$375 = 0,
$376 = 0,
$377 = 0,
$378 = 0,
$379 = 0,
$38 = 0,
$380 = 0,
$381 = 0,
$382 = 0,
$383 = 0,
$384 = 0,
$385 = 0,
$386 = 0,
$387 = 0;
var $388 = 0,
$389 = 0,
$39 = 0,
$390 = 0,
$391 = 0,
$392 = 0,
$393 = 0,
$394 = 0,
$395 = 0,
$396 = 0,
$397 = 0,
$398 = 0,
$399 = 0,
$4 = 0,
$40 = 0,
$400 = 0,
$401 = 0,
$402 = 0,
$403 = 0,
$404 = 0;
var $405 = 0,
$406 = 0,
$407 = 0,
$408 = 0,
$409 = 0,
$41 = 0,
$410 = 0,
$411 = 0,
$412 = 0,
$413 = 0,
$414 = 0,
$415 = 0,
$416 = 0,
$417 = 0,
$418 = 0,
$419 = 0,
$42 = 0,
$420 = 0,
$421 = 0,
$422 = 0;
var $423 = 0,
$424 = 0,
$425 = 0,
$426 = 0,
$427 = 0,
$428 = 0,
$429 = 0,
$43 = 0,
$430 = 0,
$431 = 0,
$432 = 0,
$433 = 0,
$434 = 0,
$435 = 0,
$436 = 0,
$437 = 0,
$438 = 0,
$439 = 0,
$44 = 0,
$440 = 0;
var $441 = 0,
$442 = 0,
$443 = 0,
$444 = 0,
$445 = 0,
$446 = 0,
$447 = 0,
$448 = 0,
$449 = 0,
$45 = 0,
$450 = 0,
$451 = 0,
$452 = 0,
$453 = 0,
$454 = 0,
$455 = 0,
$456 = 0,
$457 = 0,
$458 = 0,
$459 = 0;
var $46 = 0,
$460 = 0,
$461 = 0,
$462 = 0,
$463 = 0,
$464 = 0,
$465 = 0,
$466 = 0,
$467 = 0,
$468 = 0,
$469 = 0,
$47 = 0,
$470 = 0,
$471 = 0,
$472 = 0,
$473 = 0,
$474 = 0,
$475 = 0,
$476 = 0,
$477 = 0;
var $478 = 0,
$479 = 0,
$48 = 0,
$480 = 0,
$481 = 0,
$482 = 0,
$483 = 0,
$484 = 0,
$485 = 0,
$486 = 0,
$487 = 0,
$488 = 0,
$489 = 0,
$49 = 0,
$490 = 0,
$491 = 0,
$492 = 0,
$493 = 0,
$494 = 0,
$495 = 0;
var $496 = 0,
$497 = 0,
$498 = 0,
$499 = 0,
$5 = 0,
$50 = 0,
$500 = 0,
$501 = 0,
$502 = 0,
$503 = 0,
$504 = 0,
$505 = 0,
$506 = 0,
$507 = 0,
$508 = 0,
$509 = 0,
$51 = 0,
$510 = 0,
$511 = 0,
$512 = 0;
var $513 = 0,
$514 = 0,
$515 = 0,
$516 = 0,
$517 = 0,
$518 = 0,
$519 = 0,
$52 = 0,
$520 = 0,
$521 = 0,
$522 = 0,
$523 = 0,
$524 = 0,
$525 = 0,
$526 = 0,
$527 = 0,
$528 = 0,
$529 = 0,
$53 = 0,
$530 = 0;
var $531 = 0,
$532 = 0,
$533 = 0,
$534 = 0,
$535 = 0,
$536 = 0,
$537 = 0,
$538 = 0,
$539 = 0,
$54 = 0,
$540 = 0,
$541 = 0,
$542 = 0,
$543 = 0,
$544 = 0,
$545 = 0,
$546 = 0,
$547 = 0,
$548 = 0,
$549 = 0;
var $55 = 0,
$550 = 0,
$551 = 0,
$552 = 0,
$553 = 0,
$554 = 0,
$555 = 0,
$556 = 0,
$557 = 0,
$558 = 0,
$559 = 0,
$56 = 0,
$560 = 0,
$561 = 0,
$562 = 0,
$563 = 0,
$564 = 0,
$565 = 0,
$566 = 0,
$567 = 0;
var $568 = 0,
$569 = 0,
$57 = 0,
$570 = 0,
$571 = 0,
$572 = 0,
$573 = 0,
$574 = 0,
$575 = 0,
$576 = 0,
$577 = 0,
$578 = 0,
$579 = 0,
$58 = 0,
$580 = 0,
$581 = 0,
$582 = 0,
$583 = 0,
$584 = 0,
$585 = 0;
var $586 = 0,
$587 = 0,
$588 = 0,
$589 = 0,
$59 = 0,
$590 = 0,
$591 = 0,
$592 = 0,
$593 = 0,
$594 = 0,
$595 = 0,
$596 = 0,
$597 = 0,
$598 = 0,
$599 = 0,
$6 = 0,
$60 = 0,
$600 = 0,
$601 = 0,
$602 = 0;
var $603 = 0,
$604 = 0,
$605 = 0,
$606 = 0,
$607 = 0,
$608 = 0,
$609 = 0,
$61 = 0,
$610 = 0,
$611 = 0,
$612 = 0,
$613 = 0,
$614 = 0,
$615 = 0,
$616 = 0,
$617 = 0,
$618 = 0,
$619 = 0,
$62 = 0,
$620 = 0;
var $621 = 0,
$622 = 0,
$623 = 0,
$624 = 0,
$625 = 0,
$626 = 0,
$627 = 0,
$628 = 0,
$629 = 0,
$63 = 0,
$630 = 0,
$631 = 0,
$632 = 0,
$633 = 0,
$634 = 0,
$635 = 0,
$636 = 0,
$637 = 0,
$638 = 0,
$639 = 0;
var $64 = 0,
$640 = 0,
$641 = 0,
$642 = 0,
$643 = 0,
$644 = 0,
$645 = 0,
$646 = 0,
$647 = 0,
$648 = 0,
$649 = 0,
$65 = 0,
$650 = 0,
$651 = 0,
$652 = 0,
$653 = 0,
$654 = 0,
$655 = 0,
$656 = 0,
$657 = 0;
var $658 = 0,
$659 = 0,
$66 = 0,
$660 = 0,
$661 = 0,
$662 = 0,
$663 = 0,
$664 = 0,
$665 = 0,
$666 = 0,
$667 = 0,
$668 = 0,
$669 = 0,
$67 = 0,
$670 = 0,
$671 = 0,
$672 = 0,
$673 = 0,
$674 = 0,
$675 = 0;
var $676 = 0,
$677 = 0,
$678 = 0,
$679 = 0,
$68 = 0,
$680 = 0,
$681 = 0,
$682 = 0,
$683 = 0,
$684 = 0,
$685 = 0,
$686 = 0,
$687 = 0,
$688 = 0,
$689 = 0,
$69 = 0,
$690 = 0,
$691 = 0,
$692 = 0,
$693 = 0;
var $694 = 0,
$695 = 0,
$696 = 0,
$697 = 0,
$698 = 0,
$699 = 0,
$7 = 0,
$70 = 0,
$700 = 0,
$701 = 0,
$702 = 0,
$703 = 0,
$704 = 0,
$705 = 0,
$706 = 0,
$707 = 0,
$708 = 0,
$709 = 0,
$71 = 0,
$710 = 0;
var $711 = 0,
$712 = 0,
$713 = 0,
$714 = 0,
$715 = 0,
$716 = 0,
$717 = 0,
$718 = 0,
$719 = 0,
$72 = 0,
$720 = 0,
$721 = 0,
$722 = 0,
$723 = 0,
$724 = 0,
$725 = 0,
$726 = 0,
$727 = 0,
$728 = 0,
$729 = 0;
var $73 = 0,
$730 = 0,
$731 = 0,
$732 = 0,
$733 = 0,
$734 = 0,
$735 = 0,
$736 = 0,
$737 = 0,
$738 = 0,
$739 = 0,
$74 = 0,
$740 = 0,
$741 = 0,
$742 = 0,
$743 = 0,
$744 = 0,
$745 = 0,
$746 = 0,
$747 = 0;
var $748 = 0,
$749 = 0,
$75 = 0,
$750 = 0,
$751 = 0,
$752 = 0,
$753 = 0,
$754 = 0,
$755 = 0,
$756 = 0,
$757 = 0,
$758 = 0,
$759 = 0,
$76 = 0,
$760 = 0,
$761 = 0,
$762 = 0,
$763 = 0,
$764 = 0,
$765 = 0;
var $766 = 0,
$767 = 0,
$768 = 0,
$769 = 0,
$77 = 0,
$770 = 0,
$771 = 0,
$772 = 0,
$773 = 0,
$774 = 0,
$775 = 0,
$776 = 0,
$777 = 0,
$778 = 0,
$779 = 0,
$78 = 0,
$780 = 0,
$781 = 0,
$782 = 0,
$783 = 0;
var $784 = 0,
$785 = 0,
$786 = 0,
$787 = 0,
$788 = 0,
$789 = 0,
$79 = 0,
$790 = 0,
$791 = 0,
$792 = 0,
$793 = 0,
$794 = 0,
$795 = 0,
$796 = 0,
$797 = 0,
$798 = 0,
$799 = 0,
$8 = 0,
$80 = 0,
$800 = 0;
var $801 = 0,
$802 = 0,
$803 = 0,
$804 = 0,
$805 = 0,
$806 = 0,
$807 = 0,
$808 = 0,
$809 = 0,
$81 = 0,
$810 = 0,
$811 = 0,
$812 = 0,
$813 = 0,
$814 = 0,
$815 = 0,
$816 = 0,
$817 = 0,
$818 = 0,
$819 = 0;
var $82 = 0,
$820 = 0,
$821 = 0,
$822 = 0,
$823 = 0,
$824 = 0,
$825 = 0,
$826 = 0,
$827 = 0,
$828 = 0,
$829 = 0,
$83 = 0,
$830 = 0,
$831 = 0,
$832 = 0,
$833 = 0,
$834 = 0,
$835 = 0,
$836 = 0,
$837 = 0;
var $838 = 0,
$839 = 0,
$84 = 0,
$840 = 0,
$841 = 0,
$842 = 0,
$843 = 0,
$844 = 0,
$845 = 0,
$846 = 0,
$847 = 0,
$848 = 0,
$849 = 0,
$85 = 0,
$850 = 0,
$851 = 0,
$852 = 0,
$853 = 0,
$854 = 0,
$855 = 0;
var $856 = 0,
$857 = 0,
$858 = 0,
$859 = 0,
$86 = 0,
$860 = 0,
$861 = 0,
$862 = 0,
$863 = 0,
$864 = 0,
$865 = 0,
$866 = 0,
$867 = 0,
$868 = 0,
$869 = 0,
$87 = 0,
$870 = 0,
$871 = 0,
$872 = 0,
$873 = 0;
var $874 = 0,
$875 = 0,
$876 = 0,
$877 = 0,
$878 = 0,
$879 = 0,
$88 = 0,
$880 = 0,
$881 = 0,
$882 = 0,
$883 = 0,
$884 = 0,
$885 = 0,
$886 = 0,
$887 = 0,
$888 = 0,
$889 = 0,
$89 = 0,
$890 = 0,
$891 = 0;
var $892 = 0,
$893 = 0,
$894 = 0,
$895 = 0,
$896 = 0,
$897 = 0,
$898 = 0,
$899 = 0,
$9 = 0,
$90 = 0,
$900 = 0,
$901 = 0,
$902 = 0,
$903 = 0,
$904 = 0,
$905 = 0,
$906 = 0,
$907 = 0,
$908 = 0,
$909 = 0;
var $91 = 0,
$910 = 0,
$911 = 0,
$912 = 0,
$913 = 0,
$914 = 0,
$915 = 0,
$916 = 0,
$917 = 0,
$918 = 0,
$919 = 0,
$92 = 0,
$920 = 0,
$921 = 0,
$922 = 0,
$923 = 0,
$924 = 0,
$925 = 0,
$926 = 0,
$927 = 0;
var $928 = 0,
$929 = 0,
$93 = 0,
$930 = 0,
$931 = 0,
$932 = 0,
$933 = 0,
$934 = 0,
$935 = 0,
$936 = 0,
$937 = 0,
$938 = 0,
$939 = 0,
$94 = 0,
$940 = 0,
$941 = 0,
$942 = 0,
$943 = 0,
$944 = 0,
$945 = 0;
var $946 = 0,
$947 = 0,
$948 = 0,
$949 = 0,
$95 = 0,
$950 = 0,
$951 = 0,
$952 = 0,
$953 = 0,
$954 = 0,
$955 = 0,
$956 = 0,
$957 = 0,
$958 = 0,
$959 = 0,
$96 = 0,
$960 = 0,
$961 = 0,
$962 = 0,
$963 = 0;
var $964 = 0,
$965 = 0,
$966 = 0,
$967 = 0,
$968 = 0,
$969 = 0,
$97 = 0,
$970 = 0,
$971 = 0,
$972 = 0,
$973 = 0,
$974 = 0,
$975 = 0,
$976 = 0,
$977 = 0,
$978 = 0,
$979 = 0,
$98 = 0,
$980 = 0,
$981 = 0;
var $982 = 0,
$983 = 0,
$984 = 0,
$985 = 0,
$986 = 0,
$987 = 0,
$988 = 0,
$989 = 0,
$99 = 0,
$990 = 0,
$991 = 0,
$992 = 0,
$993 = 0,
$994 = 0,
$995 = 0,
$996 = 0,
$997 = 0,
$998 = 0,
$999 = 0,
label = 0;
var sp = 0;
sp = STACKTOP;
$0 = _load_347($a) | 0;
$1 = tempRet0;
$2 = $0 & 2097151;
$3 = ($a + 2) | 0;
$4 = _load_448($3) | 0;
$5 = tempRet0;
$6 = _bitshift64Lshr($4 | 0, $5 | 0, 5) | 0;
$7 = tempRet0;
$8 = $6 & 2097151;
$9 = ($a + 5) | 0;
$10 = _load_347($9) | 0;
$11 = tempRet0;
$12 = _bitshift64Lshr($10 | 0, $11 | 0, 2) | 0;
$13 = tempRet0;
$14 = $12 & 2097151;
$15 = ($a + 7) | 0;
$16 = _load_448($15) | 0;
$17 = tempRet0;
$18 = _bitshift64Lshr($16 | 0, $17 | 0, 7) | 0;
$19 = tempRet0;
$20 = $18 & 2097151;
$21 = ($a + 10) | 0;
$22 = _load_448($21) | 0;
$23 = tempRet0;
$24 = _bitshift64Lshr($22 | 0, $23 | 0, 4) | 0;
$25 = tempRet0;
$26 = $24 & 2097151;
$27 = ($a + 13) | 0;
$28 = _load_347($27) | 0;
$29 = tempRet0;
$30 = _bitshift64Lshr($28 | 0, $29 | 0, 1) | 0;
$31 = tempRet0;
$32 = $30 & 2097151;
$33 = ($a + 15) | 0;
$34 = _load_448($33) | 0;
$35 = tempRet0;
$36 = _bitshift64Lshr($34 | 0, $35 | 0, 6) | 0;
$37 = tempRet0;
$38 = $36 & 2097151;
$39 = ($a + 18) | 0;
$40 = _load_347($39) | 0;
$41 = tempRet0;
$42 = _bitshift64Lshr($40 | 0, $41 | 0, 3) | 0;
$43 = tempRet0;
$44 = $42 & 2097151;
$45 = ($a + 21) | 0;
$46 = _load_347($45) | 0;
$47 = tempRet0;
$48 = $46 & 2097151;
$49 = ($a + 23) | 0;
$50 = _load_448($49) | 0;
$51 = tempRet0;
$52 = _bitshift64Lshr($50 | 0, $51 | 0, 5) | 0;
$53 = tempRet0;
$54 = $52 & 2097151;
$55 = ($a + 26) | 0;
$56 = _load_347($55) | 0;
$57 = tempRet0;
$58 = _bitshift64Lshr($56 | 0, $57 | 0, 2) | 0;
$59 = tempRet0;
$60 = $58 & 2097151;
$61 = ($a + 28) | 0;
$62 = _load_448($61) | 0;
$63 = tempRet0;
$64 = _bitshift64Lshr($62 | 0, $63 | 0, 7) | 0;
$65 = tempRet0;
$66 = _load_347($b) | 0;
$67 = tempRet0;
$68 = $66 & 2097151;
$69 = ($b + 2) | 0;
$70 = _load_448($69) | 0;
$71 = tempRet0;
$72 = _bitshift64Lshr($70 | 0, $71 | 0, 5) | 0;
$73 = tempRet0;
$74 = $72 & 2097151;
$75 = ($b + 5) | 0;
$76 = _load_347($75) | 0;
$77 = tempRet0;
$78 = _bitshift64Lshr($76 | 0, $77 | 0, 2) | 0;
$79 = tempRet0;
$80 = $78 & 2097151;
$81 = ($b + 7) | 0;
$82 = _load_448($81) | 0;
$83 = tempRet0;
$84 = _bitshift64Lshr($82 | 0, $83 | 0, 7) | 0;
$85 = tempRet0;
$86 = $84 & 2097151;
$87 = ($b + 10) | 0;
$88 = _load_448($87) | 0;
$89 = tempRet0;
$90 = _bitshift64Lshr($88 | 0, $89 | 0, 4) | 0;
$91 = tempRet0;
$92 = $90 & 2097151;
$93 = ($b + 13) | 0;
$94 = _load_347($93) | 0;
$95 = tempRet0;
$96 = _bitshift64Lshr($94 | 0, $95 | 0, 1) | 0;
$97 = tempRet0;
$98 = $96 & 2097151;
$99 = ($b + 15) | 0;
$100 = _load_448($99) | 0;
$101 = tempRet0;
$102 = _bitshift64Lshr($100 | 0, $101 | 0, 6) | 0;
$103 = tempRet0;
$104 = $102 & 2097151;
$105 = ($b + 18) | 0;
$106 = _load_347($105) | 0;
$107 = tempRet0;
$108 = _bitshift64Lshr($106 | 0, $107 | 0, 3) | 0;
$109 = tempRet0;
$110 = $108 & 2097151;
$111 = ($b + 21) | 0;
$112 = _load_347($111) | 0;
$113 = tempRet0;
$114 = $112 & 2097151;
$115 = ($b + 23) | 0;
$116 = _load_448($115) | 0;
$117 = tempRet0;
$118 = _bitshift64Lshr($116 | 0, $117 | 0, 5) | 0;
$119 = tempRet0;
$120 = $118 & 2097151;
$121 = ($b + 26) | 0;
$122 = _load_347($121) | 0;
$123 = tempRet0;
$124 = _bitshift64Lshr($122 | 0, $123 | 0, 2) | 0;
$125 = tempRet0;
$126 = $124 & 2097151;
$127 = ($b + 28) | 0;
$128 = _load_448($127) | 0;
$129 = tempRet0;
$130 = _bitshift64Lshr($128 | 0, $129 | 0, 7) | 0;
$131 = tempRet0;
$132 = _load_347($c) | 0;
$133 = tempRet0;
$134 = $132 & 2097151;
$135 = ($c + 2) | 0;
$136 = _load_448($135) | 0;
$137 = tempRet0;
$138 = _bitshift64Lshr($136 | 0, $137 | 0, 5) | 0;
$139 = tempRet0;
$140 = $138 & 2097151;
$141 = ($c + 5) | 0;
$142 = _load_347($141) | 0;
$143 = tempRet0;
$144 = _bitshift64Lshr($142 | 0, $143 | 0, 2) | 0;
$145 = tempRet0;
$146 = $144 & 2097151;
$147 = ($c + 7) | 0;
$148 = _load_448($147) | 0;
$149 = tempRet0;
$150 = _bitshift64Lshr($148 | 0, $149 | 0, 7) | 0;
$151 = tempRet0;
$152 = $150 & 2097151;
$153 = ($c + 10) | 0;
$154 = _load_448($153) | 0;
$155 = tempRet0;
$156 = _bitshift64Lshr($154 | 0, $155 | 0, 4) | 0;
$157 = tempRet0;
$158 = $156 & 2097151;
$159 = ($c + 13) | 0;
$160 = _load_347($159) | 0;
$161 = tempRet0;
$162 = _bitshift64Lshr($160 | 0, $161 | 0, 1) | 0;
$163 = tempRet0;
$164 = $162 & 2097151;
$165 = ($c + 15) | 0;
$166 = _load_448($165) | 0;
$167 = tempRet0;
$168 = _bitshift64Lshr($166 | 0, $167 | 0, 6) | 0;
$169 = tempRet0;
$170 = $168 & 2097151;
$171 = ($c + 18) | 0;
$172 = _load_347($171) | 0;
$173 = tempRet0;
$174 = _bitshift64Lshr($172 | 0, $173 | 0, 3) | 0;
$175 = tempRet0;
$176 = $174 & 2097151;
$177 = ($c + 21) | 0;
$178 = _load_347($177) | 0;
$179 = tempRet0;
$180 = $178 & 2097151;
$181 = ($c + 23) | 0;
$182 = _load_448($181) | 0;
$183 = tempRet0;
$184 = _bitshift64Lshr($182 | 0, $183 | 0, 5) | 0;
$185 = tempRet0;
$186 = $184 & 2097151;
$187 = ($c + 26) | 0;
$188 = _load_347($187) | 0;
$189 = tempRet0;
$190 = _bitshift64Lshr($188 | 0, $189 | 0, 2) | 0;
$191 = tempRet0;
$192 = $190 & 2097151;
$193 = ($c + 28) | 0;
$194 = _load_448($193) | 0;
$195 = tempRet0;
$196 = _bitshift64Lshr($194 | 0, $195 | 0, 7) | 0;
$197 = tempRet0;
$198 = ___muldi3($68 | 0, 0, $2 | 0, 0) | 0;
$199 = tempRet0;
$200 = _i64Add($134 | 0, 0, $198 | 0, $199 | 0) | 0;
$201 = tempRet0;
$202 = ___muldi3($74 | 0, 0, $2 | 0, 0) | 0;
$203 = tempRet0;
$204 = ___muldi3($68 | 0, 0, $8 | 0, 0) | 0;
$205 = tempRet0;
$206 = ___muldi3($80 | 0, 0, $2 | 0, 0) | 0;
$207 = tempRet0;
$208 = ___muldi3($74 | 0, 0, $8 | 0, 0) | 0;
$209 = tempRet0;
$210 = ___muldi3($68 | 0, 0, $14 | 0, 0) | 0;
$211 = tempRet0;
$212 = _i64Add($208 | 0, $209 | 0, $210 | 0, $211 | 0) | 0;
$213 = tempRet0;
$214 = _i64Add($212 | 0, $213 | 0, $206 | 0, $207 | 0) | 0;
$215 = tempRet0;
$216 = _i64Add($214 | 0, $215 | 0, $146 | 0, 0) | 0;
$217 = tempRet0;
$218 = ___muldi3($86 | 0, 0, $2 | 0, 0) | 0;
$219 = tempRet0;
$220 = ___muldi3($80 | 0, 0, $8 | 0, 0) | 0;
$221 = tempRet0;
$222 = ___muldi3($74 | 0, 0, $14 | 0, 0) | 0;
$223 = tempRet0;
$224 = ___muldi3($68 | 0, 0, $20 | 0, 0) | 0;
$225 = tempRet0;
$226 = ___muldi3($92 | 0, 0, $2 | 0, 0) | 0;
$227 = tempRet0;
$228 = ___muldi3($86 | 0, 0, $8 | 0, 0) | 0;
$229 = tempRet0;
$230 = ___muldi3($80 | 0, 0, $14 | 0, 0) | 0;
$231 = tempRet0;
$232 = ___muldi3($74 | 0, 0, $20 | 0, 0) | 0;
$233 = tempRet0;
$234 = ___muldi3($68 | 0, 0, $26 | 0, 0) | 0;
$235 = tempRet0;
$236 = _i64Add($232 | 0, $233 | 0, $234 | 0, $235 | 0) | 0;
$237 = tempRet0;
$238 = _i64Add($236 | 0, $237 | 0, $230 | 0, $231 | 0) | 0;
$239 = tempRet0;
$240 = _i64Add($238 | 0, $239 | 0, $228 | 0, $229 | 0) | 0;
$241 = tempRet0;
$242 = _i64Add($240 | 0, $241 | 0, $226 | 0, $227 | 0) | 0;
$243 = tempRet0;
$244 = _i64Add($242 | 0, $243 | 0, $158 | 0, 0) | 0;
$245 = tempRet0;
$246 = ___muldi3($98 | 0, 0, $2 | 0, 0) | 0;
$247 = tempRet0;
$248 = ___muldi3($92 | 0, 0, $8 | 0, 0) | 0;
$249 = tempRet0;
$250 = ___muldi3($86 | 0, 0, $14 | 0, 0) | 0;
$251 = tempRet0;
$252 = ___muldi3($80 | 0, 0, $20 | 0, 0) | 0;
$253 = tempRet0;
$254 = ___muldi3($74 | 0, 0, $26 | 0, 0) | 0;
$255 = tempRet0;
$256 = ___muldi3($68 | 0, 0, $32 | 0, 0) | 0;
$257 = tempRet0;
$258 = ___muldi3($104 | 0, 0, $2 | 0, 0) | 0;
$259 = tempRet0;
$260 = ___muldi3($98 | 0, 0, $8 | 0, 0) | 0;
$261 = tempRet0;
$262 = ___muldi3($92 | 0, 0, $14 | 0, 0) | 0;
$263 = tempRet0;
$264 = ___muldi3($86 | 0, 0, $20 | 0, 0) | 0;
$265 = tempRet0;
$266 = ___muldi3($80 | 0, 0, $26 | 0, 0) | 0;
$267 = tempRet0;
$268 = ___muldi3($74 | 0, 0, $32 | 0, 0) | 0;
$269 = tempRet0;
$270 = ___muldi3($68 | 0, 0, $38 | 0, 0) | 0;
$271 = tempRet0;
$272 = _i64Add($268 | 0, $269 | 0, $270 | 0, $271 | 0) | 0;
$273 = tempRet0;
$274 = _i64Add($272 | 0, $273 | 0, $266 | 0, $267 | 0) | 0;
$275 = tempRet0;
$276 = _i64Add($274 | 0, $275 | 0, $264 | 0, $265 | 0) | 0;
$277 = tempRet0;
$278 = _i64Add($276 | 0, $277 | 0, $262 | 0, $263 | 0) | 0;
$279 = tempRet0;
$280 = _i64Add($278 | 0, $279 | 0, $260 | 0, $261 | 0) | 0;
$281 = tempRet0;
$282 = _i64Add($280 | 0, $281 | 0, $258 | 0, $259 | 0) | 0;
$283 = tempRet0;
$284 = _i64Add($282 | 0, $283 | 0, $170 | 0, 0) | 0;
$285 = tempRet0;
$286 = ___muldi3($110 | 0, 0, $2 | 0, 0) | 0;
$287 = tempRet0;
$288 = ___muldi3($104 | 0, 0, $8 | 0, 0) | 0;
$289 = tempRet0;
$290 = ___muldi3($98 | 0, 0, $14 | 0, 0) | 0;
$291 = tempRet0;
$292 = ___muldi3($92 | 0, 0, $20 | 0, 0) | 0;
$293 = tempRet0;
$294 = ___muldi3($86 | 0, 0, $26 | 0, 0) | 0;
$295 = tempRet0;
$296 = ___muldi3($80 | 0, 0, $32 | 0, 0) | 0;
$297 = tempRet0;
$298 = ___muldi3($74 | 0, 0, $38 | 0, 0) | 0;
$299 = tempRet0;
$300 = ___muldi3($68 | 0, 0, $44 | 0, 0) | 0;
$301 = tempRet0;
$302 = ___muldi3($114 | 0, 0, $2 | 0, 0) | 0;
$303 = tempRet0;
$304 = ___muldi3($110 | 0, 0, $8 | 0, 0) | 0;
$305 = tempRet0;
$306 = ___muldi3($104 | 0, 0, $14 | 0, 0) | 0;
$307 = tempRet0;
$308 = ___muldi3($98 | 0, 0, $20 | 0, 0) | 0;
$309 = tempRet0;
$310 = ___muldi3($92 | 0, 0, $26 | 0, 0) | 0;
$311 = tempRet0;
$312 = ___muldi3($86 | 0, 0, $32 | 0, 0) | 0;
$313 = tempRet0;
$314 = ___muldi3($80 | 0, 0, $38 | 0, 0) | 0;
$315 = tempRet0;
$316 = ___muldi3($74 | 0, 0, $44 | 0, 0) | 0;
$317 = tempRet0;
$318 = ___muldi3($68 | 0, 0, $48 | 0, 0) | 0;
$319 = tempRet0;
$320 = _i64Add($316 | 0, $317 | 0, $318 | 0, $319 | 0) | 0;
$321 = tempRet0;
$322 = _i64Add($320 | 0, $321 | 0, $314 | 0, $315 | 0) | 0;
$323 = tempRet0;
$324 = _i64Add($322 | 0, $323 | 0, $312 | 0, $313 | 0) | 0;
$325 = tempRet0;
$326 = _i64Add($324 | 0, $325 | 0, $310 | 0, $311 | 0) | 0;
$327 = tempRet0;
$328 = _i64Add($326 | 0, $327 | 0, $308 | 0, $309 | 0) | 0;
$329 = tempRet0;
$330 = _i64Add($328 | 0, $329 | 0, $306 | 0, $307 | 0) | 0;
$331 = tempRet0;
$332 = _i64Add($330 | 0, $331 | 0, $302 | 0, $303 | 0) | 0;
$333 = tempRet0;
$334 = _i64Add($332 | 0, $333 | 0, $304 | 0, $305 | 0) | 0;
$335 = tempRet0;
$336 = _i64Add($334 | 0, $335 | 0, $180 | 0, 0) | 0;
$337 = tempRet0;
$338 = ___muldi3($120 | 0, 0, $2 | 0, 0) | 0;
$339 = tempRet0;
$340 = ___muldi3($114 | 0, 0, $8 | 0, 0) | 0;
$341 = tempRet0;
$342 = ___muldi3($110 | 0, 0, $14 | 0, 0) | 0;
$343 = tempRet0;
$344 = ___muldi3($104 | 0, 0, $20 | 0, 0) | 0;
$345 = tempRet0;
$346 = ___muldi3($98 | 0, 0, $26 | 0, 0) | 0;
$347 = tempRet0;
$348 = ___muldi3($92 | 0, 0, $32 | 0, 0) | 0;
$349 = tempRet0;
$350 = ___muldi3($86 | 0, 0, $38 | 0, 0) | 0;
$351 = tempRet0;
$352 = ___muldi3($80 | 0, 0, $44 | 0, 0) | 0;
$353 = tempRet0;
$354 = ___muldi3($74 | 0, 0, $48 | 0, 0) | 0;
$355 = tempRet0;
$356 = ___muldi3($68 | 0, 0, $54 | 0, 0) | 0;
$357 = tempRet0;
$358 = ___muldi3($126 | 0, 0, $2 | 0, 0) | 0;
$359 = tempRet0;
$360 = ___muldi3($120 | 0, 0, $8 | 0, 0) | 0;
$361 = tempRet0;
$362 = ___muldi3($114 | 0, 0, $14 | 0, 0) | 0;
$363 = tempRet0;
$364 = ___muldi3($110 | 0, 0, $20 | 0, 0) | 0;
$365 = tempRet0;
$366 = ___muldi3($104 | 0, 0, $26 | 0, 0) | 0;
$367 = tempRet0;
$368 = ___muldi3($98 | 0, 0, $32 | 0, 0) | 0;
$369 = tempRet0;
$370 = ___muldi3($92 | 0, 0, $38 | 0, 0) | 0;
$371 = tempRet0;
$372 = ___muldi3($86 | 0, 0, $44 | 0, 0) | 0;
$373 = tempRet0;
$374 = ___muldi3($80 | 0, 0, $48 | 0, 0) | 0;
$375 = tempRet0;
$376 = ___muldi3($74 | 0, 0, $54 | 0, 0) | 0;
$377 = tempRet0;
$378 = ___muldi3($68 | 0, 0, $60 | 0, 0) | 0;
$379 = tempRet0;
$380 = _i64Add($376 | 0, $377 | 0, $378 | 0, $379 | 0) | 0;
$381 = tempRet0;
$382 = _i64Add($380 | 0, $381 | 0, $374 | 0, $375 | 0) | 0;
$383 = tempRet0;
$384 = _i64Add($382 | 0, $383 | 0, $372 | 0, $373 | 0) | 0;
$385 = tempRet0;
$386 = _i64Add($384 | 0, $385 | 0, $370 | 0, $371 | 0) | 0;
$387 = tempRet0;
$388 = _i64Add($386 | 0, $387 | 0, $368 | 0, $369 | 0) | 0;
$389 = tempRet0;
$390 = _i64Add($388 | 0, $389 | 0, $366 | 0, $367 | 0) | 0;
$391 = tempRet0;
$392 = _i64Add($390 | 0, $391 | 0, $362 | 0, $363 | 0) | 0;
$393 = tempRet0;
$394 = _i64Add($392 | 0, $393 | 0, $364 | 0, $365 | 0) | 0;
$395 = tempRet0;
$396 = _i64Add($394 | 0, $395 | 0, $360 | 0, $361 | 0) | 0;
$397 = tempRet0;
$398 = _i64Add($396 | 0, $397 | 0, $358 | 0, $359 | 0) | 0;
$399 = tempRet0;
$400 = _i64Add($398 | 0, $399 | 0, $192 | 0, 0) | 0;
$401 = tempRet0;
$402 = ___muldi3($130 | 0, $131 | 0, $2 | 0, 0) | 0;
$403 = tempRet0;
$404 = ___muldi3($126 | 0, 0, $8 | 0, 0) | 0;
$405 = tempRet0;
$406 = ___muldi3($120 | 0, 0, $14 | 0, 0) | 0;
$407 = tempRet0;
$408 = ___muldi3($114 | 0, 0, $20 | 0, 0) | 0;
$409 = tempRet0;
$410 = ___muldi3($110 | 0, 0, $26 | 0, 0) | 0;
$411 = tempRet0;
$412 = ___muldi3($104 | 0, 0, $32 | 0, 0) | 0;
$413 = tempRet0;
$414 = ___muldi3($98 | 0, 0, $38 | 0, 0) | 0;
$415 = tempRet0;
$416 = ___muldi3($92 | 0, 0, $44 | 0, 0) | 0;
$417 = tempRet0;
$418 = ___muldi3($86 | 0, 0, $48 | 0, 0) | 0;
$419 = tempRet0;
$420 = ___muldi3($80 | 0, 0, $54 | 0, 0) | 0;
$421 = tempRet0;
$422 = ___muldi3($74 | 0, 0, $60 | 0, 0) | 0;
$423 = tempRet0;
$424 = ___muldi3($68 | 0, 0, $64 | 0, $65 | 0) | 0;
$425 = tempRet0;
$426 = ___muldi3($130 | 0, $131 | 0, $8 | 0, 0) | 0;
$427 = tempRet0;
$428 = ___muldi3($126 | 0, 0, $14 | 0, 0) | 0;
$429 = tempRet0;
$430 = ___muldi3($120 | 0, 0, $20 | 0, 0) | 0;
$431 = tempRet0;
$432 = ___muldi3($114 | 0, 0, $26 | 0, 0) | 0;
$433 = tempRet0;
$434 = ___muldi3($110 | 0, 0, $32 | 0, 0) | 0;
$435 = tempRet0;
$436 = ___muldi3($104 | 0, 0, $38 | 0, 0) | 0;
$437 = tempRet0;
$438 = ___muldi3($98 | 0, 0, $44 | 0, 0) | 0;
$439 = tempRet0;
$440 = ___muldi3($92 | 0, 0, $48 | 0, 0) | 0;
$441 = tempRet0;
$442 = ___muldi3($86 | 0, 0, $54 | 0, 0) | 0;
$443 = tempRet0;
$444 = ___muldi3($80 | 0, 0, $60 | 0, 0) | 0;
$445 = tempRet0;
$446 = ___muldi3($74 | 0, 0, $64 | 0, $65 | 0) | 0;
$447 = tempRet0;
$448 = _i64Add($444 | 0, $445 | 0, $446 | 0, $447 | 0) | 0;
$449 = tempRet0;
$450 = _i64Add($448 | 0, $449 | 0, $442 | 0, $443 | 0) | 0;
$451 = tempRet0;
$452 = _i64Add($450 | 0, $451 | 0, $440 | 0, $441 | 0) | 0;
$453 = tempRet0;
$454 = _i64Add($452 | 0, $453 | 0, $438 | 0, $439 | 0) | 0;
$455 = tempRet0;
$456 = _i64Add($454 | 0, $455 | 0, $436 | 0, $437 | 0) | 0;
$457 = tempRet0;
$458 = _i64Add($456 | 0, $457 | 0, $432 | 0, $433 | 0) | 0;
$459 = tempRet0;
$460 = _i64Add($458 | 0, $459 | 0, $434 | 0, $435 | 0) | 0;
$461 = tempRet0;
$462 = _i64Add($460 | 0, $461 | 0, $430 | 0, $431 | 0) | 0;
$463 = tempRet0;
$464 = _i64Add($462 | 0, $463 | 0, $428 | 0, $429 | 0) | 0;
$465 = tempRet0;
$466 = _i64Add($464 | 0, $465 | 0, $426 | 0, $427 | 0) | 0;
$467 = tempRet0;
$468 = ___muldi3($130 | 0, $131 | 0, $14 | 0, 0) | 0;
$469 = tempRet0;
$470 = ___muldi3($126 | 0, 0, $20 | 0, 0) | 0;
$471 = tempRet0;
$472 = ___muldi3($120 | 0, 0, $26 | 0, 0) | 0;
$473 = tempRet0;
$474 = ___muldi3($114 | 0, 0, $32 | 0, 0) | 0;
$475 = tempRet0;
$476 = ___muldi3($110 | 0, 0, $38 | 0, 0) | 0;
$477 = tempRet0;
$478 = ___muldi3($104 | 0, 0, $44 | 0, 0) | 0;
$479 = tempRet0;
$480 = ___muldi3($98 | 0, 0, $48 | 0, 0) | 0;
$481 = tempRet0;
$482 = ___muldi3($92 | 0, 0, $54 | 0, 0) | 0;
$483 = tempRet0;
$484 = ___muldi3($86 | 0, 0, $60 | 0, 0) | 0;
$485 = tempRet0;
$486 = ___muldi3($80 | 0, 0, $64 | 0, $65 | 0) | 0;
$487 = tempRet0;
$488 = ___muldi3($130 | 0, $131 | 0, $20 | 0, 0) | 0;
$489 = tempRet0;
$490 = ___muldi3($126 | 0, 0, $26 | 0, 0) | 0;
$491 = tempRet0;
$492 = ___muldi3($120 | 0, 0, $32 | 0, 0) | 0;
$493 = tempRet0;
$494 = ___muldi3($114 | 0, 0, $38 | 0, 0) | 0;
$495 = tempRet0;
$496 = ___muldi3($110 | 0, 0, $44 | 0, 0) | 0;
$497 = tempRet0;
$498 = ___muldi3($104 | 0, 0, $48 | 0, 0) | 0;
$499 = tempRet0;
$500 = ___muldi3($98 | 0, 0, $54 | 0, 0) | 0;
$501 = tempRet0;
$502 = ___muldi3($92 | 0, 0, $60 | 0, 0) | 0;
$503 = tempRet0;
$504 = ___muldi3($86 | 0, 0, $64 | 0, $65 | 0) | 0;
$505 = tempRet0;
$506 = _i64Add($502 | 0, $503 | 0, $504 | 0, $505 | 0) | 0;
$507 = tempRet0;
$508 = _i64Add($506 | 0, $507 | 0, $500 | 0, $501 | 0) | 0;
$509 = tempRet0;
$510 = _i64Add($508 | 0, $509 | 0, $498 | 0, $499 | 0) | 0;
$511 = tempRet0;
$512 = _i64Add($510 | 0, $511 | 0, $494 | 0, $495 | 0) | 0;
$513 = tempRet0;
$514 = _i64Add($512 | 0, $513 | 0, $496 | 0, $497 | 0) | 0;
$515 = tempRet0;
$516 = _i64Add($514 | 0, $515 | 0, $492 | 0, $493 | 0) | 0;
$517 = tempRet0;
$518 = _i64Add($516 | 0, $517 | 0, $490 | 0, $491 | 0) | 0;
$519 = tempRet0;
$520 = _i64Add($518 | 0, $519 | 0, $488 | 0, $489 | 0) | 0;
$521 = tempRet0;
$522 = ___muldi3($130 | 0, $131 | 0, $26 | 0, 0) | 0;
$523 = tempRet0;
$524 = ___muldi3($126 | 0, 0, $32 | 0, 0) | 0;
$525 = tempRet0;
$526 = ___muldi3($120 | 0, 0, $38 | 0, 0) | 0;
$527 = tempRet0;
$528 = ___muldi3($114 | 0, 0, $44 | 0, 0) | 0;
$529 = tempRet0;
$530 = ___muldi3($110 | 0, 0, $48 | 0, 0) | 0;
$531 = tempRet0;
$532 = ___muldi3($104 | 0, 0, $54 | 0, 0) | 0;
$533 = tempRet0;
$534 = ___muldi3($98 | 0, 0, $60 | 0, 0) | 0;
$535 = tempRet0;
$536 = ___muldi3($92 | 0, 0, $64 | 0, $65 | 0) | 0;
$537 = tempRet0;
$538 = ___muldi3($130 | 0, $131 | 0, $32 | 0, 0) | 0;
$539 = tempRet0;
$540 = ___muldi3($126 | 0, 0, $38 | 0, 0) | 0;
$541 = tempRet0;
$542 = ___muldi3($120 | 0, 0, $44 | 0, 0) | 0;
$543 = tempRet0;
$544 = ___muldi3($114 | 0, 0, $48 | 0, 0) | 0;
$545 = tempRet0;
$546 = ___muldi3($110 | 0, 0, $54 | 0, 0) | 0;
$547 = tempRet0;
$548 = ___muldi3($104 | 0, 0, $60 | 0, 0) | 0;
$549 = tempRet0;
$550 = ___muldi3($98 | 0, 0, $64 | 0, $65 | 0) | 0;
$551 = tempRet0;
$552 = _i64Add($548 | 0, $549 | 0, $550 | 0, $551 | 0) | 0;
$553 = tempRet0;
$554 = _i64Add($552 | 0, $553 | 0, $544 | 0, $545 | 0) | 0;
$555 = tempRet0;
$556 = _i64Add($554 | 0, $555 | 0, $546 | 0, $547 | 0) | 0;
$557 = tempRet0;
$558 = _i64Add($556 | 0, $557 | 0, $542 | 0, $543 | 0) | 0;
$559 = tempRet0;
$560 = _i64Add($558 | 0, $559 | 0, $540 | 0, $541 | 0) | 0;
$561 = tempRet0;
$562 = _i64Add($560 | 0, $561 | 0, $538 | 0, $539 | 0) | 0;
$563 = tempRet0;
$564 = ___muldi3($130 | 0, $131 | 0, $38 | 0, 0) | 0;
$565 = tempRet0;
$566 = ___muldi3($126 | 0, 0, $44 | 0, 0) | 0;
$567 = tempRet0;
$568 = ___muldi3($120 | 0, 0, $48 | 0, 0) | 0;
$569 = tempRet0;
$570 = ___muldi3($114 | 0, 0, $54 | 0, 0) | 0;
$571 = tempRet0;
$572 = ___muldi3($110 | 0, 0, $60 | 0, 0) | 0;
$573 = tempRet0;
$574 = ___muldi3($104 | 0, 0, $64 | 0, $65 | 0) | 0;
$575 = tempRet0;
$576 = ___muldi3($130 | 0, $131 | 0, $44 | 0, 0) | 0;
$577 = tempRet0;
$578 = ___muldi3($126 | 0, 0, $48 | 0, 0) | 0;
$579 = tempRet0;
$580 = ___muldi3($120 | 0, 0, $54 | 0, 0) | 0;
$581 = tempRet0;
$582 = ___muldi3($114 | 0, 0, $60 | 0, 0) | 0;
$583 = tempRet0;
$584 = ___muldi3($110 | 0, 0, $64 | 0, $65 | 0) | 0;
$585 = tempRet0;
$586 = _i64Add($584 | 0, $585 | 0, $582 | 0, $583 | 0) | 0;
$587 = tempRet0;
$588 = _i64Add($586 | 0, $587 | 0, $580 | 0, $581 | 0) | 0;
$589 = tempRet0;
$590 = _i64Add($588 | 0, $589 | 0, $578 | 0, $579 | 0) | 0;
$591 = tempRet0;
$592 = _i64Add($590 | 0, $591 | 0, $576 | 0, $577 | 0) | 0;
$593 = tempRet0;
$594 = ___muldi3($130 | 0, $131 | 0, $48 | 0, 0) | 0;
$595 = tempRet0;
$596 = ___muldi3($126 | 0, 0, $54 | 0, 0) | 0;
$597 = tempRet0;
$598 = ___muldi3($120 | 0, 0, $60 | 0, 0) | 0;
$599 = tempRet0;
$600 = ___muldi3($114 | 0, 0, $64 | 0, $65 | 0) | 0;
$601 = tempRet0;
$602 = ___muldi3($130 | 0, $131 | 0, $54 | 0, 0) | 0;
$603 = tempRet0;
$604 = ___muldi3($126 | 0, 0, $60 | 0, 0) | 0;
$605 = tempRet0;
$606 = ___muldi3($120 | 0, 0, $64 | 0, $65 | 0) | 0;
$607 = tempRet0;
$608 = _i64Add($604 | 0, $605 | 0, $606 | 0, $607 | 0) | 0;
$609 = tempRet0;
$610 = _i64Add($608 | 0, $609 | 0, $602 | 0, $603 | 0) | 0;
$611 = tempRet0;
$612 = ___muldi3($130 | 0, $131 | 0, $60 | 0, 0) | 0;
$613 = tempRet0;
$614 = ___muldi3($126 | 0, 0, $64 | 0, $65 | 0) | 0;
$615 = tempRet0;
$616 = _i64Add($612 | 0, $613 | 0, $614 | 0, $615 | 0) | 0;
$617 = tempRet0;
$618 = ___muldi3($130 | 0, $131 | 0, $64 | 0, $65 | 0) | 0;
$619 = tempRet0;
$620 = _i64Add($200 | 0, $201 | 0, 1048576, 0) | 0;
$621 = tempRet0;
$622 = _bitshift64Lshr($620 | 0, $621 | 0, 21) | 0;
$623 = tempRet0;
$624 = _i64Add($202 | 0, $203 | 0, $204 | 0, $205 | 0) | 0;
$625 = tempRet0;
$626 = _i64Add($624 | 0, $625 | 0, $140 | 0, 0) | 0;
$627 = tempRet0;
$628 = _i64Add($626 | 0, $627 | 0, $622 | 0, $623 | 0) | 0;
$629 = tempRet0;
$630 = _bitshift64Shl($622 | 0, $623 | 0, 21) | 0;
$631 = tempRet0;
$632 = _i64Subtract($200 | 0, $201 | 0, $630 | 0, $631 | 0) | 0;
$633 = tempRet0;
$634 = _i64Add($216 | 0, $217 | 0, 1048576, 0) | 0;
$635 = tempRet0;
$636 = _bitshift64Lshr($634 | 0, $635 | 0, 21) | 0;
$637 = tempRet0;
$638 = _i64Add($222 | 0, $223 | 0, $224 | 0, $225 | 0) | 0;
$639 = tempRet0;
$640 = _i64Add($638 | 0, $639 | 0, $220 | 0, $221 | 0) | 0;
$641 = tempRet0;
$642 = _i64Add($640 | 0, $641 | 0, $218 | 0, $219 | 0) | 0;
$643 = tempRet0;
$644 = _i64Add($642 | 0, $643 | 0, $152 | 0, 0) | 0;
$645 = tempRet0;
$646 = _i64Add($644 | 0, $645 | 0, $636 | 0, $637 | 0) | 0;
$647 = tempRet0;
$648 = _bitshift64Shl($636 | 0, $637 | 0, 21) | 0;
$649 = tempRet0;
$650 = _i64Add($244 | 0, $245 | 0, 1048576, 0) | 0;
$651 = tempRet0;
$652 = _bitshift64Ashr($650 | 0, $651 | 0, 21) | 0;
$653 = tempRet0;
$654 = _i64Add($254 | 0, $255 | 0, $256 | 0, $257 | 0) | 0;
$655 = tempRet0;
$656 = _i64Add($654 | 0, $655 | 0, $252 | 0, $253 | 0) | 0;
$657 = tempRet0;
$658 = _i64Add($656 | 0, $657 | 0, $250 | 0, $251 | 0) | 0;
$659 = tempRet0;
$660 = _i64Add($658 | 0, $659 | 0, $248 | 0, $249 | 0) | 0;
$661 = tempRet0;
$662 = _i64Add($660 | 0, $661 | 0, $246 | 0, $247 | 0) | 0;
$663 = tempRet0;
$664 = _i64Add($662 | 0, $663 | 0, $164 | 0, 0) | 0;
$665 = tempRet0;
$666 = _i64Add($664 | 0, $665 | 0, $652 | 0, $653 | 0) | 0;
$667 = tempRet0;
$668 = _bitshift64Shl($652 | 0, $653 | 0, 21) | 0;
$669 = tempRet0;
$670 = _i64Subtract($244 | 0, $245 | 0, $668 | 0, $669 | 0) | 0;
$671 = tempRet0;
$672 = _i64Add($284 | 0, $285 | 0, 1048576, 0) | 0;
$673 = tempRet0;
$674 = _bitshift64Ashr($672 | 0, $673 | 0, 21) | 0;
$675 = tempRet0;
$676 = _i64Add($298 | 0, $299 | 0, $300 | 0, $301 | 0) | 0;
$677 = tempRet0;
$678 = _i64Add($676 | 0, $677 | 0, $296 | 0, $297 | 0) | 0;
$679 = tempRet0;
$680 = _i64Add($678 | 0, $679 | 0, $294 | 0, $295 | 0) | 0;
$681 = tempRet0;
$682 = _i64Add($680 | 0, $681 | 0, $292 | 0, $293 | 0) | 0;
$683 = tempRet0;
$684 = _i64Add($682 | 0, $683 | 0, $290 | 0, $291 | 0) | 0;
$685 = tempRet0;
$686 = _i64Add($684 | 0, $685 | 0, $288 | 0, $289 | 0) | 0;
$687 = tempRet0;
$688 = _i64Add($686 | 0, $687 | 0, $286 | 0, $287 | 0) | 0;
$689 = tempRet0;
$690 = _i64Add($688 | 0, $689 | 0, $176 | 0, 0) | 0;
$691 = tempRet0;
$692 = _i64Add($690 | 0, $691 | 0, $674 | 0, $675 | 0) | 0;
$693 = tempRet0;
$694 = _bitshift64Shl($674 | 0, $675 | 0, 21) | 0;
$695 = tempRet0;
$696 = _i64Add($336 | 0, $337 | 0, 1048576, 0) | 0;
$697 = tempRet0;
$698 = _bitshift64Ashr($696 | 0, $697 | 0, 21) | 0;
$699 = tempRet0;
$700 = _i64Add($354 | 0, $355 | 0, $356 | 0, $357 | 0) | 0;
$701 = tempRet0;
$702 = _i64Add($700 | 0, $701 | 0, $352 | 0, $353 | 0) | 0;
$703 = tempRet0;
$704 = _i64Add($702 | 0, $703 | 0, $350 | 0, $351 | 0) | 0;
$705 = tempRet0;
$706 = _i64Add($704 | 0, $705 | 0, $348 | 0, $349 | 0) | 0;
$707 = tempRet0;
$708 = _i64Add($706 | 0, $707 | 0, $346 | 0, $347 | 0) | 0;
$709 = tempRet0;
$710 = _i64Add($708 | 0, $709 | 0, $344 | 0, $345 | 0) | 0;
$711 = tempRet0;
$712 = _i64Add($710 | 0, $711 | 0, $340 | 0, $341 | 0) | 0;
$713 = tempRet0;
$714 = _i64Add($712 | 0, $713 | 0, $342 | 0, $343 | 0) | 0;
$715 = tempRet0;
$716 = _i64Add($714 | 0, $715 | 0, $338 | 0, $339 | 0) | 0;
$717 = tempRet0;
$718 = _i64Add($716 | 0, $717 | 0, $186 | 0, 0) | 0;
$719 = tempRet0;
$720 = _i64Add($718 | 0, $719 | 0, $698 | 0, $699 | 0) | 0;
$721 = tempRet0;
$722 = _bitshift64Shl($698 | 0, $699 | 0, 21) | 0;
$723 = tempRet0;
$724 = _i64Add($400 | 0, $401 | 0, 1048576, 0) | 0;
$725 = tempRet0;
$726 = _bitshift64Ashr($724 | 0, $725 | 0, 21) | 0;
$727 = tempRet0;
$728 = _i64Add($422 | 0, $423 | 0, $424 | 0, $425 | 0) | 0;
$729 = tempRet0;
$730 = _i64Add($728 | 0, $729 | 0, $420 | 0, $421 | 0) | 0;
$731 = tempRet0;
$732 = _i64Add($730 | 0, $731 | 0, $418 | 0, $419 | 0) | 0;
$733 = tempRet0;
$734 = _i64Add($732 | 0, $733 | 0, $416 | 0, $417 | 0) | 0;
$735 = tempRet0;
$736 = _i64Add($734 | 0, $735 | 0, $414 | 0, $415 | 0) | 0;
$737 = tempRet0;
$738 = _i64Add($736 | 0, $737 | 0, $412 | 0, $413 | 0) | 0;
$739 = tempRet0;
$740 = _i64Add($738 | 0, $739 | 0, $408 | 0, $409 | 0) | 0;
$741 = tempRet0;
$742 = _i64Add($740 | 0, $741 | 0, $410 | 0, $411 | 0) | 0;
$743 = tempRet0;
$744 = _i64Add($742 | 0, $743 | 0, $406 | 0, $407 | 0) | 0;
$745 = tempRet0;
$746 = _i64Add($744 | 0, $745 | 0, $402 | 0, $403 | 0) | 0;
$747 = tempRet0;
$748 = _i64Add($746 | 0, $747 | 0, $404 | 0, $405 | 0) | 0;
$749 = tempRet0;
$750 = _i64Add($748 | 0, $749 | 0, $196 | 0, $197 | 0) | 0;
$751 = tempRet0;
$752 = _i64Add($750 | 0, $751 | 0, $726 | 0, $727 | 0) | 0;
$753 = tempRet0;
$754 = _bitshift64Shl($726 | 0, $727 | 0, 21) | 0;
$755 = tempRet0;
$756 = _i64Add($466 | 0, $467 | 0, 1048576, 0) | 0;
$757 = tempRet0;
$758 = _bitshift64Ashr($756 | 0, $757 | 0, 21) | 0;
$759 = tempRet0;
$760 = _i64Add($484 | 0, $485 | 0, $486 | 0, $487 | 0) | 0;
$761 = tempRet0;
$762 = _i64Add($760 | 0, $761 | 0, $482 | 0, $483 | 0) | 0;
$763 = tempRet0;
$764 = _i64Add($762 | 0, $763 | 0, $480 | 0, $481 | 0) | 0;
$765 = tempRet0;
$766 = _i64Add($764 | 0, $765 | 0, $478 | 0, $479 | 0) | 0;
$767 = tempRet0;
$768 = _i64Add($766 | 0, $767 | 0, $474 | 0, $475 | 0) | 0;
$769 = tempRet0;
$770 = _i64Add($768 | 0, $769 | 0, $476 | 0, $477 | 0) | 0;
$771 = tempRet0;
$772 = _i64Add($770 | 0, $771 | 0, $472 | 0, $473 | 0) | 0;
$773 = tempRet0;
$774 = _i64Add($772 | 0, $773 | 0, $470 | 0, $471 | 0) | 0;
$775 = tempRet0;
$776 = _i64Add($774 | 0, $775 | 0, $468 | 0, $469 | 0) | 0;
$777 = tempRet0;
$778 = _i64Add($776 | 0, $777 | 0, $758 | 0, $759 | 0) | 0;
$779 = tempRet0;
$780 = _bitshift64Shl($758 | 0, $759 | 0, 21) | 0;
$781 = tempRet0;
$782 = _i64Add($520 | 0, $521 | 0, 1048576, 0) | 0;
$783 = tempRet0;
$784 = _bitshift64Ashr($782 | 0, $783 | 0, 21) | 0;
$785 = tempRet0;
$786 = _i64Add($534 | 0, $535 | 0, $536 | 0, $537 | 0) | 0;
$787 = tempRet0;
$788 = _i64Add($786 | 0, $787 | 0, $532 | 0, $533 | 0) | 0;
$789 = tempRet0;
$790 = _i64Add($788 | 0, $789 | 0, $528 | 0, $529 | 0) | 0;
$791 = tempRet0;
$792 = _i64Add($790 | 0, $791 | 0, $530 | 0, $531 | 0) | 0;
$793 = tempRet0;
$794 = _i64Add($792 | 0, $793 | 0, $526 | 0, $527 | 0) | 0;
$795 = tempRet0;
$796 = _i64Add($794 | 0, $795 | 0, $524 | 0, $525 | 0) | 0;
$797 = tempRet0;
$798 = _i64Add($796 | 0, $797 | 0, $522 | 0, $523 | 0) | 0;
$799 = tempRet0;
$800 = _i64Add($798 | 0, $799 | 0, $784 | 0, $785 | 0) | 0;
$801 = tempRet0;
$802 = _bitshift64Shl($784 | 0, $785 | 0, 21) | 0;
$803 = tempRet0;
$804 = _i64Add($562 | 0, $563 | 0, 1048576, 0) | 0;
$805 = tempRet0;
$806 = _bitshift64Ashr($804 | 0, $805 | 0, 21) | 0;
$807 = tempRet0;
$808 = _i64Add($570 | 0, $571 | 0, $574 | 0, $575 | 0) | 0;
$809 = tempRet0;
$810 = _i64Add($808 | 0, $809 | 0, $572 | 0, $573 | 0) | 0;
$811 = tempRet0;
$812 = _i64Add($810 | 0, $811 | 0, $568 | 0, $569 | 0) | 0;
$813 = tempRet0;
$814 = _i64Add($812 | 0, $813 | 0, $566 | 0, $567 | 0) | 0;
$815 = tempRet0;
$816 = _i64Add($814 | 0, $815 | 0, $564 | 0, $565 | 0) | 0;
$817 = tempRet0;
$818 = _i64Add($816 | 0, $817 | 0, $806 | 0, $807 | 0) | 0;
$819 = tempRet0;
$820 = _bitshift64Shl($806 | 0, $807 | 0, 21) | 0;
$821 = tempRet0;
$822 = _i64Add($592 | 0, $593 | 0, 1048576, 0) | 0;
$823 = tempRet0;
$824 = _bitshift64Ashr($822 | 0, $823 | 0, 21) | 0;
$825 = tempRet0;
$826 = _i64Add($598 | 0, $599 | 0, $600 | 0, $601 | 0) | 0;
$827 = tempRet0;
$828 = _i64Add($826 | 0, $827 | 0, $596 | 0, $597 | 0) | 0;
$829 = tempRet0;
$830 = _i64Add($828 | 0, $829 | 0, $594 | 0, $595 | 0) | 0;
$831 = tempRet0;
$832 = _i64Add($830 | 0, $831 | 0, $824 | 0, $825 | 0) | 0;
$833 = tempRet0;
$834 = _bitshift64Shl($824 | 0, $825 | 0, 21) | 0;
$835 = tempRet0;
$836 = _i64Subtract($592 | 0, $593 | 0, $834 | 0, $835 | 0) | 0;
$837 = tempRet0;
$838 = _i64Add($610 | 0, $611 | 0, 1048576, 0) | 0;
$839 = tempRet0;
$840 = _bitshift64Lshr($838 | 0, $839 | 0, 21) | 0;
$841 = tempRet0;
$842 = _i64Add($616 | 0, $617 | 0, $840 | 0, $841 | 0) | 0;
$843 = tempRet0;
$844 = _bitshift64Shl($840 | 0, $841 | 0, 21) | 0;
$845 = tempRet0;
$846 = _i64Subtract($610 | 0, $611 | 0, $844 | 0, $845 | 0) | 0;
$847 = tempRet0;
$848 = _i64Add($618 | 0, $619 | 0, 1048576, 0) | 0;
$849 = tempRet0;
$850 = _bitshift64Lshr($848 | 0, $849 | 0, 21) | 0;
$851 = tempRet0;
$852 = _bitshift64Shl($850 | 0, $851 | 0, 21) | 0;
$853 = tempRet0;
$854 = _i64Subtract($618 | 0, $619 | 0, $852 | 0, $853 | 0) | 0;
$855 = tempRet0;
$856 = _i64Add($628 | 0, $629 | 0, 1048576, 0) | 0;
$857 = tempRet0;
$858 = _bitshift64Lshr($856 | 0, $857 | 0, 21) | 0;
$859 = tempRet0;
$860 = _bitshift64Shl($858 | 0, $859 | 0, 21) | 0;
$861 = tempRet0;
$862 = _i64Subtract($628 | 0, $629 | 0, $860 | 0, $861 | 0) | 0;
$863 = tempRet0;
$864 = _i64Add($646 | 0, $647 | 0, 1048576, 0) | 0;
$865 = tempRet0;
$866 = _bitshift64Ashr($864 | 0, $865 | 0, 21) | 0;
$867 = tempRet0;
$868 = _i64Add($670 | 0, $671 | 0, $866 | 0, $867 | 0) | 0;
$869 = tempRet0;
$870 = _bitshift64Shl($866 | 0, $867 | 0, 21) | 0;
$871 = tempRet0;
$872 = _i64Subtract($646 | 0, $647 | 0, $870 | 0, $871 | 0) | 0;
$873 = tempRet0;
$874 = _i64Add($666 | 0, $667 | 0, 1048576, 0) | 0;
$875 = tempRet0;
$876 = _bitshift64Ashr($874 | 0, $875 | 0, 21) | 0;
$877 = tempRet0;
$878 = _bitshift64Shl($876 | 0, $877 | 0, 21) | 0;
$879 = tempRet0;
$880 = _i64Subtract($666 | 0, $667 | 0, $878 | 0, $879 | 0) | 0;
$881 = tempRet0;
$882 = _i64Add($692 | 0, $693 | 0, 1048576, 0) | 0;
$883 = tempRet0;
$884 = _bitshift64Ashr($882 | 0, $883 | 0, 21) | 0;
$885 = tempRet0;
$886 = _bitshift64Shl($884 | 0, $885 | 0, 21) | 0;
$887 = tempRet0;
$888 = _i64Add($720 | 0, $721 | 0, 1048576, 0) | 0;
$889 = tempRet0;
$890 = _bitshift64Ashr($888 | 0, $889 | 0, 21) | 0;
$891 = tempRet0;
$892 = _bitshift64Shl($890 | 0, $891 | 0, 21) | 0;
$893 = tempRet0;
$894 = _i64Add($752 | 0, $753 | 0, 1048576, 0) | 0;
$895 = tempRet0;
$896 = _bitshift64Ashr($894 | 0, $895 | 0, 21) | 0;
$897 = tempRet0;
$898 = _bitshift64Shl($896 | 0, $897 | 0, 21) | 0;
$899 = tempRet0;
$900 = _i64Add($778 | 0, $779 | 0, 1048576, 0) | 0;
$901 = tempRet0;
$902 = _bitshift64Ashr($900 | 0, $901 | 0, 21) | 0;
$903 = tempRet0;
$904 = _bitshift64Shl($902 | 0, $903 | 0, 21) | 0;
$905 = tempRet0;
$906 = _i64Add($800 | 0, $801 | 0, 1048576, 0) | 0;
$907 = tempRet0;
$908 = _bitshift64Ashr($906 | 0, $907 | 0, 21) | 0;
$909 = tempRet0;
$910 = _bitshift64Shl($908 | 0, $909 | 0, 21) | 0;
$911 = tempRet0;
$912 = _i64Add($818 | 0, $819 | 0, 1048576, 0) | 0;
$913 = tempRet0;
$914 = _bitshift64Ashr($912 | 0, $913 | 0, 21) | 0;
$915 = tempRet0;
$916 = _i64Add($914 | 0, $915 | 0, $836 | 0, $837 | 0) | 0;
$917 = tempRet0;
$918 = _bitshift64Shl($914 | 0, $915 | 0, 21) | 0;
$919 = tempRet0;
$920 = _i64Subtract($818 | 0, $819 | 0, $918 | 0, $919 | 0) | 0;
$921 = tempRet0;
$922 = _i64Add($832 | 0, $833 | 0, 1048576, 0) | 0;
$923 = tempRet0;
$924 = _bitshift64Ashr($922 | 0, $923 | 0, 21) | 0;
$925 = tempRet0;
$926 = _i64Add($924 | 0, $925 | 0, $846 | 0, $847 | 0) | 0;
$927 = tempRet0;
$928 = _bitshift64Shl($924 | 0, $925 | 0, 21) | 0;
$929 = tempRet0;
$930 = _i64Subtract($832 | 0, $833 | 0, $928 | 0, $929 | 0) | 0;
$931 = tempRet0;
$932 = _i64Add($842 | 0, $843 | 0, 1048576, 0) | 0;
$933 = tempRet0;
$934 = _bitshift64Lshr($932 | 0, $933 | 0, 21) | 0;
$935 = tempRet0;
$936 = _i64Add($934 | 0, $935 | 0, $854 | 0, $855 | 0) | 0;
$937 = tempRet0;
$938 = _bitshift64Shl($934 | 0, $935 | 0, 21) | 0;
$939 = tempRet0;
$940 = _i64Subtract($842 | 0, $843 | 0, $938 | 0, $939 | 0) | 0;
$941 = tempRet0;
$942 = ___muldi3($850 | 0, $851 | 0, 666643, 0) | 0;
$943 = tempRet0;
$944 = ___muldi3($850 | 0, $851 | 0, 470296, 0) | 0;
$945 = tempRet0;
$946 = ___muldi3($850 | 0, $851 | 0, 654183, 0) | 0;
$947 = tempRet0;
$948 = ___muldi3($850 | 0, $851 | 0, -997805, -1) | 0;
$949 = tempRet0;
$950 = ___muldi3($850 | 0, $851 | 0, 136657, 0) | 0;
$951 = tempRet0;
$952 = ___muldi3($850 | 0, $851 | 0, -683901, -1) | 0;
$953 = tempRet0;
$954 = _i64Add($952 | 0, $953 | 0, $562 | 0, $563 | 0) | 0;
$955 = tempRet0;
$956 = _i64Subtract($954 | 0, $955 | 0, $820 | 0, $821 | 0) | 0;
$957 = tempRet0;
$958 = _i64Add($956 | 0, $957 | 0, $908 | 0, $909 | 0) | 0;
$959 = tempRet0;
$960 = ___muldi3($936 | 0, $937 | 0, 666643, 0) | 0;
$961 = tempRet0;
$962 = ___muldi3($936 | 0, $937 | 0, 470296, 0) | 0;
$963 = tempRet0;
$964 = ___muldi3($936 | 0, $937 | 0, 654183, 0) | 0;
$965 = tempRet0;
$966 = ___muldi3($936 | 0, $937 | 0, -997805, -1) | 0;
$967 = tempRet0;
$968 = ___muldi3($936 | 0, $937 | 0, 136657, 0) | 0;
$969 = tempRet0;
$970 = ___muldi3($936 | 0, $937 | 0, -683901, -1) | 0;
$971 = tempRet0;
$972 = ___muldi3($940 | 0, $941 | 0, 666643, 0) | 0;
$973 = tempRet0;
$974 = ___muldi3($940 | 0, $941 | 0, 470296, 0) | 0;
$975 = tempRet0;
$976 = ___muldi3($940 | 0, $941 | 0, 654183, 0) | 0;
$977 = tempRet0;
$978 = ___muldi3($940 | 0, $941 | 0, -997805, -1) | 0;
$979 = tempRet0;
$980 = ___muldi3($940 | 0, $941 | 0, 136657, 0) | 0;
$981 = tempRet0;
$982 = ___muldi3($940 | 0, $941 | 0, -683901, -1) | 0;
$983 = tempRet0;
$984 = _i64Add($948 | 0, $949 | 0, $520 | 0, $521 | 0) | 0;
$985 = tempRet0;
$986 = _i64Subtract($984 | 0, $985 | 0, $802 | 0, $803 | 0) | 0;
$987 = tempRet0;
$988 = _i64Add($986 | 0, $987 | 0, $902 | 0, $903 | 0) | 0;
$989 = tempRet0;
$990 = _i64Add($988 | 0, $989 | 0, $968 | 0, $969 | 0) | 0;
$991 = tempRet0;
$992 = _i64Add($990 | 0, $991 | 0, $982 | 0, $983 | 0) | 0;
$993 = tempRet0;
$994 = ___muldi3($926 | 0, $927 | 0, 666643, 0) | 0;
$995 = tempRet0;
$996 = ___muldi3($926 | 0, $927 | 0, 470296, 0) | 0;
$997 = tempRet0;
$998 = ___muldi3($926 | 0, $927 | 0, 654183, 0) | 0;
$999 = tempRet0;
$1000 = ___muldi3($926 | 0, $927 | 0, -997805, -1) | 0;
$1001 = tempRet0;
$1002 = ___muldi3($926 | 0, $927 | 0, 136657, 0) | 0;
$1003 = tempRet0;
$1004 = ___muldi3($926 | 0, $927 | 0, -683901, -1) | 0;
$1005 = tempRet0;
$1006 = ___muldi3($930 | 0, $931 | 0, 666643, 0) | 0;
$1007 = tempRet0;
$1008 = ___muldi3($930 | 0, $931 | 0, 470296, 0) | 0;
$1009 = tempRet0;
$1010 = ___muldi3($930 | 0, $931 | 0, 654183, 0) | 0;
$1011 = tempRet0;
$1012 = ___muldi3($930 | 0, $931 | 0, -997805, -1) | 0;
$1013 = tempRet0;
$1014 = ___muldi3($930 | 0, $931 | 0, 136657, 0) | 0;
$1015 = tempRet0;
$1016 = ___muldi3($930 | 0, $931 | 0, -683901, -1) | 0;
$1017 = tempRet0;
$1018 = _i64Add($944 | 0, $945 | 0, $466 | 0, $467 | 0) | 0;
$1019 = tempRet0;
$1020 = _i64Subtract($1018 | 0, $1019 | 0, $780 | 0, $781 | 0) | 0;
$1021 = tempRet0;
$1022 = _i64Add($1020 | 0, $1021 | 0, $964 | 0, $965 | 0) | 0;
$1023 = tempRet0;
$1024 = _i64Add($1022 | 0, $1023 | 0, $1002 | 0, $1003 | 0) | 0;
$1025 = tempRet0;
$1026 = _i64Add($1024 | 0, $1025 | 0, $978 | 0, $979 | 0) | 0;
$1027 = tempRet0;
$1028 = _i64Add($1026 | 0, $1027 | 0, $1016 | 0, $1017 | 0) | 0;
$1029 = tempRet0;
$1030 = _i64Add($1028 | 0, $1029 | 0, $896 | 0, $897 | 0) | 0;
$1031 = tempRet0;
$1032 = ___muldi3($916 | 0, $917 | 0, 666643, 0) | 0;
$1033 = tempRet0;
$1034 = _i64Add($1032 | 0, $1033 | 0, $284 | 0, $285 | 0) | 0;
$1035 = tempRet0;
$1036 = _i64Subtract($1034 | 0, $1035 | 0, $694 | 0, $695 | 0) | 0;
$1037 = tempRet0;
$1038 = _i64Add($1036 | 0, $1037 | 0, $876 | 0, $877 | 0) | 0;
$1039 = tempRet0;
$1040 = ___muldi3($916 | 0, $917 | 0, 470296, 0) | 0;
$1041 = tempRet0;
$1042 = ___muldi3($916 | 0, $917 | 0, 654183, 0) | 0;
$1043 = tempRet0;
$1044 = _i64Add($994 | 0, $995 | 0, $336 | 0, $337 | 0) | 0;
$1045 = tempRet0;
$1046 = _i64Add($1044 | 0, $1045 | 0, $1042 | 0, $1043 | 0) | 0;
$1047 = tempRet0;
$1048 = _i64Add($1046 | 0, $1047 | 0, $1008 | 0, $1009 | 0) | 0;
$1049 = tempRet0;
$1050 = _i64Subtract($1048 | 0, $1049 | 0, $722 | 0, $723 | 0) | 0;
$1051 = tempRet0;
$1052 = _i64Add($1050 | 0, $1051 | 0, $884 | 0, $885 | 0) | 0;
$1053 = tempRet0;
$1054 = ___muldi3($916 | 0, $917 | 0, -997805, -1) | 0;
$1055 = tempRet0;
$1056 = ___muldi3($916 | 0, $917 | 0, 136657, 0) | 0;
$1057 = tempRet0;
$1058 = _i64Add($998 | 0, $999 | 0, $960 | 0, $961 | 0) | 0;
$1059 = tempRet0;
$1060 = _i64Add($1058 | 0, $1059 | 0, $1056 | 0, $1057 | 0) | 0;
$1061 = tempRet0;
$1062 = _i64Add($1060 | 0, $1061 | 0, $974 | 0, $975 | 0) | 0;
$1063 = tempRet0;
$1064 = _i64Add($1062 | 0, $1063 | 0, $1012 | 0, $1013 | 0) | 0;
$1065 = tempRet0;
$1066 = _i64Add($1064 | 0, $1065 | 0, $400 | 0, $401 | 0) | 0;
$1067 = tempRet0;
$1068 = _i64Add($1066 | 0, $1067 | 0, $890 | 0, $891 | 0) | 0;
$1069 = tempRet0;
$1070 = _i64Subtract($1068 | 0, $1069 | 0, $754 | 0, $755 | 0) | 0;
$1071 = tempRet0;
$1072 = ___muldi3($916 | 0, $917 | 0, -683901, -1) | 0;
$1073 = tempRet0;
$1074 = _i64Add($1038 | 0, $1039 | 0, 1048576, 0) | 0;
$1075 = tempRet0;
$1076 = _bitshift64Ashr($1074 | 0, $1075 | 0, 21) | 0;
$1077 = tempRet0;
$1078 = _i64Add($1006 | 0, $1007 | 0, $1040 | 0, $1041 | 0) | 0;
$1079 = tempRet0;
$1080 = _i64Add($1078 | 0, $1079 | 0, $692 | 0, $693 | 0) | 0;
$1081 = tempRet0;
$1082 = _i64Subtract($1080 | 0, $1081 | 0, $886 | 0, $887 | 0) | 0;
$1083 = tempRet0;
$1084 = _i64Add($1082 | 0, $1083 | 0, $1076 | 0, $1077 | 0) | 0;
$1085 = tempRet0;
$1086 = _bitshift64Shl($1076 | 0, $1077 | 0, 21) | 0;
$1087 = tempRet0;
$1088 = _i64Add($1052 | 0, $1053 | 0, 1048576, 0) | 0;
$1089 = tempRet0;
$1090 = _bitshift64Ashr($1088 | 0, $1089 | 0, 21) | 0;
$1091 = tempRet0;
$1092 = _i64Add($1054 | 0, $1055 | 0, $996 | 0, $997 | 0) | 0;
$1093 = tempRet0;
$1094 = _i64Add($1092 | 0, $1093 | 0, $972 | 0, $973 | 0) | 0;
$1095 = tempRet0;
$1096 = _i64Add($1094 | 0, $1095 | 0, $1010 | 0, $1011 | 0) | 0;
$1097 = tempRet0;
$1098 = _i64Add($1096 | 0, $1097 | 0, $720 | 0, $721 | 0) | 0;
$1099 = tempRet0;
$1100 = _i64Subtract($1098 | 0, $1099 | 0, $892 | 0, $893 | 0) | 0;
$1101 = tempRet0;
$1102 = _i64Add($1100 | 0, $1101 | 0, $1090 | 0, $1091 | 0) | 0;
$1103 = tempRet0;
$1104 = _bitshift64Shl($1090 | 0, $1091 | 0, 21) | 0;
$1105 = tempRet0;
$1106 = _i64Add($1070 | 0, $1071 | 0, 1048576, 0) | 0;
$1107 = tempRet0;
$1108 = _bitshift64Ashr($1106 | 0, $1107 | 0, 21) | 0;
$1109 = tempRet0;
$1110 = _i64Add($962 | 0, $963 | 0, $942 | 0, $943 | 0) | 0;
$1111 = tempRet0;
$1112 = _i64Add($1110 | 0, $1111 | 0, $1000 | 0, $1001 | 0) | 0;
$1113 = tempRet0;
$1114 = _i64Add($1112 | 0, $1113 | 0, $1072 | 0, $1073 | 0) | 0;
$1115 = tempRet0;
$1116 = _i64Add($1114 | 0, $1115 | 0, $976 | 0, $977 | 0) | 0;
$1117 = tempRet0;
$1118 = _i64Add($1116 | 0, $1117 | 0, $1014 | 0, $1015 | 0) | 0;
$1119 = tempRet0;
$1120 = _i64Add($1118 | 0, $1119 | 0, $752 | 0, $753 | 0) | 0;
$1121 = tempRet0;
$1122 = _i64Subtract($1120 | 0, $1121 | 0, $898 | 0, $899 | 0) | 0;
$1123 = tempRet0;
$1124 = _i64Add($1122 | 0, $1123 | 0, $1108 | 0, $1109 | 0) | 0;
$1125 = tempRet0;
$1126 = _bitshift64Shl($1108 | 0, $1109 | 0, 21) | 0;
$1127 = tempRet0;
$1128 = _i64Add($1030 | 0, $1031 | 0, 1048576, 0) | 0;
$1129 = tempRet0;
$1130 = _bitshift64Ashr($1128 | 0, $1129 | 0, 21) | 0;
$1131 = tempRet0;
$1132 = _i64Add($778 | 0, $779 | 0, $946 | 0, $947 | 0) | 0;
$1133 = tempRet0;
$1134 = _i64Subtract($1132 | 0, $1133 | 0, $904 | 0, $905 | 0) | 0;
$1135 = tempRet0;
$1136 = _i64Add($1134 | 0, $1135 | 0, $966 | 0, $967 | 0) | 0;
$1137 = tempRet0;
$1138 = _i64Add($1136 | 0, $1137 | 0, $1004 | 0, $1005 | 0) | 0;
$1139 = tempRet0;
$1140 = _i64Add($1138 | 0, $1139 | 0, $980 | 0, $981 | 0) | 0;
$1141 = tempRet0;
$1142 = _i64Add($1140 | 0, $1141 | 0, $1130 | 0, $1131 | 0) | 0;
$1143 = tempRet0;
$1144 = _bitshift64Shl($1130 | 0, $1131 | 0, 21) | 0;
$1145 = tempRet0;
$1146 = _i64Subtract($1030 | 0, $1031 | 0, $1144 | 0, $1145 | 0) | 0;
$1147 = tempRet0;
$1148 = _i64Add($992 | 0, $993 | 0, 1048576, 0) | 0;
$1149 = tempRet0;
$1150 = _bitshift64Ashr($1148 | 0, $1149 | 0, 21) | 0;
$1151 = tempRet0;
$1152 = _i64Add($800 | 0, $801 | 0, $950 | 0, $951 | 0) | 0;
$1153 = tempRet0;
$1154 = _i64Subtract($1152 | 0, $1153 | 0, $910 | 0, $911 | 0) | 0;
$1155 = tempRet0;
$1156 = _i64Add($1154 | 0, $1155 | 0, $970 | 0, $971 | 0) | 0;
$1157 = tempRet0;
$1158 = _i64Add($1156 | 0, $1157 | 0, $1150 | 0, $1151 | 0) | 0;
$1159 = tempRet0;
$1160 = _bitshift64Shl($1150 | 0, $1151 | 0, 21) | 0;
$1161 = tempRet0;
$1162 = _i64Subtract($992 | 0, $993 | 0, $1160 | 0, $1161 | 0) | 0;
$1163 = tempRet0;
$1164 = _i64Add($958 | 0, $959 | 0, 1048576, 0) | 0;
$1165 = tempRet0;
$1166 = _bitshift64Ashr($1164 | 0, $1165 | 0, 21) | 0;
$1167 = tempRet0;
$1168 = _i64Add($1166 | 0, $1167 | 0, $920 | 0, $921 | 0) | 0;
$1169 = tempRet0;
$1170 = _bitshift64Shl($1166 | 0, $1167 | 0, 21) | 0;
$1171 = tempRet0;
$1172 = _i64Subtract($958 | 0, $959 | 0, $1170 | 0, $1171 | 0) | 0;
$1173 = tempRet0;
$1174 = _i64Add($1084 | 0, $1085 | 0, 1048576, 0) | 0;
$1175 = tempRet0;
$1176 = _bitshift64Ashr($1174 | 0, $1175 | 0, 21) | 0;
$1177 = tempRet0;
$1178 = _bitshift64Shl($1176 | 0, $1177 | 0, 21) | 0;
$1179 = tempRet0;
$1180 = _i64Add($1102 | 0, $1103 | 0, 1048576, 0) | 0;
$1181 = tempRet0;
$1182 = _bitshift64Ashr($1180 | 0, $1181 | 0, 21) | 0;
$1183 = tempRet0;
$1184 = _bitshift64Shl($1182 | 0, $1183 | 0, 21) | 0;
$1185 = tempRet0;
$1186 = _i64Add($1124 | 0, $1125 | 0, 1048576, 0) | 0;
$1187 = tempRet0;
$1188 = _bitshift64Ashr($1186 | 0, $1187 | 0, 21) | 0;
$1189 = tempRet0;
$1190 = _i64Add($1146 | 0, $1147 | 0, $1188 | 0, $1189 | 0) | 0;
$1191 = tempRet0;
$1192 = _bitshift64Shl($1188 | 0, $1189 | 0, 21) | 0;
$1193 = tempRet0;
$1194 = _i64Subtract($1124 | 0, $1125 | 0, $1192 | 0, $1193 | 0) | 0;
$1195 = tempRet0;
$1196 = _i64Add($1142 | 0, $1143 | 0, 1048576, 0) | 0;
$1197 = tempRet0;
$1198 = _bitshift64Ashr($1196 | 0, $1197 | 0, 21) | 0;
$1199 = tempRet0;
$1200 = _i64Add($1198 | 0, $1199 | 0, $1162 | 0, $1163 | 0) | 0;
$1201 = tempRet0;
$1202 = _bitshift64Shl($1198 | 0, $1199 | 0, 21) | 0;
$1203 = tempRet0;
$1204 = _i64Subtract($1142 | 0, $1143 | 0, $1202 | 0, $1203 | 0) | 0;
$1205 = tempRet0;
$1206 = _i64Add($1158 | 0, $1159 | 0, 1048576, 0) | 0;
$1207 = tempRet0;
$1208 = _bitshift64Ashr($1206 | 0, $1207 | 0, 21) | 0;
$1209 = tempRet0;
$1210 = _i64Add($1208 | 0, $1209 | 0, $1172 | 0, $1173 | 0) | 0;
$1211 = tempRet0;
$1212 = _bitshift64Shl($1208 | 0, $1209 | 0, 21) | 0;
$1213 = tempRet0;
$1214 = _i64Subtract($1158 | 0, $1159 | 0, $1212 | 0, $1213 | 0) | 0;
$1215 = tempRet0;
$1216 = ___muldi3($1168 | 0, $1169 | 0, 666643, 0) | 0;
$1217 = tempRet0;
$1218 = _i64Add($880 | 0, $881 | 0, $1216 | 0, $1217 | 0) | 0;
$1219 = tempRet0;
$1220 = ___muldi3($1168 | 0, $1169 | 0, 470296, 0) | 0;
$1221 = tempRet0;
$1222 = ___muldi3($1168 | 0, $1169 | 0, 654183, 0) | 0;
$1223 = tempRet0;
$1224 = ___muldi3($1168 | 0, $1169 | 0, -997805, -1) | 0;
$1225 = tempRet0;
$1226 = ___muldi3($1168 | 0, $1169 | 0, 136657, 0) | 0;
$1227 = tempRet0;
$1228 = ___muldi3($1168 | 0, $1169 | 0, -683901, -1) | 0;
$1229 = tempRet0;
$1230 = _i64Add($1070 | 0, $1071 | 0, $1228 | 0, $1229 | 0) | 0;
$1231 = tempRet0;
$1232 = _i64Subtract($1230 | 0, $1231 | 0, $1126 | 0, $1127 | 0) | 0;
$1233 = tempRet0;
$1234 = _i64Add($1232 | 0, $1233 | 0, $1182 | 0, $1183 | 0) | 0;
$1235 = tempRet0;
$1236 = ___muldi3($1210 | 0, $1211 | 0, 666643, 0) | 0;
$1237 = tempRet0;
$1238 = _i64Add($868 | 0, $869 | 0, $1236 | 0, $1237 | 0) | 0;
$1239 = tempRet0;
$1240 = ___muldi3($1210 | 0, $1211 | 0, 470296, 0) | 0;
$1241 = tempRet0;
$1242 = _i64Add($1218 | 0, $1219 | 0, $1240 | 0, $1241 | 0) | 0;
$1243 = tempRet0;
$1244 = ___muldi3($1210 | 0, $1211 | 0, 654183, 0) | 0;
$1245 = tempRet0;
$1246 = ___muldi3($1210 | 0, $1211 | 0, -997805, -1) | 0;
$1247 = tempRet0;
$1248 = ___muldi3($1210 | 0, $1211 | 0, 136657, 0) | 0;
$1249 = tempRet0;
$1250 = ___muldi3($1210 | 0, $1211 | 0, -683901, -1) | 0;
$1251 = tempRet0;
$1252 = ___muldi3($1214 | 0, $1215 | 0, 666643, 0) | 0;
$1253 = tempRet0;
$1254 = _i64Add($872 | 0, $873 | 0, $1252 | 0, $1253 | 0) | 0;
$1255 = tempRet0;
$1256 = ___muldi3($1214 | 0, $1215 | 0, 470296, 0) | 0;
$1257 = tempRet0;
$1258 = _i64Add($1238 | 0, $1239 | 0, $1256 | 0, $1257 | 0) | 0;
$1259 = tempRet0;
$1260 = ___muldi3($1214 | 0, $1215 | 0, 654183, 0) | 0;
$1261 = tempRet0;
$1262 = _i64Add($1242 | 0, $1243 | 0, $1260 | 0, $1261 | 0) | 0;
$1263 = tempRet0;
$1264 = ___muldi3($1214 | 0, $1215 | 0, -997805, -1) | 0;
$1265 = tempRet0;
$1266 = ___muldi3($1214 | 0, $1215 | 0, 136657, 0) | 0;
$1267 = tempRet0;
$1268 = ___muldi3($1214 | 0, $1215 | 0, -683901, -1) | 0;
$1269 = tempRet0;
$1270 = _i64Add($1052 | 0, $1053 | 0, $1224 | 0, $1225 | 0) | 0;
$1271 = tempRet0;
$1272 = _i64Subtract($1270 | 0, $1271 | 0, $1104 | 0, $1105 | 0) | 0;
$1273 = tempRet0;
$1274 = _i64Add($1272 | 0, $1273 | 0, $1176 | 0, $1177 | 0) | 0;
$1275 = tempRet0;
$1276 = _i64Add($1274 | 0, $1275 | 0, $1248 | 0, $1249 | 0) | 0;
$1277 = tempRet0;
$1278 = _i64Add($1276 | 0, $1277 | 0, $1268 | 0, $1269 | 0) | 0;
$1279 = tempRet0;
$1280 = ___muldi3($1200 | 0, $1201 | 0, 666643, 0) | 0;
$1281 = tempRet0;
$1282 = ___muldi3($1200 | 0, $1201 | 0, 470296, 0) | 0;
$1283 = tempRet0;
$1284 = ___muldi3($1200 | 0, $1201 | 0, 654183, 0) | 0;
$1285 = tempRet0;
$1286 = ___muldi3($1200 | 0, $1201 | 0, -997805, -1) | 0;
$1287 = tempRet0;
$1288 = ___muldi3($1200 | 0, $1201 | 0, 136657, 0) | 0;
$1289 = tempRet0;
$1290 = ___muldi3($1200 | 0, $1201 | 0, -683901, -1) | 0;
$1291 = tempRet0;
$1292 = ___muldi3($1204 | 0, $1205 | 0, 666643, 0) | 0;
$1293 = tempRet0;
$1294 = ___muldi3($1204 | 0, $1205 | 0, 470296, 0) | 0;
$1295 = tempRet0;
$1296 = ___muldi3($1204 | 0, $1205 | 0, 654183, 0) | 0;
$1297 = tempRet0;
$1298 = ___muldi3($1204 | 0, $1205 | 0, -997805, -1) | 0;
$1299 = tempRet0;
$1300 = ___muldi3($1204 | 0, $1205 | 0, 136657, 0) | 0;
$1301 = tempRet0;
$1302 = ___muldi3($1204 | 0, $1205 | 0, -683901, -1) | 0;
$1303 = tempRet0;
$1304 = _i64Add($1038 | 0, $1039 | 0, $1220 | 0, $1221 | 0) | 0;
$1305 = tempRet0;
$1306 = _i64Subtract($1304 | 0, $1305 | 0, $1086 | 0, $1087 | 0) | 0;
$1307 = tempRet0;
$1308 = _i64Add($1306 | 0, $1307 | 0, $1244 | 0, $1245 | 0) | 0;
$1309 = tempRet0;
$1310 = _i64Add($1308 | 0, $1309 | 0, $1264 | 0, $1265 | 0) | 0;
$1311 = tempRet0;
$1312 = _i64Add($1310 | 0, $1311 | 0, $1288 | 0, $1289 | 0) | 0;
$1313 = tempRet0;
$1314 = _i64Add($1312 | 0, $1313 | 0, $1302 | 0, $1303 | 0) | 0;
$1315 = tempRet0;
$1316 = ___muldi3($1190 | 0, $1191 | 0, 666643, 0) | 0;
$1317 = tempRet0;
$1318 = _i64Add($1316 | 0, $1317 | 0, $632 | 0, $633 | 0) | 0;
$1319 = tempRet0;
$1320 = ___muldi3($1190 | 0, $1191 | 0, 470296, 0) | 0;
$1321 = tempRet0;
$1322 = ___muldi3($1190 | 0, $1191 | 0, 654183, 0) | 0;
$1323 = tempRet0;
$1324 = _i64Add($858 | 0, $859 | 0, $216 | 0, $217 | 0) | 0;
$1325 = tempRet0;
$1326 = _i64Subtract($1324 | 0, $1325 | 0, $648 | 0, $649 | 0) | 0;
$1327 = tempRet0;
$1328 = _i64Add($1326 | 0, $1327 | 0, $1322 | 0, $1323 | 0) | 0;
$1329 = tempRet0;
$1330 = _i64Add($1328 | 0, $1329 | 0, $1280 | 0, $1281 | 0) | 0;
$1331 = tempRet0;
$1332 = _i64Add($1330 | 0, $1331 | 0, $1294 | 0, $1295 | 0) | 0;
$1333 = tempRet0;
$1334 = ___muldi3($1190 | 0, $1191 | 0, -997805, -1) | 0;
$1335 = tempRet0;
$1336 = ___muldi3($1190 | 0, $1191 | 0, 136657, 0) | 0;
$1337 = tempRet0;
$1338 = _i64Add($1258 | 0, $1259 | 0, $1336 | 0, $1337 | 0) | 0;
$1339 = tempRet0;
$1340 = _i64Add($1338 | 0, $1339 | 0, $1284 | 0, $1285 | 0) | 0;
$1341 = tempRet0;
$1342 = _i64Add($1340 | 0, $1341 | 0, $1298 | 0, $1299 | 0) | 0;
$1343 = tempRet0;
$1344 = ___muldi3($1190 | 0, $1191 | 0, -683901, -1) | 0;
$1345 = tempRet0;
$1346 = _i64Add($1318 | 0, $1319 | 0, 1048576, 0) | 0;
$1347 = tempRet0;
$1348 = _bitshift64Ashr($1346 | 0, $1347 | 0, 21) | 0;
$1349 = tempRet0;
$1350 = _i64Add($862 | 0, $863 | 0, $1320 | 0, $1321 | 0) | 0;
$1351 = tempRet0;
$1352 = _i64Add($1350 | 0, $1351 | 0, $1292 | 0, $1293 | 0) | 0;
$1353 = tempRet0;
$1354 = _i64Add($1352 | 0, $1353 | 0, $1348 | 0, $1349 | 0) | 0;
$1355 = tempRet0;
$1356 = _bitshift64Shl($1348 | 0, $1349 | 0, 21) | 0;
$1357 = tempRet0;
$1358 = _i64Subtract($1318 | 0, $1319 | 0, $1356 | 0, $1357 | 0) | 0;
$1359 = tempRet0;
$1360 = _i64Add($1332 | 0, $1333 | 0, 1048576, 0) | 0;
$1361 = tempRet0;
$1362 = _bitshift64Ashr($1360 | 0, $1361 | 0, 21) | 0;
$1363 = tempRet0;
$1364 = _i64Add($1254 | 0, $1255 | 0, $1334 | 0, $1335 | 0) | 0;
$1365 = tempRet0;
$1366 = _i64Add($1364 | 0, $1365 | 0, $1282 | 0, $1283 | 0) | 0;
$1367 = tempRet0;
$1368 = _i64Add($1366 | 0, $1367 | 0, $1296 | 0, $1297 | 0) | 0;
$1369 = tempRet0;
$1370 = _i64Add($1368 | 0, $1369 | 0, $1362 | 0, $1363 | 0) | 0;
$1371 = tempRet0;
$1372 = _bitshift64Shl($1362 | 0, $1363 | 0, 21) | 0;
$1373 = tempRet0;
$1374 = _i64Add($1342 | 0, $1343 | 0, 1048576, 0) | 0;
$1375 = tempRet0;
$1376 = _bitshift64Ashr($1374 | 0, $1375 | 0, 21) | 0;
$1377 = tempRet0;
$1378 = _i64Add($1262 | 0, $1263 | 0, $1344 | 0, $1345 | 0) | 0;
$1379 = tempRet0;
$1380 = _i64Add($1378 | 0, $1379 | 0, $1286 | 0, $1287 | 0) | 0;
$1381 = tempRet0;
$1382 = _i64Add($1380 | 0, $1381 | 0, $1300 | 0, $1301 | 0) | 0;
$1383 = tempRet0;
$1384 = _i64Add($1382 | 0, $1383 | 0, $1376 | 0, $1377 | 0) | 0;
$1385 = tempRet0;
$1386 = _bitshift64Shl($1376 | 0, $1377 | 0, 21) | 0;
$1387 = tempRet0;
$1388 = _i64Add($1314 | 0, $1315 | 0, 1048576, 0) | 0;
$1389 = tempRet0;
$1390 = _bitshift64Ashr($1388 | 0, $1389 | 0, 21) | 0;
$1391 = tempRet0;
$1392 = _i64Add($1084 | 0, $1085 | 0, $1222 | 0, $1223 | 0) | 0;
$1393 = tempRet0;
$1394 = _i64Add($1392 | 0, $1393 | 0, $1246 | 0, $1247 | 0) | 0;
$1395 = tempRet0;
$1396 = _i64Subtract($1394 | 0, $1395 | 0, $1178 | 0, $1179 | 0) | 0;
$1397 = tempRet0;
$1398 = _i64Add($1396 | 0, $1397 | 0, $1266 | 0, $1267 | 0) | 0;
$1399 = tempRet0;
$1400 = _i64Add($1398 | 0, $1399 | 0, $1290 | 0, $1291 | 0) | 0;
$1401 = tempRet0;
$1402 = _i64Add($1400 | 0, $1401 | 0, $1390 | 0, $1391 | 0) | 0;
$1403 = tempRet0;
$1404 = _bitshift64Shl($1390 | 0, $1391 | 0, 21) | 0;
$1405 = tempRet0;
$1406 = _i64Subtract($1314 | 0, $1315 | 0, $1404 | 0, $1405 | 0) | 0;
$1407 = tempRet0;
$1408 = _i64Add($1278 | 0, $1279 | 0, 1048576, 0) | 0;
$1409 = tempRet0;
$1410 = _bitshift64Ashr($1408 | 0, $1409 | 0, 21) | 0;
$1411 = tempRet0;
$1412 = _i64Add($1102 | 0, $1103 | 0, $1226 | 0, $1227 | 0) | 0;
$1413 = tempRet0;
$1414 = _i64Add($1412 | 0, $1413 | 0, $1250 | 0, $1251 | 0) | 0;
$1415 = tempRet0;
$1416 = _i64Subtract($1414 | 0, $1415 | 0, $1184 | 0, $1185 | 0) | 0;
$1417 = tempRet0;
$1418 = _i64Add($1416 | 0, $1417 | 0, $1410 | 0, $1411 | 0) | 0;
$1419 = tempRet0;
$1420 = _bitshift64Shl($1410 | 0, $1411 | 0, 21) | 0;
$1421 = tempRet0;
$1422 = _i64Subtract($1278 | 0, $1279 | 0, $1420 | 0, $1421 | 0) | 0;
$1423 = tempRet0;
$1424 = _i64Add($1234 | 0, $1235 | 0, 1048576, 0) | 0;
$1425 = tempRet0;
$1426 = _bitshift64Ashr($1424 | 0, $1425 | 0, 21) | 0;
$1427 = tempRet0;
$1428 = _i64Add($1194 | 0, $1195 | 0, $1426 | 0, $1427 | 0) | 0;
$1429 = tempRet0;
$1430 = _bitshift64Shl($1426 | 0, $1427 | 0, 21) | 0;
$1431 = tempRet0;
$1432 = _i64Subtract($1234 | 0, $1235 | 0, $1430 | 0, $1431 | 0) | 0;
$1433 = tempRet0;
$1434 = _i64Add($1354 | 0, $1355 | 0, 1048576, 0) | 0;
$1435 = tempRet0;
$1436 = _bitshift64Ashr($1434 | 0, $1435 | 0, 21) | 0;
$1437 = tempRet0;
$1438 = _bitshift64Shl($1436 | 0, $1437 | 0, 21) | 0;
$1439 = tempRet0;
$1440 = _i64Add($1370 | 0, $1371 | 0, 1048576, 0) | 0;
$1441 = tempRet0;
$1442 = _bitshift64Ashr($1440 | 0, $1441 | 0, 21) | 0;
$1443 = tempRet0;
$1444 = _bitshift64Shl($1442 | 0, $1443 | 0, 21) | 0;
$1445 = tempRet0;
$1446 = _i64Add($1384 | 0, $1385 | 0, 1048576, 0) | 0;
$1447 = tempRet0;
$1448 = _bitshift64Ashr($1446 | 0, $1447 | 0, 21) | 0;
$1449 = tempRet0;
$1450 = _i64Add($1406 | 0, $1407 | 0, $1448 | 0, $1449 | 0) | 0;
$1451 = tempRet0;
$1452 = _bitshift64Shl($1448 | 0, $1449 | 0, 21) | 0;
$1453 = tempRet0;
$1454 = _i64Add($1402 | 0, $1403 | 0, 1048576, 0) | 0;
$1455 = tempRet0;
$1456 = _bitshift64Ashr($1454 | 0, $1455 | 0, 21) | 0;
$1457 = tempRet0;
$1458 = _i64Add($1422 | 0, $1423 | 0, $1456 | 0, $1457 | 0) | 0;
$1459 = tempRet0;
$1460 = _bitshift64Shl($1456 | 0, $1457 | 0, 21) | 0;
$1461 = tempRet0;
$1462 = _i64Subtract($1402 | 0, $1403 | 0, $1460 | 0, $1461 | 0) | 0;
$1463 = tempRet0;
$1464 = _i64Add($1418 | 0, $1419 | 0, 1048576, 0) | 0;
$1465 = tempRet0;
$1466 = _bitshift64Ashr($1464 | 0, $1465 | 0, 21) | 0;
$1467 = tempRet0;
$1468 = _i64Add($1432 | 0, $1433 | 0, $1466 | 0, $1467 | 0) | 0;
$1469 = tempRet0;
$1470 = _bitshift64Shl($1466 | 0, $1467 | 0, 21) | 0;
$1471 = tempRet0;
$1472 = _i64Subtract($1418 | 0, $1419 | 0, $1470 | 0, $1471 | 0) | 0;
$1473 = tempRet0;
$1474 = _i64Add($1428 | 0, $1429 | 0, 1048576, 0) | 0;
$1475 = tempRet0;
$1476 = _bitshift64Ashr($1474 | 0, $1475 | 0, 21) | 0;
$1477 = tempRet0;
$1478 = _bitshift64Shl($1476 | 0, $1477 | 0, 21) | 0;
$1479 = tempRet0;
$1480 = _i64Subtract($1428 | 0, $1429 | 0, $1478 | 0, $1479 | 0) | 0;
$1481 = tempRet0;
$1482 = ___muldi3($1476 | 0, $1477 | 0, 666643, 0) | 0;
$1483 = tempRet0;
$1484 = _i64Add($1358 | 0, $1359 | 0, $1482 | 0, $1483 | 0) | 0;
$1485 = tempRet0;
$1486 = ___muldi3($1476 | 0, $1477 | 0, 470296, 0) | 0;
$1487 = tempRet0;
$1488 = ___muldi3($1476 | 0, $1477 | 0, 654183, 0) | 0;
$1489 = tempRet0;
$1490 = ___muldi3($1476 | 0, $1477 | 0, -997805, -1) | 0;
$1491 = tempRet0;
$1492 = ___muldi3($1476 | 0, $1477 | 0, 136657, 0) | 0;
$1493 = tempRet0;
$1494 = ___muldi3($1476 | 0, $1477 | 0, -683901, -1) | 0;
$1495 = tempRet0;
$1496 = _bitshift64Ashr($1484 | 0, $1485 | 0, 21) | 0;
$1497 = tempRet0;
$1498 = _i64Add($1486 | 0, $1487 | 0, $1354 | 0, $1355 | 0) | 0;
$1499 = tempRet0;
$1500 = _i64Subtract($1498 | 0, $1499 | 0, $1438 | 0, $1439 | 0) | 0;
$1501 = tempRet0;
$1502 = _i64Add($1500 | 0, $1501 | 0, $1496 | 0, $1497 | 0) | 0;
$1503 = tempRet0;
$1504 = _bitshift64Shl($1496 | 0, $1497 | 0, 21) | 0;
$1505 = tempRet0;
$1506 = _i64Subtract($1484 | 0, $1485 | 0, $1504 | 0, $1505 | 0) | 0;
$1507 = tempRet0;
$1508 = _bitshift64Ashr($1502 | 0, $1503 | 0, 21) | 0;
$1509 = tempRet0;
$1510 = _i64Add($1488 | 0, $1489 | 0, $1332 | 0, $1333 | 0) | 0;
$1511 = tempRet0;
$1512 = _i64Subtract($1510 | 0, $1511 | 0, $1372 | 0, $1373 | 0) | 0;
$1513 = tempRet0;
$1514 = _i64Add($1512 | 0, $1513 | 0, $1436 | 0, $1437 | 0) | 0;
$1515 = tempRet0;
$1516 = _i64Add($1514 | 0, $1515 | 0, $1508 | 0, $1509 | 0) | 0;
$1517 = tempRet0;
$1518 = _bitshift64Shl($1508 | 0, $1509 | 0, 21) | 0;
$1519 = tempRet0;
$1520 = _i64Subtract($1502 | 0, $1503 | 0, $1518 | 0, $1519 | 0) | 0;
$1521 = tempRet0;
$1522 = _bitshift64Ashr($1516 | 0, $1517 | 0, 21) | 0;
$1523 = tempRet0;
$1524 = _i64Add($1370 | 0, $1371 | 0, $1490 | 0, $1491 | 0) | 0;
$1525 = tempRet0;
$1526 = _i64Subtract($1524 | 0, $1525 | 0, $1444 | 0, $1445 | 0) | 0;
$1527 = tempRet0;
$1528 = _i64Add($1526 | 0, $1527 | 0, $1522 | 0, $1523 | 0) | 0;
$1529 = tempRet0;
$1530 = _bitshift64Shl($1522 | 0, $1523 | 0, 21) | 0;
$1531 = tempRet0;
$1532 = _i64Subtract($1516 | 0, $1517 | 0, $1530 | 0, $1531 | 0) | 0;
$1533 = tempRet0;
$1534 = _bitshift64Ashr($1528 | 0, $1529 | 0, 21) | 0;
$1535 = tempRet0;
$1536 = _i64Add($1492 | 0, $1493 | 0, $1342 | 0, $1343 | 0) | 0;
$1537 = tempRet0;
$1538 = _i64Subtract($1536 | 0, $1537 | 0, $1386 | 0, $1387 | 0) | 0;
$1539 = tempRet0;
$1540 = _i64Add($1538 | 0, $1539 | 0, $1442 | 0, $1443 | 0) | 0;
$1541 = tempRet0;
$1542 = _i64Add($1540 | 0, $1541 | 0, $1534 | 0, $1535 | 0) | 0;
$1543 = tempRet0;
$1544 = _bitshift64Shl($1534 | 0, $1535 | 0, 21) | 0;
$1545 = tempRet0;
$1546 = _i64Subtract($1528 | 0, $1529 | 0, $1544 | 0, $1545 | 0) | 0;
$1547 = tempRet0;
$1548 = _bitshift64Ashr($1542 | 0, $1543 | 0, 21) | 0;
$1549 = tempRet0;
$1550 = _i64Add($1384 | 0, $1385 | 0, $1494 | 0, $1495 | 0) | 0;
$1551 = tempRet0;
$1552 = _i64Subtract($1550 | 0, $1551 | 0, $1452 | 0, $1453 | 0) | 0;
$1553 = tempRet0;
$1554 = _i64Add($1552 | 0, $1553 | 0, $1548 | 0, $1549 | 0) | 0;
$1555 = tempRet0;
$1556 = _bitshift64Shl($1548 | 0, $1549 | 0, 21) | 0;
$1557 = tempRet0;
$1558 = _i64Subtract($1542 | 0, $1543 | 0, $1556 | 0, $1557 | 0) | 0;
$1559 = tempRet0;
$1560 = _bitshift64Ashr($1554 | 0, $1555 | 0, 21) | 0;
$1561 = tempRet0;
$1562 = _i64Add($1450 | 0, $1451 | 0, $1560 | 0, $1561 | 0) | 0;
$1563 = tempRet0;
$1564 = _bitshift64Shl($1560 | 0, $1561 | 0, 21) | 0;
$1565 = tempRet0;
$1566 = _i64Subtract($1554 | 0, $1555 | 0, $1564 | 0, $1565 | 0) | 0;
$1567 = tempRet0;
$1568 = _bitshift64Ashr($1562 | 0, $1563 | 0, 21) | 0;
$1569 = tempRet0;
$1570 = _i64Add($1568 | 0, $1569 | 0, $1462 | 0, $1463 | 0) | 0;
$1571 = tempRet0;
$1572 = _bitshift64Shl($1568 | 0, $1569 | 0, 21) | 0;
$1573 = tempRet0;
$1574 = _i64Subtract($1562 | 0, $1563 | 0, $1572 | 0, $1573 | 0) | 0;
$1575 = tempRet0;
$1576 = _bitshift64Ashr($1570 | 0, $1571 | 0, 21) | 0;
$1577 = tempRet0;
$1578 = _i64Add($1458 | 0, $1459 | 0, $1576 | 0, $1577 | 0) | 0;
$1579 = tempRet0;
$1580 = _bitshift64Shl($1576 | 0, $1577 | 0, 21) | 0;
$1581 = tempRet0;
$1582 = _i64Subtract($1570 | 0, $1571 | 0, $1580 | 0, $1581 | 0) | 0;
$1583 = tempRet0;
$1584 = _bitshift64Ashr($1578 | 0, $1579 | 0, 21) | 0;
$1585 = tempRet0;
$1586 = _i64Add($1584 | 0, $1585 | 0, $1472 | 0, $1473 | 0) | 0;
$1587 = tempRet0;
$1588 = _bitshift64Shl($1584 | 0, $1585 | 0, 21) | 0;
$1589 = tempRet0;
$1590 = _i64Subtract($1578 | 0, $1579 | 0, $1588 | 0, $1589 | 0) | 0;
$1591 = tempRet0;
$1592 = _bitshift64Ashr($1586 | 0, $1587 | 0, 21) | 0;
$1593 = tempRet0;
$1594 = _i64Add($1468 | 0, $1469 | 0, $1592 | 0, $1593 | 0) | 0;
$1595 = tempRet0;
$1596 = _bitshift64Shl($1592 | 0, $1593 | 0, 21) | 0;
$1597 = tempRet0;
$1598 = _i64Subtract($1586 | 0, $1587 | 0, $1596 | 0, $1597 | 0) | 0;
$1599 = tempRet0;
$1600 = _bitshift64Ashr($1594 | 0, $1595 | 0, 21) | 0;
$1601 = tempRet0;
$1602 = _i64Add($1600 | 0, $1601 | 0, $1480 | 0, $1481 | 0) | 0;
$1603 = tempRet0;
$1604 = _bitshift64Shl($1600 | 0, $1601 | 0, 21) | 0;
$1605 = tempRet0;
$1606 = _i64Subtract($1594 | 0, $1595 | 0, $1604 | 0, $1605 | 0) | 0;
$1607 = tempRet0;
$1608 = _bitshift64Ashr($1602 | 0, $1603 | 0, 21) | 0;
$1609 = tempRet0;
$1610 = _bitshift64Shl($1608 | 0, $1609 | 0, 21) | 0;
$1611 = tempRet0;
$1612 = _i64Subtract($1602 | 0, $1603 | 0, $1610 | 0, $1611 | 0) | 0;
$1613 = tempRet0;
$1614 = ___muldi3($1608 | 0, $1609 | 0, 666643, 0) | 0;
$1615 = tempRet0;
$1616 = _i64Add($1614 | 0, $1615 | 0, $1506 | 0, $1507 | 0) | 0;
$1617 = tempRet0;
$1618 = ___muldi3($1608 | 0, $1609 | 0, 470296, 0) | 0;
$1619 = tempRet0;
$1620 = _i64Add($1520 | 0, $1521 | 0, $1618 | 0, $1619 | 0) | 0;
$1621 = tempRet0;
$1622 = ___muldi3($1608 | 0, $1609 | 0, 654183, 0) | 0;
$1623 = tempRet0;
$1624 = _i64Add($1532 | 0, $1533 | 0, $1622 | 0, $1623 | 0) | 0;
$1625 = tempRet0;
$1626 = ___muldi3($1608 | 0, $1609 | 0, -997805, -1) | 0;
$1627 = tempRet0;
$1628 = _i64Add($1546 | 0, $1547 | 0, $1626 | 0, $1627 | 0) | 0;
$1629 = tempRet0;
$1630 = ___muldi3($1608 | 0, $1609 | 0, 136657, 0) | 0;
$1631 = tempRet0;
$1632 = _i64Add($1558 | 0, $1559 | 0, $1630 | 0, $1631 | 0) | 0;
$1633 = tempRet0;
$1634 = ___muldi3($1608 | 0, $1609 | 0, -683901, -1) | 0;
$1635 = tempRet0;
$1636 = _i64Add($1566 | 0, $1567 | 0, $1634 | 0, $1635 | 0) | 0;
$1637 = tempRet0;
$1638 = _bitshift64Ashr($1616 | 0, $1617 | 0, 21) | 0;
$1639 = tempRet0;
$1640 = _i64Add($1620 | 0, $1621 | 0, $1638 | 0, $1639 | 0) | 0;
$1641 = tempRet0;
$1642 = _bitshift64Shl($1638 | 0, $1639 | 0, 21) | 0;
$1643 = tempRet0;
$1644 = _i64Subtract($1616 | 0, $1617 | 0, $1642 | 0, $1643 | 0) | 0;
$1645 = tempRet0;
$1646 = _bitshift64Ashr($1640 | 0, $1641 | 0, 21) | 0;
$1647 = tempRet0;
$1648 = _i64Add($1624 | 0, $1625 | 0, $1646 | 0, $1647 | 0) | 0;
$1649 = tempRet0;
$1650 = _bitshift64Shl($1646 | 0, $1647 | 0, 21) | 0;
$1651 = tempRet0;
$1652 = _i64Subtract($1640 | 0, $1641 | 0, $1650 | 0, $1651 | 0) | 0;
$1653 = tempRet0;
$1654 = _bitshift64Ashr($1648 | 0, $1649 | 0, 21) | 0;
$1655 = tempRet0;
$1656 = _i64Add($1628 | 0, $1629 | 0, $1654 | 0, $1655 | 0) | 0;
$1657 = tempRet0;
$1658 = _bitshift64Shl($1654 | 0, $1655 | 0, 21) | 0;
$1659 = tempRet0;
$1660 = _i64Subtract($1648 | 0, $1649 | 0, $1658 | 0, $1659 | 0) | 0;
$1661 = tempRet0;
$1662 = _bitshift64Ashr($1656 | 0, $1657 | 0, 21) | 0;
$1663 = tempRet0;
$1664 = _i64Add($1632 | 0, $1633 | 0, $1662 | 0, $1663 | 0) | 0;
$1665 = tempRet0;
$1666 = _bitshift64Shl($1662 | 0, $1663 | 0, 21) | 0;
$1667 = tempRet0;
$1668 = _i64Subtract($1656 | 0, $1657 | 0, $1666 | 0, $1667 | 0) | 0;
$1669 = tempRet0;
$1670 = _bitshift64Ashr($1664 | 0, $1665 | 0, 21) | 0;
$1671 = tempRet0;
$1672 = _i64Add($1636 | 0, $1637 | 0, $1670 | 0, $1671 | 0) | 0;
$1673 = tempRet0;
$1674 = _bitshift64Shl($1670 | 0, $1671 | 0, 21) | 0;
$1675 = tempRet0;
$1676 = _i64Subtract($1664 | 0, $1665 | 0, $1674 | 0, $1675 | 0) | 0;
$1677 = tempRet0;
$1678 = _bitshift64Ashr($1672 | 0, $1673 | 0, 21) | 0;
$1679 = tempRet0;
$1680 = _i64Add($1678 | 0, $1679 | 0, $1574 | 0, $1575 | 0) | 0;
$1681 = tempRet0;
$1682 = _bitshift64Shl($1678 | 0, $1679 | 0, 21) | 0;
$1683 = tempRet0;
$1684 = _i64Subtract($1672 | 0, $1673 | 0, $1682 | 0, $1683 | 0) | 0;
$1685 = tempRet0;
$1686 = _bitshift64Ashr($1680 | 0, $1681 | 0, 21) | 0;
$1687 = tempRet0;
$1688 = _i64Add($1686 | 0, $1687 | 0, $1582 | 0, $1583 | 0) | 0;
$1689 = tempRet0;
$1690 = _bitshift64Shl($1686 | 0, $1687 | 0, 21) | 0;
$1691 = tempRet0;
$1692 = _i64Subtract($1680 | 0, $1681 | 0, $1690 | 0, $1691 | 0) | 0;
$1693 = tempRet0;
$1694 = _bitshift64Ashr($1688 | 0, $1689 | 0, 21) | 0;
$1695 = tempRet0;
$1696 = _i64Add($1694 | 0, $1695 | 0, $1590 | 0, $1591 | 0) | 0;
$1697 = tempRet0;
$1698 = _bitshift64Shl($1694 | 0, $1695 | 0, 21) | 0;
$1699 = tempRet0;
$1700 = _i64Subtract($1688 | 0, $1689 | 0, $1698 | 0, $1699 | 0) | 0;
$1701 = tempRet0;
$1702 = _bitshift64Ashr($1696 | 0, $1697 | 0, 21) | 0;
$1703 = tempRet0;
$1704 = _i64Add($1702 | 0, $1703 | 0, $1598 | 0, $1599 | 0) | 0;
$1705 = tempRet0;
$1706 = _bitshift64Shl($1702 | 0, $1703 | 0, 21) | 0;
$1707 = tempRet0;
$1708 = _i64Subtract($1696 | 0, $1697 | 0, $1706 | 0, $1707 | 0) | 0;
$1709 = tempRet0;
$1710 = _bitshift64Ashr($1704 | 0, $1705 | 0, 21) | 0;
$1711 = tempRet0;
$1712 = _i64Add($1710 | 0, $1711 | 0, $1606 | 0, $1607 | 0) | 0;
$1713 = tempRet0;
$1714 = _bitshift64Shl($1710 | 0, $1711 | 0, 21) | 0;
$1715 = tempRet0;
$1716 = _i64Subtract($1704 | 0, $1705 | 0, $1714 | 0, $1715 | 0) | 0;
$1717 = tempRet0;
$1718 = _bitshift64Ashr($1712 | 0, $1713 | 0, 21) | 0;
$1719 = tempRet0;
$1720 = _i64Add($1718 | 0, $1719 | 0, $1612 | 0, $1613 | 0) | 0;
$1721 = tempRet0;
$1722 = _bitshift64Shl($1718 | 0, $1719 | 0, 21) | 0;
$1723 = tempRet0;
$1724 = _i64Subtract($1712 | 0, $1713 | 0, $1722 | 0, $1723 | 0) | 0;
$1725 = tempRet0;
$1726 = $1644 & 255;
HEAP8[$s >> 0] = $1726;
$1727 = _bitshift64Lshr($1644 | 0, $1645 | 0, 8) | 0;
$1728 = tempRet0;
$1729 = $1727 & 255;
$1730 = ($s + 1) | 0;
HEAP8[$1730 >> 0] = $1729;
$1731 = _bitshift64Lshr($1644 | 0, $1645 | 0, 16) | 0;
$1732 = tempRet0;
$1733 = _bitshift64Shl($1652 | 0, $1653 | 0, 5) | 0;
$1734 = tempRet0;
$1735 = $1733 | $1731;
$1734 | $1732;
$1736 = $1735 & 255;
$1737 = ($s + 2) | 0;
HEAP8[$1737 >> 0] = $1736;
$1738 = _bitshift64Lshr($1652 | 0, $1653 | 0, 3) | 0;
$1739 = tempRet0;
$1740 = $1738 & 255;
$1741 = ($s + 3) | 0;
HEAP8[$1741 >> 0] = $1740;
$1742 = _bitshift64Lshr($1652 | 0, $1653 | 0, 11) | 0;
$1743 = tempRet0;
$1744 = $1742 & 255;
$1745 = ($s + 4) | 0;
HEAP8[$1745 >> 0] = $1744;
$1746 = _bitshift64Lshr($1652 | 0, $1653 | 0, 19) | 0;
$1747 = tempRet0;
$1748 = _bitshift64Shl($1660 | 0, $1661 | 0, 2) | 0;
$1749 = tempRet0;
$1750 = $1748 | $1746;
$1749 | $1747;
$1751 = $1750 & 255;
$1752 = ($s + 5) | 0;
HEAP8[$1752 >> 0] = $1751;
$1753 = _bitshift64Lshr($1660 | 0, $1661 | 0, 6) | 0;
$1754 = tempRet0;
$1755 = $1753 & 255;
$1756 = ($s + 6) | 0;
HEAP8[$1756 >> 0] = $1755;
$1757 = _bitshift64Lshr($1660 | 0, $1661 | 0, 14) | 0;
$1758 = tempRet0;
$1759 = _bitshift64Shl($1668 | 0, $1669 | 0, 7) | 0;
$1760 = tempRet0;
$1761 = $1759 | $1757;
$1760 | $1758;
$1762 = $1761 & 255;
$1763 = ($s + 7) | 0;
HEAP8[$1763 >> 0] = $1762;
$1764 = _bitshift64Lshr($1668 | 0, $1669 | 0, 1) | 0;
$1765 = tempRet0;
$1766 = $1764 & 255;
$1767 = ($s + 8) | 0;
HEAP8[$1767 >> 0] = $1766;
$1768 = _bitshift64Lshr($1668 | 0, $1669 | 0, 9) | 0;
$1769 = tempRet0;
$1770 = $1768 & 255;
$1771 = ($s + 9) | 0;
HEAP8[$1771 >> 0] = $1770;
$1772 = _bitshift64Lshr($1668 | 0, $1669 | 0, 17) | 0;
$1773 = tempRet0;
$1774 = _bitshift64Shl($1676 | 0, $1677 | 0, 4) | 0;
$1775 = tempRet0;
$1776 = $1774 | $1772;
$1775 | $1773;
$1777 = $1776 & 255;
$1778 = ($s + 10) | 0;
HEAP8[$1778 >> 0] = $1777;
$1779 = _bitshift64Lshr($1676 | 0, $1677 | 0, 4) | 0;
$1780 = tempRet0;
$1781 = $1779 & 255;
$1782 = ($s + 11) | 0;
HEAP8[$1782 >> 0] = $1781;
$1783 = _bitshift64Lshr($1676 | 0, $1677 | 0, 12) | 0;
$1784 = tempRet0;
$1785 = $1783 & 255;
$1786 = ($s + 12) | 0;
HEAP8[$1786 >> 0] = $1785;
$1787 = _bitshift64Lshr($1676 | 0, $1677 | 0, 20) | 0;
$1788 = tempRet0;
$1789 = _bitshift64Shl($1684 | 0, $1685 | 0, 1) | 0;
$1790 = tempRet0;
$1791 = $1789 | $1787;
$1790 | $1788;
$1792 = $1791 & 255;
$1793 = ($s + 13) | 0;
HEAP8[$1793 >> 0] = $1792;
$1794 = _bitshift64Lshr($1684 | 0, $1685 | 0, 7) | 0;
$1795 = tempRet0;
$1796 = $1794 & 255;
$1797 = ($s + 14) | 0;
HEAP8[$1797 >> 0] = $1796;
$1798 = _bitshift64Lshr($1684 | 0, $1685 | 0, 15) | 0;
$1799 = tempRet0;
$1800 = _bitshift64Shl($1692 | 0, $1693 | 0, 6) | 0;
$1801 = tempRet0;
$1802 = $1800 | $1798;
$1801 | $1799;
$1803 = $1802 & 255;
$1804 = ($s + 15) | 0;
HEAP8[$1804 >> 0] = $1803;
$1805 = _bitshift64Lshr($1692 | 0, $1693 | 0, 2) | 0;
$1806 = tempRet0;
$1807 = $1805 & 255;
$1808 = ($s + 16) | 0;
HEAP8[$1808 >> 0] = $1807;
$1809 = _bitshift64Lshr($1692 | 0, $1693 | 0, 10) | 0;
$1810 = tempRet0;
$1811 = $1809 & 255;
$1812 = ($s + 17) | 0;
HEAP8[$1812 >> 0] = $1811;
$1813 = _bitshift64Lshr($1692 | 0, $1693 | 0, 18) | 0;
$1814 = tempRet0;
$1815 = _bitshift64Shl($1700 | 0, $1701 | 0, 3) | 0;
$1816 = tempRet0;
$1817 = $1815 | $1813;
$1816 | $1814;
$1818 = $1817 & 255;
$1819 = ($s + 18) | 0;
HEAP8[$1819 >> 0] = $1818;
$1820 = _bitshift64Lshr($1700 | 0, $1701 | 0, 5) | 0;
$1821 = tempRet0;
$1822 = $1820 & 255;
$1823 = ($s + 19) | 0;
HEAP8[$1823 >> 0] = $1822;
$1824 = _bitshift64Lshr($1700 | 0, $1701 | 0, 13) | 0;
$1825 = tempRet0;
$1826 = $1824 & 255;
$1827 = ($s + 20) | 0;
HEAP8[$1827 >> 0] = $1826;
$1828 = $1708 & 255;
$1829 = ($s + 21) | 0;
HEAP8[$1829 >> 0] = $1828;
$1830 = _bitshift64Lshr($1708 | 0, $1709 | 0, 8) | 0;
$1831 = tempRet0;
$1832 = $1830 & 255;
$1833 = ($s + 22) | 0;
HEAP8[$1833 >> 0] = $1832;
$1834 = _bitshift64Lshr($1708 | 0, $1709 | 0, 16) | 0;
$1835 = tempRet0;
$1836 = _bitshift64Shl($1716 | 0, $1717 | 0, 5) | 0;
$1837 = tempRet0;
$1838 = $1836 | $1834;
$1837 | $1835;
$1839 = $1838 & 255;
$1840 = ($s + 23) | 0;
HEAP8[$1840 >> 0] = $1839;
$1841 = _bitshift64Lshr($1716 | 0, $1717 | 0, 3) | 0;
$1842 = tempRet0;
$1843 = $1841 & 255;
$1844 = ($s + 24) | 0;
HEAP8[$1844 >> 0] = $1843;
$1845 = _bitshift64Lshr($1716 | 0, $1717 | 0, 11) | 0;
$1846 = tempRet0;
$1847 = $1845 & 255;
$1848 = ($s + 25) | 0;
HEAP8[$1848 >> 0] = $1847;
$1849 = _bitshift64Lshr($1716 | 0, $1717 | 0, 19) | 0;
$1850 = tempRet0;
$1851 = _bitshift64Shl($1724 | 0, $1725 | 0, 2) | 0;
$1852 = tempRet0;
$1853 = $1851 | $1849;
$1852 | $1850;
$1854 = $1853 & 255;
$1855 = ($s + 26) | 0;
HEAP8[$1855 >> 0] = $1854;
$1856 = _bitshift64Lshr($1724 | 0, $1725 | 0, 6) | 0;
$1857 = tempRet0;
$1858 = $1856 & 255;
$1859 = ($s + 27) | 0;
HEAP8[$1859 >> 0] = $1858;
$1860 = _bitshift64Lshr($1724 | 0, $1725 | 0, 14) | 0;
$1861 = tempRet0;
$1862 = _bitshift64Shl($1720 | 0, $1721 | 0, 7) | 0;
$1863 = tempRet0;
$1864 = $1860 | $1862;
$1861 | $1863;
$1865 = $1864 & 255;
$1866 = ($s + 28) | 0;
HEAP8[$1866 >> 0] = $1865;
$1867 = _bitshift64Lshr($1720 | 0, $1721 | 0, 1) | 0;
$1868 = tempRet0;
$1869 = $1867 & 255;
$1870 = ($s + 29) | 0;
HEAP8[$1870 >> 0] = $1869;
$1871 = _bitshift64Lshr($1720 | 0, $1721 | 0, 9) | 0;
$1872 = tempRet0;
$1873 = $1871 & 255;
$1874 = ($s + 30) | 0;
HEAP8[$1874 >> 0] = $1873;
$1875 = _bitshift64Lshr($1720 | 0, $1721 | 0, 17) | 0;
$1876 = tempRet0;
$1877 = $1875 & 255;
$1878 = ($s + 31) | 0;
HEAP8[$1878 >> 0] = $1877;
STACKTOP = sp;
return;
}
function _load_347($in) {
$in = $in | 0;
var $0 = 0,
$1 = 0,
$10 = 0,
$11 = 0,
$12 = 0,
$13 = 0,
$14 = 0,
$2 = 0,
$3 = 0,
$4 = 0,
$5 = 0,
$6 = 0,
$7 = 0,
$8 = 0,
$9 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = HEAP8[$in >> 0] | 0;
$1 = $0 & 255;
$2 = ($in + 1) | 0;
$3 = HEAP8[$2 >> 0] | 0;
$4 = $3 & 255;
$5 = _bitshift64Shl($4 | 0, 0, 8) | 0;
$6 = tempRet0;
$7 = $5 | $1;
$8 = ($in + 2) | 0;
$9 = HEAP8[$8 >> 0] | 0;
$10 = $9 & 255;
$11 = _bitshift64Shl($10 | 0, 0, 16) | 0;
$12 = tempRet0;
$13 = $7 | $11;
$14 = $6 | $12;
tempRet0 = $14;
STACKTOP = sp;
return $13 | 0;
}
function _load_448($in) {
$in = $in | 0;
var $0 = 0,
$1 = 0,
$10 = 0,
$11 = 0,
$12 = 0,
$13 = 0,
$14 = 0,
$15 = 0,
$16 = 0,
$17 = 0,
$18 = 0,
$19 = 0,
$2 = 0,
$20 = 0,
$21 = 0,
$3 = 0,
$4 = 0,
$5 = 0,
$6 = 0,
$7 = 0;
var $8 = 0,
$9 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = HEAP8[$in >> 0] | 0;
$1 = $0 & 255;
$2 = ($in + 1) | 0;
$3 = HEAP8[$2 >> 0] | 0;
$4 = $3 & 255;
$5 = _bitshift64Shl($4 | 0, 0, 8) | 0;
$6 = tempRet0;
$7 = $5 | $1;
$8 = ($in + 2) | 0;
$9 = HEAP8[$8 >> 0] | 0;
$10 = $9 & 255;
$11 = _bitshift64Shl($10 | 0, 0, 16) | 0;
$12 = tempRet0;
$13 = $7 | $11;
$14 = $6 | $12;
$15 = ($in + 3) | 0;
$16 = HEAP8[$15 >> 0] | 0;
$17 = $16 & 255;
$18 = _bitshift64Shl($17 | 0, 0, 24) | 0;
$19 = tempRet0;
$20 = $13 | $18;
$21 = $14 | $19;
tempRet0 = $21;
STACKTOP = sp;
return $20 | 0;
}
function _crypto_sign_ed25519_ref10_sc_reduce($s) {
$s = $s | 0;
var $0 = 0,
$1 = 0,
$10 = 0,
$100 = 0,
$1000 = 0,
$1001 = 0,
$1002 = 0,
$1003 = 0,
$1004 = 0,
$1005 = 0,
$1006 = 0,
$1007 = 0,
$1008 = 0,
$1009 = 0,
$101 = 0,
$1010 = 0,
$1011 = 0,
$1012 = 0,
$1013 = 0,
$1014 = 0;
var $1015 = 0,
$1016 = 0,
$1017 = 0,
$1018 = 0,
$1019 = 0,
$102 = 0,
$1020 = 0,
$1021 = 0,
$1022 = 0,
$103 = 0,
$104 = 0,
$105 = 0,
$106 = 0,
$107 = 0,
$108 = 0,
$109 = 0,
$11 = 0,
$110 = 0,
$111 = 0,
$112 = 0;
var $113 = 0,
$114 = 0,
$115 = 0,
$116 = 0,
$117 = 0,
$118 = 0,
$119 = 0,
$12 = 0,
$120 = 0,
$121 = 0,
$122 = 0,
$123 = 0,
$124 = 0,
$125 = 0,
$126 = 0,
$127 = 0,
$128 = 0,
$129 = 0,
$13 = 0,
$130 = 0;
var $131 = 0,
$132 = 0,
$133 = 0,
$134 = 0,
$135 = 0,
$136 = 0,
$137 = 0,
$138 = 0,
$139 = 0,
$14 = 0,
$140 = 0,
$141 = 0,
$142 = 0,
$143 = 0,
$144 = 0,
$145 = 0,
$146 = 0,
$147 = 0,
$148 = 0,
$149 = 0;
var $15 = 0,
$150 = 0,
$151 = 0,
$152 = 0,
$153 = 0,
$154 = 0,
$155 = 0,
$156 = 0,
$157 = 0,
$158 = 0,
$159 = 0,
$16 = 0,
$160 = 0,
$161 = 0,
$162 = 0,
$163 = 0,
$164 = 0,
$165 = 0,
$166 = 0,
$167 = 0;
var $168 = 0,
$169 = 0,
$17 = 0,
$170 = 0,
$171 = 0,
$172 = 0,
$173 = 0,
$174 = 0,
$175 = 0,
$176 = 0,
$177 = 0,
$178 = 0,
$179 = 0,
$18 = 0,
$180 = 0,
$181 = 0,
$182 = 0,
$183 = 0,
$184 = 0,
$185 = 0;
var $186 = 0,
$187 = 0,
$188 = 0,
$189 = 0,
$19 = 0,
$190 = 0,
$191 = 0,
$192 = 0,
$193 = 0,
$194 = 0,
$195 = 0,
$196 = 0,
$197 = 0,
$198 = 0,
$199 = 0,
$2 = 0,
$20 = 0,
$200 = 0,
$201 = 0,
$202 = 0;
var $203 = 0,
$204 = 0,
$205 = 0,
$206 = 0,
$207 = 0,
$208 = 0,
$209 = 0,
$21 = 0,
$210 = 0,
$211 = 0,
$212 = 0,
$213 = 0,
$214 = 0,
$215 = 0,
$216 = 0,
$217 = 0,
$218 = 0,
$219 = 0,
$22 = 0,
$220 = 0;
var $221 = 0,
$222 = 0,
$223 = 0,
$224 = 0,
$225 = 0,
$226 = 0,
$227 = 0,
$228 = 0,
$229 = 0,
$23 = 0,
$230 = 0,
$231 = 0,
$232 = 0,
$233 = 0,
$234 = 0,
$235 = 0,
$236 = 0,
$237 = 0,
$238 = 0,
$239 = 0;
var $24 = 0,
$240 = 0,
$241 = 0,
$242 = 0,
$243 = 0,
$244 = 0,
$245 = 0,
$246 = 0,
$247 = 0,
$248 = 0,
$249 = 0,
$25 = 0,
$250 = 0,
$251 = 0,
$252 = 0,
$253 = 0,
$254 = 0,
$255 = 0,
$256 = 0,
$257 = 0;
var $258 = 0,
$259 = 0,
$26 = 0,
$260 = 0,
$261 = 0,
$262 = 0,
$263 = 0,
$264 = 0,
$265 = 0,
$266 = 0,
$267 = 0,
$268 = 0,
$269 = 0,
$27 = 0,
$270 = 0,
$271 = 0,
$272 = 0,
$273 = 0,
$274 = 0,
$275 = 0;
var $276 = 0,
$277 = 0,
$278 = 0,
$279 = 0,
$28 = 0,
$280 = 0,
$281 = 0,
$282 = 0,
$283 = 0,
$284 = 0,
$285 = 0,
$286 = 0,
$287 = 0,
$288 = 0,
$289 = 0,
$29 = 0,
$290 = 0,
$291 = 0,
$292 = 0,
$293 = 0;
var $294 = 0,
$295 = 0,
$296 = 0,
$297 = 0,
$298 = 0,
$299 = 0,
$3 = 0,
$30 = 0,
$300 = 0,
$301 = 0,
$302 = 0,
$303 = 0,
$304 = 0,
$305 = 0,
$306 = 0,
$307 = 0,
$308 = 0,
$309 = 0,
$31 = 0,
$310 = 0;
var $311 = 0,
$312 = 0,
$313 = 0,
$314 = 0,
$315 = 0,
$316 = 0,
$317 = 0,
$318 = 0,
$319 = 0,
$32 = 0,
$320 = 0,
$321 = 0,
$322 = 0,
$323 = 0,
$324 = 0,
$325 = 0,
$326 = 0,
$327 = 0,
$328 = 0,
$329 = 0;
var $33 = 0,
$330 = 0,
$331 = 0,
$332 = 0,
$333 = 0,
$334 = 0,
$335 = 0,
$336 = 0,
$337 = 0,
$338 = 0,
$339 = 0,
$34 = 0,
$340 = 0,
$341 = 0,
$342 = 0,
$343 = 0,
$344 = 0,
$345 = 0,
$346 = 0,
$347 = 0;
var $348 = 0,
$349 = 0,
$35 = 0,
$350 = 0,
$351 = 0,
$352 = 0,
$353 = 0,
$354 = 0,
$355 = 0,
$356 = 0,
$357 = 0,
$358 = 0,
$359 = 0,
$36 = 0,
$360 = 0,
$361 = 0,
$362 = 0,
$363 = 0,
$364 = 0,
$365 = 0;
var $366 = 0,
$367 = 0,
$368 = 0,
$369 = 0,
$37 = 0,
$370 = 0,
$371 = 0,
$372 = 0,
$373 = 0,
$374 = 0,
$375 = 0,
$376 = 0,
$377 = 0,
$378 = 0,
$379 = 0,
$38 = 0,
$380 = 0,
$381 = 0,
$382 = 0,
$383 = 0;
var $384 = 0,
$385 = 0,
$386 = 0,
$387 = 0,
$388 = 0,
$389 = 0,
$39 = 0,
$390 = 0,
$391 = 0,
$392 = 0,
$393 = 0,
$394 = 0,
$395 = 0,
$396 = 0,
$397 = 0,
$398 = 0,
$399 = 0,
$4 = 0,
$40 = 0,
$400 = 0;
var $401 = 0,
$402 = 0,
$403 = 0,
$404 = 0,
$405 = 0,
$406 = 0,
$407 = 0,
$408 = 0,
$409 = 0,
$41 = 0,
$410 = 0,
$411 = 0,
$412 = 0,
$413 = 0,
$414 = 0,
$415 = 0,
$416 = 0,
$417 = 0,
$418 = 0,
$419 = 0;
var $42 = 0,
$420 = 0,
$421 = 0,
$422 = 0,
$423 = 0,
$424 = 0,
$425 = 0,
$426 = 0,
$427 = 0,
$428 = 0,
$429 = 0,
$43 = 0,
$430 = 0,
$431 = 0,
$432 = 0,
$433 = 0,
$434 = 0,
$435 = 0,
$436 = 0,
$437 = 0;
var $438 = 0,
$439 = 0,
$44 = 0,
$440 = 0,
$441 = 0,
$442 = 0,
$443 = 0,
$444 = 0,
$445 = 0,
$446 = 0,
$447 = 0,
$448 = 0,
$449 = 0,
$45 = 0,
$450 = 0,
$451 = 0,
$452 = 0,
$453 = 0,
$454 = 0,
$455 = 0;
var $456 = 0,
$457 = 0,
$458 = 0,
$459 = 0,
$46 = 0,
$460 = 0,
$461 = 0,
$462 = 0,
$463 = 0,
$464 = 0,
$465 = 0,
$466 = 0,
$467 = 0,
$468 = 0,
$469 = 0,
$47 = 0,
$470 = 0,
$471 = 0,
$472 = 0,
$473 = 0;
var $474 = 0,
$475 = 0,
$476 = 0,
$477 = 0,
$478 = 0,
$479 = 0,
$48 = 0,
$480 = 0,
$481 = 0,
$482 = 0,
$483 = 0,
$484 = 0,
$485 = 0,
$486 = 0,
$487 = 0,
$488 = 0,
$489 = 0,
$49 = 0,
$490 = 0,
$491 = 0;
var $492 = 0,
$493 = 0,
$494 = 0,
$495 = 0,
$496 = 0,
$497 = 0,
$498 = 0,
$499 = 0,
$5 = 0,
$50 = 0,
$500 = 0,
$501 = 0,
$502 = 0,
$503 = 0,
$504 = 0,
$505 = 0,
$506 = 0,
$507 = 0,
$508 = 0,
$509 = 0;
var $51 = 0,
$510 = 0,
$511 = 0,
$512 = 0,
$513 = 0,
$514 = 0,
$515 = 0,
$516 = 0,
$517 = 0,
$518 = 0,
$519 = 0,
$52 = 0,
$520 = 0,
$521 = 0,
$522 = 0,
$523 = 0,
$524 = 0,
$525 = 0,
$526 = 0,
$527 = 0;
var $528 = 0,
$529 = 0,
$53 = 0,
$530 = 0,
$531 = 0,
$532 = 0,
$533 = 0,
$534 = 0,
$535 = 0,
$536 = 0,
$537 = 0,
$538 = 0,
$539 = 0,
$54 = 0,
$540 = 0,
$541 = 0,
$542 = 0,
$543 = 0,
$544 = 0,
$545 = 0;
var $546 = 0,
$547 = 0,
$548 = 0,
$549 = 0,
$55 = 0,
$550 = 0,
$551 = 0,
$552 = 0,
$553 = 0,
$554 = 0,
$555 = 0,
$556 = 0,
$557 = 0,
$558 = 0,
$559 = 0,
$56 = 0,
$560 = 0,
$561 = 0,
$562 = 0,
$563 = 0;
var $564 = 0,
$565 = 0,
$566 = 0,
$567 = 0,
$568 = 0,
$569 = 0,
$57 = 0,
$570 = 0,
$571 = 0,
$572 = 0,
$573 = 0,
$574 = 0,
$575 = 0,
$576 = 0,
$577 = 0,
$578 = 0,
$579 = 0,
$58 = 0,
$580 = 0,
$581 = 0;
var $582 = 0,
$583 = 0,
$584 = 0,
$585 = 0,
$586 = 0,
$587 = 0,
$588 = 0,
$589 = 0,
$59 = 0,
$590 = 0,
$591 = 0,
$592 = 0,
$593 = 0,
$594 = 0,
$595 = 0,
$596 = 0,
$597 = 0,
$598 = 0,
$599 = 0,
$6 = 0;
var $60 = 0,
$600 = 0,
$601 = 0,
$602 = 0,
$603 = 0,
$604 = 0,
$605 = 0,
$606 = 0,
$607 = 0,
$608 = 0,
$609 = 0,
$61 = 0,
$610 = 0,
$611 = 0,
$612 = 0,
$613 = 0,
$614 = 0,
$615 = 0,
$616 = 0,
$617 = 0;
var $618 = 0,
$619 = 0,
$62 = 0,
$620 = 0,
$621 = 0,
$622 = 0,
$623 = 0,
$624 = 0,
$625 = 0,
$626 = 0,
$627 = 0,
$628 = 0,
$629 = 0,
$63 = 0,
$630 = 0,
$631 = 0,
$632 = 0,
$633 = 0,
$634 = 0,
$635 = 0;
var $636 = 0,
$637 = 0,
$638 = 0,
$639 = 0,
$64 = 0,
$640 = 0,
$641 = 0,
$642 = 0,
$643 = 0,
$644 = 0,
$645 = 0,
$646 = 0,
$647 = 0,
$648 = 0,
$649 = 0,
$65 = 0,
$650 = 0,
$651 = 0,
$652 = 0,
$653 = 0;
var $654 = 0,
$655 = 0,
$656 = 0,
$657 = 0,
$658 = 0,
$659 = 0,
$66 = 0,
$660 = 0,
$661 = 0,
$662 = 0,
$663 = 0,
$664 = 0,
$665 = 0,
$666 = 0,
$667 = 0,
$668 = 0,
$669 = 0,
$67 = 0,
$670 = 0,
$671 = 0;
var $672 = 0,
$673 = 0,
$674 = 0,
$675 = 0,
$676 = 0,
$677 = 0,
$678 = 0,
$679 = 0,
$68 = 0,
$680 = 0,
$681 = 0,
$682 = 0,
$683 = 0,
$684 = 0,
$685 = 0,
$686 = 0,
$687 = 0,
$688 = 0,
$689 = 0,
$69 = 0;
var $690 = 0,
$691 = 0,
$692 = 0,
$693 = 0,
$694 = 0,
$695 = 0,
$696 = 0,
$697 = 0,
$698 = 0,
$699 = 0,
$7 = 0,
$70 = 0,
$700 = 0,
$701 = 0,
$702 = 0,
$703 = 0,
$704 = 0,
$705 = 0,
$706 = 0,
$707 = 0;
var $708 = 0,
$709 = 0,
$71 = 0,
$710 = 0,
$711 = 0,
$712 = 0,
$713 = 0,
$714 = 0,
$715 = 0,
$716 = 0,
$717 = 0,
$718 = 0,
$719 = 0,
$72 = 0,
$720 = 0,
$721 = 0,
$722 = 0,
$723 = 0,
$724 = 0,
$725 = 0;
var $726 = 0,
$727 = 0,
$728 = 0,
$729 = 0,
$73 = 0,
$730 = 0,
$731 = 0,
$732 = 0,
$733 = 0,
$734 = 0,
$735 = 0,
$736 = 0,
$737 = 0,
$738 = 0,
$739 = 0,
$74 = 0,
$740 = 0,
$741 = 0,
$742 = 0,
$743 = 0;
var $744 = 0,
$745 = 0,
$746 = 0,
$747 = 0,
$748 = 0,
$749 = 0,
$75 = 0,
$750 = 0,
$751 = 0,
$752 = 0,
$753 = 0,
$754 = 0,
$755 = 0,
$756 = 0,
$757 = 0,
$758 = 0,
$759 = 0,
$76 = 0,
$760 = 0,
$761 = 0;
var $762 = 0,
$763 = 0,
$764 = 0,
$765 = 0,
$766 = 0,
$767 = 0,
$768 = 0,
$769 = 0,
$77 = 0,
$770 = 0,
$771 = 0,
$772 = 0,
$773 = 0,
$774 = 0,
$775 = 0,
$776 = 0,
$777 = 0,
$778 = 0,
$779 = 0,
$78 = 0;
var $780 = 0,
$781 = 0,
$782 = 0,
$783 = 0,
$784 = 0,
$785 = 0,
$786 = 0,
$787 = 0,
$788 = 0,
$789 = 0,
$79 = 0,
$790 = 0,
$791 = 0,
$792 = 0,
$793 = 0,
$794 = 0,
$795 = 0,
$796 = 0,
$797 = 0,
$798 = 0;
var $799 = 0,
$8 = 0,
$80 = 0,
$800 = 0,
$801 = 0,
$802 = 0,
$803 = 0,
$804 = 0,
$805 = 0,
$806 = 0,
$807 = 0,
$808 = 0,
$809 = 0,
$81 = 0,
$810 = 0,
$811 = 0,
$812 = 0,
$813 = 0,
$814 = 0,
$815 = 0;
var $816 = 0,
$817 = 0,
$818 = 0,
$819 = 0,
$82 = 0,
$820 = 0,
$821 = 0,
$822 = 0,
$823 = 0,
$824 = 0,
$825 = 0,
$826 = 0,
$827 = 0,
$828 = 0,
$829 = 0,
$83 = 0,
$830 = 0,
$831 = 0,
$832 = 0,
$833 = 0;
var $834 = 0,
$835 = 0,
$836 = 0,
$837 = 0,
$838 = 0,
$839 = 0,
$84 = 0,
$840 = 0,
$841 = 0,
$842 = 0,
$843 = 0,
$844 = 0,
$845 = 0,
$846 = 0,
$847 = 0,
$848 = 0,
$849 = 0,
$85 = 0,
$850 = 0,
$851 = 0;
var $852 = 0,
$853 = 0,
$854 = 0,
$855 = 0,
$856 = 0,
$857 = 0,
$858 = 0,
$859 = 0,
$86 = 0,
$860 = 0,
$861 = 0,
$862 = 0,
$863 = 0,
$864 = 0,
$865 = 0,
$866 = 0,
$867 = 0,
$868 = 0,
$869 = 0,
$87 = 0;
var $870 = 0,
$871 = 0,
$872 = 0,
$873 = 0,
$874 = 0,
$875 = 0,
$876 = 0,
$877 = 0,
$878 = 0,
$879 = 0,
$88 = 0,
$880 = 0,
$881 = 0,
$882 = 0,
$883 = 0,
$884 = 0,
$885 = 0,
$886 = 0,
$887 = 0,
$888 = 0;
var $889 = 0,
$89 = 0,
$890 = 0,
$891 = 0,
$892 = 0,
$893 = 0,
$894 = 0,
$895 = 0,
$896 = 0,
$897 = 0,
$898 = 0,
$899 = 0,
$9 = 0,
$90 = 0,
$900 = 0,
$901 = 0,
$902 = 0,
$903 = 0,
$904 = 0,
$905 = 0;
var $906 = 0,
$907 = 0,
$908 = 0,
$909 = 0,
$91 = 0,
$910 = 0,
$911 = 0,
$912 = 0,
$913 = 0,
$914 = 0,
$915 = 0,
$916 = 0,
$917 = 0,
$918 = 0,
$919 = 0,
$92 = 0,
$920 = 0,
$921 = 0,
$922 = 0,
$923 = 0;
var $924 = 0,
$925 = 0,
$926 = 0,
$927 = 0,
$928 = 0,
$929 = 0,
$93 = 0,
$930 = 0,
$931 = 0,
$932 = 0,
$933 = 0,
$934 = 0,
$935 = 0,
$936 = 0,
$937 = 0,
$938 = 0,
$939 = 0,
$94 = 0,
$940 = 0,
$941 = 0;
var $942 = 0,
$943 = 0,
$944 = 0,
$945 = 0,
$946 = 0,
$947 = 0,
$948 = 0,
$949 = 0,
$95 = 0,
$950 = 0,
$951 = 0,
$952 = 0,
$953 = 0,
$954 = 0,
$955 = 0,
$956 = 0,
$957 = 0,
$958 = 0,
$959 = 0,
$96 = 0;
var $960 = 0,
$961 = 0,
$962 = 0,
$963 = 0,
$964 = 0,
$965 = 0,
$966 = 0,
$967 = 0,
$968 = 0,
$969 = 0,
$97 = 0,
$970 = 0,
$971 = 0,
$972 = 0,
$973 = 0,
$974 = 0,
$975 = 0,
$976 = 0,
$977 = 0,
$978 = 0;
var $979 = 0,
$98 = 0,
$980 = 0,
$981 = 0,
$982 = 0,
$983 = 0,
$984 = 0,
$985 = 0,
$986 = 0,
$987 = 0,
$988 = 0,
$989 = 0,
$99 = 0,
$990 = 0,
$991 = 0,
$992 = 0,
$993 = 0,
$994 = 0,
$995 = 0,
$996 = 0;
var $997 = 0,
$998 = 0,
$999 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = _load_351($s) | 0;
$1 = tempRet0;
$2 = $0 & 2097151;
$3 = ($s + 2) | 0;
$4 = _load_452($3) | 0;
$5 = tempRet0;
$6 = _bitshift64Lshr($4 | 0, $5 | 0, 5) | 0;
$7 = tempRet0;
$8 = $6 & 2097151;
$9 = ($s + 5) | 0;
$10 = _load_351($9) | 0;
$11 = tempRet0;
$12 = _bitshift64Lshr($10 | 0, $11 | 0, 2) | 0;
$13 = tempRet0;
$14 = $12 & 2097151;
$15 = ($s + 7) | 0;
$16 = _load_452($15) | 0;
$17 = tempRet0;
$18 = _bitshift64Lshr($16 | 0, $17 | 0, 7) | 0;
$19 = tempRet0;
$20 = $18 & 2097151;
$21 = ($s + 10) | 0;
$22 = _load_452($21) | 0;
$23 = tempRet0;
$24 = _bitshift64Lshr($22 | 0, $23 | 0, 4) | 0;
$25 = tempRet0;
$26 = $24 & 2097151;
$27 = ($s + 13) | 0;
$28 = _load_351($27) | 0;
$29 = tempRet0;
$30 = _bitshift64Lshr($28 | 0, $29 | 0, 1) | 0;
$31 = tempRet0;
$32 = $30 & 2097151;
$33 = ($s + 15) | 0;
$34 = _load_452($33) | 0;
$35 = tempRet0;
$36 = _bitshift64Lshr($34 | 0, $35 | 0, 6) | 0;
$37 = tempRet0;
$38 = $36 & 2097151;
$39 = ($s + 18) | 0;
$40 = _load_351($39) | 0;
$41 = tempRet0;
$42 = _bitshift64Lshr($40 | 0, $41 | 0, 3) | 0;
$43 = tempRet0;
$44 = $42 & 2097151;
$45 = ($s + 21) | 0;
$46 = _load_351($45) | 0;
$47 = tempRet0;
$48 = $46 & 2097151;
$49 = ($s + 23) | 0;
$50 = _load_452($49) | 0;
$51 = tempRet0;
$52 = _bitshift64Lshr($50 | 0, $51 | 0, 5) | 0;
$53 = tempRet0;
$54 = $52 & 2097151;
$55 = ($s + 26) | 0;
$56 = _load_351($55) | 0;
$57 = tempRet0;
$58 = _bitshift64Lshr($56 | 0, $57 | 0, 2) | 0;
$59 = tempRet0;
$60 = $58 & 2097151;
$61 = ($s + 28) | 0;
$62 = _load_452($61) | 0;
$63 = tempRet0;
$64 = _bitshift64Lshr($62 | 0, $63 | 0, 7) | 0;
$65 = tempRet0;
$66 = $64 & 2097151;
$67 = ($s + 31) | 0;
$68 = _load_452($67) | 0;
$69 = tempRet0;
$70 = _bitshift64Lshr($68 | 0, $69 | 0, 4) | 0;
$71 = tempRet0;
$72 = $70 & 2097151;
$73 = ($s + 34) | 0;
$74 = _load_351($73) | 0;
$75 = tempRet0;
$76 = _bitshift64Lshr($74 | 0, $75 | 0, 1) | 0;
$77 = tempRet0;
$78 = $76 & 2097151;
$79 = ($s + 36) | 0;
$80 = _load_452($79) | 0;
$81 = tempRet0;
$82 = _bitshift64Lshr($80 | 0, $81 | 0, 6) | 0;
$83 = tempRet0;
$84 = $82 & 2097151;
$85 = ($s + 39) | 0;
$86 = _load_351($85) | 0;
$87 = tempRet0;
$88 = _bitshift64Lshr($86 | 0, $87 | 0, 3) | 0;
$89 = tempRet0;
$90 = $88 & 2097151;
$91 = ($s + 42) | 0;
$92 = _load_351($91) | 0;
$93 = tempRet0;
$94 = $92 & 2097151;
$95 = ($s + 44) | 0;
$96 = _load_452($95) | 0;
$97 = tempRet0;
$98 = _bitshift64Lshr($96 | 0, $97 | 0, 5) | 0;
$99 = tempRet0;
$100 = $98 & 2097151;
$101 = ($s + 47) | 0;
$102 = _load_351($101) | 0;
$103 = tempRet0;
$104 = _bitshift64Lshr($102 | 0, $103 | 0, 2) | 0;
$105 = tempRet0;
$106 = $104 & 2097151;
$107 = ($s + 49) | 0;
$108 = _load_452($107) | 0;
$109 = tempRet0;
$110 = _bitshift64Lshr($108 | 0, $109 | 0, 7) | 0;
$111 = tempRet0;
$112 = $110 & 2097151;
$113 = ($s + 52) | 0;
$114 = _load_452($113) | 0;
$115 = tempRet0;
$116 = _bitshift64Lshr($114 | 0, $115 | 0, 4) | 0;
$117 = tempRet0;
$118 = $116 & 2097151;
$119 = ($s + 55) | 0;
$120 = _load_351($119) | 0;
$121 = tempRet0;
$122 = _bitshift64Lshr($120 | 0, $121 | 0, 1) | 0;
$123 = tempRet0;
$124 = $122 & 2097151;
$125 = ($s + 57) | 0;
$126 = _load_452($125) | 0;
$127 = tempRet0;
$128 = _bitshift64Lshr($126 | 0, $127 | 0, 6) | 0;
$129 = tempRet0;
$130 = $128 & 2097151;
$131 = ($s + 60) | 0;
$132 = _load_452($131) | 0;
$133 = tempRet0;
$134 = _bitshift64Lshr($132 | 0, $133 | 0, 3) | 0;
$135 = tempRet0;
$136 = ___muldi3($134 | 0, $135 | 0, 666643, 0) | 0;
$137 = tempRet0;
$138 = ___muldi3($134 | 0, $135 | 0, 470296, 0) | 0;
$139 = tempRet0;
$140 = ___muldi3($134 | 0, $135 | 0, 654183, 0) | 0;
$141 = tempRet0;
$142 = ___muldi3($134 | 0, $135 | 0, -997805, -1) | 0;
$143 = tempRet0;
$144 = ___muldi3($134 | 0, $135 | 0, 136657, 0) | 0;
$145 = tempRet0;
$146 = _i64Add($144 | 0, $145 | 0, $90 | 0, 0) | 0;
$147 = tempRet0;
$148 = ___muldi3($134 | 0, $135 | 0, -683901, -1) | 0;
$149 = tempRet0;
$150 = _i64Add($148 | 0, $149 | 0, $94 | 0, 0) | 0;
$151 = tempRet0;
$152 = ___muldi3($130 | 0, 0, 666643, 0) | 0;
$153 = tempRet0;
$154 = ___muldi3($130 | 0, 0, 470296, 0) | 0;
$155 = tempRet0;
$156 = ___muldi3($130 | 0, 0, 654183, 0) | 0;
$157 = tempRet0;
$158 = ___muldi3($130 | 0, 0, -997805, -1) | 0;
$159 = tempRet0;
$160 = ___muldi3($130 | 0, 0, 136657, 0) | 0;
$161 = tempRet0;
$162 = ___muldi3($130 | 0, 0, -683901, -1) | 0;
$163 = tempRet0;
$164 = _i64Add($146 | 0, $147 | 0, $162 | 0, $163 | 0) | 0;
$165 = tempRet0;
$166 = ___muldi3($124 | 0, 0, 666643, 0) | 0;
$167 = tempRet0;
$168 = ___muldi3($124 | 0, 0, 470296, 0) | 0;
$169 = tempRet0;
$170 = ___muldi3($124 | 0, 0, 654183, 0) | 0;
$171 = tempRet0;
$172 = ___muldi3($124 | 0, 0, -997805, -1) | 0;
$173 = tempRet0;
$174 = ___muldi3($124 | 0, 0, 136657, 0) | 0;
$175 = tempRet0;
$176 = ___muldi3($124 | 0, 0, -683901, -1) | 0;
$177 = tempRet0;
$178 = _i64Add($176 | 0, $177 | 0, $84 | 0, 0) | 0;
$179 = tempRet0;
$180 = _i64Add($178 | 0, $179 | 0, $142 | 0, $143 | 0) | 0;
$181 = tempRet0;
$182 = _i64Add($180 | 0, $181 | 0, $160 | 0, $161 | 0) | 0;
$183 = tempRet0;
$184 = ___muldi3($118 | 0, 0, 666643, 0) | 0;
$185 = tempRet0;
$186 = ___muldi3($118 | 0, 0, 470296, 0) | 0;
$187 = tempRet0;
$188 = ___muldi3($118 | 0, 0, 654183, 0) | 0;
$189 = tempRet0;
$190 = ___muldi3($118 | 0, 0, -997805, -1) | 0;
$191 = tempRet0;
$192 = ___muldi3($118 | 0, 0, 136657, 0) | 0;
$193 = tempRet0;
$194 = ___muldi3($118 | 0, 0, -683901, -1) | 0;
$195 = tempRet0;
$196 = ___muldi3($112 | 0, 0, 666643, 0) | 0;
$197 = tempRet0;
$198 = ___muldi3($112 | 0, 0, 470296, 0) | 0;
$199 = tempRet0;
$200 = ___muldi3($112 | 0, 0, 654183, 0) | 0;
$201 = tempRet0;
$202 = ___muldi3($112 | 0, 0, -997805, -1) | 0;
$203 = tempRet0;
$204 = ___muldi3($112 | 0, 0, 136657, 0) | 0;
$205 = tempRet0;
$206 = ___muldi3($112 | 0, 0, -683901, -1) | 0;
$207 = tempRet0;
$208 = _i64Add($206 | 0, $207 | 0, $72 | 0, 0) | 0;
$209 = tempRet0;
$210 = _i64Add($208 | 0, $209 | 0, $192 | 0, $193 | 0) | 0;
$211 = tempRet0;
$212 = _i64Add($210 | 0, $211 | 0, $172 | 0, $173 | 0) | 0;
$213 = tempRet0;
$214 = _i64Add($212 | 0, $213 | 0, $138 | 0, $139 | 0) | 0;
$215 = tempRet0;
$216 = _i64Add($214 | 0, $215 | 0, $156 | 0, $157 | 0) | 0;
$217 = tempRet0;
$218 = ___muldi3($106 | 0, 0, 666643, 0) | 0;
$219 = tempRet0;
$220 = _i64Add($218 | 0, $219 | 0, $38 | 0, 0) | 0;
$221 = tempRet0;
$222 = ___muldi3($106 | 0, 0, 470296, 0) | 0;
$223 = tempRet0;
$224 = ___muldi3($106 | 0, 0, 654183, 0) | 0;
$225 = tempRet0;
$226 = _i64Add($224 | 0, $225 | 0, $48 | 0, 0) | 0;
$227 = tempRet0;
$228 = _i64Add($226 | 0, $227 | 0, $198 | 0, $199 | 0) | 0;
$229 = tempRet0;
$230 = _i64Add($228 | 0, $229 | 0, $184 | 0, $185 | 0) | 0;
$231 = tempRet0;
$232 = ___muldi3($106 | 0, 0, -997805, -1) | 0;
$233 = tempRet0;
$234 = ___muldi3($106 | 0, 0, 136657, 0) | 0;
$235 = tempRet0;
$236 = _i64Add($234 | 0, $235 | 0, $60 | 0, 0) | 0;
$237 = tempRet0;
$238 = _i64Add($236 | 0, $237 | 0, $202 | 0, $203 | 0) | 0;
$239 = tempRet0;
$240 = _i64Add($238 | 0, $239 | 0, $188 | 0, $189 | 0) | 0;
$241 = tempRet0;
$242 = _i64Add($240 | 0, $241 | 0, $168 | 0, $169 | 0) | 0;
$243 = tempRet0;
$244 = _i64Add($242 | 0, $243 | 0, $152 | 0, $153 | 0) | 0;
$245 = tempRet0;
$246 = ___muldi3($106 | 0, 0, -683901, -1) | 0;
$247 = tempRet0;
$248 = _i64Add($220 | 0, $221 | 0, 1048576, 0) | 0;
$249 = tempRet0;
$250 = _bitshift64Lshr($248 | 0, $249 | 0, 21) | 0;
$251 = tempRet0;
$252 = _i64Add($222 | 0, $223 | 0, $44 | 0, 0) | 0;
$253 = tempRet0;
$254 = _i64Add($252 | 0, $253 | 0, $196 | 0, $197 | 0) | 0;
$255 = tempRet0;
$256 = _i64Add($254 | 0, $255 | 0, $250 | 0, $251 | 0) | 0;
$257 = tempRet0;
$258 = _bitshift64Shl($250 | 0, $251 | 0, 21) | 0;
$259 = tempRet0;
$260 = _i64Subtract($220 | 0, $221 | 0, $258 | 0, $259 | 0) | 0;
$261 = tempRet0;
$262 = _i64Add($230 | 0, $231 | 0, 1048576, 0) | 0;
$263 = tempRet0;
$264 = _bitshift64Lshr($262 | 0, $263 | 0, 21) | 0;
$265 = tempRet0;
$266 = _i64Add($232 | 0, $233 | 0, $54 | 0, 0) | 0;
$267 = tempRet0;
$268 = _i64Add($266 | 0, $267 | 0, $200 | 0, $201 | 0) | 0;
$269 = tempRet0;
$270 = _i64Add($268 | 0, $269 | 0, $186 | 0, $187 | 0) | 0;
$271 = tempRet0;
$272 = _i64Add($270 | 0, $271 | 0, $166 | 0, $167 | 0) | 0;
$273 = tempRet0;
$274 = _i64Add($272 | 0, $273 | 0, $264 | 0, $265 | 0) | 0;
$275 = tempRet0;
$276 = _bitshift64Shl($264 | 0, $265 | 0, 21) | 0;
$277 = tempRet0;
$278 = _i64Subtract($230 | 0, $231 | 0, $276 | 0, $277 | 0) | 0;
$279 = tempRet0;
$280 = _i64Add($244 | 0, $245 | 0, 1048576, 0) | 0;
$281 = tempRet0;
$282 = _bitshift64Ashr($280 | 0, $281 | 0, 21) | 0;
$283 = tempRet0;
$284 = _i64Add($246 | 0, $247 | 0, $66 | 0, 0) | 0;
$285 = tempRet0;
$286 = _i64Add($284 | 0, $285 | 0, $204 | 0, $205 | 0) | 0;
$287 = tempRet0;
$288 = _i64Add($286 | 0, $287 | 0, $190 | 0, $191 | 0) | 0;
$289 = tempRet0;
$290 = _i64Add($288 | 0, $289 | 0, $170 | 0, $171 | 0) | 0;
$291 = tempRet0;
$292 = _i64Add($290 | 0, $291 | 0, $136 | 0, $137 | 0) | 0;
$293 = tempRet0;
$294 = _i64Add($292 | 0, $293 | 0, $154 | 0, $155 | 0) | 0;
$295 = tempRet0;
$296 = _i64Add($294 | 0, $295 | 0, $282 | 0, $283 | 0) | 0;
$297 = tempRet0;
$298 = _bitshift64Shl($282 | 0, $283 | 0, 21) | 0;
$299 = tempRet0;
$300 = _i64Subtract($244 | 0, $245 | 0, $298 | 0, $299 | 0) | 0;
$301 = tempRet0;
$302 = _i64Add($216 | 0, $217 | 0, 1048576, 0) | 0;
$303 = tempRet0;
$304 = _bitshift64Ashr($302 | 0, $303 | 0, 21) | 0;
$305 = tempRet0;
$306 = _i64Add($194 | 0, $195 | 0, $78 | 0, 0) | 0;
$307 = tempRet0;
$308 = _i64Add($306 | 0, $307 | 0, $174 | 0, $175 | 0) | 0;
$309 = tempRet0;
$310 = _i64Add($308 | 0, $309 | 0, $140 | 0, $141 | 0) | 0;
$311 = tempRet0;
$312 = _i64Add($310 | 0, $311 | 0, $158 | 0, $159 | 0) | 0;
$313 = tempRet0;
$314 = _i64Add($312 | 0, $313 | 0, $304 | 0, $305 | 0) | 0;
$315 = tempRet0;
$316 = _bitshift64Shl($304 | 0, $305 | 0, 21) | 0;
$317 = tempRet0;
$318 = _i64Subtract($216 | 0, $217 | 0, $316 | 0, $317 | 0) | 0;
$319 = tempRet0;
$320 = _i64Add($182 | 0, $183 | 0, 1048576, 0) | 0;
$321 = tempRet0;
$322 = _bitshift64Ashr($320 | 0, $321 | 0, 21) | 0;
$323 = tempRet0;
$324 = _i64Add($164 | 0, $165 | 0, $322 | 0, $323 | 0) | 0;
$325 = tempRet0;
$326 = _bitshift64Shl($322 | 0, $323 | 0, 21) | 0;
$327 = tempRet0;
$328 = _i64Subtract($182 | 0, $183 | 0, $326 | 0, $327 | 0) | 0;
$329 = tempRet0;
$330 = _i64Add($150 | 0, $151 | 0, 1048576, 0) | 0;
$331 = tempRet0;
$332 = _bitshift64Ashr($330 | 0, $331 | 0, 21) | 0;
$333 = tempRet0;
$334 = _i64Add($332 | 0, $333 | 0, $100 | 0, 0) | 0;
$335 = tempRet0;
$336 = _bitshift64Shl($332 | 0, $333 | 0, 21) | 0;
$337 = tempRet0;
$338 = _i64Subtract($150 | 0, $151 | 0, $336 | 0, $337 | 0) | 0;
$339 = tempRet0;
$340 = _i64Add($256 | 0, $257 | 0, 1048576, 0) | 0;
$341 = tempRet0;
$342 = _bitshift64Lshr($340 | 0, $341 | 0, 21) | 0;
$343 = tempRet0;
$344 = _i64Add($278 | 0, $279 | 0, $342 | 0, $343 | 0) | 0;
$345 = tempRet0;
$346 = _bitshift64Shl($342 | 0, $343 | 0, 21) | 0;
$347 = tempRet0;
$348 = _i64Subtract($256 | 0, $257 | 0, $346 | 0, $347 | 0) | 0;
$349 = tempRet0;
$350 = _i64Add($274 | 0, $275 | 0, 1048576, 0) | 0;
$351 = tempRet0;
$352 = _bitshift64Ashr($350 | 0, $351 | 0, 21) | 0;
$353 = tempRet0;
$354 = _i64Add($300 | 0, $301 | 0, $352 | 0, $353 | 0) | 0;
$355 = tempRet0;
$356 = _bitshift64Shl($352 | 0, $353 | 0, 21) | 0;
$357 = tempRet0;
$358 = _i64Subtract($274 | 0, $275 | 0, $356 | 0, $357 | 0) | 0;
$359 = tempRet0;
$360 = _i64Add($296 | 0, $297 | 0, 1048576, 0) | 0;
$361 = tempRet0;
$362 = _bitshift64Ashr($360 | 0, $361 | 0, 21) | 0;
$363 = tempRet0;
$364 = _i64Add($318 | 0, $319 | 0, $362 | 0, $363 | 0) | 0;
$365 = tempRet0;
$366 = _bitshift64Shl($362 | 0, $363 | 0, 21) | 0;
$367 = tempRet0;
$368 = _i64Subtract($296 | 0, $297 | 0, $366 | 0, $367 | 0) | 0;
$369 = tempRet0;
$370 = _i64Add($314 | 0, $315 | 0, 1048576, 0) | 0;
$371 = tempRet0;
$372 = _bitshift64Ashr($370 | 0, $371 | 0, 21) | 0;
$373 = tempRet0;
$374 = _i64Add($372 | 0, $373 | 0, $328 | 0, $329 | 0) | 0;
$375 = tempRet0;
$376 = _bitshift64Shl($372 | 0, $373 | 0, 21) | 0;
$377 = tempRet0;
$378 = _i64Subtract($314 | 0, $315 | 0, $376 | 0, $377 | 0) | 0;
$379 = tempRet0;
$380 = _i64Add($324 | 0, $325 | 0, 1048576, 0) | 0;
$381 = tempRet0;
$382 = _bitshift64Ashr($380 | 0, $381 | 0, 21) | 0;
$383 = tempRet0;
$384 = _i64Add($382 | 0, $383 | 0, $338 | 0, $339 | 0) | 0;
$385 = tempRet0;
$386 = _bitshift64Shl($382 | 0, $383 | 0, 21) | 0;
$387 = tempRet0;
$388 = _i64Subtract($324 | 0, $325 | 0, $386 | 0, $387 | 0) | 0;
$389 = tempRet0;
$390 = ___muldi3($334 | 0, $335 | 0, 666643, 0) | 0;
$391 = tempRet0;
$392 = _i64Add($390 | 0, $391 | 0, $32 | 0, 0) | 0;
$393 = tempRet0;
$394 = ___muldi3($334 | 0, $335 | 0, 470296, 0) | 0;
$395 = tempRet0;
$396 = _i64Add($260 | 0, $261 | 0, $394 | 0, $395 | 0) | 0;
$397 = tempRet0;
$398 = ___muldi3($334 | 0, $335 | 0, 654183, 0) | 0;
$399 = tempRet0;
$400 = _i64Add($348 | 0, $349 | 0, $398 | 0, $399 | 0) | 0;
$401 = tempRet0;
$402 = ___muldi3($334 | 0, $335 | 0, -997805, -1) | 0;
$403 = tempRet0;
$404 = _i64Add($344 | 0, $345 | 0, $402 | 0, $403 | 0) | 0;
$405 = tempRet0;
$406 = ___muldi3($334 | 0, $335 | 0, 136657, 0) | 0;
$407 = tempRet0;
$408 = _i64Add($358 | 0, $359 | 0, $406 | 0, $407 | 0) | 0;
$409 = tempRet0;
$410 = ___muldi3($334 | 0, $335 | 0, -683901, -1) | 0;
$411 = tempRet0;
$412 = _i64Add($354 | 0, $355 | 0, $410 | 0, $411 | 0) | 0;
$413 = tempRet0;
$414 = ___muldi3($384 | 0, $385 | 0, 666643, 0) | 0;
$415 = tempRet0;
$416 = ___muldi3($384 | 0, $385 | 0, 470296, 0) | 0;
$417 = tempRet0;
$418 = ___muldi3($384 | 0, $385 | 0, 654183, 0) | 0;
$419 = tempRet0;
$420 = _i64Add($396 | 0, $397 | 0, $418 | 0, $419 | 0) | 0;
$421 = tempRet0;
$422 = ___muldi3($384 | 0, $385 | 0, -997805, -1) | 0;
$423 = tempRet0;
$424 = _i64Add($400 | 0, $401 | 0, $422 | 0, $423 | 0) | 0;
$425 = tempRet0;
$426 = ___muldi3($384 | 0, $385 | 0, 136657, 0) | 0;
$427 = tempRet0;
$428 = _i64Add($404 | 0, $405 | 0, $426 | 0, $427 | 0) | 0;
$429 = tempRet0;
$430 = ___muldi3($384 | 0, $385 | 0, -683901, -1) | 0;
$431 = tempRet0;
$432 = _i64Add($408 | 0, $409 | 0, $430 | 0, $431 | 0) | 0;
$433 = tempRet0;
$434 = ___muldi3($388 | 0, $389 | 0, 666643, 0) | 0;
$435 = tempRet0;
$436 = ___muldi3($388 | 0, $389 | 0, 470296, 0) | 0;
$437 = tempRet0;
$438 = ___muldi3($388 | 0, $389 | 0, 654183, 0) | 0;
$439 = tempRet0;
$440 = ___muldi3($388 | 0, $389 | 0, -997805, -1) | 0;
$441 = tempRet0;
$442 = ___muldi3($388 | 0, $389 | 0, 136657, 0) | 0;
$443 = tempRet0;
$444 = ___muldi3($388 | 0, $389 | 0, -683901, -1) | 0;
$445 = tempRet0;
$446 = _i64Add($428 | 0, $429 | 0, $444 | 0, $445 | 0) | 0;
$447 = tempRet0;
$448 = ___muldi3($374 | 0, $375 | 0, 666643, 0) | 0;
$449 = tempRet0;
$450 = ___muldi3($374 | 0, $375 | 0, 470296, 0) | 0;
$451 = tempRet0;
$452 = ___muldi3($374 | 0, $375 | 0, 654183, 0) | 0;
$453 = tempRet0;
$454 = ___muldi3($374 | 0, $375 | 0, -997805, -1) | 0;
$455 = tempRet0;
$456 = ___muldi3($374 | 0, $375 | 0, 136657, 0) | 0;
$457 = tempRet0;
$458 = ___muldi3($374 | 0, $375 | 0, -683901, -1) | 0;
$459 = tempRet0;
$460 = ___muldi3($378 | 0, $379 | 0, 666643, 0) | 0;
$461 = tempRet0;
$462 = ___muldi3($378 | 0, $379 | 0, 470296, 0) | 0;
$463 = tempRet0;
$464 = ___muldi3($378 | 0, $379 | 0, 654183, 0) | 0;
$465 = tempRet0;
$466 = ___muldi3($378 | 0, $379 | 0, -997805, -1) | 0;
$467 = tempRet0;
$468 = ___muldi3($378 | 0, $379 | 0, 136657, 0) | 0;
$469 = tempRet0;
$470 = ___muldi3($378 | 0, $379 | 0, -683901, -1) | 0;
$471 = tempRet0;
$472 = _i64Add($420 | 0, $421 | 0, $456 | 0, $457 | 0) | 0;
$473 = tempRet0;
$474 = _i64Add($472 | 0, $473 | 0, $440 | 0, $441 | 0) | 0;
$475 = tempRet0;
$476 = _i64Add($474 | 0, $475 | 0, $470 | 0, $471 | 0) | 0;
$477 = tempRet0;
$478 = ___muldi3($364 | 0, $365 | 0, 666643, 0) | 0;
$479 = tempRet0;
$480 = _i64Add($478 | 0, $479 | 0, $2 | 0, 0) | 0;
$481 = tempRet0;
$482 = ___muldi3($364 | 0, $365 | 0, 470296, 0) | 0;
$483 = tempRet0;
$484 = ___muldi3($364 | 0, $365 | 0, 654183, 0) | 0;
$485 = tempRet0;
$486 = _i64Add($484 | 0, $485 | 0, $14 | 0, 0) | 0;
$487 = tempRet0;
$488 = _i64Add($486 | 0, $487 | 0, $448 | 0, $449 | 0) | 0;
$489 = tempRet0;
$490 = _i64Add($488 | 0, $489 | 0, $462 | 0, $463 | 0) | 0;
$491 = tempRet0;
$492 = ___muldi3($364 | 0, $365 | 0, -997805, -1) | 0;
$493 = tempRet0;
$494 = ___muldi3($364 | 0, $365 | 0, 136657, 0) | 0;
$495 = tempRet0;
$496 = _i64Add($494 | 0, $495 | 0, $26 | 0, 0) | 0;
$497 = tempRet0;
$498 = _i64Add($496 | 0, $497 | 0, $414 | 0, $415 | 0) | 0;
$499 = tempRet0;
$500 = _i64Add($498 | 0, $499 | 0, $452 | 0, $453 | 0) | 0;
$501 = tempRet0;
$502 = _i64Add($500 | 0, $501 | 0, $436 | 0, $437 | 0) | 0;
$503 = tempRet0;
$504 = _i64Add($502 | 0, $503 | 0, $466 | 0, $467 | 0) | 0;
$505 = tempRet0;
$506 = ___muldi3($364 | 0, $365 | 0, -683901, -1) | 0;
$507 = tempRet0;
$508 = _i64Add($480 | 0, $481 | 0, 1048576, 0) | 0;
$509 = tempRet0;
$510 = _bitshift64Ashr($508 | 0, $509 | 0, 21) | 0;
$511 = tempRet0;
$512 = _i64Add($482 | 0, $483 | 0, $8 | 0, 0) | 0;
$513 = tempRet0;
$514 = _i64Add($512 | 0, $513 | 0, $460 | 0, $461 | 0) | 0;
$515 = tempRet0;
$516 = _i64Add($514 | 0, $515 | 0, $510 | 0, $511 | 0) | 0;
$517 = tempRet0;
$518 = _bitshift64Shl($510 | 0, $511 | 0, 21) | 0;
$519 = tempRet0;
$520 = _i64Subtract($480 | 0, $481 | 0, $518 | 0, $519 | 0) | 0;
$521 = tempRet0;
$522 = _i64Add($490 | 0, $491 | 0, 1048576, 0) | 0;
$523 = tempRet0;
$524 = _bitshift64Ashr($522 | 0, $523 | 0, 21) | 0;
$525 = tempRet0;
$526 = _i64Add($492 | 0, $493 | 0, $20 | 0, 0) | 0;
$527 = tempRet0;
$528 = _i64Add($526 | 0, $527 | 0, $450 | 0, $451 | 0) | 0;
$529 = tempRet0;
$530 = _i64Add($528 | 0, $529 | 0, $434 | 0, $435 | 0) | 0;
$531 = tempRet0;
$532 = _i64Add($530 | 0, $531 | 0, $464 | 0, $465 | 0) | 0;
$533 = tempRet0;
$534 = _i64Add($532 | 0, $533 | 0, $524 | 0, $525 | 0) | 0;
$535 = tempRet0;
$536 = _bitshift64Shl($524 | 0, $525 | 0, 21) | 0;
$537 = tempRet0;
$538 = _i64Add($504 | 0, $505 | 0, 1048576, 0) | 0;
$539 = tempRet0;
$540 = _bitshift64Ashr($538 | 0, $539 | 0, 21) | 0;
$541 = tempRet0;
$542 = _i64Add($392 | 0, $393 | 0, $506 | 0, $507 | 0) | 0;
$543 = tempRet0;
$544 = _i64Add($542 | 0, $543 | 0, $416 | 0, $417 | 0) | 0;
$545 = tempRet0;
$546 = _i64Add($544 | 0, $545 | 0, $454 | 0, $455 | 0) | 0;
$547 = tempRet0;
$548 = _i64Add($546 | 0, $547 | 0, $438 | 0, $439 | 0) | 0;
$549 = tempRet0;
$550 = _i64Add($548 | 0, $549 | 0, $468 | 0, $469 | 0) | 0;
$551 = tempRet0;
$552 = _i64Add($550 | 0, $551 | 0, $540 | 0, $541 | 0) | 0;
$553 = tempRet0;
$554 = _bitshift64Shl($540 | 0, $541 | 0, 21) | 0;
$555 = tempRet0;
$556 = _i64Add($476 | 0, $477 | 0, 1048576, 0) | 0;
$557 = tempRet0;
$558 = _bitshift64Ashr($556 | 0, $557 | 0, 21) | 0;
$559 = tempRet0;
$560 = _i64Add($424 | 0, $425 | 0, $458 | 0, $459 | 0) | 0;
$561 = tempRet0;
$562 = _i64Add($560 | 0, $561 | 0, $442 | 0, $443 | 0) | 0;
$563 = tempRet0;
$564 = _i64Add($562 | 0, $563 | 0, $558 | 0, $559 | 0) | 0;
$565 = tempRet0;
$566 = _bitshift64Shl($558 | 0, $559 | 0, 21) | 0;
$567 = tempRet0;
$568 = _i64Subtract($476 | 0, $477 | 0, $566 | 0, $567 | 0) | 0;
$569 = tempRet0;
$570 = _i64Add($446 | 0, $447 | 0, 1048576, 0) | 0;
$571 = tempRet0;
$572 = _bitshift64Ashr($570 | 0, $571 | 0, 21) | 0;
$573 = tempRet0;
$574 = _i64Add($432 | 0, $433 | 0, $572 | 0, $573 | 0) | 0;
$575 = tempRet0;
$576 = _bitshift64Shl($572 | 0, $573 | 0, 21) | 0;
$577 = tempRet0;
$578 = _i64Subtract($446 | 0, $447 | 0, $576 | 0, $577 | 0) | 0;
$579 = tempRet0;
$580 = _i64Add($412 | 0, $413 | 0, 1048576, 0) | 0;
$581 = tempRet0;
$582 = _bitshift64Ashr($580 | 0, $581 | 0, 21) | 0;
$583 = tempRet0;
$584 = _i64Add($582 | 0, $583 | 0, $368 | 0, $369 | 0) | 0;
$585 = tempRet0;
$586 = _bitshift64Shl($582 | 0, $583 | 0, 21) | 0;
$587 = tempRet0;
$588 = _i64Subtract($412 | 0, $413 | 0, $586 | 0, $587 | 0) | 0;
$589 = tempRet0;
$590 = _i64Add($516 | 0, $517 | 0, 1048576, 0) | 0;
$591 = tempRet0;
$592 = _bitshift64Ashr($590 | 0, $591 | 0, 21) | 0;
$593 = tempRet0;
$594 = _bitshift64Shl($592 | 0, $593 | 0, 21) | 0;
$595 = tempRet0;
$596 = _i64Add($534 | 0, $535 | 0, 1048576, 0) | 0;
$597 = tempRet0;
$598 = _bitshift64Ashr($596 | 0, $597 | 0, 21) | 0;
$599 = tempRet0;
$600 = _bitshift64Shl($598 | 0, $599 | 0, 21) | 0;
$601 = tempRet0;
$602 = _i64Add($552 | 0, $553 | 0, 1048576, 0) | 0;
$603 = tempRet0;
$604 = _bitshift64Ashr($602 | 0, $603 | 0, 21) | 0;
$605 = tempRet0;
$606 = _i64Add($568 | 0, $569 | 0, $604 | 0, $605 | 0) | 0;
$607 = tempRet0;
$608 = _bitshift64Shl($604 | 0, $605 | 0, 21) | 0;
$609 = tempRet0;
$610 = _i64Add($564 | 0, $565 | 0, 1048576, 0) | 0;
$611 = tempRet0;
$612 = _bitshift64Ashr($610 | 0, $611 | 0, 21) | 0;
$613 = tempRet0;
$614 = _i64Add($578 | 0, $579 | 0, $612 | 0, $613 | 0) | 0;
$615 = tempRet0;
$616 = _bitshift64Shl($612 | 0, $613 | 0, 21) | 0;
$617 = tempRet0;
$618 = _i64Subtract($564 | 0, $565 | 0, $616 | 0, $617 | 0) | 0;
$619 = tempRet0;
$620 = _i64Add($574 | 0, $575 | 0, 1048576, 0) | 0;
$621 = tempRet0;
$622 = _bitshift64Ashr($620 | 0, $621 | 0, 21) | 0;
$623 = tempRet0;
$624 = _i64Add($588 | 0, $589 | 0, $622 | 0, $623 | 0) | 0;
$625 = tempRet0;
$626 = _bitshift64Shl($622 | 0, $623 | 0, 21) | 0;
$627 = tempRet0;
$628 = _i64Subtract($574 | 0, $575 | 0, $626 | 0, $627 | 0) | 0;
$629 = tempRet0;
$630 = _i64Add($584 | 0, $585 | 0, 1048576, 0) | 0;
$631 = tempRet0;
$632 = _bitshift64Ashr($630 | 0, $631 | 0, 21) | 0;
$633 = tempRet0;
$634 = _bitshift64Shl($632 | 0, $633 | 0, 21) | 0;
$635 = tempRet0;
$636 = _i64Subtract($584 | 0, $585 | 0, $634 | 0, $635 | 0) | 0;
$637 = tempRet0;
$638 = ___muldi3($632 | 0, $633 | 0, 666643, 0) | 0;
$639 = tempRet0;
$640 = _i64Add($520 | 0, $521 | 0, $638 | 0, $639 | 0) | 0;
$641 = tempRet0;
$642 = ___muldi3($632 | 0, $633 | 0, 470296, 0) | 0;
$643 = tempRet0;
$644 = ___muldi3($632 | 0, $633 | 0, 654183, 0) | 0;
$645 = tempRet0;
$646 = ___muldi3($632 | 0, $633 | 0, -997805, -1) | 0;
$647 = tempRet0;
$648 = ___muldi3($632 | 0, $633 | 0, 136657, 0) | 0;
$649 = tempRet0;
$650 = ___muldi3($632 | 0, $633 | 0, -683901, -1) | 0;
$651 = tempRet0;
$652 = _bitshift64Ashr($640 | 0, $641 | 0, 21) | 0;
$653 = tempRet0;
$654 = _i64Add($642 | 0, $643 | 0, $516 | 0, $517 | 0) | 0;
$655 = tempRet0;
$656 = _i64Subtract($654 | 0, $655 | 0, $594 | 0, $595 | 0) | 0;
$657 = tempRet0;
$658 = _i64Add($656 | 0, $657 | 0, $652 | 0, $653 | 0) | 0;
$659 = tempRet0;
$660 = _bitshift64Shl($652 | 0, $653 | 0, 21) | 0;
$661 = tempRet0;
$662 = _i64Subtract($640 | 0, $641 | 0, $660 | 0, $661 | 0) | 0;
$663 = tempRet0;
$664 = _bitshift64Ashr($658 | 0, $659 | 0, 21) | 0;
$665 = tempRet0;
$666 = _i64Add($644 | 0, $645 | 0, $490 | 0, $491 | 0) | 0;
$667 = tempRet0;
$668 = _i64Subtract($666 | 0, $667 | 0, $536 | 0, $537 | 0) | 0;
$669 = tempRet0;
$670 = _i64Add($668 | 0, $669 | 0, $592 | 0, $593 | 0) | 0;
$671 = tempRet0;
$672 = _i64Add($670 | 0, $671 | 0, $664 | 0, $665 | 0) | 0;
$673 = tempRet0;
$674 = _bitshift64Shl($664 | 0, $665 | 0, 21) | 0;
$675 = tempRet0;
$676 = _i64Subtract($658 | 0, $659 | 0, $674 | 0, $675 | 0) | 0;
$677 = tempRet0;
$678 = _bitshift64Ashr($672 | 0, $673 | 0, 21) | 0;
$679 = tempRet0;
$680 = _i64Add($534 | 0, $535 | 0, $646 | 0, $647 | 0) | 0;
$681 = tempRet0;
$682 = _i64Subtract($680 | 0, $681 | 0, $600 | 0, $601 | 0) | 0;
$683 = tempRet0;
$684 = _i64Add($682 | 0, $683 | 0, $678 | 0, $679 | 0) | 0;
$685 = tempRet0;
$686 = _bitshift64Shl($678 | 0, $679 | 0, 21) | 0;
$687 = tempRet0;
$688 = _i64Subtract($672 | 0, $673 | 0, $686 | 0, $687 | 0) | 0;
$689 = tempRet0;
$690 = _bitshift64Ashr($684 | 0, $685 | 0, 21) | 0;
$691 = tempRet0;
$692 = _i64Add($648 | 0, $649 | 0, $504 | 0, $505 | 0) | 0;
$693 = tempRet0;
$694 = _i64Subtract($692 | 0, $693 | 0, $554 | 0, $555 | 0) | 0;
$695 = tempRet0;
$696 = _i64Add($694 | 0, $695 | 0, $598 | 0, $599 | 0) | 0;
$697 = tempRet0;
$698 = _i64Add($696 | 0, $697 | 0, $690 | 0, $691 | 0) | 0;
$699 = tempRet0;
$700 = _bitshift64Shl($690 | 0, $691 | 0, 21) | 0;
$701 = tempRet0;
$702 = _i64Subtract($684 | 0, $685 | 0, $700 | 0, $701 | 0) | 0;
$703 = tempRet0;
$704 = _bitshift64Ashr($698 | 0, $699 | 0, 21) | 0;
$705 = tempRet0;
$706 = _i64Add($552 | 0, $553 | 0, $650 | 0, $651 | 0) | 0;
$707 = tempRet0;
$708 = _i64Subtract($706 | 0, $707 | 0, $608 | 0, $609 | 0) | 0;
$709 = tempRet0;
$710 = _i64Add($708 | 0, $709 | 0, $704 | 0, $705 | 0) | 0;
$711 = tempRet0;
$712 = _bitshift64Shl($704 | 0, $705 | 0, 21) | 0;
$713 = tempRet0;
$714 = _i64Subtract($698 | 0, $699 | 0, $712 | 0, $713 | 0) | 0;
$715 = tempRet0;
$716 = _bitshift64Ashr($710 | 0, $711 | 0, 21) | 0;
$717 = tempRet0;
$718 = _i64Add($606 | 0, $607 | 0, $716 | 0, $717 | 0) | 0;
$719 = tempRet0;
$720 = _bitshift64Shl($716 | 0, $717 | 0, 21) | 0;
$721 = tempRet0;
$722 = _i64Subtract($710 | 0, $711 | 0, $720 | 0, $721 | 0) | 0;
$723 = tempRet0;
$724 = _bitshift64Ashr($718 | 0, $719 | 0, 21) | 0;
$725 = tempRet0;
$726 = _i64Add($724 | 0, $725 | 0, $618 | 0, $619 | 0) | 0;
$727 = tempRet0;
$728 = _bitshift64Shl($724 | 0, $725 | 0, 21) | 0;
$729 = tempRet0;
$730 = _i64Subtract($718 | 0, $719 | 0, $728 | 0, $729 | 0) | 0;
$731 = tempRet0;
$732 = _bitshift64Ashr($726 | 0, $727 | 0, 21) | 0;
$733 = tempRet0;
$734 = _i64Add($614 | 0, $615 | 0, $732 | 0, $733 | 0) | 0;
$735 = tempRet0;
$736 = _bitshift64Shl($732 | 0, $733 | 0, 21) | 0;
$737 = tempRet0;
$738 = _i64Subtract($726 | 0, $727 | 0, $736 | 0, $737 | 0) | 0;
$739 = tempRet0;
$740 = _bitshift64Ashr($734 | 0, $735 | 0, 21) | 0;
$741 = tempRet0;
$742 = _i64Add($740 | 0, $741 | 0, $628 | 0, $629 | 0) | 0;
$743 = tempRet0;
$744 = _bitshift64Shl($740 | 0, $741 | 0, 21) | 0;
$745 = tempRet0;
$746 = _i64Subtract($734 | 0, $735 | 0, $744 | 0, $745 | 0) | 0;
$747 = tempRet0;
$748 = _bitshift64Ashr($742 | 0, $743 | 0, 21) | 0;
$749 = tempRet0;
$750 = _i64Add($624 | 0, $625 | 0, $748 | 0, $749 | 0) | 0;
$751 = tempRet0;
$752 = _bitshift64Shl($748 | 0, $749 | 0, 21) | 0;
$753 = tempRet0;
$754 = _i64Subtract($742 | 0, $743 | 0, $752 | 0, $753 | 0) | 0;
$755 = tempRet0;
$756 = _bitshift64Ashr($750 | 0, $751 | 0, 21) | 0;
$757 = tempRet0;
$758 = _i64Add($756 | 0, $757 | 0, $636 | 0, $637 | 0) | 0;
$759 = tempRet0;
$760 = _bitshift64Shl($756 | 0, $757 | 0, 21) | 0;
$761 = tempRet0;
$762 = _i64Subtract($750 | 0, $751 | 0, $760 | 0, $761 | 0) | 0;
$763 = tempRet0;
$764 = _bitshift64Ashr($758 | 0, $759 | 0, 21) | 0;
$765 = tempRet0;
$766 = _bitshift64Shl($764 | 0, $765 | 0, 21) | 0;
$767 = tempRet0;
$768 = _i64Subtract($758 | 0, $759 | 0, $766 | 0, $767 | 0) | 0;
$769 = tempRet0;
$770 = ___muldi3($764 | 0, $765 | 0, 666643, 0) | 0;
$771 = tempRet0;
$772 = _i64Add($770 | 0, $771 | 0, $662 | 0, $663 | 0) | 0;
$773 = tempRet0;
$774 = ___muldi3($764 | 0, $765 | 0, 470296, 0) | 0;
$775 = tempRet0;
$776 = _i64Add($676 | 0, $677 | 0, $774 | 0, $775 | 0) | 0;
$777 = tempRet0;
$778 = ___muldi3($764 | 0, $765 | 0, 654183, 0) | 0;
$779 = tempRet0;
$780 = _i64Add($688 | 0, $689 | 0, $778 | 0, $779 | 0) | 0;
$781 = tempRet0;
$782 = ___muldi3($764 | 0, $765 | 0, -997805, -1) | 0;
$783 = tempRet0;
$784 = _i64Add($702 | 0, $703 | 0, $782 | 0, $783 | 0) | 0;
$785 = tempRet0;
$786 = ___muldi3($764 | 0, $765 | 0, 136657, 0) | 0;
$787 = tempRet0;
$788 = _i64Add($714 | 0, $715 | 0, $786 | 0, $787 | 0) | 0;
$789 = tempRet0;
$790 = ___muldi3($764 | 0, $765 | 0, -683901, -1) | 0;
$791 = tempRet0;
$792 = _i64Add($722 | 0, $723 | 0, $790 | 0, $791 | 0) | 0;
$793 = tempRet0;
$794 = _bitshift64Ashr($772 | 0, $773 | 0, 21) | 0;
$795 = tempRet0;
$796 = _i64Add($776 | 0, $777 | 0, $794 | 0, $795 | 0) | 0;
$797 = tempRet0;
$798 = _bitshift64Shl($794 | 0, $795 | 0, 21) | 0;
$799 = tempRet0;
$800 = _i64Subtract($772 | 0, $773 | 0, $798 | 0, $799 | 0) | 0;
$801 = tempRet0;
$802 = _bitshift64Ashr($796 | 0, $797 | 0, 21) | 0;
$803 = tempRet0;
$804 = _i64Add($780 | 0, $781 | 0, $802 | 0, $803 | 0) | 0;
$805 = tempRet0;
$806 = _bitshift64Shl($802 | 0, $803 | 0, 21) | 0;
$807 = tempRet0;
$808 = _i64Subtract($796 | 0, $797 | 0, $806 | 0, $807 | 0) | 0;
$809 = tempRet0;
$810 = _bitshift64Ashr($804 | 0, $805 | 0, 21) | 0;
$811 = tempRet0;
$812 = _i64Add($784 | 0, $785 | 0, $810 | 0, $811 | 0) | 0;
$813 = tempRet0;
$814 = _bitshift64Shl($810 | 0, $811 | 0, 21) | 0;
$815 = tempRet0;
$816 = _i64Subtract($804 | 0, $805 | 0, $814 | 0, $815 | 0) | 0;
$817 = tempRet0;
$818 = _bitshift64Ashr($812 | 0, $813 | 0, 21) | 0;
$819 = tempRet0;
$820 = _i64Add($788 | 0, $789 | 0, $818 | 0, $819 | 0) | 0;
$821 = tempRet0;
$822 = _bitshift64Shl($818 | 0, $819 | 0, 21) | 0;
$823 = tempRet0;
$824 = _i64Subtract($812 | 0, $813 | 0, $822 | 0, $823 | 0) | 0;
$825 = tempRet0;
$826 = _bitshift64Ashr($820 | 0, $821 | 0, 21) | 0;
$827 = tempRet0;
$828 = _i64Add($792 | 0, $793 | 0, $826 | 0, $827 | 0) | 0;
$829 = tempRet0;
$830 = _bitshift64Shl($826 | 0, $827 | 0, 21) | 0;
$831 = tempRet0;
$832 = _i64Subtract($820 | 0, $821 | 0, $830 | 0, $831 | 0) | 0;
$833 = tempRet0;
$834 = _bitshift64Ashr($828 | 0, $829 | 0, 21) | 0;
$835 = tempRet0;
$836 = _i64Add($834 | 0, $835 | 0, $730 | 0, $731 | 0) | 0;
$837 = tempRet0;
$838 = _bitshift64Shl($834 | 0, $835 | 0, 21) | 0;
$839 = tempRet0;
$840 = _i64Subtract($828 | 0, $829 | 0, $838 | 0, $839 | 0) | 0;
$841 = tempRet0;
$842 = _bitshift64Ashr($836 | 0, $837 | 0, 21) | 0;
$843 = tempRet0;
$844 = _i64Add($842 | 0, $843 | 0, $738 | 0, $739 | 0) | 0;
$845 = tempRet0;
$846 = _bitshift64Shl($842 | 0, $843 | 0, 21) | 0;
$847 = tempRet0;
$848 = _i64Subtract($836 | 0, $837 | 0, $846 | 0, $847 | 0) | 0;
$849 = tempRet0;
$850 = _bitshift64Ashr($844 | 0, $845 | 0, 21) | 0;
$851 = tempRet0;
$852 = _i64Add($850 | 0, $851 | 0, $746 | 0, $747 | 0) | 0;
$853 = tempRet0;
$854 = _bitshift64Shl($850 | 0, $851 | 0, 21) | 0;
$855 = tempRet0;
$856 = _i64Subtract($844 | 0, $845 | 0, $854 | 0, $855 | 0) | 0;
$857 = tempRet0;
$858 = _bitshift64Ashr($852 | 0, $853 | 0, 21) | 0;
$859 = tempRet0;
$860 = _i64Add($858 | 0, $859 | 0, $754 | 0, $755 | 0) | 0;
$861 = tempRet0;
$862 = _bitshift64Shl($858 | 0, $859 | 0, 21) | 0;
$863 = tempRet0;
$864 = _i64Subtract($852 | 0, $853 | 0, $862 | 0, $863 | 0) | 0;
$865 = tempRet0;
$866 = _bitshift64Ashr($860 | 0, $861 | 0, 21) | 0;
$867 = tempRet0;
$868 = _i64Add($866 | 0, $867 | 0, $762 | 0, $763 | 0) | 0;
$869 = tempRet0;
$870 = _bitshift64Shl($866 | 0, $867 | 0, 21) | 0;
$871 = tempRet0;
$872 = _i64Subtract($860 | 0, $861 | 0, $870 | 0, $871 | 0) | 0;
$873 = tempRet0;
$874 = _bitshift64Ashr($868 | 0, $869 | 0, 21) | 0;
$875 = tempRet0;
$876 = _i64Add($874 | 0, $875 | 0, $768 | 0, $769 | 0) | 0;
$877 = tempRet0;
$878 = _bitshift64Shl($874 | 0, $875 | 0, 21) | 0;
$879 = tempRet0;
$880 = _i64Subtract($868 | 0, $869 | 0, $878 | 0, $879 | 0) | 0;
$881 = tempRet0;
$882 = $800 & 255;
HEAP8[$s >> 0] = $882;
$883 = _bitshift64Lshr($800 | 0, $801 | 0, 8) | 0;
$884 = tempRet0;
$885 = $883 & 255;
$886 = ($s + 1) | 0;
HEAP8[$886 >> 0] = $885;
$887 = _bitshift64Lshr($800 | 0, $801 | 0, 16) | 0;
$888 = tempRet0;
$889 = _bitshift64Shl($808 | 0, $809 | 0, 5) | 0;
$890 = tempRet0;
$891 = $889 | $887;
$890 | $888;
$892 = $891 & 255;
HEAP8[$3 >> 0] = $892;
$893 = _bitshift64Lshr($808 | 0, $809 | 0, 3) | 0;
$894 = tempRet0;
$895 = $893 & 255;
$896 = ($s + 3) | 0;
HEAP8[$896 >> 0] = $895;
$897 = _bitshift64Lshr($808 | 0, $809 | 0, 11) | 0;
$898 = tempRet0;
$899 = $897 & 255;
$900 = ($s + 4) | 0;
HEAP8[$900 >> 0] = $899;
$901 = _bitshift64Lshr($808 | 0, $809 | 0, 19) | 0;
$902 = tempRet0;
$903 = _bitshift64Shl($816 | 0, $817 | 0, 2) | 0;
$904 = tempRet0;
$905 = $903 | $901;
$904 | $902;
$906 = $905 & 255;
HEAP8[$9 >> 0] = $906;
$907 = _bitshift64Lshr($816 | 0, $817 | 0, 6) | 0;
$908 = tempRet0;
$909 = $907 & 255;
$910 = ($s + 6) | 0;
HEAP8[$910 >> 0] = $909;
$911 = _bitshift64Lshr($816 | 0, $817 | 0, 14) | 0;
$912 = tempRet0;
$913 = _bitshift64Shl($824 | 0, $825 | 0, 7) | 0;
$914 = tempRet0;
$915 = $913 | $911;
$914 | $912;
$916 = $915 & 255;
HEAP8[$15 >> 0] = $916;
$917 = _bitshift64Lshr($824 | 0, $825 | 0, 1) | 0;
$918 = tempRet0;
$919 = $917 & 255;
$920 = ($s + 8) | 0;
HEAP8[$920 >> 0] = $919;
$921 = _bitshift64Lshr($824 | 0, $825 | 0, 9) | 0;
$922 = tempRet0;
$923 = $921 & 255;
$924 = ($s + 9) | 0;
HEAP8[$924 >> 0] = $923;
$925 = _bitshift64Lshr($824 | 0, $825 | 0, 17) | 0;
$926 = tempRet0;
$927 = _bitshift64Shl($832 | 0, $833 | 0, 4) | 0;
$928 = tempRet0;
$929 = $927 | $925;
$928 | $926;
$930 = $929 & 255;
HEAP8[$21 >> 0] = $930;
$931 = _bitshift64Lshr($832 | 0, $833 | 0, 4) | 0;
$932 = tempRet0;
$933 = $931 & 255;
$934 = ($s + 11) | 0;
HEAP8[$934 >> 0] = $933;
$935 = _bitshift64Lshr($832 | 0, $833 | 0, 12) | 0;
$936 = tempRet0;
$937 = $935 & 255;
$938 = ($s + 12) | 0;
HEAP8[$938 >> 0] = $937;
$939 = _bitshift64Lshr($832 | 0, $833 | 0, 20) | 0;
$940 = tempRet0;
$941 = _bitshift64Shl($840 | 0, $841 | 0, 1) | 0;
$942 = tempRet0;
$943 = $941 | $939;
$942 | $940;
$944 = $943 & 255;
HEAP8[$27 >> 0] = $944;
$945 = _bitshift64Lshr($840 | 0, $841 | 0, 7) | 0;
$946 = tempRet0;
$947 = $945 & 255;
$948 = ($s + 14) | 0;
HEAP8[$948 >> 0] = $947;
$949 = _bitshift64Lshr($840 | 0, $841 | 0, 15) | 0;
$950 = tempRet0;
$951 = _bitshift64Shl($848 | 0, $849 | 0, 6) | 0;
$952 = tempRet0;
$953 = $951 | $949;
$952 | $950;
$954 = $953 & 255;
HEAP8[$33 >> 0] = $954;
$955 = _bitshift64Lshr($848 | 0, $849 | 0, 2) | 0;
$956 = tempRet0;
$957 = $955 & 255;
$958 = ($s + 16) | 0;
HEAP8[$958 >> 0] = $957;
$959 = _bitshift64Lshr($848 | 0, $849 | 0, 10) | 0;
$960 = tempRet0;
$961 = $959 & 255;
$962 = ($s + 17) | 0;
HEAP8[$962 >> 0] = $961;
$963 = _bitshift64Lshr($848 | 0, $849 | 0, 18) | 0;
$964 = tempRet0;
$965 = _bitshift64Shl($856 | 0, $857 | 0, 3) | 0;
$966 = tempRet0;
$967 = $965 | $963;
$966 | $964;
$968 = $967 & 255;
HEAP8[$39 >> 0] = $968;
$969 = _bitshift64Lshr($856 | 0, $857 | 0, 5) | 0;
$970 = tempRet0;
$971 = $969 & 255;
$972 = ($s + 19) | 0;
HEAP8[$972 >> 0] = $971;
$973 = _bitshift64Lshr($856 | 0, $857 | 0, 13) | 0;
$974 = tempRet0;
$975 = $973 & 255;
$976 = ($s + 20) | 0;
HEAP8[$976 >> 0] = $975;
$977 = $864 & 255;
HEAP8[$45 >> 0] = $977;
$978 = _bitshift64Lshr($864 | 0, $865 | 0, 8) | 0;
$979 = tempRet0;
$980 = $978 & 255;
$981 = ($s + 22) | 0;
HEAP8[$981 >> 0] = $980;
$982 = _bitshift64Lshr($864 | 0, $865 | 0, 16) | 0;
$983 = tempRet0;
$984 = _bitshift64Shl($872 | 0, $873 | 0, 5) | 0;
$985 = tempRet0;
$986 = $984 | $982;
$985 | $983;
$987 = $986 & 255;
HEAP8[$49 >> 0] = $987;
$988 = _bitshift64Lshr($872 | 0, $873 | 0, 3) | 0;
$989 = tempRet0;
$990 = $988 & 255;
$991 = ($s + 24) | 0;
HEAP8[$991 >> 0] = $990;
$992 = _bitshift64Lshr($872 | 0, $873 | 0, 11) | 0;
$993 = tempRet0;
$994 = $992 & 255;
$995 = ($s + 25) | 0;
HEAP8[$995 >> 0] = $994;
$996 = _bitshift64Lshr($872 | 0, $873 | 0, 19) | 0;
$997 = tempRet0;
$998 = _bitshift64Shl($880 | 0, $881 | 0, 2) | 0;
$999 = tempRet0;
$1000 = $998 | $996;
$999 | $997;
$1001 = $1000 & 255;
HEAP8[$55 >> 0] = $1001;
$1002 = _bitshift64Lshr($880 | 0, $881 | 0, 6) | 0;
$1003 = tempRet0;
$1004 = $1002 & 255;
$1005 = ($s + 27) | 0;
HEAP8[$1005 >> 0] = $1004;
$1006 = _bitshift64Lshr($880 | 0, $881 | 0, 14) | 0;
$1007 = tempRet0;
$1008 = _bitshift64Shl($876 | 0, $877 | 0, 7) | 0;
$1009 = tempRet0;
$1010 = $1006 | $1008;
$1007 | $1009;
$1011 = $1010 & 255;
HEAP8[$61 >> 0] = $1011;
$1012 = _bitshift64Lshr($876 | 0, $877 | 0, 1) | 0;
$1013 = tempRet0;
$1014 = $1012 & 255;
$1015 = ($s + 29) | 0;
HEAP8[$1015 >> 0] = $1014;
$1016 = _bitshift64Lshr($876 | 0, $877 | 0, 9) | 0;
$1017 = tempRet0;
$1018 = $1016 & 255;
$1019 = ($s + 30) | 0;
HEAP8[$1019 >> 0] = $1018;
$1020 = _bitshift64Lshr($876 | 0, $877 | 0, 17) | 0;
$1021 = tempRet0;
$1022 = $1020 & 255;
HEAP8[$67 >> 0] = $1022;
STACKTOP = sp;
return;
}
function _load_351($in) {
$in = $in | 0;
var $0 = 0,
$1 = 0,
$10 = 0,
$11 = 0,
$12 = 0,
$13 = 0,
$14 = 0,
$2 = 0,
$3 = 0,
$4 = 0,
$5 = 0,
$6 = 0,
$7 = 0,
$8 = 0,
$9 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = HEAP8[$in >> 0] | 0;
$1 = $0 & 255;
$2 = ($in + 1) | 0;
$3 = HEAP8[$2 >> 0] | 0;
$4 = $3 & 255;
$5 = _bitshift64Shl($4 | 0, 0, 8) | 0;
$6 = tempRet0;
$7 = $5 | $1;
$8 = ($in + 2) | 0;
$9 = HEAP8[$8 >> 0] | 0;
$10 = $9 & 255;
$11 = _bitshift64Shl($10 | 0, 0, 16) | 0;
$12 = tempRet0;
$13 = $7 | $11;
$14 = $6 | $12;
tempRet0 = $14;
STACKTOP = sp;
return $13 | 0;
}
function _load_452($in) {
$in = $in | 0;
var $0 = 0,
$1 = 0,
$10 = 0,
$11 = 0,
$12 = 0,
$13 = 0,
$14 = 0,
$15 = 0,
$16 = 0,
$17 = 0,
$18 = 0,
$19 = 0,
$2 = 0,
$20 = 0,
$21 = 0,
$3 = 0,
$4 = 0,
$5 = 0,
$6 = 0,
$7 = 0;
var $8 = 0,
$9 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = HEAP8[$in >> 0] | 0;
$1 = $0 & 255;
$2 = ($in + 1) | 0;
$3 = HEAP8[$2 >> 0] | 0;
$4 = $3 & 255;
$5 = _bitshift64Shl($4 | 0, 0, 8) | 0;
$6 = tempRet0;
$7 = $5 | $1;
$8 = ($in + 2) | 0;
$9 = HEAP8[$8 >> 0] | 0;
$10 = $9 & 255;
$11 = _bitshift64Shl($10 | 0, 0, 16) | 0;
$12 = tempRet0;
$13 = $7 | $11;
$14 = $6 | $12;
$15 = ($in + 3) | 0;
$16 = HEAP8[$15 >> 0] | 0;
$17 = $16 & 255;
$18 = _bitshift64Shl($17 | 0, 0, 24) | 0;
$19 = tempRet0;
$20 = $13 | $18;
$21 = $14 | $19;
tempRet0 = $21;
STACKTOP = sp;
return $20 | 0;
}
function _sph_sha512_init($cc) {
$cc = $cc | 0;
var $0 = 0,
$1 = 0,
$2 = 0,
$3 = 0,
$4 = 0,
$5 = 0,
dest = 0,
label = 0,
sp = 0,
src = 0,
stop = 0;
sp = STACKTOP;
$0 = ($cc + 128) | 0;
dest = ($0 + 0) | 0;
src = (31840 + 0) | 0;
stop = (dest + 64) | 0;
do {
HEAP32[dest >> 2] = HEAP32[src >> 2] | 0;
dest = (dest + 4) | 0;
src = (src + 4) | 0;
} while ((dest | 0) < (stop | 0));
$1 = ($cc + 192) | 0;
$2 = $1;
$3 = $2;
HEAP32[$3 >> 2] = 0;
$4 = ($2 + 4) | 0;
$5 = $4;
HEAP32[$5 >> 2] = 0;
STACKTOP = sp;
return;
}
function _sph_sha384($cc, $data, $len) {
$cc = $cc | 0;
$data = $data | 0;
$len = $len | 0;
var $$01$ = 0,
$$012 = 0,
$$03 = 0,
$0 = 0,
$1 = 0,
$10 = 0,
$11 = 0,
$12 = 0,
$13 = 0,
$14 = 0,
$15 = 0,
$16 = 0,
$17 = 0,
$18 = 0,
$19 = 0,
$2 = 0,
$20 = 0,
$21 = 0,
$22 = 0,
$23 = 0;
var $24 = 0,
$25 = 0,
$26 = 0,
$27 = 0,
$28 = 0,
$29 = 0,
$3 = 0,
$4 = 0,
$5 = 0,
$6 = 0,
$7 = 0,
$8 = 0,
$9 = 0,
$current$04 = 0,
$current$1 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = ($cc + 192) | 0;
$1 = ($len | 0) == 0;
if ($1) {
STACKTOP = sp;
return;
}
$2 = $0;
$3 = $2;
$4 = HEAP32[$3 >> 2] | 0;
$5 = ($2 + 4) | 0;
$6 = $5;
$7 = HEAP32[$6 >> 2] | 0;
$8 = $4 & 127;
$9 = ($cc + 128) | 0;
$$012 = $len;
$$03 = $data;
$current$04 = $8;
while (1) {
$10 = (128 - $current$04) | 0;
$11 = $10 >>> 0 > $$012 >>> 0;
$$01$ = $11 ? $$012 : $10;
$12 = ($cc + $current$04) | 0;
_memcpy($12 | 0, $$03 | 0, $$01$ | 0) | 0;
$13 = ($$03 + $$01$) | 0;
$14 = ($$01$ + $current$04) | 0;
$15 = ($$012 - $$01$) | 0;
$16 = ($14 | 0) == 128;
if ($16) {
_sha3_round($cc, $9);
$current$1 = 0;
} else {
$current$1 = $14;
}
$17 = $0;
$18 = $17;
$19 = HEAP32[$18 >> 2] | 0;
$20 = ($17 + 4) | 0;
$21 = $20;
$22 = HEAP32[$21 >> 2] | 0;
$23 = _i64Add($19 | 0, $22 | 0, $$01$ | 0, 0) | 0;
$24 = tempRet0;
$25 = $0;
$26 = $25;
HEAP32[$26 >> 2] = $23;
$27 = ($25 + 4) | 0;
$28 = $27;
HEAP32[$28 >> 2] = $24;
$29 = ($$012 | 0) == ($$01$ | 0);
if ($29) {
break;
} else {
$$012 = $15;
$$03 = $13;
$current$04 = $current$1;
}
}
STACKTOP = sp;
return;
}
function _sph_sha512_close($cc, $dst) {
$cc = $cc | 0;
$dst = $dst | 0;
var label = 0,
sp = 0;
sp = STACKTOP;
_sha384_close($cc, $dst, 8);
_sph_sha512_init($cc);
STACKTOP = sp;
return;
}
function _sha3_round($data, $r) {
$data = $data | 0;
$r = $r | 0;
var $0 = 0,
$1 = 0,
$10 = 0,
$100 = 0,
$101 = 0,
$102 = 0,
$103 = 0,
$104 = 0,
$105 = 0,
$106 = 0,
$107 = 0,
$108 = 0,
$109 = 0,
$11 = 0,
$110 = 0,
$111 = 0,
$112 = 0,
$113 = 0,
$114 = 0,
$115 = 0;
var $116 = 0,
$117 = 0,
$118 = 0,
$119 = 0,
$12 = 0,
$120 = 0,
$121 = 0,
$122 = 0,
$123 = 0,
$124 = 0,
$125 = 0,
$126 = 0,
$127 = 0,
$128 = 0,
$129 = 0,
$13 = 0,
$130 = 0,
$131 = 0,
$132 = 0,
$133 = 0;
var $134 = 0,
$135 = 0,
$136 = 0,
$137 = 0,
$138 = 0,
$139 = 0,
$14 = 0,
$140 = 0,
$141 = 0,
$142 = 0,
$143 = 0,
$144 = 0,
$145 = 0,
$146 = 0,
$147 = 0,
$148 = 0,
$149 = 0,
$15 = 0,
$150 = 0,
$151 = 0;
var $152 = 0,
$153 = 0,
$154 = 0,
$155 = 0,
$156 = 0,
$157 = 0,
$158 = 0,
$159 = 0,
$16 = 0,
$160 = 0,
$161 = 0,
$162 = 0,
$163 = 0,
$164 = 0,
$165 = 0,
$166 = 0,
$167 = 0,
$168 = 0,
$169 = 0,
$17 = 0;
var $170 = 0,
$171 = 0,
$172 = 0,
$173 = 0,
$174 = 0,
$175 = 0,
$176 = 0,
$177 = 0,
$178 = 0,
$179 = 0,
$18 = 0,
$180 = 0,
$181 = 0,
$182 = 0,
$183 = 0,
$184 = 0,
$185 = 0,
$186 = 0,
$187 = 0,
$188 = 0;
var $189 = 0,
$19 = 0,
$190 = 0,
$191 = 0,
$192 = 0,
$193 = 0,
$194 = 0,
$195 = 0,
$196 = 0,
$197 = 0,
$198 = 0,
$199 = 0,
$2 = 0,
$20 = 0,
$200 = 0,
$201 = 0,
$202 = 0,
$203 = 0,
$204 = 0,
$205 = 0;
var $206 = 0,
$207 = 0,
$208 = 0,
$209 = 0,
$21 = 0,
$210 = 0,
$211 = 0,
$212 = 0,
$213 = 0,
$214 = 0,
$215 = 0,
$216 = 0,
$217 = 0,
$218 = 0,
$219 = 0,
$22 = 0,
$220 = 0,
$221 = 0,
$222 = 0,
$223 = 0;
var $224 = 0,
$225 = 0,
$226 = 0,
$227 = 0,
$228 = 0,
$229 = 0,
$23 = 0,
$230 = 0,
$231 = 0,
$232 = 0,
$233 = 0,
$234 = 0,
$235 = 0,
$236 = 0,
$237 = 0,
$238 = 0,
$239 = 0,
$24 = 0,
$240 = 0,
$241 = 0;
var $242 = 0,
$243 = 0,
$244 = 0,
$245 = 0,
$246 = 0,
$247 = 0,
$248 = 0,
$249 = 0,
$25 = 0,
$250 = 0,
$251 = 0,
$252 = 0,
$253 = 0,
$254 = 0,
$255 = 0,
$256 = 0,
$257 = 0,
$258 = 0,
$259 = 0,
$26 = 0;
var $260 = 0,
$261 = 0,
$262 = 0,
$263 = 0,
$264 = 0,
$265 = 0,
$266 = 0,
$267 = 0,
$268 = 0,
$269 = 0,
$27 = 0,
$270 = 0,
$271 = 0,
$272 = 0,
$273 = 0,
$274 = 0,
$275 = 0,
$276 = 0,
$277 = 0,
$278 = 0;
var $279 = 0,
$28 = 0,
$280 = 0,
$281 = 0,
$282 = 0,
$283 = 0,
$284 = 0,
$285 = 0,
$286 = 0,
$287 = 0,
$288 = 0,
$289 = 0,
$29 = 0,
$290 = 0,
$291 = 0,
$292 = 0,
$293 = 0,
$294 = 0,
$295 = 0,
$296 = 0;
var $297 = 0,
$298 = 0,
$299 = 0,
$3 = 0,
$30 = 0,
$300 = 0,
$301 = 0,
$302 = 0,
$303 = 0,
$304 = 0,
$305 = 0,
$306 = 0,
$307 = 0,
$308 = 0,
$309 = 0,
$31 = 0,
$310 = 0,
$311 = 0,
$312 = 0,
$313 = 0;
var $314 = 0,
$315 = 0,
$316 = 0,
$317 = 0,
$318 = 0,
$319 = 0,
$32 = 0,
$320 = 0,
$321 = 0,
$322 = 0,
$323 = 0,
$324 = 0,
$325 = 0,
$326 = 0,
$327 = 0,
$328 = 0,
$329 = 0,
$33 = 0,
$330 = 0,
$331 = 0;
var $332 = 0,
$333 = 0,
$334 = 0,
$335 = 0,
$336 = 0,
$337 = 0,
$338 = 0,
$339 = 0,
$34 = 0,
$340 = 0,
$341 = 0,
$342 = 0,
$343 = 0,
$344 = 0,
$345 = 0,
$346 = 0,
$347 = 0,
$348 = 0,
$349 = 0,
$35 = 0;
var $350 = 0,
$351 = 0,
$352 = 0,
$353 = 0,
$354 = 0,
$355 = 0,
$356 = 0,
$357 = 0,
$358 = 0,
$359 = 0,
$36 = 0,
$360 = 0,
$361 = 0,
$362 = 0,
$363 = 0,
$364 = 0,
$365 = 0,
$366 = 0,
$367 = 0,
$368 = 0;
var $369 = 0,
$37 = 0,
$370 = 0,
$371 = 0,
$372 = 0,
$373 = 0,
$374 = 0,
$375 = 0,
$376 = 0,
$377 = 0,
$378 = 0,
$379 = 0,
$38 = 0,
$380 = 0,
$381 = 0,
$382 = 0,
$383 = 0,
$384 = 0,
$385 = 0,
$386 = 0;
var $387 = 0,
$388 = 0,
$389 = 0,
$39 = 0,
$390 = 0,
$391 = 0,
$392 = 0,
$393 = 0,
$394 = 0,
$395 = 0,
$396 = 0,
$397 = 0,
$398 = 0,
$399 = 0,
$4 = 0,
$40 = 0,
$400 = 0,
$401 = 0,
$402 = 0,
$403 = 0;
var $404 = 0,
$405 = 0,
$406 = 0,
$407 = 0,
$408 = 0,
$409 = 0,
$41 = 0,
$410 = 0,
$411 = 0,
$412 = 0,
$413 = 0,
$414 = 0,
$415 = 0,
$416 = 0,
$417 = 0,
$418 = 0,
$419 = 0,
$42 = 0,
$420 = 0,
$421 = 0;
var $422 = 0,
$423 = 0,
$424 = 0,
$425 = 0,
$426 = 0,
$427 = 0,
$428 = 0,
$429 = 0,
$43 = 0,
$430 = 0,
$431 = 0,
$432 = 0,
$433 = 0,
$434 = 0,
$435 = 0,
$436 = 0,
$437 = 0,
$438 = 0,
$439 = 0,
$44 = 0;
var $440 = 0,
$441 = 0,
$442 = 0,
$443 = 0,
$444 = 0,
$445 = 0,
$446 = 0,
$447 = 0,
$448 = 0,
$449 = 0,
$45 = 0,
$450 = 0,
$451 = 0,
$452 = 0,
$453 = 0,
$454 = 0,
$455 = 0,
$456 = 0,
$457 = 0,
$458 = 0;
var $459 = 0,
$46 = 0,
$460 = 0,
$461 = 0,
$462 = 0,
$463 = 0,
$464 = 0,
$465 = 0,
$466 = 0,
$467 = 0,
$468 = 0,
$469 = 0,
$47 = 0,
$470 = 0,
$471 = 0,
$472 = 0,
$473 = 0,
$474 = 0,
$475 = 0,
$476 = 0;
var $477 = 0,
$478 = 0,
$479 = 0,
$48 = 0,
$480 = 0,
$481 = 0,
$482 = 0,
$483 = 0,
$484 = 0,
$485 = 0,
$486 = 0,
$487 = 0,
$488 = 0,
$489 = 0,
$49 = 0,
$490 = 0,
$491 = 0,
$492 = 0,
$493 = 0,
$494 = 0;
var $495 = 0,
$496 = 0,
$497 = 0,
$498 = 0,
$499 = 0,
$5 = 0,
$50 = 0,
$500 = 0,
$501 = 0,
$502 = 0,
$503 = 0,
$504 = 0,
$505 = 0,
$506 = 0,
$507 = 0,
$508 = 0,
$509 = 0,
$51 = 0,
$510 = 0,
$511 = 0;
var $512 = 0,
$513 = 0,
$514 = 0,
$515 = 0,
$516 = 0,
$517 = 0,
$518 = 0,
$519 = 0,
$52 = 0,
$520 = 0,
$521 = 0,
$522 = 0,
$523 = 0,
$524 = 0,
$525 = 0,
$526 = 0,
$527 = 0,
$528 = 0,
$529 = 0,
$53 = 0;
var $530 = 0,
$531 = 0,
$532 = 0,
$533 = 0,
$534 = 0,
$535 = 0,
$536 = 0,
$537 = 0,
$538 = 0,
$539 = 0,
$54 = 0,
$540 = 0,
$541 = 0,
$542 = 0,
$543 = 0,
$544 = 0,
$545 = 0,
$546 = 0,
$547 = 0,
$548 = 0;
var $549 = 0,
$55 = 0,
$550 = 0,
$551 = 0,
$552 = 0,
$553 = 0,
$554 = 0,
$555 = 0,
$556 = 0,
$557 = 0,
$558 = 0,
$559 = 0,
$56 = 0,
$560 = 0,
$561 = 0,
$562 = 0,
$563 = 0,
$564 = 0,
$565 = 0,
$566 = 0;
var $567 = 0,
$568 = 0,
$569 = 0,
$57 = 0,
$570 = 0,
$571 = 0,
$572 = 0,
$573 = 0,
$574 = 0,
$575 = 0,
$576 = 0,
$577 = 0,
$578 = 0,
$579 = 0,
$58 = 0,
$580 = 0,
$581 = 0,
$582 = 0,
$583 = 0,
$584 = 0;
var $585 = 0,
$586 = 0,
$587 = 0,
$588 = 0,
$589 = 0,
$59 = 0,
$590 = 0,
$591 = 0,
$592 = 0,
$593 = 0,
$594 = 0,
$595 = 0,
$596 = 0,
$597 = 0,
$598 = 0,
$599 = 0,
$6 = 0,
$60 = 0,
$600 = 0,
$601 = 0;
var $602 = 0,
$603 = 0,
$604 = 0,
$605 = 0,
$606 = 0,
$607 = 0,
$608 = 0,
$609 = 0,
$61 = 0,
$610 = 0,
$611 = 0,
$612 = 0,
$613 = 0,
$614 = 0,
$615 = 0,
$616 = 0,
$617 = 0,
$618 = 0,
$619 = 0,
$62 = 0;
var $620 = 0,
$621 = 0,
$622 = 0,
$623 = 0,
$624 = 0,
$625 = 0,
$626 = 0,
$627 = 0,
$628 = 0,
$629 = 0,
$63 = 0,
$630 = 0,
$631 = 0,
$632 = 0,
$633 = 0,
$634 = 0,
$635 = 0,
$636 = 0,
$637 = 0,
$638 = 0;
var $639 = 0,
$64 = 0,
$640 = 0,
$641 = 0,
$642 = 0,
$643 = 0,
$644 = 0,
$645 = 0,
$646 = 0,
$647 = 0,
$648 = 0,
$649 = 0,
$65 = 0,
$650 = 0,
$651 = 0,
$652 = 0,
$653 = 0,
$654 = 0,
$655 = 0,
$656 = 0;
var $657 = 0,
$658 = 0,
$659 = 0,
$66 = 0,
$660 = 0,
$661 = 0,
$662 = 0,
$663 = 0,
$664 = 0,
$665 = 0,
$666 = 0,
$667 = 0,
$668 = 0,
$669 = 0,
$67 = 0,
$670 = 0,
$671 = 0,
$672 = 0,
$673 = 0,
$674 = 0;
var $675 = 0,
$676 = 0,
$677 = 0,
$678 = 0,
$679 = 0,
$68 = 0,
$680 = 0,
$681 = 0,
$682 = 0,
$683 = 0,
$684 = 0,
$685 = 0,
$686 = 0,
$687 = 0,
$688 = 0,
$689 = 0,
$69 = 0,
$690 = 0,
$691 = 0,
$692 = 0;
var $693 = 0,
$694 = 0,
$695 = 0,
$696 = 0,
$697 = 0,
$698 = 0,
$699 = 0,
$7 = 0,
$70 = 0,
$700 = 0,
$701 = 0,
$702 = 0,
$703 = 0,
$704 = 0,
$705 = 0,
$706 = 0,
$707 = 0,
$708 = 0,
$709 = 0,
$71 = 0;
var $710 = 0,
$711 = 0,
$712 = 0,
$713 = 0,
$714 = 0,
$715 = 0,
$716 = 0,
$717 = 0,
$718 = 0,
$719 = 0,
$72 = 0,
$720 = 0,
$721 = 0,
$722 = 0,
$723 = 0,
$724 = 0,
$725 = 0,
$726 = 0,
$727 = 0,
$728 = 0;
var $729 = 0,
$73 = 0,
$730 = 0,
$731 = 0,
$732 = 0,
$733 = 0,
$734 = 0,
$735 = 0,
$736 = 0,
$737 = 0,
$738 = 0,
$739 = 0,
$74 = 0,
$740 = 0,
$741 = 0,
$742 = 0,
$743 = 0,
$744 = 0,
$745 = 0,
$746 = 0;
var $747 = 0,
$748 = 0,
$749 = 0,
$75 = 0,
$750 = 0,
$751 = 0,
$752 = 0,
$753 = 0,
$754 = 0,
$755 = 0,
$756 = 0,
$757 = 0,
$758 = 0,
$759 = 0,
$76 = 0,
$760 = 0,
$761 = 0,
$762 = 0,
$763 = 0,
$764 = 0;
var $765 = 0,
$766 = 0,
$767 = 0,
$768 = 0,
$769 = 0,
$77 = 0,
$770 = 0,
$771 = 0,
$772 = 0,
$773 = 0,
$774 = 0,
$775 = 0,
$776 = 0,
$777 = 0,
$778 = 0,
$779 = 0,
$78 = 0,
$780 = 0,
$781 = 0,
$782 = 0;
var $783 = 0,
$784 = 0,
$785 = 0,
$786 = 0,
$787 = 0,
$788 = 0,
$789 = 0,
$79 = 0,
$790 = 0,
$791 = 0,
$792 = 0,
$793 = 0,
$794 = 0,
$795 = 0,
$796 = 0,
$797 = 0,
$798 = 0,
$799 = 0,
$8 = 0,
$80 = 0;
var $800 = 0,
$801 = 0,
$802 = 0,
$803 = 0,
$804 = 0,
$805 = 0,
$806 = 0,
$807 = 0,
$808 = 0,
$809 = 0,
$81 = 0,
$810 = 0,
$811 = 0,
$812 = 0,
$813 = 0,
$814 = 0,
$815 = 0,
$816 = 0,
$817 = 0,
$818 = 0;
var $819 = 0,
$82 = 0,
$820 = 0,
$821 = 0,
$822 = 0,
$823 = 0,
$824 = 0,
$825 = 0,
$826 = 0,
$827 = 0,
$828 = 0,
$829 = 0,
$83 = 0,
$830 = 0,
$831 = 0,
$832 = 0,
$833 = 0,
$834 = 0,
$835 = 0,
$836 = 0;
var $837 = 0,
$838 = 0,
$839 = 0,
$84 = 0,
$840 = 0,
$841 = 0,
$842 = 0,
$843 = 0,
$844 = 0,
$845 = 0,
$846 = 0,
$847 = 0,
$848 = 0,
$849 = 0,
$85 = 0,
$850 = 0,
$851 = 0,
$852 = 0,
$853 = 0,
$854 = 0;
var $855 = 0,
$856 = 0,
$857 = 0,
$858 = 0,
$859 = 0,
$86 = 0,
$860 = 0,
$861 = 0,
$862 = 0,
$863 = 0,
$864 = 0,
$865 = 0,
$866 = 0,
$867 = 0,
$868 = 0,
$869 = 0,
$87 = 0,
$870 = 0,
$871 = 0,
$872 = 0;
var $873 = 0,
$874 = 0,
$875 = 0,
$876 = 0,
$877 = 0,
$878 = 0,
$879 = 0,
$88 = 0,
$880 = 0,
$881 = 0,
$882 = 0,
$883 = 0,
$884 = 0,
$885 = 0,
$886 = 0,
$887 = 0,
$888 = 0,
$889 = 0,
$89 = 0,
$890 = 0;
var $891 = 0,
$892 = 0,
$893 = 0,
$894 = 0,
$895 = 0,
$896 = 0,
$897 = 0,
$898 = 0,
$899 = 0,
$9 = 0,
$90 = 0,
$900 = 0,
$901 = 0,
$902 = 0,
$903 = 0,
$904 = 0,
$905 = 0,
$906 = 0,
$907 = 0,
$908 = 0;
var $909 = 0,
$91 = 0,
$910 = 0,
$911 = 0,
$912 = 0,
$913 = 0,
$914 = 0,
$915 = 0,
$916 = 0,
$917 = 0,
$918 = 0,
$919 = 0,
$92 = 0,
$920 = 0,
$921 = 0,
$922 = 0,
$923 = 0,
$924 = 0,
$925 = 0,
$926 = 0;
var $927 = 0,
$928 = 0,
$929 = 0,
$93 = 0,
$930 = 0,
$931 = 0,
$932 = 0,
$933 = 0,
$934 = 0,
$935 = 0,
$936 = 0,
$937 = 0,
$938 = 0,
$939 = 0,
$94 = 0,
$940 = 0,
$941 = 0,
$942 = 0,
$943 = 0,
$944 = 0;
var $945 = 0,
$946 = 0,
$947 = 0,
$948 = 0,
$949 = 0,
$95 = 0,
$950 = 0,
$951 = 0,
$952 = 0,
$953 = 0,
$96 = 0,
$97 = 0,
$98 = 0,
$99 = 0,
$W = 0,
$exitcond = 0,
$exitcond19 = 0,
$i$011 = 0,
$i$110 = 0,
$i$29 = 0;
var label = 0,
sp = 0;
sp = STACKTOP;
STACKTOP = (STACKTOP + 640) | 0;
$W = sp;
$i$011 = 0;
while (1) {
$0 = $i$011 << 3;
$1 = ($data + $0) | 0;
$2 = _sph_dec64be_aligned($1) | 0;
$3 = tempRet0;
$4 = ($W + ($i$011 << 3)) | 0;
$5 = $4;
$6 = $5;
HEAP32[$6 >> 2] = $2;
$7 = ($5 + 4) | 0;
$8 = $7;
HEAP32[$8 >> 2] = $3;
$9 = ($i$011 + 1) | 0;
$exitcond19 = ($9 | 0) == 16;
if ($exitcond19) {
$i$110 = 16;
break;
} else {
$i$011 = $9;
}
}
while (1) {
$10 = ($i$110 + -2) | 0;
$11 = ($W + ($10 << 3)) | 0;
$12 = $11;
$13 = $12;
$14 = HEAP32[$13 >> 2] | 0;
$15 = ($12 + 4) | 0;
$16 = $15;
$17 = HEAP32[$16 >> 2] | 0;
$18 = _bitshift64Shl($14 | 0, $17 | 0, 45) | 0;
$19 = tempRet0;
$20 = _bitshift64Lshr($14 | 0, $17 | 0, 19) | 0;
$21 = tempRet0;
$22 = $18 | $20;
$23 = $19 | $21;
$24 = _bitshift64Shl($14 | 0, $17 | 0, 3) | 0;
$25 = tempRet0;
$26 = _bitshift64Lshr($14 | 0, $17 | 0, 61) | 0;
$27 = tempRet0;
$28 = $24 | $26;
$29 = $25 | $27;
$30 = _bitshift64Lshr($14 | 0, $17 | 0, 6) | 0;
$31 = tempRet0;
$32 = $28 ^ $30;
$33 = $29 ^ $31;
$34 = $32 ^ $22;
$35 = $33 ^ $23;
$36 = ($i$110 + -7) | 0;
$37 = ($W + ($36 << 3)) | 0;
$38 = $37;
$39 = $38;
$40 = HEAP32[$39 >> 2] | 0;
$41 = ($38 + 4) | 0;
$42 = $41;
$43 = HEAP32[$42 >> 2] | 0;
$44 = ($i$110 + -15) | 0;
$45 = ($W + ($44 << 3)) | 0;
$46 = $45;
$47 = $46;
$48 = HEAP32[$47 >> 2] | 0;
$49 = ($46 + 4) | 0;
$50 = $49;
$51 = HEAP32[$50 >> 2] | 0;
$52 = _bitshift64Shl($48 | 0, $51 | 0, 63) | 0;
$53 = tempRet0;
$54 = _bitshift64Lshr($48 | 0, $51 | 0, 1) | 0;
$55 = tempRet0;
$56 = $52 | $54;
$57 = $53 | $55;
$58 = _bitshift64Shl($48 | 0, $51 | 0, 56) | 0;
$59 = tempRet0;
$60 = _bitshift64Lshr($48 | 0, $51 | 0, 8) | 0;
$61 = tempRet0;
$62 = $58 | $60;
$63 = $59 | $61;
$64 = _bitshift64Lshr($48 | 0, $51 | 0, 7) | 0;
$65 = tempRet0;
$66 = $62 ^ $64;
$67 = $63 ^ $65;
$68 = $66 ^ $56;
$69 = $67 ^ $57;
$70 = ($i$110 + -16) | 0;
$71 = ($W + ($70 << 3)) | 0;
$72 = $71;
$73 = $72;
$74 = HEAP32[$73 >> 2] | 0;
$75 = ($72 + 4) | 0;
$76 = $75;
$77 = HEAP32[$76 >> 2] | 0;
$78 = _i64Add($74 | 0, $77 | 0, $40 | 0, $43 | 0) | 0;
$79 = tempRet0;
$80 = _i64Add($78 | 0, $79 | 0, $34 | 0, $35 | 0) | 0;
$81 = tempRet0;
$82 = _i64Add($80 | 0, $81 | 0, $68 | 0, $69 | 0) | 0;
$83 = tempRet0;
$84 = ($W + ($i$110 << 3)) | 0;
$85 = $84;
$86 = $85;
HEAP32[$86 >> 2] = $82;
$87 = ($85 + 4) | 0;
$88 = $87;
HEAP32[$88 >> 2] = $83;
$89 = ($i$110 + 1) | 0;
$exitcond = ($89 | 0) == 80;
if ($exitcond) {
break;
} else {
$i$110 = $89;
}
}
$90 = $r;
$91 = $90;
$92 = HEAP32[$91 >> 2] | 0;
$93 = ($90 + 4) | 0;
$94 = $93;
$95 = HEAP32[$94 >> 2] | 0;
$96 = ($r + 8) | 0;
$97 = $96;
$98 = $97;
$99 = HEAP32[$98 >> 2] | 0;
$100 = ($97 + 4) | 0;
$101 = $100;
$102 = HEAP32[$101 >> 2] | 0;
$103 = ($r + 16) | 0;
$104 = $103;
$105 = $104;
$106 = HEAP32[$105 >> 2] | 0;
$107 = ($104 + 4) | 0;
$108 = $107;
$109 = HEAP32[$108 >> 2] | 0;
$110 = ($r + 24) | 0;
$111 = $110;
$112 = $111;
$113 = HEAP32[$112 >> 2] | 0;
$114 = ($111 + 4) | 0;
$115 = $114;
$116 = HEAP32[$115 >> 2] | 0;
$117 = ($r + 32) | 0;
$118 = $117;
$119 = $118;
$120 = HEAP32[$119 >> 2] | 0;
$121 = ($118 + 4) | 0;
$122 = $121;
$123 = HEAP32[$122 >> 2] | 0;
$124 = ($r + 40) | 0;
$125 = $124;
$126 = $125;
$127 = HEAP32[$126 >> 2] | 0;
$128 = ($125 + 4) | 0;
$129 = $128;
$130 = HEAP32[$129 >> 2] | 0;
$131 = ($r + 48) | 0;
$132 = $131;
$133 = $132;
$134 = HEAP32[$133 >> 2] | 0;
$135 = ($132 + 4) | 0;
$136 = $135;
$137 = HEAP32[$136 >> 2] | 0;
$138 = ($r + 56) | 0;
$139 = $138;
$140 = $139;
$141 = HEAP32[$140 >> 2] | 0;
$142 = ($139 + 4) | 0;
$143 = $142;
$144 = HEAP32[$143 >> 2] | 0;
$145 = $120;
$146 = $123;
$170 = $134;
$171 = $127;
$173 = $137;
$174 = $130;
$193 = $141;
$194 = $144;
$203 = $92;
$204 = $95;
$228 = $99;
$230 = $102;
$234 = $106;
$236 = $109;
$241 = $113;
$242 = $116;
$i$29 = 0;
while (1) {
$147 = _bitshift64Shl($145 | 0, $146 | 0, 50) | 0;
$148 = tempRet0;
$149 = _bitshift64Lshr($145 | 0, $146 | 0, 14) | 0;
$150 = tempRet0;
$151 = $147 | $149;
$152 = $148 | $150;
$153 = _bitshift64Shl($145 | 0, $146 | 0, 46) | 0;
$154 = tempRet0;
$155 = _bitshift64Lshr($145 | 0, $146 | 0, 18) | 0;
$156 = tempRet0;
$157 = $153 | $155;
$158 = $154 | $156;
$159 = $151 ^ $157;
$160 = $152 ^ $158;
$161 = _bitshift64Shl($145 | 0, $146 | 0, 23) | 0;
$162 = tempRet0;
$163 = _bitshift64Lshr($145 | 0, $146 | 0, 41) | 0;
$164 = tempRet0;
$165 = $161 | $163;
$166 = $162 | $164;
$167 = $159 ^ $165;
$168 = $160 ^ $166;
$169 = $171 ^ $170;
$172 = $174 ^ $173;
$175 = $169 & $145;
$176 = $172 & $146;
$177 = $175 ^ $170;
$178 = $176 ^ $173;
$179 = (31904 + ($i$29 << 3)) | 0;
$180 = $179;
$181 = $180;
$182 = HEAP32[$181 >> 2] | 0;
$183 = ($180 + 4) | 0;
$184 = $183;
$185 = HEAP32[$184 >> 2] | 0;
$186 = ($W + ($i$29 << 3)) | 0;
$187 = $186;
$188 = $187;
$189 = HEAP32[$188 >> 2] | 0;
$190 = ($187 + 4) | 0;
$191 = $190;
$192 = HEAP32[$191 >> 2] | 0;
$195 = _i64Add($177 | 0, $178 | 0, $193 | 0, $194 | 0) | 0;
$196 = tempRet0;
$197 = _i64Add($195 | 0, $196 | 0, $167 | 0, $168 | 0) | 0;
$198 = tempRet0;
$199 = _i64Add($197 | 0, $198 | 0, $182 | 0, $185 | 0) | 0;
$200 = tempRet0;
$201 = _i64Add($199 | 0, $200 | 0, $189 | 0, $192 | 0) | 0;
$202 = tempRet0;
$205 = _bitshift64Shl($203 | 0, $204 | 0, 36) | 0;
$206 = tempRet0;
$207 = _bitshift64Lshr($203 | 0, $204 | 0, 28) | 0;
$208 = tempRet0;
$209 = $205 | $207;
$210 = $206 | $208;
$211 = _bitshift64Shl($203 | 0, $204 | 0, 30) | 0;
$212 = tempRet0;
$213 = _bitshift64Lshr($203 | 0, $204 | 0, 34) | 0;
$214 = tempRet0;
$215 = $211 | $213;
$216 = $212 | $214;
$217 = $209 ^ $215;
$218 = $210 ^ $216;
$219 = _bitshift64Shl($203 | 0, $204 | 0, 25) | 0;
$220 = tempRet0;
$221 = _bitshift64Lshr($203 | 0, $204 | 0, 39) | 0;
$222 = tempRet0;
$223 = $219 | $221;
$224 = $220 | $222;
$225 = $217 ^ $223;
$226 = $218 ^ $224;
$227 = $203 & $228;
$229 = $204 & $230;
$231 = $203 | $228;
$232 = $204 | $230;
$233 = $231 & $234;
$235 = $232 & $236;
$237 = $233 | $227;
$238 = $235 | $229;
$239 = _i64Add($225 | 0, $226 | 0, $237 | 0, $238 | 0) | 0;
$240 = tempRet0;
$243 = _i64Add($201 | 0, $202 | 0, $241 | 0, $242 | 0) | 0;
$244 = tempRet0;
$245 = _i64Add($239 | 0, $240 | 0, $201 | 0, $202 | 0) | 0;
$246 = tempRet0;
$247 = _bitshift64Shl($243 | 0, $244 | 0, 50) | 0;
$248 = tempRet0;
$249 = _bitshift64Lshr($243 | 0, $244 | 0, 14) | 0;
$250 = tempRet0;
$251 = $247 | $249;
$252 = $248 | $250;
$253 = _bitshift64Shl($243 | 0, $244 | 0, 46) | 0;
$254 = tempRet0;
$255 = _bitshift64Lshr($243 | 0, $244 | 0, 18) | 0;
$256 = tempRet0;
$257 = $253 | $255;
$258 = $254 | $256;
$259 = $251 ^ $257;
$260 = $252 ^ $258;
$261 = _bitshift64Shl($243 | 0, $244 | 0, 23) | 0;
$262 = tempRet0;
$263 = _bitshift64Lshr($243 | 0, $244 | 0, 41) | 0;
$264 = tempRet0;
$265 = $261 | $263;
$266 = $262 | $264;
$267 = $259 ^ $265;
$268 = $260 ^ $266;
$269 = $145 ^ $171;
$270 = $146 ^ $174;
$271 = $243 & $269;
$272 = $244 & $270;
$273 = $271 ^ $171;
$274 = $272 ^ $174;
$275 = $i$29 | 1;
$276 = (31904 + ($275 << 3)) | 0;
$277 = $276;
$278 = $277;
$279 = HEAP32[$278 >> 2] | 0;
$280 = ($277 + 4) | 0;
$281 = $280;
$282 = HEAP32[$281 >> 2] | 0;
$283 = ($W + ($275 << 3)) | 0;
$284 = $283;
$285 = $284;
$286 = HEAP32[$285 >> 2] | 0;
$287 = ($284 + 4) | 0;
$288 = $287;
$289 = HEAP32[$288 >> 2] | 0;
$290 = _i64Add($279 | 0, $282 | 0, $170 | 0, $173 | 0) | 0;
$291 = tempRet0;
$292 = _i64Add($290 | 0, $291 | 0, $286 | 0, $289 | 0) | 0;
$293 = tempRet0;
$294 = _i64Add($292 | 0, $293 | 0, $273 | 0, $274 | 0) | 0;
$295 = tempRet0;
$296 = _i64Add($294 | 0, $295 | 0, $267 | 0, $268 | 0) | 0;
$297 = tempRet0;
$298 = _bitshift64Shl($245 | 0, $246 | 0, 36) | 0;
$299 = tempRet0;
$300 = _bitshift64Lshr($245 | 0, $246 | 0, 28) | 0;
$301 = tempRet0;
$302 = $298 | $300;
$303 = $299 | $301;
$304 = _bitshift64Shl($245 | 0, $246 | 0, 30) | 0;
$305 = tempRet0;
$306 = _bitshift64Lshr($245 | 0, $246 | 0, 34) | 0;
$307 = tempRet0;
$308 = $304 | $306;
$309 = $305 | $307;
$310 = $302 ^ $308;
$311 = $303 ^ $309;
$312 = _bitshift64Shl($245 | 0, $246 | 0, 25) | 0;
$313 = tempRet0;
$314 = _bitshift64Lshr($245 | 0, $246 | 0, 39) | 0;
$315 = tempRet0;
$316 = $312 | $314;
$317 = $313 | $315;
$318 = $310 ^ $316;
$319 = $311 ^ $317;
$320 = $245 & $203;
$321 = $246 & $204;
$322 = $245 | $203;
$323 = $246 | $204;
$324 = $322 & $228;
$325 = $323 & $230;
$326 = $324 | $320;
$327 = $325 | $321;
$328 = _i64Add($318 | 0, $319 | 0, $326 | 0, $327 | 0) | 0;
$329 = tempRet0;
$330 = _i64Add($296 | 0, $297 | 0, $234 | 0, $236 | 0) | 0;
$331 = tempRet0;
$332 = _i64Add($328 | 0, $329 | 0, $296 | 0, $297 | 0) | 0;
$333 = tempRet0;
$334 = _bitshift64Shl($330 | 0, $331 | 0, 50) | 0;
$335 = tempRet0;
$336 = _bitshift64Lshr($330 | 0, $331 | 0, 14) | 0;
$337 = tempRet0;
$338 = $334 | $336;
$339 = $335 | $337;
$340 = _bitshift64Shl($330 | 0, $331 | 0, 46) | 0;
$341 = tempRet0;
$342 = _bitshift64Lshr($330 | 0, $331 | 0, 18) | 0;
$343 = tempRet0;
$344 = $340 | $342;
$345 = $341 | $343;
$346 = $338 ^ $344;
$347 = $339 ^ $345;
$348 = _bitshift64Shl($330 | 0, $331 | 0, 23) | 0;
$349 = tempRet0;
$350 = _bitshift64Lshr($330 | 0, $331 | 0, 41) | 0;
$351 = tempRet0;
$352 = $348 | $350;
$353 = $349 | $351;
$354 = $346 ^ $352;
$355 = $347 ^ $353;
$356 = $243 ^ $145;
$357 = $244 ^ $146;
$358 = $330 & $356;
$359 = $331 & $357;
$360 = $358 ^ $145;
$361 = $359 ^ $146;
$362 = $i$29 | 2;
$363 = (31904 + ($362 << 3)) | 0;
$364 = $363;
$365 = $364;
$366 = HEAP32[$365 >> 2] | 0;
$367 = ($364 + 4) | 0;
$368 = $367;
$369 = HEAP32[$368 >> 2] | 0;
$370 = ($W + ($362 << 3)) | 0;
$371 = $370;
$372 = $371;
$373 = HEAP32[$372 >> 2] | 0;
$374 = ($371 + 4) | 0;
$375 = $374;
$376 = HEAP32[$375 >> 2] | 0;
$377 = _i64Add($366 | 0, $369 | 0, $171 | 0, $174 | 0) | 0;
$378 = tempRet0;
$379 = _i64Add($377 | 0, $378 | 0, $373 | 0, $376 | 0) | 0;
$380 = tempRet0;
$381 = _i64Add($379 | 0, $380 | 0, $360 | 0, $361 | 0) | 0;
$382 = tempRet0;
$383 = _i64Add($381 | 0, $382 | 0, $354 | 0, $355 | 0) | 0;
$384 = tempRet0;
$385 = _bitshift64Shl($332 | 0, $333 | 0, 36) | 0;
$386 = tempRet0;
$387 = _bitshift64Lshr($332 | 0, $333 | 0, 28) | 0;
$388 = tempRet0;
$389 = $385 | $387;
$390 = $386 | $388;
$391 = _bitshift64Shl($332 | 0, $333 | 0, 30) | 0;
$392 = tempRet0;
$393 = _bitshift64Lshr($332 | 0, $333 | 0, 34) | 0;
$394 = tempRet0;
$395 = $391 | $393;
$396 = $392 | $394;
$397 = $389 ^ $395;
$398 = $390 ^ $396;
$399 = _bitshift64Shl($332 | 0, $333 | 0, 25) | 0;
$400 = tempRet0;
$401 = _bitshift64Lshr($332 | 0, $333 | 0, 39) | 0;
$402 = tempRet0;
$403 = $399 | $401;
$404 = $400 | $402;
$405 = $397 ^ $403;
$406 = $398 ^ $404;
$407 = $332 & $245;
$408 = $333 & $246;
$409 = $332 | $245;
$410 = $333 | $246;
$411 = $409 & $203;
$412 = $410 & $204;
$413 = $411 | $407;
$414 = $412 | $408;
$415 = _i64Add($405 | 0, $406 | 0, $413 | 0, $414 | 0) | 0;
$416 = tempRet0;
$417 = _i64Add($383 | 0, $384 | 0, $228 | 0, $230 | 0) | 0;
$418 = tempRet0;
$419 = _i64Add($415 | 0, $416 | 0, $383 | 0, $384 | 0) | 0;
$420 = tempRet0;
$421 = _bitshift64Shl($417 | 0, $418 | 0, 50) | 0;
$422 = tempRet0;
$423 = _bitshift64Lshr($417 | 0, $418 | 0, 14) | 0;
$424 = tempRet0;
$425 = $421 | $423;
$426 = $422 | $424;
$427 = _bitshift64Shl($417 | 0, $418 | 0, 46) | 0;
$428 = tempRet0;
$429 = _bitshift64Lshr($417 | 0, $418 | 0, 18) | 0;
$430 = tempRet0;
$431 = $427 | $429;
$432 = $428 | $430;
$433 = $425 ^ $431;
$434 = $426 ^ $432;
$435 = _bitshift64Shl($417 | 0, $418 | 0, 23) | 0;
$436 = tempRet0;
$437 = _bitshift64Lshr($417 | 0, $418 | 0, 41) | 0;
$438 = tempRet0;
$439 = $435 | $437;
$440 = $436 | $438;
$441 = $433 ^ $439;
$442 = $434 ^ $440;
$443 = $330 ^ $243;
$444 = $331 ^ $244;
$445 = $417 & $443;
$446 = $418 & $444;
$447 = $445 ^ $243;
$448 = $446 ^ $244;
$449 = $i$29 | 3;
$450 = (31904 + ($449 << 3)) | 0;
$451 = $450;
$452 = $451;
$453 = HEAP32[$452 >> 2] | 0;
$454 = ($451 + 4) | 0;
$455 = $454;
$456 = HEAP32[$455 >> 2] | 0;
$457 = ($W + ($449 << 3)) | 0;
$458 = $457;
$459 = $458;
$460 = HEAP32[$459 >> 2] | 0;
$461 = ($458 + 4) | 0;
$462 = $461;
$463 = HEAP32[$462 >> 2] | 0;
$464 = _i64Add($453 | 0, $456 | 0, $145 | 0, $146 | 0) | 0;
$465 = tempRet0;
$466 = _i64Add($464 | 0, $465 | 0, $460 | 0, $463 | 0) | 0;
$467 = tempRet0;
$468 = _i64Add($466 | 0, $467 | 0, $447 | 0, $448 | 0) | 0;
$469 = tempRet0;
$470 = _i64Add($468 | 0, $469 | 0, $441 | 0, $442 | 0) | 0;
$471 = tempRet0;
$472 = _bitshift64Shl($419 | 0, $420 | 0, 36) | 0;
$473 = tempRet0;
$474 = _bitshift64Lshr($419 | 0, $420 | 0, 28) | 0;
$475 = tempRet0;
$476 = $472 | $474;
$477 = $473 | $475;
$478 = _bitshift64Shl($419 | 0, $420 | 0, 30) | 0;
$479 = tempRet0;
$480 = _bitshift64Lshr($419 | 0, $420 | 0, 34) | 0;
$481 = tempRet0;
$482 = $478 | $480;
$483 = $479 | $481;
$484 = $476 ^ $482;
$485 = $477 ^ $483;
$486 = _bitshift64Shl($419 | 0, $420 | 0, 25) | 0;
$487 = tempRet0;
$488 = _bitshift64Lshr($419 | 0, $420 | 0, 39) | 0;
$489 = tempRet0;
$490 = $486 | $488;
$491 = $487 | $489;
$492 = $484 ^ $490;
$493 = $485 ^ $491;
$494 = $419 & $332;
$495 = $420 & $333;
$496 = $419 | $332;
$497 = $420 | $333;
$498 = $496 & $245;
$499 = $497 & $246;
$500 = $498 | $494;
$501 = $499 | $495;
$502 = _i64Add($492 | 0, $493 | 0, $500 | 0, $501 | 0) | 0;
$503 = tempRet0;
$504 = _i64Add($470 | 0, $471 | 0, $203 | 0, $204 | 0) | 0;
$505 = tempRet0;
$506 = _i64Add($502 | 0, $503 | 0, $470 | 0, $471 | 0) | 0;
$507 = tempRet0;
$508 = _bitshift64Shl($504 | 0, $505 | 0, 50) | 0;
$509 = tempRet0;
$510 = _bitshift64Lshr($504 | 0, $505 | 0, 14) | 0;
$511 = tempRet0;
$512 = $508 | $510;
$513 = $509 | $511;
$514 = _bitshift64Shl($504 | 0, $505 | 0, 46) | 0;
$515 = tempRet0;
$516 = _bitshift64Lshr($504 | 0, $505 | 0, 18) | 0;
$517 = tempRet0;
$518 = $514 | $516;
$519 = $515 | $517;
$520 = $512 ^ $518;
$521 = $513 ^ $519;
$522 = _bitshift64Shl($504 | 0, $505 | 0, 23) | 0;
$523 = tempRet0;
$524 = _bitshift64Lshr($504 | 0, $505 | 0, 41) | 0;
$525 = tempRet0;
$526 = $522 | $524;
$527 = $523 | $525;
$528 = $520 ^ $526;
$529 = $521 ^ $527;
$530 = $417 ^ $330;
$531 = $418 ^ $331;
$532 = $504 & $530;
$533 = $505 & $531;
$534 = $532 ^ $330;
$535 = $533 ^ $331;
$536 = $i$29 | 4;
$537 = (31904 + ($536 << 3)) | 0;
$538 = $537;
$539 = $538;
$540 = HEAP32[$539 >> 2] | 0;
$541 = ($538 + 4) | 0;
$542 = $541;
$543 = HEAP32[$542 >> 2] | 0;
$544 = ($W + ($536 << 3)) | 0;
$545 = $544;
$546 = $545;
$547 = HEAP32[$546 >> 2] | 0;
$548 = ($545 + 4) | 0;
$549 = $548;
$550 = HEAP32[$549 >> 2] | 0;
$551 = _i64Add($540 | 0, $543 | 0, $243 | 0, $244 | 0) | 0;
$552 = tempRet0;
$553 = _i64Add($551 | 0, $552 | 0, $547 | 0, $550 | 0) | 0;
$554 = tempRet0;
$555 = _i64Add($553 | 0, $554 | 0, $534 | 0, $535 | 0) | 0;
$556 = tempRet0;
$557 = _i64Add($555 | 0, $556 | 0, $528 | 0, $529 | 0) | 0;
$558 = tempRet0;
$559 = _bitshift64Shl($506 | 0, $507 | 0, 36) | 0;
$560 = tempRet0;
$561 = _bitshift64Lshr($506 | 0, $507 | 0, 28) | 0;
$562 = tempRet0;
$563 = $559 | $561;
$564 = $560 | $562;
$565 = _bitshift64Shl($506 | 0, $507 | 0, 30) | 0;
$566 = tempRet0;
$567 = _bitshift64Lshr($506 | 0, $507 | 0, 34) | 0;
$568 = tempRet0;
$569 = $565 | $567;
$570 = $566 | $568;
$571 = $563 ^ $569;
$572 = $564 ^ $570;
$573 = _bitshift64Shl($506 | 0, $507 | 0, 25) | 0;
$574 = tempRet0;
$575 = _bitshift64Lshr($506 | 0, $507 | 0, 39) | 0;
$576 = tempRet0;
$577 = $573 | $575;
$578 = $574 | $576;
$579 = $571 ^ $577;
$580 = $572 ^ $578;
$581 = $506 & $419;
$582 = $507 & $420;
$583 = $506 | $419;
$584 = $507 | $420;
$585 = $583 & $332;
$586 = $584 & $333;
$587 = $585 | $581;
$588 = $586 | $582;
$589 = _i64Add($579 | 0, $580 | 0, $587 | 0, $588 | 0) | 0;
$590 = tempRet0;
$591 = _i64Add($557 | 0, $558 | 0, $245 | 0, $246 | 0) | 0;
$592 = tempRet0;
$593 = _i64Add($589 | 0, $590 | 0, $557 | 0, $558 | 0) | 0;
$594 = tempRet0;
$595 = _bitshift64Shl($591 | 0, $592 | 0, 50) | 0;
$596 = tempRet0;
$597 = _bitshift64Lshr($591 | 0, $592 | 0, 14) | 0;
$598 = tempRet0;
$599 = $595 | $597;
$600 = $596 | $598;
$601 = _bitshift64Shl($591 | 0, $592 | 0, 46) | 0;
$602 = tempRet0;
$603 = _bitshift64Lshr($591 | 0, $592 | 0, 18) | 0;
$604 = tempRet0;
$605 = $601 | $603;
$606 = $602 | $604;
$607 = $599 ^ $605;
$608 = $600 ^ $606;
$609 = _bitshift64Shl($591 | 0, $592 | 0, 23) | 0;
$610 = tempRet0;
$611 = _bitshift64Lshr($591 | 0, $592 | 0, 41) | 0;
$612 = tempRet0;
$613 = $609 | $611;
$614 = $610 | $612;
$615 = $607 ^ $613;
$616 = $608 ^ $614;
$617 = $504 ^ $417;
$618 = $505 ^ $418;
$619 = $591 & $617;
$620 = $592 & $618;
$621 = $619 ^ $417;
$622 = $620 ^ $418;
$623 = $i$29 | 5;
$624 = (31904 + ($623 << 3)) | 0;
$625 = $624;
$626 = $625;
$627 = HEAP32[$626 >> 2] | 0;
$628 = ($625 + 4) | 0;
$629 = $628;
$630 = HEAP32[$629 >> 2] | 0;
$631 = ($W + ($623 << 3)) | 0;
$632 = $631;
$633 = $632;
$634 = HEAP32[$633 >> 2] | 0;
$635 = ($632 + 4) | 0;
$636 = $635;
$637 = HEAP32[$636 >> 2] | 0;
$638 = _i64Add($627 | 0, $630 | 0, $330 | 0, $331 | 0) | 0;
$639 = tempRet0;
$640 = _i64Add($638 | 0, $639 | 0, $634 | 0, $637 | 0) | 0;
$641 = tempRet0;
$642 = _i64Add($640 | 0, $641 | 0, $621 | 0, $622 | 0) | 0;
$643 = tempRet0;
$644 = _i64Add($642 | 0, $643 | 0, $615 | 0, $616 | 0) | 0;
$645 = tempRet0;
$646 = _bitshift64Shl($593 | 0, $594 | 0, 36) | 0;
$647 = tempRet0;
$648 = _bitshift64Lshr($593 | 0, $594 | 0, 28) | 0;
$649 = tempRet0;
$650 = $646 | $648;
$651 = $647 | $649;
$652 = _bitshift64Shl($593 | 0, $594 | 0, 30) | 0;
$653 = tempRet0;
$654 = _bitshift64Lshr($593 | 0, $594 | 0, 34) | 0;
$655 = tempRet0;
$656 = $652 | $654;
$657 = $653 | $655;
$658 = $650 ^ $656;
$659 = $651 ^ $657;
$660 = _bitshift64Shl($593 | 0, $594 | 0, 25) | 0;
$661 = tempRet0;
$662 = _bitshift64Lshr($593 | 0, $594 | 0, 39) | 0;
$663 = tempRet0;
$664 = $660 | $662;
$665 = $661 | $663;
$666 = $658 ^ $664;
$667 = $659 ^ $665;
$668 = $593 & $506;
$669 = $594 & $507;
$670 = $593 | $506;
$671 = $594 | $507;
$672 = $670 & $419;
$673 = $671 & $420;
$674 = $672 | $668;
$675 = $673 | $669;
$676 = _i64Add($666 | 0, $667 | 0, $674 | 0, $675 | 0) | 0;
$677 = tempRet0;
$678 = _i64Add($644 | 0, $645 | 0, $332 | 0, $333 | 0) | 0;
$679 = tempRet0;
$680 = _i64Add($676 | 0, $677 | 0, $644 | 0, $645 | 0) | 0;
$681 = tempRet0;
$682 = _bitshift64Shl($678 | 0, $679 | 0, 50) | 0;
$683 = tempRet0;
$684 = _bitshift64Lshr($678 | 0, $679 | 0, 14) | 0;
$685 = tempRet0;
$686 = $682 | $684;
$687 = $683 | $685;
$688 = _bitshift64Shl($678 | 0, $679 | 0, 46) | 0;
$689 = tempRet0;
$690 = _bitshift64Lshr($678 | 0, $679 | 0, 18) | 0;
$691 = tempRet0;
$692 = $688 | $690;
$693 = $689 | $691;
$694 = $686 ^ $692;
$695 = $687 ^ $693;
$696 = _bitshift64Shl($678 | 0, $679 | 0, 23) | 0;
$697 = tempRet0;
$698 = _bitshift64Lshr($678 | 0, $679 | 0, 41) | 0;
$699 = tempRet0;
$700 = $696 | $698;
$701 = $697 | $699;
$702 = $694 ^ $700;
$703 = $695 ^ $701;
$704 = $591 ^ $504;
$705 = $592 ^ $505;
$706 = $678 & $704;
$707 = $679 & $705;
$708 = $706 ^ $504;
$709 = $707 ^ $505;
$710 = $i$29 | 6;
$711 = (31904 + ($710 << 3)) | 0;
$712 = $711;
$713 = $712;
$714 = HEAP32[$713 >> 2] | 0;
$715 = ($712 + 4) | 0;
$716 = $715;
$717 = HEAP32[$716 >> 2] | 0;
$718 = ($W + ($710 << 3)) | 0;
$719 = $718;
$720 = $719;
$721 = HEAP32[$720 >> 2] | 0;
$722 = ($719 + 4) | 0;
$723 = $722;
$724 = HEAP32[$723 >> 2] | 0;
$725 = _i64Add($721 | 0, $724 | 0, $714 | 0, $717 | 0) | 0;
$726 = tempRet0;
$727 = _i64Add($725 | 0, $726 | 0, $417 | 0, $418 | 0) | 0;
$728 = tempRet0;
$729 = _i64Add($727 | 0, $728 | 0, $708 | 0, $709 | 0) | 0;
$730 = tempRet0;
$731 = _i64Add($729 | 0, $730 | 0, $702 | 0, $703 | 0) | 0;
$732 = tempRet0;
$733 = _bitshift64Shl($680 | 0, $681 | 0, 36) | 0;
$734 = tempRet0;
$735 = _bitshift64Lshr($680 | 0, $681 | 0, 28) | 0;
$736 = tempRet0;
$737 = $733 | $735;
$738 = $734 | $736;
$739 = _bitshift64Shl($680 | 0, $681 | 0, 30) | 0;
$740 = tempRet0;
$741 = _bitshift64Lshr($680 | 0, $681 | 0, 34) | 0;
$742 = tempRet0;
$743 = $739 | $741;
$744 = $740 | $742;
$745 = $737 ^ $743;
$746 = $738 ^ $744;
$747 = _bitshift64Shl($680 | 0, $681 | 0, 25) | 0;
$748 = tempRet0;
$749 = _bitshift64Lshr($680 | 0, $681 | 0, 39) | 0;
$750 = tempRet0;
$751 = $747 | $749;
$752 = $748 | $750;
$753 = $745 ^ $751;
$754 = $746 ^ $752;
$755 = $680 & $593;
$756 = $681 & $594;
$757 = $680 | $593;
$758 = $681 | $594;
$759 = $757 & $506;
$760 = $758 & $507;
$761 = $759 | $755;
$762 = $760 | $756;
$763 = _i64Add($753 | 0, $754 | 0, $761 | 0, $762 | 0) | 0;
$764 = tempRet0;
$765 = _i64Add($731 | 0, $732 | 0, $419 | 0, $420 | 0) | 0;
$766 = tempRet0;
$767 = _i64Add($763 | 0, $764 | 0, $731 | 0, $732 | 0) | 0;
$768 = tempRet0;
$769 = _bitshift64Shl($765 | 0, $766 | 0, 50) | 0;
$770 = tempRet0;
$771 = _bitshift64Lshr($765 | 0, $766 | 0, 14) | 0;
$772 = tempRet0;
$773 = $769 | $771;
$774 = $770 | $772;
$775 = _bitshift64Shl($765 | 0, $766 | 0, 46) | 0;
$776 = tempRet0;
$777 = _bitshift64Lshr($765 | 0, $766 | 0, 18) | 0;
$778 = tempRet0;
$779 = $775 | $777;
$780 = $776 | $778;
$781 = $773 ^ $779;
$782 = $774 ^ $780;
$783 = _bitshift64Shl($765 | 0, $766 | 0, 23) | 0;
$784 = tempRet0;
$785 = _bitshift64Lshr($765 | 0, $766 | 0, 41) | 0;
$786 = tempRet0;
$787 = $783 | $785;
$788 = $784 | $786;
$789 = $781 ^ $787;
$790 = $782 ^ $788;
$791 = $678 ^ $591;
$792 = $679 ^ $592;
$793 = $765 & $791;
$794 = $766 & $792;
$795 = $793 ^ $591;
$796 = $794 ^ $592;
$797 = $i$29 | 7;
$798 = (31904 + ($797 << 3)) | 0;
$799 = $798;
$800 = $799;
$801 = HEAP32[$800 >> 2] | 0;
$802 = ($799 + 4) | 0;
$803 = $802;
$804 = HEAP32[$803 >> 2] | 0;
$805 = ($W + ($797 << 3)) | 0;
$806 = $805;
$807 = $806;
$808 = HEAP32[$807 >> 2] | 0;
$809 = ($806 + 4) | 0;
$810 = $809;
$811 = HEAP32[$810 >> 2] | 0;
$812 = _i64Add($808 | 0, $811 | 0, $801 | 0, $804 | 0) | 0;
$813 = tempRet0;
$814 = _i64Add($812 | 0, $813 | 0, $504 | 0, $505 | 0) | 0;
$815 = tempRet0;
$816 = _i64Add($814 | 0, $815 | 0, $795 | 0, $796 | 0) | 0;
$817 = tempRet0;
$818 = _i64Add($816 | 0, $817 | 0, $789 | 0, $790 | 0) | 0;
$819 = tempRet0;
$820 = _bitshift64Shl($767 | 0, $768 | 0, 36) | 0;
$821 = tempRet0;
$822 = _bitshift64Lshr($767 | 0, $768 | 0, 28) | 0;
$823 = tempRet0;
$824 = $820 | $822;
$825 = $821 | $823;
$826 = _bitshift64Shl($767 | 0, $768 | 0, 30) | 0;
$827 = tempRet0;
$828 = _bitshift64Lshr($767 | 0, $768 | 0, 34) | 0;
$829 = tempRet0;
$830 = $826 | $828;
$831 = $827 | $829;
$832 = $824 ^ $830;
$833 = $825 ^ $831;
$834 = _bitshift64Shl($767 | 0, $768 | 0, 25) | 0;
$835 = tempRet0;
$836 = _bitshift64Lshr($767 | 0, $768 | 0, 39) | 0;
$837 = tempRet0;
$838 = $834 | $836;
$839 = $835 | $837;
$840 = $832 ^ $838;
$841 = $833 ^ $839;
$842 = $767 & $680;
$843 = $768 & $681;
$844 = $767 | $680;
$845 = $768 | $681;
$846 = $844 & $593;
$847 = $845 & $594;
$848 = $846 | $842;
$849 = $847 | $843;
$850 = _i64Add($840 | 0, $841 | 0, $848 | 0, $849 | 0) | 0;
$851 = tempRet0;
$852 = _i64Add($818 | 0, $819 | 0, $506 | 0, $507 | 0) | 0;
$853 = tempRet0;
$854 = _i64Add($850 | 0, $851 | 0, $818 | 0, $819 | 0) | 0;
$855 = tempRet0;
$856 = ($i$29 + 8) | 0;
$857 = ($856 | 0) < 80;
if ($857) {
$145 = $852;
$146 = $853;
$170 = $678;
$171 = $765;
$173 = $679;
$174 = $766;
$193 = $591;
$194 = $592;
$203 = $854;
$204 = $855;
$228 = $767;
$230 = $768;
$234 = $680;
$236 = $681;
$241 = $593;
$242 = $594;
$i$29 = $856;
} else {
break;
}
}
$858 = $r;
$859 = $858;
$860 = HEAP32[$859 >> 2] | 0;
$861 = ($858 + 4) | 0;
$862 = $861;
$863 = HEAP32[$862 >> 2] | 0;
$864 = _i64Add($860 | 0, $863 | 0, $854 | 0, $855 | 0) | 0;
$865 = tempRet0;
$866 = $r;
$867 = $866;
HEAP32[$867 >> 2] = $864;
$868 = ($866 + 4) | 0;
$869 = $868;
HEAP32[$869 >> 2] = $865;
$870 = $96;
$871 = $870;
$872 = HEAP32[$871 >> 2] | 0;
$873 = ($870 + 4) | 0;
$874 = $873;
$875 = HEAP32[$874 >> 2] | 0;
$876 = _i64Add($872 | 0, $875 | 0, $767 | 0, $768 | 0) | 0;
$877 = tempRet0;
$878 = $96;
$879 = $878;
HEAP32[$879 >> 2] = $876;
$880 = ($878 + 4) | 0;
$881 = $880;
HEAP32[$881 >> 2] = $877;
$882 = $103;
$883 = $882;
$884 = HEAP32[$883 >> 2] | 0;
$885 = ($882 + 4) | 0;
$886 = $885;
$887 = HEAP32[$886 >> 2] | 0;
$888 = _i64Add($884 | 0, $887 | 0, $680 | 0, $681 | 0) | 0;
$889 = tempRet0;
$890 = $103;
$891 = $890;
HEAP32[$891 >> 2] = $888;
$892 = ($890 + 4) | 0;
$893 = $892;
HEAP32[$893 >> 2] = $889;
$894 = $110;
$895 = $894;
$896 = HEAP32[$895 >> 2] | 0;
$897 = ($894 + 4) | 0;
$898 = $897;
$899 = HEAP32[$898 >> 2] | 0;
$900 = _i64Add($896 | 0, $899 | 0, $593 | 0, $594 | 0) | 0;
$901 = tempRet0;
$902 = $110;
$903 = $902;
HEAP32[$903 >> 2] = $900;
$904 = ($902 + 4) | 0;
$905 = $904;
HEAP32[$905 >> 2] = $901;
$906 = $117;
$907 = $906;
$908 = HEAP32[$907 >> 2] | 0;
$909 = ($906 + 4) | 0;
$910 = $909;
$911 = HEAP32[$910 >> 2] | 0;
$912 = _i64Add($908 | 0, $911 | 0, $852 | 0, $853 | 0) | 0;
$913 = tempRet0;
$914 = $117;
$915 = $914;
HEAP32[$915 >> 2] = $912;
$916 = ($914 + 4) | 0;
$917 = $916;
HEAP32[$917 >> 2] = $913;
$918 = $124;
$919 = $918;
$920 = HEAP32[$919 >> 2] | 0;
$921 = ($918 + 4) | 0;
$922 = $921;
$923 = HEAP32[$922 >> 2] | 0;
$924 = _i64Add($920 | 0, $923 | 0, $765 | 0, $766 | 0) | 0;
$925 = tempRet0;
$926 = $124;
$927 = $926;
HEAP32[$927 >> 2] = $924;
$928 = ($926 + 4) | 0;
$929 = $928;
HEAP32[$929 >> 2] = $925;
$930 = $131;
$931 = $930;
$932 = HEAP32[$931 >> 2] | 0;
$933 = ($930 + 4) | 0;
$934 = $933;
$935 = HEAP32[$934 >> 2] | 0;
$936 = _i64Add($932 | 0, $935 | 0, $678 | 0, $679 | 0) | 0;
$937 = tempRet0;
$938 = $131;
$939 = $938;
HEAP32[$939 >> 2] = $936;
$940 = ($938 + 4) | 0;
$941 = $940;
HEAP32[$941 >> 2] = $937;
$942 = $138;
$943 = $942;
$944 = HEAP32[$943 >> 2] | 0;
$945 = ($942 + 4) | 0;
$946 = $945;
$947 = HEAP32[$946 >> 2] | 0;
$948 = _i64Add($944 | 0, $947 | 0, $591 | 0, $592 | 0) | 0;
$949 = tempRet0;
$950 = $138;
$951 = $950;
HEAP32[$951 >> 2] = $948;
$952 = ($950 + 4) | 0;
$953 = $952;
HEAP32[$953 >> 2] = $949;
STACKTOP = sp;
return;
}
function _sha384_close($cc, $dst, $rnum) {
$cc = $cc | 0;
$dst = $dst | 0;
$rnum = $rnum | 0;
var label = 0,
sp = 0;
sp = STACKTOP;
_sha384_addbits_and_close($cc, 0, 0, $dst, $rnum);
STACKTOP = sp;
return;
}
function _sha384_addbits_and_close($cc, $ub, $n, $dst, $rnum) {
$cc = $cc | 0;
$ub = $ub | 0;
$n = $n | 0;
$dst = $dst | 0;
$rnum = $rnum | 0;
var $0 = 0,
$1 = 0,
$10 = 0,
$11 = 0,
$12 = 0,
$13 = 0,
$14 = 0,
$15 = 0,
$16 = 0,
$17 = 0,
$18 = 0,
$19 = 0,
$2 = 0,
$20 = 0,
$21 = 0,
$22 = 0,
$23 = 0,
$24 = 0,
$25 = 0,
$26 = 0;
var $27 = 0,
$28 = 0,
$29 = 0,
$3 = 0,
$30 = 0,
$31 = 0,
$32 = 0,
$33 = 0,
$34 = 0,
$35 = 0,
$36 = 0,
$37 = 0,
$38 = 0,
$39 = 0,
$4 = 0,
$40 = 0,
$41 = 0,
$42 = 0,
$43 = 0,
$44 = 0;
var $45 = 0,
$46 = 0,
$47 = 0,
$48 = 0,
$49 = 0,
$5 = 0,
$50 = 0,
$51 = 0,
$6 = 0,
$7 = 0,
$8 = 0,
$9 = 0,
$exitcond = 0,
$u$01 = 0,
dest = 0,
label = 0,
sp = 0,
stop = 0;
sp = STACKTOP;
$0 = ($cc + 192) | 0;
$1 = $0;
$2 = $1;
$3 = HEAP32[$2 >> 2] | 0;
$4 = ($1 + 4) | 0;
$5 = $4;
$6 = HEAP32[$5 >> 2] | 0;
$7 = $3 & 127;
$8 = 128 >>> $n;
$9 = (0 - $8) | 0;
$10 = $9 & $ub;
$11 = $10 | $8;
$12 = $11 & 255;
$13 = ($7 + 1) | 0;
$14 = ($cc + $7) | 0;
HEAP8[$14 >> 0] = $12;
$15 = $13 >>> 0 > 112;
$16 = ($cc + $13) | 0;
if ($15) {
$17 = $7 ^ 127;
_memset($16 | 0, 0, $17 | 0) | 0;
$18 = ($cc + 128) | 0;
_sha3_round($cc, $18);
dest = ($cc + 0) | 0;
stop = (dest + 112) | 0;
do {
HEAP8[dest >> 0] = 0 | 0;
dest = (dest + 1) | 0;
} while ((dest | 0) < (stop | 0));
} else {
$19 = (111 - $7) | 0;
_memset($16 | 0, 0, $19 | 0) | 0;
}
$20 = ($cc + 112) | 0;
$21 = $0;
$22 = $21;
$23 = HEAP32[$22 >> 2] | 0;
$24 = ($21 + 4) | 0;
$25 = $24;
$26 = HEAP32[$25 >> 2] | 0;
$27 = _bitshift64Lshr($23 | 0, $26 | 0, 61) | 0;
$28 = tempRet0;
_sph_enc64be_aligned($20, $27, $28);
$29 = ($cc + 120) | 0;
$30 = $0;
$31 = $30;
$32 = HEAP32[$31 >> 2] | 0;
$33 = ($30 + 4) | 0;
$34 = $33;
$35 = HEAP32[$34 >> 2] | 0;
$36 = _bitshift64Shl($32 | 0, $35 | 0, 3) | 0;
$37 = tempRet0;
$38 = _i64Add($36 | 0, $37 | 0, $n | 0, 0) | 0;
$39 = tempRet0;
_sph_enc64be_aligned($29, $38, $39);
$40 = ($cc + 128) | 0;
_sha3_round($cc, $40);
$41 = ($rnum | 0) == 0;
if ($41) {
STACKTOP = sp;
return;
} else {
$u$01 = 0;
}
while (1) {
$42 = $u$01 << 3;
$43 = ($dst + $42) | 0;
$44 = ($40 + ($u$01 << 3)) | 0;
$45 = $44;
$46 = $45;
$47 = HEAP32[$46 >> 2] | 0;
$48 = ($45 + 4) | 0;
$49 = $48;
$50 = HEAP32[$49 >> 2] | 0;
_sph_enc64be($43, $47, $50);
$51 = ($u$01 + 1) | 0;
$exitcond = ($51 | 0) == ($rnum | 0);
if ($exitcond) {
break;
} else {
$u$01 = $51;
}
}
STACKTOP = sp;
return;
}
function _sph_dec64be_aligned($src) {
$src = $src | 0;
var $0 = 0,
$1 = 0,
$10 = 0,
$11 = 0,
$12 = 0,
$13 = 0,
$14 = 0,
$15 = 0,
$16 = 0,
$17 = 0,
$18 = 0,
$19 = 0,
$2 = 0,
$20 = 0,
$21 = 0,
$22 = 0,
$23 = 0,
$24 = 0,
$25 = 0,
$26 = 0;
var $27 = 0,
$28 = 0,
$29 = 0,
$3 = 0,
$30 = 0,
$31 = 0,
$32 = 0,
$33 = 0,
$34 = 0,
$35 = 0,
$36 = 0,
$37 = 0,
$38 = 0,
$39 = 0,
$4 = 0,
$40 = 0,
$41 = 0,
$42 = 0,
$43 = 0,
$44 = 0;
var $45 = 0,
$46 = 0,
$5 = 0,
$6 = 0,
$7 = 0,
$8 = 0,
$9 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = HEAP8[$src >> 0] | 0;
$1 = $0 & 255;
$2 = _bitshift64Shl($1 | 0, 0, 56) | 0;
$3 = tempRet0;
$4 = ($src + 1) | 0;
$5 = HEAP8[$4 >> 0] | 0;
$6 = $5 & 255;
$7 = _bitshift64Shl($6 | 0, 0, 48) | 0;
$8 = tempRet0;
$9 = $7 | $2;
$10 = $8 | $3;
$11 = ($src + 2) | 0;
$12 = HEAP8[$11 >> 0] | 0;
$13 = $12 & 255;
$14 = _bitshift64Shl($13 | 0, 0, 40) | 0;
$15 = tempRet0;
$16 = $9 | $14;
$17 = $10 | $15;
$18 = ($src + 3) | 0;
$19 = HEAP8[$18 >> 0] | 0;
$20 = $19 & 255;
$21 = $17 | $20;
$22 = ($src + 4) | 0;
$23 = HEAP8[$22 >> 0] | 0;
$24 = $23 & 255;
$25 = _bitshift64Shl($24 | 0, 0, 24) | 0;
$26 = tempRet0;
$27 = $16 | $25;
$28 = $21 | $26;
$29 = ($src + 5) | 0;
$30 = HEAP8[$29 >> 0] | 0;
$31 = $30 & 255;
$32 = _bitshift64Shl($31 | 0, 0, 16) | 0;
$33 = tempRet0;
$34 = $27 | $32;
$35 = $28 | $33;
$36 = ($src + 6) | 0;
$37 = HEAP8[$36 >> 0] | 0;
$38 = $37 & 255;
$39 = _bitshift64Shl($38 | 0, 0, 8) | 0;
$40 = tempRet0;
$41 = $34 | $39;
$42 = $35 | $40;
$43 = ($src + 7) | 0;
$44 = HEAP8[$43 >> 0] | 0;
$45 = $44 & 255;
$46 = $41 | $45;
tempRet0 = $42;
STACKTOP = sp;
return $46 | 0;
}
function _sph_enc64be_aligned($dst, $0, $1) {
$dst = $dst | 0;
$0 = $0 | 0;
$1 = $1 | 0;
var $10 = 0,
$11 = 0,
$12 = 0,
$13 = 0,
$14 = 0,
$15 = 0,
$16 = 0,
$17 = 0,
$18 = 0,
$19 = 0,
$2 = 0,
$20 = 0,
$21 = 0,
$22 = 0,
$23 = 0,
$24 = 0,
$25 = 0,
$26 = 0,
$27 = 0,
$28 = 0;
var $3 = 0,
$4 = 0,
$5 = 0,
$6 = 0,
$7 = 0,
$8 = 0,
$9 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$2 = _bitshift64Lshr($0 | 0, $1 | 0, 56) | 0;
$3 = tempRet0;
$4 = $2 & 255;
HEAP8[$dst >> 0] = $4;
$5 = _bitshift64Lshr($0 | 0, $1 | 0, 48) | 0;
$6 = tempRet0;
$7 = $5 & 255;
$8 = ($dst + 1) | 0;
HEAP8[$8 >> 0] = $7;
$9 = _bitshift64Lshr($0 | 0, $1 | 0, 40) | 0;
$10 = tempRet0;
$11 = $9 & 255;
$12 = ($dst + 2) | 0;
HEAP8[$12 >> 0] = $11;
$13 = $1 & 255;
$14 = ($dst + 3) | 0;
HEAP8[$14 >> 0] = $13;
$15 = _bitshift64Lshr($0 | 0, $1 | 0, 24) | 0;
$16 = tempRet0;
$17 = $15 & 255;
$18 = ($dst + 4) | 0;
HEAP8[$18 >> 0] = $17;
$19 = _bitshift64Lshr($0 | 0, $1 | 0, 16) | 0;
$20 = tempRet0;
$21 = $19 & 255;
$22 = ($dst + 5) | 0;
HEAP8[$22 >> 0] = $21;
$23 = _bitshift64Lshr($0 | 0, $1 | 0, 8) | 0;
$24 = tempRet0;
$25 = $23 & 255;
$26 = ($dst + 6) | 0;
HEAP8[$26 >> 0] = $25;
$27 = $0 & 255;
$28 = ($dst + 7) | 0;
HEAP8[$28 >> 0] = $27;
STACKTOP = sp;
return;
}
function _sph_enc64be($dst, $0, $1) {
$dst = $dst | 0;
$0 = $0 | 0;
$1 = $1 | 0;
var $10 = 0,
$11 = 0,
$12 = 0,
$13 = 0,
$14 = 0,
$15 = 0,
$16 = 0,
$17 = 0,
$18 = 0,
$19 = 0,
$2 = 0,
$20 = 0,
$21 = 0,
$22 = 0,
$23 = 0,
$24 = 0,
$25 = 0,
$26 = 0,
$27 = 0,
$28 = 0;
var $3 = 0,
$4 = 0,
$5 = 0,
$6 = 0,
$7 = 0,
$8 = 0,
$9 = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$2 = _bitshift64Lshr($0 | 0, $1 | 0, 56) | 0;
$3 = tempRet0;
$4 = $2 & 255;
HEAP8[$dst >> 0] = $4;
$5 = _bitshift64Lshr($0 | 0, $1 | 0, 48) | 0;
$6 = tempRet0;
$7 = $5 & 255;
$8 = ($dst + 1) | 0;
HEAP8[$8 >> 0] = $7;
$9 = _bitshift64Lshr($0 | 0, $1 | 0, 40) | 0;
$10 = tempRet0;
$11 = $9 & 255;
$12 = ($dst + 2) | 0;
HEAP8[$12 >> 0] = $11;
$13 = $1 & 255;
$14 = ($dst + 3) | 0;
HEAP8[$14 >> 0] = $13;
$15 = _bitshift64Lshr($0 | 0, $1 | 0, 24) | 0;
$16 = tempRet0;
$17 = $15 & 255;
$18 = ($dst + 4) | 0;
HEAP8[$18 >> 0] = $17;
$19 = _bitshift64Lshr($0 | 0, $1 | 0, 16) | 0;
$20 = tempRet0;
$21 = $19 & 255;
$22 = ($dst + 5) | 0;
HEAP8[$22 >> 0] = $21;
$23 = _bitshift64Lshr($0 | 0, $1 | 0, 8) | 0;
$24 = tempRet0;
$25 = $23 & 255;
$26 = ($dst + 6) | 0;
HEAP8[$26 >> 0] = $25;
$27 = $0 & 255;
$28 = ($dst + 7) | 0;
HEAP8[$28 >> 0] = $27;
STACKTOP = sp;
return;
}
function _malloc($bytes) {
$bytes = $bytes | 0;
var $$pre = 0,
$$pre$i = 0,
$$pre$i$i = 0,
$$pre$i23$i = 0,
$$pre$i25 = 0,
$$pre$phi$i$iZ2D = 0,
$$pre$phi$i24$iZ2D = 0,
$$pre$phi$i26Z2D = 0,
$$pre$phi$iZ2D = 0,
$$pre$phi59$i$iZ2D = 0,
$$pre$phiZ2D = 0,
$$pre105 = 0,
$$pre58$i$i = 0,
$$rsize$0$i = 0,
$$rsize$3$i = 0,
$$sum = 0,
$$sum$i$i = 0,
$$sum$i$i$i = 0,
$$sum$i12$i = 0,
$$sum$i13$i = 0;
var $$sum$i16$i = 0,
$$sum$i19$i = 0,
$$sum$i2338 = 0,
$$sum$i32 = 0,
$$sum$i39 = 0,
$$sum1 = 0,
$$sum1$i = 0,
$$sum1$i$i = 0,
$$sum1$i14$i = 0,
$$sum1$i20$i = 0,
$$sum1$i24 = 0,
$$sum10 = 0,
$$sum10$i = 0,
$$sum10$i$i = 0,
$$sum10$pre$i$i = 0,
$$sum102$i = 0,
$$sum103$i = 0,
$$sum104$i = 0,
$$sum105$i = 0,
$$sum106$i = 0;
var $$sum107$i = 0,
$$sum108$i = 0,
$$sum109$i = 0,
$$sum11$i = 0,
$$sum11$i$i = 0,
$$sum11$i22$i = 0,
$$sum110$i = 0,
$$sum111$i = 0,
$$sum1112 = 0,
$$sum112$i = 0,
$$sum113$i = 0,
$$sum114$i = 0,
$$sum115$i = 0,
$$sum12$i = 0,
$$sum12$i$i = 0,
$$sum13$i = 0,
$$sum13$i$i = 0,
$$sum14$i$i = 0,
$$sum14$pre$i = 0,
$$sum15$i = 0;
var $$sum15$i$i = 0,
$$sum16$i = 0,
$$sum16$i$i = 0,
$$sum17$i = 0,
$$sum17$i$i = 0,
$$sum18$i = 0,
$$sum1819$i$i = 0,
$$sum2 = 0,
$$sum2$i = 0,
$$sum2$i$i = 0,
$$sum2$i$i$i = 0,
$$sum2$i15$i = 0,
$$sum2$i17$i = 0,
$$sum2$i21$i = 0,
$$sum2$pre$i = 0,
$$sum20$i$i = 0,
$$sum21$i$i = 0,
$$sum22$i$i = 0,
$$sum23$i$i = 0,
$$sum24$i$i = 0;
var $$sum25$i$i = 0,
$$sum26$pre$i$i = 0,
$$sum27$i$i = 0,
$$sum28$i$i = 0,
$$sum29$i$i = 0,
$$sum3$i = 0,
$$sum3$i$i = 0,
$$sum3$i27 = 0,
$$sum30$i$i = 0,
$$sum3132$i$i = 0,
$$sum34$i$i = 0,
$$sum3536$i$i = 0,
$$sum3738$i$i = 0,
$$sum39$i$i = 0,
$$sum4 = 0,
$$sum4$i = 0,
$$sum4$i28 = 0,
$$sum40$i$i = 0,
$$sum41$i$i = 0,
$$sum42$i$i = 0;
var $$sum5$i = 0,
$$sum5$i$i = 0,
$$sum56 = 0,
$$sum6$i = 0,
$$sum67$i$i = 0,
$$sum7$i = 0,
$$sum8$i = 0,
$$sum8$pre = 0,
$$sum9 = 0,
$$sum9$i = 0,
$$sum9$i$i = 0,
$$tsize$1$i = 0,
$$v$0$i = 0,
$0 = 0,
$1 = 0,
$10 = 0,
$100 = 0,
$1000 = 0,
$1001 = 0,
$1002 = 0;
var $1003 = 0,
$1004 = 0,
$1005 = 0,
$1006 = 0,
$1007 = 0,
$1008 = 0,
$1009 = 0,
$101 = 0,
$1010 = 0,
$1011 = 0,
$1012 = 0,
$1013 = 0,
$1014 = 0,
$1015 = 0,
$1016 = 0,
$1017 = 0,
$1018 = 0,
$1019 = 0,
$102 = 0,
$1020 = 0;
var $1021 = 0,
$1022 = 0,
$1023 = 0,
$1024 = 0,
$1025 = 0,
$1026 = 0,
$1027 = 0,
$1028 = 0,
$1029 = 0,
$103 = 0,
$1030 = 0,
$1031 = 0,
$1032 = 0,
$1033 = 0,
$1034 = 0,
$1035 = 0,
$1036 = 0,
$1037 = 0,
$1038 = 0,
$1039 = 0;
var $104 = 0,
$1040 = 0,
$1041 = 0,
$1042 = 0,
$1043 = 0,
$1044 = 0,
$1045 = 0,
$1046 = 0,
$1047 = 0,
$1048 = 0,
$1049 = 0,
$105 = 0,
$1050 = 0,
$1051 = 0,
$1052 = 0,
$1053 = 0,
$1054 = 0,
$1055 = 0,
$1056 = 0,
$1057 = 0;
var $1058 = 0,
$1059 = 0,
$106 = 0,
$1060 = 0,
$1061 = 0,
$1062 = 0,
$1063 = 0,
$1064 = 0,
$1065 = 0,
$1066 = 0,
$1067 = 0,
$1068 = 0,
$1069 = 0,
$107 = 0,
$1070 = 0,
$1071 = 0,
$1072 = 0,
$1073 = 0,
$1074 = 0,
$108 = 0;
var $109 = 0,
$11 = 0,
$110 = 0,
$111 = 0,
$112 = 0,
$113 = 0,
$114 = 0,
$115 = 0,
$116 = 0,
$117 = 0,
$118 = 0,
$119 = 0,
$12 = 0,
$120 = 0,
$121 = 0,
$122 = 0,
$123 = 0,
$124 = 0,
$125 = 0,
$126 = 0;
var $127 = 0,
$128 = 0,
$129 = 0,
$13 = 0,
$130 = 0,
$131 = 0,
$132 = 0,
$133 = 0,
$134 = 0,
$135 = 0,
$136 = 0,
$137 = 0,
$138 = 0,
$139 = 0,
$14 = 0,
$140 = 0,
$141 = 0,
$142 = 0,
$143 = 0,
$144 = 0;
var $145 = 0,
$146 = 0,
$147 = 0,
$148 = 0,
$149 = 0,
$15 = 0,
$150 = 0,
$151 = 0,
$152 = 0,
$153 = 0,
$154 = 0,
$155 = 0,
$156 = 0,
$157 = 0,
$158 = 0,
$159 = 0,
$16 = 0,
$160 = 0,
$161 = 0,
$162 = 0;
var $163 = 0,
$164 = 0,
$165 = 0,
$166 = 0,
$167 = 0,
$168 = 0,
$169 = 0,
$17 = 0,
$170 = 0,
$171 = 0,
$172 = 0,
$173 = 0,
$174 = 0,
$175 = 0,
$176 = 0,
$177 = 0,
$178 = 0,
$179 = 0,
$18 = 0,
$180 = 0;
var $181 = 0,
$182 = 0,
$183 = 0,
$184 = 0,
$185 = 0,
$186 = 0,
$187 = 0,
$188 = 0,
$189 = 0,
$19 = 0,
$190 = 0,
$191 = 0,
$192 = 0,
$193 = 0,
$194 = 0,
$195 = 0,
$196 = 0,
$197 = 0,
$198 = 0,
$199 = 0;
var $2 = 0,
$20 = 0,
$200 = 0,
$201 = 0,
$202 = 0,
$203 = 0,
$204 = 0,
$205 = 0,
$206 = 0,
$207 = 0,
$208 = 0,
$209 = 0,
$21 = 0,
$210 = 0,
$211 = 0,
$212 = 0,
$213 = 0,
$214 = 0,
$215 = 0,
$216 = 0;
var $217 = 0,
$218 = 0,
$219 = 0,
$22 = 0,
$220 = 0,
$221 = 0,
$222 = 0,
$223 = 0,
$224 = 0,
$225 = 0,
$226 = 0,
$227 = 0,
$228 = 0,
$229 = 0,
$23 = 0,
$230 = 0,
$231 = 0,
$232 = 0,
$233 = 0,
$234 = 0;
var $235 = 0,
$236 = 0,
$237 = 0,
$238 = 0,
$239 = 0,
$24 = 0,
$240 = 0,
$241 = 0,
$242 = 0,
$243 = 0,
$244 = 0,
$245 = 0,
$246 = 0,
$247 = 0,
$248 = 0,
$249 = 0,
$25 = 0,
$250 = 0,
$251 = 0,
$252 = 0;
var $253 = 0,
$254 = 0,
$255 = 0,
$256 = 0,
$257 = 0,
$258 = 0,
$259 = 0,
$26 = 0,
$260 = 0,
$261 = 0,
$262 = 0,
$263 = 0,
$264 = 0,
$265 = 0,
$266 = 0,
$267 = 0,
$268 = 0,
$269 = 0,
$27 = 0,
$270 = 0;
var $271 = 0,
$272 = 0,
$273 = 0,
$274 = 0,
$275 = 0,
$276 = 0,
$277 = 0,
$278 = 0,
$279 = 0,
$28 = 0,
$280 = 0,
$281 = 0,
$282 = 0,
$283 = 0,
$284 = 0,
$285 = 0,
$286 = 0,
$287 = 0,
$288 = 0,
$289 = 0;
var $29 = 0,
$290 = 0,
$291 = 0,
$292 = 0,
$293 = 0,
$294 = 0,
$295 = 0,
$296 = 0,
$297 = 0,
$298 = 0,
$299 = 0,
$3 = 0,
$30 = 0,
$300 = 0,
$301 = 0,
$302 = 0,
$303 = 0,
$304 = 0,
$305 = 0,
$306 = 0;
var $307 = 0,
$308 = 0,
$309 = 0,
$31 = 0,
$310 = 0,
$311 = 0,
$312 = 0,
$313 = 0,
$314 = 0,
$315 = 0,
$316 = 0,
$317 = 0,
$318 = 0,
$319 = 0,
$32 = 0,
$320 = 0,
$321 = 0,
$322 = 0,
$323 = 0,
$324 = 0;
var $325 = 0,
$326 = 0,
$327 = 0,
$328 = 0,
$329 = 0,
$33 = 0,
$330 = 0,
$331 = 0,
$332 = 0,
$333 = 0,
$334 = 0,
$335 = 0,
$336 = 0,
$337 = 0,
$338 = 0,
$339 = 0,
$34 = 0,
$340 = 0,
$341 = 0,
$342 = 0;
var $343 = 0,
$344 = 0,
$345 = 0,
$346 = 0,
$347 = 0,
$348 = 0,
$349 = 0,
$35 = 0,
$350 = 0,
$351 = 0,
$352 = 0,
$353 = 0,
$354 = 0,
$355 = 0,
$356 = 0,
$357 = 0,
$358 = 0,
$359 = 0,
$36 = 0,
$360 = 0;
var $361 = 0,
$362 = 0,
$363 = 0,
$364 = 0,
$365 = 0,
$366 = 0,
$367 = 0,
$368 = 0,
$369 = 0,
$37 = 0,
$370 = 0,
$371 = 0,
$372 = 0,
$373 = 0,
$374 = 0,
$375 = 0,
$376 = 0,
$377 = 0,
$378 = 0,
$379 = 0;
var $38 = 0,
$380 = 0,
$381 = 0,
$382 = 0,
$383 = 0,
$384 = 0,
$385 = 0,
$386 = 0,
$387 = 0,
$388 = 0,
$389 = 0,
$39 = 0,
$390 = 0,
$391 = 0,
$392 = 0,
$393 = 0,
$394 = 0,
$395 = 0,
$396 = 0,
$397 = 0;
var $398 = 0,
$399 = 0,
$4 = 0,
$40 = 0,
$400 = 0,
$401 = 0,
$402 = 0,
$403 = 0,
$404 = 0,
$405 = 0,
$406 = 0,
$407 = 0,
$408 = 0,
$409 = 0,
$41 = 0,
$410 = 0,
$411 = 0,
$412 = 0,
$413 = 0,
$414 = 0;
var $415 = 0,
$416 = 0,
$417 = 0,
$418 = 0,
$419 = 0,
$42 = 0,
$420 = 0,
$421 = 0,
$422 = 0,
$423 = 0,
$424 = 0,
$425 = 0,
$426 = 0,
$427 = 0,
$428 = 0,
$429 = 0,
$43 = 0,
$430 = 0,
$431 = 0,
$432 = 0;
var $433 = 0,
$434 = 0,
$435 = 0,
$436 = 0,
$437 = 0,
$438 = 0,
$439 = 0,
$44 = 0,
$440 = 0,
$441 = 0,
$442 = 0,
$443 = 0,
$444 = 0,
$445 = 0,
$446 = 0,
$447 = 0,
$448 = 0,
$449 = 0,
$45 = 0,
$450 = 0;
var $451 = 0,
$452 = 0,
$453 = 0,
$454 = 0,
$455 = 0,
$456 = 0,
$457 = 0,
$458 = 0,
$459 = 0,
$46 = 0,
$460 = 0,
$461 = 0,
$462 = 0,
$463 = 0,
$464 = 0,
$465 = 0,
$466 = 0,
$467 = 0,
$468 = 0,
$469 = 0;
var $47 = 0,
$470 = 0,
$471 = 0,
$472 = 0,
$473 = 0,
$474 = 0,
$475 = 0,
$476 = 0,
$477 = 0,
$478 = 0,
$479 = 0,
$48 = 0,
$480 = 0,
$481 = 0,
$482 = 0,
$483 = 0,
$484 = 0,
$485 = 0,
$486 = 0,
$487 = 0;
var $488 = 0,
$489 = 0,
$49 = 0,
$490 = 0,
$491 = 0,
$492 = 0,
$493 = 0,
$494 = 0,
$495 = 0,
$496 = 0,
$497 = 0,
$498 = 0,
$499 = 0,
$5 = 0,
$50 = 0,
$500 = 0,
$501 = 0,
$502 = 0,
$503 = 0,
$504 = 0;
var $505 = 0,
$506 = 0,
$507 = 0,
$508 = 0,
$509 = 0,
$51 = 0,
$510 = 0,
$511 = 0,
$512 = 0,
$513 = 0,
$514 = 0,
$515 = 0,
$516 = 0,
$517 = 0,
$518 = 0,
$519 = 0,
$52 = 0,
$520 = 0,
$521 = 0,
$522 = 0;
var $523 = 0,
$524 = 0,
$525 = 0,
$526 = 0,
$527 = 0,
$528 = 0,
$529 = 0,
$53 = 0,
$530 = 0,
$531 = 0,
$532 = 0,
$533 = 0,
$534 = 0,
$535 = 0,
$536 = 0,
$537 = 0,
$538 = 0,
$539 = 0,
$54 = 0,
$540 = 0;
var $541 = 0,
$542 = 0,
$543 = 0,
$544 = 0,
$545 = 0,
$546 = 0,
$547 = 0,
$548 = 0,
$549 = 0,
$55 = 0,
$550 = 0,
$551 = 0,
$552 = 0,
$553 = 0,
$554 = 0,
$555 = 0,
$556 = 0,
$557 = 0,
$558 = 0,
$559 = 0;
var $56 = 0,
$560 = 0,
$561 = 0,
$562 = 0,
$563 = 0,
$564 = 0,
$565 = 0,
$566 = 0,
$567 = 0,
$568 = 0,
$569 = 0,
$57 = 0,
$570 = 0,
$571 = 0,
$572 = 0,
$573 = 0,
$574 = 0,
$575 = 0,
$576 = 0,
$577 = 0;
var $578 = 0,
$579 = 0,
$58 = 0,
$580 = 0,
$581 = 0,
$582 = 0,
$583 = 0,
$584 = 0,
$585 = 0,
$586 = 0,
$587 = 0,
$588 = 0,
$589 = 0,
$59 = 0,
$590 = 0,
$591 = 0,
$592 = 0,
$593 = 0,
$594 = 0,
$595 = 0;
var $596 = 0,
$597 = 0,
$598 = 0,
$599 = 0,
$6 = 0,
$60 = 0,
$600 = 0,
$601 = 0,
$602 = 0,
$603 = 0,
$604 = 0,
$605 = 0,
$606 = 0,
$607 = 0,
$608 = 0,
$609 = 0,
$61 = 0,
$610 = 0,
$611 = 0,
$612 = 0;
var $613 = 0,
$614 = 0,
$615 = 0,
$616 = 0,
$617 = 0,
$618 = 0,
$619 = 0,
$62 = 0,
$620 = 0,
$621 = 0,
$622 = 0,
$623 = 0,
$624 = 0,
$625 = 0,
$626 = 0,
$627 = 0,
$628 = 0,
$629 = 0,
$63 = 0,
$630 = 0;
var $631 = 0,
$632 = 0,
$633 = 0,
$634 = 0,
$635 = 0,
$636 = 0,
$637 = 0,
$638 = 0,
$639 = 0,
$64 = 0,
$640 = 0,
$641 = 0,
$642 = 0,
$643 = 0,
$644 = 0,
$645 = 0,
$646 = 0,
$647 = 0,
$648 = 0,
$649 = 0;
var $65 = 0,
$650 = 0,
$651 = 0,
$652 = 0,
$653 = 0,
$654 = 0,
$655 = 0,
$656 = 0,
$657 = 0,
$658 = 0,
$659 = 0,
$66 = 0,
$660 = 0,
$661 = 0,
$662 = 0,
$663 = 0,
$664 = 0,
$665 = 0,
$666 = 0,
$667 = 0;
var $668 = 0,
$669 = 0,
$67 = 0,
$670 = 0,
$671 = 0,
$672 = 0,
$673 = 0,
$674 = 0,
$675 = 0,
$676 = 0,
$677 = 0,
$678 = 0,
$679 = 0,
$68 = 0,
$680 = 0,
$681 = 0,
$682 = 0,
$683 = 0,
$684 = 0,
$685 = 0;
var $686 = 0,
$687 = 0,
$688 = 0,
$689 = 0,
$69 = 0,
$690 = 0,
$691 = 0,
$692 = 0,
$693 = 0,
$694 = 0,
$695 = 0,
$696 = 0,
$697 = 0,
$698 = 0,
$699 = 0,
$7 = 0,
$70 = 0,
$700 = 0,
$701 = 0,
$702 = 0;
var $703 = 0,
$704 = 0,
$705 = 0,
$706 = 0,
$707 = 0,
$708 = 0,
$709 = 0,
$71 = 0,
$710 = 0,
$711 = 0,
$712 = 0,
$713 = 0,
$714 = 0,
$715 = 0,
$716 = 0,
$717 = 0,
$718 = 0,
$719 = 0,
$72 = 0,
$720 = 0;
var $721 = 0,
$722 = 0,
$723 = 0,
$724 = 0,
$725 = 0,
$726 = 0,
$727 = 0,
$728 = 0,
$729 = 0,
$73 = 0,
$730 = 0,
$731 = 0,
$732 = 0,
$733 = 0,
$734 = 0,
$735 = 0,
$736 = 0,
$737 = 0,
$738 = 0,
$739 = 0;
var $74 = 0,
$740 = 0,
$741 = 0,
$742 = 0,
$743 = 0,
$744 = 0,
$745 = 0,
$746 = 0,
$747 = 0,
$748 = 0,
$749 = 0,
$75 = 0,
$750 = 0,
$751 = 0,
$752 = 0,
$753 = 0,
$754 = 0,
$755 = 0,
$756 = 0,
$757 = 0;
var $758 = 0,
$759 = 0,
$76 = 0,
$760 = 0,
$761 = 0,
$762 = 0,
$763 = 0,
$764 = 0,
$765 = 0,
$766 = 0,
$767 = 0,
$768 = 0,
$769 = 0,
$77 = 0,
$770 = 0,
$771 = 0,
$772 = 0,
$773 = 0,
$774 = 0,
$775 = 0;
var $776 = 0,
$777 = 0,
$778 = 0,
$779 = 0,
$78 = 0,
$780 = 0,
$781 = 0,
$782 = 0,
$783 = 0,
$784 = 0,
$785 = 0,
$786 = 0,
$787 = 0,
$788 = 0,
$789 = 0,
$79 = 0,
$790 = 0,
$791 = 0,
$792 = 0,
$793 = 0;
var $794 = 0,
$795 = 0,
$796 = 0,
$797 = 0,
$798 = 0,
$799 = 0,
$8 = 0,
$80 = 0,
$800 = 0,
$801 = 0,
$802 = 0,
$803 = 0,
$804 = 0,
$805 = 0,
$806 = 0,
$807 = 0,
$808 = 0,
$809 = 0,
$81 = 0,
$810 = 0;
var $811 = 0,
$812 = 0,
$813 = 0,
$814 = 0,
$815 = 0,
$816 = 0,
$817 = 0,
$818 = 0,
$819 = 0,
$82 = 0,
$820 = 0,
$821 = 0,
$822 = 0,
$823 = 0,
$824 = 0,
$825 = 0,
$826 = 0,
$827 = 0,
$828 = 0,
$829 = 0;
var $83 = 0,
$830 = 0,
$831 = 0,
$832 = 0,
$833 = 0,
$834 = 0,
$835 = 0,
$836 = 0,
$837 = 0,
$838 = 0,
$839 = 0,
$84 = 0,
$840 = 0,
$841 = 0,
$842 = 0,
$843 = 0,
$844 = 0,
$845 = 0,
$846 = 0,
$847 = 0;
var $848 = 0,
$849 = 0,
$85 = 0,
$850 = 0,
$851 = 0,
$852 = 0,
$853 = 0,
$854 = 0,
$855 = 0,
$856 = 0,
$857 = 0,
$858 = 0,
$859 = 0,
$86 = 0,
$860 = 0,
$861 = 0,
$862 = 0,
$863 = 0,
$864 = 0,
$865 = 0;
var $866 = 0,
$867 = 0,
$868 = 0,
$869 = 0,
$87 = 0,
$870 = 0,
$871 = 0,
$872 = 0,
$873 = 0,
$874 = 0,
$875 = 0,
$876 = 0,
$877 = 0,
$878 = 0,
$879 = 0,
$88 = 0,
$880 = 0,
$881 = 0,
$882 = 0,
$883 = 0;
var $884 = 0,
$885 = 0,
$886 = 0,
$887 = 0,
$888 = 0,
$889 = 0,
$89 = 0,
$890 = 0,
$891 = 0,
$892 = 0,
$893 = 0,
$894 = 0,
$895 = 0,
$896 = 0,
$897 = 0,
$898 = 0,
$899 = 0,
$9 = 0,
$90 = 0,
$900 = 0;
var $901 = 0,
$902 = 0,
$903 = 0,
$904 = 0,
$905 = 0,
$906 = 0,
$907 = 0,
$908 = 0,
$909 = 0,
$91 = 0,
$910 = 0,
$911 = 0,
$912 = 0,
$913 = 0,
$914 = 0,
$915 = 0,
$916 = 0,
$917 = 0,
$918 = 0,
$919 = 0;
var $92 = 0,
$920 = 0,
$921 = 0,
$922 = 0,
$923 = 0,
$924 = 0,
$925 = 0,
$926 = 0,
$927 = 0,
$928 = 0,
$929 = 0,
$93 = 0,
$930 = 0,
$931 = 0,
$932 = 0,
$933 = 0,
$934 = 0,
$935 = 0,
$936 = 0,
$937 = 0;
var $938 = 0,
$939 = 0,
$94 = 0,
$940 = 0,
$941 = 0,
$942 = 0,
$943 = 0,
$944 = 0,
$945 = 0,
$946 = 0,
$947 = 0,
$948 = 0,
$949 = 0,
$95 = 0,
$950 = 0,
$951 = 0,
$952 = 0,
$953 = 0,
$954 = 0,
$955 = 0;
var $956 = 0,
$957 = 0,
$958 = 0,
$959 = 0,
$96 = 0,
$960 = 0,
$961 = 0,
$962 = 0,
$963 = 0,
$964 = 0,
$965 = 0,
$966 = 0,
$967 = 0,
$968 = 0,
$969 = 0,
$97 = 0,
$970 = 0,
$971 = 0,
$972 = 0,
$973 = 0;
var $974 = 0,
$975 = 0,
$976 = 0,
$977 = 0,
$978 = 0,
$979 = 0,
$98 = 0,
$980 = 0,
$981 = 0,
$982 = 0,
$983 = 0,
$984 = 0,
$985 = 0,
$986 = 0,
$987 = 0,
$988 = 0,
$989 = 0,
$99 = 0,
$990 = 0,
$991 = 0;
var $992 = 0,
$993 = 0,
$994 = 0,
$995 = 0,
$996 = 0,
$997 = 0,
$998 = 0,
$999 = 0,
$F$0$i$i = 0,
$F1$0$i = 0,
$F4$0 = 0,
$F4$0$i$i = 0,
$F5$0$i = 0,
$I1$0$c$i$i = 0,
$I1$0$i$i = 0,
$I7$0$i = 0,
$I7$0$i$i = 0,
$K12$027$i = 0,
$K2$015$i$i = 0,
$K8$053$i$i = 0;
var $R$0$i = 0,
$R$0$i$i = 0,
$R$0$i18 = 0,
$R$1$i = 0,
$R$1$i$i = 0,
$R$1$i20 = 0,
$RP$0$i = 0,
$RP$0$i$i = 0,
$RP$0$i17 = 0,
$T$0$lcssa$i = 0,
$T$0$lcssa$i$i = 0,
$T$0$lcssa$i26$i = 0,
$T$014$i$i = 0,
$T$026$i = 0,
$T$052$i$i = 0,
$br$0$i = 0,
$br$030$i = 0,
$cond$i = 0,
$cond$i$i = 0,
$cond$i21 = 0;
var $exitcond$i$i = 0,
$i$02$i$i = 0,
$idx$0$i = 0,
$mem$0 = 0,
$nb$0 = 0,
$oldfirst$0$i$i = 0,
$or$cond$i = 0,
$or$cond$i$i = 0,
$or$cond$i27$i = 0,
$or$cond$i29 = 0,
$or$cond1$i = 0,
$or$cond19$i = 0,
$or$cond2$i = 0,
$or$cond24$i = 0,
$or$cond3$i = 0,
$or$cond4$i = 0,
$or$cond47$i = 0,
$or$cond5$i = 0,
$or$cond6$i = 0,
$or$cond8$i = 0;
var $qsize$0$i$i = 0,
$rsize$0$i = 0,
$rsize$0$i15 = 0,
$rsize$1$i = 0,
$rsize$2$i = 0,
$rsize$3$lcssa$i = 0,
$rsize$331$i = 0,
$rst$0$i = 0,
$rst$1$i = 0,
$sizebits$0$i = 0,
$sp$0$i$i = 0,
$sp$0$i$i$i = 0,
$sp$073$i = 0,
$sp$166$i = 0,
$ssize$0$i = 0,
$ssize$1$i = 0,
$ssize$129$i = 0,
$ssize$2$i = 0,
$t$0$i = 0,
$t$0$i14 = 0;
var $t$1$i = 0,
$t$2$ph$i = 0,
$t$2$v$3$i = 0,
$t$230$i = 0,
$tbase$245$i = 0,
$tsize$03141$i = 0,
$tsize$1$i = 0,
$tsize$244$i = 0,
$v$0$i = 0,
$v$0$i16 = 0,
$v$1$i = 0,
$v$2$i = 0,
$v$3$lcssa$i = 0,
$v$332$i = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = $bytes >>> 0 < 245;
do {
if ($0) {
$1 = $bytes >>> 0 < 11;
if ($1) {
$5 = 16;
} else {
$2 = ($bytes + 11) | 0;
$3 = $2 & -8;
$5 = $3;
}
$4 = $5 >>> 3;
$6 = HEAP32[32544 >> 2] | 0;
$7 = $6 >>> $4;
$8 = $7 & 3;
$9 = ($8 | 0) == 0;
if (!$9) {
$10 = $7 & 1;
$11 = $10 ^ 1;
$12 = ($11 + $4) | 0;
$13 = $12 << 1;
$14 = (((32544 + ($13 << 2)) | 0) + 40) | 0;
$$sum10 = ($13 + 2) | 0;
$15 = (((32544 + ($$sum10 << 2)) | 0) + 40) | 0;
$16 = HEAP32[$15 >> 2] | 0;
$17 = ($16 + 8) | 0;
$18 = HEAP32[$17 >> 2] | 0;
$19 = ($14 | 0) == ($18 | 0);
do {
if ($19) {
$20 = 1 << $12;
$21 = $20 ^ -1;
$22 = $6 & $21;
HEAP32[32544 >> 2] = $22;
} else {
$23 = HEAP32[((32544 + 16) | 0) >> 2] | 0;
$24 = $18 >>> 0 < $23 >>> 0;
if ($24) {
_abort();
// unreachable;
}
$25 = ($18 + 12) | 0;
$26 = HEAP32[$25 >> 2] | 0;
$27 = ($26 | 0) == ($16 | 0);
if ($27) {
HEAP32[$25 >> 2] = $14;
HEAP32[$15 >> 2] = $18;
break;
} else {
_abort();
// unreachable;
}
}
} while (0);
$28 = $12 << 3;
$29 = $28 | 3;
$30 = ($16 + 4) | 0;
HEAP32[$30 >> 2] = $29;
$$sum1112 = $28 | 4;
$31 = ($16 + $$sum1112) | 0;
$32 = HEAP32[$31 >> 2] | 0;
$33 = $32 | 1;
HEAP32[$31 >> 2] = $33;
$mem$0 = $17;
STACKTOP = sp;
return $mem$0 | 0;
}
$34 = HEAP32[((32544 + 8) | 0) >> 2] | 0;
$35 = $5 >>> 0 > $34 >>> 0;
if ($35) {
$36 = ($7 | 0) == 0;
if (!$36) {
$37 = $7 << $4;
$38 = 2 << $4;
$39 = (0 - $38) | 0;
$40 = $38 | $39;
$41 = $37 & $40;
$42 = (0 - $41) | 0;
$43 = $41 & $42;
$44 = ($43 + -1) | 0;
$45 = $44 >>> 12;
$46 = $45 & 16;
$47 = $44 >>> $46;
$48 = $47 >>> 5;
$49 = $48 & 8;
$50 = $49 | $46;
$51 = $47 >>> $49;
$52 = $51 >>> 2;
$53 = $52 & 4;
$54 = $50 | $53;
$55 = $51 >>> $53;
$56 = $55 >>> 1;
$57 = $56 & 2;
$58 = $54 | $57;
$59 = $55 >>> $57;
$60 = $59 >>> 1;
$61 = $60 & 1;
$62 = $58 | $61;
$63 = $59 >>> $61;
$64 = ($62 + $63) | 0;
$65 = $64 << 1;
$66 = (((32544 + ($65 << 2)) | 0) + 40) | 0;
$$sum4 = ($65 + 2) | 0;
$67 = (((32544 + ($$sum4 << 2)) | 0) + 40) | 0;
$68 = HEAP32[$67 >> 2] | 0;
$69 = ($68 + 8) | 0;
$70 = HEAP32[$69 >> 2] | 0;
$71 = ($66 | 0) == ($70 | 0);
do {
if ($71) {
$72 = 1 << $64;
$73 = $72 ^ -1;
$74 = $6 & $73;
HEAP32[32544 >> 2] = $74;
$88 = $34;
} else {
$75 = HEAP32[((32544 + 16) | 0) >> 2] | 0;
$76 = $70 >>> 0 < $75 >>> 0;
if ($76) {
_abort();
// unreachable;
}
$77 = ($70 + 12) | 0;
$78 = HEAP32[$77 >> 2] | 0;
$79 = ($78 | 0) == ($68 | 0);
if ($79) {
HEAP32[$77 >> 2] = $66;
HEAP32[$67 >> 2] = $70;
$$pre = HEAP32[((32544 + 8) | 0) >> 2] | 0;
$88 = $$pre;
break;
} else {
_abort();
// unreachable;
}
}
} while (0);
$80 = $64 << 3;
$81 = ($80 - $5) | 0;
$82 = $5 | 3;
$83 = ($68 + 4) | 0;
HEAP32[$83 >> 2] = $82;
$84 = ($68 + $5) | 0;
$85 = $81 | 1;
$$sum56 = $5 | 4;
$86 = ($68 + $$sum56) | 0;
HEAP32[$86 >> 2] = $85;
$87 = ($68 + $80) | 0;
HEAP32[$87 >> 2] = $81;
$89 = ($88 | 0) == 0;
if (!$89) {
$90 = HEAP32[((32544 + 20) | 0) >> 2] | 0;
$91 = $88 >>> 3;
$92 = $91 << 1;
$93 = (((32544 + ($92 << 2)) | 0) + 40) | 0;
$94 = HEAP32[32544 >> 2] | 0;
$95 = 1 << $91;
$96 = $94 & $95;
$97 = ($96 | 0) == 0;
if ($97) {
$98 = $94 | $95;
HEAP32[32544 >> 2] = $98;
$$sum8$pre = ($92 + 2) | 0;
$$pre105 = (((32544 + ($$sum8$pre << 2)) | 0) + 40) | 0;
$$pre$phiZ2D = $$pre105;
$F4$0 = $93;
} else {
$$sum9 = ($92 + 2) | 0;
$99 = (((32544 + ($$sum9 << 2)) | 0) + 40) | 0;
$100 = HEAP32[$99 >> 2] | 0;
$101 = HEAP32[((32544 + 16) | 0) >> 2] | 0;
$102 = $100 >>> 0 < $101 >>> 0;
if ($102) {
_abort();
// unreachable;
} else {
$$pre$phiZ2D = $99;
$F4$0 = $100;
}
}
HEAP32[$$pre$phiZ2D >> 2] = $90;
$103 = ($F4$0 + 12) | 0;
HEAP32[$103 >> 2] = $90;
$104 = ($90 + 8) | 0;
HEAP32[$104 >> 2] = $F4$0;
$105 = ($90 + 12) | 0;
HEAP32[$105 >> 2] = $93;
}
HEAP32[((32544 + 8) | 0) >> 2] = $81;
HEAP32[((32544 + 20) | 0) >> 2] = $84;
$mem$0 = $69;
STACKTOP = sp;
return $mem$0 | 0;
}
$106 = HEAP32[((32544 + 4) | 0) >> 2] | 0;
$107 = ($106 | 0) == 0;
if ($107) {
$nb$0 = $5;
} else {
$108 = (0 - $106) | 0;
$109 = $106 & $108;
$110 = ($109 + -1) | 0;
$111 = $110 >>> 12;
$112 = $111 & 16;
$113 = $110 >>> $112;
$114 = $113 >>> 5;
$115 = $114 & 8;
$116 = $115 | $112;
$117 = $113 >>> $115;
$118 = $117 >>> 2;
$119 = $118 & 4;
$120 = $116 | $119;
$121 = $117 >>> $119;
$122 = $121 >>> 1;
$123 = $122 & 2;
$124 = $120 | $123;
$125 = $121 >>> $123;
$126 = $125 >>> 1;
$127 = $126 & 1;
$128 = $124 | $127;
$129 = $125 >>> $127;
$130 = ($128 + $129) | 0;
$131 = (((32544 + ($130 << 2)) | 0) + 304) | 0;
$132 = HEAP32[$131 >> 2] | 0;
$133 = ($132 + 4) | 0;
$134 = HEAP32[$133 >> 2] | 0;
$135 = $134 & -8;
$136 = ($135 - $5) | 0;
$rsize$0$i = $136;
$t$0$i = $132;
$v$0$i = $132;
while (1) {
$137 = ($t$0$i + 16) | 0;
$138 = HEAP32[$137 >> 2] | 0;
$139 = ($138 | 0) == (0 | 0);
if ($139) {
$140 = ($t$0$i + 20) | 0;
$141 = HEAP32[$140 >> 2] | 0;
$142 = ($141 | 0) == (0 | 0);
if ($142) {
break;
} else {
$144 = $141;
}
} else {
$144 = $138;
}
$143 = ($144 + 4) | 0;
$145 = HEAP32[$143 >> 2] | 0;
$146 = $145 & -8;
$147 = ($146 - $5) | 0;
$148 = $147 >>> 0 < $rsize$0$i >>> 0;
$$rsize$0$i = $148 ? $147 : $rsize$0$i;
$$v$0$i = $148 ? $144 : $v$0$i;
$rsize$0$i = $$rsize$0$i;
$t$0$i = $144;
$v$0$i = $$v$0$i;
}
$149 = HEAP32[((32544 + 16) | 0) >> 2] | 0;
$150 = $v$0$i >>> 0 < $149 >>> 0;
if ($150) {
_abort();
// unreachable;
}
$151 = ($v$0$i + $5) | 0;
$152 = $v$0$i >>> 0 < $151 >>> 0;
if (!$152) {
_abort();
// unreachable;
}
$153 = ($v$0$i + 24) | 0;
$154 = HEAP32[$153 >> 2] | 0;
$155 = ($v$0$i + 12) | 0;
$156 = HEAP32[$155 >> 2] | 0;
$157 = ($156 | 0) == ($v$0$i | 0);
do {
if ($157) {
$167 = ($v$0$i + 20) | 0;
$168 = HEAP32[$167 >> 2] | 0;
$169 = ($168 | 0) == (0 | 0);
if ($169) {
$170 = ($v$0$i + 16) | 0;
$171 = HEAP32[$170 >> 2] | 0;
$172 = ($171 | 0) == (0 | 0);
if ($172) {
$R$1$i = 0;
break;
} else {
$R$0$i = $171;
$RP$0$i = $170;
}
} else {
$R$0$i = $168;
$RP$0$i = $167;
}
while (1) {
$173 = ($R$0$i + 20) | 0;
$174 = HEAP32[$173 >> 2] | 0;
$175 = ($174 | 0) == (0 | 0);
if (!$175) {
$R$0$i = $174;
$RP$0$i = $173;
continue;
}
$176 = ($R$0$i + 16) | 0;
$177 = HEAP32[$176 >> 2] | 0;
$178 = ($177 | 0) == (0 | 0);
if ($178) {
break;
} else {
$R$0$i = $177;
$RP$0$i = $176;
}
}
$179 = $RP$0$i >>> 0 < $149 >>> 0;
if ($179) {
_abort();
// unreachable;
} else {
HEAP32[$RP$0$i >> 2] = 0;
$R$1$i = $R$0$i;
break;
}
} else {
$158 = ($v$0$i + 8) | 0;
$159 = HEAP32[$158 >> 2] | 0;
$160 = $159 >>> 0 < $149 >>> 0;
if ($160) {
_abort();
// unreachable;
}
$161 = ($159 + 12) | 0;
$162 = HEAP32[$161 >> 2] | 0;
$163 = ($162 | 0) == ($v$0$i | 0);
if (!$163) {
_abort();
// unreachable;
}
$164 = ($156 + 8) | 0;
$165 = HEAP32[$164 >> 2] | 0;
$166 = ($165 | 0) == ($v$0$i | 0);
if ($166) {
HEAP32[$161 >> 2] = $156;
HEAP32[$164 >> 2] = $159;
$R$1$i = $156;
break;
} else {
_abort();
// unreachable;
}
}
} while (0);
$180 = ($154 | 0) == (0 | 0);
do {
if (!$180) {
$181 = ($v$0$i + 28) | 0;
$182 = HEAP32[$181 >> 2] | 0;
$183 = (((32544 + ($182 << 2)) | 0) + 304) | 0;
$184 = HEAP32[$183 >> 2] | 0;
$185 = ($v$0$i | 0) == ($184 | 0);
if ($185) {
HEAP32[$183 >> 2] = $R$1$i;
$cond$i = ($R$1$i | 0) == (0 | 0);
if ($cond$i) {
$186 = 1 << $182;
$187 = $186 ^ -1;
$188 = HEAP32[((32544 + 4) | 0) >> 2] | 0;
$189 = $188 & $187;
HEAP32[((32544 + 4) | 0) >> 2] = $189;
break;
}
} else {
$190 = HEAP32[((32544 + 16) | 0) >> 2] | 0;
$191 = $154 >>> 0 < $190 >>> 0;
if ($191) {
_abort();
// unreachable;
}
$192 = ($154 + 16) | 0;
$193 = HEAP32[$192 >> 2] | 0;
$194 = ($193 | 0) == ($v$0$i | 0);
if ($194) {
HEAP32[$192 >> 2] = $R$1$i;
} else {
$195 = ($154 + 20) | 0;
HEAP32[$195 >> 2] = $R$1$i;
}
$196 = ($R$1$i | 0) == (0 | 0);
if ($196) {
break;
}
}
$197 = HEAP32[((32544 + 16) | 0) >> 2] | 0;
$198 = $R$1$i >>> 0 < $197 >>> 0;
if ($198) {
_abort();
// unreachable;
}
$199 = ($R$1$i + 24) | 0;
HEAP32[$199 >> 2] = $154;
$200 = ($v$0$i + 16) | 0;
$201 = HEAP32[$200 >> 2] | 0;
$202 = ($201 | 0) == (0 | 0);
do {
if (!$202) {
$203 = $201 >>> 0 < $197 >>> 0;
if ($203) {
_abort();
// unreachable;
} else {
$204 = ($R$1$i + 16) | 0;
HEAP32[$204 >> 2] = $201;
$205 = ($201 + 24) | 0;
HEAP32[$205 >> 2] = $R$1$i;
break;
}
}
} while (0);
$206 = ($v$0$i + 20) | 0;
$207 = HEAP32[$206 >> 2] | 0;
$208 = ($207 | 0) == (0 | 0);
if (!$208) {
$209 = HEAP32[((32544 + 16) | 0) >> 2] | 0;
$210 = $207 >>> 0 < $209 >>> 0;
if ($210) {
_abort();
// unreachable;
} else {
$211 = ($R$1$i + 20) | 0;
HEAP32[$211 >> 2] = $207;
$212 = ($207 + 24) | 0;
HEAP32[$212 >> 2] = $R$1$i;
break;
}
}
}
} while (0);
$213 = $rsize$0$i >>> 0 < 16;
if ($213) {
$214 = ($rsize$0$i + $5) | 0;
$215 = $214 | 3;
$216 = ($v$0$i + 4) | 0;
HEAP32[$216 >> 2] = $215;
$$sum4$i = ($214 + 4) | 0;
$217 = ($v$0$i + $$sum4$i) | 0;
$218 = HEAP32[$217 >> 2] | 0;
$219 = $218 | 1;
HEAP32[$217 >> 2] = $219;
} else {
$220 = $5 | 3;
$221 = ($v$0$i + 4) | 0;
HEAP32[$221 >> 2] = $220;
$222 = $rsize$0$i | 1;
$$sum$i39 = $5 | 4;
$223 = ($v$0$i + $$sum$i39) | 0;
HEAP32[$223 >> 2] = $222;
$$sum1$i = ($rsize$0$i + $5) | 0;
$224 = ($v$0$i + $$sum1$i) | 0;
HEAP32[$224 >> 2] = $rsize$0$i;
$225 = HEAP32[((32544 + 8) | 0) >> 2] | 0;
$226 = ($225 | 0) == 0;
if (!$226) {
$227 = HEAP32[((32544 + 20) | 0) >> 2] | 0;
$228 = $225 >>> 3;
$229 = $228 << 1;
$230 = (((32544 + ($229 << 2)) | 0) + 40) | 0;
$231 = HEAP32[32544 >> 2] | 0;
$232 = 1 << $228;
$233 = $231 & $232;
$234 = ($233 | 0) == 0;
if ($234) {
$235 = $231 | $232;
HEAP32[32544 >> 2] = $235;
$$sum2$pre$i = ($229 + 2) | 0;
$$pre$i = (((32544 + ($$sum2$pre$i << 2)) | 0) + 40) | 0;
$$pre$phi$iZ2D = $$pre$i;
$F1$0$i = $230;
} else {
$$sum3$i = ($229 + 2) | 0;
$236 = (((32544 + ($$sum3$i << 2)) | 0) + 40) | 0;
$237 = HEAP32[$236 >> 2] | 0;
$238 = HEAP32[((32544 + 16) | 0) >> 2] | 0;
$239 = $237 >>> 0 < $238 >>> 0;
if ($239) {
_abort();
// unreachable;
} else {
$$pre$phi$iZ2D = $236;
$F1$0$i = $237;
}
}
HEAP32[$$pre$phi$iZ2D >> 2] = $227;
$240 = ($F1$0$i + 12) | 0;
HEAP32[$240 >> 2] = $227;
$241 = ($227 + 8) | 0;
HEAP32[$241 >> 2] = $F1$0$i;
$242 = ($227 + 12) | 0;
HEAP32[$242 >> 2] = $230;
}
HEAP32[((32544 + 8) | 0) >> 2] = $rsize$0$i;
HEAP32[((32544 + 20) | 0) >> 2] = $151;
}
$243 = ($v$0$i + 8) | 0;
$mem$0 = $243;
STACKTOP = sp;
return $mem$0 | 0;
}
} else {
$nb$0 = $5;
}
} else {
$244 = $bytes >>> 0 > 4294967231;
if ($244) {
$nb$0 = -1;
} else {
$245 = ($bytes + 11) | 0;
$246 = $245 & -8;
$247 = HEAP32[((32544 + 4) | 0) >> 2] | 0;
$248 = ($247 | 0) == 0;
if ($248) {
$nb$0 = $246;
} else {
$249 = (0 - $246) | 0;
$250 = $245 >>> 8;
$251 = ($250 | 0) == 0;
if ($251) {
$idx$0$i = 0;
} else {
$252 = $246 >>> 0 > 16777215;
if ($252) {
$idx$0$i = 31;
} else {
$253 = ($250 + 1048320) | 0;
$254 = $253 >>> 16;
$255 = $254 & 8;
$256 = $250 << $255;
$257 = ($256 + 520192) | 0;
$258 = $257 >>> 16;
$259 = $258 & 4;
$260 = $259 | $255;
$261 = $256 << $259;
$262 = ($261 + 245760) | 0;
$263 = $262 >>> 16;
$264 = $263 & 2;
$265 = $260 | $264;
$266 = (14 - $265) | 0;
$267 = $261 << $264;
$268 = $267 >>> 15;
$269 = ($266 + $268) | 0;
$270 = $269 << 1;
$271 = ($269 + 7) | 0;
$272 = $246 >>> $271;
$273 = $272 & 1;
$274 = $273 | $270;
$idx$0$i = $274;
}
}
$275 = (((32544 + ($idx$0$i << 2)) | 0) + 304) | 0;
$276 = HEAP32[$275 >> 2] | 0;
$277 = ($276 | 0) == (0 | 0);
L126: do {
if ($277) {
$rsize$2$i = $249;
$t$1$i = 0;
$v$2$i = 0;
} else {
$278 = ($idx$0$i | 0) == 31;
if ($278) {
$282 = 0;
} else {
$279 = $idx$0$i >>> 1;
$280 = (25 - $279) | 0;
$282 = $280;
}
$281 = $246 << $282;
$rsize$0$i15 = $249;
$rst$0$i = 0;
$sizebits$0$i = $281;
$t$0$i14 = $276;
$v$0$i16 = 0;
while (1) {
$283 = ($t$0$i14 + 4) | 0;
$284 = HEAP32[$283 >> 2] | 0;
$285 = $284 & -8;
$286 = ($285 - $246) | 0;
$287 = $286 >>> 0 < $rsize$0$i15 >>> 0;
if ($287) {
$288 = ($285 | 0) == ($246 | 0);
if ($288) {
$rsize$2$i = $286;
$t$1$i = $t$0$i14;
$v$2$i = $t$0$i14;
break L126;
} else {
$rsize$1$i = $286;
$v$1$i = $t$0$i14;
}
} else {
$rsize$1$i = $rsize$0$i15;
$v$1$i = $v$0$i16;
}
$289 = ($t$0$i14 + 20) | 0;
$290 = HEAP32[$289 >> 2] | 0;
$291 = $sizebits$0$i >>> 31;
$292 = ((($t$0$i14 + ($291 << 2)) | 0) + 16) | 0;
$293 = HEAP32[$292 >> 2] | 0;
$294 = ($290 | 0) == (0 | 0);
$295 = ($290 | 0) == ($293 | 0);
$or$cond19$i = $294 | $295;
$rst$1$i = $or$cond19$i ? $rst$0$i : $290;
$296 = ($293 | 0) == (0 | 0);
$297 = $sizebits$0$i << 1;
if ($296) {
$rsize$2$i = $rsize$1$i;
$t$1$i = $rst$1$i;
$v$2$i = $v$1$i;
break;
} else {
$rsize$0$i15 = $rsize$1$i;
$rst$0$i = $rst$1$i;
$sizebits$0$i = $297;
$t$0$i14 = $293;
$v$0$i16 = $v$1$i;
}
}
}
} while (0);
$298 = ($t$1$i | 0) == (0 | 0);
$299 = ($v$2$i | 0) == (0 | 0);
$or$cond$i = $298 & $299;
if ($or$cond$i) {
$300 = 2 << $idx$0$i;
$301 = (0 - $300) | 0;
$302 = $300 | $301;
$303 = $247 & $302;
$304 = ($303 | 0) == 0;
if ($304) {
$nb$0 = $246;
break;
}
$305 = (0 - $303) | 0;
$306 = $303 & $305;
$307 = ($306 + -1) | 0;
$308 = $307 >>> 12;
$309 = $308 & 16;
$310 = $307 >>> $309;
$311 = $310 >>> 5;
$312 = $311 & 8;
$313 = $312 | $309;
$314 = $310 >>> $312;
$315 = $314 >>> 2;
$316 = $315 & 4;
$317 = $313 | $316;
$318 = $314 >>> $316;
$319 = $318 >>> 1;
$320 = $319 & 2;
$321 = $317 | $320;
$322 = $318 >>> $320;
$323 = $322 >>> 1;
$324 = $323 & 1;
$325 = $321 | $324;
$326 = $322 >>> $324;
$327 = ($325 + $326) | 0;
$328 = (((32544 + ($327 << 2)) | 0) + 304) | 0;
$329 = HEAP32[$328 >> 2] | 0;
$t$2$ph$i = $329;
} else {
$t$2$ph$i = $t$1$i;
}
$330 = ($t$2$ph$i | 0) == (0 | 0);
if ($330) {
$rsize$3$lcssa$i = $rsize$2$i;
$v$3$lcssa$i = $v$2$i;
} else {
$rsize$331$i = $rsize$2$i;
$t$230$i = $t$2$ph$i;
$v$332$i = $v$2$i;
while (1) {
$331 = ($t$230$i + 4) | 0;
$332 = HEAP32[$331 >> 2] | 0;
$333 = $332 & -8;
$334 = ($333 - $246) | 0;
$335 = $334 >>> 0 < $rsize$331$i >>> 0;
$$rsize$3$i = $335 ? $334 : $rsize$331$i;
$t$2$v$3$i = $335 ? $t$230$i : $v$332$i;
$336 = ($t$230$i + 16) | 0;
$337 = HEAP32[$336 >> 2] | 0;
$338 = ($337 | 0) == (0 | 0);
if (!$338) {
$rsize$331$i = $$rsize$3$i;
$t$230$i = $337;
$v$332$i = $t$2$v$3$i;
continue;
}
$339 = ($t$230$i + 20) | 0;
$340 = HEAP32[$339 >> 2] | 0;
$341 = ($340 | 0) == (0 | 0);
if ($341) {
$rsize$3$lcssa$i = $$rsize$3$i;
$v$3$lcssa$i = $t$2$v$3$i;
break;
} else {
$rsize$331$i = $$rsize$3$i;
$t$230$i = $340;
$v$332$i = $t$2$v$3$i;
}
}
}
$342 = ($v$3$lcssa$i | 0) == (0 | 0);
if ($342) {
$nb$0 = $246;
} else {
$343 = HEAP32[((32544 + 8) | 0) >> 2] | 0;
$344 = ($343 - $246) | 0;
$345 = $rsize$3$lcssa$i >>> 0 < $344 >>> 0;
if ($345) {
$346 = HEAP32[((32544 + 16) | 0) >> 2] | 0;
$347 = $v$3$lcssa$i >>> 0 < $346 >>> 0;
if ($347) {
_abort();
// unreachable;
}
$348 = ($v$3$lcssa$i + $246) | 0;
$349 = $v$3$lcssa$i >>> 0 < $348 >>> 0;
if (!$349) {
_abort();
// unreachable;
}
$350 = ($v$3$lcssa$i + 24) | 0;
$351 = HEAP32[$350 >> 2] | 0;
$352 = ($v$3$lcssa$i + 12) | 0;
$353 = HEAP32[$352 >> 2] | 0;
$354 = ($353 | 0) == ($v$3$lcssa$i | 0);
do {
if ($354) {
$364 = ($v$3$lcssa$i + 20) | 0;
$365 = HEAP32[$364 >> 2] | 0;
$366 = ($365 | 0) == (0 | 0);
if ($366) {
$367 = ($v$3$lcssa$i + 16) | 0;
$368 = HEAP32[$367 >> 2] | 0;
$369 = ($368 | 0) == (0 | 0);
if ($369) {
$R$1$i20 = 0;
break;
} else {
$R$0$i18 = $368;
$RP$0$i17 = $367;
}
} else {
$R$0$i18 = $365;
$RP$0$i17 = $364;
}
while (1) {
$370 = ($R$0$i18 + 20) | 0;
$371 = HEAP32[$370 >> 2] | 0;
$372 = ($371 | 0) == (0 | 0);
if (!$372) {
$R$0$i18 = $371;
$RP$0$i17 = $370;
continue;
}
$373 = ($R$0$i18 + 16) | 0;
$374 = HEAP32[$373 >> 2] | 0;
$375 = ($374 | 0) == (0 | 0);
if ($375) {
break;
} else {
$R$0$i18 = $374;
$RP$0$i17 = $373;
}
}
$376 = $RP$0$i17 >>> 0 < $346 >>> 0;
if ($376) {
_abort();
// unreachable;
} else {
HEAP32[$RP$0$i17 >> 2] = 0;
$R$1$i20 = $R$0$i18;
break;
}
} else {
$355 = ($v$3$lcssa$i + 8) | 0;
$356 = HEAP32[$355 >> 2] | 0;
$357 = $356 >>> 0 < $346 >>> 0;
if ($357) {
_abort();
// unreachable;
}
$358 = ($356 + 12) | 0;
$359 = HEAP32[$358 >> 2] | 0;
$360 = ($359 | 0) == ($v$3$lcssa$i | 0);
if (!$360) {
_abort();
// unreachable;
}
$361 = ($353 + 8) | 0;
$362 = HEAP32[$361 >> 2] | 0;
$363 = ($362 | 0) == ($v$3$lcssa$i | 0);
if ($363) {
HEAP32[$358 >> 2] = $353;
HEAP32[$361 >> 2] = $356;
$R$1$i20 = $353;
break;
} else {
_abort();
// unreachable;
}
}
} while (0);
$377 = ($351 | 0) == (0 | 0);
do {
if (!$377) {
$378 = ($v$3$lcssa$i + 28) | 0;
$379 = HEAP32[$378 >> 2] | 0;
$380 = (((32544 + ($379 << 2)) | 0) + 304) | 0;
$381 = HEAP32[$380 >> 2] | 0;
$382 = ($v$3$lcssa$i | 0) == ($381 | 0);
if ($382) {
HEAP32[$380 >> 2] = $R$1$i20;
$cond$i21 = ($R$1$i20 | 0) == (0 | 0);
if ($cond$i21) {
$383 = 1 << $379;
$384 = $383 ^ -1;
$385 = HEAP32[((32544 + 4) | 0) >> 2] | 0;
$386 = $385 & $384;
HEAP32[((32544 + 4) | 0) >> 2] = $386;
break;
}
} else {
$387 = HEAP32[((32544 + 16) | 0) >> 2] | 0;
$388 = $351 >>> 0 < $387 >>> 0;
if ($388) {
_abort();
// unreachable;
}
$389 = ($351 + 16) | 0;
$390 = HEAP32[$389 >> 2] | 0;
$391 = ($390 | 0) == ($v$3$lcssa$i | 0);
if ($391) {
HEAP32[$389 >> 2] = $R$1$i20;
} else {
$392 = ($351 + 20) | 0;
HEAP32[$392 >> 2] = $R$1$i20;
}
$393 = ($R$1$i20 | 0) == (0 | 0);
if ($393) {
break;
}
}
$394 = HEAP32[((32544 + 16) | 0) >> 2] | 0;
$395 = $R$1$i20 >>> 0 < $394 >>> 0;
if ($395) {
_abort();
// unreachable;
}
$396 = ($R$1$i20 + 24) | 0;
HEAP32[$396 >> 2] = $351;
$397 = ($v$3$lcssa$i + 16) | 0;
$398 = HEAP32[$397 >> 2] | 0;
$399 = ($398 | 0) == (0 | 0);
do {
if (!$399) {
$400 = $398 >>> 0 < $394 >>> 0;
if ($400) {
_abort();
// unreachable;
} else {
$401 = ($R$1$i20 + 16) | 0;
HEAP32[$401 >> 2] = $398;
$402 = ($398 + 24) | 0;
HEAP32[$402 >> 2] = $R$1$i20;
break;
}
}
} while (0);
$403 = ($v$3$lcssa$i + 20) | 0;
$404 = HEAP32[$403 >> 2] | 0;
$405 = ($404 | 0) == (0 | 0);
if (!$405) {
$406 = HEAP32[((32544 + 16) | 0) >> 2] | 0;
$407 = $404 >>> 0 < $406 >>> 0;
if ($407) {
_abort();
// unreachable;
} else {
$408 = ($R$1$i20 + 20) | 0;
HEAP32[$408 >> 2] = $404;
$409 = ($404 + 24) | 0;
HEAP32[$409 >> 2] = $R$1$i20;
break;
}
}
}
} while (0);
$410 = $rsize$3$lcssa$i >>> 0 < 16;
L204: do {
if ($410) {
$411 = ($rsize$3$lcssa$i + $246) | 0;
$412 = $411 | 3;
$413 = ($v$3$lcssa$i + 4) | 0;
HEAP32[$413 >> 2] = $412;
$$sum18$i = ($411 + 4) | 0;
$414 = ($v$3$lcssa$i + $$sum18$i) | 0;
$415 = HEAP32[$414 >> 2] | 0;
$416 = $415 | 1;
HEAP32[$414 >> 2] = $416;
} else {
$417 = $246 | 3;
$418 = ($v$3$lcssa$i + 4) | 0;
HEAP32[$418 >> 2] = $417;
$419 = $rsize$3$lcssa$i | 1;
$$sum$i2338 = $246 | 4;
$420 = ($v$3$lcssa$i + $$sum$i2338) | 0;
HEAP32[$420 >> 2] = $419;
$$sum1$i24 = ($rsize$3$lcssa$i + $246) | 0;
$421 = ($v$3$lcssa$i + $$sum1$i24) | 0;
HEAP32[$421 >> 2] = $rsize$3$lcssa$i;
$422 = $rsize$3$lcssa$i >>> 3;
$423 = $rsize$3$lcssa$i >>> 0 < 256;
if ($423) {
$424 = $422 << 1;
$425 = (((32544 + ($424 << 2)) | 0) + 40) | 0;
$426 = HEAP32[32544 >> 2] | 0;
$427 = 1 << $422;
$428 = $426 & $427;
$429 = ($428 | 0) == 0;
do {
if ($429) {
$430 = $426 | $427;
HEAP32[32544 >> 2] = $430;
$$sum14$pre$i = ($424 + 2) | 0;
$$pre$i25 =
(((32544 + ($$sum14$pre$i << 2)) | 0) + 40) | 0;
$$pre$phi$i26Z2D = $$pre$i25;
$F5$0$i = $425;
} else {
$$sum17$i = ($424 + 2) | 0;
$431 = (((32544 + ($$sum17$i << 2)) | 0) + 40) | 0;
$432 = HEAP32[$431 >> 2] | 0;
$433 = HEAP32[((32544 + 16) | 0) >> 2] | 0;
$434 = $432 >>> 0 < $433 >>> 0;
if (!$434) {
$$pre$phi$i26Z2D = $431;
$F5$0$i = $432;
break;
}
_abort();
// unreachable;
}
} while (0);
HEAP32[$$pre$phi$i26Z2D >> 2] = $348;
$435 = ($F5$0$i + 12) | 0;
HEAP32[$435 >> 2] = $348;
$$sum15$i = ($246 + 8) | 0;
$436 = ($v$3$lcssa$i + $$sum15$i) | 0;
HEAP32[$436 >> 2] = $F5$0$i;
$$sum16$i = ($246 + 12) | 0;
$437 = ($v$3$lcssa$i + $$sum16$i) | 0;
HEAP32[$437 >> 2] = $425;
break;
}
$438 = $rsize$3$lcssa$i >>> 8;
$439 = ($438 | 0) == 0;
if ($439) {
$I7$0$i = 0;
} else {
$440 = $rsize$3$lcssa$i >>> 0 > 16777215;
if ($440) {
$I7$0$i = 31;
} else {
$441 = ($438 + 1048320) | 0;
$442 = $441 >>> 16;
$443 = $442 & 8;
$444 = $438 << $443;
$445 = ($444 + 520192) | 0;
$446 = $445 >>> 16;
$447 = $446 & 4;
$448 = $447 | $443;
$449 = $444 << $447;
$450 = ($449 + 245760) | 0;
$451 = $450 >>> 16;
$452 = $451 & 2;
$453 = $448 | $452;
$454 = (14 - $453) | 0;
$455 = $449 << $452;
$456 = $455 >>> 15;
$457 = ($454 + $456) | 0;
$458 = $457 << 1;
$459 = ($457 + 7) | 0;
$460 = $rsize$3$lcssa$i >>> $459;
$461 = $460 & 1;
$462 = $461 | $458;
$I7$0$i = $462;
}
}
$463 = (((32544 + ($I7$0$i << 2)) | 0) + 304) | 0;
$$sum2$i = ($246 + 28) | 0;
$464 = ($v$3$lcssa$i + $$sum2$i) | 0;
HEAP32[$464 >> 2] = $I7$0$i;
$$sum3$i27 = ($246 + 16) | 0;
$465 = ($v$3$lcssa$i + $$sum3$i27) | 0;
$$sum4$i28 = ($246 + 20) | 0;
$466 = ($v$3$lcssa$i + $$sum4$i28) | 0;
HEAP32[$466 >> 2] = 0;
HEAP32[$465 >> 2] = 0;
$467 = HEAP32[((32544 + 4) | 0) >> 2] | 0;
$468 = 1 << $I7$0$i;
$469 = $467 & $468;
$470 = ($469 | 0) == 0;
if ($470) {
$471 = $467 | $468;
HEAP32[((32544 + 4) | 0) >> 2] = $471;
HEAP32[$463 >> 2] = $348;
$$sum5$i = ($246 + 24) | 0;
$472 = ($v$3$lcssa$i + $$sum5$i) | 0;
HEAP32[$472 >> 2] = $463;
$$sum6$i = ($246 + 12) | 0;
$473 = ($v$3$lcssa$i + $$sum6$i) | 0;
HEAP32[$473 >> 2] = $348;
$$sum7$i = ($246 + 8) | 0;
$474 = ($v$3$lcssa$i + $$sum7$i) | 0;
HEAP32[$474 >> 2] = $348;
break;
}
$475 = HEAP32[$463 >> 2] | 0;
$476 = ($I7$0$i | 0) == 31;
if ($476) {
$484 = 0;
} else {
$477 = $I7$0$i >>> 1;
$478 = (25 - $477) | 0;
$484 = $478;
}
$479 = ($475 + 4) | 0;
$480 = HEAP32[$479 >> 2] | 0;
$481 = $480 & -8;
$482 = ($481 | 0) == ($rsize$3$lcssa$i | 0);
L225: do {
if ($482) {
$T$0$lcssa$i = $475;
} else {
$483 = $rsize$3$lcssa$i << $484;
$K12$027$i = $483;
$T$026$i = $475;
while (1) {
$491 = $K12$027$i >>> 31;
$492 = ((($T$026$i + ($491 << 2)) | 0) + 16) | 0;
$487 = HEAP32[$492 >> 2] | 0;
$493 = ($487 | 0) == (0 | 0);
if ($493) {
break;
}
$485 = $K12$027$i << 1;
$486 = ($487 + 4) | 0;
$488 = HEAP32[$486 >> 2] | 0;
$489 = $488 & -8;
$490 = ($489 | 0) == ($rsize$3$lcssa$i | 0);
if ($490) {
$T$0$lcssa$i = $487;
break L225;
} else {
$K12$027$i = $485;
$T$026$i = $487;
}
}
$494 = HEAP32[((32544 + 16) | 0) >> 2] | 0;
$495 = $492 >>> 0 < $494 >>> 0;
if ($495) {
_abort();
// unreachable;
} else {
HEAP32[$492 >> 2] = $348;
$$sum11$i = ($246 + 24) | 0;
$496 = ($v$3$lcssa$i + $$sum11$i) | 0;
HEAP32[$496 >> 2] = $T$026$i;
$$sum12$i = ($246 + 12) | 0;
$497 = ($v$3$lcssa$i + $$sum12$i) | 0;
HEAP32[$497 >> 2] = $348;
$$sum13$i = ($246 + 8) | 0;
$498 = ($v$3$lcssa$i + $$sum13$i) | 0;
HEAP32[$498 >> 2] = $348;
break L204;
}
}
} while (0);
$499 = ($T$0$lcssa$i + 8) | 0;
$500 = HEAP32[$499 >> 2] | 0;
$501 = HEAP32[((32544 + 16) | 0) >> 2] | 0;
$502 = $T$0$lcssa$i >>> 0 >= $501 >>> 0;
$503 = $500 >>> 0 >= $501 >>> 0;
$or$cond24$i = $502 & $503;
if ($or$cond24$i) {
$504 = ($500 + 12) | 0;
HEAP32[$504 >> 2] = $348;
HEAP32[$499 >> 2] = $348;
$$sum8$i = ($246 + 8) | 0;
$505 = ($v$3$lcssa$i + $$sum8$i) | 0;
HEAP32[$505 >> 2] = $500;
$$sum9$i = ($246 + 12) | 0;
$506 = ($v$3$lcssa$i + $$sum9$i) | 0;
HEAP32[$506 >> 2] = $T$0$lcssa$i;
$$sum10$i = ($246 + 24) | 0;
$507 = ($v$3$lcssa$i + $$sum10$i) | 0;
HEAP32[$507 >> 2] = 0;
break;
} else {
_abort();
// unreachable;
}
}
} while (0);
$508 = ($v$3$lcssa$i + 8) | 0;
$mem$0 = $508;
STACKTOP = sp;
return $mem$0 | 0;
} else {
$nb$0 = $246;
}
}
}
}
}
} while (0);
$509 = HEAP32[((32544 + 8) | 0) >> 2] | 0;
$510 = $509 >>> 0 < $nb$0 >>> 0;
if (!$510) {
$511 = ($509 - $nb$0) | 0;
$512 = HEAP32[((32544 + 20) | 0) >> 2] | 0;
$513 = $511 >>> 0 > 15;
if ($513) {
$514 = ($512 + $nb$0) | 0;
HEAP32[((32544 + 20) | 0) >> 2] = $514;
HEAP32[((32544 + 8) | 0) >> 2] = $511;
$515 = $511 | 1;
$$sum2 = ($nb$0 + 4) | 0;
$516 = ($512 + $$sum2) | 0;
HEAP32[$516 >> 2] = $515;
$517 = ($512 + $509) | 0;
HEAP32[$517 >> 2] = $511;
$518 = $nb$0 | 3;
$519 = ($512 + 4) | 0;
HEAP32[$519 >> 2] = $518;
} else {
HEAP32[((32544 + 8) | 0) >> 2] = 0;
HEAP32[((32544 + 20) | 0) >> 2] = 0;
$520 = $509 | 3;
$521 = ($512 + 4) | 0;
HEAP32[$521 >> 2] = $520;
$$sum1 = ($509 + 4) | 0;
$522 = ($512 + $$sum1) | 0;
$523 = HEAP32[$522 >> 2] | 0;
$524 = $523 | 1;
HEAP32[$522 >> 2] = $524;
}
$525 = ($512 + 8) | 0;
$mem$0 = $525;
STACKTOP = sp;
return $mem$0 | 0;
}
$526 = HEAP32[((32544 + 12) | 0) >> 2] | 0;
$527 = $526 >>> 0 > $nb$0 >>> 0;
if ($527) {
$528 = ($526 - $nb$0) | 0;
HEAP32[((32544 + 12) | 0) >> 2] = $528;
$529 = HEAP32[((32544 + 24) | 0) >> 2] | 0;
$530 = ($529 + $nb$0) | 0;
HEAP32[((32544 + 24) | 0) >> 2] = $530;
$531 = $528 | 1;
$$sum = ($nb$0 + 4) | 0;
$532 = ($529 + $$sum) | 0;
HEAP32[$532 >> 2] = $531;
$533 = $nb$0 | 3;
$534 = ($529 + 4) | 0;
HEAP32[$534 >> 2] = $533;
$535 = ($529 + 8) | 0;
$mem$0 = $535;
STACKTOP = sp;
return $mem$0 | 0;
}
$536 = HEAP32[33016 >> 2] | 0;
$537 = ($536 | 0) == 0;
do {
if ($537) {
$538 = _sysconf(30) | 0;
$539 = ($538 + -1) | 0;
$540 = $539 & $538;
$541 = ($540 | 0) == 0;
if ($541) {
HEAP32[((33016 + 8) | 0) >> 2] = $538;
HEAP32[((33016 + 4) | 0) >> 2] = $538;
HEAP32[((33016 + 12) | 0) >> 2] = -1;
HEAP32[((33016 + 16) | 0) >> 2] = -1;
HEAP32[((33016 + 20) | 0) >> 2] = 0;
HEAP32[((32544 + 444) | 0) >> 2] = 0;
$542 = _time(0 | 0) | 0;
$543 = $542 & -16;
$544 = $543 ^ 1431655768;
HEAP32[33016 >> 2] = $544;
break;
} else {
_abort();
// unreachable;
}
}
} while (0);
$545 = ($nb$0 + 48) | 0;
$546 = HEAP32[((33016 + 8) | 0) >> 2] | 0;
$547 = ($nb$0 + 47) | 0;
$548 = ($546 + $547) | 0;
$549 = (0 - $546) | 0;
$550 = $548 & $549;
$551 = $550 >>> 0 > $nb$0 >>> 0;
if (!$551) {
$mem$0 = 0;
STACKTOP = sp;
return $mem$0 | 0;
}
$552 = HEAP32[((32544 + 440) | 0) >> 2] | 0;
$553 = ($552 | 0) == 0;
if (!$553) {
$554 = HEAP32[((32544 + 432) | 0) >> 2] | 0;
$555 = ($554 + $550) | 0;
$556 = $555 >>> 0 <= $554 >>> 0;
$557 = $555 >>> 0 > $552 >>> 0;
$or$cond1$i = $556 | $557;
if ($or$cond1$i) {
$mem$0 = 0;
STACKTOP = sp;
return $mem$0 | 0;
}
}
$558 = HEAP32[((32544 + 444) | 0) >> 2] | 0;
$559 = $558 & 4;
$560 = ($559 | 0) == 0;
L266: do {
if ($560) {
$561 = HEAP32[((32544 + 24) | 0) >> 2] | 0;
$562 = ($561 | 0) == (0 | 0);
L268: do {
if ($562) {
label = 181;
} else {
$sp$0$i$i = (32544 + 448) | 0;
while (1) {
$563 = HEAP32[$sp$0$i$i >> 2] | 0;
$564 = $563 >>> 0 > $561 >>> 0;
if (!$564) {
$565 = ($sp$0$i$i + 4) | 0;
$566 = HEAP32[$565 >> 2] | 0;
$567 = ($563 + $566) | 0;
$568 = $567 >>> 0 > $561 >>> 0;
if ($568) {
break;
}
}
$569 = ($sp$0$i$i + 8) | 0;
$570 = HEAP32[$569 >> 2] | 0;
$571 = ($570 | 0) == (0 | 0);
if ($571) {
label = 181;
break L268;
} else {
$sp$0$i$i = $570;
}
}
$572 = ($sp$0$i$i | 0) == (0 | 0);
if ($572) {
label = 181;
} else {
$595 = HEAP32[((32544 + 12) | 0) >> 2] | 0;
$596 = ($548 - $595) | 0;
$597 = $596 & $549;
$598 = $597 >>> 0 < 2147483647;
if ($598) {
$599 = _sbrk($597 | 0) | 0;
$600 = HEAP32[$sp$0$i$i >> 2] | 0;
$601 = HEAP32[$565 >> 2] | 0;
$602 = ($600 + $601) | 0;
$603 = ($599 | 0) == ($602 | 0);
if ($603) {
$br$0$i = $599;
$ssize$1$i = $597;
label = 190;
} else {
$br$030$i = $599;
$ssize$129$i = $597;
label = 191;
}
} else {
$tsize$03141$i = 0;
}
}
}
} while (0);
do {
if ((label | 0) == 181) {
$573 = _sbrk(0) | 0;
$574 = ($573 | 0) == (-1 | 0);
if ($574) {
$tsize$03141$i = 0;
} else {
$575 = $573;
$576 = HEAP32[((33016 + 4) | 0) >> 2] | 0;
$577 = ($576 + -1) | 0;
$578 = $577 & $575;
$579 = ($578 | 0) == 0;
if ($579) {
$ssize$0$i = $550;
} else {
$580 = ($577 + $575) | 0;
$581 = (0 - $576) | 0;
$582 = $580 & $581;
$583 = ($550 - $575) | 0;
$584 = ($583 + $582) | 0;
$ssize$0$i = $584;
}
$585 = HEAP32[((32544 + 432) | 0) >> 2] | 0;
$586 = ($585 + $ssize$0$i) | 0;
$587 = $ssize$0$i >>> 0 > $nb$0 >>> 0;
$588 = $ssize$0$i >>> 0 < 2147483647;
$or$cond$i29 = $587 & $588;
if ($or$cond$i29) {
$589 = HEAP32[((32544 + 440) | 0) >> 2] | 0;
$590 = ($589 | 0) == 0;
if (!$590) {
$591 = $586 >>> 0 <= $585 >>> 0;
$592 = $586 >>> 0 > $589 >>> 0;
$or$cond2$i = $591 | $592;
if ($or$cond2$i) {
$tsize$03141$i = 0;
break;
}
}
$593 = _sbrk($ssize$0$i | 0) | 0;
$594 = ($593 | 0) == ($573 | 0);
if ($594) {
$br$0$i = $573;
$ssize$1$i = $ssize$0$i;
label = 190;
} else {
$br$030$i = $593;
$ssize$129$i = $ssize$0$i;
label = 191;
}
} else {
$tsize$03141$i = 0;
}
}
}
} while (0);
L288: do {
if ((label | 0) == 190) {
$604 = ($br$0$i | 0) == (-1 | 0);
if ($604) {
$tsize$03141$i = $ssize$1$i;
} else {
$tbase$245$i = $br$0$i;
$tsize$244$i = $ssize$1$i;
label = 201;
break L266;
}
} else if ((label | 0) == 191) {
$605 = (0 - $ssize$129$i) | 0;
$606 = ($br$030$i | 0) != (-1 | 0);
$607 = $ssize$129$i >>> 0 < 2147483647;
$or$cond5$i = $606 & $607;
$608 = $545 >>> 0 > $ssize$129$i >>> 0;
$or$cond4$i = $or$cond5$i & $608;
do {
if ($or$cond4$i) {
$609 = HEAP32[((33016 + 8) | 0) >> 2] | 0;
$610 = ($547 - $ssize$129$i) | 0;
$611 = ($610 + $609) | 0;
$612 = (0 - $609) | 0;
$613 = $611 & $612;
$614 = $613 >>> 0 < 2147483647;
if ($614) {
$615 = _sbrk($613 | 0) | 0;
$616 = ($615 | 0) == (-1 | 0);
if ($616) {
_sbrk($605 | 0) | 0;
$tsize$03141$i = 0;
break L288;
} else {
$617 = ($613 + $ssize$129$i) | 0;
$ssize$2$i = $617;
break;
}
} else {
$ssize$2$i = $ssize$129$i;
}
} else {
$ssize$2$i = $ssize$129$i;
}
} while (0);
$618 = ($br$030$i | 0) == (-1 | 0);
if ($618) {
$tsize$03141$i = 0;
} else {
$tbase$245$i = $br$030$i;
$tsize$244$i = $ssize$2$i;
label = 201;
break L266;
}
}
} while (0);
$619 = HEAP32[((32544 + 444) | 0) >> 2] | 0;
$620 = $619 | 4;
HEAP32[((32544 + 444) | 0) >> 2] = $620;
$tsize$1$i = $tsize$03141$i;
label = 198;
} else {
$tsize$1$i = 0;
label = 198;
}
} while (0);
if ((label | 0) == 198) {
$621 = $550 >>> 0 < 2147483647;
if ($621) {
$622 = _sbrk($550 | 0) | 0;
$623 = _sbrk(0) | 0;
$624 = ($622 | 0) != (-1 | 0);
$625 = ($623 | 0) != (-1 | 0);
$or$cond3$i = $624 & $625;
$626 = $622 >>> 0 < $623 >>> 0;
$or$cond6$i = $or$cond3$i & $626;
if ($or$cond6$i) {
$627 = $623;
$628 = $622;
$629 = ($627 - $628) | 0;
$630 = ($nb$0 + 40) | 0;
$631 = $629 >>> 0 > $630 >>> 0;
$$tsize$1$i = $631 ? $629 : $tsize$1$i;
if ($631) {
$tbase$245$i = $622;
$tsize$244$i = $$tsize$1$i;
label = 201;
}
}
}
}
if ((label | 0) == 201) {
$632 = HEAP32[((32544 + 432) | 0) >> 2] | 0;
$633 = ($632 + $tsize$244$i) | 0;
HEAP32[((32544 + 432) | 0) >> 2] = $633;
$634 = HEAP32[((32544 + 436) | 0) >> 2] | 0;
$635 = $633 >>> 0 > $634 >>> 0;
if ($635) {
HEAP32[((32544 + 436) | 0) >> 2] = $633;
}
$636 = HEAP32[((32544 + 24) | 0) >> 2] | 0;
$637 = ($636 | 0) == (0 | 0);
L308: do {
if ($637) {
$638 = HEAP32[((32544 + 16) | 0) >> 2] | 0;
$639 = ($638 | 0) == (0 | 0);
$640 = $tbase$245$i >>> 0 < $638 >>> 0;
$or$cond8$i = $639 | $640;
if ($or$cond8$i) {
HEAP32[((32544 + 16) | 0) >> 2] = $tbase$245$i;
}
HEAP32[((32544 + 448) | 0) >> 2] = $tbase$245$i;
HEAP32[((32544 + 452) | 0) >> 2] = $tsize$244$i;
HEAP32[((32544 + 460) | 0) >> 2] = 0;
$641 = HEAP32[33016 >> 2] | 0;
HEAP32[((32544 + 36) | 0) >> 2] = $641;
HEAP32[((32544 + 32) | 0) >> 2] = -1;
$i$02$i$i = 0;
while (1) {
$642 = $i$02$i$i << 1;
$643 = (((32544 + ($642 << 2)) | 0) + 40) | 0;
$$sum$i$i = ($642 + 3) | 0;
$644 = (((32544 + ($$sum$i$i << 2)) | 0) + 40) | 0;
HEAP32[$644 >> 2] = $643;
$$sum1$i$i = ($642 + 2) | 0;
$645 = (((32544 + ($$sum1$i$i << 2)) | 0) + 40) | 0;
HEAP32[$645 >> 2] = $643;
$646 = ($i$02$i$i + 1) | 0;
$exitcond$i$i = ($646 | 0) == 32;
if ($exitcond$i$i) {
break;
} else {
$i$02$i$i = $646;
}
}
$647 = ($tsize$244$i + -40) | 0;
$648 = ($tbase$245$i + 8) | 0;
$649 = $648;
$650 = $649 & 7;
$651 = ($650 | 0) == 0;
if ($651) {
$655 = 0;
} else {
$652 = (0 - $649) | 0;
$653 = $652 & 7;
$655 = $653;
}
$654 = ($tbase$245$i + $655) | 0;
$656 = ($647 - $655) | 0;
HEAP32[((32544 + 24) | 0) >> 2] = $654;
HEAP32[((32544 + 12) | 0) >> 2] = $656;
$657 = $656 | 1;
$$sum$i12$i = ($655 + 4) | 0;
$658 = ($tbase$245$i + $$sum$i12$i) | 0;
HEAP32[$658 >> 2] = $657;
$$sum2$i$i = ($tsize$244$i + -36) | 0;
$659 = ($tbase$245$i + $$sum2$i$i) | 0;
HEAP32[$659 >> 2] = 40;
$660 = HEAP32[((33016 + 16) | 0) >> 2] | 0;
HEAP32[((32544 + 28) | 0) >> 2] = $660;
} else {
$sp$073$i = (32544 + 448) | 0;
while (1) {
$661 = HEAP32[$sp$073$i >> 2] | 0;
$662 = ($sp$073$i + 4) | 0;
$663 = HEAP32[$662 >> 2] | 0;
$664 = ($661 + $663) | 0;
$665 = ($tbase$245$i | 0) == ($664 | 0);
if ($665) {
label = 213;
break;
}
$666 = ($sp$073$i + 8) | 0;
$667 = HEAP32[$666 >> 2] | 0;
$668 = ($667 | 0) == (0 | 0);
if ($668) {
break;
} else {
$sp$073$i = $667;
}
}
if ((label | 0) == 213) {
$669 = ($sp$073$i + 12) | 0;
$670 = HEAP32[$669 >> 2] | 0;
$671 = $670 & 8;
$672 = ($671 | 0) == 0;
if ($672) {
$673 = $636 >>> 0 >= $661 >>> 0;
$674 = $636 >>> 0 < $tbase$245$i >>> 0;
$or$cond47$i = $673 & $674;
if ($or$cond47$i) {
$675 = ($663 + $tsize$244$i) | 0;
HEAP32[$662 >> 2] = $675;
$676 = HEAP32[((32544 + 12) | 0) >> 2] | 0;
$677 = ($676 + $tsize$244$i) | 0;
$678 = ($636 + 8) | 0;
$679 = $678;
$680 = $679 & 7;
$681 = ($680 | 0) == 0;
if ($681) {
$685 = 0;
} else {
$682 = (0 - $679) | 0;
$683 = $682 & 7;
$685 = $683;
}
$684 = ($636 + $685) | 0;
$686 = ($677 - $685) | 0;
HEAP32[((32544 + 24) | 0) >> 2] = $684;
HEAP32[((32544 + 12) | 0) >> 2] = $686;
$687 = $686 | 1;
$$sum$i16$i = ($685 + 4) | 0;
$688 = ($636 + $$sum$i16$i) | 0;
HEAP32[$688 >> 2] = $687;
$$sum2$i17$i = ($677 + 4) | 0;
$689 = ($636 + $$sum2$i17$i) | 0;
HEAP32[$689 >> 2] = 40;
$690 = HEAP32[((33016 + 16) | 0) >> 2] | 0;
HEAP32[((32544 + 28) | 0) >> 2] = $690;
break;
}
}
}
$691 = HEAP32[((32544 + 16) | 0) >> 2] | 0;
$692 = $tbase$245$i >>> 0 < $691 >>> 0;
if ($692) {
HEAP32[((32544 + 16) | 0) >> 2] = $tbase$245$i;
$756 = $tbase$245$i;
} else {
$756 = $691;
}
$693 = ($tbase$245$i + $tsize$244$i) | 0;
$sp$166$i = (32544 + 448) | 0;
while (1) {
$694 = HEAP32[$sp$166$i >> 2] | 0;
$695 = ($694 | 0) == ($693 | 0);
if ($695) {
label = 223;
break;
}
$696 = ($sp$166$i + 8) | 0;
$697 = HEAP32[$696 >> 2] | 0;
$698 = ($697 | 0) == (0 | 0);
if ($698) {
break;
} else {
$sp$166$i = $697;
}
}
if ((label | 0) == 223) {
$699 = ($sp$166$i + 12) | 0;
$700 = HEAP32[$699 >> 2] | 0;
$701 = $700 & 8;
$702 = ($701 | 0) == 0;
if ($702) {
HEAP32[$sp$166$i >> 2] = $tbase$245$i;
$703 = ($sp$166$i + 4) | 0;
$704 = HEAP32[$703 >> 2] | 0;
$705 = ($704 + $tsize$244$i) | 0;
HEAP32[$703 >> 2] = $705;
$706 = ($tbase$245$i + 8) | 0;
$707 = $706;
$708 = $707 & 7;
$709 = ($708 | 0) == 0;
if ($709) {
$713 = 0;
} else {
$710 = (0 - $707) | 0;
$711 = $710 & 7;
$713 = $711;
}
$712 = ($tbase$245$i + $713) | 0;
$$sum102$i = ($tsize$244$i + 8) | 0;
$714 = ($tbase$245$i + $$sum102$i) | 0;
$715 = $714;
$716 = $715 & 7;
$717 = ($716 | 0) == 0;
if ($717) {
$720 = 0;
} else {
$718 = (0 - $715) | 0;
$719 = $718 & 7;
$720 = $719;
}
$$sum103$i = ($720 + $tsize$244$i) | 0;
$721 = ($tbase$245$i + $$sum103$i) | 0;
$722 = $721;
$723 = $712;
$724 = ($722 - $723) | 0;
$$sum$i19$i = ($713 + $nb$0) | 0;
$725 = ($tbase$245$i + $$sum$i19$i) | 0;
$726 = ($724 - $nb$0) | 0;
$727 = $nb$0 | 3;
$$sum1$i20$i = ($713 + 4) | 0;
$728 = ($tbase$245$i + $$sum1$i20$i) | 0;
HEAP32[$728 >> 2] = $727;
$729 = ($721 | 0) == ($636 | 0);
L345: do {
if ($729) {
$730 = HEAP32[((32544 + 12) | 0) >> 2] | 0;
$731 = ($730 + $726) | 0;
HEAP32[((32544 + 12) | 0) >> 2] = $731;
HEAP32[((32544 + 24) | 0) >> 2] = $725;
$732 = $731 | 1;
$$sum42$i$i = ($$sum$i19$i + 4) | 0;
$733 = ($tbase$245$i + $$sum42$i$i) | 0;
HEAP32[$733 >> 2] = $732;
} else {
$734 = HEAP32[((32544 + 20) | 0) >> 2] | 0;
$735 = ($721 | 0) == ($734 | 0);
if ($735) {
$736 = HEAP32[((32544 + 8) | 0) >> 2] | 0;
$737 = ($736 + $726) | 0;
HEAP32[((32544 + 8) | 0) >> 2] = $737;
HEAP32[((32544 + 20) | 0) >> 2] = $725;
$738 = $737 | 1;
$$sum40$i$i = ($$sum$i19$i + 4) | 0;
$739 = ($tbase$245$i + $$sum40$i$i) | 0;
HEAP32[$739 >> 2] = $738;
$$sum41$i$i = ($737 + $$sum$i19$i) | 0;
$740 = ($tbase$245$i + $$sum41$i$i) | 0;
HEAP32[$740 >> 2] = $737;
break;
}
$$sum2$i21$i = ($tsize$244$i + 4) | 0;
$$sum104$i = ($$sum2$i21$i + $720) | 0;
$741 = ($tbase$245$i + $$sum104$i) | 0;
$742 = HEAP32[$741 >> 2] | 0;
$743 = $742 & 3;
$744 = ($743 | 0) == 1;
if ($744) {
$745 = $742 & -8;
$746 = $742 >>> 3;
$747 = $742 >>> 0 < 256;
L353: do {
if ($747) {
$$sum3738$i$i = $720 | 8;
$$sum114$i = ($$sum3738$i$i + $tsize$244$i) | 0;
$748 = ($tbase$245$i + $$sum114$i) | 0;
$749 = HEAP32[$748 >> 2] | 0;
$$sum39$i$i = ($tsize$244$i + 12) | 0;
$$sum115$i = ($$sum39$i$i + $720) | 0;
$750 = ($tbase$245$i + $$sum115$i) | 0;
$751 = HEAP32[$750 >> 2] | 0;
$752 = $746 << 1;
$753 = (((32544 + ($752 << 2)) | 0) + 40) | 0;
$754 = ($749 | 0) == ($753 | 0);
do {
if (!$754) {
$755 = $749 >>> 0 < $756 >>> 0;
if ($755) {
_abort();
// unreachable;
}
$757 = ($749 + 12) | 0;
$758 = HEAP32[$757 >> 2] | 0;
$759 = ($758 | 0) == ($721 | 0);
if ($759) {
break;
}
_abort();
// unreachable;
}
} while (0);
$760 = ($751 | 0) == ($749 | 0);
if ($760) {
$761 = 1 << $746;
$762 = $761 ^ -1;
$763 = HEAP32[32544 >> 2] | 0;
$764 = $763 & $762;
HEAP32[32544 >> 2] = $764;
break;
}
$765 = ($751 | 0) == ($753 | 0);
do {
if ($765) {
$$pre58$i$i = ($751 + 8) | 0;
$$pre$phi59$i$iZ2D = $$pre58$i$i;
} else {
$766 = $751 >>> 0 < $756 >>> 0;
if ($766) {
_abort();
// unreachable;
}
$767 = ($751 + 8) | 0;
$768 = HEAP32[$767 >> 2] | 0;
$769 = ($768 | 0) == ($721 | 0);
if ($769) {
$$pre$phi59$i$iZ2D = $767;
break;
}
_abort();
// unreachable;
}
} while (0);
$770 = ($749 + 12) | 0;
HEAP32[$770 >> 2] = $751;
HEAP32[$$pre$phi59$i$iZ2D >> 2] = $749;
} else {
$$sum34$i$i = $720 | 24;
$$sum105$i = ($$sum34$i$i + $tsize$244$i) | 0;
$771 = ($tbase$245$i + $$sum105$i) | 0;
$772 = HEAP32[$771 >> 2] | 0;
$$sum5$i$i = ($tsize$244$i + 12) | 0;
$$sum106$i = ($$sum5$i$i + $720) | 0;
$773 = ($tbase$245$i + $$sum106$i) | 0;
$774 = HEAP32[$773 >> 2] | 0;
$775 = ($774 | 0) == ($721 | 0);
do {
if ($775) {
$$sum67$i$i = $720 | 16;
$$sum112$i = ($$sum2$i21$i + $$sum67$i$i) | 0;
$785 = ($tbase$245$i + $$sum112$i) | 0;
$786 = HEAP32[$785 >> 2] | 0;
$787 = ($786 | 0) == (0 | 0);
if ($787) {
$$sum113$i = ($$sum67$i$i + $tsize$244$i) | 0;
$788 = ($tbase$245$i + $$sum113$i) | 0;
$789 = HEAP32[$788 >> 2] | 0;
$790 = ($789 | 0) == (0 | 0);
if ($790) {
$R$1$i$i = 0;
break;
} else {
$R$0$i$i = $789;
$RP$0$i$i = $788;
}
} else {
$R$0$i$i = $786;
$RP$0$i$i = $785;
}
while (1) {
$791 = ($R$0$i$i + 20) | 0;
$792 = HEAP32[$791 >> 2] | 0;
$793 = ($792 | 0) == (0 | 0);
if (!$793) {
$R$0$i$i = $792;
$RP$0$i$i = $791;
continue;
}
$794 = ($R$0$i$i + 16) | 0;
$795 = HEAP32[$794 >> 2] | 0;
$796 = ($795 | 0) == (0 | 0);
if ($796) {
break;
} else {
$R$0$i$i = $795;
$RP$0$i$i = $794;
}
}
$797 = $RP$0$i$i >>> 0 < $756 >>> 0;
if ($797) {
_abort();
// unreachable;
} else {
HEAP32[$RP$0$i$i >> 2] = 0;
$R$1$i$i = $R$0$i$i;
break;
}
} else {
$$sum3536$i$i = $720 | 8;
$$sum107$i = ($$sum3536$i$i + $tsize$244$i) | 0;
$776 = ($tbase$245$i + $$sum107$i) | 0;
$777 = HEAP32[$776 >> 2] | 0;
$778 = $777 >>> 0 < $756 >>> 0;
if ($778) {
_abort();
// unreachable;
}
$779 = ($777 + 12) | 0;
$780 = HEAP32[$779 >> 2] | 0;
$781 = ($780 | 0) == ($721 | 0);
if (!$781) {
_abort();
// unreachable;
}
$782 = ($774 + 8) | 0;
$783 = HEAP32[$782 >> 2] | 0;
$784 = ($783 | 0) == ($721 | 0);
if ($784) {
HEAP32[$779 >> 2] = $774;
HEAP32[$782 >> 2] = $777;
$R$1$i$i = $774;
break;
} else {
_abort();
// unreachable;
}
}
} while (0);
$798 = ($772 | 0) == (0 | 0);
if ($798) {
break;
}
$$sum30$i$i = ($tsize$244$i + 28) | 0;
$$sum108$i = ($$sum30$i$i + $720) | 0;
$799 = ($tbase$245$i + $$sum108$i) | 0;
$800 = HEAP32[$799 >> 2] | 0;
$801 = (((32544 + ($800 << 2)) | 0) + 304) | 0;
$802 = HEAP32[$801 >> 2] | 0;
$803 = ($721 | 0) == ($802 | 0);
do {
if ($803) {
HEAP32[$801 >> 2] = $R$1$i$i;
$cond$i$i = ($R$1$i$i | 0) == (0 | 0);
if (!$cond$i$i) {
break;
}
$804 = 1 << $800;
$805 = $804 ^ -1;
$806 = HEAP32[((32544 + 4) | 0) >> 2] | 0;
$807 = $806 & $805;
HEAP32[((32544 + 4) | 0) >> 2] = $807;
break L353;
} else {
$808 = HEAP32[((32544 + 16) | 0) >> 2] | 0;
$809 = $772 >>> 0 < $808 >>> 0;
if ($809) {
_abort();
// unreachable;
}
$810 = ($772 + 16) | 0;
$811 = HEAP32[$810 >> 2] | 0;
$812 = ($811 | 0) == ($721 | 0);
if ($812) {
HEAP32[$810 >> 2] = $R$1$i$i;
} else {
$813 = ($772 + 20) | 0;
HEAP32[$813 >> 2] = $R$1$i$i;
}
$814 = ($R$1$i$i | 0) == (0 | 0);
if ($814) {
break L353;
}
}
} while (0);
$815 = HEAP32[((32544 + 16) | 0) >> 2] | 0;
$816 = $R$1$i$i >>> 0 < $815 >>> 0;
if ($816) {
_abort();
// unreachable;
}
$817 = ($R$1$i$i + 24) | 0;
HEAP32[$817 >> 2] = $772;
$$sum3132$i$i = $720 | 16;
$$sum109$i = ($$sum3132$i$i + $tsize$244$i) | 0;
$818 = ($tbase$245$i + $$sum109$i) | 0;
$819 = HEAP32[$818 >> 2] | 0;
$820 = ($819 | 0) == (0 | 0);
do {
if (!$820) {
$821 = $819 >>> 0 < $815 >>> 0;
if ($821) {
_abort();
// unreachable;
} else {
$822 = ($R$1$i$i + 16) | 0;
HEAP32[$822 >> 2] = $819;
$823 = ($819 + 24) | 0;
HEAP32[$823 >> 2] = $R$1$i$i;
break;
}
}
} while (0);
$$sum110$i = ($$sum2$i21$i + $$sum3132$i$i) | 0;
$824 = ($tbase$245$i + $$sum110$i) | 0;
$825 = HEAP32[$824 >> 2] | 0;
$826 = ($825 | 0) == (0 | 0);
if ($826) {
break;
}
$827 = HEAP32[((32544 + 16) | 0) >> 2] | 0;
$828 = $825 >>> 0 < $827 >>> 0;
if ($828) {
_abort();
// unreachable;
} else {
$829 = ($R$1$i$i + 20) | 0;
HEAP32[$829 >> 2] = $825;
$830 = ($825 + 24) | 0;
HEAP32[$830 >> 2] = $R$1$i$i;
break;
}
}
} while (0);
$$sum9$i$i = $745 | $720;
$$sum111$i = ($$sum9$i$i + $tsize$244$i) | 0;
$831 = ($tbase$245$i + $$sum111$i) | 0;
$832 = ($745 + $726) | 0;
$oldfirst$0$i$i = $831;
$qsize$0$i$i = $832;
} else {
$oldfirst$0$i$i = $721;
$qsize$0$i$i = $726;
}
$833 = ($oldfirst$0$i$i + 4) | 0;
$834 = HEAP32[$833 >> 2] | 0;
$835 = $834 & -2;
HEAP32[$833 >> 2] = $835;
$836 = $qsize$0$i$i | 1;
$$sum10$i$i = ($$sum$i19$i + 4) | 0;
$837 = ($tbase$245$i + $$sum10$i$i) | 0;
HEAP32[$837 >> 2] = $836;
$$sum11$i22$i = ($qsize$0$i$i + $$sum$i19$i) | 0;
$838 = ($tbase$245$i + $$sum11$i22$i) | 0;
HEAP32[$838 >> 2] = $qsize$0$i$i;
$839 = $qsize$0$i$i >>> 3;
$840 = $qsize$0$i$i >>> 0 < 256;
if ($840) {
$841 = $839 << 1;
$842 = (((32544 + ($841 << 2)) | 0) + 40) | 0;
$843 = HEAP32[32544 >> 2] | 0;
$844 = 1 << $839;
$845 = $843 & $844;
$846 = ($845 | 0) == 0;
do {
if ($846) {
$847 = $843 | $844;
HEAP32[32544 >> 2] = $847;
$$sum26$pre$i$i = ($841 + 2) | 0;
$$pre$i23$i =
(((32544 + ($$sum26$pre$i$i << 2)) | 0) + 40) | 0;
$$pre$phi$i24$iZ2D = $$pre$i23$i;
$F4$0$i$i = $842;
} else {
$$sum29$i$i = ($841 + 2) | 0;
$848 = (((32544 + ($$sum29$i$i << 2)) | 0) + 40) | 0;
$849 = HEAP32[$848 >> 2] | 0;
$850 = HEAP32[((32544 + 16) | 0) >> 2] | 0;
$851 = $849 >>> 0 < $850 >>> 0;
if (!$851) {
$$pre$phi$i24$iZ2D = $848;
$F4$0$i$i = $849;
break;
}
_abort();
// unreachable;
}
} while (0);
HEAP32[$$pre$phi$i24$iZ2D >> 2] = $725;
$852 = ($F4$0$i$i + 12) | 0;
HEAP32[$852 >> 2] = $725;
$$sum27$i$i = ($$sum$i19$i + 8) | 0;
$853 = ($tbase$245$i + $$sum27$i$i) | 0;
HEAP32[$853 >> 2] = $F4$0$i$i;
$$sum28$i$i = ($$sum$i19$i + 12) | 0;
$854 = ($tbase$245$i + $$sum28$i$i) | 0;
HEAP32[$854 >> 2] = $842;
break;
}
$855 = $qsize$0$i$i >>> 8;
$856 = ($855 | 0) == 0;
do {
if ($856) {
$I7$0$i$i = 0;
} else {
$857 = $qsize$0$i$i >>> 0 > 16777215;
if ($857) {
$I7$0$i$i = 31;
break;
}
$858 = ($855 + 1048320) | 0;
$859 = $858 >>> 16;
$860 = $859 & 8;
$861 = $855 << $860;
$862 = ($861 + 520192) | 0;
$863 = $862 >>> 16;
$864 = $863 & 4;
$865 = $864 | $860;
$866 = $861 << $864;
$867 = ($866 + 245760) | 0;
$868 = $867 >>> 16;
$869 = $868 & 2;
$870 = $865 | $869;
$871 = (14 - $870) | 0;
$872 = $866 << $869;
$873 = $872 >>> 15;
$874 = ($871 + $873) | 0;
$875 = $874 << 1;
$876 = ($874 + 7) | 0;
$877 = $qsize$0$i$i >>> $876;
$878 = $877 & 1;
$879 = $878 | $875;
$I7$0$i$i = $879;
}
} while (0);
$880 = (((32544 + ($I7$0$i$i << 2)) | 0) + 304) | 0;
$$sum12$i$i = ($$sum$i19$i + 28) | 0;
$881 = ($tbase$245$i + $$sum12$i$i) | 0;
HEAP32[$881 >> 2] = $I7$0$i$i;
$$sum13$i$i = ($$sum$i19$i + 16) | 0;
$882 = ($tbase$245$i + $$sum13$i$i) | 0;
$$sum14$i$i = ($$sum$i19$i + 20) | 0;
$883 = ($tbase$245$i + $$sum14$i$i) | 0;
HEAP32[$883 >> 2] = 0;
HEAP32[$882 >> 2] = 0;
$884 = HEAP32[((32544 + 4) | 0) >> 2] | 0;
$885 = 1 << $I7$0$i$i;
$886 = $884 & $885;
$887 = ($886 | 0) == 0;
if ($887) {
$888 = $884 | $885;
HEAP32[((32544 + 4) | 0) >> 2] = $888;
HEAP32[$880 >> 2] = $725;
$$sum15$i$i = ($$sum$i19$i + 24) | 0;
$889 = ($tbase$245$i + $$sum15$i$i) | 0;
HEAP32[$889 >> 2] = $880;
$$sum16$i$i = ($$sum$i19$i + 12) | 0;
$890 = ($tbase$245$i + $$sum16$i$i) | 0;
HEAP32[$890 >> 2] = $725;
$$sum17$i$i = ($$sum$i19$i + 8) | 0;
$891 = ($tbase$245$i + $$sum17$i$i) | 0;
HEAP32[$891 >> 2] = $725;
break;
}
$892 = HEAP32[$880 >> 2] | 0;
$893 = ($I7$0$i$i | 0) == 31;
if ($893) {
$901 = 0;
} else {
$894 = $I7$0$i$i >>> 1;
$895 = (25 - $894) | 0;
$901 = $895;
}
$896 = ($892 + 4) | 0;
$897 = HEAP32[$896 >> 2] | 0;
$898 = $897 & -8;
$899 = ($898 | 0) == ($qsize$0$i$i | 0);
L442: do {
if ($899) {
$T$0$lcssa$i26$i = $892;
} else {
$900 = $qsize$0$i$i << $901;
$K8$053$i$i = $900;
$T$052$i$i = $892;
while (1) {
$908 = $K8$053$i$i >>> 31;
$909 = ((($T$052$i$i + ($908 << 2)) | 0) + 16) | 0;
$904 = HEAP32[$909 >> 2] | 0;
$910 = ($904 | 0) == (0 | 0);
if ($910) {
break;
}
$902 = $K8$053$i$i << 1;
$903 = ($904 + 4) | 0;
$905 = HEAP32[$903 >> 2] | 0;
$906 = $905 & -8;
$907 = ($906 | 0) == ($qsize$0$i$i | 0);
if ($907) {
$T$0$lcssa$i26$i = $904;
break L442;
} else {
$K8$053$i$i = $902;
$T$052$i$i = $904;
}
}
$911 = HEAP32[((32544 + 16) | 0) >> 2] | 0;
$912 = $909 >>> 0 < $911 >>> 0;
if ($912) {
_abort();
// unreachable;
} else {
HEAP32[$909 >> 2] = $725;
$$sum23$i$i = ($$sum$i19$i + 24) | 0;
$913 = ($tbase$245$i + $$sum23$i$i) | 0;
HEAP32[$913 >> 2] = $T$052$i$i;
$$sum24$i$i = ($$sum$i19$i + 12) | 0;
$914 = ($tbase$245$i + $$sum24$i$i) | 0;
HEAP32[$914 >> 2] = $725;
$$sum25$i$i = ($$sum$i19$i + 8) | 0;
$915 = ($tbase$245$i + $$sum25$i$i) | 0;
HEAP32[$915 >> 2] = $725;
break L345;
}
}
} while (0);
$916 = ($T$0$lcssa$i26$i + 8) | 0;
$917 = HEAP32[$916 >> 2] | 0;
$918 = HEAP32[((32544 + 16) | 0) >> 2] | 0;
$919 = $T$0$lcssa$i26$i >>> 0 >= $918 >>> 0;
$920 = $917 >>> 0 >= $918 >>> 0;
$or$cond$i27$i = $919 & $920;
if ($or$cond$i27$i) {
$921 = ($917 + 12) | 0;
HEAP32[$921 >> 2] = $725;
HEAP32[$916 >> 2] = $725;
$$sum20$i$i = ($$sum$i19$i + 8) | 0;
$922 = ($tbase$245$i + $$sum20$i$i) | 0;
HEAP32[$922 >> 2] = $917;
$$sum21$i$i = ($$sum$i19$i + 12) | 0;
$923 = ($tbase$245$i + $$sum21$i$i) | 0;
HEAP32[$923 >> 2] = $T$0$lcssa$i26$i;
$$sum22$i$i = ($$sum$i19$i + 24) | 0;
$924 = ($tbase$245$i + $$sum22$i$i) | 0;
HEAP32[$924 >> 2] = 0;
break;
} else {
_abort();
// unreachable;
}
}
} while (0);
$$sum1819$i$i = $713 | 8;
$925 = ($tbase$245$i + $$sum1819$i$i) | 0;
$mem$0 = $925;
STACKTOP = sp;
return $mem$0 | 0;
}
}
$sp$0$i$i$i = (32544 + 448) | 0;
while (1) {
$926 = HEAP32[$sp$0$i$i$i >> 2] | 0;
$927 = $926 >>> 0 > $636 >>> 0;
if (!$927) {
$928 = ($sp$0$i$i$i + 4) | 0;
$929 = HEAP32[$928 >> 2] | 0;
$930 = ($926 + $929) | 0;
$931 = $930 >>> 0 > $636 >>> 0;
if ($931) {
break;
}
}
$932 = ($sp$0$i$i$i + 8) | 0;
$933 = HEAP32[$932 >> 2] | 0;
$sp$0$i$i$i = $933;
}
$$sum$i13$i = ($929 + -47) | 0;
$$sum1$i14$i = ($929 + -39) | 0;
$934 = ($926 + $$sum1$i14$i) | 0;
$935 = $934;
$936 = $935 & 7;
$937 = ($936 | 0) == 0;
if ($937) {
$940 = 0;
} else {
$938 = (0 - $935) | 0;
$939 = $938 & 7;
$940 = $939;
}
$$sum2$i15$i = ($$sum$i13$i + $940) | 0;
$941 = ($926 + $$sum2$i15$i) | 0;
$942 = ($636 + 16) | 0;
$943 = $941 >>> 0 < $942 >>> 0;
$944 = $943 ? $636 : $941;
$945 = ($944 + 8) | 0;
$946 = ($tsize$244$i + -40) | 0;
$947 = ($tbase$245$i + 8) | 0;
$948 = $947;
$949 = $948 & 7;
$950 = ($949 | 0) == 0;
if ($950) {
$954 = 0;
} else {
$951 = (0 - $948) | 0;
$952 = $951 & 7;
$954 = $952;
}
$953 = ($tbase$245$i + $954) | 0;
$955 = ($946 - $954) | 0;
HEAP32[((32544 + 24) | 0) >> 2] = $953;
HEAP32[((32544 + 12) | 0) >> 2] = $955;
$956 = $955 | 1;
$$sum$i$i$i = ($954 + 4) | 0;
$957 = ($tbase$245$i + $$sum$i$i$i) | 0;
HEAP32[$957 >> 2] = $956;
$$sum2$i$i$i = ($tsize$244$i + -36) | 0;
$958 = ($tbase$245$i + $$sum2$i$i$i) | 0;
HEAP32[$958 >> 2] = 40;
$959 = HEAP32[((33016 + 16) | 0) >> 2] | 0;
HEAP32[((32544 + 28) | 0) >> 2] = $959;
$960 = ($944 + 4) | 0;
HEAP32[$960 >> 2] = 27;
HEAP32[($945 + 0) >> 2] = HEAP32[(((32544 + 448) | 0) + 0) >> 2] | 0;
HEAP32[($945 + 4) >> 2] = HEAP32[(((32544 + 448) | 0) + 4) >> 2] | 0;
HEAP32[($945 + 8) >> 2] = HEAP32[(((32544 + 448) | 0) + 8) >> 2] | 0;
HEAP32[($945 + 12) >> 2] =
HEAP32[(((32544 + 448) | 0) + 12) >> 2] | 0;
HEAP32[((32544 + 448) | 0) >> 2] = $tbase$245$i;
HEAP32[((32544 + 452) | 0) >> 2] = $tsize$244$i;
HEAP32[((32544 + 460) | 0) >> 2] = 0;
HEAP32[((32544 + 456) | 0) >> 2] = $945;
$961 = ($944 + 28) | 0;
HEAP32[$961 >> 2] = 7;
$962 = ($944 + 32) | 0;
$963 = $962 >>> 0 < $930 >>> 0;
if ($963) {
$965 = $961;
while (1) {
$964 = ($965 + 4) | 0;
HEAP32[$964 >> 2] = 7;
$966 = ($965 + 8) | 0;
$967 = $966 >>> 0 < $930 >>> 0;
if ($967) {
$965 = $964;
} else {
break;
}
}
}
$968 = ($944 | 0) == ($636 | 0);
if (!$968) {
$969 = $944;
$970 = $636;
$971 = ($969 - $970) | 0;
$972 = ($636 + $971) | 0;
$$sum3$i$i = ($971 + 4) | 0;
$973 = ($636 + $$sum3$i$i) | 0;
$974 = HEAP32[$973 >> 2] | 0;
$975 = $974 & -2;
HEAP32[$973 >> 2] = $975;
$976 = $971 | 1;
$977 = ($636 + 4) | 0;
HEAP32[$977 >> 2] = $976;
HEAP32[$972 >> 2] = $971;
$978 = $971 >>> 3;
$979 = $971 >>> 0 < 256;
if ($979) {
$980 = $978 << 1;
$981 = (((32544 + ($980 << 2)) | 0) + 40) | 0;
$982 = HEAP32[32544 >> 2] | 0;
$983 = 1 << $978;
$984 = $982 & $983;
$985 = ($984 | 0) == 0;
do {
if ($985) {
$986 = $982 | $983;
HEAP32[32544 >> 2] = $986;
$$sum10$pre$i$i = ($980 + 2) | 0;
$$pre$i$i = (((32544 + ($$sum10$pre$i$i << 2)) | 0) + 40) | 0;
$$pre$phi$i$iZ2D = $$pre$i$i;
$F$0$i$i = $981;
} else {
$$sum11$i$i = ($980 + 2) | 0;
$987 = (((32544 + ($$sum11$i$i << 2)) | 0) + 40) | 0;
$988 = HEAP32[$987 >> 2] | 0;
$989 = HEAP32[((32544 + 16) | 0) >> 2] | 0;
$990 = $988 >>> 0 < $989 >>> 0;
if (!$990) {
$$pre$phi$i$iZ2D = $987;
$F$0$i$i = $988;
break;
}
_abort();
// unreachable;
}
} while (0);
HEAP32[$$pre$phi$i$iZ2D >> 2] = $636;
$991 = ($F$0$i$i + 12) | 0;
HEAP32[$991 >> 2] = $636;
$992 = ($636 + 8) | 0;
HEAP32[$992 >> 2] = $F$0$i$i;
$993 = ($636 + 12) | 0;
HEAP32[$993 >> 2] = $981;
break;
}
$994 = $971 >>> 8;
$995 = ($994 | 0) == 0;
if ($995) {
$I1$0$i$i = 0;
} else {
$996 = $971 >>> 0 > 16777215;
if ($996) {
$I1$0$i$i = 31;
} else {
$997 = ($994 + 1048320) | 0;
$998 = $997 >>> 16;
$999 = $998 & 8;
$1000 = $994 << $999;
$1001 = ($1000 + 520192) | 0;
$1002 = $1001 >>> 16;
$1003 = $1002 & 4;
$1004 = $1003 | $999;
$1005 = $1000 << $1003;
$1006 = ($1005 + 245760) | 0;
$1007 = $1006 >>> 16;
$1008 = $1007 & 2;
$1009 = $1004 | $1008;
$1010 = (14 - $1009) | 0;
$1011 = $1005 << $1008;
$1012 = $1011 >>> 15;
$1013 = ($1010 + $1012) | 0;
$1014 = $1013 << 1;
$1015 = ($1013 + 7) | 0;
$1016 = $971 >>> $1015;
$1017 = $1016 & 1;
$1018 = $1017 | $1014;
$I1$0$i$i = $1018;
}
}
$1019 = (((32544 + ($I1$0$i$i << 2)) | 0) + 304) | 0;
$1020 = ($636 + 28) | 0;
$I1$0$c$i$i = $I1$0$i$i;
HEAP32[$1020 >> 2] = $I1$0$c$i$i;
$1021 = ($636 + 20) | 0;
HEAP32[$1021 >> 2] = 0;
$1022 = ($636 + 16) | 0;
HEAP32[$1022 >> 2] = 0;
$1023 = HEAP32[((32544 + 4) | 0) >> 2] | 0;
$1024 = 1 << $I1$0$i$i;
$1025 = $1023 & $1024;
$1026 = ($1025 | 0) == 0;
if ($1026) {
$1027 = $1023 | $1024;
HEAP32[((32544 + 4) | 0) >> 2] = $1027;
HEAP32[$1019 >> 2] = $636;
$1028 = ($636 + 24) | 0;
HEAP32[$1028 >> 2] = $1019;
$1029 = ($636 + 12) | 0;
HEAP32[$1029 >> 2] = $636;
$1030 = ($636 + 8) | 0;
HEAP32[$1030 >> 2] = $636;
break;
}
$1031 = HEAP32[$1019 >> 2] | 0;
$1032 = ($I1$0$i$i | 0) == 31;
if ($1032) {
$1040 = 0;
} else {
$1033 = $I1$0$i$i >>> 1;
$1034 = (25 - $1033) | 0;
$1040 = $1034;
}
$1035 = ($1031 + 4) | 0;
$1036 = HEAP32[$1035 >> 2] | 0;
$1037 = $1036 & -8;
$1038 = ($1037 | 0) == ($971 | 0);
L493: do {
if ($1038) {
$T$0$lcssa$i$i = $1031;
} else {
$1039 = $971 << $1040;
$K2$015$i$i = $1039;
$T$014$i$i = $1031;
while (1) {
$1047 = $K2$015$i$i >>> 31;
$1048 = ((($T$014$i$i + ($1047 << 2)) | 0) + 16) | 0;
$1043 = HEAP32[$1048 >> 2] | 0;
$1049 = ($1043 | 0) == (0 | 0);
if ($1049) {
break;
}
$1041 = $K2$015$i$i << 1;
$1042 = ($1043 + 4) | 0;
$1044 = HEAP32[$1042 >> 2] | 0;
$1045 = $1044 & -8;
$1046 = ($1045 | 0) == ($971 | 0);
if ($1046) {
$T$0$lcssa$i$i = $1043;
break L493;
} else {
$K2$015$i$i = $1041;
$T$014$i$i = $1043;
}
}
$1050 = HEAP32[((32544 + 16) | 0) >> 2] | 0;
$1051 = $1048 >>> 0 < $1050 >>> 0;
if ($1051) {
_abort();
// unreachable;
} else {
HEAP32[$1048 >> 2] = $636;
$1052 = ($636 + 24) | 0;
HEAP32[$1052 >> 2] = $T$014$i$i;
$1053 = ($636 + 12) | 0;
HEAP32[$1053 >> 2] = $636;
$1054 = ($636 + 8) | 0;
HEAP32[$1054 >> 2] = $636;
break L308;
}
}
} while (0);
$1055 = ($T$0$lcssa$i$i + 8) | 0;
$1056 = HEAP32[$1055 >> 2] | 0;
$1057 = HEAP32[((32544 + 16) | 0) >> 2] | 0;
$1058 = $T$0$lcssa$i$i >>> 0 >= $1057 >>> 0;
$1059 = $1056 >>> 0 >= $1057 >>> 0;
$or$cond$i$i = $1058 & $1059;
if ($or$cond$i$i) {
$1060 = ($1056 + 12) | 0;
HEAP32[$1060 >> 2] = $636;
HEAP32[$1055 >> 2] = $636;
$1061 = ($636 + 8) | 0;
HEAP32[$1061 >> 2] = $1056;
$1062 = ($636 + 12) | 0;
HEAP32[$1062 >> 2] = $T$0$lcssa$i$i;
$1063 = ($636 + 24) | 0;
HEAP32[$1063 >> 2] = 0;
break;
} else {
_abort();
// unreachable;
}
}
}
} while (0);
$1064 = HEAP32[((32544 + 12) | 0) >> 2] | 0;
$1065 = $1064 >>> 0 > $nb$0 >>> 0;
if ($1065) {
$1066 = ($1064 - $nb$0) | 0;
HEAP32[((32544 + 12) | 0) >> 2] = $1066;
$1067 = HEAP32[((32544 + 24) | 0) >> 2] | 0;
$1068 = ($1067 + $nb$0) | 0;
HEAP32[((32544 + 24) | 0) >> 2] = $1068;
$1069 = $1066 | 1;
$$sum$i32 = ($nb$0 + 4) | 0;
$1070 = ($1067 + $$sum$i32) | 0;
HEAP32[$1070 >> 2] = $1069;
$1071 = $nb$0 | 3;
$1072 = ($1067 + 4) | 0;
HEAP32[$1072 >> 2] = $1071;
$1073 = ($1067 + 8) | 0;
$mem$0 = $1073;
STACKTOP = sp;
return $mem$0 | 0;
}
}
$1074 = ___errno_location() | 0;
HEAP32[$1074 >> 2] = 12;
$mem$0 = 0;
STACKTOP = sp;
return $mem$0 | 0;
}
function _free($mem) {
$mem = $mem | 0;
var $$pre = 0,
$$pre$phi66Z2D = 0,
$$pre$phi68Z2D = 0,
$$pre$phiZ2D = 0,
$$pre65 = 0,
$$pre67 = 0,
$$sum = 0,
$$sum16$pre = 0,
$$sum17 = 0,
$$sum18 = 0,
$$sum19 = 0,
$$sum2 = 0,
$$sum20 = 0,
$$sum2324 = 0,
$$sum25 = 0,
$$sum26 = 0,
$$sum28 = 0,
$$sum29 = 0,
$$sum3 = 0,
$$sum30 = 0;
var $$sum31 = 0,
$$sum32 = 0,
$$sum33 = 0,
$$sum34 = 0,
$$sum35 = 0,
$$sum36 = 0,
$$sum37 = 0,
$$sum5 = 0,
$$sum67 = 0,
$$sum8 = 0,
$$sum9 = 0,
$0 = 0,
$1 = 0,
$10 = 0,
$100 = 0,
$101 = 0,
$102 = 0,
$103 = 0,
$104 = 0,
$105 = 0;
var $106 = 0,
$107 = 0,
$108 = 0,
$109 = 0,
$11 = 0,
$110 = 0,
$111 = 0,
$112 = 0,
$113 = 0,
$114 = 0,
$115 = 0,
$116 = 0,
$117 = 0,
$118 = 0,
$119 = 0,
$12 = 0,
$120 = 0,
$121 = 0,
$122 = 0,
$123 = 0;
var $124 = 0,
$125 = 0,
$126 = 0,
$127 = 0,
$128 = 0,
$129 = 0,
$13 = 0,
$130 = 0,
$131 = 0,
$132 = 0,
$133 = 0,
$134 = 0,
$135 = 0,
$136 = 0,
$137 = 0,
$138 = 0,
$139 = 0,
$14 = 0,
$140 = 0,
$141 = 0;
var $142 = 0,
$143 = 0,
$144 = 0,
$145 = 0,
$146 = 0,
$147 = 0,
$148 = 0,
$149 = 0,
$15 = 0,
$150 = 0,
$151 = 0,
$152 = 0,
$153 = 0,
$154 = 0,
$155 = 0,
$156 = 0,
$157 = 0,
$158 = 0,
$159 = 0,
$16 = 0;
var $160 = 0,
$161 = 0,
$162 = 0,
$163 = 0,
$164 = 0,
$165 = 0,
$166 = 0,
$167 = 0,
$168 = 0,
$169 = 0,
$17 = 0,
$170 = 0,
$171 = 0,
$172 = 0,
$173 = 0,
$174 = 0,
$175 = 0,
$176 = 0,
$177 = 0,
$178 = 0;
var $179 = 0,
$18 = 0,
$180 = 0,
$181 = 0,
$182 = 0,
$183 = 0,
$184 = 0,
$185 = 0,
$186 = 0,
$187 = 0,
$188 = 0,
$189 = 0,
$19 = 0,
$190 = 0,
$191 = 0,
$192 = 0,
$193 = 0,
$194 = 0,
$195 = 0,
$196 = 0;
var $197 = 0,
$198 = 0,
$199 = 0,
$2 = 0,
$20 = 0,
$200 = 0,
$201 = 0,
$202 = 0,
$203 = 0,
$204 = 0,
$205 = 0,
$206 = 0,
$207 = 0,
$208 = 0,
$209 = 0,
$21 = 0,
$210 = 0,
$211 = 0,
$212 = 0,
$213 = 0;
var $214 = 0,
$215 = 0,
$216 = 0,
$217 = 0,
$218 = 0,
$219 = 0,
$22 = 0,
$220 = 0,
$221 = 0,
$222 = 0,
$223 = 0,
$224 = 0,
$225 = 0,
$226 = 0,
$227 = 0,
$228 = 0,
$229 = 0,
$23 = 0,
$230 = 0,
$231 = 0;
var $232 = 0,
$233 = 0,
$234 = 0,
$235 = 0,
$236 = 0,
$237 = 0,
$238 = 0,
$239 = 0,
$24 = 0,
$240 = 0,
$241 = 0,
$242 = 0,
$243 = 0,
$244 = 0,
$245 = 0,
$246 = 0,
$247 = 0,
$248 = 0,
$249 = 0,
$25 = 0;
var $250 = 0,
$251 = 0,
$252 = 0,
$253 = 0,
$254 = 0,
$255 = 0,
$256 = 0,
$257 = 0,
$258 = 0,
$259 = 0,
$26 = 0,
$260 = 0,
$261 = 0,
$262 = 0,
$263 = 0,
$264 = 0,
$265 = 0,
$266 = 0,
$267 = 0,
$268 = 0;
var $269 = 0,
$27 = 0,
$270 = 0,
$271 = 0,
$272 = 0,
$273 = 0,
$274 = 0,
$275 = 0,
$276 = 0,
$277 = 0,
$278 = 0,
$279 = 0,
$28 = 0,
$280 = 0,
$281 = 0,
$282 = 0,
$283 = 0,
$284 = 0,
$285 = 0,
$286 = 0;
var $287 = 0,
$288 = 0,
$289 = 0,
$29 = 0,
$290 = 0,
$291 = 0,
$292 = 0,
$293 = 0,
$294 = 0,
$295 = 0,
$296 = 0,
$297 = 0,
$298 = 0,
$299 = 0,
$3 = 0,
$30 = 0,
$300 = 0,
$301 = 0,
$302 = 0,
$303 = 0;
var $304 = 0,
$305 = 0,
$306 = 0,
$307 = 0,
$308 = 0,
$309 = 0,
$31 = 0,
$310 = 0,
$311 = 0,
$312 = 0,
$313 = 0,
$314 = 0,
$315 = 0,
$316 = 0,
$317 = 0,
$318 = 0,
$319 = 0,
$32 = 0,
$320 = 0,
$321 = 0;
var $33 = 0,
$34 = 0,
$35 = 0,
$36 = 0,
$37 = 0,
$38 = 0,
$39 = 0,
$4 = 0,
$40 = 0,
$41 = 0,
$42 = 0,
$43 = 0,
$44 = 0,
$45 = 0,
$46 = 0,
$47 = 0,
$48 = 0,
$49 = 0,
$5 = 0,
$50 = 0;
var $51 = 0,
$52 = 0,
$53 = 0,
$54 = 0,
$55 = 0,
$56 = 0,
$57 = 0,
$58 = 0,
$59 = 0,
$6 = 0,
$60 = 0,
$61 = 0,
$62 = 0,
$63 = 0,
$64 = 0,
$65 = 0,
$66 = 0,
$67 = 0,
$68 = 0,
$69 = 0;
var $7 = 0,
$70 = 0,
$71 = 0,
$72 = 0,
$73 = 0,
$74 = 0,
$75 = 0,
$76 = 0,
$77 = 0,
$78 = 0,
$79 = 0,
$8 = 0,
$80 = 0,
$81 = 0,
$82 = 0,
$83 = 0,
$84 = 0,
$85 = 0,
$86 = 0,
$87 = 0;
var $88 = 0,
$89 = 0,
$9 = 0,
$90 = 0,
$91 = 0,
$92 = 0,
$93 = 0,
$94 = 0,
$95 = 0,
$96 = 0,
$97 = 0,
$98 = 0,
$99 = 0,
$F16$0 = 0,
$I18$0 = 0,
$I18$0$c = 0,
$K19$058 = 0,
$R$0 = 0,
$R$1 = 0,
$R7$0 = 0;
var $R7$1 = 0,
$RP$0 = 0,
$RP9$0 = 0,
$T$0$lcssa = 0,
$T$057 = 0,
$cond = 0,
$cond54 = 0,
$or$cond = 0,
$p$0 = 0,
$psize$0 = 0,
$psize$1 = 0,
$sp$0$i = 0,
$sp$0$in$i = 0,
label = 0,
sp = 0;
sp = STACKTOP;
$0 = ($mem | 0) == (0 | 0);
if ($0) {
STACKTOP = sp;
return;
}
$1 = ($mem + -8) | 0;
$2 = HEAP32[((32544 + 16) | 0) >> 2] | 0;
$3 = $1 >>> 0 < $2 >>> 0;
if ($3) {
_abort();
// unreachable;
}
$4 = ($mem + -4) | 0;
$5 = HEAP32[$4 >> 2] | 0;
$6 = $5 & 3;
$7 = ($6 | 0) == 1;
if ($7) {
_abort();
// unreachable;
}
$8 = $5 & -8;
$$sum = ($8 + -8) | 0;
$9 = ($mem + $$sum) | 0;
$10 = $5 & 1;
$11 = ($10 | 0) == 0;
do {
if ($11) {
$12 = HEAP32[$1 >> 2] | 0;
$13 = ($6 | 0) == 0;
if ($13) {
STACKTOP = sp;
return;
}
$$sum2 = (-8 - $12) | 0;
$14 = ($mem + $$sum2) | 0;
$15 = ($12 + $8) | 0;
$16 = $14 >>> 0 < $2 >>> 0;
if ($16) {
_abort();
// unreachable;
}
$17 = HEAP32[((32544 + 20) | 0) >> 2] | 0;
$18 = ($14 | 0) == ($17 | 0);
if ($18) {
$$sum3 = ($8 + -4) | 0;
$103 = ($mem + $$sum3) | 0;
$104 = HEAP32[$103 >> 2] | 0;
$105 = $104 & 3;
$106 = ($105 | 0) == 3;
if (!$106) {
$p$0 = $14;
$psize$0 = $15;
break;
}
HEAP32[((32544 + 8) | 0) >> 2] = $15;
$107 = $104 & -2;
HEAP32[$103 >> 2] = $107;
$108 = $15 | 1;
$$sum26 = ($$sum2 + 4) | 0;
$109 = ($mem + $$sum26) | 0;
HEAP32[$109 >> 2] = $108;
HEAP32[$9 >> 2] = $15;
STACKTOP = sp;
return;
}
$19 = $12 >>> 3;
$20 = $12 >>> 0 < 256;
if ($20) {
$$sum36 = ($$sum2 + 8) | 0;
$21 = ($mem + $$sum36) | 0;
$22 = HEAP32[$21 >> 2] | 0;
$$sum37 = ($$sum2 + 12) | 0;
$23 = ($mem + $$sum37) | 0;
$24 = HEAP32[$23 >> 2] | 0;
$25 = $19 << 1;
$26 = (((32544 + ($25 << 2)) | 0) + 40) | 0;
$27 = ($22 | 0) == ($26 | 0);
if (!$27) {
$28 = $22 >>> 0 < $2 >>> 0;
if ($28) {
_abort();
// unreachable;
}
$29 = ($22 + 12) | 0;
$30 = HEAP32[$29 >> 2] | 0;
$31 = ($30 | 0) == ($14 | 0);
if (!$31) {
_abort();
// unreachable;
}
}
$32 = ($24 | 0) == ($22 | 0);
if ($32) {
$33 = 1 << $19;
$34 = $33 ^ -1;
$35 = HEAP32[32544 >> 2] | 0;
$36 = $35 & $34;
HEAP32[32544 >> 2] = $36;
$p$0 = $14;
$psize$0 = $15;
break;
}
$37 = ($24 | 0) == ($26 | 0);
if ($37) {
$$pre67 = ($24 + 8) | 0;
$$pre$phi68Z2D = $$pre67;
} else {
$38 = $24 >>> 0 < $2 >>> 0;
if ($38) {
_abort();
// unreachable;
}
$39 = ($24 + 8) | 0;
$40 = HEAP32[$39 >> 2] | 0;
$41 = ($40 | 0) == ($14 | 0);
if ($41) {
$$pre$phi68Z2D = $39;
} else {
_abort();
// unreachable;
}
}
$42 = ($22 + 12) | 0;
HEAP32[$42 >> 2] = $24;
HEAP32[$$pre$phi68Z2D >> 2] = $22;
$p$0 = $14;
$psize$0 = $15;
break;
}
$$sum28 = ($$sum2 + 24) | 0;
$43 = ($mem + $$sum28) | 0;
$44 = HEAP32[$43 >> 2] | 0;
$$sum29 = ($$sum2 + 12) | 0;
$45 = ($mem + $$sum29) | 0;
$46 = HEAP32[$45 >> 2] | 0;
$47 = ($46 | 0) == ($14 | 0);
do {
if ($47) {
$$sum31 = ($$sum2 + 20) | 0;
$57 = ($mem + $$sum31) | 0;
$58 = HEAP32[$57 >> 2] | 0;
$59 = ($58 | 0) == (0 | 0);
if ($59) {
$$sum30 = ($$sum2 + 16) | 0;
$60 = ($mem + $$sum30) | 0;
$61 = HEAP32[$60 >> 2] | 0;
$62 = ($61 | 0) == (0 | 0);
if ($62) {
$R$1 = 0;
break;
} else {
$R$0 = $61;
$RP$0 = $60;
}
} else {
$R$0 = $58;
$RP$0 = $57;
}
while (1) {
$63 = ($R$0 + 20) | 0;
$64 = HEAP32[$63 >> 2] | 0;
$65 = ($64 | 0) == (0 | 0);
if (!$65) {
$R$0 = $64;
$RP$0 = $63;
continue;
}
$66 = ($R$0 + 16) | 0;
$67 = HEAP32[$66 >> 2] | 0;
$68 = ($67 | 0) == (0 | 0);
if ($68) {
break;
} else {
$R$0 = $67;
$RP$0 = $66;
}
}
$69 = $RP$0 >>> 0 < $2 >>> 0;
if ($69) {
_abort();
// unreachable;
} else {
HEAP32[$RP$0 >> 2] = 0;
$R$1 = $R$0;
break;
}
} else {
$$sum35 = ($$sum2 + 8) | 0;
$48 = ($mem + $$sum35) | 0;
$49 = HEAP32[$48 >> 2] | 0;
$50 = $49 >>> 0 < $2 >>> 0;
if ($50) {
_abort();
// unreachable;
}
$51 = ($49 + 12) | 0;
$52 = HEAP32[$51 >> 2] | 0;
$53 = ($52 | 0) == ($14 | 0);
if (!$53) {
_abort();
// unreachable;
}
$54 = ($46 + 8) | 0;
$55 = HEAP32[$54 >> 2] | 0;
$56 = ($55 | 0) == ($14 | 0);
if ($56) {
HEAP32[$51 >> 2] = $46;
HEAP32[$54 >> 2] = $49;
$R$1 = $46;
break;
} else {
_abort();
// unreachable;
}
}
} while (0);
$70 = ($44 | 0) == (0 | 0);
if ($70) {
$p$0 = $14;
$psize$0 = $15;
} else {
$$sum32 = ($$sum2 + 28) | 0;
$71 = ($mem + $$sum32) | 0;
$72 = HEAP32[$71 >> 2] | 0;
$73 = (((32544 + ($72 << 2)) | 0) + 304) | 0;
$74 = HEAP32[$73 >> 2] | 0;
$75 = ($14 | 0) == ($74 | 0);
if ($75) {
HEAP32[$73 >> 2] = $R$1;
$cond = ($R$1 | 0) == (0 | 0);
if ($cond) {
$76 = 1 << $72;
$77 = $76 ^ -1;
$78 = HEAP32[((32544 + 4) | 0) >> 2] | 0;
$79 = $78 & $77;
HEAP32[((32544 + 4) | 0) >> 2] = $79;
$p$0 = $14;
$psize$0 = $15;
break;
}
} else {
$80 = HEAP32[((32544 + 16) | 0) >> 2] | 0;
$81 = $44 >>> 0 < $80 >>> 0;
if ($81) {
_abort();
// unreachable;
}
$82 = ($44 + 16) | 0;
$83 = HEAP32[$82 >> 2] | 0;
$84 = ($83 | 0) == ($14 | 0);
if ($84) {
HEAP32[$82 >> 2] = $R$1;
} else {
$85 = ($44 + 20) | 0;
HEAP32[$85 >> 2] = $R$1;
}
$86 = ($R$1 | 0) == (0 | 0);
if ($86) {
$p$0 = $14;
$psize$0 = $15;
break;
}
}
$87 = HEAP32[((32544 + 16) | 0) >> 2] | 0;
$88 = $R$1 >>> 0 < $87 >>> 0;
if ($88) {
_abort();
// unreachable;
}
$89 = ($R$1 + 24) | 0;
HEAP32[$89 >> 2] = $44;
$$sum33 = ($$sum2 + 16) | 0;
$90 = ($mem + $$sum33) | 0;
$91 = HEAP32[$90 >> 2] | 0;
$92 = ($91 | 0) == (0 | 0);
do {
if (!$92) {
$93 = $91 >>> 0 < $87 >>> 0;
if ($93) {
_abort();
// unreachable;
} else {
$94 = ($R$1 + 16) | 0;
HEAP32[$94 >> 2] = $91;
$95 = ($91 + 24) | 0;
HEAP32[$95 >> 2] = $R$1;
break;
}
}
} while (0);
$$sum34 = ($$sum2 + 20) | 0;
$96 = ($mem + $$sum34) | 0;
$97 = HEAP32[$96 >> 2] | 0;
$98 = ($97 | 0) == (0 | 0);
if ($98) {
$p$0 = $14;
$psize$0 = $15;
} else {
$99 = HEAP32[((32544 + 16) | 0) >> 2] | 0;
$100 = $97 >>> 0 < $99 >>> 0;
if ($100) {
_abort();
// unreachable;
} else {
$101 = ($R$1 + 20) | 0;
HEAP32[$101 >> 2] = $97;
$102 = ($97 + 24) | 0;
HEAP32[$102 >> 2] = $R$1;
$p$0 = $14;
$psize$0 = $15;
break;
}
}
}
} else {
$p$0 = $1;
$psize$0 = $8;
}
} while (0);
$110 = $p$0 >>> 0 < $9 >>> 0;
if (!$110) {
_abort();
// unreachable;
}
$$sum25 = ($8 + -4) | 0;
$111 = ($mem + $$sum25) | 0;
$112 = HEAP32[$111 >> 2] | 0;
$113 = $112 & 1;
$114 = ($113 | 0) == 0;
if ($114) {
_abort();
// unreachable;
}
$115 = $112 & 2;
$116 = ($115 | 0) == 0;
if ($116) {
$117 = HEAP32[((32544 + 24) | 0) >> 2] | 0;
$118 = ($9 | 0) == ($117 | 0);
if ($118) {
$119 = HEAP32[((32544 + 12) | 0) >> 2] | 0;
$120 = ($119 + $psize$0) | 0;
HEAP32[((32544 + 12) | 0) >> 2] = $120;
HEAP32[((32544 + 24) | 0) >> 2] = $p$0;
$121 = $120 | 1;
$122 = ($p$0 + 4) | 0;
HEAP32[$122 >> 2] = $121;
$123 = HEAP32[((32544 + 20) | 0) >> 2] | 0;
$124 = ($p$0 | 0) == ($123 | 0);
if (!$124) {
STACKTOP = sp;
return;
}
HEAP32[((32544 + 20) | 0) >> 2] = 0;
HEAP32[((32544 + 8) | 0) >> 2] = 0;
STACKTOP = sp;
return;
}
$125 = HEAP32[((32544 + 20) | 0) >> 2] | 0;
$126 = ($9 | 0) == ($125 | 0);
if ($126) {
$127 = HEAP32[((32544 + 8) | 0) >> 2] | 0;
$128 = ($127 + $psize$0) | 0;
HEAP32[((32544 + 8) | 0) >> 2] = $128;
HEAP32[((32544 + 20) | 0) >> 2] = $p$0;
$129 = $128 | 1;
$130 = ($p$0 + 4) | 0;
HEAP32[$130 >> 2] = $129;
$131 = ($p$0 + $128) | 0;
HEAP32[$131 >> 2] = $128;
STACKTOP = sp;
return;
}
$132 = $112 & -8;
$133 = ($132 + $psize$0) | 0;
$134 = $112 >>> 3;
$135 = $112 >>> 0 < 256;
do {
if ($135) {
$136 = ($mem + $8) | 0;
$137 = HEAP32[$136 >> 2] | 0;
$$sum2324 = $8 | 4;
$138 = ($mem + $$sum2324) | 0;
$139 = HEAP32[$138 >> 2] | 0;
$140 = $134 << 1;
$141 = (((32544 + ($140 << 2)) | 0) + 40) | 0;
$142 = ($137 | 0) == ($141 | 0);
if (!$142) {
$143 = HEAP32[((32544 + 16) | 0) >> 2] | 0;
$144 = $137 >>> 0 < $143 >>> 0;
if ($144) {
_abort();
// unreachable;
}
$145 = ($137 + 12) | 0;
$146 = HEAP32[$145 >> 2] | 0;
$147 = ($146 | 0) == ($9 | 0);
if (!$147) {
_abort();
// unreachable;
}
}
$148 = ($139 | 0) == ($137 | 0);
if ($148) {
$149 = 1 << $134;
$150 = $149 ^ -1;
$151 = HEAP32[32544 >> 2] | 0;
$152 = $151 & $150;
HEAP32[32544 >> 2] = $152;
break;
}
$153 = ($139 | 0) == ($141 | 0);
if ($153) {
$$pre65 = ($139 + 8) | 0;
$$pre$phi66Z2D = $$pre65;
} else {
$154 = HEAP32[((32544 + 16) | 0) >> 2] | 0;
$155 = $139 >>> 0 < $154 >>> 0;
if ($155) {
_abort();
// unreachable;
}
$156 = ($139 + 8) | 0;
$157 = HEAP32[$156 >> 2] | 0;
$158 = ($157 | 0) == ($9 | 0);
if ($158) {
$$pre$phi66Z2D = $156;
} else {
_abort();
// unreachable;
}
}
$159 = ($137 + 12) | 0;
HEAP32[$159 >> 2] = $139;
HEAP32[$$pre$phi66Z2D >> 2] = $137;
} else {
$$sum5 = ($8 + 16) | 0;
$160 = ($mem + $$sum5) | 0;
$161 = HEAP32[$160 >> 2] | 0;
$$sum67 = $8 | 4;
$162 = ($mem + $$sum67) | 0;
$163 = HEAP32[$162 >> 2] | 0;
$164 = ($163 | 0) == ($9 | 0);
do {
if ($164) {
$$sum9 = ($8 + 12) | 0;
$175 = ($mem + $$sum9) | 0;
$176 = HEAP32[$175 >> 2] | 0;
$177 = ($176 | 0) == (0 | 0);
if ($177) {
$$sum8 = ($8 + 8) | 0;
$178 = ($mem + $$sum8) | 0;
$179 = HEAP32[$178 >> 2] | 0;
$180 = ($179 | 0) == (0 | 0);
if ($180) {
$R7$1 = 0;
break;
} else {
$R7$0 = $179;
$RP9$0 = $178;
}
} else {
$R7$0 = $176;
$RP9$0 = $175;
}
while (1) {
$181 = ($R7$0 + 20) | 0;
$182 = HEAP32[$181 >> 2] | 0;
$183 = ($182 | 0) == (0 | 0);
if (!$183) {
$R7$0 = $182;
$RP9$0 = $181;
continue;
}
$184 = ($R7$0 + 16) | 0;
$185 = HEAP32[$184 >> 2] | 0;
$186 = ($185 | 0) == (0 | 0);
if ($186) {
break;
} else {
$R7$0 = $185;
$RP9$0 = $184;
}
}
$187 = HEAP32[((32544 + 16) | 0) >> 2] | 0;
$188 = $RP9$0 >>> 0 < $187 >>> 0;
if ($188) {
_abort();
// unreachable;
} else {
HEAP32[$RP9$0 >> 2] = 0;
$R7$1 = $R7$0;
break;
}
} else {
$165 = ($mem + $8) | 0;
$166 = HEAP32[$165 >> 2] | 0;
$167 = HEAP32[((32544 + 16) | 0) >> 2] | 0;
$168 = $166 >>> 0 < $167 >>> 0;
if ($168) {
_abort();
// unreachable;
}
$169 = ($166 + 12) | 0;
$170 = HEAP32[$169 >> 2] | 0;
$171 = ($170 | 0) == ($9 | 0);
if (!$171) {
_abort();
// unreachable;
}
$172 = ($163 + 8) | 0;
$173 = HEAP32[$172 >> 2] | 0;
$174 = ($173 | 0) == ($9 | 0);
if ($174) {
HEAP32[$169 >> 2] = $163;
HEAP32[$172 >> 2] = $166;
$R7$1 = $163;
break;
} else {
_abort();
// unreachable;
}
}
} while (0);
$189 = ($161 | 0) == (0 | 0);
if (!$189) {
$$sum18 = ($8 + 20) | 0;
$190 = ($mem + $$sum18) | 0;
$191 = HEAP32[$190 >> 2] | 0;
$192 = (((32544 + ($191 << 2)) | 0) + 304) | 0;
$193 = HEAP32[$192 >> 2] | 0;
$194 = ($9 | 0) == ($193 | 0);
if ($194) {
HEAP32[$192 >> 2] = $R7$1;
$cond54 = ($R7$1 | 0) == (0 | 0);
if ($cond54) {
$195 = 1 << $191;
$196 = $195 ^ -1;
$197 = HEAP32[((32544 + 4) | 0) >> 2] | 0;
$198 = $197 & $196;
HEAP32[((32544 + 4) | 0) >> 2] = $198;
break;
}
} else {
$199 = HEAP32[((32544 + 16) | 0) >> 2] | 0;
$200 = $161 >>> 0 < $199 >>> 0;
if ($200) {
_abort();
// unreachable;
}
$201 = ($161 + 16) | 0;
$202 = HEAP32[$201 >> 2] | 0;
$203 = ($202 | 0) == ($9 | 0);
if ($203) {
HEAP32[$201 >> 2] = $R7$1;
} else {
$204 = ($161 + 20) | 0;
HEAP32[$204 >> 2] = $R7$1;
}
$205 = ($R7$1 | 0) == (0 | 0);
if ($205) {
break;
}
}
$206 = HEAP32[((32544 + 16) | 0) >> 2] | 0;
$207 = $R7$1 >>> 0 < $206 >>> 0;
if ($207) {
_abort();
// unreachable;
}
$208 = ($R7$1 + 24) | 0;
HEAP32[$208 >> 2] = $161;
$$sum19 = ($8 + 8) | 0;
$209 = ($mem + $$sum19) | 0;
$210 = HEAP32[$209 >> 2] | 0;
$211 = ($210 | 0) == (0 | 0);
do {
if (!$211) {
$212 = $210 >>> 0 < $206 >>> 0;
if ($212) {
_abort();
// unreachable;
} else {
$213 = ($R7$1 + 16) | 0;
HEAP32[$213 >> 2] = $210;
$214 = ($210 + 24) | 0;
HEAP32[$214 >> 2] = $R7$1;
break;
}
}
} while (0);
$$sum20 = ($8 + 12) | 0;
$215 = ($mem + $$sum20) | 0;
$216 = HEAP32[$215 >> 2] | 0;
$217 = ($216 | 0) == (0 | 0);
if (!$217) {
$218 = HEAP32[((32544 + 16) | 0) >> 2] | 0;
$219 = $216 >>> 0 < $218 >>> 0;
if ($219) {
_abort();
// unreachable;
} else {
$220 = ($R7$1 + 20) | 0;
HEAP32[$220 >> 2] = $216;
$221 = ($216 + 24) | 0;
HEAP32[$221 >> 2] = $R7$1;
break;
}
}
}
}
} while (0);
$222 = $133 | 1;
$223 = ($p$0 + 4) | 0;
HEAP32[$223 >> 2] = $222;
$224 = ($p$0 + $133) | 0;
HEAP32[$224 >> 2] = $133;
$225 = HEAP32[((32544 + 20) | 0) >> 2] | 0;
$226 = ($p$0 | 0) == ($225 | 0);
if ($226) {
HEAP32[((32544 + 8) | 0) >> 2] = $133;
STACKTOP = sp;
return;
} else {
$psize$1 = $133;
}
} else {
$227 = $112 & -2;
HEAP32[$111 >> 2] = $227;
$228 = $psize$0 | 1;
$229 = ($p$0 + 4) | 0;
HEAP32[$229 >> 2] = $228;
$230 = ($p$0 + $psize$0) | 0;
HEAP32[$230 >> 2] = $psize$0;
$psize$1 = $psize$0;
}
$231 = $psize$1 >>> 3;
$232 = $psize$1 >>> 0 < 256;
if ($232) {
$233 = $231 << 1;
$234 = (((32544 + ($233 << 2)) | 0) + 40) | 0;
$235 = HEAP32[32544 >> 2] | 0;
$236 = 1 << $231;
$237 = $235 & $236;
$238 = ($237 | 0) == 0;
if ($238) {
$239 = $235 | $236;
HEAP32[32544 >> 2] = $239;
$$sum16$pre = ($233 + 2) | 0;
$$pre = (((32544 + ($$sum16$pre << 2)) | 0) + 40) | 0;
$$pre$phiZ2D = $$pre;
$F16$0 = $234;
} else {
$$sum17 = ($233 + 2) | 0;
$240 = (((32544 + ($$sum17 << 2)) | 0) + 40) | 0;
$241 = HEAP32[$240 >> 2] | 0;
$242 = HEAP32[((32544 + 16) | 0) >> 2] | 0;
$243 = $241 >>> 0 < $242 >>> 0;
if ($243) {
_abort();
// unreachable;
} else {
$$pre$phiZ2D = $240;
$F16$0 = $241;
}
}
HEAP32[$$pre$phiZ2D >> 2] = $p$0;
$244 = ($F16$0 + 12) | 0;
HEAP32[$244 >> 2] = $p$0;
$245 = ($p$0 + 8) | 0;
HEAP32[$245 >> 2] = $F16$0;
$246 = ($p$0 + 12) | 0;
HEAP32[$246 >> 2] = $234;
STACKTOP = sp;
return;
}
$247 = $psize$1 >>> 8;
$248 = ($247 | 0) == 0;
if ($248) {
$I18$0 = 0;
} else {
$249 = $psize$1 >>> 0 > 16777215;
if ($249) {
$I18$0 = 31;
} else {
$250 = ($247 + 1048320) | 0;
$251 = $250 >>> 16;
$252 = $251 & 8;
$253 = $247 << $252;
$254 = ($253 + 520192) | 0;
$255 = $254 >>> 16;
$256 = $255 & 4;
$257 = $256 | $252;
$258 = $253 << $256;
$259 = ($258 + 245760) | 0;
$260 = $259 >>> 16;
$261 = $260 & 2;
$262 = $257 | $261;
$263 = (14 - $262) | 0;
$264 = $258 << $261;
$265 = $264 >>> 15;
$266 = ($263 + $265) | 0;
$267 = $266 << 1;
$268 = ($266 + 7) | 0;
$269 = $psize$1 >>> $268;
$270 = $269 & 1;
$271 = $270 | $267;
$I18$0 = $271;
}
}
$272 = (((32544 + ($I18$0 << 2)) | 0) + 304) | 0;
$273 = ($p$0 + 28) | 0;
$I18$0$c = $I18$0;
HEAP32[$273 >> 2] = $I18$0$c;
$274 = ($p$0 + 20) | 0;
HEAP32[$274 >> 2] = 0;
$275 = ($p$0 + 16) | 0;
HEAP32[$275 >> 2] = 0;
$276 = HEAP32[((32544 + 4) | 0) >> 2] | 0;
$277 = 1 << $I18$0;
$278 = $276 & $277;
$279 = ($278 | 0) == 0;
L199: do {
if ($279) {
$280 = $276 | $277;
HEAP32[((32544 + 4) | 0) >> 2] = $280;
HEAP32[$272 >> 2] = $p$0;
$281 = ($p$0 + 24) | 0;
HEAP32[$281 >> 2] = $272;
$282 = ($p$0 + 12) | 0;
HEAP32[$282 >> 2] = $p$0;
$283 = ($p$0 + 8) | 0;
HEAP32[$283 >> 2] = $p$0;
} else {
$284 = HEAP32[$272 >> 2] | 0;
$285 = ($I18$0 | 0) == 31;
if ($285) {
$293 = 0;
} else {
$286 = $I18$0 >>> 1;
$287 = (25 - $286) | 0;
$293 = $287;
}
$288 = ($284 + 4) | 0;
$289 = HEAP32[$288 >> 2] | 0;
$290 = $289 & -8;
$291 = ($290 | 0) == ($psize$1 | 0);
L205: do {
if ($291) {
$T$0$lcssa = $284;
} else {
$292 = $psize$1 << $293;
$K19$058 = $292;
$T$057 = $284;
while (1) {
$300 = $K19$058 >>> 31;
$301 = ((($T$057 + ($300 << 2)) | 0) + 16) | 0;
$296 = HEAP32[$301 >> 2] | 0;
$302 = ($296 | 0) == (0 | 0);
if ($302) {
break;
}
$294 = $K19$058 << 1;
$295 = ($296 + 4) | 0;
$297 = HEAP32[$295 >> 2] | 0;
$298 = $297 & -8;
$299 = ($298 | 0) == ($psize$1 | 0);
if ($299) {
$T$0$lcssa = $296;
break L205;
} else {
$K19$058 = $294;
$T$057 = $296;
}
}
$303 = HEAP32[((32544 + 16) | 0) >> 2] | 0;
$304 = $301 >>> 0 < $303 >>> 0;
if ($304) {
_abort();
// unreachable;
} else {
HEAP32[$301 >> 2] = $p$0;
$305 = ($p$0 + 24) | 0;
HEAP32[$305 >> 2] = $T$057;
$306 = ($p$0 + 12) | 0;
HEAP32[$306 >> 2] = $p$0;
$307 = ($p$0 + 8) | 0;
HEAP32[$307 >> 2] = $p$0;
break L199;
}
}
} while (0);
$308 = ($T$0$lcssa + 8) | 0;
$309 = HEAP32[$308 >> 2] | 0;
$310 = HEAP32[((32544 + 16) | 0) >> 2] | 0;
$311 = $T$0$lcssa >>> 0 >= $310 >>> 0;
$312 = $309 >>> 0 >= $310 >>> 0;
$or$cond = $311 & $312;
if ($or$cond) {
$313 = ($309 + 12) | 0;
HEAP32[$313 >> 2] = $p$0;
HEAP32[$308 >> 2] = $p$0;
$314 = ($p$0 + 8) | 0;
HEAP32[$314 >> 2] = $309;
$315 = ($p$0 + 12) | 0;
HEAP32[$315 >> 2] = $T$0$lcssa;
$316 = ($p$0 + 24) | 0;
HEAP32[$316 >> 2] = 0;
break;
} else {
_abort();
// unreachable;
}
}
} while (0);
$317 = HEAP32[((32544 + 32) | 0) >> 2] | 0;
$318 = ($317 + -1) | 0;
HEAP32[((32544 + 32) | 0) >> 2] = $318;
$319 = ($318 | 0) == 0;
if ($319) {
$sp$0$in$i = (32544 + 456) | 0;
} else {
STACKTOP = sp;
return;
}
while (1) {
$sp$0$i = HEAP32[$sp$0$in$i >> 2] | 0;
$320 = ($sp$0$i | 0) == (0 | 0);
$321 = ($sp$0$i + 8) | 0;
if ($320) {
break;
} else {
$sp$0$in$i = $321;
}
}
HEAP32[((32544 + 32) | 0) >> 2] = -1;
STACKTOP = sp;
return;
}
function runPostSets() {}
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 _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) | 0;
}
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) | 0;
}
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 >> 0] = 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 >> 0] = value;
ptr = (ptr + 1) | 0;
}
return (ptr - num) | 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 _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 _strlen(ptr) {
ptr = ptr | 0;
var curr = 0;
curr = ptr;
while (HEAP8[curr >> 0] | 0) {
curr = (curr + 1) | 0;
}
return (curr - ptr) | 0;
}
function _memcpy(dest, src, num) {
dest = dest | 0;
src = src | 0;
num = num | 0;
var ret = 0;
if ((num | 0) >= 4096)
return _emscripten_memcpy_big(dest | 0, src | 0, num | 0) | 0;
ret = dest | 0;
if ((dest & 3) == (src & 3)) {
while (dest & 3) {
if ((num | 0) == 0) return ret | 0;
HEAP8[dest >> 0] = HEAP8[src >> 0] | 0;
dest = (dest + 1) | 0;
src = (src + 1) | 0;
num = (num - 1) | 0;
}
while ((num | 0) >= 4) {
HEAP32[dest >> 2] = HEAP32[src >> 2] | 0;
dest = (dest + 4) | 0;
src = (src + 4) | 0;
num = (num - 4) | 0;
}
}
while ((num | 0) > 0) {
HEAP8[dest >> 0] = HEAP8[src >> 0] | 0;
dest = (dest + 1) | 0;
src = (src + 1) | 0;
num = (num - 1) | 0;
}
return ret | 0;
}
function _memmove(dest, src, num) {
dest = dest | 0;
src = src | 0;
num = num | 0;
var ret = 0;
if (((src | 0) < (dest | 0)) & ((dest | 0) < ((src + num) | 0))) {
// Unlikely case: Copy backwards in a safe manner
ret = dest;
src = (src + num) | 0;
dest = (dest + num) | 0;
while ((num | 0) > 0) {
dest = (dest - 1) | 0;
src = (src - 1) | 0;
num = (num - 1) | 0;
HEAP8[dest >> 0] = HEAP8[src >> 0] | 0;
}
dest = ret;
} else {
_memcpy(dest, src, num) | 0;
}
return dest | 0;
}
function _llvm_ctlz_i32(x) {
x = x | 0;
var ret = 0;
ret = HEAP8[(ctlz_i8 + (x >>> 24)) >> 0] | 0;
if ((ret | 0) < 8) return ret | 0;
ret = HEAP8[(ctlz_i8 + ((x >> 16) & 0xff)) >> 0] | 0;
if ((ret | 0) < 8) return (ret + 8) | 0;
ret = HEAP8[(ctlz_i8 + ((x >> 8) & 0xff)) >> 0] | 0;
if ((ret | 0) < 8) return (ret + 16) | 0;
return ((HEAP8[(ctlz_i8 + (x & 0xff)) >> 0] | 0) + 24) | 0;
}
function _llvm_cttz_i32(x) {
x = x | 0;
var ret = 0;
ret = HEAP8[(cttz_i8 + (x & 0xff)) >> 0] | 0;
if ((ret | 0) < 8) return ret | 0;
ret = HEAP8[(cttz_i8 + ((x >> 8) & 0xff)) >> 0] | 0;
if ((ret | 0) < 8) return (ret + 8) | 0;
ret = HEAP8[(cttz_i8 + ((x >> 16) & 0xff)) >> 0] | 0;
if ((ret | 0) < 8) return (ret + 16) | 0;
return ((HEAP8[(cttz_i8 + (x >>> 24)) >> 0] | 0) + 24) | 0;
}
// ======== 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
// EMSCRIPTEN_END_FUNCS
return {
_curve25519_verify: _curve25519_verify,
_crypto_sign_ed25519_ref10_ge_scalarmult_base: _crypto_sign_ed25519_ref10_ge_scalarmult_base,
_curve25519_sign: _curve25519_sign,
_free: _free,
_i64Add: _i64Add,
_memmove: _memmove,
_bitshift64Ashr: _bitshift64Ashr,
_sph_sha512_init: _sph_sha512_init,
_curve25519_donna: _curve25519_donna,
_memset: _memset,
_malloc: _malloc,
_memcpy: _memcpy,
_strlen: _strlen,
_bitshift64Lshr: _bitshift64Lshr,
_i64Subtract: _i64Subtract,
_bitshift64Shl: _bitshift64Shl,
runPostSets: runPostSets,
stackAlloc: stackAlloc,
stackSave: stackSave,
stackRestore: stackRestore,
setThrew: setThrew,
setTempRet0: setTempRet0,
getTempRet0: getTempRet0,
};
})(
// EMSCRIPTEN_END_ASM
Module.asmGlobalArg,
Module.asmLibraryArg,
buffer
);
var _curve25519_verify = (Module['_curve25519_verify'] =
asm['_curve25519_verify']);
var _crypto_sign_ed25519_ref10_ge_scalarmult_base = (Module[
'_crypto_sign_ed25519_ref10_ge_scalarmult_base'
] =
asm['_crypto_sign_ed25519_ref10_ge_scalarmult_base']);
var _curve25519_sign = (Module['_curve25519_sign'] = asm['_curve25519_sign']);
var _free = (Module['_free'] = asm['_free']);
var _i64Add = (Module['_i64Add'] = asm['_i64Add']);
var _memmove = (Module['_memmove'] = asm['_memmove']);
var _bitshift64Ashr = (Module['_bitshift64Ashr'] = asm['_bitshift64Ashr']);
var _sph_sha512_init = (Module['_sph_sha512_init'] = asm['_sph_sha512_init']);
var _curve25519_donna = (Module['_curve25519_donna'] =
asm['_curve25519_donna']);
var _memset = (Module['_memset'] = asm['_memset']);
var _malloc = (Module['_malloc'] = asm['_malloc']);
var _memcpy = (Module['_memcpy'] = asm['_memcpy']);
var _strlen = (Module['_strlen'] = asm['_strlen']);
var _bitshift64Lshr = (Module['_bitshift64Lshr'] = asm['_bitshift64Lshr']);
var _i64Subtract = (Module['_i64Subtract'] = asm['_i64Subtract']);
var _bitshift64Shl = (Module['_bitshift64Shl'] = asm['_bitshift64Shl']);
var runPostSets = (Module['runPostSets'] = asm['runPostSets']);
Runtime.stackAlloc = asm['stackAlloc'];
Runtime.stackSave = asm['stackSave'];
Runtime.stackRestore = asm['stackRestore'];
Runtime.setTempRet0 = asm['setTempRet0'];
Runtime.getTempRet0 = asm['getTempRet0'];
// 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) {
if (typeof Module['locateFile'] === 'function') {
memoryInitializer = Module['locateFile'](memoryInitializer);
} else if (Module['memoryInitializerPrefixURL']) {
memoryInitializer =
Module['memoryInitializerPrefixURL'] + memoryInitializer;
}
if (ENVIRONMENT_IS_NODE || ENVIRONMENT_IS_SHELL) {
var data = Module['readBinary'](memoryInitializer);
HEAPU8.set(data, STATIC_BASE);
} else {
addRunDependency('memory initializer');
Browser.asyncLoad(
memoryInitializer,
function(data) {
HEAPU8.set(data, STATIC_BASE);
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 || [];
ensureInitRuntime();
var argc = args.length + 1;
function pad() {
for (var i = 0; i < 4 - 1; i++) {
argv.push(0);
}
}
var argv = [
allocate(intArrayFromString(Module['thisProgram']), 'i8', ALLOC_NORMAL),
];
pad();
for (var i = 0; i < argc - 1; i = i + 1) {
argv.push(allocate(intArrayFromString(args[i]), 'i8', ALLOC_NORMAL));
pad();
}
argv.push(0);
argv = allocate(argv, 'i32', ALLOC_NORMAL);
initialStackTop = STACKTOP;
try {
var ret = Module['_main'](argc, argv, 0);
// if we're not running an evented main loop, it's time to exit
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) {
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;
if (ABORT) return;
ensureInitRuntime();
preMain();
if (ENVIRONMENT_IS_WEB && preloadStartTime !== null) {
Module.printErr(
'pre-main prep time: ' + (Date.now() - preloadStartTime) + ' ms'
);
}
if (Module['onRuntimeInitialized']) Module['onRuntimeInitialized']();
if (Module['_main'] && shouldRunNow) Module['callMain'](args);
postRun();
}
if (Module['setStatus']) {
Module['setStatus']('Running...');
setTimeout(function() {
setTimeout(function() {
Module['setStatus']('');
}, 1);
doRun();
}, 1);
} else {
doRun();
}
}
Module['run'] = Module.run = run;
function exit(status) {
if (Module['noExitRuntime']) {
return;
}
ABORT = true;
EXITSTATUS = status;
STACKTOP = initialStackTop;
// exit the runtime
exitRuntime();
if (ENVIRONMENT_IS_NODE) {
// Work around a node.js bug where stdout buffer is not flushed at process exit:
// Instead of process.exit() directly, wait for stdout flush event.
// See https://github.com/joyent/node/issues/1669 and https://github.com/kripken/emscripten/issues/2582
// Workaround is based on https://github.com/RReverser/acorn/commit/50ab143cecc9ed71a2d66f78b4aec3bb2e9844f6
process['stdout']['once']('drain', function() {
process['exit'](status);
});
console.log(' '); // Make sure to print something to force the drain event to occur, in case the stdout buffer was empty.
// Work around another node bug where sometimes 'drain' is never fired - make another effort
// to emit the exit status, after a significant delay (if node hasn't fired drain by then, give up)
setTimeout(function() {
process['exit'](status);
}, 500);
} else if (ENVIRONMENT_IS_SHELL && typeof quit === 'function') {
quit(status);
}
// if we reach here, we must 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;
var extra =
'\nIf this abort() is unexpected, build with -s ASSERTIONS=1 which can give more information.';
throw 'abort() at ' + stackTrace() + extra;
}
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}}