2015-04-24 11:13:49 -07:00
; ( function ( ) {
2016-05-18 12:45:33 -07:00
var Internal = { } ;
var libsignal = { } ;
2015-04-24 11:13:49 -07:00
// 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 ===
2016-04-22 13:29:31 -07:00
// Documentation for the public APIs defined in this file must be updated in:
2015-04-24 11:13:49 -07:00
// site/source/docs/api_reference/preamble.js.rst
2016-04-22 13:29:31 -07:00
// A prebuilt local version of the documentation is available at:
2015-04-24 11:13:49 -07:00
// 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 ) {
/ * T O D O : u s e T e x t E n c o d e r w h e n p r e s e n t ,
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' ] } ;
2016-04-22 13:29:31 -07:00
// C calling interface.
2015-04-24 11:13:49 -07:00
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 ] ) ;
}
}
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
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 ( ) ;
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
/* 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 ,
/* 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
/* 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 ,
/* 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 ,
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 ] ;
}
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
Module [ "_bitshift64Ashr" ] = _bitshift64Ashr ;
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
Module [ "_i64Subtract" ] = _i64Subtract ;
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
Module [ "_i64Add" ] = _i64Add ;
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
Module [ "_memset" ] = _memset ;
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
Module [ "_bitshift64Lshr" ] = _bitshift64Lshr ;
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
Module [ "_bitshift64Shl" ] = _bitshift64Shl ;
function _abort ( ) {
Module [ 'abort' ] ( ) ;
}
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
Module [ "_strlen" ] = _strlen ;
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
function _emscripten _memcpy _big ( dest , src , num ) {
HEAPU8 . set ( HEAPU8 . subarray ( src , src + num ) , dest ) ;
return dest ;
2016-04-22 13:29:31 -07:00
}
2015-04-24 11:13:49 -07:00
Module [ "_memcpy" ] = _memcpy ;
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
var _ _ _errno _state = 0 ; function _ _ _setErrNo ( value ) {
// For convenient setting and returning of errno.
HEAP32 [ ( ( _ _ _errno _state ) >> 2 ) ] = value ;
return value ;
}
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
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.
}
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
Module [ "_memmove" ] = _memmove ;
function _ _ _errno _location ( ) {
return _ _ _errno _state ;
}
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
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" } ;
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
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 = [ ] ;
}
} } } ;
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
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.
2016-04-22 13:29:31 -07:00
node . contents = null ;
2015-04-24 11:13:49 -07:00
} 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 ) {
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
// 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.
}
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
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 ;
}
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
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 ( ) ;
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
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 } ;
} } } ;
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
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 ) ;
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
IDBFS . getRemoteSet ( mount , function ( err , remote ) {
if ( err ) return callback ( err ) ;
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
var src = populate ? remote : local ;
var dst = populate ? local : remote ;
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
IDBFS . reconcile ( src , dst , callback ) ;
} ) ;
} ) ;
} , getDB : function ( name , callback ) {
// check the cache first
var db = IDBFS . dbs [ name ] ;
if ( db ) {
return callback ( null , db ) ;
}
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
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 ;
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
var fileStore ;
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
if ( db . objectStoreNames . contains ( IDBFS . DB _STORE _NAME ) ) {
fileStore = transaction . objectStore ( IDBFS . DB _STORE _NAME ) ;
} else {
fileStore = db . createObjectStore ( IDBFS . DB _STORE _NAME ) ;
}
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
fileStore . createIndex ( 'timestamp' , 'timestamp' , { unique : false } ) ;
} ;
req . onsuccess = function ( ) {
db = req . result ;
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
// add to the cache
IDBFS . dbs [ name ] = db ;
callback ( null , db ) ;
} ;
req . onerror = function ( ) {
callback ( this . error ) ;
} ;
} , getLocalSet : function ( mount , callback ) {
var entries = { } ;
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
function isRealDir ( p ) {
return p !== '.' && p !== '..' ;
} ;
function toAbsolute ( root ) {
return function ( p ) {
return PATH . join2 ( root , p ) ;
}
} ;
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
var check = FS . readdir ( mount . mountpoint ) . filter ( isRealDir ) . map ( toAbsolute ( mount . mountpoint ) ) ;
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
while ( check . length ) {
var path = check . pop ( ) ;
var stat ;
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
try {
stat = FS . stat ( path ) ;
} catch ( e ) {
return callback ( e ) ;
}
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
if ( FS . isDir ( stat . mode ) ) {
check . push . apply ( check , FS . readdir ( path ) . filter ( isRealDir ) . map ( toAbsolute ( path ) ) ) ;
}
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
entries [ path ] = { timestamp : stat . mtime } ;
}
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
return callback ( null , { type : 'local' , entries : entries } ) ;
} , getRemoteSet : function ( mount , callback ) {
var entries = { } ;
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
IDBFS . getDB ( mount . mountpoint , function ( err , db ) {
if ( err ) return callback ( err ) ;
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
var transaction = db . transaction ( [ IDBFS . DB _STORE _NAME ] , 'readonly' ) ;
transaction . onerror = function ( ) { callback ( this . error ) ; } ;
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
var store = transaction . objectStore ( IDBFS . DB _STORE _NAME ) ;
var index = store . index ( 'timestamp' ) ;
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
index . openKeyCursor ( ) . onsuccess = function ( event ) {
var cursor = event . target . result ;
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
if ( ! cursor ) {
return callback ( null , { type : 'remote' , db : db , entries : entries } ) ;
}
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
entries [ cursor . primaryKey ] = { timestamp : cursor . key } ;
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
cursor . continue ( ) ;
} ;
} ) ;
} , loadLocalEntry : function ( path , callback ) {
var stat , node ;
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
try {
var lookup = FS . lookupPath ( path ) ;
node = lookup . node ;
stat = FS . stat ( path ) ;
} catch ( e ) {
return callback ( e ) ;
}
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
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' ) ) ;
}
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
FS . chmod ( path , entry . mode ) ;
FS . utime ( path , entry . timestamp , entry . timestamp ) ;
} catch ( e ) {
return callback ( e ) ;
}
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
callback ( null ) ;
} , removeLocalEntry : function ( path , callback ) {
try {
var lookup = FS . lookupPath ( path ) ;
var stat = FS . stat ( path ) ;
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
if ( FS . isDir ( stat . mode ) ) {
FS . rmdir ( path ) ;
} else if ( FS . isFile ( stat . mode ) ) {
FS . unlink ( path ) ;
}
} catch ( e ) {
return callback ( e ) ;
}
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
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 ;
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
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 ++ ;
}
} ) ;
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
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 ++ ;
}
} ) ;
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
if ( ! total ) {
return callback ( null ) ;
}
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
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 ) ;
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
function done ( err ) {
if ( err ) {
if ( ! done . errored ) {
done . errored = true ;
return callback ( err ) ;
}
return ;
}
if ( ++ completed >= total ) {
return callback ( null ) ;
}
} ;
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
transaction . onerror = function ( ) { done ( this . error ) ; } ;
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
// 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 ) ;
} ) ;
}
} ) ;
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
// 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 ) ;
}
} ) ;
} } ;
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
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 ) {
2016-04-22 13:29:31 -07:00
// On Windows, directories return permission bits 'rw-rw-rw-', even though they have 'rwxrwxrwx', so
2015-04-24 11:13:49 -07:00
// 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 ] ) ;
}
}
}
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
if ( position < 0 ) {
throw new FS . ErrnoError ( ERRNO _CODES . EINVAL ) ;
}
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
return position ;
} } } ;
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
var _stdin = allocate ( 1 , "i32*" , ALLOC _STATIC ) ;
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
var _stdout = allocate ( 1 , "i32*" , ALLOC _STATIC ) ;
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
var _stderr = allocate ( 1 , "i32*" , ALLOC _STATIC ) ;
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
function _fflush ( stream ) {
// int fflush(FILE *stream);
// http://pubs.opengroup.org/onlinepubs/000095399/functions/fflush.html
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
/ *
// 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 || { } ;
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
if ( ! path ) return { path : '' , node : null } ;
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
var defaults = {
follow _mount : true ,
recurse _count : 0
} ;
for ( var key in defaults ) {
if ( opts [ key ] === undefined ) {
opts [ key ] = defaults [ key ] ;
}
}
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
if ( opts . recurse _count > 8 ) { // max recursive lookup of 8
throw new FS . ErrnoError ( ERRNO _CODES . ELOOP ) ;
}
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
// split the path
var parts = PATH . normalizeArray ( path . split ( '/' ) . filter ( function ( p ) {
return ! ! p ;
} ) , false ) ;
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
// start at the root
var current = FS . root ;
var current _path = '/' ;
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
for ( var i = 0 ; i < parts . length ; i ++ ) {
var islast = ( i === parts . length - 1 ) ;
if ( islast && opts . parent ) {
// stop resolving
break ;
}
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
current = FS . lookupNode ( current , parts [ i ] ) ;
current _path = PATH . join2 ( current _path , parts [ i ] ) ;
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
// 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 ;
}
}
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
// 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 ) ;
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
var lookup = FS . lookupPath ( current _path , { recurse _count : opts . recurse _count } ) ;
current = lookup . node ;
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
if ( count ++ > 40 ) { // limit max consecutive symlinks to 40 (SYMLOOP_MAX).
throw new FS . ErrnoError ( ERRNO _CODES . ELOOP ) ;
}
}
}
}
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
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 ;
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
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 ;
} ;
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
FS . FSNode . prototype = { } ;
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
// compatibility
var readMode = 292 | 73 ;
var writeMode = 146 ;
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
// 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 ) ; }
}
} ) ;
}
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
var node = new FS . FSNode ( parent , name , mode , rdev ) ;
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
FS . hashAddNode ( node ) ;
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
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 ] ;
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
while ( check . length ) {
var m = check . pop ( ) ;
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
mounts . push ( m ) ;
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
check . push . apply ( check , m . mounts ) ;
}
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
return mounts ;
} , syncfs : function ( populate , callback ) {
if ( typeof ( populate ) === 'function' ) {
callback = populate ;
populate = false ;
}
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
var mounts = FS . getMounts ( FS . root . mount ) ;
var completed = 0 ;
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
function done ( err ) {
if ( err ) {
if ( ! done . errored ) {
done . errored = true ;
return callback ( err ) ;
}
return ;
}
if ( ++ completed >= mounts . length ) {
callback ( null ) ;
}
} ;
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
// 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 ;
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
if ( root && FS . root ) {
throw new FS . ErrnoError ( ERRNO _CODES . EBUSY ) ;
} else if ( ! root && ! pseudo ) {
var lookup = FS . lookupPath ( mountpoint , { follow _mount : false } ) ;
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
mountpoint = lookup . path ; // use the absolute path
node = lookup . node ;
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
if ( FS . isMountpoint ( node ) ) {
throw new FS . ErrnoError ( ERRNO _CODES . EBUSY ) ;
}
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
if ( ! FS . isDir ( node . mode ) ) {
throw new FS . ErrnoError ( ERRNO _CODES . ENOTDIR ) ;
}
}
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
var mount = {
type : type ,
opts : opts ,
mountpoint : mountpoint ,
mounts : [ ]
} ;
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
// create a root node for the fs
var mountRoot = type . mount ( mount ) ;
mountRoot . mount = mount ;
mount . root = mountRoot ;
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
if ( root ) {
FS . root = mountRoot ;
} else if ( node ) {
// set as a mountpoint
node . mounted = mount ;
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
// add the new mount to the current mount's children
if ( node . mount ) {
node . mount . mounts . push ( mount ) ;
}
}
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
return mountRoot ;
} , unmount : function ( mountpoint ) {
var lookup = FS . lookupPath ( mountpoint , { follow _mount : false } ) ;
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
if ( ! FS . isMountpoint ( lookup . node ) ) {
throw new FS . ErrnoError ( ERRNO _CODES . EINVAL ) ;
}
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
// destroy the nodes for this mount, and all its child mounts
var node = lookup . node ;
var mount = node . mounted ;
var mounts = FS . getMounts ( mount ) ;
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
Object . keys ( FS . nameTable ) . forEach ( function ( hash ) {
var current = FS . nameTable [ hash ] ;
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
while ( current ) {
var next = current . name _next ;
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
if ( mounts . indexOf ( current . mount ) !== - 1 ) {
FS . destroyNode ( current ) ;
}
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
current = next ;
}
} ) ;
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
// no longer a mountpoint
node . mounted = null ;
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
// 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 ) ;
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
// 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
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
// 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' ) ;
}
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
// 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 + ')' ) ;
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
var stdout = FS . open ( '/dev/stdout' , 'w' ) ;
HEAP32 [ ( ( _stdout ) >> 2 ) ] = FS . getPtrForStream ( stdout ) ;
assert ( stdout . fd === 1 , 'invalid handle for stdout (' + stdout . fd + ')' ) ;
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
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 ( ) ;
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
FS . nameTable = new Array ( 4096 ) ;
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
FS . mount ( MEMFS , { } , '/' ) ;
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
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 ;
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
FS . ensureErrnoError ( ) ;
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
// 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' ] ;
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
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
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
if ( ! hasByteServing ) chunkSize = datalength ;
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
// 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!" ) ;
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
// 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 ) ;
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
// 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' ) ;
}
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
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 ] ;
} ) ;
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
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 ;
}
} ) ;
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
var properties = { isDevice : false , contents : lazyArray } ;
} else {
var properties = { isDevice : false , url : url } ;
}
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
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 ( '/' ) ;
} } ;
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
function _emscripten _set _main _loop _timing ( mode , value ) {
Browser . mainLoop . timingMode = mode ;
Browser . mainLoop . timingValue = value ;
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
if ( ! Browser . mainLoop . func ) {
return 1 ; // Return non-zero on failure, can't set timing mode when there is no main loop.
}
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
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 ;
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
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.' ) ;
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
Browser . mainLoop . func = func ;
Browser . mainLoop . arg = arg ;
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
var thisMainLoopId = Browser . mainLoop . currentlyRunningMainloop ;
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
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 ;
}
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
// catch pauses from non-main loop sources
if ( thisMainLoopId < Browser . mainLoop . currentlyRunningMainloop ) return ;
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
// 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 ;
}
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
// 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.
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
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
}
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
Browser . mainLoop . runIter ( function ( ) {
if ( typeof arg !== 'undefined' ) {
Runtime . dynCall ( 'vi' , func , [ arg ] ) ;
} else {
Runtime . dynCall ( 'v' , func ) ;
}
} ) ;
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
// catch pauses from the main loop itself
if ( thisMainLoopId < Browser . mainLoop . currentlyRunningMainloop ) return ;
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
// 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 ( ) ;
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
Browser . mainLoop . scheduler ( ) ;
}
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
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)
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
Browser . mainLoop . scheduler ( ) ;
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
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
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
if ( Browser . initted ) return ;
Browser . initted = true ;
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
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 ;
}
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
// 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.).
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
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 ) ;
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
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 ) ;
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
// Canvas event setup
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
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;
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
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 ) ;
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
document . addEventListener ( 'pointerlockchange' , pointerLockChange , false ) ;
document . addEventListener ( 'mozpointerlockchange' , pointerLockChange , false ) ;
document . addEventListener ( 'webkitpointerlockchange' , pointerLockChange , false ) ;
document . addEventListener ( 'mspointerlockchange' , pointerLockChange , false ) ;
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
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.
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
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
} ;
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
if ( webGLContextAttributes ) {
for ( var attribute in webGLContextAttributes ) {
contextAttributes [ attribute ] = webGLContextAttributes [ attribute ] ;
}
}
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
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' ) ;
}
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
if ( ! ctx ) return null ;
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
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' ) ;
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
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 ;
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
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 {
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
// 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 ) ;
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
if ( Browser . resizeCanvas ) Browser . setWindowedCanvasSize ( ) ;
}
if ( Module [ 'onFullScreen' ] ) Module [ 'onFullScreen' ] ( Browser . isFullScreen ) ;
Browser . updateCanvasDimensions ( canvas ) ;
}
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
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 ) ;
}
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
// 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 ) ;
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
// 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 ) {
2016-04-22 13:29:31 -07:00
case 'DOMMouseScroll' :
2015-04-24 11:13:49 -07:00
delta = event . detail ;
break ;
2016-04-22 13:29:31 -07:00
case 'mousewheel' :
2015-04-24 11:13:49 -07:00
delta = event . wheelDelta ;
break ;
2016-04-22 13:29:31 -07:00
case 'wheel' :
2015-04-24 11:13:49 -07:00
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 ) ;
}
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
// check if SDL is available
if ( typeof SDL != "undefined" ) {
2016-04-22 13:29:31 -07:00
Browser . mouseX = SDL . mouseX + Browser . mouseMovementX ;
Browser . mouseY = SDL . mouseY + Browser . mouseMovementY ;
2015-04-24 11:13:49 -07:00
} else {
2016-04-22 13:29:31 -07:00
// 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 ;
}
2015-04-24 11:13:49 -07:00
} 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 ;
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
// 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 ) ;
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
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
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
}
var adjustedX = touch . pageX - ( scrollX + rect . left ) ;
var adjustedY = touch . pageY - ( scrollY + rect . top ) ;
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
adjustedX = adjustedX * ( cw / rect . width ) ;
adjustedY = adjustedY * ( ch / rect . height ) ;
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
var coords = { x : adjustedX , y : adjustedY } ;
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
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 } ;
2016-04-22 13:29:31 -07:00
}
2015-04-24 11:13:49 -07:00
return ;
}
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
var x = event . pageX - ( scrollX + rect . left ) ;
var y = event . pageY - ( scrollY + rect . top ) ;
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
// 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 ) ;
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
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 ( ) {
2016-04-22 13:29:31 -07:00
// check if SDL is available
2015-04-24 11:13:49 -07:00
if ( typeof SDL != "undefined" ) {
2016-04-22 13:29:31 -07:00
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
2015-04-24 11:13:49 -07:00
}
Browser . updateResizeListeners ( ) ;
} , setWindowedCanvasSize : function ( ) {
2016-04-22 13:29:31 -07:00
// check if SDL is available
2015-04-24 11:13:49 -07:00
if ( typeof SDL != "undefined" ) {
2016-04-22 13:29:31 -07:00
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
2015-04-24 11:13:49 -07:00
}
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' ;
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
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 ( ) {
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
}
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
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
// EMSCRIPTEN_END_FUNCS
2016-04-22 13:29:31 -07:00
2015-04-24 11:13:49 -07:00
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 .
*
2016-04-22 13:29:31 -07:00
* 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 .
2015-04-24 11:13:49 -07:00
*
* 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 ;
2016-04-22 13:29:31 -07:00
if ( ABORT ) return ;
2015-04-24 11:13:49 -07:00
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}}
2016-06-06 16:48:39 -07:00
/* vim: ts=4:sw=4:expandtab */
2016-04-22 13:29:31 -07:00
var Internal = Internal || { } ;
2015-04-24 11:13:49 -07:00
2016-05-18 12:45:33 -07:00
( function ( ) {
2015-04-24 11:13:49 -07:00
'use strict' ;
// Insert some bytes into the emscripten memory and return a pointer
function _allocate ( bytes ) {
var address = Module . _malloc ( bytes . length ) ;
Module . HEAPU8 . set ( bytes , address ) ;
return address ;
}
function _readBytes ( address , length , array ) {
array . set ( Module . HEAPU8 . subarray ( address , address + length ) ) ;
}
var basepoint = new Uint8Array ( 32 ) ;
basepoint [ 0 ] = 9 ;
2016-05-18 12:45:33 -07:00
Internal . curve25519 = {
2015-04-24 11:13:49 -07:00
keyPair : function ( privKey ) {
2016-05-18 12:45:33 -07:00
var priv = new Uint8Array ( privKey ) ;
priv [ 0 ] &= 248 ;
priv [ 31 ] &= 127 ;
2016-06-06 16:48:39 -07:00
priv [ 31 ] |= 64 ;
2015-04-24 11:13:49 -07:00
2016-05-18 12:45:33 -07:00
// Where to store the result
var publicKey _ptr = Module . _malloc ( 32 ) ;
2015-04-24 11:13:49 -07:00
2016-05-18 12:45:33 -07:00
// Get a pointer to the private key
var privateKey _ptr = _allocate ( priv ) ;
2015-04-24 11:13:49 -07:00
2016-05-18 12:45:33 -07:00
// The basepoint for generating public keys
var basepoint _ptr = _allocate ( basepoint ) ;
2015-04-24 11:13:49 -07:00
2016-05-18 12:45:33 -07:00
// The return value is just 0, the operation is done in place
var err = Module . _curve25519 _donna ( publicKey _ptr ,
privateKey _ptr ,
basepoint _ptr ) ;
2015-04-24 11:13:49 -07:00
2016-05-18 12:45:33 -07:00
var res = new Uint8Array ( 32 ) ;
_readBytes ( publicKey _ptr , 32 , res ) ;
2015-04-24 11:13:49 -07:00
2016-05-18 12:45:33 -07:00
Module . _free ( publicKey _ptr ) ;
Module . _free ( privateKey _ptr ) ;
Module . _free ( basepoint _ptr ) ;
2015-04-24 11:13:49 -07:00
2016-05-18 12:45:33 -07:00
return { pubKey : res . buffer , privKey : priv . buffer } ;
2015-04-24 11:13:49 -07:00
} ,
sharedSecret : function ( pubKey , privKey ) {
// Where to store the result
var sharedKey _ptr = Module . _malloc ( 32 ) ;
// Get a pointer to our private key
var privateKey _ptr = _allocate ( new Uint8Array ( privKey ) ) ;
// Get a pointer to their public key, the basepoint when you're
// generating a shared secret
var basepoint _ptr = _allocate ( new Uint8Array ( pubKey ) ) ;
// Return value is 0 here too of course
var err = Module . _curve25519 _donna ( sharedKey _ptr ,
privateKey _ptr ,
basepoint _ptr ) ;
var res = new Uint8Array ( 32 ) ;
_readBytes ( sharedKey _ptr , 32 , res ) ;
Module . _free ( sharedKey _ptr ) ;
Module . _free ( privateKey _ptr ) ;
Module . _free ( basepoint _ptr ) ;
2016-05-18 12:45:33 -07:00
return res . buffer ;
2015-04-24 11:13:49 -07:00
} ,
sign : function ( privKey , message ) {
// Where to store the result
var signature _ptr = Module . _malloc ( 64 ) ;
// Get a pointer to our private key
var privateKey _ptr = _allocate ( new Uint8Array ( privKey ) ) ;
// Get a pointer to the message
var message _ptr = _allocate ( new Uint8Array ( message ) ) ;
var err = Module . _curve25519 _sign ( signature _ptr ,
privateKey _ptr ,
message _ptr ,
message . byteLength ) ;
var res = new Uint8Array ( 64 ) ;
_readBytes ( signature _ptr , 64 , res ) ;
Module . _free ( signature _ptr ) ;
Module . _free ( privateKey _ptr ) ;
Module . _free ( message _ptr ) ;
2016-05-18 12:45:33 -07:00
return res . buffer ;
2015-04-24 11:13:49 -07:00
} ,
verify : function ( pubKey , message , sig ) {
// Get a pointer to their public key
var publicKey _ptr = _allocate ( new Uint8Array ( pubKey ) ) ;
// Get a pointer to the signature
var signature _ptr = _allocate ( new Uint8Array ( sig ) ) ;
// Get a pointer to the message
var message _ptr = _allocate ( new Uint8Array ( message ) ) ;
var res = Module . _curve25519 _verify ( signature _ptr ,
publicKey _ptr ,
message _ptr ,
message . byteLength ) ;
Module . _free ( publicKey _ptr ) ;
Module . _free ( signature _ptr ) ;
Module . _free ( message _ptr ) ;
2016-05-18 12:45:33 -07:00
return res !== 0 ;
}
} ;
Internal . curve25519 _async = {
keyPair : function ( privKey ) {
return new Promise ( function ( resolve ) {
resolve ( Internal . curve25519 . keyPair ( privKey ) ) ;
} ) ;
} ,
sharedSecret : function ( pubKey , privKey ) {
return new Promise ( function ( resolve ) {
resolve ( Internal . curve25519 . sharedSecret ( pubKey , privKey ) ) ;
} ) ;
} ,
sign : function ( privKey , message ) {
return new Promise ( function ( resolve ) {
resolve ( Internal . curve25519 . sign ( privKey , message ) ) ;
} ) ;
} ,
verify : function ( pubKey , message , sig ) {
2015-04-24 11:13:49 -07:00
return new Promise ( function ( resolve , reject ) {
2016-05-18 12:45:33 -07:00
if ( Internal . curve25519 . verify ( pubKey , message , sig ) ) {
2015-04-24 11:13:49 -07:00
reject ( new Error ( "Invalid signature" ) ) ;
} else {
resolve ( ) ;
}
} ) ;
2016-05-18 12:45:33 -07:00
} ,
2015-04-24 11:13:49 -07:00
} ;
2016-05-18 12:45:33 -07:00
} ) ( ) ;
2015-04-24 11:13:49 -07:00
2016-04-22 13:29:31 -07:00
var Internal = Internal || { } ;
2015-04-24 11:13:49 -07:00
// I am the worker
this . onmessage = function ( e ) {
2016-05-18 12:45:33 -07:00
Internal . curve25519 _async [ e . data . methodName ] . apply ( null , e . data . args ) . then ( function ( result ) {
2015-04-24 11:13:49 -07:00
postMessage ( { id : e . data . id , result : result } ) ;
} ) . catch ( function ( error ) {
postMessage ( { id : e . data . id , error : error . message } ) ;
} ) ;
} ;
} ) ( ) ;